我试图提示用户键入文本文件中存在的四个全名,然后将用户输入与全名列表进行比较,以查看它们是否存在并按输入顺序显示用户输入的内容。每次我运行这段代码时,都会出现错误,提示对象不可下标。
怎么了?
class Voting:
def __init__(self):
with open("PresidentCandidates.txt", 'r') as file:
lines = file.readlines()
self.Candidates = set([s.strip() for s in lines])
print(self.Candidates)
def presidentvoting(self):
userinput = input("Enter 4 names in the order of preference, who you will like to be president ")
userInput = list[userinput]
if userInput in self.Candidates:
print(userinput)
else:
print("fail")
答案 0 :(得分:0)
在此行:
userInput = list[userinput]
您需要使用普通括号而不是方括号。即
userInput = list(userinput)
这应该可以修复错误。但是,您的代码中还有另一个错误。要解决此问题,请更改:
userInput = list(userinput)
if userInput in self.Candidates:
print(userinput)
else:
print("fail")
到
userInput = userinput.split(' ')
for i in userInput
if i in self.Candidates:
print(userinput)
else:
print("fail")
这是因为,您需要对照文本文件列表检查userInput
列表中的每个项目,而不是将整个userInput
列表与文本文件列表进行比较。
此代码修复假定您的输入用空格分隔。 例如“总统1总统2总统3总统4”
如果使用其他分隔符,请编辑:
userInput = userinput.split(' ')
到
userInput = userinput.split(<INSERT SEPARATOR HERE>)
编辑:25/01/20 [要求不打印USERINPUT 4次] 更改:
userInput = userinput.split(' ')
for i in userInput
if i in self.Candidates:
print(userinput)
else:
print("fail")
到
userInput = userinput.split(' ')
for i in userInput
if not (i in self.Candidates):
print("fail")
return
print(userinput)