pyhton习题练习

循环类题目

2020-04-06  本文已影响0人  lvyz0207
# 1.计算 1+2+4+......+100 的和。
print(100 * 101 / 2)


# 2.计算 1+1/3+1/5+......+1/99 的和。
def test2():
    n = 50
    s = 0
    for i in range(1, n + 1):
        a = 1 / (2 * i - 1)
        s += a
    print(s)


# test2()

# 3.从键盘输入一个字符串,直到回车结束,统计字符串中的大小写英文字母各有多少个。
def test3():
    a = input("请输入一个字符串:")
    min_count = 0
    max_count = 0
    other = 0
    for i in a:
        if i >= "a" and i <= "z":
            min_count += 1
        elif i >= "A" and i <= "Z":
            max_count += 1
        else:
            other += 1
    print("小写字母个数为:{}".format(min_count))
    print("大写字母个数为:{}".format(max_count))
    print("其他类型个数为:{}".format(other))


# test3()

# 5.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...,求出这个数列的前 20 项之和。
def test5():
    a = 2
    b = 1
    s = 0
    for i in range(1, 3):
        s += a / b
        a, b = a + b, a
    print(s)


# test5()


# 6.输入若干个同学的成绩,计算平均成绩,输入的成绩为负数或大于 100 时表示结束输入。
def test6():
    score = 0
    i = 0
    while True:
        a = int(input("输入学生成绩"))
        if a < 0 or a > 100:
            break
        else:
            score += a
            i += 1
    avg = score / i
    print(avg)


# test6()

# 7.输入三个正整数 a、b、n,精确计算 a/b 的结果到小数后 n 位。
def test7():
    a = int(input("a:"))
    b = int(input("b:"))
    n = int(input("n:"))
    num = round(a / b, n)
    print(num)


# test7()

# 8.一个猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早 上又将剩下的桃子吃掉一半,又多吃了一个。
# 以后每天早上都吃了前一天剩下的一半零一个。 到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
def test8():
    a = 1
    for i in range(2, 11):
        tao = 2 * a + 1  # 第N天桃的数量
        a = tao
    print(tao)


# test8()
# 9.有一序列:1,3,5,8,13,21...,用 while 循环求出这个数列的前 20 项之和。
def test9():
    n = 4
    a1 = 3
    a2 = 5
    sum_a = 9
    while n < 6:
        a = a1 + a2
        sum_a += a
        a1, a2 = a2, a1 + a2
        n += 1
    print(sum_a)

# test9()
# 10.一个数如正好等于它的所有因子之和,则称为完数,例如 6 的因子有 1、2、3,而 6=1+2+3, 因此 6 是一个完数。编程序找出 1000 之内的所有完数。
def test10():
    # flag =

    for i in range(2,1001):
        a = 0
        for j in range(1,i):
            if i%j == 0:
                a += j
        if a == i:
            print(i)
# test10()
# 11.有近千名学生排队,7 人一行余 3 人,5 人一行余 2 人,3 人一行余 1 人,编写程序求 学生人数。
def test11():
    list1 = []
    for i in range(1,1000):
        if i%7 == 3 and i%5 ==2 and i%3==1:
            list1.append(i)
    print(max(list1))

# test11()
# 12.小华今年 12 岁,他妈妈比他大 20 岁,编写程序计算多少年后他妈妈年龄比他大一倍。
def test12():
    xiaohua = 12
    mum = xiaohua + 20
    for i in range(1,100):
        if 2*(xiaohua +i)  == (mum + i):
            print(i)
# test12()
# 13.两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决 定比赛名单。有人向队员打听比赛的名单。a 说他不和 x 比,c 说他不和 x,z 比,请编程序 找出三队赛手的名单。
def test13():
    for i in ("x", "y", "z"):
        for j in ("x", "y", "z"):
            if i != j:
                for k in ("x", "y", "z"):
                    if k != i and k != j:
                        if i != "x" and k != "x" and k != "z":
                            print("a->%s\nb->%s\nc->%s" % (i, j, k))

test13()  # 这题费了不少脑细胞!

# 14.目前世界人口是 60 亿,如每年按 1.5%的比例增长,则多少年后是 80 亿?
def test14():
    for i in range(1,1000):
        people = 60*(1.015**i)
        if people >= 80:
            print(i)
            break
test14()
# 15.一球从 80 米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第 10 次落 地时共经过多少米?第 10 次反弹多高?
def test15():
    distance = 80
    for i in range(1,11):
        height = 80/(2**i)
        distance += 2*height
    print("第 10 次反弹{}米,第 10 次落 地时共经过{}米".format(height,distance-height))

test15()


星航指挥官
上一篇 下一篇

猜你喜欢

热点阅读