将camelCasing转换为camel_casing遇问题,求技术协助
问题排查与修复
你的代码存在这几个核心问题:
- 替换后未更新原始字符串:你用
j = test.replace(i,"_"+n)生成了替换后的字符串,但没把j赋值回test,导致后续替换始终基于最初的输入,无法累积修改效果。 - loop变量限制了替换次数:
loop < 2的条件让程序只能执行一次替换操作,后续的大写字母根本没机会被处理。 - 嵌套while循环逻辑混乱:外层的
while True没有终止条件,会直接让程序陷入死循环;内层的while判断完全冗余,遍历字符处理即可。
修正后的代码:
test = input("Enter your camelCasing: ") result = [] for char in test: if char.isupper(): result.append('_') result.append(char.lower()) else: result.append(char) snake_case = ''.join(result) print(snake_case)
代码说明:
- 直接遍历输入字符串的每个字符,判断是否为大写字母。
- 遇到大写字母时,先添加下划线,再追加对应的小写字母;小写字母则直接加入结果列表。
- 最后用
join把列表拼接成完整的蛇形字符串,所有大写字母都会被正确转换。
测试输入thisDoesAThing,会输出this_does_a_thing,完全符合需求。
内容的提问来源于stack exchange,提问作者Abdul Salam
相关产品推荐
相关产品推荐

