我遇到了代码问题。需要做的是:
我到目前为止的代码是:
def code_controle():
moviechannel = input("What is the name of your movie channel?")
code = input("What is the code you want to check?")
list = [
["RTL8", "20:30", "Rush", "John", "Smith", "123"],
["Veronica", "15:00", "V for Vendetta", "Jane", "Smith" , "ABC"]
]
现在我需要做的是将moviechannel
与code
相匹配。
基本上,如果我输入“RTL8”和代码“123”,它应该查看以RTL8开头的所有列表,然后检查我输入的代码,列表中的代码。如果这相互匹配,请打印“匹配”。
答案 0 :(得分:0)
你可以使用python词典解决这个问题,但继续你的例子:
found=0
for x in list: #note, change this, list is a type def
if x[0]==code and x[-1]==channel:
found+=1
print "Match"
if (found==0):
print "No match"
答案 1 :(得分:0)
试试这个:
>>> my_list = set([moviechannel] + [code])
>>> for x in list:
... if len(set(x) & my_list) == 2:
... print "Match"
...
Match
答案 2 :(得分:0)
我假设这就是你的意思:
for line in list:
if moviechannel in line and code in line:
print('Match')
return
print('not found')
顺便说一下,您真的应该重新考虑重命名list
,因为这也是内置功能。</ p>
答案 3 :(得分:0)
一个简单的解决方案是迭代主列表并检查电影和代码是否都存在于任何子列表中。
Python允许使用in
检查列表中的值。它只是if 'value' in list
如果您想经常调用它,编写如下所示的方法可能很有用。
for sublist in list:
if movie in sublist and code in sublist:
return True
return False
修改强>
即使电影和代码值互换,上面的代码也会返回true。如果代码是一个唯一的标识符,它应该没问题,因为没有电影标题会匹配它。
由于列表是通过读取.csv文件生成的,并且我们确信电影将始终是第一项,代码是第六项,我们可以使用以下代码仅精确匹配这些值。
for sublist in list:
if (movie == sublist[0]) and (code == sublist[5]):
return True
return False
我会将其包装在try/except
中以捕捉任何超出范围的索引,以确保安全。
答案 4 :(得分:0)
这是另一种方法:
new_list = c_list[0] + c_list[1]
if code in new_list and moviechannel in new_list:
print 'Match'
else:
print 'Not found'
您不应该使用list
,因为list
是内置函数,因此我将其更改为c_list
。