Python算法题
https://www.cnblogs.com/canglongdao/p/15091880.html
2.11 斐波那契数列1、1、2、3、5、8、13 .....
已知一个数列:1、1、2、3、5、8、13、。。。。的规律为从 3 开始的每一项都等于其前两项的和,这是斐波那契数列。
求满足规律的 100 以内的所有数据
这是我的答案:
a=1
b=2
list1=[1,1,2]
for i in range(1,101):
if i==a+b:
a=b
b=i
list1.append(i)
print(list1)
这是博主的答案
snl=[1,1]
num=2while num<100: snl.append(num) num=snl[-1]+snl[-2]print(snl)2.3 数字1-100求和
'''
数字1-100求和
"'''
我的答案
sum=0
for i in range(1,101):
sum=sum+i
print(sum)
博主的答案
n=100
if n%2==0:
sum=(1+n)*(n//2)
else:
sum=(1+n)*(n//2+0.5)
print("1-{} 的和是{}".format(n,sum))
2.6计算 1-n 之间的所有 5 的倍数之和
博主答案
n=100
sum=0
nc=n//5
for i in range(1,nc): 写错了,应该是nc+1
sum+=i*5
print(sum)
sum=0
for i in range(1,101):
if i%5==0:
sum=sum+i
print(sum)
2.7 n个自然数的立方和
实现要求:
输入 : n = 5
输出 : 225
对应的公式 : 13 + 23 + 33 + 43 + 53 = 225
"'''
博主答案
n=5
sum=0
for i in range(1,n+1):
sum+=i**3
print(sum)
我的答案
sum=0
for i in range(1,6):
sum=(sum+(i*10+3))
print(sum)
如果有一个列表a=[1,3,5,7,11]
问题:1如何让它反转成[11,7,5,3,1]
"'''
博主的答案
a=[1,3,5,7,11]
print(a[::-1])
print(a[::2])
我的答案
a=[1,3,5,7,11]
cont=len(a)//2
for i in range(cont):
b=a[i]
a[i]=a[-i-1]
a[-i-1]=b
print(a)
或者:
a=[1,3,5,7,11]
cont=len(a)//2
for i in range(cont):
a[i],a[-i-1]=a[-i-1],a[i]
print(a)
3.4 取出最大值最小值
问题:L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
找出列表中最大值和最小值
博主的答案:
L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
max=L1[0]
min=L1[0]
count=len(L1)
for i in range(count):
if L1[i]>max:
max,L1[i]=L1[i],max
if L1[i]<min:
min,L1[i]=L1[i],min
print(max,min)
这道题博主解的有问题,博主那种写法会改变原有列表的值,应该这样写:
'''
L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
找出列表中最大值和最小值
"'''
L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
max=L1[0]
min=L1[0]
for i in range(1,len(L1)):
if L1[i]>max:
max=L1[i]
if L1[i]<min:
min=L1[i]
print(max,min)
浙公网安备 33010602011771号