0

私のコードは機能していますが、パスワードの入力を再試行したい場合に「いいえ」と入力しても機能しません。パスワードの入力行 (20 行目) に移動するだけです。これを修正するために複数の方法を試しましたが、できません。

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)
4

3 に答える 3

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

上記の if ステートメントは次のように評価されます: -

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

これで、'Yes'は に評価されるTrueため、ifステートメントは常にTrueになり、常に新しいパスワードを入力する必要があります。


条件を次のように変更する必要があります: -

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

同様に、次のelifように変更する必要があります。

elif passretry in ('no', 'No'):
于 2013-01-31T22:39:45.183 に答える
3

この条件:

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

passretry == 'yes'「真である場合、または真である場合」を意味し'Yes'ます。 'Yes'空でない文字列は true としてカウントされるため、常に true です。そのため、常に最初のコード パスを使用しています。

もう少し詳しく説明する必要があります。

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

(または、コードをもう少し一般的にするには:

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

これにより、人々が叫ぶことができYESます。)

于 2013-01-31T22:39:59.587 に答える
2

別の完全なステートメントが必要です。

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

文字列 'Yes' は常に True と評価されます。

于 2013-01-31T22:40:23.023 に答える