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

如何在Python中用lower()方法转换film_name参数为小写并修复逻辑错误?

问题排查与解决方案

你的代码存在几个关键错误,导致输出结果不符合预期,以下是具体分析和修正方案:

错误点拆解

  • 赋值逻辑错误:film_name==film_name.lower() 使用了比较运算符 ==,这仅仅是判断字符串是否相等,并没有修改 film_name 的实际值。要更新变量内容,必须用赋值运算符 =。
  • 循环误用:这里不需要 while 循环,while 用于重复执行代码块,而你只需要一次条件判断,应该替换为 if。
  • 方法调用错误:film_name.lower 是方法对象本身,不是执行方法后的结果,必须加括号 () 才能调用方法得到小写字符串;同时你的匹配逻辑有误,应该将输入转小写后,和全部转成小写的获奖影片列表对比,而非直接和原列表匹配。

修正后的代码

def won_golden_globe(film_name):
    golden_globes = ["Jaws", "Star Wars: Episode IV - A New Hope", "E.T. the Extra-Terrestrial", "Memoirs of a Geisha"]
    # 将输入转为小写
    lower_film = film_name.lower()
    # 把获奖列表的每个元素也转成小写,再判断是否匹配
    if lower_film in [name.lower() for name in golden_globes]:
        return True
    else:
        return False

z = won_golden_globe("jaws")
print(z)

也可以简化为更简洁的写法:

def won_golden_globe(film_name):
    golden_globes = ["Jaws", "Star Wars: Episode IV - A New Hope", "E.T. the Extra-Terrestrial", "Memoirs of a Geisha"]
    # 直接返回布尔判断结果
    return film_name.lower() in (name.lower() for name in golden_globes)

z = won_golden_globe("jaws")
print(z)

运行结果

执行后会输出 True,符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:55:26