You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,不符合食用标准")

注意事项:

  1. 请确认fish_species.py中所有鱼类的MAX_WEIGHT单位为克,如果是千克单位,请将BASKET_WEIGHT_LIMIT改为25,同时保持重量生成逻辑的单位匹配
  2. 如果需要严格遵循需求中「0到MAX_WEIGHT」的重量范围,可将重量生成代码改为random.randint(0, target_fish_cls.MAX_WEIGHT),但建议额外加判断过滤重量为0的无效实例,避免出现逻辑异常

内容的提问来源于stack exchange,提问作者Raju Lamsal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:12:28