python基础编程20191223

最近在刷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))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就是一只白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值