Здравствуйте. Недавно вот начал изучать Python, и поставил себе такую задачу - сделать игру про быков и коров, да ещё и чтобы она была честной (т.е. если уж пользователь пишет число из, к примеру, 3 цифр, то и компьютер генерирует число тоже из 3 цифр). Возможно кто-то её не знает, так что вот отрывок из Википедии:
Быки и коровы — логическая игра, в ходе которой за несколько попыток один из игроков должен определить, что задумал другой игрок. Варианты игры могут зависеть от типа отгадываемой последовательности — это могут быть числа, цвета, пиктограммы или слова. После каждой попытки задумавший игрок выставляет «оценку», указывая количество угаданного без совпадения с их позициями (количество «коров») и полных совпадений (количество «быков»). Роли участников игры не равнозначны — угадывающий должен анализировать сделанные попытки и полученные оценки, то есть его роль активна. Его партнёр лишь сравнивает очередной вариант с задуманным и выставляет оценку по формальным правилам, то есть его роль пассивна. Для уравновешивания ролей одновременно играют две встречные партии.
Сам код вроде правильный, переменную “cpu” я преобразовываю в строку, но питон всё равно ругается на то, что “'int' object is not subscriptable” в 21 строке. Вот сам код:
import random as r
#####ПОДГОТОВКА ПЕРЕМЕННЫХ#####
k = 0
b = 0
usr = input('Введите число: ')
if len(usr) == 4:
cpu = r.randint(0, 10000)
elif len(usr) == 3:
cpu = r.randint(0, 1000)
elif len(usr) == 2:
cpu = r.randint(0, 100)
else:
print('Число слишком маленькое для отгадывания.')
str(cpu) #здесь я преобразую "cpu" в строку
#####ПОДСЧЁТ БЫКОВ И КОРОВ#####
for n in range(0, len(usr)):
if cpu[n] == usr[n]: #здесь он ругается
k += 1
elif cpu[n] != usr[n]:
b += 1
#####ВЫВОД ДАННЫХ#####
print(usr, 'VS.', cpu)
print(b, 'Б')
print(k, 'К')
Скажите пожалуйста, что не так с кодом?