最近在刷python的基础编程题,以下是我的一些需要修正的和注意的地方
1.求e的近似值
我之前的算法是
n=int(input())
new=[1.0]
temp=1
for i in range(1,n+1):
temp=temp*i
new.append(1.0/temp)
print("{0:.8f}".format(sum(new)))
一个卡显示没过,然后搜索了,参看了博客,原来当n超过10位时,8位小数保持不变。然后还在网上看到了更好的代码,如下
import math
def e(accuracy):
return sum(1.0/math.factorial(i) for i in range(accuracy))
n=int(input())
if n>15:
n=15
result=e(n+1)
print("{0:.8f}".format(result))
2.输出前 n 个Fibonacci数
我的,也过了,但是没想到有那么简单的
n=int(input())
result=[1,1]
for i in range(2,n):
result.append(sum(result[i-2:i]))
if n<1:
print("Invalid.")
else:
for i in range(0,n):
print("{:11d}".format(result[i]),end="")
if (i+1)%5==0 or i==n-1:
print("")
别人的
a,b=0,1
while b<100:
print(b)
a,b=b,a+b
3.统计学生平均成绩与及格人数
第一次忘记存在输入0个学生,并且不输入学生成绩的情况了
import numpy as np
n=int(input())
if n>0:
score=[int(i) for i in input().split()]
print("average = {:.1f}".format(np.mean(score)))
ok=[i for i in score if i>=60]
print("count =",len(ok))
else:
print("average = 0.0")
print("count = 0")
4.求最大公约数和最小公倍数
a,b=[int(i) for i in input().split()]
l=[]
for i in range(1,max(a,b)):
if a%i==0 and b%i==0:
l.append(i)
#最大公约数
r1=max(l)
#最小公倍数
r2=a*b/r1
print(r1,int(r2))
5.求区间内的素数
def isprime(num):
flag=True
if num>1:
temp=int(num**0.5)
for i in range(2,temp+1):
if num%i ==0:
flag=False
break
else:
flag=False
return flag
m,n=input().split()
m=int(m)
n=int(n)
new=[]
for i in range(m,n+1):
if isprime(i):
new.append(i)
print(len(new),sum(new))