python - 使用 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
我合法地看不出它不打印的任何原因,任何想法为什么
解决方案
这是因为第一个测试用例都是小写的。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)
推荐阅读
- python - 程序总是返回 true
- augmented-reality - 将 .obj 或 .stl 转换为 .usdz 的最简单方法是什么?
- reactjs - React props 的两种使用方式的区别
- java - 使用循环而不是流(java9)
- python - 如何使 `cv2.imshow()` 窗口适合屏幕?
- angular - 无法从我的服务中获取数据到我的组件中
- python - 在 Python 中使用 for 循环提示有效输入?
- pandas - Pyarrow 用于镶木地板文件,还是只是熊猫?
- pandas - 非日期时间数据列表的未知字符串格式
- ruby-on-rails - MiniMagick 错误:如何使用 MiniMagick 生成 OG 图像