1. Python 类型转换


2. Python算术运算符

  • 2.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 = "我的集体博客"  url = "www.linuxleesinloveyy.cn"  age = `  info = name + "的网址是" + url + ",它曾经" + str(age) + "岁了"  print(info)  

运行后果:我的集体博客的网址是www.linuxleesinloveyy.cn,它曾经1岁了

  • 2.2减法(-)运算符
    n = 45    m = -n    x = -83.5    y = -x    print(m, ",", y)  

运行后果:-45 , 83.5

求负

-除了能够用作减法运算之外,还能够用作求负运算(负数变正数,正数变负数):

n = 45n_neg = -nf = -83.5f_neg = -fprint(n_neg, ",", f_neg)  

运行后果:-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

  • 2.3 / 和 // 除法运算符

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.623//5 = 423.0//5 = 4.0-------------------25/5 = 5.025//5 = 525.0//5 = 5.0-------------------12.4/3.5 = 3.54285714285714312.4//3.5 = 3.0  

从运行后果能够发现:

  1. /的计算结果总是小数,不论是否能除尽,也不论参加运算的是整数还是小数。
  2. 当有小数参加运算时,//后果才是小数,否则就是整数。
  • 2.4 求余(%)运算符

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 = 315%-6 = -3-15%-6 = -3-----小数求余-----7.7%2.2 = 1.0999999999999996-7.7%2.2 = 1.10000000000000057.7%-2.2 = -1.1000000000000005-7.7%-2.2 = -1.0999999999999996---整数和小数运算---23.5%6 = 5.523%6.5 = 3.523.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 = 812**5 = 32----开方运算----81**(1/4) = 3.032**(1/5) = 2.0  

3. Python赋值运算符

Python 中最根本的赋值运算符是等号=;联合其它运算符,=还能扩大出更弱小的赋值运算符。

  • 根本赋值运算符号
    #将字面量(间接量)赋值给变量    n1 = 100    f1 = 47.5    s1 = "http://c.biancheng.net/python/"    #将一个变量的值赋给另一个变量    n2 = n1    f2 = f1    #将某些运算的值赋给变量    sum1 = 25 + 46     sum2 = n1 % 6    s2 = str(1234)  #将数字转换成字符串    s3 = str(100) + "abc"  
  • 赋值运算符扩大

= 还可与其余运算符(包含算术运算符、位运算符和逻辑运算符)相结合,扩大成为性能更加弱小的赋值运算符

运算符扩大实例:

n1 = 100f1 = 25.5n1 -= 80  #等价于 n1=n1-80f1 *= n1 - 10 #等价于 f1=f1*( n1 - 10 )print("n1=%d" % n1)print("f1=%.2f" % f1)  

运行后果:

n1=20f1=255.00  

4. 位运算符

Python 位运算符只能用来操作整数类型,它依照整数在内存中的二进制模式进行计算

  • 4.1 & 按位与运算符

按位与运算符&的运算规定是:只有参加&运算的两个位都为 1 时,后果才为 1,否则为 0。

第一个Bit位第二个Bit位后果
000
010
100
111

例如,9&5 能够转换成如下的运算:

  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在内存中的存储)& 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在内存中的存储)--------------------------------------------------------------------0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0001  (1 在内存中的存储)  
  • 4.2 | 按位或运算符

按位或运算符|的运算规定是:两个二进制位有一个为 1 时,后果就为 1,两个都为 0 时后果才为 0。

例如,9 | 5 能够转换成如下的运算:

  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在内存中的存储)| 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在内存中的存储)---------------------------------------------------------------------  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1101  (13 在内存中的存储)  

-9 | 5 能够转换成如下的运算:

  1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在内存中的存储)| 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在内存中的存储)----------------------------------------------------------------------  1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在内存中的存储)  
  • 4.3 ^按位异或运算符

按位异或运算^的运算规定是:参加运算的两个二进制位不同时,后果为 1,雷同时后果为 0。

9 ^ 5能够转换成如下的运算:

  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在内存中的存储)^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在内存中的存储)----------------------------------------------------------------------  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1100  (12 在内存中的存储)

-9 ^ 5能够转换成如下的运算:

  1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在内存中的存储)^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在内存中的存储)----------------------------------------------------------------------  1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0010  (-14 在内存中的存储)  
  • 4.4 ~按位取反运算符

按位取反运算符~为单目运算符(只有一个操作数),右联合性,作用是对参加运算的二进制位取反。

~9能够转换为如下的运算:

~ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在内存中的存储)----------------------------------------------------------------------  1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0110  (-10 在内存中的存储)

~-9能够转换为如下的运算:

~ 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在内存中的存储)----------------------------------------------------------------------  0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1000  (8 在内存中的存储)  
  • 4.5 <<左移运算符

Python 左移运算符<<用来把操作数的各个二进制位全副左移若干位,高位抛弃,低位补 0。

9<<3能够转换为如下的运算:相当于乘以2**3

<< 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在内存中的存储)-----------------------------------------------------------------------   0000 0000 -- 0000 0000 -- 0000 0000 -- 0100 1000  (72 在内存中的存储)    

(-9)<<3能够转换为如下的运算:相当于除以2**3

<< 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在内存中的存储)------------------------------------------------------------------------   1111 1111 -- 1111 1111 -- 1111 1111 -- 1011 1000  (-72 在内存中的存储)  
  • 4.6 >>右移运算符

Python 右移运算符>>用来把操作数的各个二进制位全副右移若干位,低位抛弃,高位补 0 或 1。
如果数据的最高位是 0,那么就补 0;如果最高位是 1,那么就补 1。

9>>3 能够转换为如下的运算:

>> 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在内存中的存储)----------------------------------------------------------------------   0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0001  (1 在内存中的存储)  

(-9)>>3 能够转换为如下的运算:

>> 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在内存中的存储)-----------------------------------------------------------------------   1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 1110  (-2 在内存中的存储)  

5. Python比拟运算符

比拟运算符,也称关系运算符,用于对常量、变量或表达式的后果进行大小比拟。
如果这种比拟是成立的,则返回 True(真),反之则返回 False(假)。

Python 比拟运算符的应用举例:

print("89是否大于100:", 89 > 100)print("24*5是否大于等于76:", 24*5 >= 76)print("86.5是否等于86.5:", 86.5 == 86.5)print("34是否等于34.0:", 34 == 34.0)print("False是否小于True:", False < True)print("True是否等于True:", True < True)  

运行后果:

89是否大于100: False24*5是否大于等于76: True86.5是否等于86.5: True34是否等于34.0: TrueFalse是否小于True: TrueTrue是否等于True: False  

==is 的区别: == 用来比拟两个变量的值是否相等,而 is 则用来比对两个变量援用的是否是同一个对象

import time  #引入time模块t1 = time.gmtime() # gmtime()用来获取以后工夫t2 =  time.gmtime()print(t1 == t2) #输入Trueprint(t1 is t2) #输入False  

运行后果:

TrueFalse  

剖析:

time 模块的 gmtime() 办法用来获取以后的零碎工夫,准确到秒级,因为程序运行十分快,所以 t1 和 t1 失去的工夫是一样的。== 用来判断 t1 和 t2 的值是否相等,所以返回 True。尽管 t1 和 t2 的值相等,但它们是两个不同的对象(每次调用 gmtime() 都返回不同的对象),所以t1 is t2返回 False。这就如同两个双胞胎姐妹,尽管她们的外貌是一样的,但它们是两个人。    

如何判断两个对象是否雷同呢?答案是判断两个对象的内存地址。如果内存地址雷同,阐明两个对象应用的是同一块内存,当然就是同一个对象了。


6. Python逻辑运算符

逻辑运算符实例:

age = int(input("请输出年龄:"))height = int(input("请输出身高:"))if age>=18 and age<=30 and height >=170 and height <= 185 :    print("祝贺,你合乎报考飞行员的条件")else:    print("道歉,你不合乎报考飞行员的条件")  

可能的运行后果:

请输出年龄:23↙请输出身高:178↙祝贺,你合乎报考飞行员的条件  

在 Python 中,and 和 or 不肯定会计算左边表达式的值,有时候只计算右边表达式的值就能失去最终后果。

另外,and 和 or 运算符会将其中一个表达式的值作为最终后果,而不是将 True 或者 False 作为最终后果。

对于and运算符:

  • 如果右边表达式的值为假,那么就不必计算左边表达式的值了,因为不论左边表达式的值是什么,都不会影响最终后果,最终后果都是假,此时 and 会把右边表达式的值作为最终后果。
  • 如果右边表达式的值为真,那么最终值是不能确定的,and 会持续计算左边表达式的值,并将左边表达式的值作为最终后果。

对于or运算符:

  • 如果右边表达式的值为真,那么就不必计算左边表达式的值了,因为不论左边表达式的值是什么,都不会影响最终后果,最终后果都是真,此时 or 会把右边表达式的值作为最终后果.
  • 如果右边表达式的值为假,那么最终值是不能确定的,or 会持续计算左边表达式的值,并将左边表达式的值作为最终后果。

应用代码验证下面的论断:

url = "http://c.biancheng.net/cplus/"print("----False and xxx-----")print( False and print(url) )print("----True and xxx-----")print( True and print(url) )print("----False or xxx-----")print( False or print(url) )print("----True or xxx-----")print( True or print(url) )  

运行后果:

----False and xxx-----False----True and xxx-----http://c.biancheng.net/cplus/None----False or xxx-----http://c.biancheng.net/cplus/None----True or xxx-----True  

7. Python 运算符优先级

理论编程中,倡议应用括号明确运算符执行程序,不要适度依赖运算符优先级,防止引起不必要的谬误。