理解while结构的问题

时间:2015-04-03 16:06:43

标签: python python-2.7

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()方法退出它。如何以更合理,更清洁的方式完成?

上面的文章写得有多糟糕或有多好?

2 个答案:

答案 0 :(得分:1)

您可以将v_lock设置为""而不是sys.exit()。或者除了锁定之外的任何其他内容。 while循环将评估为False然后将绕过循环并选择:' print"错误的单词用于解锁,退出...&#34 ;; '

答案 1 :(得分:1)

在代码中可以更好地完成许多事情。

1)遵循4个空格的缩进练习。这是python缩进标准。

2)原始输入可以在输入期间显示一个字符串。因此你可以摆脱许多冗余的打印语句

3)根据其他人的建议,删除“;”。它们在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..."

希望这有帮助!