Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 7, 2020 16:25:19

this_is_nickname
Зарегистрирован: 2020-10-07
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Игра "Быки и Коровы": 'int' object is not subscriptable

Здравствуйте. Недавно вот начал изучать 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, 'К')
Скажите пожалуйста, что не так с кодом?

Офлайн

#2 Окт. 7, 2020 16:54:01

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Игра "Быки и Коровы": 'int' object is not subscriptable

this_is_nickname
str(cpu) #здесь я преобразую “cpu” в строку
так это не работает. нужно вот так
 cpu = str(cpu)
там еще у тебя будет out of range иногда, потому как randint(0, 1000) может вернуть, и 4, и 36, и 666



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Окт. 7, 2020 16:57:59)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version