#python
#python
Вопрос:
Вот мой код, в get_response()
функции, если вы вводите «y» или «n», в первый раз он говорит «недопустимый», но затем работает во второй раз.
Как мне это исправить?
import random
MIN = 1
MAX = 6
def main():
userValue = 0
compValue = 0
again = get_response()
while again == 'y':
userRoll, compRoll = rollDice()
userValue = userRoll
compValue = compRoll
if userValue > 21:
print("User's points: ", userValue)
print("Computer's points: ", compValue)
print("Computer wins")
else:
print('Points: ', userValue, sep='')
again = get_response()
if again == 'n':
print("User's points: ", userValue)
print("Computer's points: ", compValue)
if userValue > compValue:
print('User wins')
elif userValue == compValue:
print('Tie Game!')
else:
print('Computer wins')
def rollDice():
userRoll = random.randint(MIN, MAX)
compRoll = random.randint(MIN, MAX)
return userRoll, compRoll
def get_response():
answer = input('Do you want to roll? ')
if answer != 'y' or answer != 'n':
print("Invalid response. Please enter 'y' or 'n'.")
answer = input('Do you want to roll? ')
main()
Комментарии:
1.
if answer != 'y' or answer != 'n':
всегда верно. Это либо не ‘y’, либо не ‘n’.2. Вторая проблема: вы никогда не возвращались
answer
из этой функции
Ответ №1:
answer != 'y' or answer != 'n':
всегда верно; or
должно быть and
.
Комментарии:
1. или не отвечать в ‘yn’
2. @volcano Это сделало
yn
бы допустимый ввод3. @cricket_007, вы правы, не отвечайте в (‘y’, ‘n’)
Ответ №2:
Это должно быть answer != 'y' and answer != 'n':
Ответ №3:
Вы логически думаете, что «ответ не y ИЛИ n», но в коде, который
not (answer == 'y' or answer == 'n')
Примените правило DeMorgans, которое вы получите
answer != 'y' and answer != 'n'
Возможно, вам следует реструктурировать использование in
.
Вы также захотите return answer
def get_response():
while True:
answer = input('Do you want to roll? ')
if answer not in {'y', 'n'}:
print("Invalid response. Please enter 'y' or 'n'.")
else:
return answer