python的一点点学习笔记

自学语言,比较艰难,希望能坚持下去。


字符串处理函数

len(x)	返回x的长度
str(x)	与eval函数相反 在两侧加引号
chr(u) 	通过Unicode编码u返回对应的字符
ord(x)	返回字符x对应的Unicode编码

字符串处理方法

str.lower()/str.upper()  将全部字符小写/大写
str.split(sep=None)  返回一个列表,由str根据sep被分割的部分组成,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
str.count(sub)  返回子串sub在str中出现次数
str.replace(old,new)  将str中所有old字串替换为new
str.center(width[,fillchar]) 字符串str根据宽度width居中,fillchar作为填充字符
str.join(iter) 在iter变量除最后元素外每个元素后加一个str
",".join("12345") 结果为 "1,2,3,4,5" 主要用于字符串分割

字符串格式化

image-20210126172520810

需要注意的是,如果要输出的位数超过了规定的宽度,则以实际输出位数为准

需要重点理解的是,format的槽机制,槽中可以嵌套槽,用来表示宽度、填充等含义。比如这道题

image-20210126172852447

n = eval(input())
for i in range(1, n+1, 2):
    print("{0:^{1}}".format('*'*i, n))

这里就是槽中又嵌套了一个槽,很灵活


循环的高级用法

for ...:
    ...
    break
else:
	...

else可以跟在for/while后面用,表示如果没有在循环中执行break,那么执行else中的语句

随机数函数

random() 生成[0,1)随机小数
seed(x) 以x为种子
randint(a,b) 生成[a,b]随机整数
randrange(m,n[,k]) 生成[m,n)以k为步长的随机整数
uniform(a,b) 生成[a,b]随机小数(16位)
choice(seq) 从序列seq中随机选择一个元素
shuffle(seq) 将序列seq中元素随机排列

以字符串形式调用函数的方法

print(eval("calc({})".format(input())))

很巧妙,{}完全被输入的内容替代,再用eval去掉引号,相当于实现了print(calc(input()))print(calc(eval(input())))

但是为什么不能像上述这样实现呢

比如输入是1,2,3,4,那么input()返回的实际上是“1,2,3,4”这一整个字符串,不能被正常传参传进calc里,又或者eval之后这个输入的1,2,3,4自动变成了元组(1,2,3,4),也是无法传参的

因此这个以字符串形式调用函数的方法十分巧妙,即先用引号括住,这样就保证了输入的内容可以无损粘贴到calc()的括号中去

posted @ 2021-01-26 18:08  YoungNeal  阅读(265)  评论(1编辑  收藏  举报