Python使用len()统计用户输入城市列表数量结果异常排查
问题根因
计数错误的核心问题出在城市列表的赋值逻辑:
places_lived_list = [input("Which cities have you lived in: ")]
input() 函数的返回值是用户输入的完整字符串,你直接用方括号包裹这个字符串,生成的列表永远只有1个元素——不管你输入多少个用逗号分隔的城市,所有输入内容都只是列表里唯一的字符串,len()统计结果自然永远是1,和实际输入的城市数量无关。
修复方案
你需要先获取用户输入的整段字符串,再按逗号分割为独立的城市条目,同时清理输入时可能带有的多余空格、无效空值,才能得到正确的城市列表做统计。
修复后的完整可运行代码:
# 存储用户输入的姓名 myfirst_string = input("Hello, What is your name: ") # 输出姓名的前两个字符 print("The first two letters of your name is: ", myfirst_string[0] + myfirst_string[1]) # 接收居住城市输入,按逗号分割为列表,自动清理每个城市名前后空格、过滤空条目 cities_input = input("Which cities have you lived in (separate multiple cities with commas): ") places_lived_list = [city.strip() for city in cities_input.split(',') if city.strip()] # 输出居住城市列表和统计数量 print("You have lived in these cities: ", places_lived_list) city_count = len(places_lived_list) print(f"you have lived in {city_count} {'City' if city_count == 1 else 'Cities'}")
改动说明
- 用
split(',')把用户输入的逗号分隔字符串拆分为独立的城市名条目 - 用
strip()清除每个城市名前后不小心输入的空格、制表符,避免出现" 上海"这类带多余空格的无效条目 - 增加空值过滤逻辑,自动跳过用户多打逗号产生的空字符串,不会把无效内容计入城市数量
- 优化了数量输出的单复数适配,统计结果为1时显示City,大于1时显示Cities,表述更准确
内容的提问来源于stack exchange,提问作者user502652
相关产品推荐
相关产品推荐

