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

Flask运行自定义午餐费用分摊代码报错,请求问题排查

问题分析与修复方案

你的代码存在几个核心问题,导致无法作为Flask Web应用运行:

  • @app.route("/") 装饰器没有绑定对应的视图函数,Flask要求路由必须关联一个处理请求的函数
  • 直接使用命令行的input()和print(),这是终端程序的交互方式,Web应用需要通过网页表单实现用户交互
  • 缺少Flask应用的启动入口代码

以下是修复后的完整代码,实现网页版的午餐费用计算功能:

# app.py
from flask import Flask, render_template_string, request

app = Flask(__name__)

# 定义HTML模板,包含表单和结果展示
HTML_TEMPLATE = """
<!DOCTYPE html>
<html>
<head>
    <title>午餐费用计算器</title>
    <style>
        body { font-family: Arial, sans-serif; max-width: 600px; margin: 2rem auto; padding: 0 1rem; }
        .container { padding: 2rem; border: 1px solid #ddd; border-radius: 8px; }
        input { margin: 0.5rem 0; padding: 0.5rem; width: 100%; box-sizing: border-box; }
        button { padding: 0.7rem 1.5rem; background: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer; }
        .result { margin-top: 1.5rem; padding: 1rem; background: #f8f9fa; border-radius: 4px; }
    </style>
</head>
<body>
    <div class="container">
        <h1>欢迎使用午餐费用计算器</h1>
        <form method="POST">
            <label>总账单金额(RM):</label>
            <input type="number" step="0.01" name="bill" required>
            
            <label>服务税率(%):</label>
            <input type="number" name="tax" required>
            
            <label>分摊人数:</label>
            <input type="number" name="people" min="1" required>
            
            <button type="submit">计算</button>
        </form>
        
        {% if final_amount %}
        <div class="result">
            <p>每人需支付:RM{{ final_amount }}</p>
        </div>
        {% endif %}
    </div>
</body>
</html>
"""

@app.route("/", methods=["GET", "POST"])
def calculate_lunch():
    final_amount = None
    if request.method == "POST":
        # 获取表单提交的数据
        bill = float(request.form.get("bill"))
        tax = int(request.form.get("tax"))
        people = int(request.form.get("people"))
        
        # 计算逻辑
        total_tax_amount = (bill * tax) / 100
        total_bill = bill + total_tax_amount
        bill_per_person = total_bill / people
        final_amount = round(bill_per_person, 2)
    
    # 渲染HTML模板并传递结果
    return render_template_string(HTML_TEMPLATE, final_amount=final_amount)

# 启动Flask应用
if __name__ == "__main__":
    app.run(debug=True)

运行步骤:

  1. 确保已安装Flask:在终端执行 pip install flask
  2. 保存上述代码为app.py
  3. 在终端运行:python app.py
  4. 打开浏览器访问 http://localhost:5000 即可使用

部署建议(分享给朋友):

  • 可以使用PythonAnywhere、Heroku等平台免费部署Flask应用,按照平台指引上传代码并配置启动命令即可
  • 部署时记得关闭debug=True,改为app.run()或者按照平台要求配置启动方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:24:58