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

Python鱼类保护模拟应用中<=比较测试运行异常如何修复?

修复方案

你代码存在3处核心问题,按优先级排序如下:

  • fishLength是你通过input()拿到的用户输入的体长数值字符串,不是字典,你用fishLength['Winter Flounder']的字典取值写法完全错误;同时字符串类型无法直接和数字做大小比较,需要先转换为数值类型。
  • 代码中使用了possessionLimit字典但没有提前定义,运行会直接抛出未定义错误。
  • 你用了math.inf常量但没有提前导入math模块,且体长超限的分支提示语不符合业务需求。

修复后完整代码

import math

# 定义最大允许体长
maxFishLength = {
    "Acadian Redfish" : math.inf,
    "Winter Flounder" : 12
}

# 定义持有上限,可根据需求调整数值
possessionLimit = {
    "Acadian Redfish" : math.inf,
    "Winter Flounder" : 2
}

fishTally = {
    "Acadian Redfish" : 0,
    "Winter Flounder" : 0
}

gameOver = False
while not gameOver:
    print("持有上限")
    print(possessionLimit)
    print("当前已捕获数量")
    print(fishTally)
    print("各鱼种最大允许体长(英寸)")
    print(maxFishLength)

    fishLength = input ('你捕获的鱼体长是多少(英寸)?: ') 

    print('Alewife (a), Acadian Redfish (ar), Windowpane Flounder (wf) (输入e退出):')
    item = input('是否可以保留该鱼?输入对应鱼种的1-2位代码查询:')
    if item == 'e':
        gameOver = True
    elif item == 'a':
        print("这条鱼必须放生,请重新尝试。")
    elif item =='ar':
        print('你可以保留这条鱼!')
        fishTally['Acadian Redfish']+=1
    elif item == 'wf':
        print('你捕获的冬鲽体长为 ', fishLength, ' 英寸')
        if fishTally['Winter Flounder'] < possessionLimit["Winter Flounder"]:
            # 先转换为浮点型再做比较
            if float(fishLength) <= maxFishLength['Winter Flounder']:
                print() 
                print('你可以保留这条鱼!')
                fishTally['Winter Flounder'] +=1
            else:
                print('这条冬鲽体长超过12英寸,请放生')
        else:
            print('你已达到冬鲽的持有上限')
    print()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:48:03