运算符
python支持:数学运算符、比较运算符、逻辑运算符、赋值运算符、(位运算符)
1. 数学运算符
名称 | 数学运算符号 |
---|---|
加 | + |
减 | - |
乘 | * |
除 | / |
整除 | // |
取余 | % |
幂函数 | ** |
a. + 、- 、* 、/ 和数学中的一模一样
print(10+20)
print(11.8+19)
print(10-30)
print(3*8)
print(4/8)
print(4/3)
控制台显示
30
30.8
-20
24
0.5
1.3333333333333333
b.//(整除)
数字1//数字2:让数字1除以数字2,结果只取整数部分
print(2//5)
print(4//3)
控制台显示
0
1
c.%(取余)
数字1%数字2:让数字2对数字1取余,结果取余数部分
print(5 % 2)
print(10 % 4)
控制台显示
1
2
应用:
i.获得一个数的个位数
print(234 % 10)
控制台显示
4
ii.判断一个数的奇偶性,让这个数对2取余,看结果是1(奇数),若为0(偶数)
print(20 % 2, 21 % 2, 30 % 2, 31 % 2)
控制台显示
0 1 0 1
d.**(幂函数)
数字1** 数字2:求数字1的数字2次方
print(2 ** 4)
print(7 ** 4)
print(16 ** 0.5) # 开平方
print(8 ** (1 / 3)) # 开立方
控制台显示
16
2401
4.0
2.0
2.比较运算符
名称 | 比较运算符号 |
---|---|
大于 | > |
小于 | < |
等于 | == |
不等于 | != |
大于等于(不小于) | >= |
小于等于(不大于) | <= |
所有的比较运算符的结果都为布尔值(bool),即True和False
print(10 > 20) # False
print(10 < 20) # True
print(10 == 20) # False
print(10 == 10) # True
print(10 != 20) # True
print(10 != 20) # False
print(10 >= 20) # False
print(10 <= 20) # True
age2 = 18
print('是否成年:', age2 >= 18)
控制台显示
False
True
False
True
True
True
False
True
是否成年: True
补充:is的使用
一个变量有三大要素:类型(变量中储存的数据类型)、值(变量中储存的数据)、地址(变量中真正储存的内容即数据的内存地址)
类型:type(变量)
值:直接使用变量,就是使用值
地址:id(变量)
==和is的区别:
==判断的是值是否相等
is判断的是地址是否相等
num = 100
print(type(num), num, id(num))
控制台显示
<class 'int'> 100 1450342512
list1 = [1, 2]
list2 = [1, 2]
list3 = list1 # 用一个变量给另一个变量赋值时,是将变量中的数据储存的地址赋给另一个变量
print(list1, list2)
print(id(list1), id(list2))
print(list1 == list2, list1 is list2)
print(list1 == list3, list1 is list3)
控制台显示
[1, 2] [1, 2]
32054600 31281864
True False
True True
3.逻辑运算符
名称 | 逻辑运算符号 |
---|---|
逻辑与 | and |
逻辑或 | or |
逻辑非 | not |
逻辑运算符的运算对象都是布尔值(bool),即True和False
a.值1 and 值2:如果两个都为True,那么结果为True,否则为False;相当于生活中的“并且”
条件 | 结果 |
---|---|
True and True | True |
True and False | False |
False and False | False |
短路操作:如果第一个条件为False,那么不用看后面的条件,运算结果直接为False
练习:能拿奖学金的条件是成绩必须90分以上并且测评分不能低于95分
grade = 90
score = 95
print('是否能拿到奖学金', grade > 90 and score >= 95)
控制台显示
是否能拿到奖学金 False
b.值1 or 值2:如果两个都为False结果才为False,否则结果为Ture;相当于生活中的“或者”
条件 | 结果 |
---|---|
True and True | True |
True and False | True |
False and False | False |
应用:要求多个条件中只要有一个条件满足即可,就使用逻辑或运算
练习:如果考试成绩低于60分,或者上课不听讲就降班
grade = 70
is_notinclass = True # True代表不在班级,False代表在班级
print('是否降班', grade < 60 or is_notinclass)
控制台显示
是否降班 True
c. not 值:对值进行否定/取反
条件 | 结果 |
---|---|
not True | False |
not False | True |
练习:年龄不小于10岁
age3 = 20
print(not age3 < 10)
4.赋值运算符
名称 | 赋值运算符号 |
---|---|
等于 | = |
加等于 | += |
减等于 | -= |
乘等于 | *= |
除等于 | /= |
整除等于 | //= |
取余等于 | %= |
幂等于 | **= |
要求:复合赋值运算符号的左边除了变量以外,这个变量还应该之前被赋过值
赋值运算 | 赋值运算的过程 |
---|---|
变量+=数字 | 变量=变量+数字 |
变量-=数字 | 变量=变量-数字 |
变量*=数字 | 变量=变量*数字 |
变量/=数字 | 变量=变量/数字 |
变量//=数字 | 变量=变量//数字 |
变量%=数字 | 变量=变量%数字 |
变量**=数字 | 变量=变量**数字 |
num = 100
num2 = num # 变量给变量赋值,赋的是变量的地址
print(num3)
num3 -= 3 # num3 = num3 - 3 = 12 - 3
print(num3) # 9
控制台显示
12
9
b.运算符的优先级
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
数学运算符中:** > *,/,%,// > +,-
优先级高的先算,优先级低的后算。如果有 (), 先算 () 里面的
print(12 + 19 > 6 ** 2 + 4 or 10 + 3 < 3 * 3)
控制台显示
False
print(10 + True, 9 + False) # 布尔值(bool)中的True = 1 ,False = 0
控制台显示
11 9
数字类型
数字类型 : int , float ,complex,bool
1. 整型(int):包含所有的整数,支持十进制、二进制、八进制和十六进制
num0 = 123 # 十进制:直接写十进制数字
num1 = 0b110101 # 二进制:0b+二进制数
num2 = 0o127 # 八进制:0o+八进制数
num3 = 0x89af # 十六进制:0x+十六进制数
print(num0, num1, num2, num3) # 打印的是这个数的十进制
print('十进制', 123)
print('二进制', bin(123))
print('八进制', oct(123))
print('十六进制', hex(123))
print(0b1111011 + 2)
控制台显示
123 53 87 35247
十进制 123
二进制 0b1111011
八进制 0o173
十六进制 0x7b
125
2. 浮点型(float):包含所有的小数,支持科学计数法
num4 = 12.5
num5 = 3e2 # 代表 3 乘以 10 的 2 次方
print(num5)
num6 = 1.25e2
print(num6)
控制台显示
300.0
125.0
3. 布尔(bool):值只有True == 1 和 False == 0
True 还是表示真、确定
False 还是代表假、否定
num7 = True + 10
print(num7)
控制台显示
11
4. 复数(complex):实部 + 虚部(必须有数字,不能省略,即使是1)j
字符串
1. 认识字符串(str)
通过单引号或者双引号括起来的字符集(文本)就是字符串
str1 = '123'
str2 = 'abc123'
2. 字符串类型(str)
str 是 python 自己提供的一种容器型数据类型,一个字符串中可以存储多个字符
什么是字符:python中只有字符的概念没有字符类型,如果在python中要表示一个字符,用一个长度是1的字符串来表示
容器类型数据要知道是否可变 ,是否有序
符串是不可变但是有序:不可变指的是字符的值和字符串的长度不可变;有序指的是每个字符在字符串中的位置是确定的
例如:字符串 'abc' 和字符串 'bac' 是不一样的
3. 字符串中的字符
a. 普通字符:包含一般的字母、数字、符号、文字、其他文字,例如'a','D' ,'100','^'...
data1 = 100 # 代表数字100
data2 = '100' # 代表1、0、0组成的字符串
b. 转义字符:通过在一些特定的字母前加,来表示特殊的功能或者意义,这样的字符就是转义字符
转义字符 | 含义 |
---|---|
\n | 换行 |
' | 一个单引号 |
" | 一个双引号 |
\\ | 一个反斜杠 |
\t | 一个Tab键 |
注意:
- 没有阻止转义的时候,一个转义字符的长度是1
- 可以在字符串的最前面('字符串'之前)加r/R ,来阻止转义。(阻止字符串中的所有转义字符转义)
str3 = 'abc\n123'
print(str3)
str4 = 'hello\'A'
print(str4)
str5 = '\thelloA'
print(str5)
str6 = '\\ahello\\nA'
print(str6)
阻止转义
str7 = r'\t姓名:小白\n\t年龄:18'
print(str7)
c. 编码字符:在字符串中用 '\u1234' ,这的1234表示四位十六进制编码值表示一个字符
str8 = '你好\u4e00\u89d2'
print(str8)
- 字符编码
计算机在存储数据时只能存数字数据,而且存的是数字的二进制补码
要存数字10:10 ——> 转换成二进制 ——>求补码(计算机存储的)
字符的编码就是为了将字符存储到计算机中给每个字符对应的一个固定的数字。这个数字就是这个字
符的编码
目前计算机采用的编码方式有两种,分别是ASCII码表和Unicode码表,python中采用的是Unicode编码
ASCII码采用一个字节对字符进行编码(一共有127个字符)
Unicode码包含ASCII码,采用两个字节对字符进行编码,包含了世界上所有的语言和符号,又称万国
码
小写字母的编码范围(a-z):97 - 122
大写字母的编码范围(A-Z):65 - 90
中文编码范围:0x4e00-0x9fa5
字符编码相关的函数
a. chr(编码值) —— 获取对应的字符
print(chr(0x4ef0))
b. ord(字符) —— 获取对应的编码
print(ord('瑶'))
print(hex(ord('瑶')))
for x in range(0x4e00,0x9fa5):
print(chr(x),end=',')
字符串内建函数
- capitaliz()
字符串.capitalize() ——> 将字符串的第一个字符转换成大写
注意:只有第一个字符是字母时才有效
str1 = 'abc'
print(str1.capitalize())
- center(width,fillchar)
字符串.center(width,fillchar)——>返回一个指定宽度width居中的字符串,fillchar为填充的字符,默认为空格
注意:当width输入的值小大于字符串的长度时,字符串不变;当width输入的值大于字符串长度时,字符串才以
fillchar填充空隙
str2 = 'abc'
print(str2.center(8,'*'))
print(str2.center(2,'9')) # 输出原字符串
- count()
字符串1.count(字符串2)——>返回字符串2在字符串1里面出现的次数
str3 = 'a'
print(str3.count('a'))
print(str3.count('ab'))
- endswith()
字符串1.endswith(字符串2,start,end)——>判断字符串1从start位到end位之间的字符串是否以字符串2结束,输出结果我布尔值,即True和False
start和end都为下标值,不写默认从前到最后
str4 = 'abc'
print(str4.endswith('c', 1, 3))
print(str4.endswith('bc'))
- expandtabs()
字符串.expandtabs(tabsize)——>将字符串中的Tab键转换成tabsize长度的空格
注意:Tab指的是\t代表的Tab键
str5 = 'a\tb'
print(str5.expandtabs(7))
- find()
字符串1.find(字符串2,beg,end)——>从字符串1的beg位开始到end位结束在其中查找是否是否含有字符串2,如果
有则输出遇到的第一个索引值,如果没有则输出-1
beg为开始位置,end为结束位置
str6 = 'abcbd'
print(str6.find('b',2,8))
7.index()
字符串1.index(字符串2,beg,end)——>从字符串1的beg位开始到end位结束在其中查找是否是否含有字符串2,如果
有则输出遇到的第一个索引值,如果没有则报错
beg为开始位置,end为结束位置
str7 = 'ababc'
print(str7.index('ab',1,5))
- isalnum()
字符串1.isalnum()——>判断字符串中有字符并且所有字符都是字母或数字,则为True否则为False
注意:只有字符串中有符号才False,汉字数字都True
str8 = '09abc'
print(str8.isalnum())
- isalpha()
字符串1.isalpha()——>判断字符串中有字符并且所有字符都是字母,则为True否则为False
str9 = '09abc'
print(str9.isalpha())
- isdigit()
字符串1.isdigit()——>判断字符串1是否都为数字,是为True,否为False
str10 = '09abc'
print(str10.isdigit())
- islower()
字符串1.islower()——>如果字符串1中含有需要区分大小写的字符,并且所有的这些需要区分大小写的字符都是小写
的则返回为True,否则为False
str11 = '09abc@'
print(str11.islower())
- isnumeric()
字符串1.isnumeric()——>如果字符串1只含有数字字符,则返回True否则返回False
str12 = '09abc$'
print(str12.isnumeric())
- isspace()
字符串1.isspace()——>如果字符串1中只含有空白,则返回Ture,否则返回False
str13 = ' '
print(str13.isspace())
- istitle()
字符串1.istitle()——>如果字符串1是标题化,则返回True,否则返回False
注意:字母都是连一起的并且只有第一个字母为大写,就返回True
str14 = 'Tiles'
print(str14.istitle())
- isupper()
字符串1.isupper()——>如果字符串中含有需要区分大小写的字符,并且这类字符都是大写,则返回True,否则为False
str15 = '09744*&YYYINHJ'
print(str15.isupper())
- join()
字符串1.join(字符串2)——>将字符串1为整体插入字符串2每俩个字符中间合并成一个新的字符串
str16 = ('0')
print(str16.join('abc'))
- len()
len(字符串1)——>求字符串长度
str17 = 'abc'
print(len(str17))
- ljust()
字符串1.ljust(width,fillchar)——>返回原字符串左对齐,并使用fillchar填充到长度为width的新字符串中,
fillchar默认为空格
str18 = 'abc'
print(str18.ljust(9,'*'))
- lower()
字符串1.lower()——>转换字符串1中的所有大写字母为小写字母
str19 = 'abH0*'
print(str19.lower())
20.lstrip()
字符串1.lstrip()——>去除字符串左边的空格或指定字符
str20 = ' uhj**kj '
print(str20.lstrip())
- max()
max(字符串)——>返回字符串中最大的字母(Unicode编码值)
str21 = 'aAbB男'
print(max(str21))
- min()
min(字符串)——>返回字符串中最小的字母(Unicode编码值)
str22 = 'aAbA男'
print(min(str22))
- replace()
字符串1.replace(old,new,max)——>将字符串中的old字符串换成new字符串,换的次数不超过max次
str23 = 'abc'
str24 = '123'
print(str23.replace(str23,str24))
- rfind()
字符串1.rfind(字符串2,beg,end)——>从字符串1的beg位置从右往走找到end位置,找到字符串2返回索引值,
否则报错
str25 = "ababcbacba"
print(str25.rfind('abc'))
- rjust()
字符串1.rjust(width,fillchar)——>返回一个字符串1右对齐,并使用fillchar填充到长度为width的新字符中
str26 = ('abc')
print(str26.rjust(9,'*'))
- rstrip()
字符串1.rstrip()——>删除字符串1末尾的空格
str27 = ' 999juh '
print(str27.rstrip())
- split()
字符串1.split(字符串2,num)——>以字符串2为分隔符把字符串1分割为num段
str28 = 'abcbbbbbd'
print(str28.split('b',3))
- startswith()
字符串1.startswith(字符串2,beg,end)——>判断字符串1从beg位到end位的字符串片段是否以字符串2开头,如果
是则返回True,否则返回False
str29 = 'abcabcabc'
print(str29.startswith('abc',3,6))
- strip()
字符串1.strip()——>删除字符串1前后的空格
str30 = ' 999 999 '
print(str30.strip())
- swapcase()
字符串1.swapcase()——>将字符串1中的大写换小写,小写换大写
str31 = 'sh09*&huKJ胡kj'
print(str31.swapcase())
- title()
字符串1.title()——>将字符串的开头第一个字母大写
str32 = '907hyg0jku09&'
print(str32.title())
- upper()
字符串1.upper()——>转换字符串1中的小写为大写
str33 = 'hiud89&Kjt6哈uhj'
print(str33.upper())
- zfill()
字符串1.zfill(width)——>返回长度为width的字符串,元字符串右对齐,并前面填充0
str34 = 'hubkj'
print(str34.zfill(10))
- isdecimal()
字符串1.isdecimal()——>检查字符串1中是否只包含十进制字符,是返回True,否则返回False
str35 = '89htud哈0k('
print(str35.isdecimal())
网友评论