如何在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
相关产品推荐
相关产品推荐

