2016-10-16 136 views
0

我想搜索游戏中使用的以前用户名的数组,以供玩家当前使用的用户名(允许显示用户名下的所有以前的游戏分数)。该列表已从外部文本文件导入。搜索列表的元素

for x in range(0, len(lis)): 
    if username == lis[x]: 
     print "yes" 
    print lis[x] 

在这里例如,用户名可以是“杰克”。尽管lis中的多个元素的值为“Jack”(通过“print lis [x]”打印列表的所有值来验证),但从不打印“yes”以显示此值。

怎么回事?

+2

尝试打印列表的原始值;如果从文件中读取,则很有可能将'Jack'与'Jack \ n'进行比较,当然这不匹配。 –

+0

尝试调用lis [x] .strip()来摆脱尾随的换行符/空格 – rassar

+1

(旁注)可以使用in-keyword检查对象是否在列表中更简单:'if username in lis:print(“是“)'。另外,如果您打算多次检查这种类型的东西,请考虑使用一套。 – Bendik

回答

0

试试这个代码:

for usernameTest in lis: 
    if username == usernameTest.strip(): 
     print "yes" 
    print lis[x] 
0
if username in lis: 

应该做在列表

搜索的把戏。如果你写不工作,检查字符串格式化以同样的方式

if username.strip().lower() == lis[x].strip().lower(): 
+0

该OP没有要求解决方法。 –

0

我不确定这是不是你的意思,但至少这是打印是:

lis = ["Jack","Rose", "Joe", "Franz"] 
username = "Joe" 
for x in range(0, len(lis)): 
if username == lis[x]: 
    print ("yes")