Py2,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1, python3中已取消使用
-cmp()函数
python2使用,python3已取消。
Python3中对应的使用:
```python
>>>import operator
然后:
>>> operator.eq("a","a");True
lt(a,b) 相当于 a<b 从第一个数字或字母(ASCII)比大小
less than
le(a,b)相当于a<=b
less and equal
eq(a,b)相当于a==b 字母完全一样,返回True,
equal
ne(a,b)相当于a!=b
not equal
gt(a,b)相当于a>b
greater than
ge(a,b)相当于 a>=b
greater and equal
函数的返回值是布尔
NameError: name ...isnot defined
名称错误:某某名称未被定义
19.随机函数(random)
一:模块导入
方法1import random
方法2from random import*
二:常用的方法
random 模块常用的功能
1.random.random():用于随机生成一个0到1的浮点数n(0<=n<=1)
>>>import random
>>> num = random.random()>>>print(num)0.9637473539149145>>>print(num)0.9637473539149145>>> num = random.random()>>>print(num)0.347429211267317
2.random.uniform(a,b):用于生成指令范围的随机浮点
数,两个参数,其中之一上限,另一个是下限:
a.如果a>b,生成的随机数n:a<= n <=b;
b.如果a<b,生成的随机数n:b<= n <=a;
>>>import random
>>> random.uniform(1,10)9.828196503352695>>> random.uniform(10,1)1.7689119414667456>>>
name ="Changsha"#双引号
age ="5000"#只要加双引号就是字符串
age_1 =5000#不加,整形
msg ="""I'm in Changsha"""#三双引号
msg_1 ='''I'm in Hengyang'''#三单引号
hometowm ='Changsha'#单引号print(type(name),type(age),type(age_1),type(msg),type(msg_1),type(hometowm),sep="|")<class'str'>|<class'str'>|<class'int'>|<class'str'>|<class'str'>|<class'str'>
>>> a ="Life is short, I use python">>>len(a)#查询a字符串的总长度27>>> a[0]'L'>>> a[15]'I'>>> a[-1]'n'>>> a[-6]'p'>>>#切片...>>> a[:13]#0到12索引的所有值'Life is short'>>> a[15:]#从索引15到最后的值'I use python'>>> a[15::2]#从索引值15开始,步长为2,每次跳过一个元素,一直到最后'Iuepto'>>> a[::-1]#逆序输出'nohtyp esu I ,trohs si efiL'>>> a[::-2]#负数就是从右往左取,取偶数'nhy s toss fL'
(4)大小写转换
str.lower():转小写
str.upper():转大写
str.swapcase():大小写转换
str.capitalize():字符串首为大写,其余小写
str.title():以分隔符为标记,首字符为大写,其余为小写
>>> a ="Life is short, I use python">>> a.lower()#转小写'life is short, i use python'>>> a.upper()#转大写'LIFE IS SHORT, I USE PYTHON'>>> a.swapcase()#大写变小写,小写变大写'lIFE IS SHORT, i USE PYTHON'>>> a.capitalize()#字符串首为大写,其余小写'Life is short, i use python'>>> a.title()#以分隔符为标记,首字符为大写,其余为小写'Life Is Short, I Use Python'>>>
应用:验证码不区分大小写
a ="LIFE"
c =input("请输入一个验证码")if a.lower()== c.lower():print("输入的验证码正确")else:print("输入的验证码错误")
(5)字符串格式输出对齐
str.center()
str.ljust()
str.rjust()
str.zfill()
>>> a ="Life is short, I use python"#总长度27,写了35,就是35减27=8然后填充8个指定填充的东西>>> a.center(35,'*')#返回一个原字符串居中,并使用空格填充长度(width)的新字符串'****Life is short, I use python****'>>> a.ljust(35,'*')#返回一个原字符串左对齐,并使用空格填充至长度(width)的新字符串'Life is short, I use python********'>>> a.rjust(35,'*')#返回一个原字符串右对齐,并使用空格填充至长度(width)的新字符串'********Life is short, I use python'>>> a.zfill(35)#返回长度为(width)的字符串,原字符串String右对齐,前面填充0,只有一个参数'00000000Life is short, I use python'>>>
(6)删除指定字符
str.lstrip():删除左边的指定字符串
str.rstrip():删除右边的指定字符串
str.strip():删除两边的指定字符串
注意空格也行
>>> a ="****Life is short, I use python****">>> a.lstrip("*")'Life is short, I use python****'>>> a.rstrip("*")'****Life is short, I use python'>>> a.strip("*")'Life is short, I use python'>>>
(7)计数
=COUNTIF(B2:B31,">=30")/COUT(B2:B31)
>>> a ="Life is short, I use python">>> a.count('i')#返回str在string里面出现的次数2>>> a.count('i',4,8)#在索引值为[4,8]的范围内str出现的次数1
(8)字符串搜索定位与替换
str.find()
>>> a ="Life is short, I use python">>> a.find('e')#查找元素并返回第一次出现的元素的索引值3>>> a.find('e',18,24)#查找元素在指定索引范围内的索引19>>> a.find('w')#找不到值返回-1-1>>>
str.index()
和find()方法一样,只不过如果str不在string中会报一个异常
>>> a ="Life is short, I use python">>> a.index('e')3>>> a.index('e',18)19>>> a.index('w')
Traceback (most recent call last):
File "<stdin>", line 1,in<module>
ValueError: substring not found
>>>
str.replace():替换
>>> a ="Life is short, I use python">>> a.replace('I use','You need')'Life is short, You need python'>>> a.replace('t','T')'Life is shorT, I use pyThon'>>> a.replace('t','T',2)#两次出现的小写't'换成大写'T''Life is shorT, I use pyThon'>>>
(9)字符串条件判断
isalnum(),字符串由字母或数字组成,
isalpha(),字符串只由字母组成,
isdigit(),字符串只由数字组成
In [1]: a ="abc123"
In [2]: b ="ABC"
In [3]: c =123
In [4]: a.isalnum()
Out[4]:True
In [5]: a.isalpha()
Out[5]:False
In [6]: a.isdigit()
Out[6]:False
In [7]: b.isalnum()
Out[7]:True
In [8]: b.isalpha()
Out[8]:True
In [9]: b.isdigit()
Out[9]:False>>>str='01234'>>>str.isalnum()#是否全是字母和数字,并至少有一个字符True>>>str.isdigit()#是否全是数字,并至少有一个字符True>>>str='string'>>>str.isalnum()#是否全是字母和数字,并至少有一个字符True>>>str.isalpha()#是否全是字母,并至少有一个字符 True>>>str.islower()#是否全是小写,当全是小写和数字一起时候,也判断为TrueTrue>>>str="01234abcd">>>str.islower()#是否全是小写,当全是小写和数字一起时候,也判断为TrueTrue>>>str.isalnum()#是否全是字母和数字,并至少有一个字符True>>>str=' '>>>str.isspace()#是否全是空白字符,并至少有一个字符True>>>str='ABC'>>>str.isupper()#是否全是大写,当全是大写和数字一起时候,也判断为TrueTrue>>>str='Aaa Bbb'>>>str.istitle()#所有单词字首都是大写,标题 True>>>str='string learn'>>>str.startswith('str')#判断字符串以'str'开头True>>>str.endswith('arn')#判读字符串以'arn'结尾True
(10)制表符转换
str.expandtabs()
>>> a ="L\tife is short, I use python">>> a.expandtabs()#默认将制表符转化为8个空格'L ife is short, I use python'>>> a.expandtabs(4)#加上参数,将制表符转化为对应个数的空格
'L ife is short, I use python
>>>
PS E:\python\python课堂练习> python 格式输出.py
Name:name
Age:age
Job:job
Hobbie:hobbie
--- info of name ---
Name : name
Age : age
job : job
Hobbie: hobbie
------end-------
PS E:\python\python课堂练习>
li =[]for i inrange(3):
dic={}
name =input("姓名:")
age =input("年龄:")
job =input("工作:")
hobble =input("爱好:")
dic["姓名"]= name
dic["年龄"]= age
dic["工作"]= job
dic["爱好"]= hobble
#print(dic)
li.append(dic)print(li)
>>>"His name is %s\n his age is %d"%("Tom",18)'His name is Tom\n his age is 18'>>>print("His name is %s\n his age is %d"%("Tom",1
His name is Tom
his age is18>>>
>>>"His name is %s\n his age is %d"%("Tom",18)'His name is Tom\n his age is 18'>>>print("His name is %s\n his age is %d"%("Tom",18))
His name is Tom
his age is18>>>print(r"His name is %s\n his age is %d"%("Tom",18))
His name is Tom\n his age is18>>>
>>> a =15>>>print(("%d to hex is %x")%(a,a))15 to hexis f
>>>"%x"%15'f'>>>"%f"%15'15.000000'>>>"%e"%15000'1.500000e+04'>>>"%d"%100'100'>>>"%d%%"%100'100%'>>>
>>> t1 =(1,"hunan",['h','u','n','a','a'],('I','love','python'),{"name":"Tom","age":18})>>> t1[0]=0
Traceback (most recent call last):
File "<stdin>", line 1,in<module>
TypeError:'tuple'object does not support item assignmen
>>>
>>> info ={"usrname":"Lilei","age":18,"Class":"one"}>>> info
{'usrname':'Lilei','age':18,'Class':'one'}>>>
2.通过函数创建字典(强制转换):
>>> info =dict(usrname ="Lilei", age =18, Class ="one")>>> info
{'usrname':'Lilei','age':18,'Class':'one'}>>> info =dict([['name','LiLei'],['age',18]])>>> info
{'name':'LiLei','age':18}>>> info =dict((('name','LiLei'),('age',18)))>>> info
{'name':'LiLei','age':18}>>> info =dict([('name','LiLei'),('age',18)])>>> info
{'name':'LiLei','age':18}>>> info =dict((['name','LiLei'],['age',18]))>>> info
{'name':'LiLei','age':18}>>>
3.通过字典的fromkeys方法创建字典
>>> info =dict.fromkeys("Hello")#如果没有指定默认值,默认为None;>>> info
{'H':None,'e':None,'l':None,'o':None}>>> info =dict.fromkeys(["Lilei","Lee","Jack"],"123456")#给每个元素设置默认值为"123456";>>> info
{'Lilei':'123456','Lee':'123456','Jack':'123456'}>>>
29.2字典的常见操作
字典值的访问(查的一种)
#字典是无序的,不能通过索引值来获取值>>> info = info[2]
Traceback (most recent call last):
File "<stdin>", line 1,in<module>
KeyError:2>>>
通过键(key)访问值(value)
key值不存在的时候,会报错
>>> info ={"usrname":"Lilei","age":18,"Class":"one"}>>> info["usrname"]#通过关键字访问对应的值'Lilei'>>> info["age"]18>>> info["usname"]#没有对应的key,报错
Traceback (most recent call last):
File "<stdin>", line 1,in<module>
KeyError:'usname'>>>
使用get访问值(value)
不确定字典中是否存在某个键而又想获得其值时,可以使用get方法,还
可以设置默认值
当key不存在的,不会抛出异常,返回None。
>>> info ={"name":"LiLei","age":18}>>> info.get("name")'LiLei'#当key不存在,不会抛出异常,返回None>>> info.get("job")>>>type(info.get("job"))<class'NoneType'>>>>
增
直接添加新键-值对
在使用 变量名[‘键’] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素:
>>> info ={"name":"LiLei","age":18}>>> info["job"]="IT">>> info
{'name':'LiLei','age':18,'job':'IT'}>>>
dict.update(info1)
把字典info1的键/值对更新到info里
当两个字典中的键不同时,把info1的键值插入到info中
当两个字典中存在相同键时,info1覆盖dit的键值
#当两个字典完全不相同时>>> info ={"name":"LiLei","age":18}>>> info1 ={"job":"IT","salary":100000}>>> info.update(info1)>>> info
{'name':'LiLei','age':18,'job':'IT','salary':100000}>>> info
{'name':'LiLei','age':18,'job':'IT','salary':100000}>>> info1
{'job':'IT','salary':100000}>>>#当两个字典存在相同键时,会覆盖前面的键值>>> info ={"name":"LiLei","age":18}>>> info2 ={"name":"Tom","salary":10000}>>> info.update(info2)>>> info
{'name':'Tom','age':18,'salary':10000}>>>>>> info2
{'name':'Tom','salary':10000}>>>
删
del dict[keys]
删除指定的元素/键-值对
没有返回值
>>> info ={'name':'Tom','age':18,'salary':10000}>>>del info["salary"]>>> info
{'name':'Tom','age':18}>>>
del dict
删除整个字典
>>> info ={'name':'Tom','age':18,'salary':10000}>>>del info
>>> info
Traceback (most recent call last):
File "<stdin>", line 1,in<module>
NameError: name 'info'isnot defined
>>>
dict.clear()
清空整个字典
>>> info ={'name':'LiLei',"age":18}>>> info.clear()>>> info
{}>>>
dict.pop(keys)
删除指定键-值对
>>> info ={'name':'Tom','age':18,'salary':10000}>>> info.pop("age")18>>> info
{'name':'Tom','salary':10000}>>>
dict.popitem()
随机删除字典中的一组键值对
有返回值,以元组方式返回
应用不广泛
>>> info ={'name':'Tom','age':18,'salary':10000}>>> info.popitem()('salary',10000)>>> info
{'name':'Tom','age':18}>>>
改
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
直接修改
>>> info ={'name':'Tom','age':18,'salary':10000}>>> info["name"]="LiLei">>> info
{'name':'LiLei','age':18,'salary':10000}>>>
dict.setdefault()
键存在,不改动,返回字典中相应的值
键不存在,在字典中添加相应的键值对,并返回相应的值
# 键存在,不改动,返回字典中相应的值>>> info ={'name':'Tom','age':18,'salary':10000}>>> info.setdefault("age",20)18>>> info
{'name':'Tom','age':18,'salary':10000}>>># 键不存在,在字典中添加相应的键值对,并返回相应的值>>> info ={'name':'Tom','age':18,'salary':10000}>>> info.setdefault("job","IT")'IT'>>> info
{'name':'Tom','age':18,'salary':10000,'job':'IT'}>>>
>>> info ={'name':'Tom','age':18,'salary':10000}>>> info.keys()
dict_keys(['name','age','salary'])>>>>>> info.values()
dict_values(['Tom',18,10000])>>>>>> info.items()
dict_items([('name','Tom'),('age',18),('salary',10000)])>>>>>>"age"in info
True>>>"job"in info
False>>>
29.3字典的遍历
(1)遍历字典的键(keys)
>>> info ={"usrname":"Lilei","age":18,"Class":"one"}>>>for key in info.keys():...print(key,end=" ")...
usrname age Class >>>
(2)遍历字典的值(values)
>>> info ={"usrname":"Lilei","age":18,"Class":"one"}>>>for value in info.values():...print(value,end =" ")...
Lilei 18 one >>>
(3)遍历所有的项(items)
>>> info ={"usrname":"Lilei","age":18,"Class":"one"}>>>for item in info.items():...print(item,end =" ")...('usrname','Lilei')('age',18)('Class','one')>>>
(4)遍历字典的键-值对(key-value)
>>> info ={"usrname":"Lilei","age":18,"Class":"one"}>>>for key,value in info.items():...print(key,":",value,end =" ")...
usrname : Lilei age :18 Class : one >>>