2016-09-15 52 views
0

我正在做一个受控评估。我有这样的代码:如何在两件事情是正确的情况下打印信息,并在这两件事情不正确时使用输入功能

# user Qualifications 
print("\nQualification Level") 

print("\n""\"AP\" = Apprentice", 
     "\n\"FQ\" = Fully-Qualified") 
user_qual = input("Enter you Qualification Level: ") 

user_qual等于APFQ我想打印“正确的”。但是,如果user_qual不等于APFQ,我想打印一条错误消息并重新询问user_qual输入问题。但是,我尝试了许多不同的方式,但无法完成。

请给出一个简单的解决方案,没有什么复杂的。我只是初学者和学习基础知识。

+4

*“我试着许多不同的方式,但不能做到这一点。 “*你*应该*添加这些,最好展示你的尝试,以及你失败的地方,而不是期待我们写下所有的东西。 –

回答

0

你需要把你的代码放到一个功能,因此它可以被再次调用,如果不符合标准的:

def prompt(): 
    # user Qualifications 
    print('\nQualification Level') 
    print('\n"AP" = Apprentice\n"FQ" = Fully-Qualified') 

    user_qual = input('Enter you Qualification Level: ') 

    if user_qual not in ('AP','FQ'): 
     prompt() # Criteria not met, so ask again 
    print('Correct!') # Criteria met, don't ask again 


# Call the function the first time 
prompt() 

由于@IanAuld提到的意见,如果你想允许用户提供的答案(即AP)在不区分大小写的方式(以便用户可以键入“AP”代替),你会想评估前的情况下进行转换,就像这样:

if user_qual.upper() not in ('AP','FQ'): 
    ...rest of code... 
+0

在这种情况下,通常使用'upper()'或'lower()'来标准化输入(在这种情况下'upper()'是最好的),这样用户在输入时不会出现错误''ap''。这使得UX更加令人愉快。 – IanAuld

+0

@IanAuld - 我同意,尽管我想尽可能少地投入OP,因为他们声称他们是初学者等 - 所以只是展示基础知识。我会在答案中添加您的评论作为备注。 – Nicarus

0

您可以尝试在变量中定义限定级别。在这种简单的情况下,tuple就足够了,但如果要有更多的资格级别,dictionary会更有意义。

qualification_levels = ('AP', 'FQ') 
print("\n""\"AP\" = Apprentice", 
     "\n\"FQ\" = Fully-Qualified") 
user_qual = input("Enter you Qualification Level: ") 
if user_qual in qualification_levels: 
    print('correct!') 
else: 
    print('ERROR!!!') 
相关问题