@vanderhuuy

Как создать бота в телеграме с игрой быки и коровы(программа есть)?

В общем я озадачил себя созданием бота в телеграме с игрой быки и коровы( правила в википедии есть). Если кратко: бот загадывает случайное четырехзначное число в котором не повторяются цифры. Пользователь же, в свою очередь должен угадать, после каждой попытки узнавая количество совпавших цифр и их позиций(быков) и просто факт наличия цифры в искомом числе(коровы). Саму прогу на питоне я уже написал, с ней, благо, проблем нет. Все упирается в то, что мне нужно адаптировать готовую прогу под работу бота, но у меня это никак не выходит - привычные способы не работают. Я неопытный и думаю, что это издержки работы с ботами
Вот код программы( наверняка можно рациональнее, но пытаюсь это сделать с минимальным набором знаний, подсматривая по мере необходимости)
import random
random_numbers_list=[]
amount_inlist=len(random_numbers_list)
while amount_inlist!=4537:
    number=random.randint(1000,10000)
    n1=number%10
    n2=number//10%10
    n3=number//100%10
    n4=number//1000
    if n1!=n2 and n1!=n3 and n1!=n4 and n2!=n3 and n2!=n4 and n3!=n4:
        random_numbers_list.append(number)
    amount_inlist=len(random_numbers_list)
    def f(random_numbers_list):
        n=[]
        for i in random_numbers_list:
            if i not in n:
                n.append(i)
        return n
random_numbers_list=f(random_numbers_list)
random_numbers_list.sort()
our_number=random.choice(random_numbers_list)
s1=our_number%10
s2=our_number//10%10
s3=our_number//100%10
s4=our_number//1000
secretspisok=[s4,s3,s2,s1]
bull=0
cow=0
print(our_number)
while bull<4:
    cow=0 
    bull=0
    attempt=int(input())
    a1=attempt%10
    a2=attempt//10%10
    a3=attempt//100%10
    a4=attempt//1000
    attemptspisok=[a4,a3,a2,a1]
    for a in range(0,4):
        if secretspisok[a]==attemptspisok[a]:
            bull+=1
    for a in range(0,4):
        for b in range (0,4):
            if secretspisok[a]==attemptspisok[b]:
                cow+=1
    print('быков:',bull, 'коров:', int(cow)-int(bull))            
    if bull==4:
        print('Вы победили!Ура!')

Проблема начинается сразу же - на строке с созданием пустого списка random_numbers_list. Питон тут просто подчеркивает строку и выдает ошибку invalid syntax. Тогда я создал функцию, куда запихнул часть с загадыванием числа:
def choose_number(random_numbers_list):
    random_numbers_list=[]
    amount_inlist=len(random_numbers_list)
    while amount_inlist!=4537:
        number=random.randint(1000,10000)
        n1=number%10
        n2=number//10%10
        n3=number//100%10
        n4=number//1000
        if n1!=n2 and n1!=n3 and n1!=n4 and n2!=n3 and n2!=n4 and n3!=n4:
            random_numbers_list.append(number)
            amount_inlist=len(random_numbers_list)
        def f(random_numbers_list):
            n=[]
            for i in random_numbers_list:
                if i not in n:
                    n.append(i)
            return n
    random_numbers_list=f(random_numbers_list)
    return(random_numbers_list)
our_number=random.choice(choose_number)

Но тут меня ждет еще одно разочарование - случайное число не берется. Если же я пишу так:
our_number=random.choice(choose_number(random_numbers_list))

то оно вообще не распознает random_numbers_list, хотя в той же проге все работает как по маслу. Более того, не работает даже способ с созданием списка и приравниванием, как я делал с функцией f(random_number_list)
Объясните в чем может быть проблема или как можно по-другому реализовать получение случайного числа из списка. Спасибо
  • Вопрос задан
  • 217 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 22:38
2500 руб./за проект
23 нояб. 2024, в 22:03
3000 руб./за проект
23 нояб. 2024, в 21:53
30000 руб./за проект