美文网首页
2018-09-29循环和选择(if,for,while)提高题

2018-09-29循环和选择(if,for,while)提高题

作者: MW演员 | 来源:发表于2018-09-30 10:34 被阅读0次

    提高题:

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

    age = int(input('请输入年龄0~100内'))
    
    while True:
        if 0 <= age <= 100:
            break
        else:
            age = int(input('请输入年龄0~100内'))
    
    if age <= 12:
        print('儿童')
    elif age <= 18:
        print('未成年')
    elif age <= 25:
        print('成年人')
    elif age <= 50:
        print('青壮年')
    else:
        print('老年人')
    
    结果

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

    num = 1
    
    for x in range(1,6):
        num *= x    
    
    print('%d! = %d' % (x,num) )
    
    结果

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

    sum1 = 0
    
    for i in range(1,21):
        temp = 1 
        for j in range(1,i+1):
            temp *= j
        sum1 += temp
    print(sum1)
    
    结果

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

    sum1 = 0
    
    for i in range(1,21):
        denominator = 1
        for j in range(1,i+1):
            denominator *= j
        sum1 += 1/denominator
    
    print(sum1)
    
    结果

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

    sum1 = 0
    
    n = int(input('请输入一个大于0的数,输入0结束输入'))
    
    while True:
        if n != 0 & str(n).isdigit():
            sum1 += n
            n = int(input('请继续输入需要求和的数,输入0结束输入'))
        else:
            break
    
    print('结果为:%d'% (sum1))
    
    结果

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

    sum1 = 0
    n = int(input('请输入一个数,作为循环次数'))
    m = int(input('请输入一个数(对a求和)'))
    
    for i in range(1,n+1):
        temp = ''
        for j in range(1,i+1):
            temp += str(m)
        if i == n:
            print('%s' % (temp), end = '')  
        else:
            print('%s' % (temp), end = '+') 
        sum1 += int(temp)
    
    print(' = %d'% (sum1))
    
    结果

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

    x = int(input('请输入一个整数'))
    y = int(input('请再输入一个整数'))
    z = int(input('请再再输入一个整数'))
    max1 = x 
    
    if y > max1:
        max1 = y
    if z > max1:
        max1 = z
    
    print('max = %d' % (max1))
    
    结果

    8.控制台输出三角形

    a.根据n的值的不同,输出相应的形

     n = 5时             n = 4
      *****               ****
      ****                ***
      ***                 **
      **                  *
      *
    
     解:a题
    
    row = int(input('请输入一个大于0数'))
    
    while row > 0:
        c = 1
        while c <= row:
            print('*',end="")
            c += 1
        print('')
    
        row -= 1
    
    结果
    b.根据n的值的不同,输出相应的形状(n为奇数)
     n = 5               n = 7
       *                    *
      ***                  ***
     *****                *****
                         *******
    
    n = int(input('请输入一个大于0的奇数'))
    row = int(n/2)+1
    for x in range(1,row+1):
        print((row - x)*' ' + (2*x-1)*'*')
    
    结果

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

    for i in range(1,10):
        for j in range(1,i+1):
            print('%d*%d=%d' % (i,j,i*j),end=" ")
        print('')
    
    
    
    结果

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

    方法一:
    for x in range(1,33):
        for y in range(1,50):
            z = 100 - x - y
            if z % 2 == 0 and 3*x + 2*y + 1/2*z == 100:
                print('大马:%d 中马:%d 小马:%d' % (x,y,z))
    
    方法二:
    x = 1
    y = 1
    
    while x < 33:
    
        y = 1
    
        while y < 50:
    
            z = 100 - x -y
    
            if z % 2 == 0 and 3*x + 2*y + 1/2*z == 100:
    
                print('大马:%d 中马:%d 小马:%d' % (x,y,z))
            
            y += 1
    
        x += 1
    
    结果

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

    方法一:
    for x in range(1,20):
        for y in range(1,33):
            z = 100 - x - y
            if z % 3 == 0 and x*5 + y*3 + 1/3*z == 100:
                print('公鸡:%d 母鸡:%d 小鸡:%d' % (x,y,z))
    方法二:
    x = 1       #大
    y = 1       #中
    
    while x <= 20:
        y = 1
        while y <= 33:
            z = 100 - x - y
            if z % 3 == 0 and x*5 + y*3 + 1/3*z == 100:
                print('公鸡:%d 母鸡:%d 小鸡:%d' % (x,y,z))
            y += 1
        x += 1
    
    结果

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

    for x in range(1,6):
        for y in range(1,50):
            z = 100 - x - y
            if z % 5 == 0 and 15*x + 2*y + 2*z:
                print('洗发水:%d 香皂:%d 牙刷:%d' % (x,y,z))
    
    结果

    相关文章

      网友评论

          本文标题:2018-09-29循环和选择(if,for,while)提高题

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