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

CS50P PSET3 Grocery问题:代码为何无法通过check50检测?

CS50P Grocery List 检测不通过问题修复

问题根源

你的代码统计商品数量的逻辑是正确的,但输出顺序不符合题目要求。题目期望最终输出按字母升序排列,而你直接遍历字典的键:

  • 在Python 3.7之前,字典是无序结构;
  • 即使是3.7+的插入顺序字典,也和题目要求的字母排序逻辑不符。

看check50的失败用例:输入tortilla和sweet potato,题目期望先输出1 SWEET POTATO(字母"S"在"T"前),但你的代码按插入顺序先输出了1 TORTILLA,导致检测不通过。

修复代码

修改EOF异常处理部分的循环,对字典的键进行字母升序排序后再输出:

# Syntax of dict = {'key': value}
mydict = {}

# Infinite loop with break
while True:
    try:
        item = input().upper()
        # Search if item matches a key inside the dict
        if item in mydict:
            mydict[item] = mydict[item] + 1
        else:
            mydict[item] = 1
    except EOFError:
        # 按字母升序遍历字典键
        for item in sorted(mydict):
            print(mydict[item], item)
        break

说明

  • sorted(mydict)会默认按字符串的字母顺序对字典的键进行排序,返回一个有序列表;
  • 遍历这个有序列表输出,就能保证结果和check50的预期顺序一致,通过所有检测用例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:10:15