目录
1、顺序结构
2、选择结构
3、多个条件的链接
4、模式匹配
5、循环结构
1、遍历for循环
1. 遍历列表
2. 遍历字符串
3. 遍历范围
4. 遍历字典
5. 遍历集合
2、无限while循环
3、break在循环中的使用
4、continue在循环中的使用
5、空语句pass
6、使用while循环模拟用户登录
7、嵌套循环打印出长方形、三角形、棱形和空心棱形
打印长方形:
打印三角形:
打印棱形:
打印空心棱形:
在Python中,顺序结构是一种基本的程序执行结构,它按照代码的书写顺序一步一步执行。下面是一个简单的Python代码示例,展示了顺序结构的基本原理:
# 获取用户输入的数值 a
a = float(input("Enter a number: "))
# 获取用户输入的数值 b
b = float(input("Enter another number: "))
# 计算 a + b 的结果,得到 sum
sum_result = a + b
# 输出 sum 的值
print("The sum is:", sum_result)
在这个例子中,代码依次执行以下步骤:
input
函数获取用户输入的数值 a。input
函数获取用户输入的数值 b。sum_result
中。print
函数输出 sum_result
的值。这就是典型的顺序结构,每个语句按照它们在代码中的出现顺序被依次执行。在Python中,没有显式的结束语句,而是通过缩进来表示代码块。缩进的级别决定了代码的嵌套结构。
选择结构是编程中常见的控制结构之一,它允许根据某个条件选择性地执行不同的代码块。在Python中,最常见的选择结构是使用 if
语句。
以下是一个简单的Python代码示例,展示了选择结构的使用:
# 获取用户输入的数值
number = int(input("Enter a number: "))
# 判断数值的正负性并输出对应的信息
if number > 0:
print("The number is positive.")
elif number < 0:
print("The number is negative.")
else:
print("The number is zero.")
在这个例子中,if
语句用于根据用户输入的数值执行不同的代码块:
number
大于 0,则执行第一个 print
语句,输出 "The number is positive."。number
小于 0,则执行 elif
(else if)语句下的 print
语句,输出 "The number is negative."。else
语句下的 print
语句,输出 "The number is zero."。这种选择结构允许程序根据不同的条件执行不同的代码,从而使程序更加灵活和适应不同的情况。
除了 if
、elif
、else
的基本结构,Python还支持嵌套的选择结构,可以在一个条件语句内部包含另一个条件语句,形成更复杂的逻辑判断。
嵌套 if
是指在一个 if
语句的代码块内部包含另一个 if
语句。这种结构允许在某个条件成立时进一步进行更详细的条件判断。以下是一个简单的例子:
# 获取用户输入的数值
number = int(input("Enter a number: "))
# 判断数值的正负性和奇偶性并输出对应的信息
if number > 0:
print("The number is positive.")
# 如果数值为正,进一步判断奇偶性
if number % 2 == 0:
print("The positive number is even.")
else:
print("The positive number is odd.")
elif number < 0:
print("The number is negative.")
else:
print("The number is zero.")
在这个例子中,如果用户输入的数值为正数,首先输出 "The number is positive.",然后在嵌套的 if
语句中判断该正数是奇数还是偶数,并输出相应的信息。
嵌套 if
结构的缩进表示,内部的 if
语句相对于外部的 if
语句是缩进的。在Python中,缩进是非常重要的,它决定了代码块的范围。请确保使用一致的缩进风格,以避免引起语法错误。
尽管嵌套 if
结构在某些情况下可以提供更复杂的逻辑判断,但在设计时要注意保持代码的可读性,避免过度嵌套,以免使代码难以理解和维护。
在Python中,可以使用逻辑运算符将多个条件链接在一起,以构建更复杂的条件判断。主要的逻辑运算符包括 and
、or
和 not
。
and 运算符: 如果两个条件都为 True
,整个表达式才为 True
。
# 示例:同时判断两个条件
if condition1 and condition2:
# 执行某些代码
or 运算符: 如果两个条件中至少有一个为 True
,整个表达式就为 True
。
# 示例:判断两个条件中至少有一个成立
if condition1 or condition2:
# 执行某些代码
not 运算符: 用于取反,将 True
变为 False
,将 False
变为 True
。
# 示例:判断条件的相反情况
if not condition:
# 执行某些代码
以下是一个综合运用多个条件链接的例子:
# 获取用户输入的年龄和性别
age = int(input("Enter your age: "))
gender = input("Enter your gender (M/F): ")
# 判断年龄和性别是否满足某个条件
if age >= 18 and gender == 'M':
print("You are an adult male.")
elif age < 18 and gender == 'F':
print("You are a female minor.")
else:
print("You do not meet the specified conditions.")
在这个例子中,使用了 and
和 or
运算符来组合多个条件,以便更灵活地判断不同情况。这种方式使得可以根据用户的年龄和性别输出不同的信息。
在Python中,模式匹配是指使用 match
语句进行结构化的条件匹配。Python 3.10 版本引入了 match
语句,它提供了一种更直观、更强大的方式来进行条件匹配。与传统的 if
、elif
、else
结构相比,match
语句更适用于处理多个可能的模式。
以下是一个简单的 match
语句的例子,使用 match
语句匹配不同的数据类型:
# 定义不同类型的数据
data = [1, "hello", 3.14, True, None]
# 使用 match 语句进行模式匹配
for item in data:
match item:
case int:
print(f"Found an integer: {item}")
case str:
print(f"Found a string: {item}")
case float:
print(f"Found a float: {item}")
case bool:
print(f"Found a boolean: {item}")
case None:
print("Found None")
case _:
print("Found an item of unknown type")
在这个例子中,我们遍历一个包含不同数据类型的列表,使用 match
语句根据数据的类型进行匹配。每个 case
表达式都匹配特定的数据类型,最后的 case _:
是一个通配符,用于匹配任何未被前面模式匹配的情况。
循环结构在编程中用于重复执行一段代码块,直到满足某个条件为止。在Python中,有两种常见的循环结构:for
循环和 while
循环。
当使用 for
循环遍历时,你可以对可迭代对象中的每个元素执行一段代码。下面是一些示例,演示如何使用 for
循环进行遍历:
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print(fruit)
这个例子中,for
循环遍历列表 fruits
中的每个水果,并打印出水果的名称。
message = "Hello, World!"
for char in message:
print(char)
for i in range(5):
print(i)
在这个例子中,for
循环遍历了范围 range(5)
中的每个整数,打印出整数的值。范围可以根据需要进行调整。
person = {"name": "John", "age": 30, "city": "New York"}
for key, value in person.items():
print(f"{key}: {value}")
在这个例子中,for
循环遍历字典 person
中的每一对键值对,并打印出键和对应的值。
unique_numbers = {1, 2, 3, 4, 5}
for num in unique_numbers:
print(num)
在这个例子中,for
循环遍历集合 unique_numbers
中的每个唯一的数字,并打印出数字。
无限循环是一种不会自动停止的循环,通常需要通过某种条件手动终止。在 Python 中,你可以使用 while True
来创建一个无限循环。以下是一个简单的示例:
while True:
print("This is an infinite loop")
# 在适当的条件下,使用 break 语句退出循环
user_input = input("Do you want to exit? (yes/no): ")
if user_input.lower() == "yes":
break
在这个例子中,while True
创建了一个无限循环,不断打印消息。然后,通过接收用户输入,当用户输入 "yes" 时,使用 break
语句退出循环,从而结束无限循环。
请注意,无限循环需要在适当的时候终止,否则程序将一直执行下去。在实际应用中,通常会根据某个条件来判断是否需要终止循环。
break
语句用于终止循环,即使循环条件仍然为真。它常用于循环中的某个条件满足时提前退出循环。以下是一个简单的例子:
# 使用 break 在循环中提前退出
for i in range(5):
if i == 3:
print("Breaking the loop at i =", i)
break
print(i)
在这个例子中,当 i
的值等于 3 时,break
被执行,导致提前退出循环。输出将是:
0
1
2
Breaking the loop at i = 3
在嵌套循环中,break
通常会终止最内层的循环。如果你希望退出外层循环,可以使用一些额外的技巧,如设置一个标志变量。以下是一个例子:
# 使用 break 终止外层循环
found = False
for i in range(3):
for j in range(3):
if i * j == 4:
found = True
break # 终止内层循环
if found:
break # 终止外层循环
print("Found at i, j =", i, j)
这里,当 i * j
的值等于 4 时,内层循环被终止,并通过设置 found
为 True
来终止外层循环。
break
的使用通常取决于具体的需求,但要注意过度使用它可能导致程序难以理解和维护。
continue
语句用于跳过循环体中余下的代码,直接进入下一次循环迭代。它通常用于在循环中某个条件满足时,跳过当前迭代,继续下一次迭代。以下是一个简单的例子:
# 使用 continue 跳过循环中的某次迭代
for i in range(5):
if i == 2:
print("Skipping iteration at i =", i)
continue
print(i)
在这个例子中,当 i
的值等于 2 时,continue
被执行,导致跳过当前迭代,直接进入下一次迭代。输出将是:
0
1
Skipping iteration at i = 2
3
4
continue
可以在任何类型的循环(for
循环或 while
循环)中使用。
以下是一个在嵌套循环中使用 continue
的例子:
# 使用 continue 跳过内层循环的某次迭代
for i in range(3):
for j in range(3):
if i == j:
print(f"Skipping iteration at i = {i}, j = {j}")
continue
print(i, j)
在这个例子中,当 i
等于 j
时,内层循环中的 continue
跳过当前的内层迭代,直接进行下一次内层迭代。
continue
的使用通常根据具体需求,它可以帮助简化代码逻辑。
pass
是一个空语句,它在 Python 中用于占位,不执行任何操作。它通常用于语法上需要语句但逻辑上不需要执行任何操作的情况。以下是一个简单的例子:
for i in range(5):
if i == 2:
print("Skipping iteration at i =", i)
pass # 什么也不做,只是占位
else:
print(i)
在这个例子中,当 i
的值等于 2 时,pass
被执行,什么也不做,只是为了满足语法要求。输出将是:
0
1
Skipping iteration at i = 2
3
4
pass
的使用场景包括:
请注意,过度使用 pass
可能导致代码难以理解。因此,在使用 pass
时应确保注释或其他方式明确说明为什么使用它。
当模拟用户登录时,通常会使用 while
循环等待用户提供正确的凭据。以下是一个简单的示例,演示如何使用 while
循环模拟用户登录:
# 预设正确的用户名和密码
correct_username = "user123"
correct_password = "pass456"
# 最大登录尝试次数
max_attempts = 3
# 计数器初始化
attempts = 0
# 使用 while 循环模拟用户登录
while attempts < max_attempts:
# 获取用户输入的用户名和密码
username_input = input("Enter your username: ")
password_input = input("Enter your password: ")
# 检查用户名和密码是否正确
if username_input == correct_username and password_input == correct_password:
print("Login successful!")
break # 登录成功,退出循环
else:
attempts += 1
remaining_attempts = max_attempts - attempts
print(f"Incorrect username or password. {remaining_attempts} attempts remaining.")
# 检查是否达到最大尝试次数
if attempts == max_attempts:
print(f"Too many unsuccessful login attempts. The system is now locked.")
在这个例子中,引入了 attempts
计数器来跟踪登录尝试次数。如果用户输入的用户名和密码不匹配,计数器会增加,并提示剩余尝试次数。当达到最大尝试次数时,系统将锁定。
def print_rectangle(rows, columns):
for i in range(rows):
for j in range(columns):
print("*", end=" ")
print()
# 调用函数打印长方形
print("Rectangle:")
print_rectangle(5, 7)
print("\n")
def print_triangle(rows):
for i in range(1, rows + 1):
for j in range(1, i + 1):
print("*", end=" ")
print()
# 调用函数打印三角形
print("Triangle:")
print_triangle(5)
print("\n")
def print_rhombus(rows):
for i in range(rows):
print(" " * (rows - i - 1) + "* " * (i + 1))
# 调用函数打印棱形
print("Rhombus:")
print_rhombus(5)
print("\n")
def print_hollow_rhombus(rows):
for i in range(rows):
if i == 0 or i == rows - 1:
print(" " * (rows - i - 1) + "* " * (i + 1))
else:
print(" " * (rows - i - 1) + "* " + " " * (2 * i - 1) + "*")
# 调用函数打印空心棱形
print("Hollow Rhombus:")
print_hollow_rhombus(5)
这些函数分别用于打印长方形、三角形、棱形和空心棱形的图案。你可以根据需要调整行数和列数。