zoukankan      html  css  js  c++  java
  • python学习--练习题14-20

    练习14:

    #题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

     1 from functools import reduce
     2 a=int(input("几次重复加:"))
     3 b=int(input("想要重复的数字是:"))
     4 s=[]
     5 tn=0
     6 #sum=b*a*10+b*(a-1)*10+…………+b*1*10
     7 for count in range(0,a):
     8     tn=tn+b
     9     b=10*b
    10     s.append(tn)
    11     print(tn)
    12 s = reduce(lambda x,y : x + y,s)
    13 print ("计算和为:",s)

    练习15

    #题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

    from functools import reduce
    def num():
        for s in range(2,1000):
            l = []
            for i in range(1,s):
                if s%i==0:
                    l.append(i)
                    i+=1
            def f(x, y):
                return x + y
            sum=reduce(f,l)
            if sum == s:
                print(s,list(l))
            s+=1
    num()

    练习16

    #题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
    from functools import reduce
    l = []
    def sum(a):
        for i in range(1,10):
            k=a/2
            l.append(k*2)
            i+=1
            a=k
    sum(100)
    def f(x,y):
        return x+y
    print("在第10次落地时,共经过多少米{0}".format(float(reduce(f,l))+100))
    print(l[8])
    print("第10次反弹多高{0[8]}".format(l))

    练习17

    #题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

    x2 = 1
    for day in range(9, 0, -1):
        x1 = (x2 + 1) * 2
        x2 = x1
    print (x1)
    #程序分析:采取逆向思维的方法,从后往前推断。
    '''
    第10天=1
    第9天=(第10天+1)*2
    第8天=(第9天+1)*2
    ………………
    第1天=(第2天+1)*2=总共有多少个桃子
    '''

    练习18

    #两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。
    # 已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。


    teamA=["a","b","c"]
    teamB=["x","y","z"]
    s=((a,b) for a in teamA for b in teamB )
    l=[("a","x"),("c","x"),("c","z")]
    print(list(set(s)^set(l)))    #打散再组合

    练习19

    #打印出菱形

    for n in range(1,8,2):
        空格数 = int((7 - n) / 2)
        星星数 = n
        print(空格数 * " ", 星星数 * "*", 空格数 * " ")
    for m in range(5,0,-2):
        空格数 = int((7 - m) / 2)
        星星数 = m
        print(空格数 * " ", 星星数 * "*", 空格数 * " ")

    练习20

    #题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

    from functools import reduce
    l=[1,1]
    除数序列=[]
    for i in range(0,20):
        a=l[i+1]+l[i]
        l.append(a)
        b=l[i+1]
        除数序列.append(a/b)
        i+=1
    print(除数序列)
    求和 = reduce(lambda x,y : x + y,除数序列)
    print ("计算和为:",求和)
    '''
    a = 2.0
    b = 1.0
    l = []
    l.append(a / b)
    for n in range(1,20):
        b,a = a,a + b
        l.append(a / b)
    print reduce(lambda x,y: x + y,l)
    
    '''
  • 相关阅读:
    第02组 Beta版本演示
    2020系统综合实践8 大作业 智能门禁
    2020系统综合实践6 树莓派基本入门
    2020系统综合实践5 使用Dokcer部署Python运行环境
    2020系统综合实践4 Dokcer专题实践
    2020系统综合实践3 使用Docker Compose部署LNMP
    2020系统综合实践2 使用Dokcer部署Nginx和MySQL容器
    2020系统综合实践1 WSL 2的安装和基本使用
    2020系统综合实践1 VirtualBox下安装Debian踩坑小结
    团队第六次——beta冲刺日志集合
  • 原文地址:https://www.cnblogs.com/xurui89/p/10534839.html
Copyright © 2011-2022 走看看