Python ( 学习基础篇 第二部 )

目录

运算符
  算数运算符
  比较运算符
  赋值运算符
  位运算符
  逻辑运算符
  成员运算符
  身份运算符
  Python 中运算符的优先级
  运算符总结
基础语法
  判断类型 isinstence
  代码块
  流程控制
  while循环
  双向循环的金典例题
  for循环

 

 

运算符

算数运算符

运算符描述实例
+ 加 - 两个对象相加 a + b 输出结果 31
- 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -11
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 210
/ 除 - x 除以 y b / a 输出结果 2.1
% 取模 - 返回除法的余数 b % a 输出结果 1
** 幂 - 返回x的y次幂 a**b 为10的21次方
// 取整除 - 向下取接近商的整数 9//2>>>4 -9//2>>>-5

``

比较运算符

运算符描述实例
== 等于 - 比较对象是否相等 (a == b) 返回 False。
!= 不等于比较两个对象是否不相等 (a != b) 返回 True。
> 大于 - 返回x是否大于y (a > b) 返回 False。
< 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价 (a < b) 返回 True
>= 大于等于 - 返回x是否大于等于y。 (a >= b) 返回 False。
<= 小于等于 - 返回x是否小于等于y。 (a <= b) 返回 True。

赋值运算符

运算符描述实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a
//= 取整除赋值运算符 c //= a 等效于 c = c // a
:= 海象运算符,可在表达式内部为变量赋值。Python3.8 版本新增运算符 在这个示例中,赋值表达式可以避免调用 len() 两次
if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

 

位运算符

#a 为 60,b 为 13


按位与 &
var1 = 19
var2 = 15
print(var1 & var2)

19的二进制
0000 ... 10011
15的二进制
0000 ... 01111

0000 ... 10011
0000 ... 01111
0000 ... 00011 => 3


 按位或 |
var1 = 19
var2 = 15
print(var1 | var2)

19的二进制
0000 ... 10011
15的二进制
0000 ... 01111

0000 ... 10011
0000 ... 01111
0000 ... 11111 => 31



按位异或 ^ 两个值不一样,返回真,否则返回假
1 0 => 1
1 1 => 0
0 0 => 0
0 1 => 1

var1 = 19
var2 = 15
print(var1 ^ var2)

19的二进制
0000 ... 10011
15的二进制
0000 ... 01111

0000 ... 10011
0000 ... 01111
0000 ... 11100 => 28



<< 左移 
""" 左移相当于做乘法 : 5 * 2的n次幂 """
res = 5 << 1 # 10
res = 5 << 2 # 20
res = 5 << 3 # 40
print(res)
0000 ...  101
0000 ... 1010  移动一位 10
0000    10100  移动二位 20


 >> 右移
""" 右移相当于做除法 : 5 // 2的n次幂 """
res = 5 >> 1 # 2
res = 5 >> 2 # 1
res = 5 >> 3 # 0
print(res)
0000 ...  101
0000 ...  010  移动一位 2
0000 ...  001  移动二位 1
0000 ...  000  移动三位 0



~ 按位非 (针对于补码进行操作,按位取反,包括符号位)
"""公式: -(n+1)"""
var1 = ~19
print(var1)
~ 按位非每一位都取反,包括符号位,求反码每一位除了符号位,都取反.
原码:0000 ... 10011
反码:0000 ... 10011
补码:0000 ... 10011

补码:     0000 ... 10011
按位非:   1111 ... 01100
给你补码求原码:
补码: 1111 ... 01100
反码: 1000 ... 10011
原码: 1000 ... 10100 => -20

var1 = ~(-22)
print(var1)
原码: 1000 ... 10011
反码: 1111 ... 01100
补码: 1111 ... 01101
补码:    1111 ... 01101
按位非:  0000 ... 10010
给你补码求原码:
正数 : 补码 = 反码 = 原码
原码:  0000 ... 10010 => 18

 

运算符描述实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式
<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111

逻辑运算符

a 为 10, b为 20:
优先级 () > not > and > or
逻辑短路:
(1) True or 表达式
(2) False and 表达式
运算符表达式描述实例
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
or x or y 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False

成员运算符

运算符描述实例
in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

身份运算符

运算符描述实例
is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

Python 中运算符的优先级

算位比身成逻

运算符描述
* 指数(优先级最高
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,求余数和取整除
+ - 加法减法
>> << 左移 右移运算符
& 位 ‘AND’
^ 位运算符
<= < > >= 比较运算符
== != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

运算符总结

(1) 个别运算符:
优先级最高 ** 幂运算
优先级最低 = 赋值运算符
() 括号可以提升运算优先级

(2) 整体 一元运算符 > 二元运算符
一元运算符: 同一时间,只操作一个值 - ~
二元运算符: 同一时间,操作两个值 + - * / …

(3) 同一层级
逻辑: () > not > and > or
算数: 乘除 > 加减
位运算符: ( << >> ) > & > ^ > |

(4) 其他运算符
算数运算符 > 位运算符 > 比较运算符 > 身份运算符> 成员运算符 > 逻辑运算符
赋值运算符是最后算完进行赋值,做收尾工作的.

基础语法

判断类型 isinstence

    1. 语法:
      用法一 :
      isinstance(要判断的值,要判断的类型) 返回True 或者 False
      用法二:
      isinstance(要判断的值,(可能的类型1,可能的类型2,可能的类型3 … ) ) 如果有一个类型满足,返回的是True 否则 返回False
    2. 数据类型:
      int float bool complex str list tuple set dict
      用法一
      res = isinstance(5,int)
      res = isinstance(“11223344”,str)
      res = isinstance([1,2,3],tuple)
      print(res)
      用法二
      res = isinstance(16, (str,list,tuple) )
      print(res)

代码块

    1. 代码块 : 以冒号作为开始,用缩进来划分作用域
    2. 作用域:作用的区域,作用的范围
    3. 代码块的注意点:
      “”“要么全都是一个tab缩进,要么全都是4个空格,不能混合使用”""
      if 10 == 10:
      print(100)
      print(200) # IndentationError

流程控制

    1. 流程: 代码执行的过程
    2. 控制: 对代码执行过程的一种把控
    3. 流程控制的三大结构
      1.顺序结构 : 默认代码依次从上到下执行
      2.分支结构 : 4种
      3.循环结构 : for while
    4. if 条件表达式
      1单项分支
      if
      2双向分支
      if else
      3多项分支
      if elif else
      4巢状分支
      if
      if
      if
      else
      else
      else

while循环

特点:

减少代码的冗余,提升代码的效率

语法:

while 条件表达式:
code1…
code2…
1.初始化一个变量
2.写上循环的判断条件
3.自增自减的变量值

 栗子:

方法一
i = 1
total = 0
while i<=100:
 # 把所有的i值全部累加到total这个变量中
 total += i # total = total + i
 i+=1
print(total)
方法二
total = 0
i = 1
sign = True
while sign: 
 total += i # total = total + i
 i+=1
 # 手动加上终止循环的条件
 if i == 101 :
  sign = False
print(total)

 

双向循环的金典例题

打印十行十列小星星(隔列换色小星星,两个循环)

i= 0 
while i< 10 :
    i= 0
    while i<10:
        if j % 2 == 0:
            print("",end="")
        else:
            print("",end="")
        j+1
    print()
    i +=1

 99乘法表

line =1
while line <10:
row =1
while row <=line:
print("%s * %s = %s"%(row,line,line*row),end="\t")
row+=1
print()
line += 1

 

for循环

 

    1. 特点:遍历, 孙欢, 迭代
    2. for主要用于遍历数据而提出,while在遍历数据时,有局限性
      for 变量 in 可迭代对象:
      code1
      code2
      可迭代对象(容器类型数据,range对象,迭代器)
    3. for循环遍历不等长的二级容器

 

container = [["刘聪","毛洪磊","余锐","张家豪"],("崔文君","张捷")]

for i in container:
    for j in i:    
        print(j)

      

       4. 遍历等长的二级容器

container = [["刘聪","毛洪磊","余锐","张家豪"],("崔文君","张捷")]

for i in container:
    for j in i:    
        print(j)
    1. renge对象
      range(开始值,结束值,步长)
      结束值本身取不到,取到结束值之前的那个数
    2. while 与 for
      while : 较为复杂的逻辑
      for : 数据的遍历
      while 和 for 部分代码可以互相转换
    3. 关键字的使用
      1pass 过(占位)
      2break 终止当前循环
      3continue 跳过当前循环,从下一次循环开始
      在while中注意在continue前加(i+=1).

 

posted @ 2020-10-25 19:29  liuun  阅读(96)  评论(0编辑  收藏  举报