DAY5练习
for _ in range():
代码块
for in range():
循环体
else:
代码块
while 条件语句:
循环体
else:
代码块
# 在循环体中没有break,才会执行代码块
print('a','b',sep='',end='')
# print函数的sep指定用逗号分隔的数据之间的分隔符,end指定print函数在字符串结尾的字符,默认为换行符
求斐波那契的第n个数
current = 1
pre_1 = 1
pre_2 = 0
n = 5
for i in range(n-1):
current = pre_1 + pre_2
pre_2 = pre_1
pre_1 = current
print(current)
# 第一次循环:i=0,current=1,pre_2=1,pre_1=1
# 第二次循环:i=1,current=2,pre_2=1,pre_1=2
# 第三次循环:i=2,current=3,pre_2=2,pre_1=3
# 第四次循环:i=3,current=5,pre_2=3,pre_1=2
# 一共n-1次循环
求101-200之间的素数个数并打印
import math
count = 0
for i in range(101, 201):
for j in range(2,int(math.sqrt(i))):
if i % j == 0:
break
else:
count += 1
print(i)
print('一共%s个素数' % count)
# 先将101到200都取出来,再逐一判断
# 判断一个数是否是素数,需要将2到这个数的算术平方根逐一与这个数相除,若有至少一个数能整除它,那么这个数不是素数,若2到这个数的算术平方根都不能整除它,那么这个数就是素数,计数加一
2/1、3/2、5/3.....,求第20个分数
fz = 2
fm = 1
count = 0
while count != 19:
fz, fm = fz+fm, fz
count += 1
print('%s/%s' % (fz,fm))
#分子是前一个分数的分子加分母,分母是前一个分数的分子,于是有fz, fm = fz+fm,fz,此时的赋值不考虑顺序,赋值后计数加一,循环19次得到第20个分数
给一个正整数,求是几位数,逆序打印出各位数字
count = 0
num = int(input('>>>:'))
while num != 0:
print(num % 10)
num //= 10
count += 1
print('%s位数' % count)
# 假设输入的num为4567
# 第一次循环:num % 10=7,num //= 10 num=456,count=1
# 第二次循环:num % 10=6,num //= 10,num=45,count=2
# 第三次循环:num % 10=5,num //= 10,num=4,count=3
# 第四次循环:num % 10=4,num //= 10,num=0,count=4
# 即输入num为4位数,并同时实现逆序输出各位数字
5的阶乘
res = 1
for i in range(1,6):
res *= i
print(res)
# 第一次循环:i=1,res=1,res=res*i=1
# 第二次循环:i=2,res=1,res=res*i=2
# 第三次循环:i=3,res=2,res=res*i=6
# 第四次循环:i=4,res=6,res=res*i=24
# 第五次循环:i=5,res=24,res=res*i=120
求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘
sum1 = 0
for i in range(1, 21):
res = 1
for j in range(1,i+1):
res *= j
sum1 += res
print(sum1)
#首先需要先取得1到20所有数字,再对每一个数字求阶乘,并进行累加操作。
# i=1,res=res*j=1*1,sum1=1
# i=2,res=1*2=2,sum1=1+2=3
# i=3,res=1*2*3=6,sum1=3+6=9
# i=4,res=1*2*3*4=24,sum1=9+24=33
# .....
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值
n = 5
a = 3
sum1 = 0
num = 0
for x in range(n):
num = num * 10 + a
print(num)
sum1 += num
print(sum1)
#一共五次循环
# 第一次循环:num=0*10+3=3,sum1=0+3=3
# 第二次循环:num=3*10+3=33,sum1=3+33=36
# 第三次循环:num=33*10+3=333,sum1=36+333=369
# 第四次循环:num=333*10+3=3333,sum1=369+3333=3702
# 第五次循环:num=3333*10+3=33333,sum1=3702+33333=37035
输出直角三角形
n = 5
for i in range(n,0,-1):
print('*'*i+' '*(n-i))
# 使用range倒序获得5到1,共5次循环
# 第一次循环:i=5,5个*
# 第二次循环:i=4,4个*
# 第三次循环:i=3,3个*
# 第四次循环:i=2,2个*
# 第五次循环:i=1,1个*
输出等腰三角形
n = 7
for i in range(1,n+1):
if i % 2 == 1:
#print((n-i)/2)
print((int((n-i)/2))*' '+'*'*i)
# 第一行:1个*,(n-1)/2个空格
# 第二行:3个*,(n-3)/2个空格
# 第三行:5个*,(n-5)/2个空格
# 第四行:7个*,(n-7)/2个空格
# ....
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?
for l in range(34):
for m in range(51):
for s in range(101):
if (l*3+m*2+s*0.5 == 100) and (l+m+s == 100):
print('l:%s,m:%s,s:%s' % (l,m,s))
# 假设全部使用大马,至少使用33匹,中马50匹,小马100匹(总共100匹马),根据题干可解析出关系:大马加中马加小马共100匹,所有马货物加起来为100,使用3个嵌套循环去匹配所有满足条件的可能