iOS开发人员如何学习Python编程2-运算符1

269 阅读2分钟

这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

Python语言支持以下类型的运算符:

  1. 算术运算符
  2. 比较(关系)运算符
  3. 赋值运算符
  4. 逻辑运算符
  5. 位运算符
  6. 成员运算符
  7. 身份运算符
  8. 三目运算符

算术元运算符

Python中的算术元运算符与我们平常使用的OC或者Swift中的基本一致,比较特殊的有:

  • **:幂,返回xy次幂。例如:10**20,表示1020次方。
  • //:取整除,返回商的整数部分。例如9/2输出4。 平时使用时需注意的地方:
  1.  /计算结果是浮点数,即使两个数都是整数,结果也是浮点数: 
>>> 9/3     
3.0

>>> 10/3
3.3333333333333335
  1.  //取整除,只取整数部分,余数被抛弃: 
>>> 10//3   
3

>>> -10//3
-4  # 向下取整
  1.  %余数运算 
>>> 10%3	 
1

>>> -10%3
2	# 向下取整
  1.  divmod()同时得到商和余数,返回值是tuple (x//y, x%y)。 
>>> divmod(10,3)	
(3,1)

⚠️注意: 因为浮点数精度的问题,Python还存在一些计算方面的小问题:

0.1+0.1+0.1-0.3
5.551115123125783e-17

可以使用decimal模块:

from decimal import Decimal
Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
Decimal('0.0')

比较运算符

Python中的比较运算符与我们平常使用的OC或者Swift中的基本一致,比较特殊的有:

  • <>:不等于,比较两个对象是否不想等,类似!=。(python3<>已弃用) 需注意的地方:
  1.  ==比较数值(intstr不能直接比较): 
>>> a = 1
>>> b = 2
>>> a != b
True
>>> a <> b
  File "<stdin>", line 1
    a <> b
       ^
SyntaxError: invalid syntax
  1. 字符串与字符串之间是比较ASCII值: 
>>> 'abc' < 'xyz'   # 97 98 99 < 120 121 122
True

>>> (3,2) < ('a','b')	
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'str'
  1. 连续比较: 
>>> 3 > 2 > 1	# 3 > 2 and 2 > 1
True
>>> 3 > 2 > 2	# 3 > 2 and 2 > 2
False
>>> (3 > 2) > 1	# True and True > 1
False

赋值运算符

运算符说明例子
=赋值x = y
-=减赋值x -= y, x = x - y
*=乘赋值x *= y, x = x * y
/=除赋值x /= y, x = x / y
%=取余数赋值x %= y, x = x % y
**=幂赋值x **= y, x = x ** y
//=取整数赋值x //= y, x = x // y
&=按位与赋值x &= y, x = x & y
=按位或赋值x= y, x = x
^=按位异或赋值x ^= y, x = x ^ y
<<=左移赋值x <<= y, x = x << y
>>=右移赋值x >>= y, x = x >> y

需注意的地方:

  1.  python不支持a++语法: 
>>> a++ 		# python不支持a++语法
  File "<stdin>", line 1
    a++
      ^
SyntaxError: invalid syntax
  1.  +=不能拆开写+ =: 
>>> a + = 1		# 不能拆开写 + =
  File "<stdin>", line 1
    a + = 1
        ^
SyntaxError: invalid syntax

位运算符

Python中的算术元运算符与我们平常使用的OC或者Swift中的基本一致。

逻辑运算符

Python支持逻辑运算符,但是不支持&&||,取而代之的是更加人性化的英文单词and or not(全部都是小写字母):

  • a and b 两者都为True时结果才为True
  • a or b 两者有一个为True则结果就为True