Выполняет некоторые части кода, а части с условиями не хочет выводить
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. Выход.'.