如何将字符串中的变量转为小写?Python代码调试求助
解决字符串大小写转换与格式化问题
核心错误点
你之前的写法错在没调用字符串的lower()方法——service.lower只是引用方法对象,必须加括号()才会执行转换操作。
输出时转小写的正确写法
如果只是需要在输出句子里把服务名转为小写,直接在format参数里调用service.lower()即可:
menu = {'Oil change' : 35, 'Tire rotation' : 19, 'Car wash' : 7} service = input('Enter desired auto service: ') print('You entered:', service) if service in menu: # 调用lower()方法完成小写转换 print('Cost of {}: ${}'.format(service.lower(), menu.get(service))) else: print('Error: Requested service is not recognized')
进阶:兼容任意输入大小写的匹配逻辑
如果想让程序忽略输入的大小写(比如输入OIL CHANGE或oil change都能匹配到Oil change),可以先标准化输入和菜单键的格式:
menu = {'Oil change' : 35, 'Tire rotation' : 19, 'Car wash' : 7} # 建立小写键与对应价格的映射 lower_menu = {k.lower(): v for k, v in menu.items()} service = input('Enter desired auto service: ') lower_service = service.lower() print('You entered:', service) if lower_service in lower_menu: # 可以选择输出小写,或者还原菜单里的原格式 print('Cost of {}: ${}'.format(lower_service, lower_menu[lower_service])) # 若要输出菜单原格式,可添加反向映射: # original_service = next(k for k, v in menu.items() if k.lower() == lower_service) # print('Cost of {}: ${}'.format(original_service, lower_menu[lower_service])) else: print('Error: Requested service is not recognized')
常见格式化误区
- 别混淆方法调用和属性引用:字符串的
lower()/upper()/title()这类方法必须加括号才能生效。 format()的参数是要插入的值,转换操作要在参数里完成,而非给format本身加.lower。
内容的提问来源于stack exchange,提问作者Whyte_Out
相关产品推荐
相关产品推荐

