第六章 函数的设计 <习题6>

  1. 编写两个函数分别按单利和复利计算利息,根据本金、年利率、存款年限得到本息和和利息。调用这两个函数计算1000元在银行存3年,在年利率是6%的情况下,单利和复利分别获得的本息和和利息。单利计算指只有本金计算利息。复利计算是指不仅本金计算利息,利息也计算利息,也就是通常所说的“利滚利”。如这题按单利计算本息和1000+1000×6%×3=1180元,其中利息为180元;按复利计算本息和1000×(1+6%)3=1191.016元,其中利息为191.016元。
def simple_interest(money,rate,years):
    interest=money*rate/100.0*years
    sum_money=money+interest
    return sum_money,interest
def compound_interest(money,rate,years):
    sum_money=money*(1+rate/100.0)**years
    interest=sum_money-money
    return sum_money,interest

#主程序
money=1000
rate=6
years=3
aa=simple_interest(money,rate,years)
bb=compound_interest(money,rate,years)
print("本金:",money,"\n年利率:",str(rate)+"%","\n存款年限:",years)
print("单利:","\n本息和:","%.3f"%aa[0],"利息","%.3f"%aa[1])
print("复利:","\n本息和:","%.3f"%bb[0],"利息","%.3f"%bb[1])

  1. 编写函数,判断一个数是否为素数。调用该函数判断从键盘中输入的数是否为素数。素数也称质数,是指只能被1和它本身整除的数。
def prime(x):
    flag=True
    for i in range(2,x//2+1):
        if x%i==0:
            flag=False
            break
    return flag

#主程序
x=int(input("请输入一个整数:"))
if prime(x):
    print(x,"是素数")
else:
    print(x,"不是素数")

  1. 编写函数,求出一个数除了1和自身以外的因子。从键盘输入一个数,调用该函数输出除了1和它自身以外的所有因子。
def zi(n):
    a=[]
    for i in range(2,n//2+1):
        if n%i==0:
            a+=[i]
    return a

#主程序
x=int(input("请输入一个整数:"))
print("除1和自身以外的因子:",zi(x))

  1. 编写函数,判断一个数是否为水仙花数。调用该函数打印出1000以内的所有水仙花数。水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如:13+53+33=153,则153是水仙花数。水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。
def flower(x):
    a=x//100
    b=(x %100)//10
    c=(x %100)%10
    if a**3+b**3+c**3==x:
        return True
    else:
        return False

#主程序
print("1000以内的水仙花数为:")
for i in range(100,1000):
    if flower(i):
        print(i)

  1. 编写函数求斐波拉契数列的前20项。斐波拉契数列的第1项和第2项分别是0和1,从第3项开始,每一项都是前两项之和。如:0,1,1,2,3,5,8,13,21…。试用递归函数实现。
def fibo(n):
    if n==1:
        s=0
    elif n==2:
        s=1
    else:
        s=fibo(n-1)+fibo(n-2)
    return s

#Ö÷³ÌÐò
for i in range(1,21):
    print("第",i,"项",fibo(i))

你可能感兴趣的:(笔记,python)