0

你好有人可以帮助我吗?我正在使用 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

4 回答 4

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')
于 2013-04-10T15:37:36.193 回答
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.')
于 2013-04-10T15:43:35.557 回答
0

看,该程序完全按照您的指示执行。

您首先测试 aninput()是否为"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')
于 2013-04-10T15:43:53.133 回答
0

elifif只有当语句为假时才会评估语句。逐行跟踪每个案例,您应该会看到正在发生的事情是您应该期待的。

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

if(input('username=')=='hello' and input('passcode=')=='goodbye'):
    print('continue')
else :
    print ('alert')
于 2013-04-10T15:45:09.220 回答