2014-11-29 2 views
-1

Я создал код, в котором пользователь будет вводить свой выбор, который будет продолжаться в цикле, если переменная «Contin» равна «yes». Когда пользователь вводит выбор «нет» или любой другой ввод, он будет печатать свои общие ответы или сообщение об ошибке и завершать цикл. Вместо этого он повторяет начало функции (в этом случае это то, хотел ли пользователь продолжить или нет). Есть ли способ предотвратить это? Это код:Как остановить начало цикла моей функции от повторения

def userinput(): 

    while True: 
     contin = input("Do you wish to continue the game? If so enter 'yes'. If not enter 'no'.") 
     if contin == 'yes': 
      print(symbol_dictionary["#"]+symbol_dictionary["+"]+symbol_dictionary["/"]+symbol_dictionary["0"]+symbol_dictionary["8"]+symbol_dictionary["4"]+symbol_dictionary["&"]+symbol_dictionary['"'] 

      guess = input("What symbol do you wish to change? ") 

      symbol_dictionary[guess] = input("Input what letter you wish to change the symbol to.(Make sure the letter is in capitals.) ") 

      print(symbol_dictionary["#"]+symbol_dictionary["+"]+symbol_dictionary["/"]+symbol_dictionary["0"]+symbol_dictionary["8"]+symbol_dictionary["4"]+symbol_dictionary["&"]+symbol_dictionary['"']) 

     elif contin == ('no'): 
      print ("These were your overall answers:") 
      print(symbol_dictionary["#"]+symbol_dictionary["+"]+symbol_dictionary["/"]+symbol_dictionary["0"]+symbol_dictionary["8"]+symbol_dictionary["4"]+symbol_dictionary["&"]+symbol_dictionary['"']) 

      if symbol_dictionary == {"#": "A","+":"C", "/":"Q", "0":"U", "8":"I", 
         "4":"R", "&":"E",'"':'D', "3":"L", "*":"M", 
         "%":"N", "2":"S", ":":"T", "1":"O",",":"J", 
         "$":"K", "!":"H", "7":"Z", "-":"Y", ".":"G", 
         "'":"W",")":"F", "6":"B", "5":"X", "9":"V"}: 
       print("Well done! You have completed the game!") 

     else: 
      print("Please enter a valid input.") 
+0

Я бы рекомендовал вам заменить код, который не имеет ничего общего с вопросом, используя комментарии, 'pass' или что-то еще; это упростило бы вашу проблему. – GingerPlusPlus

ответ

1

Все, что вам нужно сделать, это выйти из функции; добавить return в вашей no отрасли:

elif contin == ('no'): 
    print ("These were your overall answers:") 
    print(symbol_dictionary["#"]+symbol_dictionary["+"]+symbol_dictionary["/"]+symbol_dictionary["0"]+symbol_dictionary["8"]+symbol_dictionary["4"]+symbol_dictionary["&"]+symbol_dictionary['"']) 

    if symbol_dictionary == {"#": "A","+":"C", "/":"Q", "0":"U", "8":"I", 
       "4":"R", "&":"E",'"':'D', "3":"L", "*":"M", 
       "%":"N", "2":"S", ":":"T", "1":"O",",":"J", 
       "$":"K", "!":"H", "7":"Z", "-":"Y", ".":"G", 
       "'":"W",")":"F", "6":"B", "5":"X", "9":"V"}: 
     print("Well done! You have completed the game!") 

    # exit the function 
    return 
+0

Мне это очень помогло. Я только начал свою GCSE в области информатики, и мой учитель никогда не учил меня этому. Благодарю вас: 3 –

0

Просто добавьте перерыв или возвращение в конце Элиф заявление:

print("Well done! You have completed the game!") 
break # or return 

Это приведет к выходу из цикла. Перерыв имеет больше смысла в этом контексте.