Не работает код не понимаю в чем проблема

Вот сам код:

if player not in ['к', 'н', 'б', 'выход']:    
    print('Не правильный ввод!')
if player == 'выход':
    break;
    
    # Теперь пропишем выбор для бота и тут нам поможет рандом:
    
gen = {1:'к', 2:'н', 3:'б'}    
comp_choice = gen[random.randint(1, 3)]
print(f'Бот выбрал: {comp_choice}')
    
    # Что ж мы сделали почти все шаги в игре, но осталось сделать победные комбинации:
    
win_combination = [('к','н'),('н','б'),('б','к')]
    
    # Последний и самый простой шаг обозначаем победу или ничью:
    
if player == comp_choice:
    print('Ничья')
elif (player,comp_choice) in win_combination:
    print('Игрок победил')
else:
    print('Победа бота')

Вот полный код:

import random

while True:
    print('Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага. Чтобы выйти  напишите: выход.')
    player = input('Вы выбрали:')
    if player not in ['к', 'н', 'б', 'выход']:
        print('Не правильный ввод!')
    if player == 'выход':
        break;
        
    gen = {1:'к', 2:'н', 3:'б'}
    comp_choice = gen[random.randint(1, 3)]
    print(f'Бот выбрал: {comp_choice}')
    win_combination = [('к','н'),('н','б'),('б','к')]
    if player == comp_choice:
        print('Ничья')
    elif (player,comp_choice) in win_combination:
        print('Игрок победил')
    else:
        print('Победа бота')

Ответы (2 шт):

Автор решения: Tehnorobot

Попробуйте такой вариант:

import random

gen = {1:'к', 2:'н', 3:'б'}

win_combination = [('к','н'),('н','б'),('б','к')]

print('Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага. Чтобы выйти  напишите: выход.')

while True:

    player = input('Выберите знак: ')

    if player not in ['к', 'н', 'б', 'выход']:

        print('Не правильный ввод!')

    elif player == 'выход':

        break

    comp_choice = gen[random.randint(1, 3)]

    print(f'Бот выбрал: {comp_choice}')

    if player == comp_choice:

        print('Ничья')

    elif (player,comp_choice) in win_combination:

        print('Игрок победил')

    else:

        print('Победа бота')
→ Ссылка
Автор решения: CrazyElf

Если правильно расставить отступы и добавить continue на ошибке ввода, то всё работает как нужно:

import random

while True:
    print('Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага. Чтобы выйти  напишите: выход.')
    player = input('Вы выбрали:')
    if player not in ['к', 'н', 'б', 'выход']:
        print('Не правильный ввод!')
        continue # добавлено
    if player == 'выход':
        break;
    gen = {1:'к', 2:'н', 3:'б'}
    comp_choice = gen[random.randint(1, 3)]
    print(f'Бот выбрал: {comp_choice}')
    win_combination = [('к','н'),('н','б'),('б','к')]
    if player == comp_choice:
        print('Ничья')
    elif (player,comp_choice) in win_combination:
       print('Игрок победил')
    else:
        print('Победа бота')

Пример вывода:

Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага. Чтобы выйти  напишите: выход.
Вы выбрали:ь
Не правильный ввод!
Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага. Чтобы выйти  напишите: выход.
Вы выбрали:б
Бот выбрал: к
Игрок победил
Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага. Чтобы выйти  напишите: выход.
Вы выбрали:к
Бот выбрал: к
Ничья
Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага. Чтобы выйти  напишите: выход.
Вы выбрали:н
Бот выбрал: б
Игрок победил
Вы играете в камень ножницы бумага. к - камень, н - ножницы, б - бумага. Чтобы выйти  напишите: выход.
Вы выбрали:выход
→ Ссылка