while
基本语法格式
while 条件:循环体
- 条件为真, 则执行循环体代码.
- 条件为假, 则结束循环
num = 1
while num <= 10 :print(num)num += 1
注:
在
end
参数来指定输出结束时使用的字符。默认情况下,end
参数的值为 "\n
",这会导致输出结束后自动换行。通过将end
参数的值设置为一个空字符串 “”,可以使
你也可以将 end 参数设置为其他字符,例如:
num = 1
while num <= 10 :print(num , end=" ")num += 1
- 代码示例: 计算 1-100 的和
sum = 0
num = 1
while num <= 100:sum += numnum += 1
print(sum)
- 计算 5 的阶乘
result = 1
n = 1
while n <= 5:result *= nn += 1
print(result)
- 代码示例: 求 1! + 2! + 3! + 4! + 5!
num = 1
sum = 0
while num <= 5:factorResult = 1i = 1while i <= num:factorResult *= ii += 1sum += factorResultnum += 1
print(sum)
这个程序用到了两重循环. 也就是在循环语句中也可以套循环.
for 循环
基本语法格式
for 循环变量 in 可迭代对象:循环体
注意:
-
python
的for
和其他语言不同, 没有 “初始化语句”, “循环条件判定语句”, “循环变量更新语句”, 而是更加简单 -
所谓的 “可迭代对象”, 指的是 “内部包含多个元素, 能一个一个把元素取出来的特殊变量”
-
代码示例: 打印 1-10
for i in range(10):print(i,end=" ")
使用
range
函数, 能够生成一个可迭代对象. 生成的范围是 [1, 11), 也就是 [1, 10]
- 代码示例: 打印 2, 4, 6, 8, 10
for i in range(2, 12, 2):print(i)
通过
range
的第三个参数, 可以指定迭代时候的 “步长”. 也就是一次让循环变量加几
- 代码示例: 打印 10-1
for i in range(10, 0, -1):print(i)
range
的 步长 也可以设定成负数.
- 代码示例: 求 1 - 100 的和
sum = 0
for i in range(1, 101):sum += i
print(sum)
range函数
以下是对 Python 中 range
函数的详细介绍:
一、函数定义和基本用法:
range
是 Python 内置的一个函数,主要用于生成一个整数序列。其基本语法有以下几种形式:range(stop)
:生成一个从 0 开始,到stop - 1
的整数序列。
上述代码将打印出 0 到 4 的整数,因为# 示例代码 for i in range(5):print(i)
range(5)
生成的序列是[0, 1, 2, 3, 4]
。它的作用是从 0 开始,依次递增 1,直到达到stop - 1
为止。range(start, stop)
:生成一个从start
开始,到stop - 1
的整数序列。
这里,# 示例代码 for i in range(2, 7):print(i)
range(2, 7)
会生成[2, 3, 4, 5, 6]
。即从start
的值 2 开始,以步长为 1 递增,直到达到stop - 1
的值 6 为止。range(start, stop, step)
:生成一个从start
开始,到stop - 1
的整数序列,其中相邻元素的差值为step
。
在这个例子中,# 示例代码 for i in range(1, 10, 2):print(i)
range(1, 10, 2)
生成的序列是[1, 3, 5, 7, 9]
。它从start
的值 1 开始,以step
的值 2 为间隔进行递增,直到达到stop - 1
的值 9 为止。
二、参数说明:
start
:表示序列的起始值。如果不提供,默认为 0。stop
:表示序列的终止值,但该值不包含在生成的序列中。这是range
函数的一个重要特性,即生成的序列中的元素都小于stop
。step
:表示序列中相邻元素之间的差值,即步长。如果不提供,默认为 1。当step
为正数时,序列递增;当step
为负数时,序列递减。
三、使用场景和优势:
-
生成等差数列:通过指定
step
参数,可以生成等差数列,为数学计算和数据处理提供便利。# 生成奇数序列 odd_numbers = list(range(1, 10, 2)) print(odd_numbers)
此代码生成了从 1 到 9 的奇数序列。
-
内存优化:由于
range
对象的迭代特性,对于生成大范围的数字序列,它不会占用大量内存,相比生成完整列表更具性能优势。# 生成一个大的范围序列 for i in range(1000000):pass
即使生成很大范围的序列,也不会像生成一个包含 100 万个元素的列表那样占用大量内存。
五、特殊情况和注意事项:
- 递减序列:当
step
为负数时,start
应该大于stop
,以生成递减序列。
这里# 生成递减序列 for i in range(10, 1, -2):print(i)
range(10, 1, -2)
生成的序列是[10, 8, 6, 4, 2]
。 - 空序列:如果
start
等于stop
且step
为正数,或者start
等于stop
且step
为负数,将生成一个空序列。
此代码将生成一个空列表,因为起始和终止值相同,没有元素可供生成。empty_range = range(5, 5) print(list(empty_range))
continue
continue 表示结束这次循环, 进入下次循环。
代码示例: 模拟吃包子. 吃第 3 个包子的时候吃出了一只虫.
for i in range(1, 6):if i == 3:continueprint(f"吃完第 {i} 个包子")
break
break 表示结束整个循环
- 代码示例: 模拟吃包子. 吃第 3 个包子的时候吃出了半只虫.
for i in range(1, 6):if i == 3:breakprint(f"吃完第 {i} 个包子:")
- 代码示例: 输入若干个数字, 求平均值. 使用 “分号” 作为结尾
sum = 0
count = 0
while True:num = input("请输入数字:")if num == ';':breaknum = float(num)sum += numcount += 1
print(sum / count)