目录
1、Python数字
在Python中有3种类型的数——整数、浮点数和复数
1.1、整形(int)
1.1.1、整形进制表示
1.1.2、整形进制操作
十进制转化为二、八、十六进制
二、八、十六进制转化为十进制
1.2、float字符
1.3、decimal模块
decimal类型数据(decimal.Decimal)是精确的小数,可以传递给Deciaml整形或者字符串参数
>>> from decimal import Decimal
>>> mydec = Decimal.from_float(12.22)
>>> mydec
Decimal('12.2200000000000006394884621840901672840118408203125')
>>> type(mydec)
<class 'decimal.Decimal'>
>>> mydec = Decimal('12.22')
>>> mydec
Decimal('12.22')
>>> type(mydec)
<class 'decimal.Decimal'>
1.4、复数(complex)
复数(complex):复数就是实数和虚数的统称
complex的一般形式为:x+yj,其中x是复数的实数部分,y是复数的虚数部分,这里x和y都是实数
>>> a = 4+5j
>>> type(a)
<class 'complex'>
>>> dir(a)
[..., 'conjugate', 'imag', 'real']
>>> a.real
4.0
>>> a.imag
5.0
2、字符串
字符串:字符串是字符的序列;字符串是不可变的序列,一旦创造了一个符号就不能够再改变它
2.1、字符串的表示方法
单引和双引可以互相包含,但是里边的引号不能够和最外边的一样
2.2、转义字符
2.2.1、\n——换行
>>> print("san\nle")
san
le
2.2.2、\\——反斜杠符号
>>> print("san \\n le")
san \n le
2.2.3、\a——响铃
>>> print("san \a le")
san le
2.2.4、\t——制表符
1)\t表示空8个字符,tab表示空4个字符
2)\t如何实现对齐:可以把一个\t当作一组八个“坑”的萝卜坑,每个“坑”只能放一个字符(萝卜),一个元素(一大把萝卜)包含多个字符(萝卜),每次放元素(一大把萝卜)的时候只能从第一个“坑”开始放。如果元素的占位大于8或者等于8,就理解为太拥挤了,那就要再加入一个萝卜坑与前边太拥挤了了的萝卜坑拼起来。如果元素占位小于八,那么每一个元素都只占一个萝卜坑,从而各列都能实现完美对齐。
2.3、字符串取值
2.3.1、下标取值法(注意:下标是从0开始)
>>> name = "i am gold"
>>> print(name[3])
m
2.3.2、切片取值法
>>> str1 = "abcdefghijklmn"
>>> print(str1[3])
d
>>> print(str1[-6])
i
# 一般格式str[start:end:step] 当end<len(str)切片都是左闭右开区间,否则都是闭区间
# step 默认为1
# 切片取值三部曲
# 1、如果step为正,表示从左到右截取(0、1、2....),如果step为负,表示从右到左截取
# 2、确认start和end的位置
# 3、确认step的步长是多少
>>> print(str1[3:])
defghijklmn
>>> print(str1[3:20])
defghijklmn
>>> print(str1[:7])
abcdefg
>>> print(str1[3:7:2]) #按照步长为2从下标3取到7,7不取
df
>>> print(str1[-7:10:-2]) start为h,end为j,step为-2,从右往左数,很明显不能取到。
>>> print(str1[-7::+1]) # 默认相当于无穷,即end>len(str)+1的情况,所以取值为闭区间
hijklmn
>>> print(str1[-7::-1])
hgfedcba
# 字符串的倒叙
>>> print(str1[::-1])
nmlkjihgfedcba
2.4、级连字符串
2.5、如何查看帮助
2.6、字符串常用方法——判断系列(True/False)
>>> str1 = "123456"
>>> str2 = "123一二三"
>>> str3 = "abc 123"
>>> str4 = "Hello Sanchuang"
>>> str5 = "HelloSanchuang"
>>> str1.isdigit()
True
>>> str1.isnumeric()
True
>>> str2.isnumeric()
True
>>> str3.isnumeric() #因为还有空格,所以为False
False
>>> str3.istitle()
False
>>> str4.istitle()
True
>>> str4.isalpha()
False
>>> str5.isalpha()
True
>>> "abc xx".startswith("a")
True
>>> "abc xx".endswith("yy")
False
>>> "abc xx".endswith("xx")
True
>>> "abc xx".endswith("xx",3)
True
>>> "abc xx".startswith("b",0)
False
>>> "abc xx".startswith("b",1)
True
2.7、字符串常用方法——查找统计类
>>> len("shgahgk总督")
9
>>> 'ababsbsbdabsab'.count("a")
4
>>> 'ababsbsbdabsab'.count("a",7)
2
>>> 'aafhsghfg'.count("aa",1)
0
>>> 'aafhsghfg'.count("aa",1,5)
0
# 返回第一次出现该字符的下标位置,建议使用find,因为使用index,如果找不到会报错,导致程序出错
>>> 'ababsbsbdabsab'.index("a")
0
>>> 'ababsbsbdabsab'.index("aa") #这里就报错了
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> 'ababsbsbdabsab'.find('a')
0
>>> 'ababsbsbdabsab'.find('aa') # 使用find,如果找不到,会返回-1.
-1
2.8、字符串常用方法——字符串转换类(返回一个新对象)
这里边加了一个大小写互换
>>> msg = "i Am oK"
# 转化为大写
>>> print(msg.upper())
I AM OK
# 转化为小写
>>> print(msg.lower())
i am ok
# 单词首字母大写
>>> print(msg.title())
I Am Ok
# 大小写互换
>>> print(msg.swapcase())
I aM Ok
# 字符串转化为列表
>>> a = '1,2,3,4'
>>> a.split(',')
['1', '2', '3', '4']
# 列表转化为字符串
>>> a
['1', '2', '3', '4']
>>> '*'.join(a)
'1*2*3*4'
2.8.1、split()
split() 方法通过指定分隔符对字符串进行分割并返回一个列表,默认分隔符为空字符,包括空格,换行(\n),制表符(\t)等
2.9、字符串的拼接
2.9.1、字符串的拼接(+)
>>> print("i" + "am" + "lilei")
iamlilei
2.9.2、字符串的拼接(join)
>>>str2 = "".join(["i", "am", "lelei"]) # []里边是一个列表
>>> print(str2)
iamlelei
2.9.3、字符串格式化(%)
# 使用% 占位符来进行格式化
# 基本格式:%[(name)][flags][width].[precision]typecode
# - (name):命名
# - flags: +,-,' '或0。+表示右对齐;-表示左对齐;' '为一个空格,表示在正数的左侧填充一个空
# 格,从而与负数对齐,0表示使用0填充。
# - width表示显示宽度
# - precision表示小数点后精度
# flags 可选,可供选择的值有:width 可选,占有宽度
# + 右对齐;正数前加正号,负数前加负号;
# - 左对齐;正数前无符号,负数前加负号;
# 空格("") 右对齐;正数前加空格,负数前加负号;
# 0 右对齐;正数前无符号,负数前加负号;用0填充空白处
# typercode:
# %s 表示字符串
# %d 表示整形十进制
# %f 表示浮点数
# %x 表示 十六进制数
# %o 表示八进制数
>>> name = "wen"
>>> age = 18
>>> print("i am %s, my age is %s"%(name, age)) # 只有一个"坑"不需要(),只有两个及两个以上才用()
i am wen, my age is 18
>>> print("第二个格式化:%-11x" % 10)
第二个格式化:a # 这里有是个字符
>>> print("%011x"%-10)
-000000000a
>>> print("%+11x"%10)
+a
>>> print("% 11x"%10)
a
>>> print("第三个格式化:% x" % 10)
第三个格式化: a
>>>print("第四个格式化:%010.3f" % 2.4352341)
第四个格式化:000002.435
>>> print("第五个格式化:%.4f" % 4.546456) # 这里会四舍五入
第五个格式化:4.5465
>>> print("第六个格式化: %s %%"%("sc")) # 两个%表示%本身 若后边没有"坑",则%可以用%表示,若后边有"坑",则需要用"%%"来表示%
第六个格式化: sc %
2.9.4、字符串格式化——format
一般形式:{变量:[填充字符][对齐方式 <^>][宽度][格式]}
# #############format格式化
name = "wen"
age = 18
print("format01 --> 姓名:{}, 年龄:{}".format(name,age))
# output:format01 --> 姓名:wen, 年龄:18
print("format01 --> 姓名:{1}, 年龄:{0}".format(name,age)) #不写参数就是按照顺序来,参数下标是从0开始
# output:format01 --> 姓名:18, 年龄:wen
print("format01 --> 姓名:{x}, 年龄:{y}".format(x=name,y=age)) #需要在format后边定义x,y的取值;在括号中等号两边不需要有空格
# output:format01 --> 姓名:wen, 年龄:18
# 字符串格式化(format)
# {变量:[填充字符][对齐方式 <^>][宽度][格式]}
print("format03 --> {0:*>8}".format(10,20)) # 右对齐,0为第一个变量
# output:format03 --> ******10
print("format04 --> {num:@^10}".format(num=35))
# output:format04 --> @@@@35@@@@
# 精度与进制
print("format05 --> {1:*>15.2f}".format(1/3,6.333333))
# output:format05 --> ***********6.33
print("format06 --> {0:x}".format(10))
# output:format06 --> a
# 千分位格式化
print("format07 -->{0:,}".format(123456789))
# output:format07 -->123,456,789
# 索引
fdd = ["fzt", "fairy", 19, "heaven"]
print("name is {0[0]}, age is {0[2]}, identity is {0[1]}, live in the {0[3]}".format(fdd))
# output:name is fzt, age is 19, identity is fairy, live in the heaven
2.9.5、字符串格式化——f
python3 vs python2
######################## f 标志位 格式化
# python2里没有标志位 python3才有
name = "wen"
age = 18
print(f"my name is {name:a^10},ma age is {age}")
# output:my name is aaawenaaaa,ma age is 18
3、布尔类型(booleans)
3.1、什么叫布尔值
布尔值就是一个逻辑值
3.2、布尔值的取值范围
只有True和False
3.3、哪些布尔值为假⭐⭐⭐
'', 0, 0.0, (), [], {}, None, False
3.4、python3和python2关于bool的比较
Python3 中True、False 都是关键字
result = (3>4) + 1 + (5>4) # booleans可以参与运算
print(3>4) #output:False
print(result) #output:2
True -->1
False -->0
4、常量
常量是指一旦初始化后就不能够修改的固定值。注意:在Python中表示一个常量通常用大写(约定俗成,非强制)表示,如:PI=3.1615926
5、None
None是一个特殊的常量,表示一种特殊的数据类型(NoneType),表示什么都没有