Python 试图找出两个列表中有哪些共同点

Python 试图找出两个列表中有哪些共同点,python,python-3.x,list,Python,Python 3.x,List,在我的代码中,计算机生成一个4位数的随机数,然后代码要求用户给出一个4位数的数字。目标是找出随机数和用户数之间的共同点。如随机数为1234,用户给出5432,则代码输出应为公共数,在本例中为234 该代码运行良好,除非用户给出的四个数字都相同,并且在随机数中也很常见。比如,如果随机数是4569,用户给4444所有的4s和4在随机数中也是常见的,而不是结果4,则代码返回4444。有什么解释吗 import random #generate a random 4 digit secret numb

在我的代码中,计算机生成一个4位数的随机数,然后代码要求用户给出一个4位数的数字。目标是找出随机数和用户数之间的共同点。如随机数为1234,用户给出5432,则代码输出应为公共数,在本例中为234

该代码运行良好,除非用户给出的四个数字都相同,并且在随机数中也很常见。比如,如果随机数是4569,用户给4444所有的4s和4在随机数中也是常见的,而不是结果4,则代码返回4444。有什么解释吗

import random

#generate a random 4 digit secret number

list1 = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
number = random.sample(list1, 4)
print(number)

#ask user for a 4 digit number

your_number = input("What's your 4 digit number: ")

#make a list of two numbers for convenience

number = list(number)
your_number = list(your_number)
print(number)
print(your_number)

#find how many numbers overlap between these two numbers, not position specific
overlaps = []
for k in your_number:
    for l in number:
        if k == l:
            overlaps.append(k)
        else:
            pass
print(overlaps)

尽量更具体地说明预期输出是什么,以及为什么实际输出被认为是不正确的。我的初步印象是,可能您不希望输出中存在重复项,即,如果您将“5013”与“0000”进行比较,您不希望重叠项为['0'、'0'、'0'、'0'],而是['0']。如果是这种情况,只需按如下方式替换If语句:

for k in your_number:
    for l in number:
        # if k == l:
        if k == l and k not in overlaps:
            overlaps.append(k)

这可以防止重复的数字被记录多次。

这是因为外环是您的号码。对于k中的每个元素,它将在第一次根据“1023”检查数字中的第一个“0”时执行内部循环,在索引1处找到0。在下一次迭代中,它根据“1023”检查您的号码中的第二个“0”,然后在索引1处再次找到0并将其附加到列表中

我很抱歉,如果这没有什么意义。请参考第二张图片,以便更好地理解

干杯


当用户给出0000时,代码正在工作。你得到了什么错误/意外的结果?请:举一个最小的例子,删除不需要重现错误的代码,并准确地说出问题所在-代码不起作用并不说明什么。这就像-如果计算机生成5439,用户给5555所有相同的字符,这与计算机的一个数字是相同的,它只是返回5555。如果计算机生成4039,用户给出0000,它将返回0000。如果数字是0011,我的_数字是1100,那么预期的结果是什么?[]或[1,0]或[0,1]或其他内容?