Python练习题

一、选秀评分

  1. 需求:某比赛评分规则如下:由 5 位评委进行打分,最终结果去掉一个最高分和最低分后求平均成绩。

  2. 代码:

    list = [0,0,0,0,0]
    i = j = sum = 0
    
    while i < 5:
        list[i] = input("请输入第 %s 位评委评分:" % (i + 1))
        i += 1
    
    maxItem = max(list)
    minItem = min(list)
    list.remove(maxItem)      # 移除最大值
    list.remove(minItem)      # 移除最小值
    
    for j in list:
        sum += int(j)
    
    print("去掉一个最高分 %s 分," % maxItem,end="")
    print("去掉一个最低分 %s 分," % minItem,end="")
    print("选手的最终得分为:%.2f 分。" % (sum / 3))
    
  3. 运行结果:

二、斐波那契数列

  1. 需求:输出斐波那契数列前 10 位。已知第 0 位是 0,第 1 位是 1。

  2. 代码:

    i = num0 = 0
    num1 = 1
    
    print(num0,end="-")
    print(num1,end="-")
    
    # 循环条件终值为:期望位数 (10位) / 2 - 1
    while i < 4:
        num0 += num1
        num1 += num0
        print(num0,end="-")
        print(num1,end="-")
        i += 1
    
  3. 运行结果:

三、打印九九乘法表

  1. 需求:输出传统的九九乘法表

  2. 代码:

    i = j = 1
    while i < 10:
        while j <= i:
            print(j,"*",i,"=",i * j,end="  ")
            j += 1
        i += 1
        j = 1
        print()
    
  3. 运行结果:

四、鸡兔同笼问题

  1. 需求:输入鸡和兔总头数和总脚数,计算鸡和兔各有多少只。

  2. 代码:

    '''
        head: 总头数
        foot: 总脚数
        chicken: 鸡的数量
        rabbit: 兔的数量
    '''
    
    head = int(input("请输入鸡和兔的总头数:"))
    foot = int(input("请输入鸡和兔的总脚数:"))
    
    chicken = 1
    
    while chicken <= head:
        rabbit = head - chicken
        if chicken * 2 + rabbit * 4 == foot:
            print("鸡有 %s 只" % chicken)
            print("兔有 %s 只" % rabbit)
            break
        chicken += 1
        if chicken > head: print("不存在这种情况!")
    
  3. 运行结果:

五、打印素数

  1. 需求:打印 100 ~ 200 之间所有素数。若一个数能整除 2 到这个数的平方根内任意一个数,则这个数不是素数,反之是素数。

  2. 代码:

    i = 100
    j = 2
    while i <= 200:
        while j <= i ** 0.5:
            if i % j == 0: break
            else:
                j += 1
            if j > i ** 0.5: print(i,end=",")
        i += 1
        j = 2
    
  3. 运行结果:

六、打印水仙花数

  1. 需求:打印 100 ~ 999 之间的水仙花数。一个三位数的各位数立方和等于这个数本身,则这个数是水仙花数。

  2. 代码:

    i = 100
    print("水仙花数:",end="")
    
    while i < 1000:
        a = i // 100        # 百位数
        b = i // 10 % 10    # 十位数
        c = i % 10          # 各位数
        if a ** 3 + b ** 3 + c ** 3 == i:
            print(i,end="  ")
        i += 1
    
  3. 运行结果:

七、公因数与公倍数

  1. 需求:键盘输入两个数,计算两个数的最小公因数和最大公倍数。

  2. 代码:

    num1 = int(input("请输入第一个数:"))
    num2 = int(input("请输入第二个数:"))
    arr0 = []
    arr1 = []
    
    # 保证 num1 < num2
    if num1 > num2:
        t = num2
        num2 = num1
        num1 = t
    
    # 最大公因数
    i = 1
    while i < num2:
        if num1 % i == 0 and num2 % i == 0:
            arr0.append(i)
        i += 1
    
    # 最小公倍数
    j = num2
    while j <= num1 * num2:
        if j % num1 == 0 and j % num2 == 0:
            arr1.append(j)
        j += 1
    
    print("{} 和 {} 的最大公因数是:{}".format(num1,num2,max(arr0)))
    print("{} 和 {} 的最小公倍数是:{}".format(num1,num2,min(arr1)))
    
  3. 运行结果:

八、判断天数

  1. 需求:

    1. 禁止使用时间工具
    2. 键盘输入年月日,判断并打印这一天是本年的第几天及本年剩余天数
  2. 代码:

    # 判断闰年函数
    def judgeYear(y):
        if y % 400 == 0 or y % 4 == 0 and y % 100 != 0:
            return True
        return False
    
    # 求和函数
    def sumDay(list):
        sum = 0
        for i in list:
            sum += i
        return sum
    
    # 定义每个月的天数。索引 0 是当年的总天数
    yDay = [365,31,28,31,30,31,30,31,31,30,31,30,31]
    y = int(input("请输入年份:"))
    m = int(input("请输入月份:"))
    d = int(input("请输入日期:"))
    
    # 如果数闰年,修改列表
    if judgeYear(y):
        yDay[0] = 366
        yDay[2] = 29
    
    days = sumDay(yDay[1:m]) + d
    surplus = yDay[0] - days
    print("{} 年 {} 月 {} 日是 {} 年的第 {} 天".format(y,m,d,y,days))
    print("{} 年 {} 月 {} 日距离新年还有 {} 天".format(y,m,d,surplus))
    
  3. 运行结果:

九、计算阶乘

  1. 需求:键盘输入一个数,求这个数的阶乘。

  2. 代码:

    num = int(input("请输入求阶乘的数字:"))
    i = j = 1
    while i <= num:
        j *= i
        i += 1
    print(j)
    
  3. 运行结果:

十、排序

  1. 需求:使用 max() 和 min() 给列表中的数据进行排序。键盘输入排序规则。

  2. 代码:

    # 定义排序变量
    def sort(ty):
        list = [11,5,22,31,9,4,17,26,41,7]
        orList = []
        i = 0
    
        while i < len(list):
            if ty == 0: num = min(list)
            else: num = max(list)
    
            orList.append(num)
            list.remove(num)
    
            if len(list) == 0: break
        return orList
    
    # 输出参数,调用函数
    ty = int(input("请输入 0 或 1 表示排序规则,0-升序,1-降序:"))
    print(sort(ty))
    
    print()
    
    # 输出参数,调用函数
    ty = int(input("请输入 0 或 1 表示排序规则,0-升序,1-降序:"))
    print(sort(ty))
    
  3. 运行结果:

  • 49
    点赞
  • 339
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iGma_e

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值