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

CS50P作业:小费计算器手动测试正常但自动测试无输出

CS50P Problem Set 0 小费计算器测试无输出问题解决

你的代码手动测试正常,但CS50P测试用例失败且输出为空的核心原因是:测试输入包含$和%符号,而你的转换函数未处理这些符号,直接转换会触发ValueError导致程序终止,因此没有输出。

比如测试用例输入$50.00时,dollars_to_float函数尝试将带$的字符串转为float会报错;输入15%时,percent_to_float函数同样会因无法解析带%的字符串抛出异常,程序提前终止后自然没有最终输出。

修正后的代码

def main():
    dollars = dollars_to_float(input("How much was the meal? $"))
    percent = percent_to_float(input("What percentage would you like to tip? %"))
    tip = dollars * percent
    print(f"Leave ${tip:.2f}")

def dollars_to_float(d):
    # 移除美元符号后转换为浮点数
    return float(d.replace("$", ""))

def percent_to_float(p):
    # 移除百分号后转换为浮点数,再转为比例值
    return float(p.replace("%", "")) / 100

main()

补充说明

  • 建议移除代码中用于调试的print(dollars)和print(percent)语句,避免额外输出干扰测试判断
  • 修正后的函数能兼容带符号和不带符号的输入,既满足手动测试场景,也符合CS50P的测试用例要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:39:51