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