二.python3 入门

时光毁灭记忆、已成空白 提交于 2020-02-13 16:32:53

执行python方式

交互器

缺点 程序不能永久保存,主要用于简单的语法测试

       文件执行

IDE

integrated development environment

VIM 经典的linux下的文本编辑器

emacs linux 文本编辑器,比VIM更容易使用

eclipse java ide,支持 python,c ,c++

visual studio 微软开发的ide,python,c++,java,c#

notepad++

sublime python开发的

pycharm 是主要用于python开发的ide

变量

标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’)
标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字(0-9)组成。
有效 标识符名称的例子有i、__my_name、name_23和a1b2_c3。  
无效 标识符名称的例子有2things、this is spaced out和my-name。
标识符名称是对大小写敏感的。例如,myname和myName不是一个标识符。注意前者中的小写n和后者中的大写N。 

常量:数值不变的
变量:数值会变动的量

 

name = "Alex li"

name2 = name                   #name2和name没关系,指向内存中的Alex li

print("My name is",name)

print("My name is",name,name2)

name = "paoche ge"

print(name,name2)

name Alex li   name2 paoche ge

 

在python中没有常量的,所有的数值都可以改变,但是他依然有个常量的概念,但是是人为的你不去改变他,定义一个常量应该用大写的形式。

AGE = 10 这个就是常量,他是大写的!是约定俗成的。但是他是可以改的!
name =  'Tim Luo' 这个是变量

##这里需要注意下,设置变量的时候不能设置python自带的内置方法比如type
以下关键字不能声明为变量名

 

 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield'
 ]

 

变量名一定是带有描述性的  

变量名是区分大小写的

字符编码 

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),所以如果不指定编码类型,如果有中文就会报错。

 

#! /usr/bin/env python  声明从环境变量内找寻python
# -*- coding:utf-8 -*-  声明字符编码使用utf-8  

 

注释

单行注释 #

多行注释"""            """


打印多行

 

msg ="""
name2=name
print("My name is",name,name2)
name="paoche ge"
"""
print(msg) 

 

用户输入

 

name = input("name:")
print (name)

 

由于input所接受的所有数据都是字符串,即便你输入的是数字,但依然会被当成字符串来处理

 

death_age = 80

name = input ("your name:")
age = input("your age:")

print(type(age))        #打印age的数据类型

#int = integer 整数 把字符串转成int
#str = string 字符串 把数据转成字符串用str
print ("your name:",name)
#print("you can still live for",death_age - int(age),"years...")
print ("you can still live for"+str(death_age - int(age))+"years...")  #字符串拼接

 

格式化输出

格式化输出的几种方式:

1.字符串拼接

 

name = input ("name:")
age = input ("age:")
work = input ("work:")
salary = input ("salary:")
info = """
-----------info of """+ name + """-----------
name:""" + name + """
age: """ + age + """
work: """ + work + """
salary: """ + salary + """
"""
print (info)

#字符串拼接,在定义变量时,比其他方法要在内存中多去划分一部分容量,一般不建议使用

 

2.使用%占位符

占位符 

%s s=string 字符串

%d d=digit 整数

%f f=float 浮点,约等于小数  默认会加上小数点后六位数的精度

 

name = input ("name:")
age = input ("age:")
work = input ("work:")
salary = input ("salary:")
info = """
-----------info of %s -----------   #### s代表string 字符串 
name:%s
age: %s
work: %s
salary: %s
""" % (name,name,age,work,salary)
print (info)if salary.isdigit():          #由于salary需要用数字表示,如果强制把input赋值的结果转成int,当输入数字以外的就会报错。这里添加判断,salary是否长得像数字,digit是数字的意思    salary=int(salary)        #当用户输入数字,就把salary的数据类型转换成int,当输入的不是数字,提示用户输入数字。else:    print("must input digit") #等同于 exit("must input digit")     输入错误退出程序    exit()

 

name = input ("name:")
age = input ("age:")
work = input ("work:")
salary = int(input ("salary:"))
info = """
-----------info of %s -----------   #### s代表string 字符串 
name:%s
age: %s
work: %s
salary: %d                          #必须输入数字
""" % (name,name,age,work,salary)
print (info)

 

name = input ("name:")
age = input ("age:")
work = input ("work:")
salary = int(input ("salary:"))
info = """
-----------info of %s -----------    
name:%s
age: %s
work: %s
salary: %f            
""" % (name,name,age,work,salary)
print (info)

#输出
name:air
age:22
work:it
salary:3000

-----------info of air -----------   
name:air
age: 22
work: it
salary: 3000.000000

  

  

3.使用%占位符,并且强制转换数据类型

 

name = input ("name:")                 #python 2.x raw_input("name:")  #intput 2.x int
age = int(input ("age:"))               #int=integer 整型
print (type(age) )                     #打印一个变量的数据类型
work = input ("work:")
salary = input ("salary:")
info = '''
-----------info of %s -----------   # s代表string 字符串 
name:%s
age: %d                             #d代表数字,强制使用数字,让程序检测数据类型
work: %s
salary: %s
''' %(name,name,age,work,salary)
print (info)

 

4.替换

 

name = input ("name:")
age = input ("age:")
work = input ("work:" )
salary = input ("salary:")
info ="""
---------info of {_name}-----------
name:{_name}
age:{_age}
work:{_work}
salary:{_salary}
""".format(_name=name,_age=age,_work=work,_salary=salary)

print(info)

 

5.替换

 

name = input ("name:")
age = input ("age:")
work = input ("work:" )
salary = input ("salary:")
info ="""
---------info of {0}-----------
name:{0}
age:{1}
work:{2}
salary:{3}
""".format(name,age,work,salary)

print(info)

 

 流程控制

if elif else

输入用户名密码

 

_username = "lw"
_password = "123"

username = input("username:")
password = input("password:")

if _username == username and _password == password:  #流程控制 逻辑判断
    print ("welcom user {name} login... ".format(name=username))
else:
    print ("invalid username or password") 

 

猜数字

 

age_of_oldboy = 22
gusess_age = int(input("gusess age:"))   #input 默认数据类型为字符串
if gusess_age == age_of_oldboy:
    print("your right!")
elif gusess_age > age_of_oldboy:
    print("thinger smaller")
else:
    print("thinker bigger")

 

while

while true

从0开始每循环一次加一,加到1000时停止

 

count = 0
while True:
    print("count:",count)
    count = count + 1
    if count == 1000:
        break              #break 跳出本次循环

  

#错误示例
count = "0"            #不是相加,而是0111111111不断加1,字符串类型无法做函数运算
while True:
    print("count:",count)
    count = count + "1"

 

猜年龄

 

age_of_oldboy = 22                  #22不加""为变量,加上为字符串
count = 0                                 #添加计数器
while True:
  if count == 3:
      break
  gusess_age = int(input("gusess age:"))
  if gusess_age == age_of_oldboy:
    print("your right!")
    break
  elif gusess_age > age_of_oldboy:
    print("thinger smaller")
  else:
    print("thinker bigger")
  count += 1                           #循环记数

while + 判断条件

 

age_of_oldboy = 22                        #22不加""为变量,加上为字符串
count = 0                                 #添加计数器
while count < 3:
  gusess_age = int(input("gusess age:"))
  if gusess_age == age_of_oldboy:
    print("your right!")
    break
  elif gusess_age > age_of_oldboy:
    print("thinger smaller")
  else:
    print("thinker bigger")
  count += 1                #循环记数
  if count == 3:
      print("you have tried too many times...fuck off")

 

上面示例另一种表达

 

age_of_oldboy = 22                  #22不加""为变量,加上为字符串
count = 0                                 #添加计数器
while count <3:
  gusess_age = int(input("gusess age:"))
  if gusess_age == age_of_oldboy:
    print("your right!")
    break
  elif gusess_age > age_of_oldboy:
    print("thinger smaller")
  else:
    print("thinker bigger")
  count += 1                #循环记数
else:
      print("you have tried too many times...fuck off")

 

添加条件,在完成3次又没猜对后,对用户询问提示,用户若输入n,重新开始循环 

 

age_of_oldboy = 22                        #22不加""为变量,加上为字符串
count = 0                                 #添加计数器
while count <3:
  gusess_age = int(input("gusess age:"))
  if gusess_age == age_of_oldboy:
    print("your right!")
    break
  elif gusess_age > age_of_oldboy:
    print("thinger smaller")
  else:
    print("thinker bigger")
  count += 1                             #循环记数
  if count == 3:
      countine_confirm = input("do you want to keep guessing...?")
      if countine_confirm !="n":
          count = 0

 

错误示例 

 

#错误语句
lucky_num = 19
input_num = -1
guess_count = 0
while lucky_num != input_num and guess_count <3:
    print("guess count:",guess_count)
    input_num = int(input("input the guess num:"))
    if input_num > lucky_num:
        print("too bigger")
    elif input_num < lucky_num:
        print("too smaller")
    else:
        print("bingo!")
    guess_count+=1
else:
    print("trying too many times..")
#当循环执行到这一步,只要没有满足lucky_num != input_num and guess_count <3:
#else语句都会被执行,所以在while 完成3次循环时,都会在后面加上trying too many times..

 

标示位

 

age = 50
user_input_age = 0
flag = True

while flag:
    user_input_age = int(input("age is"))
    if user_input_age == age:
        print("yes")
        flag = False
    elif user_input_age > age:
         print("bigger")
    else:
        print ("smaller")
print("end")

 

while

else 

else表示当while循环语句正常结束了之后就执行else之后的语句

 

num=1
while num<=10:
    num += 1
    if num ==3:
        coninue
    print(num)    #由于缩进原则,print不受if语句影响
else:
    print("This is else statement")

#输出
2
4
5
6
7
8
9
10
11
This is else statement


若将coninue换成break

num=1
while num<=10:
    num += 1
    if num ==5:
        break
    print(num)
else:
    print("This is else statement")

#输出
2
3
4
#由于break会结束while循环,所以else后面的语句并未执行

 

循环嵌套

示例 

 

print("#",end="")
print("#",end="")
print("#",end="")
print("#",end="")

使用循环表示

num = 4
while num > 0:
    print("#",end="")
    num -= 1输出4行4列num2 = 4while num2 > 0:    num = 4    while num > 0:        print("#",end="")        num -= 1    print()    num2 -= 1

 

问题示例:
num1 = 0
num2 = 0
while num1<=5:
    print(num1,end="_")
    while num2<=7:
        print(num2,end="-")
        num2 += 1
    num1 += 1
    print()       #换行,等价于print(end"\n")

#输出
0_0-1-2-3-4-5-6-7-
1_
2_
3_
4_
5_
#由于第二个while循环,当num2递加到8时,在进行下一次第一个while循环时,因为他不<=7所以就不会去执行第二个while循环语句了。
正确示例:
改进
num1 = 0
num2 = 0
while num1<=5:
    num2 = 0
    print(num1,end="_")
    while num2<=7:
        print(num2,end="-")
        num2 += 1
    num1 += 1
    print()       

#输出
0_0-1-2-3-4-5-6-7-
1_0-1-2-3-4-5-6-7-
2_0-1-2-3-4-5-6-7-
3_0-1-2-3-4-5-6-7-
4_0-1-2-3-4-5-6-7-
5_0-1-2-3-4-5-6-7-

 

循环嵌套练习:

1.使用#好输出一个长方形,用户可以指定宽和高,如果长为3,高为4,则输出一个横着有3个#号,竖着有4个#号的长方形。

 

第一种方式:height = int(input("height:"))
width = int(input("width:"))

num_height = 1
while num_height <= height:
    num_width = 1
    while num_width <= width:
        print("#",end="")
        num_width += 1
    print()
    num_height += 1

#输出:

height:5
width:5
#####
#####
#####
#####
#####第二种方式:#高度height就等于多少行
height = int(input("height:"))width = int(input("width:"))w = width          while height > 0:    w = width      #由于每次完成内部的while循环后,width的值都会变为0,需要在给他重新赋值    while w > 0:        print("#",end="")        w -= 1    print()    height -= 1#输出

   #####
   #####
   #####
   #####
   #####


 

2.如何输出一个如下的直角三角形,用户指定输出行数;(如果上下反转,又如何实现?)

*

**

***

****

 

 

3.输出九九乘法表

1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9

.................................

 

b=1
while b<=9:                               #最外层的while语句控制列即换行
    a = 1
    while a<=b:                           #内层的while语句控制每行的输出,因为输出的最终结果行等于列,所以在打印每行的时候,添加判断a<=b
        print(a,"*",b,"=",a*b,end="\t")   #end="\t"   \t代表制表符,使输出格式对其
        a += 1                                     
    print()
    b += 1
#a代表了有多少列,b代表了有多少行行,在执行一个全部循环,b的值才会加1,用b>=a,控制a在每行的输出多少列

#最终输出结果

1 * 1 = 1   
1 * 2 = 2   2 * 2 = 4   
1 * 3 = 3   2 * 3 = 6   3 * 3 = 9   
1 * 4 = 4   2 * 4 = 8   3 * 4 = 12   4 * 4 = 16   
1 * 5 = 5   2 * 5 = 10   3 * 5 = 15   4 * 5 = 20   5 * 5 = 25   
1 * 6 = 6   2 * 6 = 12   3 * 6 = 18   4 * 6 = 24   5 * 6 = 30   6 * 6 = 36   
1 * 7 = 7   2 * 7 = 14   3 * 7 = 21   4 * 7 = 28   5 * 7 = 35   6 * 7 = 42   7 * 7 = 49   
1 * 8 = 8   2 * 8 = 16   3 * 8 = 24   4 * 8 = 32   5 * 8 = 40   6 * 8 = 48   7 * 8 = 56   8 * 8 = 64   
1 * 9 = 9   2 * 9 = 18   3 * 9 = 27   4 * 9 = 36   5 * 9 = 45   6 * 9 = 54   7 * 9 = 63   8 * 9 = 72   9 * 9 = 81    

 

b=9
while b>0:
    a = 1
    t = b
    while t>0:
        print(a,"*",b,"=",a*b,end="\t")
        a+=1
        t-=1
    print()
    b -= 1#输出
1 * 9 = 9	2 * 9 = 18	3 * 9 = 27	4 * 9 = 36	5 * 9 = 45	6 * 9 = 54	7 * 9 = 63	8 * 9 = 72	9 * 9 = 81	
1 * 8 = 8	2 * 8 = 16	3 * 8 = 24	4 * 8 = 32	5 * 8 = 40	6 * 8 = 48	7 * 8 = 56	8 * 8 = 64	
1 * 7 = 7	2 * 7 = 14	3 * 7 = 21	4 * 7 = 28	5 * 7 = 35	6 * 7 = 42	7 * 7 = 49	
1 * 6 = 6	2 * 6 = 12	3 * 6 = 18	4 * 6 = 24	5 * 6 = 30	6 * 6 = 36	
1 * 5 = 5	2 * 5 = 10	3 * 5 = 15	4 * 5 = 20	5 * 5 = 25	
1 * 4 = 4	2 * 4 = 8	3 * 4 = 12	4 * 4 = 16	
1 * 3 = 3	2 * 3 = 6	3 * 3 = 9	
1 * 2 = 2	2 * 2 = 4	
1 * 1 = 1
b=9while b>0:    a = 1    while b>=a:        print(a,"*",b,"=",a*b,end="\t")        a+=1    print()    b -= 1
#输出
1 * 9 = 9	2 * 9 = 18	3 * 9 = 27	4 * 9 = 36	5 * 9 = 45	6 * 9 = 54	7 * 9 = 63	8 * 9 = 72	9 * 9 = 81	
1 * 8 = 8	2 * 8 = 16	3 * 8 = 24	4 * 8 = 32	5 * 8 = 40	6 * 8 = 48	7 * 8 = 56	8 * 8 = 64	
1 * 7 = 7	2 * 7 = 14	3 * 7 = 21	4 * 7 = 28	5 * 7 = 35	6 * 7 = 42	7 * 7 = 49	
1 * 6 = 6	2 * 6 = 12	3 * 6 = 18	4 * 6 = 24	5 * 6 = 30	6 * 6 = 36	
1 * 5 = 5	2 * 5 = 10	3 * 5 = 15	4 * 5 = 20	5 * 5 = 25	
1 * 4 = 4	2 * 4 = 8	3 * 4 = 12	4 * 4 = 16	
1 * 3 = 3	2 * 3 = 6	3 * 3 = 9	
1 * 2 = 2	2 * 2 = 4	
1 * 1 = 1

  

for 

 

#b是临时变量,range(10)相当于0,1,2,3,4,5,6,7,8,9
#for b in就是每循环一次,从range(10)里依次取值给B
for b in range(10):
    print("loop",b)

#输出结果
#loop 0
#loop 1
#loop 2
#loop 3
#loop 4
#loop 5
#loop 6
#loop 7
#loop 8
#loop 9
#loop 10

  

for b in range(0,10,2): #从0-10中取值,2代表间距
    print("loop",b)

#输出
#loop 0
#loop 2
#loop 4
#loop 6
#loop 8
#loop 10

 

猜年龄

 

age_of_oldboy = 22               #22不加""为变量,加上为字符串
                                 #添加计数器
for i in range(3):
  gusess_age = int(input("gusess age:"))
  if gusess_age == age_of_oldboy:
    print("your right!")
    break
  elif gusess_age > age_of_oldboy:
    print("thinger smaller")
  else:
    print("thinker bigger")
else:
      print("you have tried too many times...fuck off")

 

continue 重新执行本次循环

只执行continue之前的语句,之后的语句都不执行

 

for j in range(5):
   for i in range(10):
       if i <5:
          continue
   if j>3:
      break
   print(i)  

 

print输出换行的问题 

 

print("111",end="")  #end="",双引号内的表示输出的行末,默认为\n换行符
print("111",end="")
print("111",end="")

#输出
111111111

 

对于python2.X,要消除print的自动换行,只需在print尾部加上一个逗号”,”,但是这一做法在python3.X就不适用了,这是为什么呢?我们可以在交互式的环境下输入help(print),查询print的原理和使用方法。

Help on built-in function print in module builtins:

print(…) 
print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)

 

appledeMacBook-Pro-2:Desktop apple$ python3
Python 3.5.0 (v3.5.0:374f501f4567, Sep 12 2015, 11:00:19) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
(END) 

 

注意看这一句:

 

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

 

这一句说明在python3中print是一个函数,对于函数,其形参中有默认参数和关键参数。我们发现,在结尾处出现了end = ‘\n’,说明print是以\n结束的,end是默认参数。只要我们在print中将默认参数的值改为空或者空格,就能实现不换行  

缩进

缩进级别必须保持一致

 

if gusess_age == age_of_oldboy:
    print("your right!")      #print前用tab键缩进
    print("your right!")      #print前用4个空格缩进

#报错    因为TAB和空格在liunx里会呈现出不同的结果。
#官方建议使用4个空格用于缩进 

 

算数运算符

 

操作符 描述符 例子
+ 加法,对操作符的两侧增加值 a+b=30
- 减法,减去从左侧操作数到右侧操作数 a-b=-10
* 乘法,相乘的运算两侧的值 a*b=200
/ 除,由右侧操作数除以左侧操作数 a/b=2
% 余数,由右侧操作数除以左侧操作数,无法除尽所得的数 a%b=0
** 指数,执行对操作指数(幂)的计算 a**b=10幂20
// 地板除(整除),操作数的除法,其中结果是将小数点后的位数被忽略的商 9//2=4

 

运算的优先级

使用()而在数学运算中使用{[()]}来分层区分优先级。

 

#在CMD命令行下输入a=3
b=5
a>b
#输出
#False

 

比较操作符

 

运算符 描述 示例
== 检查两个操作数的值是否相等,如果是则条件变为真。 (a==b)为true
!= 检查连个操作数的值是否相等,如果值不相等,则条件变为真。

(a!=b)为true

<> 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 (a<>b)为true,这个类似于!=运算符
 > 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 (a > b) 为 true.
 < 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 (a < b) 为 true.
>= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 (a >= b) 为 true.
<= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 (a <= b) 为 true.

 

 

 

 

 

 

 

 

 

#在CMD命令行下输入
a=3
b=5
b>=a
#输出
#True

 

取三个数中的最大值

 

num1 = input("num1:")
num2 = input("num2:")
num3 = input("num3:")

if num1>num2:
    if num1>num3:
        print("num1",num1)
    else:
        print("num3",num3)
else:
    if num2>num3:
        print("num2",num2)
    else:
        print("num3",num3)

 

赋值运算符

 

运算符 描述 示例
 = 简单的赋值运算符,赋值从右侧操作数给左侧操作数 c = a + b将指定的值 a + b 到  c
+= 加法AND赋值操作符,它增加了右操作数左操作数和结果赋给左操作数 c += a 相当于 c = c + a
-= 减AND赋值操作符,它减去右边的操作数从左边操作数,并将结果赋给左操作数 c -= a 相当于 c = c - a
*= 乘法AND赋值操作符,它乘以右边的操作数与左操作数,并将结果赋给左操作数 c *= a 相当于 c = c * a
/= 除法AND赋值操作符,它把左操作数与正确的操作数,并将结果赋给左操作数 c /= a 相当于= c / a
%= 量AND赋值操作符,它需要使用两个操作数的模量和分配结果左操作数 c %= a is equivalent to c = c % a
**= 指数AND赋值运算符,执行指数(功率)计算操作符和赋值给左操作数 c **= a 相当于 c = c ** a
//= 地板除,并分配一个值,执行地板除对操作和赋值给左操作数 c //= a 相当于 c = c // a

  

 

 

 

 

 

 

 

>>>num=1
>>>num
1

>>>num=2
>>>num+=1
>>>num
3

>>>num=3
>>>num-=1
>>>num
2

>>>num=2
>>>num*=2
>>>num
4

>>>num=6
>>>num/=2
>>>num
3

>>>num=7
>>>num%=3
>>>num
1

>>>num=3
>>>num**=3
>>>num
27

>>>num=9
>>>num//=2
>>>num
4

 

逻辑运算符

 

运算符 描述 示例
and 所谓逻辑与运算符。如果两个操作数都是真的,那么则条件成立。并且的意思 (a and b)为true
or 所谓逻辑or运算符。如果有两个操作数都是非零然后再条件变为真。或的意思 (a or b) 为 true.
not 所谓逻辑非运算符。用于反转操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将返回false。 not(a and b) 为 false.

 

 

 

 

例子:
and运算,都为真时为真
>>> 9 > 8 and 9 < 10
True
>>> 9 > 8 and 9 > 10
False
 
or运算,有一个为真的时候即可为真
>>> 9 > 8 or 9 > 10
True
>>> 9 < 8 or 9 > 10
False
>>>
 
not运算,假为真真为假
>>> not 6.2 <= 6
True
>>> not 6.2 >= 6
False
>>>

 

>>>5<3 and 4<3 or 6>5     #按照从左至右的顺序
True

>>>5>3 or (4>3 and 6<5)#添加括号来改变执行运算的优先级
True

 

短路原则

对于and

如果前面的第一个条件为假,那么这个and前后两个条件组成的表达式的计算结果就一定为假,第二个条件就不会被计算

对于or

如果前面的第一个条件为真,那么这个or前后两个条件组成的表达式的计算结果就一定为真,第二个条件就不会被计算

 

>>>not not True or False and not True   #or右边的条件不予判断
True

>>>True or True and False               #or右边的条件不予判断
True 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!