У меня есть цикл while, который вызывает три функции. Три функции работают по назначению, и в конце запрашивается ввод данных пользователем. Если пользовательский ввод равен «n», цикл должен завершиться, но он продолжается независимо от того, что я вставил.
Вот мой код:
yn = ""
while (yn.lower != "n"):
usr_choice = userChoice()
com_choice = compChoice()
winner(usr_choice, com_choice)
yn = input("Would you like to continue? y/n: ")
Я пробовал форматировать цикл while различными способами и гарантировать, что имена переменных не совпадают независимо от их местоположения, но я все еще не могу завершить цикл, набрав n или N. Если возможно, я бы хотел, чтобы цикл while заканчивался либо нет или нет, но сначала мне нужно заставить его работать.
Проблема в том, что вы на самом деле не вызываете метод yn.lower
, вы просто сравниваете объект функции со строкой "n"
yn = ""
while (yn.lower() != "n"): # <<---- See yn.lower VS yn.lower()
usr_choice = userChoice()
com_choice = compChoice()
winner(usr_choice, com_choice)
yn = input("Would you like to continue? y/n: ")
Проблема, связанная с вашим кодом, - это вызов метода. вы не вызываете метод, например, low(), вы вызываете ссылку на метод, например, low. Вы можете заменить нижний на нижний().
yn.lower
— метод; оно определенно не равно"n"
или какой-либо другой строке. Другими словами, результат вызова этого методаyn.lower()
может быть равен"n"
...