在elif和if语句中的比较之间的混淆

时间:2013-04-10 15:35:42

标签: python

你好,有人能帮帮我吗?我正在使用if和elif语句,但由于某种原因,elif语句代码也回答了if语句,if代码在这里没有回答自己是一个例子:

   #login
if(input('username=')=='hello'):
    print('continue')
elif(input('passcode=')=='goodbye'):
    print('continue')
else :
    print ('alert')

当我运行此代码时,这就是出现的结果:

username=hello
continue
>>> 

相反,如果我插入密码而不是用户名,则会出现这种情况:

username=goodbye
passcode=goodbye
continue
>>> 

最糟糕的是,如果我将用户名空格留空并按回车键会发生这种情况:

username=
passcode=goodbye
continue
>>> 

我该怎么办?

4 个答案:

答案 0 :(得分:0)

因为if和elif的结果是相同的

您的代码:

   #login
if(input('username=')=='hello'):
    print('continue')
elif(input('passcode=')=='goodbye'):
    print('continue')
else :
    print ('alert')

试试这个:

   #login
if(input('username=')=='hello'):
    print('continue')
elif(input('passcode=')=='goodbye'):
    print('continue 2')
else :
    print ('alert')

答案 1 :(得分:0)

我不确定我理解。代码完全按照您编写的代码执行。

您的目标是检查用户名和密码是否匹配才能继续?如果是这样,你可能想要更像这样的东西:

if(input('username=')=='hello'):
    print('username is OK. Continue')
    if(input('passcode=')=='goodbye'):
        print('passcode is OK. Continue')
    else :
        print('alert. Passcode is wrong.')
else :
    print('alert. Username is wrong.')

答案 2 :(得分:0)

请注意,该程序完全按照您的要求进行操作。

首先测试input()"hello"。如果是,则会打印'continue'并跳过elifelse。 如果不是,它将测试另一个input()是否等于"goodbye"。如果是,则会打印'continue'并跳过else。 并且只有当第一个input()不是'hello'且第二个input()不是'goodbye'时,它才会打印'alert'

我认为你的意思是:

   #login
if(input('username=')=='hello'):
    print('continue')
else:
    raise ValueError('alert')
if(input('passcode=')=='goodbye'):
    print('continue')
else:
    raise ValueError('alert')

答案 3 :(得分:0)

仅当elif语句为false时才会评估

if语句。逐行跟踪每个案例,您应该看到正在发生的事情是您应该期待的。

不确定您希望它如何工作但可能是这样的

if(input('username=')=='hello' and input('passcode=')=='goodbye'):
    print('continue')
else :
    print ('alert')