Python 基础之运算符和基本数据类型

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

----------------- 未完待续 ----------------- 

 

猜你喜欢

转载自www.cnblogs.com/alinuxer/p/10152840.html