美文网首页
day5-homework

day5-homework

作者: Voyaserfuerte | 来源:发表于2018-09-29 20:47 被阅读0次

    基础

    读程序,总结程序的功能:

    1.

    numbers=1

    for i in range(0,20):

    numbers*=2

    print(numbers)

    打印2的20次方的值

    2.

    summation=0

    num=1

    while num<=100:

    if (num%3==0 or num%7==0) and num%21!=0:

    summation += 1

    num+=1

    print(summation)

    [1,100]以内整数中是3和7的倍数但不是21的倍数的数的总个数

    编程实现(for和while各写⼀遍):

    1. 求1到100之间所有数的和、平均值

    sum = 0
    for i in range(1,101):
        sum += i
    print("1到100之间所有数的和为:" + str(sum))
    print("1到100之间所有数的平均值为:" + str(sum / 100))
    
    sum = 0
    i = 1
    while i <= 100:
        sum += i
        i += 1
    print("1到100之间所有数的和为:" + str(sum))
    print("1到100之间所有数的平均值为:" + str(sum / 100))
    

    2. 计算1-100之间能3整除的数的和

    sum = 0
    for i in range(1,101):
        if i % 3 == 0:
            sum += i
    print("1到100之间能3整除的数的和为:" + str(sum))
    
    sum = 0
    i = 0
    while i <= 100:
        if i % 3 == 0:
            sum += i
        i += 1
    print("1到100之间能3整除的数的和为:" + str(sum))
    

    3. 计算1-100之间不能被7整除的数的和

    sum = 0
    for i in range(1,101):
        if i % 7 != 0:
            sum += i
    print("1-100之间不能被7整除的数的和为:" + str(sum))
    
    sum = 0
    i = 0
    while i <= 100:
        if i % 7 != 0:
            sum += i
        i += 1
    print("1-100之间不能被7整除的数的和为:" + str(sum))
    

    稍微困难

    1. 求斐波那契数列中第n个数的值:1,1,2,3,5,8,13,21,34....

    n = int(input("请输入想知道斐波那契数列中哪个数的值:"))
    while True:
        if n < 1:
            print("输入有误!")
        elif n < 3:
            print("值为1")
            break
        else:
            left = 1
            mid = 1
            for _ in range(0,n-2):
                right = left + mid
                left = mid
                mid = right
            print("值为" + str(right))
            break
        n = int(input("请输入想知道斐波那契数列中哪个数的值:"))
    

    2. 判断101-200之间有多少个素数,并输出所有素数。判断素数的⽅法:⽤⼀个数分别除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数

    num = 0
    for i in range(101,201):
        flag = 1
        temp = int(i**0.5) + 1
        while temp > 1:
            if i % temp == 0:
                flag = 0
                break
            temp -= 1
        if flag:
            print(str(i) + "是素数!")
            num += 1
    print("101-200之间有" + str(num) + "个素数")
    

    3. 打印出所有的⽔仙花数,所谓⽔仙花数是指⼀个三位数,其各位数字⽴⽅和等于该数本身。例如:153是⼀个⽔仙花数,因为153 = 1^3 + 5^3 + 3^3

    for i in range(100,1000):
        if i == (i % 10)**3 + (int(i/10) % 10)**3 + (int(i/100))**3:
            print(str(i)+"是水仙花数!")
    

    4. 有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数分⼦:上⼀个分数的分⼦加分⺟ 分⺟: 上⼀个分数的分⼦ fz = 2 fm = 1 fz+fm / fz

    n = 20
    m = 1
    z = 2
    for i in range(0,20-1):
        temp = m
        m = z
        z = m + temp
    print(str(z)+"/"+str(m))
    

    5. 给⼀个正整数,要求:1、求它是⼏位数 2.逆序打印出各位数字

    num = int(input("请输入一个正整数:"))
    bit = 1
    n = num
    while True:
        n = int(n / 10)
        if n != 0:
            bit += 1
        else:
            print(str(num) + "是" + str(bit) + "位数!")
            break
    

    提高

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

    while True:
        age = int(input("请输入你的年龄:"))
        if age <= 0:
            print("输入的年龄有误,请重新输入...")
        elif age <= 6:
            print("当前年龄属于儿童!")
            break
        elif age <= 17:
            print("当前年龄属于未成年!")
            break
        elif age <= 40:
            print("当前年龄属于青年!")
            break
        elif age <= 65:
            print("当前年龄属于中年!")
            break
        elif age <= 130 :
            print("当前年龄属于老年!")
            break
        else:
            print("输入的年龄有误,请重新输入...")
    

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

    product = 1
    for i in range(2,6):
        product *= i
    print("乘 5!的结果是" + str(product))
    

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

    sum=0
    product = 1
    for i in range(1,21):
        product *= i
        sum += product
    print("1+2!+3!+...+20!的和为" + str(sum))
    

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

    sum=0
    product = 1
    for i in range(1,21):
        product *= i
        sum += 1/product
    print("1+1/2!+1/3!+1/4!+...1/20!为" + str(sum))
    

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

    sum = 0
    while True:
        num = int(input("请输入须相加的数:"))
        if num == 0:
            print("所输数字和为" + str(sum))
            break
        else:
            sum += num
    

    6.例如2+22+222+2222+22222(此时共有5个数相加),a = 2,就计算2+22的和。a = 5, 计算5+55+555+5555+5555。a只能是1-9

    a = input("请输入n:")
    sum=0
    num=a
    for i in range(1,int(a)+1):
        sum += int(num)
        num += a
    print(sum)
    

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

    num = []
    for i in range(0,3):
        num.append(int(input("请输入一个数:")))
    num.sort()
    print("这三个数由小到大排序是",num[0],num[1],num[2])
    

    8.控制台输出三角形

    a.根据n的值的不同,输出相应的形状
    n = 5时             n = 4
    *****               ****
    ****                ***
    ***                 **
    **                  *
    *
    
    n = int(input("请输入n值:"))
    while n:
        i = n
        while i:
            print("*", end="")
            i -= 1
        n -= 1
        print("\n", end="")
    
    b.根据n的值的不同,输出相应的形状(n为奇数)
    n = 5               n = 7
        *                    *
       ***                  ***
      *****                *****
                          *******
    
    n = int(input("请输入n值:"))
    i=1
    str1 = '*'
    print(str1.center(50))
    while i <= n-2:
        str1 += '**'
        print(str1.center(50))
        i += 2
    

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

    乘法口诀表

    for i in range(1,10):
        for j in range(1,10):
            print("%dx%d=%d" % (i,j,i*j),end=' ')
        print('\n')
    

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

    for small in range(0,101,2):
        for mid in range(0,101):
            big = 100 - small - mid
            if big < 0:
                break
            sum = big * 3 + mid * 2 + small * 0.5
            if sum == 100:
                print("大马有:%d只,中马有:%d只,小马有:%d只" % (big, mid, small))
                break
    

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

    for small in range(0,101,3):
        for hen in range(0,101):
            cock = 100 - small - hen
            if cock < 0:
                break
            sum = cock * 5 + hen * 3 + small / 3
            if sum == 100:
                print("公鸡有:%d只,母鸡有:%d只,雏鸡有:%d只" % (cock, hen, small))
                break
    

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

    for shampoo in range(0,7,1):
        for soap in range(0,51):
            toothbrushMoney = 100 - shampoo * 15 - soap * 2
            if toothbrushMoney < 0:
                break
            if toothbrushMoney % 5 == 0:
                toothbrush = toothbrushMoney / 5
                print("洗发水有:%d瓶,香皂有:%d个,牙刷有:%d只" % (shampoo, soap, toothbrush))
    

    相关文章

      网友评论

          本文标题:day5-homework

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