当前位置: 首页 > 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)  # 20

print(a or b)  # 10
print((a > b) or b)  # 20
print((a < b) or b)  # t

print(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)


运算符优先级

相关文章:

  • 【力扣hot100题】(084)零钱兑换
  • Ubuntu24.04装机安装指南
  • Elasticsearch生态
  • C++ 编程指南34 - C++ 中 ABI 不兼容的典型情形
  • cursor+高德MCP:制作一份旅游攻略
  • NModbus 库在 C# 中的使用
  • 深入理解linux操作系统---第4讲 用户、组和密码管理
  • Dify + Stable Diffusion实现文生图工作流【两种方式】
  • ffmpeg 切割视频失败 ffmpeg 命令参数 -vbsf 在新版本中已经被弃用,需要使用 -bsf:v 替代
  • SD+融合ControlNet,扩散模型V1.5+约束条件边缘图+颜色图实现服装图像生成:定量对比试验结果+分析
  • 【测试】-- 测试分类
  • pg_rman备份pg数据库(在备库执行)
  • 权限管控与数据安全:衡石ChatBot在钉钉中的合规部署指南
  • 基于Cline和OpenRouter模型进行MCP实战
  • 通过平台大数据智能引擎及工具,构建设备管理、运行工况监测、故障诊断等应用模型的智慧快消开源了
  • 常见的HTTP状态码有哪些
  • GDB 调试命令详解:高效掌握常用调试技巧
  • 构件与中间件技术:概念、复用、分类及标准全解析
  • IS-IS度量值
  • 一、Appium环境安装
  • “上海之帆”巡展在日本大阪开幕,松江区组织企业集体出展
  • 国家主席习近平同普京总统共见记者
  • 乡村快递取件“跑腿费”屡禁不止?云南元江县公布举报电话
  • 中国中古史集刊高质量发展论坛暨《唐史论丛》创刊四十周年纪念会召开
  • “子宫内膜异位症”相关论文男性患者样本超六成?福建省人民医院发布情况说明
  • 全军军级以上单位新任纪委书记监委主任培训班结业