Форум сайта python.su
Здравствуйте. Недавно вот начал изучать 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, 'К')
Офлайн
this_is_nicknameтак это не работает. нужно вот так
str(cpu) #здесь я преобразую “cpu” в строку
cpu = str(cpu)
[code python][/code]
Отредактировано PEHDOM (Окт. 7, 2020 16:57:59)
Офлайн