05-关于循环的一些例子

例子1:百钱百鸡问题

公鸡5元钱,母鸡3元钱,小鸡3只一块钱,那么一百块买一百只鸡,有哪些组合

for x in range(0, 21):
    for y in range(0, 34):
        z = 100 - x - y
        if z % 3 == 0 and 5*x + 3*y + z//3 == 100:
            print(x, y, z)

例子2:捕鱼问题

五个人晚上去捕鱼,然后把鱼放下就睡觉去了。

A第一个醒来,把鱼分成5份,然后扔掉了多余的一条,并拿走属于自己那一份;B第二个醒来,不知道A已经分过,所以又把鱼分成5份,拿走自己的那一份,扔掉多余的一条……依次类推。

问,他们一共至少捕了多少鱼?

fish = 1
while True:
    next_fish = fish
    is_enough = True
    for turn in range(5):
        if (next_fish - 1) % 5 == 0:
            next_fish = (next_fish // 5) * 4
        else:
            is_enough = False
            break
    if is_enough:
        print(fish)
        break
    fish += 1

我觉得难点在于:

  1. 每次分鱼要确定鱼的总数减一是否是五的倍数,如果是就说明这轮是够的
  2. 下一轮鱼的数量,用鱼的总数除以5再乘4就可以比较方便的的出,我一开始想着fish - (fish //5) -1
  3. 鱼最少6条,每次至少+5。

例子3:猜数字游戏

规则:产生一个随机数 1-100,猜5次,每次提示大小

import random
num = random.randint(1, 1001)
for i in range(7):
    guess_num = int(input("请输入你猜的数字:"))
    if num == guess_num:
        print("恭喜你猜对啦")
    elif guess_num - num > 0:
        print("比你猜的数字小")
    else:
        print("比你猜的数字大")
print(f"5次都没猜对,太弱了,正确答案是{num}")

例子4:输入5个1-99的整数,计算平均值,找最大值,最小值

ave_num = 0
min_num = 0
max_num = 0
for i in range(5):
    num = int(input(f"请输入第{i+1}个数字:"))
    ave_num += num
    if i == 0:
        min_num = num
        max_num = num
    elif num > max_num:
        max_num = num
    else:
        min_num = num
ave_num = ave_num / 5
print(f"平均值是:{ave_num}")
print(f"最小值是:{min_num}")
print(f"最大值是:{max_num}")

用不到的循环变量一般用_命名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值