Python 控制结构

PythonBeginner
立即练习

介绍

在本实验中,你将探索 Python 的基本控制结构:条件语句和循环。在之前实验知识的基础上,你将学习如何使用 if-else 语句、for 循环和 while 循环来控制程序的流程。通过这些动手实践,你将加深对 Python 核心概念的理解,并为编写更复杂、更动态的程序做好准备。

理解条件语句

在这一步中,你将学习 Python 中的条件语句,特别是 if-else 结构。

在终端中输入以下命令打开 Python 解释器:

python

你应该会看到 Python 提示符 (>>>),这表明你现在处于 Python 交互式 shell 中。

Python 解释器

让我们从一个简单的 if 语句开始。在 Python 解释器中,输入以下内容:

age = 20
if age >= 18:
    print("You are an adult.")

输出:

You are an adult.

提示:注意缩进,这在 Python 中非常重要。建议使用四个空格进行缩进。

if 语句检查条件 age >= 18 是否为真。如果为真,则执行缩进的代码块。

现在,让我们添加一个 else 子句:

age = 15
if age >= 18:
    print("You are an adult.")
else:
    print("You are a minor.")

输出:

You are a minor.

else 子句在条件为假时提供替代操作。

对于更复杂的条件,我们可以使用 elif (else if) 子句:

age = 65
if age < 13:
    print("You are a child.")
elif age < 20:
    print("You are a teenager.")
elif age < 65:
    print("You are an adult.")
else:
    print("You are a senior citizen.")

输出:

You are a senior citizen.

elif 子句允许你按顺序检查多个条件。

请记住,缩进在 Python 中至关重要。它定义了与每个条件相关联的代码块。

探索 "For" 循环

在这一步中,你将学习 "for" 循环,它用于在 Python 中遍历序列(如列表、字符串或范围)。

让我们从一个使用 range 的简单 for 循环开始。在 Python 解释器中,输入:

for i in range(5):
    print(i)

输出:

0
1
2
3
4

range(5) 函数生成一个从 0 到 4 的数字序列,循环遍历每个数字。

range() 可以接受多个参数来指定开始、结束和步长值。让我们尝试一个不同的范围:

for i in range(1, 10, 2):
    print(i)

输出:

1
3
5
7
9
  • range(1, 10, 2) 函数生成一个从 1 开始,到 10(不包含 10)结束,步长为 2 的数字序列。

现在,让我们遍历一个列表:

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(f"I like {fruit}")

输出:

I like apple
I like banana
I like cherry

在这里,循环遍历 fruits 列表中的每一项。

你也可以将 for 循环与字符串一起使用:

for char in "Python":
    print(char.upper())

输出:

P
Y
T
H
O
N

此循环遍历字符串 "Python" 中的每个字符。

让我们将 "for" 循环与条件语句结合起来:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers:
    if num % 2 == 0:
        print(f"{num} is even")
    else:
        print(f"{num} is odd")

输出:

1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
10 is even

此循环检查列表中的每个数字,并打印它是偶数还是奇数。

理解取模运算符 (%)% 符号称为取模运算符(或求余运算符)。它返回一个数除以另一个数后的余数。例如:

  • 5 % 2 等于 1(因为 5 除以 2 等于 2,余数为 1)
  • 4 % 2 等于 0(因为 4 除以 2 等于 2,没有余数)
  • 10 % 3 等于 1(因为 10 除以 3 等于 3,余数为 1)

当我们检查 num % 2 == 0 时,我们是在问:“这个数字除以 2 的余数是 0 吗?”如果答案是肯定的(余数等于 0),那么这个数字就是偶数。如果余数是 1(或任何其他数字),那么这个数字就是奇数。== 是相等比较运算符,用于检查两个值是否相等,如果相等则返回 True,否则返回 False

理解 "While" 循环

在这一步中,你将学习 "while" 循环,它用于只要条件为真就重复执行一段代码。

让我们从一个简单的 "while" 循环开始。在 Python 解释器中,输入:

count = 0
while count < 5:
    print(count)
    count += 1

输出:

0
1
2
3
4

只要 count 小于 5,此循环就会继续执行。

当你事先不知道需要迭代多少次时,通常会使用 "while" 循环。这是一个例子:

import random
number = random.randint(1, 10)
guess = 0
while guess != number:
    guess = int(input("Guess a number between 1 and 10: "))
    if guess < number:
        print("Too low!")
    elif guess > number:
        print("Too high!")
    else:
        print(f"Congratulations! You guessed the number {number}!")

这创建了一个简单的猜数字游戏,用户不断猜测,直到猜中正确的数字。当用户的猜测与数字匹配时,else 子句执行并显示祝贺信息。

使用 "while" 循环时要小心——如果条件永远不会变为假,你就会创建一个无限循环。让我们看一个例子(但不要真的运行它):

while True:
    print("This will print forever!")

如果你不小心运行了无限循环,可以通过按 Ctrl+C 来停止它。

你可以使用 break 语句提前退出循环:

count = 0
while True:
    print(count)
    count += 1
    if count >= 5:
        break

输出:

0
1
2
3
4

此循环通常会永远运行,但 break 语句会在 count 达到 5 时退出循环。

嵌套循环和循环控制语句

在这一步中,你将学习嵌套循环和其他循环控制语句。

嵌套循环是循环内的循环。这是一个嵌套 for 循环的例子:

for i in range(3):
    for j in range(2):
        print(f"i: {i}, j: {j}")

输出:

i: 0, j: 0
i: 0, j: 1
i: 1, j: 0
i: 1, j: 1
i: 2, j: 0
i: 2, j: 1

内层循环在外层循环的每次迭代中完成其所有迭代。

除了 break,Python 还提供了 continue 语句,它会跳过当前迭代的剩余部分并进入下一次迭代:

for num in range(10):
    if num % 2 == 0:
        continue
    print(num)

输出:

1
3
5
7
9

此循环仅打印奇数,跳过偶数。

理解此上下文中的取模运算符:在这里,num % 2 == 0 检查数字是否为偶数(除以 2 时余数为 0)。当此条件为 True(数字为偶数)时,continue 语句会跳过 print(num) 行并进入下一次迭代。这意味着只有奇数(num % 2 等于 1 而不是 0)才会执行 print(num) 语句。% 运算符计算余数,== 检查相等性,0 表示零余数(意味着该数字可被 2 整除)。

你可以将 else 子句与循环一起使用。如果循环正常完成(没有遇到 break),则执行 else 块:

for num in range(2, 10):
    for i in range(2, num):
        if num % i == 0:
            print(f"{num} is not prime")
            break
    else:
        print(f"{num} is prime")

输出:

2 is prime
3 is prime
4 is not prime
5 is prime
6 is not prime
7 is prime
8 is not prime
9 is not prime

此嵌套循环用于检查素数。当数字是素数时,执行 else 子句。

综合运用

在最后一步中,你将创建一个简单的程序,利用你在本实验中学到的控制结构。

通过输入 exit() 或按 Ctrl+D 退出 Python 解释器。

在 LabEx VM 环境中打开 WebIDE。

WebIDE LabEx VM 界面

使用以下命令在 ~/project 目录中创建一个名为 number_analyzer.py 的新文件:

touch ~/project/number_analyzer.py

在 WebIDE 编辑器中打开新创建的文件。

将以下代码复制并粘贴到文件中:

def analyze_numbers():
    numbers = []
    while True:
        user_input = input("Enter a number (or 'done' to finish): ")
        if user_input.lower() == 'done':
            break
        try:
            number = float(user_input)
            numbers.append(number)
        except ValueError:
            print("Invalid input. Please enter a number or 'done'.")

    if not numbers:
        print("No numbers entered.")
        return

    total = sum(numbers)
    average = total / len(numbers)
    maximum = max(numbers)
    minimum = min(numbers)

    print(f"\nAnalysis of {len(numbers)} numbers:")
    print(f"Total: {total}")
    print(f"Average: {average:.2f}")
    print(f"Maximum: {maximum}")
    print(f"Minimum: {minimum}")

    print("\nNumber distribution:")
    for num in numbers:
        if num < average:
            print(f"{num} is below average")
        elif num > average:
            print(f"{num} is above average")
        else:
            print(f"{num} is equal to average")

if __name__ == "__main__":
    analyze_numbers()

该程序演示了 while 循环、for 循环、条件语句和异常处理的使用。

保存文件(已启用自动保存),并在终端中使用以下命令运行它:

python ~/project/number_analyzer.py

在提示时输入一些数字,然后输入 'done' 以查看分析结果。你应该会看到类似以下的输出:

Enter a number (or 'done' to finish): 10
Enter a number (or 'done' to finish): 20
Enter a number (or 'done' to finish): 30
Enter a number (or 'done' to finish): 40
Enter a number (or 'done' to finish): done

Analysis of 4 numbers:
Total: 100.0
Average: 25.00
Maximum: 40.0
Minimum: 10.0

Number distribution:
10.0 is below average
20.0 is below average
30.0 is above average
40.0 is above average

如果你在输入数据时出错,可以再次运行该程序。这是一个练习多次运行 Python 脚本并使用不同输入的好机会。

总结

在本实验中,你探索了 Python 的基本控制结构:条件语句 (if-else)、for 循环和 while 循环。你学习了如何控制程序的流程、根据条件做出决策以及遍历数据序列。你还练习了使用嵌套循环和循环控制语句(如 break 和 continue)。

这些控制结构构成了 Python 编程的基石,使你能够创建更复杂、更动态的程序。你已经看到了如何将这些概念结合起来,创建一个有用的程序来分析用户输入的一组数字。

随着你继续 Python 之旅,你会发现这些控制结构在解决各种编程问题时至关重要。记得定期练习这些概念,尝试不同的组合和用例,以巩固你的理解。