Python:验证用户';谁的输入?

Python:验证用户';谁的输入?,python,list,input,Python,List,Input,我的变量userAnswerList[]接受用户的输入,我需要验证用户的输入是否不是A,B,C,D 下面是我的代码,我想知道如何在(ABCD)范围内验证用户的输入,如果不打印错误消息 answerList = ["A","C","A","A","D","B","C","A","C","B","A","D","C","A","D","C","B","B","D","A"] userAnswerList = [] correct = 0 incorrect = 0 def main():

我的变量
userAnswerList[]
接受用户的输入,我需要验证用户的输入是否不是
A
B
C
D

下面是我的代码,我想知道如何在(
A
B
C
D
)范围内验证用户的输入,如果不打印错误消息

answerList = ["A","C","A","A","D","B","C","A","C","B","A","D","C","A","D","C","B","B","D","A"]
userAnswerList = []
correct = 0
incorrect = 0

def main():
    for i in range(20):
        i = i + 1
        answer = input("Please Enter the answer for Question %d:" %i)
        userAnswerList.append(answer)
        numCorrect = [i for i in userAnswerList if i in answerList]

    if len(numCorrect) > 15:
        print("Congratulations You have passed the exam!")
    elif len(numCorrect) < 15:
        print("Failed....Please try again")

correct = len(numCorrect)
incorrect = 20 - correct

print("Correct Answers:",correct,"/ Incorrect Answers:",incorrect)  

main()
answerList=[“A”、“C”、“A”、“A”、“D”、“B”、“C”、“A”、“C”、“B”、“A”、“D”、“C”、“A”、“D”、“C”、“B”、“D”、“A”]
userAnswerList=[]
正确=0
不正确=0
def main():
对于范围(20)内的i:
i=i+1
答案=输入(“请输入问题%d的答案:”%i)
userAnswerList.append(应答)
numCorrect=[i代表用户应答列表中的i,如果我在应答列表中]
如果len(numCorrect)>15:
打印(“祝贺你通过考试!”)
elif len(numCorrect)<15:
打印(“失败…请重试”)
正确=len(numCorrect)
不正确=20-正确
打印(“正确答案:,正确,”/错误答案:,不正确)
main()

您已经很好地使用了
中的
语法。如果您只想检查答案是A、B、C还是D,那么下面的代码可以工作

if not answer in ['A', 'B', 'C', 'D']:
    print("Invalid answer.")
此脚本还可以从Python的语法中获益,例如:

if answer not in 'ABCD':
    print("Invalid answer.")

这里的正则表达式似乎有些过分了。您可以只使用内置功能来解决此问题。在Python中,使用
不在[…]中回答比使用
不在[…]中回答更清楚。
如果这些是单字母答案,您甚至可以使用
'ABCD'
而不是
['A','B','C','D']
。是的,有单字母答案。。那么我是否应该尝试[ABCD]?您可以通过
'ABCD'
['A','B','C','D']
测试成员资格(答案是否在您比较的对象中)。这个决定纯粹是一种风格,因为他们会给出相同的答案。如果你的下一个问题是“好的,我知道如何检查一个变量是B C还是D。现在我如何返回并要求用户重试?”,这可能对你有用:感谢链接;我将尝试“尝试例外”
import re

if re.match("^[ABCDabcd]$", answer) is not None:
    # Matched!
else:
    # Didn't match!