首页 > 解决方案 > 使用 for 循环和列表理解更改大小写

问题描述

我有一个需要做的任务

有时将文本从 lowerCamelCase 转换为 snake_case 可能很有用。主要技巧是找到插入下划线的正确位置。让我们制定一个规则,它就在下一个单词的大写字母之前。如果第一个字母大写,请将其转换为小写,并且不要忘记在其前插入下划线。

我写了我的代码,由于某种原因它没有返回任何东西,它完全是空的,我的 ide 说我没有错误

word = input()
new_word = ''
for char in word:
    if char.isupper():
        new_word.join('_' + char.lower())
    else:
        new_word.join(char)
print(new_word)

该作业使用不同的单词运行多个测试,在这里它们是

样本输入 1:

Python

样本输出 1:

Python

样本输入 2:

蛇佬腔

样本输出 2:

parsel_tongue

我合法地看不出它不打印的任何原因,任何想法为什么

标签: python

解决方案


这是因为第一个测试用例都是小写的。new_word 将为空,因为循环的内部条件根本不会执行。这是我写的正确和干净的代码

word = input()
counter = 0
new_word = ""

for char in word:
    if not(char.islower()) and counter > 0:
        new_word = new_word + '_' + char.lower()
    else:
        new_word = new_word + char.lower()
    counter += 1
    
print(new_word)

推荐阅读