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

CS50 Finance Sell模块测试报错,Flask运行正常求助

CS50 Finance Sell模块测试全部报"can't check until a frown turns upside down"错误的修复方案

前端页面(sell.html)问题修复

  • 下拉选择框未添加required属性,测试无法识别其为必填项:
    原代码:
    <select name="symbol">
    
    修改为:
    <select name="symbol" required>
    
  • 股票数量输入框未添加required和min="1"属性,不符合测试对必填正整数输入的校验要求:
    原代码:
    <input autocomplete="off" autofocus class="form-control mx-auto w-auto" name="shares" placeholder="Shares" type="number">
    
    修改为:
    <input autocomplete="off" autofocus class="form-control mx-auto w-auto" name="shares" placeholder="Shares" type="number" required min="1">
    
  • 给option标签显式设置value属性(测试可能严格要求表单提交值与选项文本一致):
    原代码:
    <option>{{ symbol["symbol"] }}</option>
    
    修改为:
    <option value="{{ symbol["symbol"] }}">{{ symbol["symbol"] }}</option>
    

后端逻辑问题修复

  1. 持仓量计算逻辑错误:原SQL直接取单条交易的shares值,无法正确计算用户当前总持仓量,需用SUM(shares)统计:
    原代码:
    owned_shares = db.execute("SELECT shares FROM transactions WHERE user_id = ? AND symbol = ? GROUP BY symbol", user_id, symbol)[0]["shares"]
    
    修改为:
    result = db.execute("SELECT SUM(shares) AS total_shares FROM transactions WHERE user_id = ? AND symbol = ?", user_id, symbol)
    owned_shares = result[0]["total_shares"] if result[0]["total_shares"] else 0
    
  2. 未处理无效股票代码的异常:当lookup(symbol)返回None时,直接取["price"]会抛出异常,需先校验:
    原代码:
    price_ = lookup(symbol)["price"]
    
    修改为:
    stock_data = lookup(symbol)
    if not stock_data:
        return apology("Invalid stock symbol")
    price_ = stock_data["price"]
    
  3. 无持仓时的页面提示:当用户没有任何持仓时,下拉框为空会导致测试失败,需在模板中添加状态提示:
    在sell.html的form前添加:
    {% if not symbols %}
        <p>You don't own any stocks to sell.</p>
    {% else %}
        <!-- 原form代码 -->
    {% endif %}
    

额外检查项

  • 确保apology函数返回符合CS50要求的响应(如400状态码、包含错误文本的页面),测试依赖此判断错误处理是否有效。
  • 确认transactions表字段类型正确:shares为整数类型,price为数值类型,避免计算时出现类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:35:28