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

Python 3.9代码中else语句被绕过,if与for循环同时打印内容如何解决

问题根因

你代码存在两个核心逻辑错误:

  • 包含判断逻辑错误:self.items中存储的是藏品实例对象,你直接用字符串类型的分类参数desc做in判断,永远会返回True,所以程序永远会进入if分支打印错误提示,不会进入else分支。
  • 代码块归属错误:遍历打印藏品信息的for循环写在了if-else结构之外,不受分类合法性判断的控制,只要存在对应分类的藏品,就会打印对应内容,最终就会出现错误提示和藏品信息同时输出的问题。

修正后代码

def displayItemFromDescription(self, desc):
    print()
    # 先筛选匹配对应分类的藏品
    matched_items = [item for item in self.items if item.desc == desc]
    if not matched_items:
        print('Sorry, that item category does not exist. Please try again.')
        return
    # 存在匹配藏品时打印表头和对应内容
    print('Items for description:', desc, '\n')
    print('{:<30s}{:<21s}{:<8s}{:<5s}'.format('Description', 'Category', 'Value', 'Amount'))
    print('-' * 65)
    for item in matched_items:
        item.display()

开发建议

  • 做包含判断时,要先确认容器内存储的元素类型和被判断的元素类型一致,不要直接用字符串和实例对象做匹配
  • 关联逻辑的代码块要放到对应判断分支内部,避免代码脱离逻辑管控

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:24:04