1.求100(含100)以内所有偶数的和
range(start,end,step)这个序列生成器,和那个切片的语法一样,含头不含尾,step是步长,这里就不需要在对j进行判断了,对于这些简单求奇数和、求偶数和,就n的倍数和等等就可以这样做
s = 0
for j in range(0,101,2):
s = s + j
print(s) # 2550
2.打印99乘法表
用于理解循环的使用
# a=0
# while a<9:
# a+=1
# b=0
# while b<a:
# b+=1
# print(b,'*',a,'=',a*b,sep='',end='\t') #sep是分隔符默认是空格,\t是制表符
# print()
for i in range(1,10):
for j in range(1,i+1):
print(f'{j}*{i}={i*j}',end='\t')
print()
"""
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
"""
3.求第n位斐波那契数
这是求第n位斐波那契数,大家可以尝试多种方法做,我这就不做多的演示了,要是求n(包含n)位前所有斐波那契数了,创建一个列表保存一下就好,希望大家可以去做一下,加深对列表方法的使用
# 斐波那契数列:1,1,2,3,5,8,13,21,34,55.....
# 从第三位开始:后一个数等于前面两数相加
n = int(input('请输入你要求第几位斐波那契数:'))
a = 0
b = 1
for i in range(n):
# c = a
# a = b
# b = c + b
# 上里三式可以简写为:
a,b = b,a+b
print(a)
4.百马百担
一匹大马能背3担货,一匹中马能背2担货,两匹小马能背1担货,如果用一百匹马背一百担货,有哪些不同的背法
for i in range(34): # i代表大马的匹数
for j in range(51): # j代表中马的匹数
if i*3+j*2+(100-i-j)/2 == 100:
print(f'大马={i},中马={j},小马={100-i-j}')
# 大马=2,中马=30,小马=68
# 大马=5,中马=25,小马=70
# 大马=8,中马=20,小马=72
# 大马=11,中马=15,小马=74
# 大马=14,中马=10,小马=76
# 大马=17,中马=5,小马=78
# 大马=20,中马=0,小马=80
5.求水仙花数
我这定义了一个函数去求n位数的水仙花数,不过水仙花数就是100-1000内个位十位百位3次方的和等于本身的数,我那只是类推一下,当然也可以不定义函数,直接使用input输入一个n或者直接给定n的值
def get_Narcissistic(n):
for i in range(pow(10,n-1),pow(10,n)):
s = 0
for j in range(n):
s = s+pow(i//10**j%10,n)
if i==s:
print(i)
get_Narcissistic(3)
# 153
# 370
# 371
# 407
6.求n以内的所有质数(素数)和
质数:只能被1和自身整除的数
n = int(input('请输入一个大于或等于2的正整数:'))
# for i in range(2,n+1):
# flag = True # 每次循环开始都会重置为True
# for j in range(2,int(i**0.5)+1):# 只用循环到i的平方根就好减少循环次数
# if i%j == 0:
# flag = False
# break # 只要有一个整除就跳出循环
# if flag: # 只有上面循环完,flag还等于True才会打印i
# print(i)
# 上面程序也可以写成
# 这里就涉及到for...else语句的使用:
# 当for..in循环自然结束时,后面有else就会运行else里的内容,没有就执行下面的内容
# 当循环因为某种原因(如break)提前退出循环,就不会执行else里的内容
for i in range(2,n+1):
for j in range(2,int(i**0.5)+1):# 只用循环到i的平方根就好减少循环次数,提高效率
if i%j == 0:
break # 只要有一个整除就跳出循环
else: # 只有上面循环完,flag还等于True才会打印i
print(i,end='\t')# 显示在一行
# 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
7.已知 abc+cba=1333, 其中的a,b,c均为一位数,编写一个程序,求出a,b,c分别代表什么数字
注意a,c是不能等于0的,但是就算a,c从0开始,结果也是一样的,但还是严谨一点的好,哈哈哈QAQ
for x in range(1,10):# a
for y in range(10):# b
for z in range(1,10):# c
if x*100+y*10+z + z*100+y*10+x == 1333:
print(f'a={x},b={y},c={z}')
# a = 4, b = 1, c = 9
# a = 5, b = 1, c = 8
# a = 6, b = 1, c = 7
# a = 7, b = 1, c = 6
# a = 8, b = 1, c = 5
# a = 9, b = 1, c = 4