介绍
在本实验中,你将探索 Python 的基本控制结构:条件语句和循环。在之前实验知识的基础上,你将学习如何使用 if-else 语句、for 循环和 while 循环来控制程序的流程。通过这些动手实践,你将加深对 Python 核心概念的理解,并为编写更复杂、更动态的程序做好准备。
在本实验中,你将探索 Python 的基本控制结构:条件语句和循环。在之前实验知识的基础上,你将学习如何使用 if-else 语句、for 循环和 while 循环来控制程序的流程。通过这些动手实践,你将加深对 Python 核心概念的理解,并为编写更复杂、更动态的程序做好准备。
在这一步中,你将学习 Python 中的条件语句,特别是 if-else 结构。
在终端中输入以下命令打开 Python 解释器:
python
你应该会看到 Python 提示符 (>>>),这表明你现在处于 Python 交互式 shell 中。

让我们从一个简单的 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" 循环,它用于在 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" 循环开始。在 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。

使用以下命令在 ~/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 之旅,你会发现这些控制结构在解决各种编程问题时至关重要。记得定期练习这些概念,尝试不同的组合和用例,以巩固你的理解。