2013-11-27 7 views
0

Я знаю, что этот вопрос очень нубиш, но моя программа продолжает говорить мне, что функция «Возврат» нарушена.Внешняя функция «Возврат»

Так что он должен делать, если пользователь нажимает «Enter», он должен остановиться. В противном случае он должен продолжать запрашивать и разрешать ввод.

Я хотел бы знать, как это сделать, как в я хочу новый function test_pig(), который должен поставить на входе слова: happy, duck, glove, evil,eight,yowler,crystal

sentence = input("Please enter a sentence: ") 
if sentence==[]: 
     return 
vowels = ("a", "e", "i", "o", "u", "y", "A", "E", "I", "O", "U", "Y") 
words = sentence.split() 

def pig(word): 
    for u in range(len(word)): 
     if word[u] in vowels: 
          return u 
    return -1 
for word in words: 
    vowel = pig(word) 

    if(word[0] == 'y'): 
      print(word[1:] + word[0] + "ay", ' ', end='') 
    elif(vowel == -1): 
      print(word, ' ', end='') 
    elif(vowel == 0): 
      print(word + "way", ' ', end='') 
    else: 
      print(word[vowel:] + word[:vowel] + "ay", ' ', end='') 
+0

Это ваш фактический отступ? – abarnert

+0

Да, это мой фактический отступ – user3026270

+0

Используйте согласованный отступ в ваших пространствах кода-4 для каждого уровня отступа, а не иногда 4 пробела, иногда вкладку, иногда 4 пробела и вкладку. Иногда вам это не удастся, и это не вызовет проблемы, но вы определенно не должны рассчитывать на это, потому что, когда это _does_ вызывает проблему (что я бы дал 5: 1, это то, что произошло, когда вы попробовал мой ответ), невозможно понять, почему. Большинство редакторов могут быть настроены так, чтобы всегда вставлять пробелы, даже когда вы нажимаете клавишу табуляции. И запустите Python с флагом '-tt' (например,' python -tt myscript.py', а не просто 'python myscript.py'), чтобы поймать проблему. – abarnert

ответ

0

Если вы хотите, чтобы выйти из всей программы, вам нужно использование exit(), нет return. Оператор return может использоваться только внутри функции. Вот почему вы получаете сообщение об ошибке, когда вы пытаетесь сделать это на третьей строке.

Но обычно вы помещаете свой «основной код» в конце скрипта, что означает, что вам обычно не нужно exit. Например, вот код, который будет держать задаёте и называя pig на нем до тех пор, хиты пользователей входят:

vowels = # etc. 

def pig(word): 
    # your definition here 

while True: 
    sentence = input("Please enter a sentence: ") 
    if not sentence: 
     break 
    words = sentence.split() 
    for word in words: 
     # your for-loop code here 

break будет выйти из цикла, и нет никакого кода после цикла, так что сценарий просто завершает успешно.

Существуют и другие проблемы с вашим кодом, но это позволит вам пройти мимо первого.


В качестве примечания, поэтому я изменил свой if sentence==[] на if not sentence что sentence является строкой, и никакая строка не никогда равно пустой список. Вместо этого вы можете проверить пустую строку , например if sentence == ''. Но это проще и более питонов, чтобы просто проверить пустоту с not.

+0

. Это просто печатает ввод до тех пор, пока я не нажму на ввод – user3026270

+0

Так что он не печатает результат ввода – user3026270

+0

@ user3026270: Если вы берете то, что я поставил выше, скопируйте и вставьте код, указанный комментариями, и запустите его, он определенно распечатает результат ввода. Вы можете видеть, как это делается [здесь] (http://ideone.com/FPlnB9). Очевидно, вы сделали что-то не так, но если вы не покажете мне свой код, я не могу сказать вам, что вы сделали неправильно. – abarnert

Смежные вопросы