如何从列表中删除两个数字之间的数字?

时间:2018-03-12 12:34:58

标签: python python-3.x

我试图从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)

3 个答案:

答案 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)

我还想指出,您的代码未考虑00000999组合。

这是因为python只会从0计算到9999

您还包括单号,双号和三号,例如799167

您可以更好地准备列表,并使用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