一、引言

1、对控制结构的简要介绍

控制结构是编程语言中用于控制程序执行流程的语句。它们分为两大类:

  1. 条件语句

    • if语句:根据条件执行代码块。

    • elif语句:如果之前的条件不成立,则尝试此条件。

    • else语句:如果所有条件都不满足,则执行此代码块。

  2. 循环语句

    • for循环:遍历序列中的每个元素。

    • while循环:只要条件为真,就重复执行代码块。

2、控制结构在编程中的重要性

控制结构在编程中的重要性在于它们能够使程序根据不同的条件或重复执行特定的代码块。这使得程序能够做出决策、执行重复任务以及管理复杂的流程,从而实现各种功能和算法。

  1. 决策能力:通过条件语句(如if、elif、else),程序能够根据不同的条件执行不同的代码路径,从而实现决策功能。

  2. 重复执行:循环语句(如for、while)允许程序重复执行代码块,这对于处理重复性任务、遍历数据结构等场景至关重要。

  3. 流程管理:控制结构能够有效地管理程序的执行流程,使得程序能够按照逻辑顺序执行,提高代码的可读性和可维护性。

  4. 算法实现:控制结构是实现算法的基础,例如排序、搜索、动态规划等算法都离不开条件语句和循环语句的支持。

  5. 灵活性和扩展性:合理使用控制结构可以使程序更加灵活和可扩展,能够适应不同的输入和场景,提高程序的通用性。

二、条件语句

1、if语句的基本使用

1.1 单条件if语句:

if condition:
    # 如果条件为真,则执行这里的代码
    print("条件为真,执行此代码块。")

1.2 多条件if语句

if condition1:
    # 如果条件1为真,则执行这里的代码
    print("条件1为真,执行此代码块。")
elif condition2:
    # 如果条件1不为真,但条件2为真,则执行这里的代码
    print("条件1不为真,条件2为真,执行此代码块。")
else:
    # 如果条件1和条件2都不为真,则执行这里的代码
    print("条件1和条件2都不为真,执行此代码块。")

1.3 if语句中的代码块:

  • if语句后的冒号(:)标志着代码块的开始。

  • 代码块应该缩进(通常是4个空格或1个制表符)。

  • 正确的缩进是Python中控制结构的关键。

1.4 注意事项

  • 条件表达式应该用括号包围,特别是在多个条件的情况下。

  • 不要忘记在if语句后添加冒号。

  • 确保代码块的缩进正确。

1.5 示例

age = 20
if age >= 18:
    print("您已成年。")
else:
    print("您还未成年。")

在这个示例中,如果age变量大于或等于18,则打印出“您已成年。”;否则,打印出“您还未成年。”。

记住,if语句的基本目的是根据条件评估的结果来决定是否执行特定的代码块。

2、else子句的使用

在Python中,else子句通常与if语句一起使用,用于提供当if条件不满足时的备选执行路径。以下是else子句的基本使用方法:

2.1 简单if语句后的else子句:

if condition:
    # 如果条件为真,则执行这里的代码
else:
    # 如果条件不为真,则执行这里的代码
    print("条件不为真,执行此代码块。")

2.2 elif子句与else子句:

if condition1:
    # 如果条件1为真,则执行这里的代码
elif condition2:
    # 如果条件1不为真,但条件2为真,则执行这里的代码
else:
    # 如果条件1和条件2都不为真,则执行这里的代码
    print("条件1和条件2都不为真,执行此代码块。")

2.3 else子句与forwhile循环:

for item in collection:
    # 循环体代码
else:
    # 当循环正常完成时执行,即循环体未被`break`语句打断时执行
    print("循环体已全部执行完毕。")

在使用else子句时,需要注意以下几点:

  • else子句必须与if语句一起使用,并且位于if语句之后。

  • else子句中的代码块应该有相同的缩进级别,以保持代码结构清晰。

  • elif子句中,每个elif和对应的else都必须有相同的缩进级别。

  • forwhile循环中,else子句在循环正常结束时执行,即循环体未被break语句打断时执行。

例如:

x = 10
if x > 0:
    print("x 是正数")
else:
    print("x 不是正数")

在这个例子中,如果x大于0,则打印出"x 是正数";否则,打印出"x 不是正数"。

3、elif子句的使用

在Python中,elif(else if的简写)子句用于在if语句的条件不满足时提供其他的条件检查。elif子句通常用于实现多条件分支逻辑。以下是elif子句的基本使用方法:

3.1 if-elif-else结构:

if condition1:
    # 如果条件1为真,则执行这里的代码
elif condition2:
    # 如果条件1不为真,但条件2为真,则执行这里的代码
else:
    # 如果条件1和条件2都不为真,则执行这里的代码
    print("条件1和条件2都不为真,执行此代码块。")

3.2 elif子句的顺序:

  • elif子句应该按照从最可能到最不可能的顺序排列。

  • 这样可以让程序更快地找到满足条件的elif子句并执行。

3.3 注意事项

  • 每个elif和对应的else都必须有相同的缩进级别。

  • 如果第一个if条件不满足,Python会检查第一个elif条件,如果满足则执行对应的代码块。

  • 如果所有的ifelif条件都不满足,则执行else子句(如果有的话)。

3.4 示例

grade = 'B'
if grade == 'A':
    print("优秀!")
elif grade == 'B':
    print("良好。")
elif grade == 'C':
    print("及格。")
else:
    print("加油,再努力!")

在这个示例中,根据grade变量的值,程序会打印出不同的消息。如果grade是’A’,则打印"优秀!“;如果是’B’,则打印"良好。”;如果是’C’,则打印"及格。“;如果都不是,则打印"加油,再努力!”。

elif子句是实现复杂条件判断的常用方法,它们使得代码更加清晰和易于理解。

4、嵌套if语句

嵌套if语句是指在一个if语句块内部使用另一个if语句。嵌套if语句允许你根据多个条件执行不同的代码路径。以下是嵌套if语句的基本用法:

4.1 嵌套if语句:

x = 10
if x > 0:
    print("x 是正数")
    if x < 100:
        print("x 是一个小于100的正数")
else:
    print("x 不是正数")

在这个例子中,首先检查x是否大于0。如果是,则进一步检查x是否小于100。

4.2 注意事项

  • 确保内部if语句的缩进级别与外部if语句相同。

  • 每个嵌套的if语句都必须有明确的条件,以避免无限循环。

4.3 示例

age = 21
if age >= 18:
    print("您已成年。")
    if age >= 21:
        print("您已超过法定饮酒年龄。")
    else:
        print("您还未达到法定饮酒年龄。")
else:
    print("您还未成年。")

在这个例子中,首先检查age是否大于或等于18,如果满足,则进一步检查是否大于或等于21。

嵌套if语句在处理复杂逻辑时非常有用,但过度使用或错误使用可能导致代码难以理解和维护。因此,在编写嵌套if语句时,请确保逻辑清晰,并尽可能保持简洁。

三、逻辑运算符

1、andornot运算符的使用

1.1 and 运算符

  • 如果两个条件都为真,则 and 运算符的结果为真。

  • 否则,结果为假。

condition1 = True
condition2 = False
result = condition1 and condition2
print(result)  # 输出:False

1.2 or 运算符

  • 如果两个条件中至少有一个为真,则 or 运算符的结果为真。

  • 否则,结果为假。

condition1 = True
condition2 = False
result = condition1 or condition2
print(result)  # 输出:True

1.3 not 运算符

  • 对单个条件取反。

  • 如果条件为真,则 not 运算符的结果为假。

  • 否则,结果为真。

condition = True
result = not condition
print(result)  # 输出:False

1.4 注意事项

  • 逻辑运算符两侧的操作数通常为布尔值。

  • 逻辑运算符的运算顺序为从左到右。

  • 逻辑运算符可以用于任何布尔表达式。

1.5 示例

# 组合使用 and、or 和 not 运算符
x = 10
y = 20

result = (x > 5) and (y > 10)
print(result)  # 输出:False

result = (x > 5) or (y > 10)
print(result)  # 输出:True

result = not (x == y)
print(result)  # 输出:True

这些运算符在编写条件语句时非常有用,它们可以帮助你构建复杂的逻辑判断。正确使用逻辑运算符可以提高代码的清晰度和可读性。

2、在条件语句中的应用

逻辑运算符在条件语句中的应用非常广泛,它们允许你组合多个条件以进行更复杂的决策。在Python中,主要的逻辑运算符包括andornot

2.1 and运算符

  • and运算符用于检查两个或多个条件是否同时为真。

  • if语句中,你可以使用and来组合多个条件。

x = 10
y = 20

if x > 5 and y > 10:
    print("x 和 y 都大于它们的阈值。")

在这个例子中,只有当x大于5且y大于10时,代码块才会被执行。

2.2 or运算符

  • or运算符用于检查两个或多个条件中是否至少有一个为真。

  • if语句中,你可以使用or来提供一个备选条件。

x = 10
y = 5

if x > 5 or y > 10:
    print("x 或 y 至少有一个大于它们的阈值。")

在这个例子中,x大于5或者y大于10,代码块都会被执行。

2.3 not运算符

  • not运算符用于取反单个条件。

  • if语句中,你可以使用not来反转一个条件的逻辑。

x = 5

if not (x > 10):
    print("x 不大于10。")

在这个例子中,not运算符用于检查x是否不大于10,如果x不大于10,代码块会被执行。

2.4 注意事项

  • 使用逻辑运算符时,要注意保持代码的可读性,适当使用空格和换行。

  • 逻辑运算符两侧的操作数应该有相同的数据类型,通常为布尔值。

  • 在组合使用多个逻辑运算符时,要注意运算的优先级,and的优先级高于or

通过合理使用逻辑运算符,可以使得条件语句更加精确和强大,能够处理更加复杂的逻辑判断。

四、循环结构

1、 for循环的基本使用

在Python中,for循环是一种遍历序列(如列表、元组、字符串)或任何可迭代对象的迭代语句。以下是for循环的基本使用方法:

1.1 基本for循环

for item in iterable:
    # 遍历iterable中的每个item
    print(item)

1.2 for循环中的迭代变量

  • 迭代变量通常命名为item,但你可以使用任何有效的变量名。

  • 每次迭代时,item都会被赋予iterable中的下一个元素。

1.3 for循环中的代码块

  • 代码块应该缩进(通常是4个空格或1个制表符)。

  • 正确的缩进是Python中控制结构的关键。

1.4 示例

# 遍历列表中的每个元素
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

在这个示例中,for循环会遍历fruits列表中的每个元素,并打印出来。

1.5 for循环中的else子句

  • for循环还可以包含一个可选的else子句,它在外部循环的每次迭代都没有被break语句中断时执行。

  • else子句通常用于执行清理工作或当循环正常完成时的一些代码。

for item in iterable:
    # 循环体代码
else:
    # 当循环正常完成时执行
    print("循环体已全部执行完毕。")

for循环是Python中非常强大的一个特性,它广泛用于数据处理、文件操作等场景。通过for循环,你可以轻松地遍历和操作序列中的每个元素。

2、 while循环的基本使用

在Python中,while循环是一种基于特定条件重复执行代码块的循环结构。以下是while循环的基本使用方法:

基本while循环

while condition:
    # 当condition为真时,重复执行这里的代码
    print("条件为真,继续循环。")

循环的基本结构

  • while关键字标志着循环的开始。

  • 条件表达式应该用括号包围。

  • 代码块应该缩进(通常是4个空格或1个制表符)。

条件判断

  • 循环将继续进行,直到条件不再为真。

  • 条件通常是一个布尔表达式,它决定了循环是否继续执行。

示例

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

在这个示例中,while循环会重复执行,直到count变量的值达到5。

注意事项

  • 避免无限循环,确保条件最终会变为假。

  • 正确地缩进代码块,保持代码的可读性。

while循环是实现重复任务和持续检查条件的重要工具。它常用于处理需要多次迭代的情况,直到满足某个条件为止。正确使用while循环可以提高程序的效率和可维护性。

五、循环控制语句

1、break语句的使用

在Python中,break语句用于立即退出当前所在的循环结构,无论是for循环还是while循环。以下是break语句的基本使用方法:

for循环中使用break

for item in iterable:
    if item == "special":
        break  # 退出for循环
    print(item)

在这个例子中,如果循环中的item等于"special",break语句将导致循环立即终止。

while循环中使用break

count = 0
while count < 5:
    print(count)
    count += 1
    if count == 3:
        break  # 退出while循环

在这个例子中,当count等于3时,break语句将导致while循环立即终止。

注意事项

  • break语句只能用于它所在的循环层次。

  • 一旦执行了break语句,循环结构将立即结束,循环体中剩余的代码将不再执行。

  • 使用break时,应该确保循环最终会结束,以避免产生无限循环。

break语句是控制循环执行的关键方式之一,它允许你在满足特定条件时提前退出循环,从而避免不必要的迭代。正确使用break可以使代码更加高效和灵活。

2、 continue语句的使用

在Python中,continue语句用于跳过当前循环的剩余代码,并开始下一次迭代。当continue语句执行时,当前的循环迭代会立即终止,程序控制流会跳回到循环的开始,检查循环条件,如果条件为真,则开始下一次迭代。

以下是continue语句的基本使用方法:

for循环中使用continue

for item in iterable:
    if item == "special":
        continue  # 跳过当前迭代,继续下一次迭代
    print(item)

在这个例子中,如果循环中的item等于"special",continue语句将导致当前迭代立即终止,并开始下一次迭代。

while循环中使用continue

count = 0
while count < 5:
    count += 1
    if count == 3:
        continue  # 跳过当前迭代,继续下一次迭代
    print(count)

在这个例子中,当count等于3时,continue语句将导致当前迭代立即终止,并开始下一次迭代。

注意事项

  • continue语句只能用于它所在的循环层次。

  • 使用continue时,应该确保它不会导致循环提前结束,除非这是你想要的效果。

  • continue语句通常用于跳过不需要的迭代,或者在循环中执行特定条件下的操作。

continue语句是控制循环执行的另一种方式,它允许你在满足特定条件时跳过当前迭代,从而提高循环的效率和准确性。正确使用continue可以使代码更加灵活和易于维护。

3、pass语句的使用

在Python中,pass语句是一个空操作,它不执行任何操作,通常用作占位符或保持代码结构的完整性。当你的代码需要一个语句,但你不希望它执行任何实际操作时,可以使用pass

以下是pass语句的基本使用方法:

基本pass语句:

pass  # 这是一个空操作,不执行任何操作

在函数定义中使用pass

def example_function():
    pass  # 函数中使用pass作为占位符

在这个例子中,example_function是一个空函数,它不包含任何实际的代码。

在类定义中使用pass

class ExampleClass:
    pass  # 类中使用pass作为占位符

在这个例子中,ExampleClass是一个空类,它没有定义任何属性和方法。

注意事项

  • pass语句通常用于保持代码结构的完整性,特别是在需要一个语句的位置,但又不希望执行任何操作时。

  • 在函数或类中使用pass作为占位符,可以确保你的代码遵循Python的语法规则,即使函数或类暂时没有实现任何功能。

pass语句虽然是一个空操作,但在某些情况下,它是必要的,以保持代码的清晰和一致性。正确使用pass可以使代码更加整洁,并且有助于未来的代码维护和扩展。

六、练习题和示例

条件语句和循环结构的练习题

打印三角形

使用for循环打印一个直角三角形。

for i in range(1, 6):
    for j in range(1, i + 1):
        print("*", end=" ")
    print()

猜数字游戏

编写一个猜数字游戏,程序随机生成一个1到100之间的整数,玩家有10次机会猜出这个数字。

import random

secret_number = random.randint(1, 100)
for attempt in range(10):
    guess = int(input("请猜一个1到100之间的整数:"))
    if guess < secret_number:
        print("太小了!")
    elif guess > secret_number:
        print("太大了!")
    else:
        print(f"恭喜你,猜对了!秘密数字是 {secret_number}。")
        break
    if attempt == 9:
        print("你没有足够的尝试次数来猜出数字。")

实际问题的解决示例

问题1:计算个人所得税

假设个人所得税的计算方式如下:

  • 如果月收入小于等于5000元,则无需缴纳个人所得税。

  • 如果月收入在5000元到15000元之间,则按5%的税率缴纳。

  • 如果月收入在15000元到30000元之间,则按10%的税率缴纳。

  • 如果月收入超过30000元,则按20%的税率缴纳。

income = float(input("请输入您的月收入:"))

if income <= 5000:
    tax = 0
elif income <= 15000:
    tax = income * 0.05
elif income <= 30000:
    tax = income * 0.10
else:
    tax = income * 0.20

print(f"您的个人所得税为:{tax:.2f}元。")

问题2:计算1到100之间所有偶数的和

sum_even = 0
for i in range(1, 101):
    if i % 2 == 0:
        sum_even += i
print(f"1到100之间所有偶数的和是:{sum_even}")