010 - 列表循环综合练习题

本文包含三个编程挑战,分别涉及寻找阿姆斯特朗数、多人分鱼问题和船上的下船排序。每个挑战都通过代码解决,展示了数学在编程中的应用。阿姆斯特朗数是指其每一位数字的n次方和等于该数本身;多人分鱼问题中,五人轮流取鱼,每次取走五分之四,直至只剩15条鱼;船上的下船问题中,通过编号报数9的倍数下船,直至剩下15人。这些问题均需要逻辑思考和算法设计来解决。
摘要由CSDN通过智能技术生成
  1. 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。
    例如:1 ** 3 = 1,,1 ** 3 + 5 ** 3 + 3 ** 3 = 153。
    请找出1000以内所有的阿姆斯特朗数:

    print('1000以内所有阿姆斯特朗数:', end='')
    for i in range(1000):
        if i // 10 == 0 and i ** 1 == i:
            print(i, end=',')
        elif i // 100 == 0 and (i % 10) ** 2 + (i // 10) ** 2 == i:
            print(i, end=',')
        elif (i % 10) ** 3 + (i // 10 % 10) ** 3 + (i //100) ** 3 == i:
            print(i, end=',')
    print()
    
    # 讲解:
    for i in range(1, 1001):
        lenght = len(str(i))
        total = 0
        for j in str(i):
            total += int(j)**lenght
            if total == i:
                print(f'{i}是阿姆斯特朗数')
    
  2. A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。
    日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。 B 第二个醒来,
    也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 C、D、E依次醒来,也按同样的方法拿鱼。
    问他们至少捕了多少条鱼?

    fish = 1
    while True:
        total = fish
        for _ in range(5):
            if (total - 1) % 5 == 0:
                total = (total - 1) // 5 * 4
            else:
                fish += 1
                break
        else:
            print(f'总鱼数{fish}')
            break
    
  3. 30 个人在一条船上,超载,需要 15 人下船。于是人们排成一队,排队的位置即为他们的编号。
    报数,从 1 开始,数到 9 的人下船。如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?

    people = [i for i in range(1, 31)]
    while len(people) > 15:
        i = 1
        while i < 9:
            people.append(people.pop(0))
            i += 1
        content = people.pop(0)
        print(f'编号为{content}的人下船')
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值