цикл 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':
→ Ссылка