来自python的【算术运算符总结】

算术运算符

+ : 加法字符串拼接,字符串不能有除去拼接和 N次输出(**)的操作
- :剑法
*: : 乘法,对于字符串则为N次输出 如:a*3>>aaa
/: :除法
% : 求余
// : 取整
** : 幂次

注意点

  • 注意靠近0的计算,也就是取整的运算
  • 注意浮点数的计算
  • 注意复数的计算
  • 注意正负数计算
  • 浮点数的计算不能基本上不能精确计算,都会存在精度上的差异,因为 整数和浮点数在计算机内部存储的方式不同,整数运算是精确的,浮点数则不是,因为二进制表示十进制浮点数不能做的精确表示
  • 但凡有浮点数参与的计算,获得的结果都是浮点数

+ 加法 / 字符串的拼接

  • 加法和小学的加法一样,不再过多叙述,下一条
  • 字符串只能与字符串进行拼接,并没有像js一样,存在数据类型的隐式转换,字符串只能够字符串拼接,以及重复输出(**)
  • 复数的加法:实部与实部相加,虚部与虚部相加,满足交换律,结合律。
  • 纯数字也能够与复数相加,实部找实部,虚部找虚部
  • 小数点也可以操作哦
a = 21
b = 10
c = 0
d = -12
e = -6;
f = 0.1
g = 1.2
h = 1+2j
i = 3+4j
# add
print(a+b) #31
print(a+c) #21
# print(a+'hello')
#print('10'+10) 字符串除了拼接 和*次数 重复外 没有别的计算
print('10'+'hello') #10hello
print(d+e)#-18
print(h+i) # 4+6j 复数 实部对应相加 虚部对应相加
print(b+h) #11+2j

- 减法

  • 减法也与小学一样,不多说
  • 字符串不存在相互减,得出相差字符串的概念,会报错的哦,不合法。
  • 复数的减法:实部与实部相减,虚部与虚部相减,满足交换律,结合律。
  • 纯数字也能够与复数相减,实部找实部,虚部找虚部
  • 小数点也也可以进行操作的
a = 21
b = 10
c = 0
d = -12
e = -6;
f = 0.1
g = 1.2
h = 1+2j
i = 3+4j
#devide
print(a-b) #11
#print('hello'-'hell') 字符串没有减法
print(b-a) #-11
print(a-g) #19.8
print(a-i) #18-4j

* 乘法/字符串的N词输出

  • 单纯的乘法(复数的乘法有所不同),后面会说到

  • 字符串的重复输出 ‘a’*10 会输出10个a,但是输出的次数必须要是整数,不然会报错哦!

  • 复数的乘法: (a+bj) * (c+dj)
    解法类似与多项式相乘
    (a+bj) * (c +dj) = ac +adj +cbj +b * d * j * j
    j 为虚数,j * j = -1
    所以 最后的结果就是 ac + adj +cbj - bd

  • 复数小扩展 : 共轭复数 : (一般用于复数的除法运算 )
    (a+bj) * (a-bj) = aa -ab +ab +bb = aa +bb

a = 21
b = 10
c = 0
d = -12
e = -6;
f = 0.1
g = 1.2
h = 1+2j
i = 3+4j
print(a*b) #210
print(a*g) #25.2
print(a*h) #21+42j
print('a'*10) #aaaaaaaaaa
#print('a'*1.1) 重复需要整数的参数
print(h*i) #-5+10j
print(10*0) #0 

/ 除法 精确除法

  • / 除法和小学一样的哦 不多说了 答案是多少 就输出多少
  • 会求出小数点,保留几位小数呢? 格式化的时候是保留6位精度的 。保留小数具体位数好像适合计算机配置有关?具体情况稍后百度
  • 没有向下取整的情况
  • 复数的除法,一般会同时乘以分母的共轭负数进行简化,再变成乘法进行计算,即:(a+bj)/(c+dj) = (a+bj)(c-dj)/(c+dj)(c-dj)
a = 21
b = 10
c = 0
d = -12
e = -6;
f = 0.1
g = 1.2
h = 1+2j
i = 3+4j
print(a/b) #2.1
print(0/1) #0
print(-0.5/2) #-0.25
# print('a'/'a') No
print(h/i)  # 0.44 +0.08j

% 求余(取模) 或 输出格式化

  • 输出格式化看另一篇文章~ print的使用
  • 小数的求余数:精度会有多位 ,正常输出,负数的求余看下面。并且小数进行计算的时候会存在精度问题,二进制不能精确表示十进制的浮点数,所以会存在精度差异
  • 负数求余:x % y = (x -(( x // y)*y) 其中//的含义是除法,得出的得数进行向下取整,即向更小的数取整。即朝-x方向取整
  • 负数求余数 : 利用负数求余数公式即可,主要标记向下取整
    print(-10%3) # (-10 - (-10//3*3)) = -10 -(-4*3)=2
  • 复数的求余数 can't mod complex numbers. 无法修改复数
  • 字符串求余数 not all arguments converted during string formatting 被认为是字符串的格式化 所以也是不行的
print(a%b) #1 求余数
print(1.1%5) #1.1
print(-40%5) #0
print(-10%3) # (-10 - (-10//3*3)) = -10  -(-4*3)=2
print(10%3) #1(10 - 10//3*3) =1 向下取整数
print(-10.1%3)  #1.9000 (-10.1 -(-10.1//3*3)
print(-10.1//3) #-4
print(-10.1//3*3) #-12.0
print(-10.1+12.0) #1.9000000000000004
#小数的加减有精度问题 会出现多位小数
#print((1+2j)%2) 无法修改i复数
#print(2j%2)
#print('12'%2)  被认为是字符串的格式化 所以报错 

// 取整数 向下取整 -x方向取整

  • 整数取整:相当于除法
  • 所有的取整都是向下取整, 不存在四舍五入的方法
  • 边界值 0 同样也是向下取整
  • 负数取整 : 向下取整
  • 小数取整 : 向下取整
  • 复数取整 :can't take floor of complex number. 复数不能取整
  • 字符串取整 No
print(a//b) #2 求整数 看如何取
print(1//2) # 0.5  =0
print(12//3.3)# 3
print(0.9 // 3) # 0.0
print(-1.1 // 5) # -0.22 =  -1
print (-0.2//2) #-0.1 -1.0
print(0.2 //2) #0.1 0.0
# print((1+2j) //2) No
# print('11'//2) No 

** 幂运算

  • a ** b :a、b 都可用小数
  • 复数可以幂运算 相当于多个数据相乘
  • 负数、小数均可
print(a**b) #1667988... 幂次
print(2**3) # 8
print(1.1 **3)#1.331...
print(2 **2.1) #4.4
print((1+2j)**2) # -3+4j
# print('str'**2) No 不能
print(-2**2)

复数的加减乘除

(1) 加法:实部与实部相加,虚部与虚部相加。有纯实数,也有纯虚数,对应部位相加即可。
(a+bj)+(c+dj)=(a+c)+(b+d)j
(2)减法:变换加法符号即可,运算一样。
(3)乘法:类似多项式相乘,注意j * j = -1即可
(a+bj) * (c*dj) = ac +adj +bcj +bdjj 注意约分
(4)除法:化为分子分母形式,同时乘分母的共轭复数,进行约分。(a+bj)/(c+dj) = (a+bj)(c-dj)/(c+dj)(c-dj) 注意j * j = -1即可
(5)共轭复数:只是变换符号即可~
(a+bj) * (a-bj) = aa -ab +ab +bb = aa +bb

赋值运算符

和上诉无太大差别,只是能简写
在这里插入图片描述

补充海象运算符:在表达式内部为变量赋值

https://blog.csdn.net/qq_40244755/article/details/102685199
后面补 先mark一下 目前用的3.6 要升级到3.8

发布了35 篇原创文章 · 获赞 2 · 访问量 9815

猜你喜欢

转载自blog.csdn.net/qq_39532595/article/details/104223537
今日推荐