@holy_paster

Почему при вводе «Бумага», ничего не происходит?

При вводе "Бумага", написано что я неправильно ввёл

UserScore = 0
BotScore = 0

ContinueGame = input('Начать игру?')
while ContinueGame == 'Да' or ContinueGame == 'да':
    UserSign = input('Какой знак?')
    
    while UserSign != 'Камень' or UserSign != 'камень' or UserSign != 'Ножницы' or UserSign != 'ножницы' or UserSign != 'Бумага' or UserSign != 'бумага':
        print('Введите название правильно')
        UserSign = input('Какой знак??')
    if UserSign == 'Камень' or UserSign == 'камень':
        UserSign = 1
    elif UserSign == 'Ножницы' or UserSign == 'ножницы':
        UserSign = 2
    elif UserSign == 'Бумага' or UserSign == 'бумага': #дело в этом   
        UserSign = 3
            
    time.sleep(1)
    BotSign = random.randint(1, 3)
    print('Кидаем...')
    time.sleep(1)
    BotSign = random.randint(1, 3)
    
    
    if UserSign == BotSign:
        print('Ничья')  
        UserScore += 1
        BotScore += 1
    elif UserSign == 3 and BotSign == 1: #1
        print('Вы выиграли')
        UserScore += 1
    elif UserSign == 1 and BotSign == 3:
        print('Вы проиграли')
        BotScore += 1
    elif BotSign == 2 and UserSign == 3:
        print('Вы проиграли')
        BotScore += 1
    elif BotSign == 3 and UserSign == 2:
        print('Вы выиграли')
        UserScore += 1
    elif BotSign == 2 and UserSign == 1:
        print('Вы выиграли')
        UserScore += 1
    elif BotSign == 1 and UserSign == 2:
        print('Вы Проиграли')
        BotScore += 1
    print('Вас счет', UserScore)
    print('Счет Компьютера', BotScore)
    ContinueGame = input('Хотите продолжить игру?')
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
1. Приведите весь текст в нижний регистр и потом сравнивайте, зачем по несколько раз это делать
continue_game = input('Продолжить игру?: ').lower()
if continue_game == 'да':
    #....


2. Вы используете or, соответственно, код выполнится, если любое из выражений выполнено. Вводите бумага - Бумага != камень, значит условие выполнено. Используйте and + lower() из примера выше. В итоге выйдет
UserSign = input('Какой знак?').lower()
while UserSign != 'камень' and UserSign != 'ножницы' and UserSign != 'бумага':
    #....


Но лучше сократить так:

allowed_signs = ['камень', 'ножницы', 'бумага']

UserSign = input('Какой знак?').lower()
while UserSign not in allowed_signs:
    #....
Ответ написан
Комментировать
@Art005
while UserSign.lower() not in ('камень', 'ножницы', 'бумага'):
    print('Введите название правильно')

Метод lower() знатно улучшит ваш код
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы