关于python:Elif,如果不工作或我不理解

Elif and if not working or me not understanding

本问题已经有最佳答案,请猛点这里访问。

好吧,我的代码正在工作,但是如果我想重试输入密码,键入no,它就不工作了;它只会转到输入密码行(第20行)。我尝试过多种方法来解决这个问题,但我根本做不到。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import time
import os

print ("Hello world.")
time.sleep(1)
print ("Waiting 5 seconds.")
time.sleep(5)
print ("You have waited 10 seconds.")
print ("Executing Chrome.")
time.sleep(1)
print ("Execution failed!")
password = input("Enter the execution password:")
if password == 'password1234':
    os.system ('C:\\Users\\Harry\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe')
else:
    print ("Wrong password!")
    time.sleep(1)
    passretry = input("Do you want to try again?")
    if passretry == 'yes' or 'Yes':
        passretry1 = input("Enter password:")
        if passretry1 == 'password1234':
            os.system ('C:\\Users\\Harry\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe')
    elif passretry == 'no' or 'No':
        print ("Closing...")
        time.sleep(1)
    else:
        print ("Wrong password.")
        time.sleep(.5)
        print ("Retry limit exceeded, closing.")
        time.sleep(1)


1
if passretry == 'yes' or 'Yes':

上述if语句的计算结果如下:

1
if (passretry == 'yes') or 'Yes':

现在,由于'Yes'被评估为True,所以,您的if语句始终是True,因此必须输入新密码。

您需要将条件更改为:

1
if passretry in ('yes', 'Yes'):

同样,应将以下elif更改为:

1
elif passretry in ('no', 'No'):


这种情况:

1
if passretry == 'yes' or 'Yes':

表示"如果passretry == 'yes'为真,或'Yes'为真"。'Yes'始终为真,因为非空字符串计为真。这就是为什么你总是选择第一条代码路径。

你需要把事情讲清楚一点:

1
if passretry == 'yes' or passretry == 'Yes':

(或者让代码更通用一点:

1
if passretry.lower() == 'yes':

这样就可以让人们大喊大叫了。


你需要另一个完整的声明:

1
passretry == 'yes' or passretry == 'Yes':

字符串"yes"的计算结果始终为true。