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

2018-09-30  本文已影响0人  MW演员

提高题:

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))
结果
上一篇下一篇

猜你喜欢

热点阅读