跳转到内容

Python 2.6 非程序员教程/计数到 10

来自维基教科书,开放的书籍,开放的世界

While 循环

[编辑 | 编辑源代码]

在这里,我们介绍第一个控制结构。通常,计算机从第一行开始,然后向下执行。然而,控制结构改变了语句执行的顺序,或者决定是否执行某些语句。以下是一个使用while控制结构的程序的源代码

a = 0
while a < 10:
    a = a + 1
    print (a)

以下是非常令人兴奋的输出

1
2
3
4
5
6
7
8
9
10

你以为把你的电脑变成一个五美元的计算器后,情况不会更糟吗?

那么这个程序做了什么呢?首先,它看到了a = 0这行代码,它告诉计算机将a设置为零。然后,它看到了while a < 10:,它告诉计算机检查是否a < 10。计算机第一次看到这个 while 语句时,a等于零,这意味着a小于 10,所以计算机继续执行接下来的缩进或制表符中的语句。执行完这个 while “循环”中的最后一条语句print (a)后,计算机又回到while a < 10检查a的当前值。换句话说,只要a小于十,计算机就会执行缩进的语句。由于a = a + 1不断地将 1 加到a上,最终 while 循环会使a等于十,并使a < 10不再成立。达到这一点后,程序将不再执行缩进的行。

请始终记住在“while”语句后添加冒号“:”!

以下是while的另一个使用示例

a = 1
s = 0
print ('Enter Numbers to add to the sum.')
print ('Enter 0 to quit.')
while a != 0:
    print 'Current Sum:', s
    a = input('Number? ')
    s = s + a
print 'Total Sum =', round(s, 2)
Enter Numbers to add to the sum.
Enter 0 to quit.
Current Sum: 0
Number? 200
Current Sum: 200
Number? -15.25
Current Sum: 184.75
Number? -151.85
Current Sum: 32.9
Number? 10.00
Current Sum: 42.9
Number? 0
Total Sum = 42.9

注意print 'Total Sum =', s是如何只在最后执行的。while语句只影响缩进的空白行。!=表示“不等于”,所以"while a != 0:"表示:“直到a为零,执行其后的缩进语句。”

无限循环

[编辑 | 编辑源代码]

现在我们有了 while 循环,就可以编写永远运行的程序了。一个简单的实现方法是编写这样的程序

while 1 == 1:
   print "Help, I'm stuck in a loop."

==”运算符用于测试两边表达式是否相等,就像之前使用“<”表示“小于”一样(在下一章中,您将获得所有比较运算符的完整列表)。

这个程序会一直输出Help, I'm stuck in a loop.,直到宇宙热寂或您停止它,因为 1 将永远等于 1。停止它的方法是同时按下 Control(或Ctrl)键和C(字母)。这将终止程序。(注意:有时您需要在按下 Control-C 后按 Enter)。

Fibonacci.py

# This program calculates the Fibonacci sequence
a = 0
b = 1
count = 0
max_count = 20
while count < max_count:
    count = count + 1
    # we need to keep track of a since we change it
    old_a = a
    old_b = b
    a = old_b
    b = old_a + old_b
    # Notice that the , at the end of a print statement keeps it
    # from switching to a new line
    print(old_a),

输出

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

注意通过在print语句末尾使用逗号来实现单行输出。

Password.py

# Waits until a password has been entered.  Use Control-C to break out without
# the password

# Note that this must not be the password so that the 
# while loop runs at least once.
password = "no password"

# note that != means not equal
while password != "unicorn":
    password = raw_input("Password: ")
print "Welcome in"

示例运行

Password: auo
Password: y22
Password: password
Password: open sesame
Password: unicorn
Welcome in

编写一个程序,要求用户输入登录名和密码。然后,当他们输入“lock”时,需要输入他们的姓名和密码来解锁程序。

解决方案

编写一个程序,要求用户输入登录名和密码。然后,当他们输入“lock”时,需要输入他们的姓名和密码来解锁程序。

name = raw_input("What is your UserName: ")
password = raw_input("What is your Password: ")
print "To lock your computer type lock."
command = ""
input1 = ""
input2 = ""
while command != "lock":
    command = raw_input("What is your command: ")
while input1 != name:
    input1 = raw_input("What is your username: ")
while input2 != password:
    input2 = raw_input("What is your password: ")
print "Welcome back to your system!"

如果您希望程序连续运行,只需在整个程序周围添加一个while 1 == 1:循环。在代码开头添加它时,您需要缩进程序的其余部分,但不要担心,您不必为每一行手动执行此操作!只需突出显示您要缩进的所有内容,然后点击 python 窗口顶部栏“格式”下的“缩进”。请注意,您可以使用这样的空字符串:""

另一种方法是

name = raw_input('Set name: ')
password = raw_input('Set password: ')
while 1 == 1:
    nameguess=passwordguess=key=""   # multiple assignment
    while (nameguess != name) or (passwordguess != password):
        nameguess = raw_input('Name? ')
        passwordguess = raw_input('Password? ')
    print "Welcome,", name, ". Type lock to lock."
    while key != "lock":
        key = raw_input("")

注意while中的or (name != "user") or (password != "pass"):,我们还没有介绍它。您可能可以弄清楚它的工作原理。

login = "john"
password = "tucker"
logged=2

while logged != 0:
    while login != "Phil":    
            login = raw_input("Login : ")
    while password != "McChicken":
            password = raw_input("Password: ")
    logged = 1

    print "Welcome!"
    print "To leave type lock "

    while logged == 1:
        leave = raw_input (">> ")
        if leave == "lock":
            logged = 0
print "Goodbye!!"

虽然这种方法比较粗略,但它也有效。注意它使用了尚未介绍的if函数。


华夏公益教科书