Skip to content

Latest commit

 

History

History
184 lines (112 loc) · 3.44 KB

calculate_1.md

File metadata and controls

184 lines (112 loc) · 3.44 KB

运算

基本运算

    >>> 2 + 2
    4
    >>> 50 - 5*6
    20
    >>> (50 - 5*6) / 4
    5.0
    >>> 8 / 5
    1.6
    >>> 8 / 4
    2.0

Python3中的除法运算总会得到一个浮点值,但是在Python2中不是这样的,Python2会根据参与运算的数字来决定结果,比如:

    >>> 8 / 5
    1
    >>> 8 / 5.0
    1.6
    >>> 8.0 / 5
    1.6

魔法运算

如果想在Python2中使用Python3中的除法特性可以在交互环境中输入from __future__ import divistion,这句话的意思是从未来的版本中引入除法运算,以后会经常使用from * import *这样的格式来引入其它功能。再看下面两个三个运算:

     >>> 13 // 3
     4
     >>> 13 % 3
     1
     >>> 3**2
     9

比较特别的是第一行和第三行,两个除号是向下取整,两个乘号是n次方的意思。

在交互模式下,还有一个很有意思的符号_,它可以保存上一次的运算结果,也就是说如果我们把交互环境当做计算器的话,会更好用。看下面的例子:

    >>> tax = 12.5 / 100  # 把值赋给一个名字(变量),以下就可以用变量名来使用值。
    >>> price = 100.50
    >>> price * tax
    12.5625
    >>> price + _    # _登场,其值是上面的12.5625
    113.0625
    >>> round(_, 2)    # 结果保留两位小数
    113.06

当然如果在Python3中,上面的代码也可以写成:

    >>> 税 = 12.5 / 100
    >>> 价格 = 100.50
    >>> 税 * 价格
    >>> 12.5625

Python3中可以使用汉字命名变量,事实上可以使用所有unicode集中的字符,另外Python3中会把当作是一个字符,而不再是Python2版本中的两个。为了输入方便和他人理解,我们还是习惯性的使用经典命名(字母数字下划线,且第一个字符不可以是数字)

此外变量的名字应当是有意义的,一个变量名里如果包含多个单词可以使用_形如:collect_incoming_data或者“驼峰”命名,形如:createUserInfo,更多的命名和代码规范目前还不需要,我们介绍到相应代码的时候会给出相应说明。

逻辑运算

    >>> 3 > 2
    Ture
    >>> 9 < 5
    False
    >>> 3 < 5 and 9 > 8
    True
    >>> 7 > 8 or 4 < 9
    True
    >>> not 9 > 3
    False
    >>> 5 == 4
    False
    >>> 7 != 8
    True

and是逻辑与的意思,or是逻辑或的意思,not是逻辑取反的意思。Python还支持链式逻辑运算:

    >>> 4 < 10 > 7
    True

解释器会把上式转换成4 < 10 and 10 > 7

位运算

位运算即先把数转换成2进制表示,再按位进行运算。

按位与运算

    >>> 5 & 3    # 5:'101', 3:'11'
    1

按位或运算

    >>> 5 | 2    # 2:'10'
    7

按位异或运算

    >>> 5 ^ 4    # 4:'100'
    1

异或运算有一个简单的应用,两数互换值不需要额外空间,代码如下:

    >>> a = 5    # 5: '101'
    >>> b = 8    # 8:'1000'
    >>> a = a^b
    >>> b = a^b
    >>> a = b^a
    >>> a, b
    (8, 5)    # 这种用括号括里来,逗号分隔的样子叫元组

当然如果仅仅是两数互换值的话,Python中还有更轻松愉悦的写法:

    >>> a, b = 5, 8    # 多个变量赋值
    >>> a, b = b, a    # 同样是多个变量赋值
    >>> a, b
    (8, 5)

以上三种位运算均满足交换律。