Python实现基于不同鱼类类的钓鱼模拟函数方法
钓鱼模拟程序实现方案
核心逻辑对应实现:
- 每秒捕获间隔:调用
time.sleep(1)在每次生成鱼的逻辑前等待1秒,模拟真实钓鱼等待时长 - 可食用筛选:每生成一个鱼实例,调用其
is_good_eating()方法,仅返回True的实例加入鱼篮,其余直接放流 - 终止条件判断:维护鱼篮总重量变量,每次加入新鱼后累加重量,当总重量超过25000g时立刻终止循环,返回鱼篮列表
完整fishing.py参考代码:
import random import time from fish_species import ( AustrialianBass, ShortFinnedEel, GippslandPerch, EelTailedCatfish, GoldenPerch, SouthernSaratoga ) # 可捕获物种列表 FISH_SPECIES_LIST = [ AustrialianBass, ShortFinnedEel, GippslandPerch, EelTailedCatfish, GoldenPerch, SouthernSaratoga ] # 鱼篮总重量上限 单位:克 BASKET_WEIGHT_LIMIT = 25000 def starting_fishing(): fish_basket = [] current_total_weight = 0 while True: # 等待1秒 time.sleep(1) # 随机选择鱼种 target_fish_cls = random.choice(FISH_SPECIES_LIST) # 生成合法重量:范围1到该物种MAX_WEIGHT,避免生成0g无效鱼 fish_weight = random.randint(1, target_fish_cls.MAX_WEIGHT) # 实例化鱼对象 caught_fish = target_fish_cls(fish_weight) # 可食用判断 if caught_fish.is_good_eating(): fish_basket.append(caught_fish) current_total_weight += fish_weight # 调试日志可按需删除 print(f"入篮:{caught_fish.NAME} {fish_weight}g,当前总重:{current_total_weight}g") # 检查是否达到重量上限 if current_total_weight > BASKET_WEIGHT_LIMIT: return fish_basket else: # 放流日志可按需删除 print(f"放流:{caught_fish.NAME} {fish_weight}g,不符合食用标准")
注意事项:
- 请确认
fish_species.py中所有鱼类的MAX_WEIGHT单位为克,如果是千克单位,请将BASKET_WEIGHT_LIMIT改为25,同时保持重量生成逻辑的单位匹配- 如果需要严格遵循需求中「0到MAX_WEIGHT」的重量范围,可将重量生成代码改为
random.randint(0, target_fish_cls.MAX_WEIGHT),但建议额外加判断过滤重量为0的无效实例,避免出现逻辑异常
内容的提问来源于stack exchange,提问作者Raju Lamsal
相关产品推荐
相关产品推荐

