详解python数值与字符串高级用法

python数值与字符串高级用法

1.概述

这篇是一篇没有尽头的文章,每当过段时间,再次打开就会看到不一样的内容,有新东西在更新啊。是啊,之所以取名为高级用法,就是因为它是连载的,一个个有趣的知识点就像是一个个故事。每读一遍都有新的收获。

2.数值

2.1.美化数值

在定义数值字面量时,如果数字特别长可以通过插入_分隔符来让他变得更易读

# 格式化数值:在定义数值字面量时,如果数字特别长,可以通过插入_分隔符来变得更易读
# 以千为分隔单位,输出结果(num值为:10000)
num = 1_000_0
print(f\'num值为:{num}\')
# 输出结果
num值为:10000

补充:Python数值和字符串

数值类型

## 整型
i0 = 3
#int(x)这种方法通常在类型转换的时候使用,python定义数字一般就用最简单的
i1 = int(2)
print(\"i0 = {}\".format(i0))
print(\"i1 = {}\".format(i1))

## 浮点型
f0 = 3.14
f1=float(3.1415)
print(\"f0 = {}\".format(f0))
print(\"f1 = {}\".format(f1))

## bool型
#bool型是int型子类
print(\"isinstance(True,int):{}\".format(isinstance(True,int)))
print(\"issubclass(bool,int):{}\".format(issubclass(bool,int)))

## 算数运算
#+ - * / % // **
#/ 始终返回一个浮点数
#// 地板除,返回值取决于除数和被除数类型
#%  公式:a%b = a - (a/b)*b    python中结果向负无穷方向舍入,以b的结果为准  golang中结果正负以a为准
print(\"i0/i1 = {}\".format(i0/i1))
print(\"i0//i1 = {}\".format(i0//i1))
print(\"f0//f1 = {}\".format(f0//f1))
print(\"i0**i1 = {}\".format(i0**i1))

## 逻辑运算
#< > <= >= == !=
print(\"f1 > i1 : {}\".format(f1>i1))
# is 用于比较是否是同一个对象

## 位运算
# << 左移一位相当于*2
# >> 右移一位相当于/2
print(\"i1 << 1:{}\".format(i1<<1))

## 进制转换
#bin() 转换为二进制
#oct() 转换为八进制
#hex() 转换为十六进制
print(\"dec:{}->bin:{}\".format(i1,bin(i1)))

## 类型转换
print(\"float:{}->int:{}\".format(f1,int(f1)))

## math库
#import math
------------------------------
i0 = 3
i1 = 2
f0 = 3.14
f1 = 3.1415
isinstance(True,int):True
issubclass(bool,int):True
i0/i1 = 1.5
i0//i1 = 1
f0//f1 = 0.0
i0**i1 = 9
f1 > i1 : True
i1 << 1:4
dec:2->bin:0b10
float:3.1415->int:3

字符/字符串

####定义
# 用 \"\" 或者 \'\'
s1 = \'abcde\'
s2 = \"abcd\"
print(\"s1 type is {}\".format(type(s1)))
print(\"s2 type is {}\".format(type(s2)))
print(\"s1:{}\".format(s1))



####方法
### 增
# s1 = str.join(s2) 括号中为可迭代对象,在s2中每两个字符之间插入s1,返回新字符串
lst1 = [\"x\", \"y\", \"z\"]
s3 = s1.join(s2)
print(\"s3:{}\".format(s3))
s4 = s1.join(lst1)
print(\"s4:{}\".format(s4))

### 删


### 改
##str.split(seq=None,maxsplit=-1) 
# 将字符串按seq分割为若干片段,默认seq为空白字符(空格,tab等),返回列表
# maxsplit 指定分割次数,-1表示遍历字符串,分割1次结果为两段
# str.rsplit() 作用是从右侧开始分割
# str.splitlines([keepends]) 按换行符切换 [True]表示保留换行符
s5 = \"0a1a2a3a4a5a6\"
print(\"s5.split:{}\".format(s5.split(\"a\")))

##str.upper() 全大写
print(\"s1.upper():{}\".format(s1.upper()))

##str.lower() 全小写
print(\"s1.lower():{}\".format(s1.lower()))

##str.swapcase() 大小写互换
print(\"s1.swapcase():{}\".format(s1.swapcase()))

##str.replace(old,new[,count]) 将字符串中的old替换为new,count为替换次数,返回新字符串
print(\"s5.replace(\\\"a\\\",\\\"b\\\",3):{}\".format(s5.replace(\"a\", \"b\", 3)))

##str.strip([str]) 去除两侧的字符串, str.lstrip() 左侧去除 str.rstrip() 右侧去除
s6 = \"abc xxx def\"
print(\"s6.strip(\\\"abc\\\"):{}\".format(s6.strip(\"abc\")))

##拼接 直接用加号拼接


### 查
##索引,通过索引索引 str[i]

##切片 str[begin:end:step] 从begin到end 步长为step,当step为负数的时候表示从右到左,str[::-1]逆序输出
print(\"s6[0:4:2]:{}\".format(s6[0:4:2]))
print(\"s6[::-]:{}\".format(s6[::-1]))

##len(str)
print(\"len(s1):{}\".format(len(s1)))

##str.count() 查找字符串中子串出现的次数
print(\"s6.count(\\\"abc\\\"):{}\".format(s6.count(\"abc\")))

##str.find(sub[,begin[,end]]) 从左到右,左开右闭,返回索引,找不到返回-1
print(\"s1.find(\\\"a\\\"):{}\".format(s1.find(\"a\")))

##str.rfind(sub[,begin[,end]]) 从右到左,左开右闭,返回索引,找不到返回-1
print(\"s1.rfind(\\\"z\\\"):{}\".format(s1.find(\"z\")))

##str.index(sub[,begin[,end]]) 从左到右,左开右闭,返回索引,找不到返回 ValueError: substring not found
print(\"s1.index(\\\"a\\\"):{}\".format(s1.index(\"a\")))

##str.rindex(sub[,begin[,end]]) 从右到左,左开右闭,返回索引,找不到返回 ValueError: substring not found
# print(\"s1.rindex(\\\"z\\\"):{}\".format(s1.rindex(\"z\")))  ValueError: substring not found

##str.endswith(suffix[,start[,end]]) 判断str是否以suffix结尾,返回bool值
print(\"s6.endswith(\\\"abc\\\"):{}\".format(s6.endswith(\"abc\")))

##str.startswith(prefix[,start[,end]]) 判断str是否以prefix结尾,返回bool值
print(\"s6.startswith(\\\"xyz\\\"):{}\".format(s6.startswith(\"xyz\")))

##str.isdigit() 判断字符串是不是只有数字,返回bool型
print(\"s1.isdigit():{}\".format(s1.isdigit()))

##str.isalpha() 判断字符串是不是只有字母,返回bool型
print(\"s1.isalpha():{}\".format(s1.isalpha()))

##str.isupper() 判断字符串是不是只有大写字母,返回bool型
print(\"s1.isupper():{}\".format(s1.isupper()))



####补充
# str是不可变对象

# r/R后接字符串表示字符串中所有字符都不做转义
print(\"\'12345\\\\n\' \" + \'12345\\n\')
print(\"r\'12345\\\\n\' \" + r\'12345\\n\')

----------------------------------------------
s1 type is <class \'str\'>
s2 type is <class \'str\'>
s1:abcde
s3:aabcdebabcdecabcded
s4:xabcdeyabcdez
s5.split:[\'0\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\']
s1.upper():ABCDE
s1.lower():abcde
s1.swapcase():ABCDE
s5.replace(\"a\",\"b\",3):0b1b2b3a4a5a6
s6.strip(\"abc\"): xxx def
s6[0:4:2]:ac
s6[::-]:fed xxx cba
len(s1):5
s6.count(\"abc\"):1
s1.find(\"a\"):0
s1.rfind(\"z\"):-1
s1.index(\"a\"):0
s6.endswith(\"abc\"):False
s6.startswith(\"xyz\"):False
s1.isdigit():False
s1.isalpha():True
s1.isupper():False
\'12345\\n\' 12345

r\'12345\\n\' 12345\\n
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容