穷举法:穷尽所有的可能性,然后设置条件,找到问题的解 —> 暴力破解法
题目1:鸡翁一值钱5,鸡母一值钱3,鸡雏三值钱1,用百钱买百鸡,问鸡翁、鸡母、鸡雏几何。
实现:
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)
输出:
0 25 75
4 18 78
8 11 81
12 4 84
题目2:五个人(ABCDE)晚上去捕鱼,捕了不计其数的鱼,然后累了去睡觉。第二天,A第一个醒过来,把鱼分成了5份,扔掉了多余的1条,然后拿走自己的1份;B第二个醒过来,以为鱼没分过,把剩下的鱼分成了5份,扔掉多余的1条,拿走自己的一份;C、D、E依次醒过来,都按照同样的方法来分鱼。问它们最少捕了多少条鱼?
实现:
fish = 6
while True:
is_enough = True
# 检查目前的鱼的数量够不够五个人分
total = fish
for _ in range(5): # 此处变量为_是Python中没用到时的惯用写法
if (total - 1) % 5 == 0:
total = (total - 1) // 5 * 4
else:
is_enough = False
break
if is_enough:
print(fish)
break
fish += 5
输出:
3121
题目3:计算机产生一个1-100的随机数,人输入自己猜的数字,计算机给出对应的提示“大一点”、“小一点”、或“恭喜你答对了”,直到猜中为止。如果猜的次数超过7次,计算机温馨提示“智商余额明显不足”。
实现:
import random
answer = random.randrange(1, 101)
count = 0
while True:
count += 1
user_answer = int(input('请输入你猜的数字:'))
if user_answer < answer:
print('大一点')
elif user_answer > answer:
print('小一点')
else:
print('恭喜你猜对了')
break
if count > 7:
print('温馨提示:智商余额明显不足')
题目4:输入10个1-99的整数,计算平均值,找出最大值和最小值。
实现:
total = 0
max_value, min_value = 0, 100
for _ in range(10):
temp = int(input('请输入:'))
total += temp
if temp > max_value:
max_value = temp
if temp < min_value:
min_value = temp
print(f'平均值:{total / 10}')
print(f'最大值:{max_value}')
print(f'最小值:{min_value}')