类型转换函数、eval,算法运算符,赋值运算符,比较运算符,逻辑运算符、位运算和运算符的优先级
类型转换函数
(1)数据类型之间的转换
类型转换分为两种:隐式转换、显示转换
// 数据类型之间的转换
x = 10
y = 3
z = x/y //在执行除法运算时,将运算结果赋值给z
print(z,type(z)) //隐式转换,通过运算隐式的转了结果的类型
//输出结果为【3.333333333333 <class'float'>】
//float类型转int类型,只保留整数部分
print('float类型转成int类型:',int(3.14)) //3
print('float类型转成int类型:',int(3.9)) //3
print('float类型转成int类型:',int(-3.14)) //-3
print('float类型转成int类型:',int(-3.9)) //-3
//将int类型转成float类型
print('int类型转成float类型:',float(10)) //10.0
//将str类型转为int类型
print(int('100')+int('200')) //300
//将字符串转为int类型或float类型报错的情况
print(int('18a')) //valueError,因为18a不是一个十进制的数
print(int('3.14')) //因为3.14不是一个整数
print(float('45a.987')) // a是没有办法转的
//chr(),ord()一对,这两个的值一一对应
print(ord('杨')) //杨在Unicode表中的整数值
print(chr(26472)) //26472整数在Unicode表中对应的字符是什么
//进制之间的转换操作,十进制与其他进制之间的转换,转换之后的结果为字符串类型
print('十进制转成十六进制:',hex(26472)) //0x6768
print('十进制转成八进制:',oct(26472)) //0o63550
print('十进制转成二进制:',bin(26472)) //0b110011101101000
(2)eval函数
Python中的内置函数
用于去掉字符串最外侧的引号,并按照Python语句方式执行去掉引号后的字符串
eval()函数经常和input()函数一起使用
eval的语法格式
变量 = eval(字符串)
// eval函数的使用
s = '3.14+3'
print(s,type(s)) //3.14+3 <class'str'>
x = eval(s) //使用eval函数去掉s这个字符串中左右的引号,执行加法运算
print(x,type(x)) //6.14000000000000001 <class'float'>
//eval()函数经常和input()函数一起使用,用来获取用户输入的数值
age = eval(input('请输入你的年龄:')) //input的结果是一个字符串类型,这个语句就是将字符串类型转换为了int类型,相当于int(age)
print(age,type(age)) // 18 <class'int'>
height = eval(input('请输入你的身高:'))
print = (height,type(height)) //187.6 <class'float'>
hello = '北京欢迎你'
print(hello) //北京欢迎你
print(eval('hello')) //北京欢迎你
//因为eval去掉了左右的引号,变成了一个没引号的hello,没有引号的hello,是这段代码中的一个变量,这个变量的值是‘北京欢迎你’
print(eval'北京欢迎你') //报错,说“北京欢迎你”没有定义,没有引号的“北京欢迎你”应该为一个变量,这个变量在代码中没有定义,所以会报错
(3)算术运算符
用于处理四则运算的符号
// 算术运算符的使用*
print('加法',1+1)
print('减法',1-1)
print('乘法',2*3)
print('除法',10/2)
print('整除',10//3)
print('取余数',10%3)
print('幂运算',2**4)
print(10/0) //0是不能整除的,会报错
算术运算符的优先级由高到低是:
第一级:**
第二级:*、/、%、//
第三级:+、-
(4)赋值运算符
// 赋值运算符的使用
x = 20 //直接赋值,直接将20赋值给左侧的变量x
y = 10
x = x+y //将x+y的和赋值给x,x的值为30
print(x) //x的值为30
x += y //相当于x=x+y
print(x) //40
x -= y //相当于x=x-y
print(x) //30
x *= y //相当于x=x*y
print(x) //300
x /= y //相当于x=x/y
print(x) //30.0 发生了类型转换 x的数据类型为float类型
print(type(x)) //<class'float'>
x %= 2 //相当于x=x%2
print(x) //0.0
z = 3
y //= z
print(y) //3
y **= 2
print(y) //9
//Python支持链式赋值
a=b=c=100 //相当于执行a=100 b=100 c=100
print(a,b,c) //100 100 100
//Python支持系列解包赋值
a,b = 10,20 //相当于执行了a=10 b=20
print(a,b) //10 20
//如何交换两个变量的值呢?
a,b = b,a //将b的值赋给a,将a的值赋给b
print(a,b) //20 10
(5)比较运算符
// 比较运算符的使用
print('98大于90吗?',98>90) //True
print('98小于90吗?',98<90) //False
print('98等于90吗?',98==90) //False
print('98不等于90吗?',98!=90) //True
print('98大于等于90吗?',98>=90) //True
print('98小于等于90吗?',98<=90) //True
(6)逻辑运算符
//逻辑运算符的使用
print(8>7 and 6>5) //True
print(8>7 and 6<5) //False
print(8<7 and 10/0) //False, 10/0并没有运算,当第一个表达式的结果为False,直接得结果,不会计算and右侧的表达式了
print(8>7 or 10/0) //True 左侧的表达式结果为True时,or的右侧表达式就根本不执行运算符
print(not 8>7) //8>7结果为True,取反后为False
(7)位运算符
位运算符,把数字看作二进制数来进行计算的。
// 位运算
print('按位与运算:',12&8) //8
print('按位或运算:',4|8) //12
print('按位异或运算:',31^22) //9
print('按位取反:',~123) //-124
左右移位
“左移位”运算(<<)是将一个二进制数向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充。
“右移位”运算 (>>) 是将一个二进制数向右移动指定的位数,右边(低位端)溢出的位被丢弃,左边(高位端)的空位端,如果最高位是0(正数)左侧空位填0,如果最高位是1(负数),左侧空位填1。
// 位运算 左乘右除
print('左移位:',2<<2) //8 表示的是2向左移动两位, 2* 2*2
print('左移位:',2<<3) //16 相当于2* 2*2*2
print('右移位:',8>>2) //2 向右移动两位相当于 8//2 4//2
print('右移位:',-8>>2) //-2