while 循环

这是我们的第一个控制结构。使用的是 2.7 版本。通常情况下,计算机从第一行开始,然后逐行向下执行。控制结构改变了语句执行的顺序,或者决定是否执行某个特定的语句。顺便提一下,决策语句(例如 if 语句)也会影响某个语句是否执行。下面是使用 while 控制结构的程序源代码:

a = 0
while a < 5:
    a += 1  # 等同于 a = a + 1
    print(a)

输出:

1
2
3
4
5

程序的运行是怎样的呢?首先它看到 a = 0,将变量 a 设置为零。然后它看到 while a < 5:,计算机检查 a < 5 是否为真。第一次计算时,a 为零,而零小于五。换句话说,只要 a 小于五,计算机就会运行缩进的语句。

这里是另一个使用 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? ')  # raw_input() 只适用于 Python 2.x
    a = float(a)
    s += a
print('Total Sum = ', s)

输出:

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.,直到宇宙热寂,或者你停止它。停止的方法是按下 Control(或 Ctrl)键和字母 c,同时按下。这将终止程序。(注意:有时你可能需要按下回车键才能终止。)

示例

Fibonacci.py

# 这个程序计算 Fibonacci 数列
a = 0
b = 1
count = 0
max_count = 20
while count < max_count:
    count = count + 1
    # 我们需要追踪 a,因为我们修改了它
    old_a = a
    old_b = b
    a = old_b
    b = old_a + old_b
    # 注意 print 语句末尾的逗号,这样它就不会换行
    print(old_a),

输出:

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

Password.py

# 等待直到输入密码。使用 control-C 可以中断程序,而不输入密码。

# 注意这必须不是密码,这样 while 循环至少会执行一次。
password = "foobar"

# 注意 != 表示不等于
while password != "unicorn":
    password = input("Password: ")
print("Welcome in")

示例运行:

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

for 循环

Python 中的下一种循环是 for 循环。与大多数语言不同,for 循环需要一个 可迭代 对象,如集合(Set)或列表(List)才能工作。

onetoten = range(1, 11)
for count in onetoten:
    print(count)

输出:

1
2
3
4
5
6
7
8
9
10

这个输出看起来很熟悉,但程序代码看起来有所不同。第一行使用了 range 函数range 函数使用两个参数,像这样 range(start, finish)start 是生成的第一个数字,finish 是最后一个数字的下一个数字(即不包含 finish)。注意,这个程序可以通过以下更简洁的方式实现:

for count in range(1, 11):
    print(count)

这里是一些使用 range 函数的例子:

>>> range(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(-32, -20)
[-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21]
>>> range(5, 21)
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>> range(21, 5)
[]

通过这些例子可以看到 range 函数的行为。

while 循环

这是我们第一个控制结构。使用的是 2.7 版本。通常情况下,计算机从第一行开始,然后逐行向下执行。控制结构改变了语句执行的顺序,或者决定是否执行某个特定的语句。顺便提一下,决策语句(例如 if 语句)也会影响某个语句是否执行。下面是使用 while 控制结构的程序源代码:

a = 0
while a < 5:
    a += 1  # 等同于 a = a + 1
    print(a)

输出:

1
2
3
4
5

程序的运行是怎样的呢?首先它看到 a = 0,将变量 a 设置为零。然后它看到 while a < 5:,计算机检查 a < 5 是否为真。第一次计算时,a 为零,而零小于五。换句话说,只要 a 小于五,计算机就会运行缩进的语句。

这里是另一个使用 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? ')  # raw_input() 只适用于 Python 2.x
    a = float(a)
    s += a
print('Total Sum = ', s)

输出:

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.,直到宇宙热寂,或者你停止它。停止的方法是按下 Control(或 Ctrl)键和字母 c,同时按下。这将终止程序。(注意:有时你可能需要按下回车键才能终止。)

示例

Fibonacci.py

# 这个程序计算 Fibonacci 数列
a = 0
b = 1
count = 0
max_count = 20
while count < max_count:
    count = count + 1
    # 我们需要追踪 a,因为我们修改了它
    old_a = a
    old_b = b
    a = old_b
    b = old_a + old_b
    # 注意 print 语句末尾的逗号,这样它就不会换行
    print(old_a),

输出:

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

Password.py

# 等待直到输入密码。使用 control-C 可以中断程序,而不输入密码。

# 注意这必须不是密码,这样 while 循环至少会执行一次。
password = "foobar"

# 注意 != 表示不等于
while password != "unicorn":
    password = input("Password: ")
print("Welcome in")

示例运行:

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

for 循环

Python 中的下一种循环是 for 循环。与大多数语言不同,for 循环需要一个 可迭代 对象,如集合(Set)或列表(List)才能工作。

onetoten = range(1, 11)
for count in onetoten:
    print(count)

输出:

1
2
3
4
5
6
7
8
9
10

这个输出看起来很熟悉,但程序代码看起来有所不同。第一行使用了 range 函数range 函数使用两个参数,像这样 range(start, finish)start 是生成的第一个数字,finish 是最后一个数字的下一个数字(即不包含 finish)。注意,这个程序可以通过以下更简洁的方式实现:

for count in range(1, 11):
    print(count)

这里是一些使用 range 函数的例子:

>>> range(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(-32, -20)
[-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21]
>>> range(5, 21)
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>> range(21, 5)
[]

通过这些例子可以看到 range 函数的行为。

Last modified: Friday, 31 January 2025, 12:14 AM