注意:我解决了这个问题
我不想让任何人浪费时间尝试修复此代码,因为我已经发现了这个问题。每个试图提供帮助的人都会得到支持。
这是我自己发现的问题,并且因为犯了这个错误而感到非常愚蠢。
错误出现在我的 HTML 代码中。我不小心将一堆字段命名为“数字”,这样做没有可供 python 脚本提取的变量。
我不敢相信我做了这么愚蠢的事情。我真的很感谢你们的努力。
另外我认为无论如何我都需要创建一个验证来防止用户输入错误,所以我很感谢你提出这个建议。
你们摇滚,感谢您的快速响应。
我会尽力帮助别人作为表达感谢的方式!
嗨,我正在尝试创建一个非常基本的基本 Web 应用程序,它接受文本输入并接受几种形式的文本并将其转换为整数,这样我就可以用它做一些数学方程式,然后显示结果
以下是大部分脚本(跳到底部查看发生故障的关键部分)
class MainPage(webapp.RequestHandler):
def get(self):
self.response.out.write("""
<html>
<body>
<form action="/battle" method="post">
<div style="color:red"><p>
<label>Attacking Player Name
<input type="text" name="attacker" id="attacker" />
</label>
</p>
<h3>Attacker's heros</h3>
<label># of Archers
<input type="number" name="number" id="archers1" min="0" max="50" />
</label>
<br>
<label># of Sword Dudes
<input type="number" name="knight1" id="# of Sword Dudes"min="0" max="50">
<br>
# of Ballistae
<input type="number" name="ballistae1" id="ballistae1"min="0" max="50">
</label>
<p><br />
<label>Defending Player Name
<input type="text" name="defender" id="defending" />
</label>
</p>
<h3>Defender's heros</h3>
<p><label># of Archers
<input type="number" name="number" id="archers2" min="0" max="50" />
</label>
<br>
<label># of Sword Dudes
<input type="number" name="knight2" id="# of Sword Dudes"min="0" max="50">
<br>
# of Ballistae
<input type="number" name="ballistae2" id="ballistae1"min="0" max="50">
</label>
</p></div>
<div><input type="submit" value="Battle!"></div>
</form>
</body>
</html>""")
class battle(webapp.RequestHandler):
def post(self):
announce=self.request.get('attacker')+" attacks "+self.request.get('defender')
archers1c=int(cgi.escape(self.request.get('archers1')))
knights1c=float(self.request.get('knights1'))
ballistae1c=float(self.request.get('ballistae1'))
armycount1=archers1+knights1+ballistae1
armycount2=self.request.get('archers2')+self.request.get('knights2')+self.request.get('ballistae2')
self.response.out.write('<html><body>You wrote:<pre>')
self.response.out.write(str(announce))
self.response.out.write(cgi.escape(self.request.get('player1name')))
self.response.out.write('<br><br>')
self.response.out.write(armycount1)
self.response.out.write('</pre></body></html>')
好的,这是我的问题:
announce=self.request.get('attacker')+" attacks "+self.request.get('defender')
archers1c=int(self.request.get('archers1'))
knights1c=int(self.request.get('knights1'))
ballistae1c=int(self.request.get('ballistae1'))
armycount1=archers1+knights1+ballistae1
当这部分脚本运行时,我在这一行得到一个错误:
archers1c=int(self.request.get('archers1'))
我收到的错误是
ValueError: invalid literal for int() with base 10: ''
如何将用户表单输入生成的字符串转换为数字,以便在数学方程式中使用?
armycount1=archers1+knights1+ballistae1
我是 Google App Engine 的新手,但对 python 并不陌生,我希望这是一个非常简单的解决方法。