算法心得
我在便这个题目的时候,很慌张,不知道怎么变成,因为我本身对字符串是有一种恐惧的。但是,我逼迫自己静下来,认真分析。
- 第一步:分析题目要求
驼峰改成下划线,并看看例子,它把所有情况都列了出来,所以,我们编写的程序只要满足上面三个就可以,那我们就逐一分析。 - 第二步:分析既然要把驼峰变为下划线,那么就要分析什么时候要变
- 第三步:罗列变成下划线的条件
①从第一个我们看不出什么,只知道都是小写
②从第二个我们得出信息:当前字母为大写,前一个字母为小写,需要在中间加入’_’
③从第三个我们得出信息:当前字母为大写,前一个字母也为大写,后一个字母为小写,需要在当前字母和前一个字母之间加上’ _ ’
④得到的输出全部为小写字母,这个我们看作次要因素,最后一起转为小写
python代码
def change_name(name):
new_name = ""
name += " " # 为了防止数据溢出
for i in range(len(name)-1):
if i == 0:
new_name +=name[i]
elif name[i].isupper() and name[i-1].islower():
new_name += "_" + name[i]
# 如果不在前面加上name += " ",这里会索引越界
elif name[i].isupper() and name[i-1].isupper() and name[i+1].islower() :
new_name += "_" + name[i]
else :
new_name += name[i]
return new_name.lower()
print(change_name("variable"))
print(change_name("oneVariable"))
print(change_name("OneHTTPResquest"))
print(change_name("OneHTTPResquestAA"))
# result
variable
one_variable
one_http_resquest
one_http_resquest_aa
学到的python知识
1. ""表示空字符串
b = "" 等价于 b = str() # len(b)=0
2. 学会了判断字符的大小写
3. 深刻得体会到str类的对象为可迭代对象