2015-10-05 66 views
2

所以,我一直在編寫一個Python的'計算機軟件',其中你基本上有一個可以編輯的登錄用戶名和密碼。我試圖添加一個功能,允許您「刪除」密碼(但更像是跳過它),但它不起作用。下面是跳過程序代碼:布爾如果Python中的語句

def Access1(): 
    print("Input first name") 
    print("") 
    answer = raw_input() 
    if(answer.lower() == username and PasswordSkip == True): 
     print("") 
     print("Access granted") 
     List1() 
    if(answer.lower() == username and PasswordSkip == False): 
     print("") 
     print("Access granted") 
     Access2() 

*注意Access2()又是需要密碼才能繼續功能,並List1()是系統的主菜單。

這裏就是布爾值被設置爲True

def PasswordRemove(): 
    print("") 
    print("Are you sure you want to remove your password, <yes> or <no>?") 
    print("") 
    key = raw_input() 
    if(key.lower() == "yes"): 
     PasswordSkip = True 
     print("") 
     print("Ok, your password has been removed.") 
     print("") 
     List1() 
    elif(key.lower() == "no"): 
     DetailsChange() 
    else: 
     DetailsChange() 

這裏是我如何定義和全球化PasswordSkip

PasswordSkip = False 

def Startup(): 
    global PasswordSkip 

(功能那張長,但有沒有參與)

如果您需要更多關於我的代碼的信息,我可以將它提供給您。

所以,當我運行我的代碼時,忽略了關於布爾值的if語句。如果布爾值爲True,它應該轉到不同的功能。然而,它跳過了這個陳述,因爲它帶來了Access2()(密碼功能)。

答案不是急需,但謝謝。

+2

'global'語句設置名稱的範圍*每個函數*。 'Startup'中的'Global PasswordSkip'不會改變不同函數中的名稱範圍。 –

+0

順便說一句,你確定你想授予訪問權限在任何情況下'PasswordSkip == True'和'PasswordSkip == False'? – Pynchia

回答

3

片段

def Startup(): 
    global PasswordSkip 

不聲明PasswordSkip是全球無處不在。它聲明在這個函數中,對設置PasswordSkip的引用應該被認爲是全局變量PasswordSkip而不是某個局部變量。

現在在功能PasswordRemove中,您不要聲明PasswordSkip是一個全局範圍。因此,如PasswordSkip = True這樣的語句設置爲本地變量PasswordSkip

+0

哦,我終於明白了。非常感謝解釋它,跳過程序起作用。 – oisinvg2001