Python 支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值、位
1.数学运算符: + - * / //(整除) %(取余) **(幂运算)
print(5 / 2)结果和数学运算一样
print(6.3 /3)python中能用小数进行/ 和 //
print(5 // 2)数字一整除数字二结果只取整数部分
幂运算 x**y 求x的y次方
print(8 ** (1/3))
print(16 ** 0.5)
print(10 ** 4)
运算符的对象不一定是数据 也可以是存数据的变量
2.比较运算符 >,<, ==,!=,>=,<=
其所有结果均为布尔值(True,False)
age = int(input(""))
if age > 10:
print('what u input is bigger than 10')
elif age == 10:
print("ten")
else:
print("is smaller than 10")
补充: is的使用
一个变量有三要素,类型(变量中存储的数据类型),值(储存变量的数据),地址(变量中真正的地址)
num = 100
print(type(num),num,id(num))
结果如下:
<class 'int'> 100 8791178264496
==:判断变量的值是否相等
is :判断地址是否相等
list1 = [1,2]
list2 = [1,2]
list3 = list1
print(list1 == list2, list1 is list2, id(list1), id(list2))
print(list1 == list3, list1 is list3, id(list1), id(list3))
其结果如下
True False 4153928 4153992
True True 4153928 4153928
用一个变量给另一个变量赋值时 是将变量中的存储的数据的地址给另外一个变量
num1 = 100
num2 = 100
num3 = num1
print(id(num1), id(num2), id(num3))
结果如下
8791178264496 8791178264496 8791178264496
因为python会对数字和字符串做缓存作为常用数据备份 内存空间中已经存在了这个值就不会新开辟内存空间
3.逻辑运算符:and(与),or(或) , not(非)
逻辑运算符的运算对象和运算结果都是布尔值
and 与
值1 and 值2 --->两个都是True结果才为True
True and True ->True
False and True ->False
其他均为False要求多个条件同时满足的时候,就使用逻辑与
运算
grade = 90
score = 95
print('是否能拿奖学金', grade > 90 and score >= 95)
结果如下:
是否能拿奖学金 False
or 或
如果两个都是False,否则结果为True
多个条件中只要有几个条件满足,就使用逻辑或运算
短路操作:与:如果第一个条件是False,就不会去判断第二个条件,直接让整个与运算为False
或:如果第一个条件是True,就不会去判断第二个条件,直接让整个或运算为True
grade = 70
is_inclass = True
print('是否处分',grade < 60 or not is_inclass)
grade = 55
print('是否处分',grade < 60 or not is_inclass)
结果如下 :
是否处分 False
是否处分 True
not 非
例子同上
not True -> False
age = 20
print(not age < 10 )
4.赋值运算符: =, += , -= , *= , /= , //=, %=, **=
赋值符号的左边必须是变量;右边必须是有结果的
a. 变量 = 结果 --> 将结果赋给变量
b.复合赋值运算符要求赋值符号的左边必须必须是一个已经赋值的变量
5.运算符的优先级
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
数学运算中:** > *,/,%,// > +,-
优先级高的先算,优先级后算,如果有(),先算()里面
print(True + 10, False + 10)
结果如下:
11 10
2 数字类型
1 整型(int) 包含所有整数支持 十进制 二进制 八进制 十六进制
num0 = 123 #十进制,直接写
num1 = 0b110101 #二进制 0b 加二进制数
num2 = 0o127 #八进制 0o 加八进制数
num3 = 0x89af #十六进制0x 加十六进制数
print('十进制',123,'二进制',bin(123),'八进制',oct(123),'十六进制',hex(123))
运算结果如下:十进制 123 二进制 0b1111011 八进制 0o173 十六进制 0x7b
十进制 123 二进制 0b1111011 八进制 0o173 十六进制 0x7b
2 浮点型(float): 包含所有小数,支持科学计算
num1 = 12.5
num2 = 3.25e2 #代表3.25乘以10的2次方
布尔型(bool): 数学运算中值只有True ==1 和 False == 0
复数(complex): 实部+虚部j , 注意: j前面必须有数字,不能省略
字符串 (str)
通过单引号或者双引号括起来的字符集
str1 = 'abc'
str2 = 'abc123'
是python自己提供的一种容器型数据类型, 一个字符串中可以存多个字符,python中只有字符的概念,没有字符类型
如果在python中表示一个字符,就用一个长度是1的字符串来表示
字符串不可变但是有序
字符串中的字符
a.普通字符:包括一般的字母,数字,符号,其他文字,'a','G','1'
b.转义字符: 通关在一些特定的字符前加, 来表示特殊的功能或者意义。
'\n' -换行, ' 引号本身, ",\,\t 表示一个table 即缩进
注:1.没有阻住转义的时候,一个转义字符的长度是1,一个空格也是一个字符
2.可以再字符串最前面加r/R,来阻止转义
str1 = 'abc\n123'
str2 = 'hello\'z'
str3 = '\\n'
str4 = r'\\n'
print(str1,str2,str3,str4)
str8 = '\t姓名:小白\n\t年龄:18'
str9 = r'\t姓名:小白\n\t年龄:18'
print(str8)
print(str9)
结果如下:
abc
123 hello'z \n \\n
姓名:小白
年龄:18
\t姓名:小白\n\t年龄:18
c.编码字符:在字符串中用'\u' + 四位十六进制编码值表示一个字符
str9 = '你好\u4e00'
print(str9)
结果为
你好一
- 字符编码
计算机只能存数字数据,在存储数据时只能存数字的二进制补码
10 -> 转换成二进制 -> 求补码 (存)
a -> 97
字符的编码就是为了将字符存储到计算机中,给每个字符对应的一个固定的数字
目前计算机采用的编码方式有两种,分别是ASCII和Unicode码表 Python 种用的是Unicode
ASCII是用一个字节对字符进行编码(总共有128个字符)
Unicode包含ASCII,两个字节对字符进行编码,包含了世界上所有的语言和符号。
小写字母编码范围(a-z)97-122
大写字母编码范围(A-Z)65-90
中文编码范围 0x4e00-0x9fa5
字符编码相关的函数
a.chr(编码值) - 获取编码对应字符
print(chr(0xA020))
结果如下:
ꀠ
b.ord(字符) - 获取字符的编码值,返回的是十进制
print(ord('巧'))
结果如下:
24039
循环打印编码范围内的字符
for x in range(0x1800,0x18AF+1):
print(chr(x),end = ',')
结果如下:
᠀,᠁,᠂,᠃,᠄,᠅,᠆,᠇,᠈,᠉,᠊,᠋,᠌,᠍,,᠏,᠐,᠑,᠒,᠓,᠔,᠕,᠖,᠗,᠘,᠙,,,,,,,ᠠ,ᠡ,ᠢ,ᠣ,ᠤ,ᠥ,ᠦ,ᠧ,ᠨ,ᠩ,ᠪ,ᠫ,ᠬ,ᠭ,ᠮ,ᠯ,ᠰ,ᠱ,ᠲ,ᠳ,ᠴ,ᠵ,ᠶ,ᠷ,ᠸ,ᠹ,ᠺ,ᠻ,ᠼ,ᠽ,ᠾ,ᠿ,ᡀ,ᡁ,ᡂ,ᡃ,ᡄ,ᡅ,ᡆ,ᡇ,ᡈ,ᡉ,ᡊ,ᡋ,ᡌ,ᡍ,ᡎ,ᡏ,ᡐ,ᡑ,ᡒ,ᡓ,ᡔ,ᡕ,ᡖ,ᡗ,ᡘ,ᡙ,ᡚ,ᡛ,ᡜ,ᡝ,ᡞ,ᡟ,ᡠ,ᡡ,ᡢ,ᡣ,ᡤ,ᡥ,ᡦ,ᡧ,ᡨ,ᡩ,ᡪ,ᡫ,ᡬ,ᡭ,ᡮ,ᡯ,ᡰ,ᡱ,ᡲ,ᡳ,ᡴ,ᡵ,ᡶ,ᡷ,ᡸ,,,,,,,,ᢀ,ᢁ,ᢂ,ᢃ,ᢄ,ᢅ,ᢆ,ᢇ,ᢈ,ᢉ,ᢊ,ᢋ,ᢌ,ᢍ,ᢎ,ᢏ,ᢐ,ᢑ,ᢒ,ᢓ,ᢔ,ᢕ,ᢖ,ᢗ,ᢘ,ᢙ,ᢚ,ᢛ,ᢜ,ᢝ,ᢞ,ᢟ,ᢠ,ᢡ,ᢢ,ᢣ,ᢤ,ᢥ,ᢦ,ᢧ,ᢨ,ᢩ,ᢪ,,,,,,