1. 运算符
1.1 结果是具体值(数字或字符串)的运算符
1.1.1 算数运算
1.1.2 赋值运算
1.2 结果是布尔值的运算符
1.2.1 比较运算
1.2.2 逻辑运算
1.2.3 成员运算
2. 基本数据类型入门
2.1 字符串
2.1.1 字符串介绍
在 python 中,字符串可以用单引号、双引号、三个单引号和三个双引号引起来。
name = "勒布朗" name = 'iverson' name = '''sb''' name = """"tsb"""
2.1.2 字符串的加法
[root@learnpy ~]# vim str.py n1 = "alex" n2 = "tsb" n3 = "zhang" n4 = n1 + n2 + n3 print(n4) [root@learnpy ~]# python3 str.py # 字符串的加法会将字符串拼接起来。 alextsbzhang
2.1.3 字符串的乘法
[root@learnpy ~]# vim strc.py n1 = "zhang" n2 = n1 * 10 print(n2) [root@learnpy ~]# python3 strc.py # 字符串的乘法会将字符串重复。 zhangzhangzhangzhangzhangzhangzhangzhangzhangzhang 提示:Python 中字符串只有乘法和加法,没有除法和减法。
2.2 数字
在 python 中没有用引号引起来的阿拉伯数字,例如 age = 15。
2.2.1 数字的加减乘除幂运算
a1 = 10 a2 = 20 a3 = a1 + a2 a4 = a2 - a1 a5 = a1 * a2 # 一个 * 表示乘法。 a6 = 10 / 4 # 除法取商(具体即 2.5)。 a6 = 10 //4 # 除法取商(即为 2)。 a7 = 4**4 # 幂运算。 a8 = 58 % 6 # 取模(取出算式的余数)。
2.2.2 有关将数字字符串转化为数字的问题
- 使用 print('字符串') 的方式只能输出字符串;
- 使用 input 等待输入,不输入永远等待,如 inp = input ('>>>') 方式输入的数字也会被认为是字符串;
- 将数字字符串转换为数字:new_inp = int(inp) 可以通过 int 整型转换。
2.3 布尔值
2.3.1 通过举例引出布尔值
name = "布莱恩特" if "布" in name: print('OK') else: print('Error') D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py OK # 执行结果为 OK。 name = "布莱恩特" if "布恩" in name: print('OK') else: print('Error') D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py Error # 布恩不是上面字符串的子序列,所以 Error。 name = "布莱恩特" if "布恩" not in name: print('OK') else: print('Error') D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py OK # 判断是否 not in 执行的结果。 判断某个东西是否在某个东西里包含,即为 in 或者 not in。 此时引出数据类型为布尔值,包含真(True)或假(False)。
2.3.2 布尔值运用示例
name = "布莱恩特" v = "布恩" not in name print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py True # 将判断条件结果赋值给 v,通过 print 得到布尔值。
3. 基本数据类型应用详解
3.1 数字(int)
3.1.1 数字(整型)的介绍
数字,用英文 int 代指,在 Python 3 里,数字无论有多大,都属于数字(int)类型。在 Python 2 里面数字(int)被称为整型,它有一个范围,超过这个指定的范围,就不属于整形(int)类型了,被称为长整型(long)。Python 3 里的所有类型个都是整型(整数类型)。
3.1.2 整型的所有功能都包含在 int 里面
可通过在 Pycharm 中输入 int,点击 Ctrl 键不放,鼠标点击 int 可以看到所有整型对应的功能。
3.1.3 整型的魔法
① int 将数字字符串转换为整型数字:
a = "123" print(type(a)) # 输出 a 的数据类型。 b = int(a) # 此步会将字符串“123”转换为整型数字 123。 b = b + 321 # 转换完成还可做数值运算。 print(type(b)) # 输出 b 的数据类型。 print(b) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py # 执行结果。 <class 'str'> # 此处输出了上面 a 字符串的数据类型。 <class 'int'> # 此处输出了上面 b 整型的数据类型。 444 # 此处输出了转换为整型并运算后的数字结果。 上面的数据类型和结果可以同时输出: a = "123" print(type(a),a) b = int(a) b = b + 321 print(type(b),b) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py <class 'str'> 123 # 数据类型和结果同时输出(字符串)。 <class 'int'> 444 # 数据类型和结果同时输出(整型)。
② bit_length() 当前数字的二进制至少用几位二进制位表示:
例如将数字转换为二进制位的位数: age = 5 r = age.bit_length() print(r) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 3 # 表示将整型数字 5 转换为二进制后有 3 个二进制位(即 101)。
3.2 字符串(str)
3.2.1 字符串类型介绍
字符串,用英文 str 代指。
3.2.2 字符串类型的所有功能都包含在 str 里面
可通过在 Pycharm 中输入 str,点击 Ctrl 键不放,鼠标点击 str 可以看到所有字符串类型对应的功能。
3.2.3 字符串的魔法
① capitalize() 将英文字符串的首字母改为大写:
test = "alex" v = test.capitalize() print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py Alex # 可以看到 Alex 的名字首字母变成大写了。
② test.casefold() 和 test.lower() 将英文字符串中的大写转换为小写:
test = "aLex" v1 = test.casefold() # 优先使用,包含很多未知的对应关系。 print(v1) v2 = test.lower() print(v2) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py alex alex
③ center(self, width, fillchar=None) 设置字符串长度,并将内容居中。
test = "aLex" v = test.center(20) # 此处的 20 代表总长度。 print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py aLex # 可以看到两边加了空格凑够 20 个字符。 test = "aLex" v = test.center(20,"*") # 后面加 * 则会用星号填充空白位置(可有可无,不写默认为空格,只能填一个字符)。 print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py ********aLex******** test = "alex" v = test.ljust(20,"*") # ljust 表示将内容放在左边,用指定字符串填充其他空白位置。 print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py alex**************** test = "alex" v = test.rjust(20,"*") # rjust 表示将内容放在最右边,其他位置用指定字符填充。 print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py ****************alex
④ count(self, sub, start=None, end=None) 在指定字符串中寻找包含指定字符或子序列的个数:
test = "aLexalexer" v = test.count("e") print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 3 # 此处的 3 表示上面字符串中含有指定字符 e 的个数为 3 个。 test = "aLexalexer" v = test.count("ex") print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 2 # 表示在该字符串中包含指定子序列的个数为 2 个。 test = "aLexalexer" v = test.count("ex",5) print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 1 # 从第五个字符开始找指定子序列的个数为 1个。 test = "aLexalexer" v = test.count("ex",5,6) print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 0 # 在第五个和第六个字符之间找指定子序列的个数为 0。
⑤ endswith(self, suffix, start=None, end=None) 判断字符串以什么字符结尾,正确为 True,错误为 Flase:
startswith(self, suffix, start=None, end=None) 判断字符串以什么字符开头,正确为 True,错误为 Flase: test = "alex" v = test.endswith("a") print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py False # 判断字符串是否以 a 结尾,不是所以输出 Flase。 test = "alex" v = test.endswith("ex") print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py True # 判断字符串是否以 ex 结尾,正确所以输出 True。 test = "alex" v = test.endswith("ex") print(v) v1 = test.startswith("al") # 与之对应的还有 startwith,略。 print(v1) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py True True
⑥ find(self, sub, start=None, end=None) 从开始往后找指定子序列,找到第一个获取其位置:
test = "alexalex" v = test.find('ex') print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 2 # 表示在该字符串中的第二个字符后面找到指定子序列。 test = "alexalex" v = test.find('ex',5,8) print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 6 # 表示在大于等于 5 小于 8 的区间内寻找指定子序列的位置。
⑦ format(self, *args, **kwargs) 格式化,将一个字符串中的占位符替换为指定的值。
test = 'I am {name},my age is {age}' v = test.format(name='alex',age=20) print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py I am alex,my age is 20 上面的也可以不指定名字将占位符(占位符从 0 开始)替换为指定值: test = 'I am {0},my age is {1}' v = test.format('alex',20) print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py I am alex,my age is 20 有关字典的用法: test = 'I am {name},my age is {age}' v1 = test.format(name='alex',age=20) print(v1) v2 = test.format_map({"name":'alex',"age":'20'}) # 字典,一个 KRY 对应一个值(键值对)。 print(v2) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py I am alex,my age is 20 I am alex,my age is 20
⑧ index(self, sub, start=None, end=None) 寻找字符串中的子序列,找不到就报错:【忽略、用 find】
test = "alexalex" v = test.index('ex') print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 2 # 此处找到了子序列 ex 的位置,找不到就报错。
⑨ isalnum(self) 判断字符串是否只包含数字和字母(全是字母或数字也行),不是就 False,是就 True:
test = "dag5发5+__" v = test.isalnum() print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py False # 可以看到上述字符串不是数字和字母的集合。 test = "dag5464" # 可以看到该字符串是数字和字母的集合。 v = test.isalnum() print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py True # 判断出该字符串是数字字母的集合,所以输出为 True。
⑩ expandtabs(self, tabsize=8) \t 补全下面指定字符数:
test = "username\temail\tpassword\nalinuxer\[email protected]\t123\nalinuxer\[email protected]\t123\nalinuxer\[email protected]\t123\n" v = test.expandtabs(20) print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py username email password alinuxer [email protected] 123 alinuxer [email protected] 123 alinuxer [email protected] 123 # 表示当遇到 \t 时不够 20 个字符就用空格补齐 20 个。
⑪ isalpha(self) 判断字符串是否是字母或汉字,是则 True,否则 False。
test = "as2df" v = test.isalpha() print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py False
⑫ 判断字符串是否为数字:
test = "123" v1 = test.isdecimal() # 十进制的数字【用的最多】。 v2 = test.isdigit() # 可识别诸如 ② ③ 这样的数字。 v3 = test.isnumeric() # 可识别 “二”、“四” 这样的中文数字。 print(v1,v2,v3) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py True True True
⑬ isprintable(self) 判断是否存在不可显示的字符(如:\t、\n):
test = "oiuasdfkj" # 没有不可显示的字符。 v = test.isprintable() print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py True # 所以此处显示为 True。 test = "oiua\tsdfkj" # 此处存在不可显示的 \n 字符。 v = test.isprintable() print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py False # 所以此处显示为 False。
⑭ isspace(self) 判断是否全部是空格。
test = " " # 该字符串内只有两个空格。 v = test.isspace() print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py True # 因为全部是空格,所以此处输出为 True。
⑮ istitle() 判断是否是标题:
test = "Return True if all cased characters in S are uppercase and there is" v1 = test.istitle() print(v1) v2 = test.title() print(v2) v3 = v2.istitle() print(v3) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py False # 判断是否为标题(不是每个首字母都是大写,所以 False)。 Return True If All Cased Characters In S Are Uppercase And There Is # 转换为标题。 True # 判断转换为标题的内容是否为标题(因为转换为标题了所以 True)。
⑯ join(self, iterable) 将字符串中的每一个元素按照指定分隔符进行拼接:【非常重要】
test = "你是风儿我是沙" print(test) t = ' ' # 此处指定空格为分隔符。 v = t.join(test) print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 你是风儿我是沙 你 是 风 儿 我 是 沙 test = "你是风儿我是沙" print(test) v = "_".join(test) # 还可以通过此处这种方式指定下划线为分隔符进行拼接。 print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 你是风儿我是沙 你_是_风_儿_我_是_沙
⑰ 判断是否全部是大小写和转换为大小写
test = "Alex" v1 = test.islower() # 判断是否全部为小写。 v2 = test.lower() # 转换为小写。 print(v1, v2) v1 = test.isupper() # 判断是否全部为大写。 v2 = test.upper() # 转换为大写。 print(v1,v2) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py False alex False ALEX
⑱ 默认可移除字符串两端 \t、\n 或空格字符,还可移除指定字符:
test = " alex " # 字符串两端都有一个空格。 v1 = test.lstrip() # 去除左边的空格。 print(v1) v2 = test.rstrip() # 去除右边的空格。 print(v2) v3 = test.strip() # 去除两边的空格。 print(v3) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py alex alex alex 去掉指定字符的操作:(可去掉多个字符) test = "xalex" v = test.lstrip('x') print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py alex # 可以看到通过上面指定去除了左边的 ‘x’ 字符。 还可以匹配字符串中的所有内容并去除(优先最多匹配): test = "alex" v = test.lstrip('bdxamklex') print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py # 此处全部被匹配去除。
⑲ maketrans 结合 translate 做对应关系替换:
v = "asidufkasd;fiuadkf;adfkjalsdjf" m = str.maketrans("aeiou", "12345") # 对应关系为 aeiou 对应 12345。 new_v = v.translate(m) # 将字符串中的数字通过对应关系做替换。 print(new_v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py 1s3d5fk1sd;f351dkf;1dfkj1lsdjf
⑳ partition 从左边匹配指定字符分割为三部分(匹配到第一个指定字符就分割):
test = "testasdsddfg" v = test.partition('s') print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py ('te', 's', 'tasdsddfg') # 指定 ‘s’ 匹配到第一个 s 就分割为 3 部分。 rpartition 从右边匹配指定字符分割为三部分 test = "testasdsddfg" v = test.rpartition('s') print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py ('testasd', 's', 'ddfg') # 从右边匹配到第一个指定 ‘s’ 字符分割为三份。
㉑ split rsplit 指定分割的字符将字符串分割为指定个数的部分:
test = "testasdsddfg" v1 = test.split('s',2) # 从左边匹配两个 ‘s’ 分割。 print(v1) v2 = test.rsplit('s',2) # 从右边匹配两个 ‘s’ 分割。 print(v2) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py ['te', 'ta', 'dsddfg'] ['testa', 'd', 'ddfg']
㉒ splitlines() 分割,只能根据换行分割,后面可跟 True、False 决定是否保留换行:
test = "asdfadfasdf\nasdfasdf\nadfasdf" v = test.splitlines(False) # False 表示不保留换行。 print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py ['asdfadfasdf', 'asdfasdf', 'adfasdf'] test = "asdfadfasdf\nasdfasdf\nadfasdf" v = test.splitlines(True) # True 表示保留换行。 print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py ['asdfadfasdf\n', 'asdfasdf\n', 'adfasdf']
㉓ startswith endswith 判断字符串是否以 xx 开头,以 xx 结尾:
test = "backend 1.1.1.1" v1 = test.startswith('ba') # 判断是否以 ‘ba’ 开头。 print(v1) v2 = test.endswith('a') # 判断是否以 ‘a’ 结尾。 print(v2) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py True False
㉔ swapcase 大小写转换(大写换小写,小写换大写):
test = "aLex" v = test.swapcase() print(v) D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day2/buer.py AlEX
----------------- 未完待续 -----------------