• Python算术运算符及用法详解

    算术运算符也即数学运算符,用来对数字进行数学运算,比如加减乘除。下表列出了 Python 支持所有基本算术运算符。

    表 1 Python 常用算术运算符
    运算符 说明 实例 结果
    + 12.45 + 15 27.45
    - 4.56 - 0.26 4.3
    * 5 * 3.6 18.0
    / 除法(和数学中的规则一样) 7 / 2 3.5
    // 整除(只保留商的整数部分) 7 // 2 3
    % 取余,即返回除法的余数 7 % 2 1
    ** 幂运算/次方运算,即返回 x 的 y 次方 2 ** 4 16,即 24

    接下来将对表 1 中各个算术运算符的用法逐一讲解。

    + 加法运算符

    加法运算符很简单,和数学中的规则一样,请看下面的代码:

    m = 10
    n = 97
    sum1 = m + n
    
    x = 7.2
    y = 15.3
    sum2 = x + y
    
    print("sum1=%d, sum2=%.2f" % (sum1, sum2) )

    运行结果:
    sum1=107, sum2=22.50

    拼接字符串

    +用于数字时表示加法,但是当+用于字符串时,它还有拼接字符串(将两个字符串连接为一个)的作用,请看代码:

    name = "C"
    url = "http://c.biancheng.net/"
    age = 8
    info = name + "的网址是" + url + ",它已经" + str(age) + "岁了。"
    print(info)

    运行结果:

    C的网址是http://c.biancheng.net/,它已经8岁了。

    str() 函数用来将整数类型的 age 转换成字符串。

    - 减法运算符

    减法运算也和数学中的规则相同,请看代码:

    n = 45
    m = -n
    
    x = -83.5
    y = -x
    
    print(m, ",", y)

    运行结果:
    -45 , 83.5

    求负

    -除了可以用作减法运算之外,还可以用作求负运算(正数变负数,负数变正数),请看下面的代码:

    n = 45
    n_neg = -n
    
    f = -83.5
    f_neg = -f
    
    print(n_neg, ",", f_neg)

    运行结果:
    -45 , 83.5

    注意,单独使用+是无效的,不会改变数字的值,例如:

    n = 45
    m = +n
    
    x = -83.5
    y = +x
    
    print(m, ",", y)

    运行结果:
    45 , -83.5

    *乘法运算符

    乘法运算也和数学中的规则相同,请看代码:

    n = 4 * 25
    f = 34.5 * 2
    print(n, ",", f)

    运行结果:
    100 , 69.0

    重复字符串

    *除了可以用作乘法运算,还可以用来重复字符串,也即将 n 个同样的字符串连接起来,请看代码:

    str1 = "hello "
    print(str1 * 4)

    运行结果:
    hello hello hello hello 

    / 和 // 除法运算符

    Python 支持///两个除法运算符,但它们之间是有区别的:

    • /表示普通除法,使用它计算出来的结果和数学中的计算结果相同。
    • //表示整除,只保留结果的整数部分,舍弃小数部分;注意是直接丢掉小数部分,而不是四舍五入。

    请看下面的例子:

    #整数不能除尽
    print("23/5 =", 23/5)
    print("23//5 =", 23//5)
    print("23.0//5 =", 23.0//5)
    print("-------------------")
    
    #整数能除尽
    print("25/5 =", 25/5)
    print("25//5 =", 25//5)
    print("25.0//5 =", 25.0//5)
    print("-------------------")
    
    #小数除法
    print("12.4/3.5 =", 12.4/3.5)
    print("12.4//3.5 =", 12.4//3.5)

    运行结果:

    23/5 = 4.6
    23//5 = 4
    23.0//5 = 4.0
    -------------------
    25/5 = 5.0
    25//5 = 5
    25.0//5 = 5.0
    -------------------
    12.4/3.5 = 3.542857142857143
    12.4//3.5 = 3.0

    从运行结果可以发现:

    • /的计算结果总是小数,不管是否能除尽,也不管参与运算的是整数还是小数。
    • 当有小数参与运算时,//结果才是小数,否则就是整数。

    需要注意的是,除数始终不能为 0,除以 0 是没有意义的,这将导致 ZeroDivisionError 错误。在某些编程语言中,除以 0 的结果是无穷大(包括正无穷大和负无穷大)。

    Python 2.x 中的除法

    Python 2.x 只提供了一种除法运算,就是/,它的行为和大部分编程语言中/的行为是一样的:

    • /两边都是整数时,结果始终是整数;如果不能除尽,就直接舍弃小数部分。
    • /两边有一个是小数时,结果始终是小数;如果恰好除尽,小数部分就是 0。

    请看下面的代码:

    #整数除法
    print "18/6 =", 18/6
    print "47/7 =", 47/7
    
    print "----------------"
    
    #小数除法
    print "18.0/6 =", 18.0/6
    print "47.0/7 =", 47.0/7
    print "29.5/4.2 =", 29.5/4.2

    运行结果:

    18/6 = 3
    47/7 = 6
    ----------------
    18.0/6 = 3.0
    47.0/7 = 6.71428571429
    29.5/4.2 = 7.02380952381

    你可以将 Python 2.x 中的/看作 Python 3.x 中///的结合体,因为 Python 2.x 中/的行为有点奇怪,所以 Python 3.x 增加了//运算符,用以规范除法运算的行为。

    % 求余运算符

    Python % 运算符用来求得两个数相除的余数,包括整数和小数。Python 使用第一个数字除以第二个数字,得到一个整数的商,剩下的值就是余数。对于小数,求余的结果一般也是小数。

    注意,求余运算的本质是除法运算,所以第二个数字也不能是 0,否则会导致 ZeroDivisionError 错误。

    Python % 使用示例:

    print("-----整数求余-----")
    print("15%6 =", 15%6)
    print("-15%6 =", -15%6)
    print("15%-6 =", 15%-6)
    print("-15%-6 =", -15%-6)
    
    print("-----小数求余-----")
    print("7.7%2.2 =", 7.7%2.2)
    print("-7.7%2.2 =", -7.7%2.2)
    print("7.7%-2.2 =", 7.7%-2.2)
    print("-7.7%-2.2 =", -7.7%-2.2)
    
    print("---整数和小数运算---")
    print("23.5%6 =", 23.5%6)
    print("23%6.5 =", 23%6.5)
    print("23.5%-6 =", 23.5%-6)
    print("-23%6.5 =", -23%6.5)
    print("-23%-6.5 =", -23%-6.5)

    运行结果:

    -----整数求余-----
    15%6 = 3
    -15%6 = 3
    15%-6 = -3
    -15%-6 = -3
    -----小数求余-----
    7.7%2.2 = 1.0999999999999996
    -7.7%2.2 = 1.1000000000000005
    7.7%-2.2 = -1.1000000000000005
    -7.7%-2.2 = -1.0999999999999996
    ---整数和小数运算---
    23.5%6 = 5.5
    23%6.5 = 3.5
    23.5%-6 = -0.5
    -23%6.5 = 3.0
    -23%-6.5 = -3.5

    从运行结果可以发现两点:

    • 只有当第二个数字是负数时,求余的结果才是负数。换句话说,求余结果的正负和第一个数字没有关系,只由第二个数字决定。
    • %两边的数字都是整数时,求余的结果也是整数;但是只要有一个数字是小数,求余的结果就是小数。

    本例中小数求余的四个结果都不精确,而是近似值,这和小数在底层的存储有关系,有兴趣的读者请猛击《小数在内存中是如何存储的,揭秘诺贝尔奖级别的设计(长篇神文)》了解更多。

    ** 次方(乘方)运算符

    Python ** 运算符用来求一个 x 的 y 次方,也即次方(乘方)运算符。

    由于开方是次方的逆运算,所以也可以使用 ** 运算符间接地实现开方运算。

    Python ** 运算符示例:

    print('----次方运算----')
    print('3**4 =', 3**4)
    print('2**5 =', 2**5)
    
    print('----开方运算----')
    print('81**(1/4) =', 81**(1/4))
    print('32**(1/5) =', 32**(1/5))

    运行结果:

    ----次方运算----
    3**4 = 81
    2**5 = 32
    ----开方运算----
    81**(1/4) = 3.0
    32**(1/5) = 2.0

更多...

加载中...