python学习—循环语句-控制流

系列文章目录

python学习—合并TXT文本文件
python学习—统计嵌套文件夹内的文件数量并建立索引表格
python学习—查找指定目录下的指定类型文件
python学习—年会不能停,游戏抽签抽奖



功能说明

在Python中,循环语句是程序控制流程的重要组成部分,它们允许代码重复执行特定的任务,直到满足特定条件为止。

Python中的控制流语句包括:

  • if语句:是条件控制的基础,用于根据条件执行不同代码块,用于检查一个或多个条件是否为True,如果条件为True则执行相应的代码块。
    可以与else子句结合,当if条件为假时执行else后的代码块;
    可以使用elif(else if的缩写)添加额外的条件检查;
    任何非零或非空的值都被视为True,零、空字符串、空列表、空元组、空字典被视为False;
    比较运算符:==:等于、 !=:不等于、 <:小于、>:大于、<=:小于或等于、 >=:大于或等于;
    逻辑运算符:and:如果两边的条件都为真,结果才为真;or:如果两边的条件至少有一个为真,结果就为真。
    短路逻辑:and操作符:如果左侧条件为假,不会评估右侧条件;or操作符:如果左侧条件为真,不会评估右侧条件;
    可以在一个if语句内嵌套另一个if或elif语句,以处理更复杂的逻辑。

  • for循环:用于迭代一个序列或其他可迭代对象中的元素,并执行相应的代码块。
    常见形式:for item in sequence:,其中item是序列中的元素,sequence是要遍历的对象;
    可以与enumerate()函数一起使用,以便同时访问索引和值;
    可以与else子句结合,当循环正常完成(即没有break语句中断)后执行else后的代码块。

  • while循环:在条件为True时,重复执行代码块,直到条件变为False;
    可以与break语句配合,当满足某个条件时提前退出循环;
    可以使用continue语句跳过当前循环迭代的剩余部分,直接进入下一次迭代;
    可以与else子句结合,当循环自然结束(即条件变为False)后执行else后的代码块。

本文章目标为:

  • 1 掌握 3种循环;
  • 2 掌握控制流 。

知识点:终止死循环
涉及到循环,控制流,代码很容易出现死循环,在IDE中终止死循环的方法,
以pycharm为例,在终端窗口,输入ctrl + c 终止死循环。

1 if语句

在Python中,if 语句是实现条件逻辑的基础构造。Python没有switch语句,因此多分支条件主要通过if-elif-else结构来实现。

(1) 最简单的if语句。

age = 25
if age >= 18:
    print("你已经是成年人了。")

运行结果:
你已经是成年人了。

(2) if …elif… else…语句,在条件不满足时执行另一段代码,或者可以与多个 elif (else if 的缩写)结合。

   if 条件表达式:
     	 条件为真时执行的代码块
   elif 条件表达式:
        如果上一个条件为假,且此条件为真时执行的代码块  
   else:
        所有条件都不满足时执行的代码块
age = int(input("请输入您的年龄:"))
if age < 18:
    print("您是未成年人。")
elif age < 60:
    print("您是成年人。")
else:
    print("您是老年人。")

运行结果:
请输入您的年龄:>? 40
您是成年人。

注意:

  1. if、elif、else后面的冒号 : 是必需的,它标志着接下来的代码块。

  2. 代码块必须正确缩进,Python使用缩进来区分代码块的范围,通常使用四个空格作为一级缩进。

  3. 条件表达式的结果会被评估为布尔值,即True或False。如果表达式的结果为True,对应的代码块将被执行。

2 for循环

在Python中,for循环是一种迭代结构,用于遍历序列(如列表、元组、字符串)或其他可迭代对象中的元素。

(1)最简单的for应用:range()里面的值是终止值,不含该值。

range()函数可以生成一个数字序列,range(n)生成从0到n-1的整数序列

print('My name is')
for i in range(5):
    print('Jimmy Five Times (' + str(i) + ')')
print()

运行结果:
My name is
Jimmy Five Times (0)
Jimmy Five Times (1)
Jimmy Five Times (2)
Jimmy Five Times (3)
Jimmy Five Times (4)

从 0 加到 5

total =0
for num in range(5+1):
    total =total +num
print(total)
print()

运行结果:
15

(2) for循环,起始值,终止值,range(a,b),左含右不含

for i in range(12,16):
    print(i)
print()

运行结果:
12
13
14
15

(3) 迭代步长 参数,range(a,b,c),c是每次迭代的增加值

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

运行结果:
0
2
4
6
8

(4) 反向迭代 步长为 负数

for i in range(5,-1,-1):
    print(i)
print()

运行结果:
5
4
3
2
1
0

(5) 遍历 字典的键.

dictionary = {'name': 'Alice', 'age': 30, 'city': 'New York'}
for key in dictionary:
	print(key)

运行结果:
name
age
city

(6) 遍历 字典的键值对.

dictionary = {'name': 'Alice', 'age': 30, 'city': 'New York'}
for key, value in dictionary.items():
	print(f"{key}: {value}")

运行结果:
name: Alice
age: 30
city: New York

(7) 遍历 集合.

numbers = {1, 2, 3, 4, 5}
for num in numbers:
	print(num)

运行结果:
1
2
3
4
5

(8) for循环可以与else子句结合

当循环正常完成(即没有break语句中断)后执行else后的代码块。

for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print("Loop completed normally.")

break表示中断,即代码终止运行,跳出循环结束。因为break语句在 i == 3 时触发,所以else块不会执行。
运行结果:
0
1
2
如果把break 换成 continue,continue表示 继续运行后续的代码。else块将会执行.

for i in range(5):
    if i == 3:
        continue
    print(i)
else:
    print("Loop completed normally.")

运行结果:
0
1
2
4
Loop completed normally.

(9) 使用enumerate()函数同时获取序列的索引和值

enumerate()函数 是Python内置的一个非常有用的功能,它可以在遍历序列时同时获取元素的索引和值。

fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry']

# 使用enumerate()遍历列表
for index, fruit in enumerate(fruits):
    print(f"索引: {index}, 品种: {fruit}")

enumerate(fruits) 返回一个枚举对象,其中每个元素都是一个包含索引和对应值的元组 (index, value)。
for循环会依次解包这些元组,index 变量接收索引,fruit 变量接收对应的值。
这样,就可以在循环中同时访问到 序列的索引 和 值,而不需要自己维护一个计数器。

运行结果:
索引: 0, 品种: apple
索引: 1, 品种: banana
索引: 2, 品种: cherry
索引: 3, 品种: date
索引: 4, 品种: elderberry

3 while循环

在Python中,while循环用于在满足特定条件时重复执行一段代码。while循环会一直运行,直到指定的条件变为False。

while 条件:
# 当条件为真时执行的代码块    
# 可选的 continue 语句
# 如果执行,会跳过当前循环体剩余的部分并继续下一轮循环    
# 可选的 break 语句
# 如果执行,会退出整个循环,不再检查条件...

(1) 最简单的 while语句

条件为真,一直执行下去,就死循环了。

while True:
	print('Hello world.')

运行结果:
Hello world.
Hello world.
Hello world.

在终端窗口 输入 CTRL+ c,结束死循环。

(2) 正常的while语句,条件不满足时,跳出循环。

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

运行结果:
0
1
2
3
4

(3) 读取用户输入直到满足特定条件

guess = None
while guess != "quit":
    guess = input("请输入一个数字(输入'quit'退出):")
    if guess.isdigit():
        # 处理数字输入
        pass
    elif guess.lower() == "quit":
        break
    else:
        print("无效输入,请重新尝试。")
print("游戏结束")

运行结果:
请输入一个数字(输入’quit’退出):>? 10
请输入一个数字(输入’quit’退出):>? 100
请输入一个数字(输入’quit’退出):>? quit
游戏结束

(4) 使用while-else结构

numbers = [-5, 0, -3, 2, 9, -1, 7]
found_positive = False
index = 0

while index < len(numbers):
    if numbers[index] > 0:
        found_positive = True
        print(f"找到的第一个正整数是:{numbers[index]}")
        break
    else:
        index += 1
else:
    if not found_positive:
        print("列表中没有正整数")

while 循环检查 index 是否小于列表长度,如果是,则检查当前元素是否大于0。
如果找到一个正整数,found_positive 设置为 True,打印该正整数并使用 break 退出循环。
如果遍历完整个列表都没有找到正整数,else 子句会执行,打印一条消息表示列表中没有正整数。

运行结果:
找到的第一个正整数是:2

4 综合练习

使用if语句、for循环和while循环的代码示例 ,找到某个数值区间内的 第一个 质数。

# 用户输入
user_input = input("请输入一个起始数字和一个上限数值(用逗号分隔):")
start, limit = map(int, user_input.split(','))

# 验证输入
if start < 2 or limit < 2:
    print("起始数字和上限都应大于或等于2")
else:
    prime_candidate = start
    while prime_candidate <= limit:
        # 检查是否为质数
        for i in range(2, prime_candidate):
            if prime_candidate % i == 0:
                prime_candidate += 1  # 跳过非质数
                break
        else:
            print(f"找到的第一个质数是:{prime_candidate}")
            break  # 找到质数,退出循环
    else:
        print("在给定范围内没有找到质数")
  • 输入的起始数字和上限被读取并转换为整数。
  • 使用if语句验证输入的合法性。
  • 使用while循环遍历从 start 到 limit 的数字。
  • 在while循环内部,使用for循环检查当前数字是否为质数。
  • 如果当前数字不是质数,for循环结束后,prime_candidate 递增并继续下一个数字。
  • 如果当前数字是质数,else 子句与 for 循环配对,表示没有执行 break 语句跳出 for 循环 ,因此打印找到的质数并退出while循环。
  • 如果 while 循环结束后仍未找到质数,执行 else 子句,表示在给定范围内没有找到质数

运行结果:
请输入一个起始数字和一个上限数值(用逗号分隔):>? 10,1000
找到的第一个质数是:11

5 后记

在phthon编程中,避免无限循环,确保循环条件有改变的途径。
使用列表推导式(List Comprehensions)和生成器表达式(Generator Expressions)可以更高效地处理循环和创建新列表。
注意循环中的复杂度,避免不必要的嵌套循环,以提高代码效率。
理解并熟练运用这些循环语句是编写高效Python代码的关键。在实际编程中,根据问题的需求选择合适的循环类型,并结合控制语句来编写灵活的代码 。

  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

da-peng-song

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值