цикл while не выполняет условие
Пытаюсь написать правила для своей первой игры, но не понимаю почему итерации при вводе символа y или n повторяются постоянно.
from random import *
def game_alg(num1):
lose_below =['Ты не угадал, попробуй взять число побольше ;)', 'Бери выше!', 'Заданное число больше!']
lose_above = ['Нет! Заданное число меньше!', 'Ого ты взял! бери меньше.', 'Попробуй ещё раз. Заданное число меньше.']
plr_guess = -1
while num1 != plr_guess:
plr_guess = int(input('Можешь вводить число:'))
if plr_guess > 100 or plr_guess < 1:
print('Эй, так нечестно!')
elif plr_guess > num1:
print(choice(lose_above))
elif plr_guess < num1:
print(choice(lose_below))
elif num1 == plr_guess:
return('Ты победил! Игра окончена')
def present_rules(rules):
cnt = 0
x = str()
if rules == 'Y'.lower() or rules == 'Y':
print('Я загадываю число от 1 до 100. Твоей задачей является угадать число в заданном диапазоне.',
'Если угадываешь - ты выйграл.', sep = '\n')
elif rules == 'N' or rules == 'n':
print(f'Что ж, тогда начнем!')
while x != 'N' or x != 'n' or x != 'Y' or x != 'y':
if cnt >= 3:
rules = input('ВВЕДИ Y или N!')
x = rules
return
else:
rules = input('Пожалуйста введите Y или N:')
x = rules
return
cnt += 1
if rules == 'y' or rules == 'Y':
print('Я загадываю число от 1 до 100. Твоей задачей является угадать число в заданном диапазоне.','Если угадываешь - ты выйграл.', sep='\n')
elif rules == 'N' or rules == 'n':
print(f'Что ж, тогда начнем!')
print('Приветствую тебя в моем первом игровом проекте!')
rules = input('Игра называется "Числовая угадайка", хочешь узнать правила игры? Y/N:')
present_rules(rules)
num = randint(1, 100)
print(game_alg(num))
переменная rules не сохраняет значение или что?
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Если я правильно понимаю проблему, то она возникает из-за того, что в вашем цикле while условие написано неверно.
Условие x != 'N' or x != 'n' or x != 'Y' or x != 'y' всегда будет истинным.
Так что попробуйте использовать оператор and вместо or.
while x != 'N' and x != 'n' and x != 'Y' and x != 'y':