比较用户输入和字符串列表

时间:2020-01-24 01:39:48

标签: python-3.x

我试图提示用户键入文本文件中存在的四个全名,然后将用户输入与全名列表进行比较,以查看它们是否存在并按输入顺序显示用户输入的内容。每次我运行这段代码时,都会出现错误,提示对象不可下标。

怎么了?

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")

1 个答案:

答案 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)
相关问题