本章要点:
- 单行注释和多行注释
- Python是弱类型语言
- Python变量的特征
- Python变量命名规则
- Python关键字和内置函数
- Python支持的各种数值类型
- Python字符串入门
- 拼接字符串的方法
- repr和字符串
- 使用input和raw_input获取用户输入
- 长字符串和原始字符串
- 字符串格式化
- 字符串的相关方法
- Python的赋值运算符
- Python的算术运算符
- Python的位运算符
- Python的扩展后的赋值运算符
- Python的索引运算符
- Python的比较运算符
- Python的逻辑运算符
- Python的三目运算符
- Python的in运算符
目录
2.6.3 位运算符(&按位与、|按位或、^按位与或、~按位取反、<<左移、>>右移)6个
2.6.10 运算符的结合性和优先级(表达式运算中的运算顺序)
2.1 单行注释和多行注释
- 单行注释:Python使用(#)表示单行注释的开始,跟在“#”后面直到这行结束为止的代码都将被解释器忽略。
- 多行注释:指一次性将程序中的多行代码注释掉,在Python中使用三个单引号(')或者三个双引号(")将注释的内容括起来。
例如:
#这是一行简单的注释
print("Hello World!")
'''
这里面的内容全部是多行注释
Python语言真的很简单
'''
#print("这行代码被注释了,将不会被编译、执行")
"""
这是三个双引号括起来的多行注释
Python同样是允许的
"""
注释的作用:(1)提高程序的可读性;(2)是调试程序的重要方法。
2.2 变量
Python使用等号(=)作为赋值运算符。
Python是弱类型语言,有两个典型特征:
- 变量无需声明即可直接赋值;
- 变量的数据类型可以动态改变。
2.2.1 Python是弱类型语言
#定义一个数值类型变量
a=5
print(a)
#重新将字符串赋值给a变量
a='Hello,Charlie'
print(a)
print(type(a))
上面的程序中的type()函数的作用用于输出传入数据的类型。
2.2.2 使用print函数输出变量
语法格式:print(value, ... , sep=' ',end='\n', file=sys.stdout, flush=False)
user_name = 'Charlie'
user_age = 8
#同时输出多个变量和字符串
print("读者名:",user_name,"年龄:",user_age)
#同时输出多个变量和字符串,用sep指定分隔符
print("读者名:",user_name,"年龄:",user_age,sep='|')
#设置end参数,指定输出之后不再换行
print(40,'\t',end="")
print(50,'\t',end="")
print(60,'\t',end="")
f=open("poem.txt","w") #打开文件以便写入
print('沧海月明珠有泪',file=f)
print('蓝田日暖玉生烟',file=f)
#file参数指定print函数的输出目标,默认值为sys.stdout,代表了系统标准输出——屏幕
#flush参数用于控制输出缓存,保持为False即可。
2.2.3 变量的命名规则
- 标识符可以由字母、数字、下划线(_)组成,其中数字不能打头。
- 标识符不能是Python关键字,但可以包含关键字。
- 标识符不能包含空格。
2.2.4 Python的关键字和内置函数
Python包含了如下表所示的关键字:
| False | None | True | and | as |
| assert | break | class | continue | def |
| del | elif | else | except | finally |
| for | from | global | if | import |
| in | is | lambda | nonlocal | not |
| or | pass | raise | return | try |
| while | with | yield |
#导入keyword模块
import keyword
#显示所有关键字
keyword.kwlist
通过上面的程序可以查看Python所包含的关键字。
Python还提供了如下表的内置函数:
| abs() | all() | any() | basestring() | bin() |
| bool() | bytearry() | callable() | chr() | classmethod() |
| cmp() | compile() | complex() | delattr() | dict() |
| dir() | divmod() | enumerate() | eval() | execfile() |
| file() | filter() | float() | format() | frozenset() |
| getattr() | globals() | hasattr() | hash() | help() |
| hex() | id() | input() | int() | isinstance() |
| issubclass() | iter() | len() | list() | locals() |
| long() | map() | max() | memoryview() | min() |
| next() | object() | oct() | open() | ord() |
| pow() | print() | property() | range() | raw_input() |
| reduce() | reload() | repr() | reversed() | zip() |
| round() | set() | setattr() | slice() | sorted() |
| staticmethod() | str() | sum() | super() | tuple() |
| type() | unichr() | unicode() | vars() | xrange() |
| Zip() | _import_() | apply() | buffer() | coerce() |
| intern() |
2.3 数值类型
2.3.1 整形
Python3的整形支持各种整数值,不管是小的整数值,还是大的整数值。Python的整形数值有4种表示形式:
- 十进制形式:最普通的整数就是十进制形式的整数。
- 二进制形式:以0b或0B开头的整数就是二进制形式的整数。
- 八进制形式:以0o或0O开头的整数就是八进制形式的整数。
- 十六进制形式:以0x或0X开头的整数就是十六进制形式的整数。
例如:
#以0x或oX开头的整数型数值是十六进制形式的整数
hex_value1 = 0x13
hex_value2 = 0XaF
print("hexValue1的值为:",hex_value1)
print("hexValue2的值为:",hex_value2)
#以0b或oB开头的整数型数值是二进制形式的整数
bin_val = 0b111
print("bin_val的值为:",bin_val)
bin_val = 0B101
print("bin_val的值为:",bin_val)
#以0o或oO开头的整数型数值是八进制形式的整数
oct_val = 0o54
print("oct_val的值为:",oct_val)
oct_val = 0O17
print("oct_val的值为:",oct_val)
#Python3.x允许为数值(包括浮点型)增加下划线作为分隔符
one_million = 1_000_000
print(one_million)
price = 234_234_234 #price实际的值为234234234
Android = 1234_1234 #android实际的值为12341234
#Python的整形支持None值(空值)
a = None
print(a)
2.3.2 浮点型
浮点型数值用于保存带小数点的数值,Python的浮点数有两种表示形式:
- 十进制形式:
- 科学计数形式:只有浮点型数值才可以使用科学计数形式表示。
Python不允许除以0(不管是整形值还是浮点型数值)。
例如:
af1 = 5.2356556
#输出af1的值
print("af1的值为:",af1)
af2 = 25.2345
print("af2的值为:",af2)
f1 = 5.12e2
print("f1的值为:",f1)
f2 = 5e3 #5×10的三次方
print("f2的值为:",f2)
print("f2的类型为:",type(f2)) #看到类型为float
2.3.3 复数
复数的虚部用j或J来表示。不过需要导入cmath模块(c代表complex),该模块中包含了各种支持复数运算的函数。
例如:
ac1 = 3 + 0.2j
print(ac1)
print(type(ac1)) #输出复数类型
ac2 = 4 - 0.1j
print(ac2)
#复数运行
print(ac1 + ac2) 输出(7+0.1j)
#导入cmath模块
import cmath
#sqrt()是cmath模块下的函数,用于计算平方根
ac3 = cmath.sqrt(-1)
print(ac3) #输出1j
2.4 字符串入门
Python3.x对中文支持较好,但Python2.x则要求在源程序中增加“#coding:utf-8”才能支持中文字符。
2.4.1 字符串和转义字符
Python中的字符串要用单引号或者双引号括起来,如果字符串内容本身包含了单引号或双引号,就需要进行特殊处理。
- 使用不同的引号将字符串括起来;
- 对引号进行转义。
str1 = 'Charlie'
str2 = "疯狂软件教育"
print(str1)
print(str2)
str3 = "I'm a coder"
str4 = '"Spring is here,let us jam!",said woodchuck.'
str5 = '"We are scared,Let\'s hide in the shade",says the bird'
print(str3)
print(str4)
print(str5)
2.4.2 拼接字符串
简单使用还是上代码吧!
s1 = "Hello," 'Charlie'
print(s1)
#将会输出:Hello,Charlie
s2 = "Python"
s3 = "is Funny"
#使用+拼接字符串
s4 = s2 + s3
print(s4)
2.4.3 repr和字符串
使用str()和repr()函数可以将数值型转换成字符串。
repr()函数的作用是会以Python表达式的形式来表示值。
例如:
s1 = "这本书的价格是:"
p = 99.8
#字符串直接拼接数值,程序报错
#使用str()将数值转换成字符串
print(s1 + str(p))
#使用repr()将数值转换成字符串
print(s1 + repr(p))
st = "I will play my fife"
print(st)
print(repr(st))
#将会输出以下内容:
#I will play my fife
#"I will play my fife"
2.4.4 使用input和raw_input获取用户输入
input()函数(Python3.x):用于向用户生成一条提示,然后获取用户输入的内容,总是返回一个字符串。
raw_input函数(Python2.x中的函数等同于Python3.x中的input函数)
2.4.5 长字符串
Python使用三个引号括起来的长字符串完全可以赋值给变量,还允许使用转义字符(\)把一行字符串写成两行。
s = '''"Let's go fishing",said Mary.
"OK,Let's go", said her brother.
they walked to a lake'''
print(s)
s2 = 'The quick brown fox \
jumps over the lazy dog'
print(s2)
2.4.6 原始字符串
原始字符串以“r”开头,原始字符串不会把反斜线当成特殊字符。
s1 = r' G:\publishi\02\2.4'
print(s1)
#原始字符串包含的引号,同样需要转义
s2 = r'"Let\'s go",said Charlie'
print(s2)
s3 = r'Good Morning' '\\'
print(s2)
2.4.7 字节串(bytes):不可变序列
——字节串(bytes)由多个字节组成,以字节为单位进行操作。
——字符串(str)由多个字符组成,以字符为单位进行操作。
二者的区别与联系:
两者除操作的数据单元不同之外,它们支持所有方法基本相同。
字节串(bytes)对象只负责以字节(二进制格式)序列来记录数据。
二者可以互相转换。
字符串转换成bytes对象的三种方式:
- 以ASCⅡ字符为内容,可以在字符串之前加b来构建字节串;
- 调用bytes()函数(其实是bytes的构造方法)将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF-8字符集。
- 调用字符串本身的encode()方法将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF-8字符集。
例如:
#创建一个空的bytes
b1=bytes()
#创建一个空的bytes值
b2=b''
#通过b前缀指定hello是bytes类型的值
b3=b'hello'
print(b3)
print(b3[0])
print(b3[2:4])
#调用bytes方法将字符串转换成bytes对象
b4=bytes('我爱Python编程',encoding='utf-8')
print(b4)
#利用字符串的encode()方法编码成bytes,默认使用UTF-8字符集
b5="学习Python很有趣".encode('utf-8')
print(b5)
#利用decode()方法将bytes对象解码成字符串,默认使用UTF-8进行解码
st=b5.decode('utf-8')
print(st) #学习Python很有趣
print(b4.decode('utf-8'))
2.5 深入使用字符串
2.5.1 转义字符
| 转义字符 | 说明 |
| \b | 退格符 |
| \n | 换行符 |
| \r | 回车符 |
| \t | 制表符 |
| \" | 双引号 |
| \' | 单引号 |
| \\ | 反斜线 |
例如:
s1 = 'Hello\nCharlie\nGood\nMorning'
print(s1)
s2 = '商品名\t\t单价\t\t数量\t\t总价'
s3 = '疯狂Python讲义\t108\t\t2\t\t216'
print(s2)
print(s3)
2.5.2 字符串格式化
Python提供“%”对各种类型的数据进行格式化输出。
| 转换说明符 | 说明 |
| d,i | 转换为带符号的十进制形式的整数 |
| o | 转换为带符号的八进制形式的整数 |
| x | 转换为带符号的十六进制形式的整数 |
| X | 转换为带符号的十六进制形式的整数 |
| e | 转换为科学计数法表示的浮点数(e小写) |
| E | 转换为科学计数法表示的浮点数(E大写) |
| f,F | 转换为十进制形式的浮点数 |
| g | 智能选择使用f或e格式 |
| G | 智能选择使用F或E格式 |
| C | 转换为单字符(只接受整数或单字符字符串) |
| r | 使用repr()将变量或表达式转换为字符串 |
| s | 使用str()将变量或表达式换转为字符串 |
例如:
#*****************************
#***程序名称:format_test.py
#***程序功能:格式化字符串和占位符的用法以及转换说明符的用法。
#***编写日期:2019-2-11
#*****************************
user = "Charli"
age = 8
#格式化字符串中两个占位符,第三部分也应该提供两个变量
#转换说明符(%)的用法:
print("%s is a %s years old boy" % (user , age))
num = -28
#使用转换说明符指定转换后的最小宽度
print("num is :%6i" % num)
print("num is :%6d" % num)
print("num is :%6o" % num)
print("num is :%6x" % num)
print("num is :%6X" % num)
print("num is :%6s" % num)
#Python允许在最小宽度之前添加一个标志:-、+、0
#最小宽度为0,左边补0
num2 = 30
print("num2 is :%06d" % num2)
#最小宽度为6,左边补0,总是带上符号
print("num2 is :%+06d" % num2)
#最小宽度为6,左对齐
print("num2 is :%-6d" % num2)
#精度值
my_value = 3.001415926535
#最小宽度为8,小数点后保留3位
print("my_value is: %8.3f" % my_value)
#最小宽度为8,小数点后保留3位,左边补0
print("my_value is: %08.3f" % my_value)
#最小宽度为8,小数点后保留3位,左边补0,始终带符号
print("my_value is: %+08.3f" % my_value)
the_name = "Charlie"
#只保留3个字符,将输出Cha
print("the name is: %.3s" % the_name)
#只保留2个字符,最小宽度为10
print("the name is: %10.2s" % the_name)
2.5.3 序列相关的方法
Python字符串直接在方括号([])中使用索引即可获取对应的字符,字符串中第一个字符的索引为0、第二个字符的索引为1,后面各字符以此类推。或者从后往前反向计算。
例如:
#*****************************
#***程序名称:chars_test.py
#***程序功能:示范根据索引获取字符串中的字符。
#***编写日期:2019-2-11
#*****************************
s = 'crazyit.org is very good'
#获取s中的索引2的字符
print(s[2]) #输出a
#获取s中从右边开始,索引4的字符
print(s[-4]) #输出g
#获取s中从索引3到索引5的(不包含)的子串
print(s[3:5]) #输出zy
#获取s中从索引3到倒数第5个字符的子串
print(s[3:-5]) #输出zyit.org is very
#获取s中从倒数第6个字符到倒数第3个字符的子串
print(s[-6:-3]) #输出y g
#判断s是否包含'very'子串
print('very' in s)
print('fkit' in s)
#输出s的长度
print(len(s)) #24
#输出'test'的长度
print(len('test')) #4
#输出s字符串中的最大字符
print(max(s)) #z
#输出s字符串中的最小字符
print(min(s)) #空格
2.5.4 大小写相关方法
Python字符串由内建的str类代表,在str类中与大小写相关的常用方法如下:
- title():将每个单词的首字母改为大写。
- lower():将整个字符串改为小写。
- upper():将整个字符串改为大写。
例如:
#*****************************
#***程序名称:case_test.py
#***程序功能:示范了str与大小写相关的常用方法。
#***编写日期:2019-2-11
#*****************************
a = 'our domain is crazyit.org'
#每个单词的首字母大写
print(a.title())
#每个字母小写
print(a.lower())
#每个字母大写
print(a.upper())
在此处需要掌握两个帮助函数:
- dir():列出指定类或模块包含的全部内容(包括函数、方法、类、变量等)
- help():查看某个函数或方法的帮助文档。
例如:
>>>dir(dir)
显示如下内容:

其中以“_”开头、“_”结尾的方法被约定成私有方法,不希望被外部直接调用。
如果希望查看某个方法的用法,则可以使用help()函数。例如:

2.5.5 删除空白
str还提供了如下常用方法删除空白。
- strip():删除字符串前后的空白。
- lstrip():删除字符串前后(左边)的空白。
- rstrip():删除字符串后面(右边)的空白。
注:Python的str是不可变的(即字符串一旦形成,它所包含的字符串序列就不能发生任何改变),因此这三个方法只是返回字符串前面或后面空白被删除之后的副本,并没有真正改变字符串本身。
#*****************************
#***程序名称:strip_test.py
#***程序功能:删除空白。
#***编写日期:2019-2-11
#*****************************
s = ' this is a puppy '
#删除左边的空白
print(s.lstrip())
#删除右边的空白
print(s.rstrip())
#删除两边的空白
print(s.strip())
#再次输出s,将会看到s并没有改变
print(s)
#删除字符串前后指定字符的功能
s2 = 'i think it is a scarecrow'
#删除左边的i、t、o、w字符
print(s2.lstrip('itow'))
#删除右边的i、t、o、w字符
print(s2.rstrip('itow'))
#删除两边的i、t、o、w字符
print(s2.strip('itow'))
2.5.6 查找、替换相关方法
str提供了如下常用的执行查找、替换等操作的方法:
- startswith():判断字符串是否以指定子串开头。
- endswith():判断字符串是否以指定子串结尾。
- find():查找指定子串在字符串中出现的位置,如果没有找到指定子串,则返回-1。
- index():查找指定子串在字符串中出现的位置,如果没有找到指定子串,则引发ValueError错误。
- replace():使用指定子串替换字符串中的目标子串。
- translate():使用指定的翻译映射表对字符串执行替换。
例如:
#*****************************
#***程序名称:search_test.py
#***程序功能:查找、替换相关方法
#***编写日期:2019-2-11
#*****************************
s = 'crazyit.org is a good site'
#判断s是否以crazyit开头
print(s.startswith('crazyit'))
#判断s是否以site结尾
print(s.endswith('site'))
#查找s中'org'出现的位置
print(s.find('org'))
#查找s中'org'出现的位置
print(s.index('org'))
#从索引9处开始查找'org'出现的位置
print(s.find('org',9)) #-1
#从索引9处开始查找'org'出现的位置
#print(s.index('org',9)) #引发错误
#将字符串中所有it替换成XXXX
print(s.replace('it','XXXX'))
#将字符串中1个it替换成XXXX
print(s.replace('it','XXXX',1))
#定义翻译映射表:97(a)->945(α),98(b)->946(β),116(t)->964(τ)
table = {97:945,98:946,116:964}
print(s.translate(table))
此外,Python为str提供了一个maketrans()方法,通过该方法可以非常方便地创建翻译映射表。
2.5.7 分割、连接方法
- split():将字符串按指定分隔符分割成多个短语。
- join():将多个短语连接成字符串。
具体用法如下:
#*****************************
#***程序名称:split_test.py
#***程序功能:分割、连接方法
#***编写日期:2019-2-11
#*****************************
s = 'crazyit.org is a good site'
#使用空白对字符串进行分割
print(s.split()) #输出['crazyit.org','is','a','good','site']
#使用空白对字符串进行分割,最多只分割前两个单词
print(s.split(None,2)) #输出['crazyit.org','is','a good site']
#使用点进行分割
print(s.split('.')) #输出['crazyit','org is a good site']
mylist = s.split()
#使用'/'作为分隔符,将mylist连接成字符串
print('/'.join(mylist)) #输出crazyit.org/is/a/good/site
#使用','作为分隔符,将mylist连接成字符串
print(','.join(mylist)) #输出crazyit.org,is,a,good,site
可以看出split()和join()两个函数互为逆操作。
2.6 运算符
Python语言用于将一个或多个操作数连接成可执行语句,用来实现特定功能。
2.6.1 赋值运算符(“=”)
贴上代码说明问题:
#*****************************
#***程序名称:assign_operator_test.py
#***程序功能:赋值运算符
#***编写日期:2019-2-12
#*****************************
#为变量st赋值为Python
st = "Python"
#为变量pi赋值为3.14
pi = 3.14
#为变量visited赋值为True
visited = True
#将st的值赋给st2
st2 = st
print(st2)
d1 = 12.34
#将表达式的值赋给d2
d2=d1+5
#输出d2的值
print("d2的值为:%g"%d2)
2.6.2 算术运算符(加、减、乘、除、求余、求负、乘方)
继续上代码:
#*****************************
#***程序名称:arithmetic_test.py
#***程序功能:算术运算符的使用
#***编写日期:2019-2-12
#*****************************
a=5.2
b=3.1
the_sum=a+b
#sum的值为8.3
print("the_sum的值为:",the_sum)
s1='Hello,'
s2='Charlie'
#使用+连接两个字符串
print(s1+s2)
#减法'-'运算符的使用
c=5.2
d=3.1
sub=c-d
#sub的值为2.1
print("sub的值为:",sub)
#定义变量x,其值为-5.0
x=-5.0
#对x求负,其值变成5.0
x=-x
print(x)
#定义变量y,其值为-5.0
y=-5.0
#y值依然是-5.0
y=+y
print(y)
e=5.2
f=3.1
multiply=e*f
#mutiply的值为16.12
print("mutiply的值为:",multiply)
s3='crazyit '
#使用*将5个字符串连接起来
print(s3*5)
print("19/4的结果是:",19/4) #普通除法
print("19//4的结果是:",19//4) #整除除法
aa=5.2
bb=3.1
print("aa/bb的值是:",aa/bb)
print("aa//bb的值是:",aa//bb)
print("5%3的值为:",5%3) #输出2
print("5.2%3.1的值为:",5.2%3.1) #输出2.1
print("-5.2%-3.1的值为:",-5.2%-3.1) #输出-2.1
print("5.2%-2.9的值为:",5.2%-2.9) #输出-0.6
print("5.2%-1.5的值为:",5.2%-1.5) #输出-0.8
print("-5.2%-1.5的值为:",-5.2%1.5) #输出0.8
#print("5对0.0求余的结果是:",5%0.0) #导致错误
#乘方运算符
print('5的2次方:',5**2)
print('4的3次方:',4**3)
print('4的开平方:',4**0.5)
print('27的开3次方:',27**(1/3))
2.6.3 位运算符(&按位与、|按位或、^按位与或、~按位取反、<<左移、>>右移)6个
| 第一个操作符 | 第二个操作符 | 按位与(&) | 按位或(|) | 按位异或(^) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
注意:在进行位移运算时,左移n位就相当于乘以2的n次方,右移n位则相当于除以2的n次方(如果不能整除,实际返回的结果是小于除得结果数值的最大整数的)。不仅如此,进行位移运算只是得到了一个新的运算结果,而原来的操作数本身是不会改变的。
2.6.4 扩展后的赋值运算符
- +=:x+=y ——>x=x+y
- +=:x-=y ——>x=x-y
- *=:x*=y ——>x=x*y
- /=:x/=y ——>x=x/y
- //=:x//=y ——>x=x//y (整除)
- %=:x%=y——>x=x%y (求余)
- **=:x**=y ——>x=x**y (乘方)
- &=:x&=y ——>x=x&y (按位与)
- |=:x|=y ——>x=x|y (按位或)
- ^=:x^=y ——>x=x^y (按位异或)
- <<=:x<<=y ——>x=x<<y
- >>=:x>>=y ——>x=x>>y
2.6.5 索引运算符(就是方括号[ ])
a = 'abcdefghijklmn'
# 获取索引2到索引8的子串,步长为3
print(a[2:8:3]) # 输出cf
# 获取索引2到索引8的子串,步长为2
print(a[2:8:2]) # 输出ceg
2.6.6 比较运算符与bool类型
Python提供bool类型表示真(True)假(False)。
Python支持的运算符如下:
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| == | 等于 |
| != | 不等于 |
| is | 判断两个变量所引用的对象是否相同,如果相同则返回True。 |
| is not | 判断两个变量所引用的对象是否不相同,如果不相同则返回True。 |
此外,Python还提供了了一个id()函数,判断变量所引用的对象的内存地址。
来看代码:
import time
# 输出True
print("5是否大于 4:", 5 > 4)
# 输出False
print("3的4次方是否大于等于90.0:", 3 ** 4 >= 90)
# 输出True
print("20是否大于等于20.0:", 20 >= 20.0)
# 输出True
print("5和5.0是否相等:", 5 == 5.0)
# 输出False
print("True和False是否相等:", True == False)
# 输出True
print("1和True是否相等:", 1 == True)
# 输出True
print("0和False是否相等:", 0 == False)
print(True + False) # 输出1
print(False - True) # 输出-1
#获取当前时间
a = time.gmtime()
b = time.gmtime()
print(a == b) #a和b两个时间相等,输出True
print(a is b) #a和b不是一个对象,输出False
#使用id()函数判断变量a、b
print(id(a))
print(id(b))
2.6.7 逻辑运算符
逻辑运算符用于操作bool类型变量、常量或表达式,逻辑运算的返回值也是bool值。
一共三个逻辑运算符:
- and:与
- or:或
- not:非
例如:
# 直接对False求非运算,将返回True
print(not False)
# 5>3返回True,20.0大于10,因此结果返回True
print(5 > 3 and 20.0 > 10)
# 4>=5返回False,"c">"a"返回True。求或后返回True
print(4 >= 5 or "c" > "a")
又例如:
#bookName = "疯狂Python"
#price = 79
#version = "正式版"
#if bookName.endswith('Python') and price < 50 or version == "正式版" :
# print("打算购买这本Python图书")
#else:
# print("不购买!")
bookName = "疯狂Python"
price = 79
version = "正式版"
if bookName.endswith('Python') and (price < 50 or version == "正式版") :
print("打算购买这本Python图书")
else:
print("不购买!")
建议:组合逻辑中,使用圆括号()来提高程序的可读性。
2.6.8 三目运算符(if语句)
语法:
True_statements if expression else False_statements
规则:先对逻辑表达式expression求值,如果逻辑表达式返回True,则执行并返回True_statements的值;如果逻辑表达式返回False,则执行并返回False_statements的值。
例如:
a = 5
b = 3
st = "a大于b" if a > b else "a不大于b"
# 输出"a大于b"
print(st)
# 输出"a大于b"
print("a大于b") if a > b else print("a不大于b")
# 第一个返回值部分使用两条语句,逗号隔开
st = print("crazyit"), 'a大于b' if a > b else "a不大于b"
print(st)
# 第一个返回值部分使用两条语句,分号隔开
st = print("crazyit"); x = 20 if a > b else "a不大于b"
print(st)
print(x)
c = 5
d = 5
# 下面将输出c等于d
print("c大于d") if c > d else (print("c小于d") if c < d else print("c等于d"))
2.6.9 in运算符——用于判断某个成员是否位于序列中
(1)判断字符串是否包含特定子串;
(2)判断序列是否包含子序列。
例如:
s = 'crazyit.org'
print('it' in s) # True
print('it' not in s) # False
print('fkit' in s) # False
print('fkit' not in s) # True
2.6.10 运算符的结合性和优先级(表达式运算中的运算顺序)
- Python大部分运算符从左到右结合(单目运算符、赋值运算符、三目运算符除外);
- 乘法和除法左右两边操作数可以互换位置;

2425

被折叠的 条评论
为什么被折叠?



