目录
方法二:x从0~33枚举,y从0~33枚举,z=90-x-y
一、1!+2!+3!+....+n!
n=int(input())
res=0
#res=1!+2!+3!+....+n!
#外层循环,i便利[1,2,3,4,....,n]
for i in range(1,n+1):
#内层循环目的就是计算now_res=i!
now_res=1
#i便利[1,2,3,4,....,n]
for j in range(1,i+1):
now_res*=j
res+=now_res
print(res)
二、采购
方法一:x,y,z都从0~90枚举
# count用于计算次数
count=0
for x in range(91):
for y in range(91):
for z in range(91):
count+=1
# 满足条件
if x+y+z==90 and 15*x+10*y+5*z==500:
print(x,y,z)
print(count)
结果:
0 10 80
1 8 81
2 6 82
3 4 83
4 2 84
5 0 85
753571
方法二:x从0~33枚举,y从0~33枚举,z=90-x-y
即母鸡最多买500/15=33只,公鸡最多买500/10=50只,则小鸡买90-x-y只。
# count用于计算次数
count=0
for x in range(34):
for y in range(51):
count+=1
# 满足条件
z=90-x-y
if 15*x+10*y+5*z==500:
print(x,y,z)
print(count)
结果:
0 10 80
1 8 81
2 6 82
3 4 83
4 2 84
5 0 85
1734
方法三:解方程组
# count用于计算次数
count=0
for x in range(6):
y=10-2*x
z=80+x
count += 1
print(x,y,z)
print(count)
结果:
0 10 80
1 8 81
2 6 82
3 4 83
4 2 84
5 0 85
6
三、三角形
1、向右直角三角形
n=int(input())
#外层循环:i遍历[1,2,3,...,n],表示输出第i行
for i in range(1,n+1):#左边不包含!!!
#第i行输出i个*
for j in range(i):
print("*",end='')#end=''是令其不换行
print('')#换行
5
*
**
***
****
*****
2、向左直角三角形
n=int(input())
#外层循环:i遍历[1,2,3,...,n],表示输出第i行
for i in range(1,n+1):#左边不包含!!!
# 第i行输出n-i个空格
for j in range(n-i,0,-1):
print(" ", end='')
#第i行输出i个*
for k in range(i):
print("*",end='')#不换行
print('')#换行
5
*
**
***
****
*****
3、等腰三角形
(1)奇数个*等腰三角形
n=int(input())
#外层循环:i遍历[1,2,3,...,n],表示输出第i行
for i in range(1,n+1):#左边不包含!!!
# 第i行输出n-i个空格
for j in range(0,n-i):
print(" ", end='')
#第i行输出奇数个*
for k in range(2*i-1):
print("*",end='')#不换行
print('')#换行
5
*
***
*****
*******
*********
(2)连续*个等腰三角形
n=int(input())
# 外层循环:i遍历[1,2,3,...,n],表示输出第i行
for i in range(1,n+1):#左边不包含!!!
# 第i行输出n-i个空格
for j in range(0,n-i):
print(" ",end='')
#或者print(end=' ')
#第i行输出i个*
for k in range(n-i,n):
print("*",end=' ')#不换行且结尾以空格结束
print('')#换行
5
*
* *
* * *
* * * *
* * * * *
四、菱形
1、实心菱形
#输出2*n-1行菱形
n=int(input())
for i in range(1,n+1):
for j in range(0,n-i):
print(' ',end='')
for k in range(0,2*i-1):
print('*',end='')
print('')
for i in range(n-1,0,-1):
for k in range(0,n-i):
print(' ',end='')
for j in range(2*i-1,0,-1):
print('*', end='')
print('')
5
*
***
*****
*******
*********
*******
*****
***
*
2、空心菱形
n=int(input('输入菱形边长:'))
for i in range(1,n+1):
for j in range(0,n-i):
print(' ',end='')
for k in range(0,2*i-1):
if k==0 or k==2*i-2:#空格输出完后只有开头和末尾有*,否则中间是空格
print('*', end='')
else:
print(end=' ')
print('')
for i in range(n-1,0,-1):
for k in range(0,n-i):
print(' ',end='')
for k in range(0, 2 * i - 1):
if k == 0 or k == 2 * i - 2:
print('*', end='')
else:
print(end=' ')
print('')
输入菱形边长:5
*
* *
* *
* *
* *
* *
* *
* *
*
五、水仙花数
方法一:(自写)
for i in range(100,1000):
c=i%10 #个位
b=(i//10)%10 #十位
a=(i//100)%10 #百位
if a**3+b**3+c**3==i:
print(i)
153
370
371
407
方法二:三层循环
#a百位[1,2,3,4,5,6,7,8,9]
for a in range(1,10):
# b十位[0,1,2,3,4,5,6,7,8,9]
for b in range(0,10):
# c个位[0,1,2,3,4,5,6,7,8,9]
for c in range(0,10):
left=a**3+b**3+c**3
right=a*100+b*10+c
if left==right:
print(right)
153
370
371
407
六、素数
自写
#数字1不是质数
L,R=map(int,input().split())
for i in range(L,R+1):
for j in range(2,i):
if i%j==0:
break
else:
print(i)
break
优化
L,R=map(int,input().split())
for i in range(L,R+1):
ok=True#判断i是否为素数
for j in range(2,i):
if i%j==0:
ok=False
break
if ok and i!=1:
print(i)
1 10
2
3
5
7
七、日期(包含闰年判断)
1、闰年判断
- year%4==0 and year%100!=0
- year%400==0 ,满足其一就为闰年。
2、大月和小月
1,3,5,7,8,10,12为31天
4,6,9,11为30天
2月为特殊月,闰年时有29天,平年有28天
3、例子日期计算
count=0
for year in range(2000,2021):
for month in range(1,13):
#1,3,5,7,8,10,12月31天
if month==2:
#特殊月区分闰年
#判断闰年
#世纪年(整百),必须是400倍数
#非世纪年:是4的倍数
if year%400==0 or (year%100!=0 and year%4==0):
days=29
else:
days=28
elif month==4 or month==6 or month==9 or month==11 :
days=30
else:
days=31
#days表示当年,当月总天数
for day in range(1,days+1):#1-最后一天要包含
print(year,month,day)
count+=1
print(count)