day3 学习总结
-
for循环
for 变量 in 序列: 循环体 #循环体就是需要重复执行的代码块 # # 执行过程:让变量一次又一次地取序列中取值,每取一次执行一次,直到取完为止.
range(N) #里面有N个元素,产生的是0-N-1的数字序列 range(M, N) #产生M-(N-1)的数字序列 range(M,N,step) #产生[M,N)的数字序列,每次增加step
-
while循环
- 语法
while 条件语句: 循环体 # 执行过程:当条件语句为True时,就执行循环体,执行完再判断条件语句是否为True,以此类推,如果条件语句的结果是False,则循环结束.
- for和while的选择
- 若循环次数确定就用for循环
- 若循环次数不确实就用while循环
- 随机数
import random num = random.randint(a, b) # 产生一个a-b的随机整数,并且保存到变量num中.
-
循环关键字
- continue - 只能在循环中使用 出现continue结束一次循环,直接进入下次循环.
- break - 只能在循环中使用 结束整个循环
- while循环的套路
while True: 每次循环需要做的事情 if 结束循环的条件: break
- else
# for循环 for 变量 in 序列: 循环体 else: 代码块 # while循环 while 条件语句: 循环体 else: 代码块 # else不影响原本循环的执行 # else执行的条件是:循环自然死亡;若循环因break导致结束,则不执行else后面的代码.
课后作业
基础题
1.使用for和while循环输出 0~100内所有3的倍数。
# for循环
for x in range(0, 101, 3):
print('x:', x)
# while循环
i = 0
while 0 <= i <= 100:
i += 1
if i % 3 == 0:
print('i:', i)
2.使用for和while循环输出100~200内个位数或者十位数能被3整除的数。
#for循环
for c in range(100 , 200):
if(c % 100) // 10 % 3 == 0 or c % 10 % 3 == 0:
print('c:', c)
#while循环
i = 100
while 100 <= i <= 200:
if (i % 100) // 10 % 3 == 0 or i % 10 % 3 == 0:
print('i:', i)
i += 1
进阶题
- 使用循环计算
1*2*3*4*...*10
的结果。
num = 1
for r in range(1,11):
num *= r
print('num:',num)
- 统计100以内个位数是2并且能够被3整除的数的个数。
count = 0
for g in range(0,100,3):
if g % 10 == 2:
count+=1
print(count)
-
输入任意一个正整数,求他是几位数?
注意: 这儿不能使用字符串,只能用循环
count = 1 a=int(input('输入一个正整数:')) while True: if a // 10 != 0: a = a // 10 count += 1 if a // 10 == 0: break print(count)
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。
for a in range(100,1000):
if (a%10)**3+((a//10)%10)**3+(a//100)**3 == a:
print(a)
挑战题
- 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
num = int(input('请输入一个数:'))
for r in range(2,num):
if num % r == 0:
print('不是质数')
break
else:
print('质数')
- 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
n=int(input('请输入任意正整数:'))
fn_1 = 1
fn_2 = 1
fn = 1
for r in range(2, n):
if n == 1 or n == 2:
fn = 1
fn_1 = 1
fn_2 = 1
break
else:
fn_2 = fn_1
fn_1 = fn
fn = fn_1 + fn_2
print(fn)
- 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
- 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)