美文网首页
day6_作业

day6_作业

作者: 逆流而上_2eb6 | 来源:发表于2018-10-08 15:40 被阅读0次

    1.控制台输入年龄,根据年龄输出不同的提示(例如:老年人,青壮年,成年人,未成年,儿童)

    while 1:
        age=int(input("请输入年龄:"))
        if age<10:
            print("儿童")
        elif age<18:
            print("未成年")
        elif age<30:
            print("成年人")
        elif age<60:
            print("青壮年")
        else:
            print("老年人")
    

    2.计算5的阶乘 5!的结果是

    factorial=1   #阶乘的积
    for num in range(1,6):
        factorial*=num 
    print(factorial)
    

    120

    3.求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。

    sum1=0
    for num1 in range(1,21):
        factorial=1  #阶乘的积
        for num in range(1,num1+1):
            factorial*=num   #求阶乘
        sum1+=factorial  #求和
    
    print(sum1)
    

    算法改进:在计算超过1000后有明显的优化

    sum1=0
    number=1
    for num in range(1,21):
        number*=num    #n!=(n-1)!*n,用number记录当前阶乘的值。
        sum1+=number
    print(sum1)
    

    2561327494111820313

    4.计算 1+1/2!+1/3!+1/4!+...1/20!=?

    from fractions import Fraction
    sum=0
    for num in range(1,21):
        factorial=1
        for num1 in range(1,num+1):
            factorial*=num1
        sum+=1/factorial
    print(Fraction(sum1))
    

    算法改进:

    from fractions import Fraction
    factorial=1
    sum1=0
    for num in range(1,21):
        factorial*=1/num
        sum1+=factorial
    print(Fraction(sum1))
    

    1.7182818284590455

    5.循环输入大于0的数字进行累加,直到输入的数字为0,就结束循环,并最后输出累加的结果。

    num=int(input("请输入一个数字:"))
    sum1=0
    while num!=0:
        sum1+=num
        num=int(input("请输入一个数字:"))
    print(sum1)
    

    6.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。

    a=int(input("请输入a:"))
    count1=int(input("请输入相加的个数:"))
    sum1=0
    for num1 in range(1,count1+1):
        for num2 in range(0,num1):
            sum1+=a*10**num2
    print(sum1)
    

    或者

    a=int(input("请输入a:"))
    count1=int(input("请输入相加的个数:"))
    sum1=0
    for num in range(1,count1+1):
        sum1+=a*num*10**(count1-num)   #222+22+2=246=2*1*10**2+2*2*10**1+2*3*10**0
    print(sum1)
    

    7.输入三个整数x,y,z,请把这三个数由小到大输出。

    x=int(input("请输入三个数字:"))
    y=int(input())
    z=int(input())
    a=[x,y,z]
    a.sort()  #从小到大排序
    for num in a:
        print(num)
    

    或者

    x=int(input("请输入三个数字:"))
    y=int(input())
    z=int(input())
    num=0
    while not x<=y<=z:
        if x>y:
            num=x
            x=y
            y=num
        if y>z:
            num=y
            y=z
            z=num
    print(x,y,z)
    

    或者

    x=int(input("请输入三个数字:"))
    y=int(input())
    z=int(input())
    a=[x,y,z]
    max1=0
    bool1=True
    while bool1:
        for num in range(0,len(a)-1):
            if a[num]>a[num+1]:
                max1=a[num]
                a[num]=a[num+1]
                a[num+1]=max1
                break
        else:
                bool1=False
    print(a)
    

    8.控制台输出三角形

    a.根据n的值的不同,输出相应的形状
    n = 5时             n = 4
    *****               ****
    ****                ***
    ***                 **
    **                  *
    *
    
    b.根据n的值的不同,输出相应的形状(n为奇数)
    n = 5               n = 7
      *                    *
     ***                  ***
    *****                *****
                        *******
    
    n=4
    for num in range(n,0,-1):
        for num1 in range(1,num+1):
            print("*",end="")
        print()
    

    9.输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

    image.png
    for num in range(1,10):
        for num1 in range(1,num+1):
            print("%d*%d=%d"%(num1,num,num*num1),end="  ")
        print()
    
    1*1=1   
    1*2=2   2*2=4   
    1*3=3   2*3=6   3*3=9   
    1*4=4   2*4=8   3*4=12  4*4=16  
    1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
    1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
    1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
    1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
    1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  
    [Finished in 0.2s]
    

    10.这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?

    for num in range(1,101):
        for num1 in range(1,101-num):
            if num*3+num1*2+(100-num-num1)*0.5==100:
                print("有大马%d匹,  中马%d匹,  小马%d匹"%(num,num1,100-num-num1))
    
    有大马2匹,  中马30匹,  小马68匹
    有大马5匹,  中马25匹,  小马70匹
    有大马8匹,  中马20匹,  小马72匹
    有大马11匹, 中马15匹,  小马74匹
    有大马14匹, 中马10匹,  小马76匹
    有大马17匹, 中马5匹,   小马78匹
    [Finished in 0.1s]
    

    11.我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的: 5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。

    for num in range(1,101):
        for num1 in range(1,101-num):
            if num*5+num1*3+(100-num-num1)*(1/3)==100:
                print("有公鸡%d只,  母鸡%d只,  雏鸡%d只"%(num,num1,100-num-num1))
    
    有公鸡4只,  母鸡18只,  雏鸡78只
    有公鸡8只,  母鸡11只,  雏鸡81只
    有公鸡12只, 母鸡4只,   雏鸡84只
    [Finished in 0.1s]
    

    12.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?

    count1=0
    for xfs in range(0,100//15+1):
        for xz in range(0,(100-xfs*15)//2+1):
            for yg in range(0,(100-xfs*15-xz*2)//5+1):
                if xfs*15+xz*2+yg*5==100:
                    print("洗发水有:%d, 香皂有:%d, 牙膏有:%d。"%(xfs,xz,yg))
                    count1+=1
    print(count1)
    

    或者

    for xfs in range(0,100):
        if 15*xfs>100:
            break
        for xz in range(0,100):
            money=15*xfs+xz*2
            if money>100:
                break
            if (100-money)%5==0:
                yg=(100-money)/5
                print("洗发水有:%d,  香皂有:%d,  牙膏有:%d。"%(xfs,xz,yg))
    

    或者(最优)

    count1=0
    xfs=0
    while xfs*15<=100:
        xz=0
        while xfs*15+xz*2<=100:
            money=100-xfs*15-xz*2
            if money%5==0:
                yg=money/5
                count1+=1
                print("洗发水有:%d,  香皂有:%d,  牙膏有:%d。"%(xfs,xz,yg))
            xz+=1
        xfs+=1
    print(count1)
    
    洗发水有:0, 香皂有:0,  牙膏有:20。
    洗发水有:0, 香皂有:5,  牙膏有:18。
    洗发水有:0, 香皂有:10, 牙膏有:16。
    洗发水有:0, 香皂有:15, 牙膏有:14。
    洗发水有:0, 香皂有:20, 牙膏有:12。
    洗发水有:0, 香皂有:25, 牙膏有:10。
    洗发水有:0, 香皂有:30, 牙膏有:8。
    洗发水有:0, 香皂有:35, 牙膏有:6。
    洗发水有:0, 香皂有:40, 牙膏有:4。
    洗发水有:0, 香皂有:45, 牙膏有:2。
    洗发水有:0, 香皂有:50, 牙膏有:0。
    洗发水有:1, 香皂有:0,  牙膏有:17。
    洗发水有:1, 香皂有:5,  牙膏有:15。
    洗发水有:1, 香皂有:10, 牙膏有:13。
    洗发水有:1, 香皂有:15, 牙膏有:11。
    洗发水有:1, 香皂有:20, 牙膏有:9。
    洗发水有:1, 香皂有:25, 牙膏有:7。
    洗发水有:1, 香皂有:30, 牙膏有:5。
    洗发水有:1, 香皂有:35, 牙膏有:3。
    洗发水有:1, 香皂有:40, 牙膏有:1。
    洗发水有:2, 香皂有:0,  牙膏有:14。
    洗发水有:2, 香皂有:5,  牙膏有:12。
    洗发水有:2, 香皂有:10, 牙膏有:10。
    洗发水有:2, 香皂有:15, 牙膏有:8。
    洗发水有:2, 香皂有:20, 牙膏有:6。
    洗发水有:2, 香皂有:25, 牙膏有:4。
    洗发水有:2, 香皂有:30, 牙膏有:2。
    洗发水有:2, 香皂有:35, 牙膏有:0。
    洗发水有:3, 香皂有:0,  牙膏有:11。
    洗发水有:3, 香皂有:5,  牙膏有:9。
    洗发水有:3, 香皂有:10, 牙膏有:7。
    洗发水有:3, 香皂有:15, 牙膏有:5。
    洗发水有:3, 香皂有:20, 牙膏有:3。
    洗发水有:3, 香皂有:25, 牙膏有:1。
    洗发水有:4, 香皂有:0,  牙膏有:8。
    洗发水有:4, 香皂有:5,  牙膏有:6。
    洗发水有:4, 香皂有:10, 牙膏有:4。
    洗发水有:4, 香皂有:15, 牙膏有:2。
    洗发水有:4, 香皂有:20, 牙膏有:0。
    洗发水有:5, 香皂有:0,  牙膏有:5。
    洗发水有:5, 香皂有:5,  牙膏有:3。
    洗发水有:5, 香皂有:10, 牙膏有:1。
    洗发水有:6, 香皂有:0,  牙膏有:2。
    洗发水有:6, 香皂有:5,  牙膏有:0。
    44
    [Finished in 0.2s]
    

    相关文章

      网友评论

          本文标题:day6_作业

          本文链接:https://www.haomeiwen.com/subject/mlljaftx.html