Выполняет некоторые части кода, а части с условиями не хочет выводить

import random

while 1:
    a = random.randint(1, 3)
    print(a)
    print("Выберите свой вариант")
    print("1.Камень")
    print("2.Ножницы")
    print("3.Бумага")
    b = input()
    if b == 1:
        print("Вы выбрали камень, все верно?")
        input()
        if a == 1:
            print("Камень | Камень - у вас ничья")
        if a == 2:
            print("Камень | Ножницы - у вас победа")
        if a == 3:
            print("Камень | Бумага - у вас проигрышь")
    if a == 2:
        if b == 1:
            print("Ножницы | Камень - у вас победа")
        if b == 2:
            print("Ножницы | Ножницы - у вас ничья")
        if b == 3:
            print("Ножницы | Бумага - у вас проигрышь")
    if a == 3:
        if b == 1:
            print("Бумага | Камень - у вас проигрышь")
        if b == 2:
            print("Бумага | Ножницы - у вас победа")
        if b == 3:
            print("Бумага | Бумага - у вас ничья")
    

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

Автор решения: Глеб

Ошибка очень простая: вы сравниваете переменную b типа str с числом типа int. Естественно, они никогда не будут равны. Правильно так:

import random

while True:
    a = randint(1, 3)
    print("1. Камень")
    print("2. Ножницы")
    print("3. Бумага")
    b = int(input("Выберите свой вариант: "))
    if b == 1:
        print("Вы выбрали камень, все верно?")
        if a == 1:
            print("Камень | Камень - у вас ничья")
        if a == 2:
            print("Камень | Ножницы - у вас победа")
        if a == 3:
            print("Камень | Бумага - у вас проигрыш")
    if b == 2:
        if a == 1:
            print("Ножницы | Камень - у вас победа")
        if a == 2:
            print("Ножницы | Ножницы - у вас ничья")
        if a == 3:
            print("Ножницы | Бумага - у вас проигрыш")
    if b == 3:
        if a == 1:
            print("Бумага | Камень - у вас проигрыш")
        if a == 2:
            print("Бумага | Ножницы - у вас победа")
        if a == 3:
            print("Бумага | Бумага - у вас ничья")

Еще в паре мест вы попутали a с b, я это исправил. Не используйте однобуквенные переменные, запутаетесь!

Код очень громоздкий, его можно значительно упростить:

from random import randint

table = [
        [0, 1, -1],
        [-1, 0, 1],
        [1, -1, 0]
        ]
d = {1: 'Камень', 2: 'Ножницы', 3: 'Бумага'}
d2 = {-1: 'проигрыш.', 0: 'ничья.', 1: 'выигрыш.'}
print("1. Камень.\n2. Ножницы.\n3. Бумага.")

while True:
    bot = randint(1, 3)
    you = int(input("Выберите свой вариант: "))
    print('Ваш соперник сходил "' + d[bot] + '".')
    print(d[you] + ' | ' + d[bot] + ' —  у вас ' + d2[table[you - 1][bot - 1]])

Код протестирован, работает нормально. Однако в вашем коде не предусмотрен выход из бесконечного цикла — его нет и здесь. Также не предусмотрен отлов ошибки в случае введения неправильного числа. Чтобы добавить эти функции, вставьте вместо строки you... следующее:

try:
    you = int(input("Выберите свой вариант: "))
except ValueError:
    print('Ошибка!')
    continue
if you == 4:
    print('Пока!')
    exit()

Ну и в начале добавьте в строчку '\n4. Выход.'.

→ Ссылка