В общем я озадачил себя созданием бота в телеграме с игрой быки и коровы( правила в википедии есть). Если кратко: бот загадывает случайное четырехзначное число в котором не повторяются цифры. Пользователь же, в свою очередь должен угадать, после каждой попытки узнавая количество совпавших цифр и их позиций(быков) и просто факт наличия цифры в искомом числе(коровы). Саму прогу на питоне я уже написал, с ней, благо, проблем нет. Все упирается в то, что мне нужно адаптировать готовую прогу под работу бота, но у меня это никак не выходит - привычные способы не работают. Я неопытный и думаю, что это издержки работы с ботами
Вот код программы( наверняка можно рациональнее, но пытаюсь это сделать с минимальным набором знаний, подсматривая по мере необходимости)
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)
Объясните в чем может быть проблема или как можно по-другому реализовать получение случайного числа из списка. Спасибо