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
相关产品推荐
相关产品推荐

