Python字符串大小写互换及数字+5模10功能实现求助(附尝试代码)
问题分析与修复方案
你的代码存在几个核心问题,导致功能无法正常运行:
- 直接对整个字符串做判断,而没有遍历逐个字符处理。
string.upper是方法对象,不是布尔值,所以第一个if判断完全不生效;而且第一个分支里直接return了,后面的数字处理代码永远不会执行。 isdigit()是方法,必须加括号调用(char.isdigit())才会返回布尔值,同样不能直接对整个字符串判断,要针对单个字符。- 数字处理时,字符串不能直接和整数相加,必须先转成int类型,处理完成后再转回字符串。
下面是修复后的代码,完全符合你的需求:
def fc1(input_string): result = [] for char in input_string: if char.isupper(): result.append(char.lower()) elif char.islower(): result.append(char.upper()) elif char.isdigit(): num = int(char) new_num = (num + 5) % 10 result.append(str(new_num)) else: # 非字母数字的字符直接保留原样 result.append(char) return ''.join(result) # 测试示例 print(fc1("Hello World, 521")) # 输出:hELLO wORLD, 076
代码逻辑说明
- 用列表
result收集每个处理后的字符,比直接拼接字符串效率更高; - 遍历输入字符串的每个字符,根据类型分别处理:
- 大写字母转小写后加入列表;
- 小写字母转大写后加入列表;
- 数字转成整数,计算
(数字+5)%10,再转回字符串加入列表; - 逗号、空格这类非字母数字的字符直接保留;
- 最后用
''.join(result)把列表中的字符拼接成完整字符串返回。
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

