我为口袋妖怪中的伤害计算器编写了一个代码,如果在 html 表单中给出所需的数据,它将返回一个计算值(基于伤害公式)。我绝对确定 html 表单是正确的,但计算器本身将返回 0.0 作为输出,尽管启用了 cgi.FieldStorage()。
本质上,我试图返回一个计算值,但我认为我缺乏缩进知识导致我的函数返回 0.0 代码发布在 pastebin 上:计算器代码
问题出现在我的 getdamage() 函数(超过 1000 行长的函数)中。开头的变量是空字符串或0,如果提交html表单,什么都填好了,变量就会有数据加进去。我还尝试在函数本身内运行计算(第 129-131 行):
if t in moveList:
basedamageindex += ((int((moveList.index(t)))) +3)
basedamage+=(int(moveList[basedamageindex]))
编写这三行是为了获得“基础伤害”,它是包含拆分 .csv 文件的 moveList 变量中的一个数值。
damage+= (((2 * (level) + 10)/250)*((attack)/(defense))*((basedamage)+2))
这行代码在 pastebin 的第 133 行。这是根据表格中获得的所有数据计算得出的损失。以下几行:134-1523 用于检查移动的“有效性”。例如,电对水非常有效,因此损坏将乘以 2。这些都是使用先前函数的 if 语句:checkmovetype(x)、typea(x) 和 typeb(x),并检查类型在 html 表单中填写的 pokemon。然后它相应地乘以第 133 行。代码最后用return damage返回damage,代码最后三行:
print '''<html><body>The damage output should be about ~'''
print getdamage()
print '''</body></html>'''
用于打印损坏。
总之,计算器只会返回 0,但应该返回一个计算值,当我提交 html 表单时,尽管所有区域都已填写。我觉得这可能是我的缩进问题。有人可以检查一下我的缩进是否不正确吗?
非常感谢。