例子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
我觉得难点在于:
- 每次分鱼要确定鱼的总数减一是否是五的倍数,如果是就说明这轮是够的
- 下一轮鱼的数量,用鱼的总数除以5再乘4就可以比较方便的的出,我一开始想着fish - (fish //5) -1
- 鱼最少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}")
用不到的循环变量一般用_命名