如何实现输入不区分大小写?Python国家查大洲项目求助
问题分析与解决方案
你的代码核心问题是仅对输入的国家名做了大写转换,但列表里的国家名大小写不统一(比如"senegal"是全小写、"South africa"是混合大小写),导致转成大写的输入和列表元素无法匹配。
解决办法(两种可选)
方法一:提前将国家列表转为大写集合(推荐,查询效率更高)
把列表里的所有国家名都统一转成大写,同时用集合存储(集合的成员查询速度比列表快,适合后续扩展更多国家):
country = input('Tell me a country... ') # 统一转换为大写并存储为集合 countries_in_africa = { "Sao Tome and Principe".upper(), "senegal".upper(), "Seychelles".upper(), "Sierra Leone".upper(), "Somalia".upper(), "South africa".upper(), "South Sudan".upper() } if country.upper() in countries_in_africa: print('这个国家在非洲') else: print('这个国家不在非洲')
方法二:判断时动态转换列表元素的大小写
如果不想修改原列表,可以在判断时把列表里的每个元素都转成大写,再和转大写的输入对比:
country = input('Tell me a country... ') countries_in_africa = ["Sao Tome and Principe", "senegal", "Seychelles", "Sierra Leone", "Somalia", "South africa", "South Sudan", ] # 生成临时的大写列表用于匹配 if country.upper() in [c.upper() for c in countries_in_africa]: print('这个国家在非洲') else: print('这个国家不在非洲')
原理说明
不管用户输入的是Senegal、SENEGAL还是senegal,转成大写后都是SENEGAL,和列表里统一转换后的国家名一致,就能解决大小写敏感导致的匹配失败问题。
内容的提问来源于stack exchange,提问作者Nadim
相关产品推荐
相关产品推荐

