这节课依旧是流程控制语句
剩下的部分
循环语句和语句之间的嵌套
for循环
while循环
选择循环语句嵌套
循环语句嵌套
下面就来看一下循环语句
循环语句
先看一下循环语句的流程图
for循环
for循环是一个计次循环,一般应用在循环次数已知的情况下
通常适用于枚举或遍历序列
# for循环基本结构
for 循环控制变量 in 循环控制变量变化范围:
语句 1
语句 2
语句3
for语句与if语句一样也是通过相同的缩进来表示所属的
例:
# 计算1~100的累加和
result = 0
for i in range(101):
result+=i # result = result + i
print(result)
上述代码中用到了 range() 函数,该函数是Python中的内置函数,用于生成一系列连续的整数,多用于for循环中
下面来看一下range()函数的使用:
range(start,end,step)
# range()函数具有三个参数
# start: 用于指定计数的起始值,可以省略,如果省略则从0开始
# end: 用于指定计数的结束值(但不包括该值),不能省略当range()函数中只有一个参数时,即表示指定计数的结束值
# step:用于指定步长,即两个数之间的间隔。可以省略,若省略则表示步长为1
注意:在使用range()函数时,如果只用一个参数,那么表示指定的是end;如果只用两个参数,那么表示指定的是start和end;只有三个参数都存在时,最后一个参数step才表示步长
例题:
输入两个正整数 m,n(m<n),输出 m 到 n 中的每一个数
# 首先从键盘读入m n两个整数
m=int(input())
n=int(input())
# 通过for循环打印出m和n之间的所有数字,这里计数结束值应该是n+1,因为end参数是不包括end参数本身的这个值的
for i in range(m,n+1):
print(i)
这里可以将for i in range() 记成for循环的固定格式,i 是我们自己取得变量名用来在for循环中代替要处理的变量,in 就是表示将变量限制在range()函数表示的范围内
下面做题来练个手
实战案例:
一、 输出 100 以内的奇数
for i in range(101):
if i%2!=0 :
print(i,end=" ")
二、 输出 301 至 350 之间的偶数
for i in range(301,351):
if i%2==0:
print(i,end=" ")
while循环
while循环是通过一个条件来控制是否要继续反复执行循环体中的语句
也可以叫做死循环
# while循环基本形式
while 判断条件:
语句1
语句2
语句3
当判断条件为真时,执行语句块会被一直执行,直至判断条件为假时,循环终止。这就要求在执行语句块中,应该有改变判断条件结果的语句存在,否则判断条件结果一直不改变,会成为永久循环,也就是死循环
例题: 求 s=1 +2 +3……+n,当加到第几项时,s 的值会超过
1000?
s = 0
n = 0
# 题目中的限定条件是s的值超过1000,所以这里的判断条件就应该是s<1000
while s < 1000:
n=n+1 # 随着循环的进行,n的值会变成1,2,3,4,5......
s=s+n # 求和s,1+2+3+4+5......
print(n)
一道小练习
练习: 输入一个正整数,倒序输出这个正整数的每一位。
例如:输入 123 倒序输出 321(暂不必考虑 0 在最前面不符合数字格式)
n = int(input())
while n!=0:
x = n%10 # 对10取余,得到个位上的数字
print(x,end="")
n//=10 # 对10取整除,撇掉个位,一位位的减少
嵌套
嵌套这里就通过题目来见识一下什么是嵌套
明白什么情况下要进行语句的嵌套
选择循环嵌套
角谷的猜想
题目描述: 角谷猜想,是指对于任意一个正整数,如果是奇数,
则乘 3 加 1,如果是偶数,则除以 2,得到的结果再按照上述规则重
复处理,最终总能够得到 1。如,假定初始整数为 5,计算过程分别
为 16、8、4、2、1。程序要求输入一个整数,将经过处理得到 1 的
过程输出来。
输入:一个正整数 N(N <= 2,000,000)
输出:从输入整数到 1 的步骤,每一步为一行,每一部中描述计
算过程。最后一行输出"End"。如果输入为 1,直接输出"End"。
样例输入:5
样例输出:
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End
# 这一题需要用到while循环和if...else语句的嵌套
num = int(input())
# 从题干中分析,只要这个数不是1,就需要一直对它进行处理所以要用到while循环
while num!=1:
# 偶数和奇数的处理方法不一样,所以里面要套一个if来判断奇偶性
if num%2==0:
print(f"{num}/2={num/2}")
num//=2
else:
print(f"{num}*3+1={num*3+1}")
num=num*3+1
print("End")
循环嵌套
输出九九乘法表,如图所示:
#九九乘法表一共 9 行,需要循环 9 次
#行号从 1 变换至 9,用行号 i 表示乘法表中每个乘法运算的第二个数字
for i in range(1,9+1):
#一行中的共有 i 列,用行号 j 表示乘法表中每个乘法运算的第一个数字
for j in range(1,i+1):
#依照乘法表样式输出
print(j,"*",i,"=",i*j,end=" ")
print("")#内层循环输出一行结束,需输出一个回车
--------------------------------------------------------------------------------End-----------------------------------------------------------------------------------------------