Python函数is_capital实现求助:判断城市是否为州首府
修正is_capital函数的实现问题
你的代码存在几个关键问题,导致无法满足题目要求,以下是问题分析和修正方案:
问题点
- 参数命名不符合要求:题目要求函数参数是
state和city,你用了key和value,既不直观也不符合题目标注。 - 判断逻辑错误:
key and value in CAPITALS的逻辑是判断key为真值且value是字典的键,但我们需要的是验证指定州对应的首府是否等于传入的城市,而不是判断城市是否是州的名称。 - 返回值不符合要求:题目要求函数返回布尔值
True/False,但你的代码是打印字符串,没有返回值。
修正后的代码
假设给定的首府字典CAPITALS结构类似:
CAPITALS = { "California": "Sacramento", "New York": "Albany", "Texas": "Austin" }
基础版修正代码:
def is_capital(state, city): # 用get方法安全获取州对应的首府,避免state不存在时抛出KeyError return CAPITALS.get(state) == city
如果需要忽略大小写(比如处理用户输入的大小写不一致情况),可以优化为:
def is_capital(state, city): # 统一转为小写进行匹配 target_capital = CAPITALS.get(state.lower()) return target_capital is not None and target_capital.lower() == city.lower()
说明
- 基础版中,
CAPITALS.get(state)会返回对应州的首府,如果州不存在则返回None,此时None == city会返回False,符合题目要求。 - 优化版通过统一转小写,增强了函数的健壮性,能处理大小写不同的输入场景。
内容的提问来源于stack exchange,提问作者user19895297
相关产品推荐
相关产品推荐

