我试图从0到9999的列表中取一个随机数。当我得到该数字时,我想将它与4位数字进行比较。然后,如果它不起作用,我想从0到9999的列表中删除那个随机数 例如它随机选择9999并与3129进行比较,因此它从列表中删除它并再次尝试列表(范围(0000,9998))
lis = list(range(0000,9999))
import random
num = random.choice(lis)
while int(num) < pin or int(num) > pin:
print(num)
num = random.choice(lis)
count = count + 1
lis = lis.remove(num)
print('Got your pin in ' + str(count))
from time import sleep
sleep(4)
答案 0 :(得分:-1)
lis = lis.remove(num)
会将列表设置为“无”,因为remove方法不会返回任何内容。所以只需使用
lis.remove(num)
可以解决您的问题 - 无论您遇到什么问题。你的帖子确实没有明确的问题。
答案 1 :(得分:-1)
import random
comp_number = 3129
def get_give_number_from_random_list(comp_number):
numbers_list = list(range(9999))
default = True
while default:
random_number = random.choice(numbers_list)
if comp_number == random_number:
print('Found the {} Number at index {}'.format(comp_number,numbers_list.index(random_number)))
default = False
else:
numbers_list.remove(random_number)
get_give_number_from_random_list(comp_number)
>>>Found the 3129 Number at index 2197
答案 2 :(得分:-1)
我还想指出,您的代码未考虑0000
到0999
组合。
这是因为python只会从0
计算到9999
您还包括单号,双号和三号,例如7
,99
,167
您可以更好地准备列表,并使用strings
而不是int
进行搜索。
pin = '0001' # Search using a string
lis = ['{0:04}'.format(num) for num in range(0, 10000)] #use string foramtting to add the 0's
lis = [x for x in lis if len(str(x)) == 4] # take out any numbers that are less than 4 digits long
print(lis[0:10]) #check the first 10 items in the list