疯狂Python》学习第3课"/>
《疯狂Python》学习第3课
1.5.4 大小写相关方法
Python中常用的两个帮助函数
- dir( ): 列出指定类或模块包含的全部内容(包括函数、方法、类、变量等)。
- help( ): 查看某个函数或方法的帮助文档。
Python中str类中与大小写相关的常用方法如下: - title( ):将每个单词的首字母改为大写。
- lower( ):将整个字符串改为小写。
- upper( ): 将整个字符串改为大写。
代码示例如下:
a = 'Python is very interesting.'
print(a.title())
print(a.lower())
print(a.upper())
程序输出结果:
Python Is Very Interesting.
python is very interesting.
PYTHON IS VERY INTERESTING.
1.5.5 删除空白
str中可以使用以下方式删除空白
- strip( ): 删除字符串前后的空白。
- lstrip( ):删除字符串前面(左边)的空白。
- rstrip( ) : 删除字符串后面(右边)的空白。
上述三种方式只是返回字符串前面或后面空白被删除之后的副本, 并没有真正改变字符串本身。
代码示例:
b=' Hello world , this is Python. '
print(b.lstrip())
print(b.rstrip())
print(b.strip())
print(b)
输出结果:
Hello world , this is Python. Hello world , this is Python.
Hello world , this is Python.Hello world , this is Python.
删除字符串前后指定宇符的功能:
b1='Hello world , this is Python'
print(b1.lstrip('Hn'))
#删除左边的H、n
print(b1.rstrip('Hn'))
#删除右边的H、n
输出结果:
ello world , this is Python
Hello world , this is Pytho
1.5.6 查找、替换相关方法
str提供了以下常用的执行查找、替换等操作的方法
- startswith( ):判断字符串是否以指定子串开头。
- endswith( )::判断字符串是否以指定子串结尾。
- find( ):查找指定子串在字符串中出现的位置,如果没有找到指定子串,则返回-1。
- index( ):查找指定子串在字符串中出现的位置,如果没有找到指定子串,则引发ValueError错误。
- replace( ):使用指定子串替换字符串中的目标子串。
- translate( ):使用指定的翻译映射表对字符串执行替换。
代码示例
s = 'crazyit is a good site '
print(s.startswith('crazyit'))
print(s.endswith('site'))
print(s.find('org'))
print(s.index('org'))
print(s.find('org', 10))
#将字符串中的所有it 替换成xxxx
print(s.replace('it','xxxx'))
#将字符串中的第1个it 替换成xxxx
print(s.replace('it','xxxx',1))
###################################
#定义翻译映射表97(a) -> 945( α) ,99(c)-> 947(γ),116( t) - >964 (τ)
table={97:945,99 : 947 , 116: 964}
print(table)
print(s.translate(table))
输出结果
True
False
8
8
-1
crazyxxxx is a good sxxxxe
crazyxxxx is a good site
{97: 945, 99: 947, 116: 964}
γrαzyiτ is α good siτe
Python为str类提供了一个maketrans( )方法,通过该方法可以非常方便地创建翻译映射表。在使用该方法时只需将需要映射的所有字符作为maketrans( )方法的第一个参数,将所有映射的目标字符作为make trans () 方法的第二个参数即可。
代码示例如下:
s = 'crazyit is a good site '
table1=str.maketrans('act','αγτ')
print(s.translate(table1))
输出结果同上。
1.5.7 分割、连接方法
Python为str提供了分割和连接方法:
- split( ): 将字符串按指定分割符分割成多个短语。
- join( ):将多个短语连接成字符串。
代码示例:
a = 'Python is very interesting. I love Python very much'
print(a.split( ))
#使用空白对字符串进行分割,最多只分割前三个单词
print(a.split(None,3))
print(a.split('.'))
mylist=a.split()
#使用'/'作为分割符,将mylist 连接成字符串
print('/'.join(mylist))
输出结果:
['Python', 'is', 'very', 'interesting.', 'I', 'love', 'Python', 'very', 'much']
['Python', 'is', 'very', 'interesting. I love Python very much']
['Python is very interesting', ' I love Python very much']
Python/is/very/interesting./I/love/Python/very/much
1.6 运算符
Python中提供以下几种运算符:
- 赋值运算符
- 算数运算符
- 位运算符
- 索引运算符
- 比较运算符
- 逻辑运算符
运算符参考文献
1.6.1 赋值运算符
赋值运算符用于为变量或常量指定值, Python 使用“ =”作为赋值运算符。也可使用赋值运算利将一个变量的值赋给另一个变量。Python 的赋值表达式是有值的,赋值表达式的值就是被赋的值,因此Python支持连续赋值。赋值运算符还可用于将表达式的值赋给变量。
代码示例:
d1=13.56
d2=d1+23.45
print(d2)
1.6.2 算数运算符
Python 支持所有的基本算术运算符,Python支持以下7种基本的算数运算符。
加运算:“+”还可以作为字符串(包括后面要介绍的序列)的连接运算符。
代码示例:
s1='Hello World,'
s2='this is Python.'
s=s1+s2
print(s)
减运算:还可以作为求负的运算符。
乘运算:“*”还可以作为字符串(包括后面要介绍的序列) 的连接运算符, 表示将N 个字符串连接起来。
代码示例:
s='Python '
print(s*5)
输出示例:
Python Python Python Python Python
除运算符:Python 的除法运算符有两个:“/”表示普通除法,使用它除出来的结果与平常数学计算的结果是相同的(即除不尽时,会产生小数部分);而“//”表示整除,使用它除出来的结果只有整数部分,小数部分将会被舍弃。Python 不允许使用0作为除数,否则将会引发ZeroDivisionError 错误。
%:求余运算。Python 的求余运算符完全支持对浮点数求余。求余运算的结果不一定总是整数,它是使用第一个操作数来除以第二个操作数,得到一个整除的结果后剩下的值就是余数。此求余运算的第二个操作数不能是0 , 否则程序会报出ZeroDivisionError 错误。
代码示例:
print('5.2 % -2.9的值为:',5.2 % -2.9)
输出结果:
5.2 % -2.9的值为: -0.5999999999999996
由浮点数的存储机制导致的。计算机底层的浮点数的存储机制并不是精确保存每一个浮点数的值,暂时不需要花太多的时间去理解浮点数的存储机制,只要知道浮点数在Python 中可能产生精度丢失的问题就行。比如此处正常计算的结果应该是0.6 , 但实际计算出来的结果是一个非常接近0.6的值。
**:乘方运算符。Python 支持使用"**"作为乘方运算符,同时也可以进行开方计算。
1.6.3 位运算符
Python支持以下6种位运算符:
- &:按位与。
- |:按位或。
- ^: 按位异或。
- ~:按位取反
- <<:左移位运算
- >>:右移位运算
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为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 |
1.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 I y 。
- ^=:对于x^= y , 即对应于x= x^y 。
- <<=:对于x<<=y ,即对应于x = x<<y 。
- >>=:对于x >>= y,即对应于x=x>>y 。
1.6.5 索引运算符
索引运算符就是方括号,在方括号中既可使用单个索引值,也可使用索引范围。实际上,在使用索引范围时,还可指定步长。
代码示例:
a='qwertyuiopasdfg'
#获取索引从2到11步长为3
print(a[2:11:2])
输出结果:
etuoa
1.6.6 比较运算符与bool类型
Python提供了bool类型来表示真(对)或假(错),Python 使用True 来表示真(对) ,Python使用False 来表示假(错)。
Python 支持的以下几种比较运算符:
- >:大于,如果运算符前面的值大于后面的值,则返回True;否则返回False 。
- >=:大于或等于,如果运算符前面的值大于或等于后面的值,则返回True;否则返回False 。
- <:小于,如果运算符前面的值小于后面的值,则返回True;否则返回False 。
- <=:小于或等于, 如果运算符前面的值小于或等于后面的值,则返回True;否则返回False 。
- 等于,如果运算符前面的值等于后面的值,则返回True;否则返回False 。
- !=:不等于, 如果运算符前面的值不等于后面的值,则返回True;否则返回False 。
- is:判断两个变量所引用的对象是否相同,如果相同则返回True 。
Python 的两个bool值分别是True 和False,但实际上True也可被当成整数1 使用, False 也可被当成整数0 使用。也就是说,True 、False 两个值完全可以参与各种算术运算。
代码示例:
print("1和True是否相等:",1 == True)
print("0和False是否相等:",0 == False)
print("5和5.0是否相等:",5 == 5.0)
输出结果:
1和True是否相等: True
0和False是否相等: True
5和5.0是否相等: True
is和==的区别
==只比较两个变量的值,但is 要求两个变量引用同一个对象。
代码示例:
import time
a=time.gmtime()
b=time.gmtime()
print(a==b)
print(a is b)
输出结果:
True
False
a 、b 两个变量都代表当前系统时间,因此a 、b 两个变的时间值是相等的,故程序使用“==”判断返回True 。但由于a 、b 两个变量分别引用不同的对象(每次调用gmtime( )函数都返回不同的对象),因此a is b 返回False 。
Python 提供了一个全局的id() 函数来判断变量所引用的对象的内存地址,,如果两个对象所在的内存地址相同,,则说明这两个对象其实是同一个对象。
代码示例:
print(id(a))
print(id(b))
输出结果:
9093736
37647360
1.6.7 逻辑运算符
逻辑运算符用于操作bool类型的变量、常量或表达式,逻辑运算的返回值也是bool值。
Python支持以下三个逻辑运算符:
- and : 与,前后两个操作数必须都是True才返回True;否则返回False ,
- or:或,只要两个操作数中有一个是True,就可以返回True;否则返回False。
- not :非, 只需要一个操作数,如果操作数为True,则返回False;如果操作数为False ,则返回True 。
需要购买一本书名必须以“ Python ”结尾的图书,且图书价格小于50 元或该图书是基于正式版的。代码示例:
bookName='疯狂Python'
price=79
version='正式版'
if bookName.endswith('Python') and ( price > 50 or version == '正式版'):print('您打算购买这本Python教程吗?')
else:print("不购买。")
实际使用逻辑运算符时,一定要合理的使用圆括号保证运算顺序。
1.6.8 三目运算
三目运算符,又称条件运算符,是计算机语(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。例如Java中最常见的三目运算:<表达式1> ? <表达式2> : <表达式3>;
Python 可通过if 语句来实现三目运算符的功能,作为三目运算符的ifi吾句的语法格式如下:
True_statements if expression else False_statements
三目运算的计算规则:先对逻辑表达式expression求值,如果逻辑表达式返回Trne ,则执行并返回Trn e statements 的值;如果逻辑表达式返回False , 则执行并返回False_statements 的值。
代码示例
a=3
b=5
st = "a大于b" if a > b else "a不大于b"
print(st)
#输出结果:a不大于b
Python 允许在三目运算符的True_statements 或False_statements 中放置多条语.目前支持以下两种放置方式:
- 多条语句以英文逗号隔开: 每条语句都会执行,程序返回多条语句的返回值组成的元组。
- 多条语句以英文分号隔开:每条话句都会执行,程序只返回第一条语句的返回值。
代码示例1:
st = print ("crazyit"), ' a 大于b' if a > b else 'a 不大于b'
print(st)'''
输出结果
crazyit
(None, 'a 不大于b')
'''
代码示例2
st = print ("crazyit");' a 大于b' if a > b else 'a 不大于b'
print(st)
#输出结果:
crazyit
(None, 'a 不大于b')
三目运算符支持嵌套,通过嵌套三目运算符, 可以执行更复杂的判断。例如:
c = 5
d = 5
print ("c 大于d") if c > d else ( print ("c 小于d" ) if c < d else print("c 等于d"))
#输出:c 等于d
上面代码首先对c > d 求值,如果该表达式为True , 程序将会执行并返回第一个表达式:print (“c 大于d”); 否则系统将会计算else 后面的内容:( print (“c 小于d” ) if c < d else print(“c 等于d”)),该三目运算符再次判断c<d ,如果该表达式为True ,将会输出“ c 小于d ”;否则只剩下“ c 等于d ” 一种情况,自然就输出该字符串了。
1.6.9 in运算符
Python 提供了in 运算符,用于判断某个成员是否位于序列,Python 也提供了in 的反义词:not in 。
1.6.10 运算符的结合性和优先级
Python 语言中的大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,它们是从右向左结合的,也就是说,它们是从右向左运算的。
乘法和加法是两个可结合的运算符,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。
运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序。
运算符说明 | Python运算符 | 优先级 |
---|---|---|
索引运算符 | x[index]或x [index:index2[:index3]] | 18、19 |
属性访问 | x. attribute | 17 |
乘方 | ** | 16 |
按位取反 | ~ | 15 |
符号运算符 | +或- | 14 |
乘、除 | *、/、//、% | 13 |
加、减 | +或- | 12 |
位移 | >>、<< | 11 |
按位与 | & | 10 |
按位异或 | ^ | 9 |
按位或 | \ | 8 |
比较运算 | ==、!=、>、>=、<、<= | 7 |
is运算符 | is 、is not | 6 |
in运算 | in、not in | 5 |
逻辑非 | not | 4 |
逻辑与 | and | 3 |
逻辑或 | or | 2 |
更多推荐
《疯狂Python》学习第3课
发布评论