当前位置: 首页 > news >正文

python基础:数据类型转换、运算符(算术运算符、比较运算符、逻辑运算符、三元运算符、位运算符)

目录

一、类型转换

隐式类型转换/自动转换:

显示类型转换/强制转换:

二、运算符

算数运算符:+ - * /

比较运算符

逻辑/布尔运算符

赋值运算符:=

三元运算符

位运算符 [二进制]

运算符优先级


一、类型转换

python变量的类型不是固定,会根据变量当前值在运行时决定,可以通过内置函数type(变量)来查看其他类型,这种方式就是隐式转换,有的也称为自动转换

隐式类型转换/自动转换:

  • 变量根据使用的上下文(即当前值)在运行时决定其类型
  • 运算时数据类型会向高精度转换


显示类型转换/强制转换:

  • 将数据类型作为函数名;
  • float转换成int时会直接去掉小数点部分;
  • str转成int时,要求字符串中本身是整数;str转成float,字符串中可以是整数;
  • 强制转换后不会影响原变量和数据/值得类型。
# python类型根据该变量使用的上下文在运行时决定
var = 10
print(type(var))
var = 1.1
print(type(var))# 隐式类型转换 / 自动转换:
# 变量根据使用的上下文(即当前值)在运行时决定其类型
# 运算时数据类型会向高精度转换,float精度高于int
var1 = 10
var2 = var + var1  # 11.1
print(type(var2), type(var1 + 1.1))  # float# 显示类型转换 / 强制转换:
# 将数据类型作为函数名;
# float转换成int时会直接去掉小数点部分;
# str转成int时,使用int(x),要求字符串中本身是整数;str转成float,使用float(x),字符串中可以是整数;
# 强制转换后不会影响原变量和数据 / 值得类型。
# 不管什么值的int float都可以转成str,str(x)将对象x转换成字符串
i = 10
j = float(i)  # 10.0
k = str(i)
print(type(i))  # int
print(type(j))  # float
print(type(k))  # str
i = j + 1  # 11.0
print(type(i))  # float
print(type(j))  # float
print(i)  # 11.0
print(int(i))  # 11
print(type(i))  # float
n3 = "12.2"
print(float(n3))
print(int(n3))  # 字符串本身是整数才能转换

二、运算符

运算符:表示数据的运算、赋值和比较等

算数运算符:+ - * /

  • %除法取模(取余),7%5 = 2
  • // 除法取商的整数部分(向下取整) 9//2 = 4
  • ** 返回x的y次幂 2**4 = 16

比较运算符

== != < > <= >=
is/is not 判断两个变量引用对象是否为同一个/不同

逻辑/布尔运算符

and or(布尔或是短路运算符,按序false才会判断下一个条件) not

赋值运算符:=

+=/-=/*=//=/%=/**=///= 复合加减乘除/取模/幂/取整除赋值运算符 c += a 等效于 c = c + a

三元运算符

用if else实现 ? : 功能 max = a if a > b else b

位运算符 [二进制]

# 算数运算符的使用
# / // % **# / 除号,返回小数
print(10 / 3)# 取整除 // ,返回商的整数部分(向下取值)
print(10 // 3)  # 3
print(-9 // 2)  # -5# 取模 对应的公式 a%b = a -a  // b * b
print(10 % 3)   # 1
print(-10 % 3)  # 不是-1 而是-10 - (-10)// 3 * 3 = -10 - (-4)*3 = 2# 幂 **
print(3**3)print("---------")
# 比较运算符 > >= < <= == !=
# is:两个变量的引用对象是否是同一个(比较的是空间是否相同) is not(空间是否不同)
a = 9
b = 8
flag = a > b
print("flag = ",flag)
print(a is b)
print(a is not b)print("---------")
# 逻辑/布尔运算符
# and  x and y 布尔“与”:如果x是f,返回x的值,否则返回y的值。 and是短路运算符,只有第一个是true才会验证第二个
# or  x or y 布尔“或”:如果x是t,返回x的值,否则返回y的值。 or是短路运算符,只有第一个是false才会验证第二个
# not  not x 布尔“非”:如果x是f,返回t
a = 10
b = 20
print(a and b)  #因为a是true,所以返回20
print((a > b) and b)  # f
print((a < b) and b)  # 20print(a or b)  # 10
print((a > b) or b)  # 20
print((a < b) or b)  # tprint(not (a or b))  # f# 赋值运算符
# += -= *= /= %= **= //= 复合加减乘除/取模/幂/取整除赋值运算符 c += a 等效于 c = c + a
# 在python支持一个简单的方式实现变量交换
# x , y = y , x
print(f"没有交换前 a={a}, b={b}")
# 方式一
a, b = b, a
# 方式二
a = a + b
b = a - b
a = a - b
print(f"交换后 a={a}, b={b}")print('--------')
# 三元运算符 a if a>b else b
max = a if a > b else b
print(f"max = {max}")print("-----")
# 位运算
# 计算机运算的时候都是按照补码的方式计算的,当我们看运算结果,是看原码# ~ 按位取反 即把1变成0 0变成1
# -2原码 1000 0010 =》反码 1111 1101 =》补码 1111 1110 =》~-2补码0000 0001 =》原码 0000 0001 =》1
print(~-2)  # 1
print(~2)  #-3# & 按位与 即运算的两个数的相应位都是1,则为1,否则为0
# 2的补码 0000 0010
# 3的补码 0000 0011
# 2&3    0000 0010(补码)=》原码 0000 0010 =》2
# 2^3    0000 0001         原码 0000 0001 =》1
# 2|3    0000 0011                       =》3
print(2 & 3)# ^ 按位异或 即两个对应的二进制为相异时,结果为1
print(2 ^ 3)# | 按位或 只有对应的两个二进制有一个为1 结果就是1
print(2 | 3)# << 左移 运算符的各二进制全部左移若干位,由”<<“ 右边的数指定移动的位数,符号位不变,高位丢弃,低位补0
# 相当于左移一位,*2,左移两位,*2*2
# 5<<1
# 5的补码 0000 0101
# 5<<1   0000 1010(0 + 000101 +0补码) => 0001010原 =》10
print(5 << 1)
print(-5 << 1)# >> 右移 把 >> 左边的运算数右移,低位溢出,符号位不变,用符号位补溢出的高位
# 相当于整除2,向下取整
print(5 >> 1)
print(-5 >> 1)


运算符优先级


http://www.mrgr.cn/news/98268.html

相关文章:

  • CTF--bp
  • Kubernetes服务注册到consul流程实践
  • ArkTS语言入门之接口、泛型、空安全、特殊运算符等
  • vulkanscenegraph显示倾斜模型(5.9)-vsg中vulkan资源的编译
  • 基于PySide6与pycatia的CATIA绘图比例智能调节工具开发全解析
  • 入门到精通,C语言十大经典程序
  • 从0到1使用C++操作MSXML
  • C语言十大经典数学应用
  • 考研单词笔记 2025.04.13
  • 【甲子光年】DeepSeek开启AI算法变革元年
  • Go:方法
  • 【随身wifi】青龙面板保姆级教程
  • C语言的发展史
  • cursor+高德MCP:制作一份旅游攻略
  • 2025蓝桥杯C++ A组省赛 题解
  • 【嵌入式人工智能产品开发实战】(十九)—— 政安晨:小智AI嵌入式终端代码解读:【A】应用入口
  • 【深度学习与大模型基础】第10章-期望、方差和协方差
  • 【NLP】18. Encoder 和 Decoder
  • vue项目使用html2canvas和jspdf将页面导出成PDF文件
  • Restful风格接口开发