当数据通过web表单输入时,这个程序应该计算一个数字回文。它只使用python和网页.py框架。但从那以后,我使用webapp2框架将它移植到googleappengine,以便在公共服务器上启动它。当我为这个新框架重构代码时,处理计算的代码行中出现了一些问题。希望有人能帮忙解决这个问题。你知道吗
下面是处理从浏览器获取输入的类。我已经测试过了,它似乎得到了很好的输入。然后它把它发送到compute_palintip
,这应该是解决回文(最终数量)。它挂在这里。你知道吗
class result(webapp2.RequestHandler):
def post(self):
form = self.request.get_all('entries', default_value = None)
if form[0]:
if form[1]:
orig_dollar_amount = cgi.escape(form[0])
tip_percent = cgi.escape(form[1])
final_amount = compute_palintip(float(orig_dollar_amount),
float(tip_percent))
actual_tip_percent = final_amount - orig_dollar_amount
actual_tip_percent = actual_tip_percent*100/orig_dollar_amount
这是compute_palintip
代码及其助手函数:
def compute_palintip(orig_dollar_amount, tip_percent):
orig_amount_cents = orig_dollar_amount*100
final_amount = orig_amount_cents*(1.0 + tip_percent/100.0)
while(is_palindrome(final_amount) == False):
final_amount += 1
final_amount = final_amount/100
final_amount = round(final_amount, 2)
return final_amount
def is_palindrome(num):
num_str = str(num)
num_str_len = len(num_str)
for i in range(num_str_len):
if num_str[i] != num_str[num_str_len-i-1]:
return False
return True
注意事项:
compute_palintip
函数。你知道吗数学是一个同事写的,而我写的是UI类型的东西,这就是为什么我现在不能真正调试它,所以我希望其他人能找到一个我没有看到的解决方案。谢谢。你知道吗
我解决了问题,谢谢大家的帮助。小数点必须精确,我必须确保在每个位置选择是否使用int/floats/strings等,以便得到正确的结果。逐行调试,测试各种示例,并逐一纠正缺陷是唯一的方法。你知道吗
顺便说一句,这段代码的原型应用程序已经在http://third-fire-595.appspot.com/上启动并运行,任何有兴趣使用它的人都可以使用。请随时测试出一些组合,让我知道任何反馈。你知道吗
你输入的数字是多少?有些情况下
is_palindrome
永远不会返回True。e、 g.1234567890
。它将遍历整个字符串,并为每个测试返回False
。你知道吗也许您可以设置一些日志来查看程序的流程。在处理浮点数时,在算术上保持一致,并在每个数字后使用小数:
orig_dollar_amount*100.0
final_amount/100.0
final_amount += 1.0
actual_tip_percent*100.0/orig_dollar_amount
此外,您未能将
orig_dollar_amount
强制转换为浮点相关问题 更多 >
编程相关推荐