我正在尝试编写一个脚本,该脚本将作为输入彩票号码和乐透彩票,然后查看有多少匹配并打印出来。
然而,我的循环遇到麻烦,比较两个列表中的元素。我做错了什么?
阅读:这里认真的新手。
#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
答案 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)
...你似乎有同时兼顾这两种功能的功能,但这样做有点过分。