d循环结构
总结:
for循环
- for循环
"""
语法:
for 变量 in 序列:
循环体
说明:
for 、in - 关键字,固定写法
变量 - 变量名(可以是没有定义过的变量的变量名,也可以是已定义过变量的变量名。)
序列 - 容器型数据类型的数据,例如:字符串、列表、元组、字典、集合、迭代器、生成器、range等。
: - 固定写法
循环体 - 和for保持一个缩进的一条或者多条语句(循环体需要重复执行的代码)
执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一次就执行一次循环体。(序列中元素的个数决定for循环循环次数)
"""
- range函数 - 产生制定范围的数字序列。
- range(N)-产生0~N-1的数字序列,例如:range(3) - 产生一个数字序列,里面的元素为0、1、2。
- range(M,N) - 产生M~N-1的数字序列,例如:range(5,8) - 产生5,6,7。
- rang(M,N,step) - 产生[M,N),步长增加step。
while循环
- while循环
"""
语法:
while 条件语句:
循环体
说明:
while - 关键字,固定写法
条件语句 - 任何有结果的表达式(除了赋值语句)
: - 固定写法
循环体 - 和while保持一个缩进的一条或者多条语句(需要重复执行)
执行过程:
先判断条件语句是否为True,如果是就执行循环体;执行完循环体,再在判断条件语句
是否为True,是就再次执行循环体...以此类推,如果条件语句的结果是False循环就结束。
"""
- for和while的选择
- 循环次数确定时候用for循环。
- 循环次数不确定的时候用while循环。
循环关键字
-
continue : 结束一次循环(只能在循环体中使用)。
执行循环体的时候如果遇到continue,当次循环直接结束,直接进入下一次循环。
-
break :结束整个循环(只能在循环体中使用)。
执行循环体的时候如果遇到break,整个循环直接结束。
-
else
- else的存在不影响原来循环的执行。
- 后面的代码在循环自然死亡的时候会执行,循环因为遇到break而死亡的不会执行。
"""
for 变量 in 序列:
循环体
else:
代码段(循环自然死亡会执行)
while 条件语句:
循环体
else:
代码段(循环自然死亡会执行)
"""
作业:
基础题
- 使用for和while循环输出 0~100内所有3的倍数。
#使用for循环输出 0~100内所有3的倍数
for x in range(0,101,3):
print(x)
#使用while循环输出 0~100内所有3的倍数
count = 0
while True:
if count > 100:
break
else:
print(count)
count += 3
- 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。
#使用for循环输出100~200内个位数或者十位数能被3整除的数
for x in range(100,201):
if (x % 10 % 3) and ((x-100) // 10 % 3 ):
pass
else:
print(x)
#使用while循环输出100~200内个位数或者十位数能被3整除的数
count = 100
while True:
if (count % 10 % 3) and ((count-100) // 10 % 3 ):
pass
else:
print(count)
count += 1
if count > 200:
break
进阶题
- 使用循环计算
1*2*3*4*...*10
的结果。
#10!的值
sum = 1
for x in range(1,11):
sum *= x
print('10!的值为',sum)
- 统计100以内个位数是2并且能够被3整除的数的个数
#统计100以内个位数是2并且能够被3整除的数的个数
count = 0
for x in range(0,101,3):
if x % 10 == 2:
count += 1
print('个数:',count)
-
输入任意一个正整数,求他是几位数?
注意: 这儿不能使用字符串,只能用循环
#输入任意一个正整数,求他是几位数
num = int(input('请输入一个正整数:'))
count = 0
while True:
num //= 10
count += 1
if num== 0:
break
print('输入的数为', count, '位数')
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字3次方和等于该数本身。例如:153是
1个仙花数,因为
1³ + 5³ + 3³
等于 153。
#所有水仙花数
for x in range(100,1000):
a = x // 100
b = x % 100 // 10
c = x % 10
if x == a**3 + b**3 + c**3:
print(x)
挑战题
- 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
#判断指定的数是否是素数
num = 435353
if num == 0 or num == 1:
print(num, '不是素数')
else:
for x in range(2 , num):
if num % x:
pass
else:
print(num, '不是素数')
break
else:
print(num, '是素数')
- 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
#求斐波那契数列列中第n个数的值
pre1 = 1
pre2 = 1
n = int(input('n='))
for _ in range(n-3):
pre1,pre2=pre2,pre1+pre2
print(pre1+pre2)
- 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
#输出9*9口诀
for j in range(1,10):
for i in range(1,j+1):
print(i,'*',j,'=',i*j,' ',end='')
else:
print()
- 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
#这是经典的"百马百担"问题
for small in range(2,201,2):
for middle in range(1,49):
for big in range(1,34):
if small*0.5 + middle*2 + big*3 == 100 and small+middle+big == 100:
print('大马:',big ,'匹 ','中马:',middle,'匹 ''小马:',small,'匹 ')