错误的循环比较列表

时间:2015-12-17 09:46:48

标签: python list loops

我正在尝试编写一个脚本,该脚本将作为输入彩票号码和乐透彩票,然后查看有多少匹配并打印出来。

然而,我的循环遇到麻烦,比较两个列表中的元素。我做错了什么?

阅读:这里认真的新手。

#sets LOTTO ticket line
def makeOneTicket(myNums):
    for i in range(0,6):
        nr = input()
        myNums.append([nr])
    return myNums

def makeTicketList(numTix, ticList): 
    ticket = []
    for i in range(0,numTix):
        ticket = makeOneTicket(ticket)
        ticList.append([ticket])

        if i == numTix -1:    
            print "Done."
        else:
            print "Next ticket."
    return ticList

def checkTicketMatch(list1, list2):
    counter = 0
    for element in list1:
        if element in list2:
            counter = counter + 1
    return counter



winNums = []
myNums = []
ticList = []
print "Please enter winning LOTTO numbers: "
makeOneTicket(winNums)

print "-----------------------------"
print winNums
print "-----------------------------"

print "How many tickets do you have?: "
numTix = input()

print("Enter your lotto numbers one by one: ")
ticList = makeTicketList(numTix, ticList)

matches = 0
matches = checkTicketMatch(winNums, ticList[0])
print matches

1 个答案:

答案 0 :(得分:0)

Python的一些问题:

当你这样做时:

myNums.append([nr])

这意味着您的机票不会像[1,1,2,3,5],而是[[1], [1], [2], [3], [5]]

相反,你应该做

myNums.append(nr)

这不会直接导致您的错误,但稍后会在您执行

时造成错误
ticList.append([ticket])

...您的票据列表也变为[[票证],[票证]],因此当您进行比较时,您将比较一个(包含票证)的一个列表与票证。

这是你问题的根源。

您的代码的另一个问题:通过创建它,有两种方法可以创建一个列表的函数:

def make_list():
    result = []
    result.append(3)
    return result

my_list = make_list()

或将其传递给内联,就像在C中经常做的那样:

def fill_list(_list):
    _list.append(3)

my_list = []
fill_list(my_list)

...你似乎有同时兼顾这两种功能的功能,但这样做有点过分。