2015-04-03 16 views
0
import sys 

v_user = "" 
v_pass = "" 
v_lock = "" 

print "Unlock first " 
v_lock = str(raw_input("> ")) 

while v_lock == "lock": 
    print "Connected..." 
    print "Enter user:" 
    v_user = str(raw_input("> ")) 
    print "Enter password" 
    v_pass = str(raw_input("> ")) 

    if v_user != "user1" or v_pass != "user1": 
     print "Wrong user and password, try again..." 
     print "Reconnecting.." 
    else: 
     print "Acces granted, system unlocked" 
     sys.exit(); 

print "Wrong word for unlocking, exiting..." 

所以我有上面的代碼,我不明白while結構。理解同時結構的問題

我不知道如何僅通過使用exit()方法退出它。如何以更合乎邏輯和更清潔的方式來完成?

上面這段文字寫得有多糟?

+0

您可以刪除所有這些分號; Python不需要這些。 – 2015-04-03 16:08:10

+1

'raw_input()'已經返回一個字符串,'str()'調用是多餘的。 – 2015-04-03 16:08:41

+0

是的,你說的是分號,它只是一個喜歡知道指令結束的習慣,等等:) – udarH3 2015-04-03 16:23:51

回答

1

而不是sys.exit(),您可以將v_lock設置爲「」或「lock」以外的任何其他值。 while循環將評估爲False,然後將繞過該循環並拾取:'print'解鎖,退出時出現錯誤的單詞...「; '

+0

我還挺需要退出()退出,而我注意到,因爲如果我輸入「鎖定」它一遍又一遍地通過。 – udarH3 2015-04-03 16:41:18

1

有很多事情可以在你的代碼中以更好的方式完成。

1)按照縮進4個空格的做法。這是python縮進標準。

2)原始輸入可以採取一個字符串input.Hence中顯示,你可以擺脫只是多餘

3)建議他人,消除很多的print語句「;」。它們不是python所必需的

4)不使用sys.exit(),而是將v_lock的值設置爲其他值,這將使while循環條件爲false。

5)您不需要在開始時聲明或初始化變量(v_lock,v_user和v_pass)。

我格式化你的代碼看起來是這樣的:

v_lock = raw_input("Unlock first \n>") 

while v_lock == "lock": 
    print "Connected..." 
    v_user = raw_input("Enter user:") 
    v_pass = raw_input("Enter password:") 
    if v_user != "user1" or v_pass != "user1": 
     print "Wrong user and password, try again..." 
     print "Reconnecting.." 
    else: 
     print "Acces granted, system unlocked" 
     v_lock = "unlock" 

print "Wrong word for unlocking, exiting..." 

希望這有助於!

+0

它有幫助,謝謝 – udarH3 2015-04-03 16:42:55