2015-09-26 2 views
1

Я пытаюсь написать скрипт берет слово и печатает первые три символа, последние 3 символа, и все, что находится в середине в точках:Параметр расширения с Python

abracabra

ABR .. .bra

Я сделал работу,

word = input("What's the word ?") 
first = str(word[0:3]) 
last = str(word[-3:]) 
middle = int(len(word)-6) 
midDOTS = "." * (middle) 
print((first)+(midDOTS)+(last)) 

, но я хотел бы сделать это на одной линии, как я могу сделать в Баш, например, это возвращает список сетевых интерфейсов:

INTFACES=$(/sbin/ifconfig -a | sed 's/[ \t].*//;/^\(lo\|\)$/d') 

Как это сделать с помощью python? Я пробовал это, но это не помогло:

word = input("What's the word ?") 
midDOTS = "." * (int(len(word)-6)) 
print(str(word[0:3])+(midDOTS)+ str(word[-3:])) 

Каков правильный синтаксис?

Редактировать

Спасибо всем за помощь мне не только получить это правильно, но понять его. Вот то, что я в конечном итоге происходит с ...

def print_dotted_word(): 
    word = str(input("What's the word ?")) 
    if len(word)<7: 
     raise ValueError("Needs to be at least 7 letters.") 
    print(word[:3] + '.'*(len(word)-6) + word[-3:]) 

while True: 
    try: 
     print_dotted_word() 
     break 
    except ValueError:("Needs to be at least 7 letters.") 
+0

У вас есть синтаксические ошибки там, 'midDOTS = "" * (int (len (word) 'должно быть' midDOTS = "." * (int (len (word) -6)) ' – dstudeba

+0

Да, я только что исправил его, спасибо. Но сценарий все еще не запускается. –

+1

Ой, подождите! Вы правы! Это работает сейчас! Большое спасибо. –

ответ

1

Вы можете сделать следующее:

word = input("What's the word ?") 
if len(word)<7: 
    raise ValueError("Please enter a word greater than 6 characters") 
print(word[:3] + '.'*(len(word)-6) + word[-3:]) 

Здесь мы поднимем ValueError исключение, если word Введенный менее 7 символов.

Мы можем проверить это в оболочке Python, включив этот код в функцию print_dotted_word().

Python 2.7:

In [1]: def print_dotted_word(): 
      word = raw_input("What's the word ? \n") # use raw_input 
      if len(word)<7: # check for word length 
       raise ValueError("Please enter a word greater than 6 characters") # raise exception 
      print word[:3] + '.'*(len(word)-6) + word[-3:] # print desired response 

In [2]: print_dotted_word() 
What's the word ? 
helloworld 
hel....rld 

In [3]: print_dotted_word() 
What's the word ? 
hello 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
----> 1 print_dotted_word() 
     2  word = raw_input("What's the word ? \n") 
     3  if len(word)<7: 
----> 4   raise ValueError("Please enter a word greater than 6 characters") 
     5  print word[:3] + '.'*(len(word)-6) + word[-3:] 

ValueError: Please enter a word greater than 6 characters 

Python 3.4:

In [1]: def print_dotted_word(): 
      word = input("What's the word ? \n") # use input here 
      if len(word)<7: # check for word length 
       raise ValueError("Please enter a word greater than 6 characters") # raise exception 
      print(word[:3] + '.'*(len(word)-6) + word[-3:]) # print desired response 

In [2]: print_dotted_word() 
What's the word ? 
helloworld 
hel....rld 

In [3]: print_dotted_word() 
What's the word ? 
hello 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
----> 1 print_dotted_word() 
     2  word = input("What's the word ? \n") 
     3  if len(word)<7: 
----> 4   raise ValueError("Please enter a word greater than 6 characters") 
     5  print(word[:3] + '.'*(len(word)-6) + word[-3:]) 
     6 
ValueError: Please enter a word greater than 6 characters 
+1

Хорошо, я вижу, где вы собираетесь с этим, но программа все еще сбой.Я очень новичок в python, но знаком с bash.Я вижу, что это инструкция if, не должно быть еще, чтобы поймать ошибку? Все хорошо, за исключением того, что я получаю трассировку с моим сообщением об ошибке. Как я могу справиться с этим? –

+1

Nevermind, я получил его: –

+0

Программа вызывает исключение 'ValueError', если входная строка меньше 7 символов. Повышение исключения приводит к остановке выполнения программы, если она не была обнаружена. Если вы хотите, чтобы программа не разбилась, вам нужно добавить «try/except», как вы это делали выше. И нет, не должно быть 'else', поскольку исключение должно быть создано только в случае' if'. Кроме того, мы используем 'try/except' для исключения исключений в Python, а не для' else'. –