一、while循环
为什么学习循环语句
循环在程序中同判断一样,也是广泛存在的,是非常多功能实现的基础:
1.1 while循环语法
while 条件表达式:
# 循环体
# 执行代码
- 这里,“条件表达式”是每次循环开始前都会评估的表达式。如果条件表达式的结果为 True,则执行“循环体”中的代码;如果为 False,则退出循环。
例子:
# 从1加到100总和
i = 1
num = 0
while i <= 100:
num += i
i += 1
print(num)
1.2 while循环的嵌套
语法:
while 外部条件:
# 外部循环体
while 内部条件:
# 内部循环体
补充知识:
-
在 Python 中,print 函数默认在每次调用后会添加一个换行符,导致每个 print 输出都从新的一行开始。如果你想让 print 函数在输出时不自动换行,可以通过设置 print 函数的 end 参数来实现。
-
end 参数默认值是 ‘\n’,即换行符。你可以将其设置为其他字符串,比如空字符串
" "
,以避免在输出后添加换行。
示例:
# 定义外层循环的控制变量
i = 1
while i <= 9:
# 定义内层循环的控制变量
j = 1
while j <= i:
print(f"{j}*{i} = {j*i}\t",end="")
j += 1
i += 1
print() # print空内容,就是输出一个换行
二、for循环
2.1 for循环基本语法
除了while循环语句外,python同样提供了for循环语句。
两者能完成的功能基本差不多,但仍有一些区别:
- while 循环的循环条件是自定义的,自行控制循环条件
- for循环是一种“轮询”机制,是对一批内容进行“逐个处理”
语法:
for 变量 in 待处理数据集:
# 执行的代码块
- 从待处理数据集中,逐个取出数据赋值给临时变量
例子:
name = "zhangsan"
for x in name:
# 将name的内容,逐个取出赋予x临时变量
print(x)
for循环注意点
- 同while循环不同,for循环是无法定义循环条件的。
- 只能从被处理的数据集中,依次取出内容处理。
- 所以理论上讲,python的for循环无法构建无限循环(被处理的数据集不可能无限大)
2.2 rang函数
在 Python 中,range() 函数是一个非常实用的内置函数,它可以生成一个不可变的数字序列。这个序列通常用于循环中,尤其是与 for 循环结合使用来重复执行一个固定次数的循环。range() 函数非常灵活,支持多种形式的参数,以适应不同的需求。
语法1:
range(num)
- 获得一个从0开始,到num结束的数字序列(不含num本身)
- 如range(5) 取得的数据是:[0, 1, 2, 3, 4]
语法2:
range(num1, num2)
- 获得一个从num1开始,到num2结束的数字序列(不含num2本身)
- 如,range(5, 10) 取得的数据是:[5, 6, 7, 8, 9]
语法3:
range(num1, num2, step)
- 获得一个从num1开始,到num2结束的数字序列(不含num2本身)
- 数字之间的步长,以step为准(step默认为1)
- 如,range(5, 10, 2)取得的数据是:[5, 7, 9]
2.3 continue和break
无论是while循环或者是for循环,都是重复性的执行特定操作。
在这个重复的过程中,会出现一些其他情况让我们不得不:
- 暂时跳过某次循环,直接进行下一次。
- 提前退出循环,不再继续
对于这种场景,python提供continue和break关键字,用来对循环进行临时跳过和直接结束。
2.3.1 continue
continue关键字用于:中断本次循环,直接进入下一次循环
continue可以用于:for循环和while循环,效果一致
2.3.2 continue 在嵌套循环中的应用
2.3.3 break
break关键字用于:直接结束循环
break可以用于:for循环和while循环,效果一致
2.3.4 break在嵌套循环中的应用
三、生成随机数
在 Python 中生成随机数可以通过使用标准库中的 random 模块来实现。这个模块提供了多种函数,可以用来生成随机数和执行其他随机相关的操作。以下是一些常用的方法来生成不同类型的随机数:
3.1 生成随机整数
random.randint(a, b)
:返回一个介于 a 和 b 之间的随机整数(包含 a 和 b)
import random
print(random.randint(1, 10)) # 输出 1 到 10 之间的一个随机整数
- `range(start, stop, step)``:从指定范围内,按指定基数递增的集合中获取一个随机数。
import random
print(random.randrange(0, 101, 5)) # 输出 0 到 100 之间的一个随机数,步长为 5
3.2 生成随机浮点数
random.random()
:生成一个 0 到 1 之间的随机浮点数,0 可以取到,但 1 取不到。
import random
print(random.random()) # 输出 0 到 1 之间的随机浮点数
random.uniform(a, b)
:生成一个指定范围内的随机浮点数,范围是 [a, b](包括 a 和 b)
import random
print(random.uniform(1.5, 10.5)) # 输出 1.5 到 10.5 之间的一个随机浮点数
3.3 设置随机种子
random.seed(a=None)
:初始化随机数生成器的内部状态。给定相同的种子,随机数生成器的序列将是可重复的。
import random
random.seed(1) # 设置种子
print(random.randint(1, 100)) # 每次运行代码时,给定相同种子,输出将相同
3.3.1 什么是随机数种子?
随机数种子在生成随机数的过程中起到一个非常重要的作用。它是用于初始化随机数生成算法(伪随机数生成器)的初始值。
随机数种子的作用
- 可重复性:当你使用特定的种子值初始化随机数生成器时,即使在不同的运行环境或不同时间,生成的随机数序列都将是相同的。这对于调试和测试非常重要,因为它允许程序的行为在使用随机数时保持一致。
- 控制随机性:种子提供了一种方法来控制随机数生成过程。通过改变种子,你可以获得不同的随机数序列,这对于模拟和其他需要随机输入的应用非常有用。
3.3.2 为什么要设置随机数种子?
- 如果你需要确保你的代码在每次运行时都产生相同的结果(例如,当你运行模拟或生成数据用于演示时),你应该设置一个固定的种子。
- 在科学研究或开发中,固定随机种子有助于保证结果的可重复性,这样其他人可以准确复现你的结果。
- 不设置种子时,随机数生成器通常会以系统时间或其他变化的环境变量为基础来生成种子。这意味着每次运行代码时,生成的随机数序列都会不同。
- 在许多应用中,特别是在生产环境中,希望每次运行都能产生不可预测的随机结果,例如在在线游戏中生成随机事件或在安全应用中生成加密密钥。
import random
random.seed(10) # 使用种子10
print(random.randint(1, 100)) # 产生一个固定的随机数
random.seed(10) # 再次使用相同的种子10
print(random.randint(1, 100)) # 将产生同样的随机数
random.seed() # 不提供种子或提供None,将使用系统时间或其他方法来生成种子
print(random.randint(1, 100)) # 每次运行可能都不同
四、综合练习案例
"""
演示循环综合案例:发工资
"""
import random
# 定义账户余额
money = 10000
# for循环对员工发放工资
for i in range(1, 21):
score = random.randint(1, 10)
if score < 5:
print(f"员工{i} 绩效分{score},不满足,不发工资,下一位")
# continue 跳过发放
continue
# 要判断余额足不足
if money >= 1000:
money -= 1000
print(f"员工{i}, 满足条件发放工资1000,公司账户余额{money}")
else:
print(f"余额不足,当前余额:{money}元,不足以发工资,不发了,下个月再来")
break