上节课复习:
while 条件:
代码1
代码2
代码3
else:
代码1
代码2
代码3
结束while循环的两种方式:
1、条件改为false
2、break
while+continue:
1、continue同级别之后不要写代码
2、不要把continue放在最后一步
while+else
2、for循环
1、for 变量名 in 值:
代码1
代码2
代码3
else:
代码1
代码2
代码3
for + break
今日内容:
基本数据类型常用操作及内置方法
for循环补充:
for+range
for+enumerate
可变类型与不可变类型
int
float
str
list
for + range
在python2中
range(2)=======》》》》【0,1,2】
range(3,10)======》》》》【3,4,5,6,7,8,9】
range(3,10,2)=======》》》》【3,5,7,9】
range(10,3,-1)======》》》》【10,9,8,7,6,5,4】
for + enumerate
for item in enumerate(【‘egon’,‘tom’,‘jack’】):
print(item)
#1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
#2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
x = 10
print(id(x))
x = 11
print(id(x))
================================int基本使用======================================
1、用途:记录年龄、个数、号码等整数相关的
2、定义方式:
age = 18 # age = int(18)
#int数据类型转换:可以把纯数字组成的字符串转成整形
res=int(‘18’)
3、常用操作+内置的方法
数字运算+比较运算
存一个值,不可变
===============================float类型====================================
1、用途:记录薪资、身高、体重
2、定义方式
salary = 3.1 #salary = float(3.1)
#float数据类型转换:可以把小数组成的字符串转成整形
res = float(111)
res = float(‘1.1’)
存一个值,不可变
#补充了解:
Long类型:python2中的长整形
print(bin(11)) 二进制转换
print(oct(11))8进制转换
print(hex(11))16进制转换
=================================字符串类型=====================================
1、用途:记录描述性质的状态
2、定义方式:在“”,“”“”“”,‘’‘’‘’内包含一串字符
msg = "asd" # msg = str('' abc'')
#上述引号定义出来的都是str类型,没有区别
#引号的嵌套:外层双引号,内层只能用单引号
#三引号可以存放多行字符串
#数据类型转换:str可以把任意类型都转成字符串类型
#补充 \n 换行
print("abc\nddd")
print(r"abc\nddd")
print("abc\\nddd")
举例:
file_path = 'D:\new\a.py''
print(file_path)=======>>>>>>>>>>>乱码
修正:file_path =r 'D:\new\a.py''
或者file_path = 'D:\\new\\a.py''
字符串类型:只能取不能改
#切片(骨头不顾尾,步长)
msg = "hello world"
res=msg[1:7:2]
print(res)
#长度len
#成员运算in和not in
msg = “hello world”
print(“he” not in msg)
#移除空白strip
msg = " hello "
res=msg.strip()
print(res)
print(msg)
msg = "********hello*******************"
res=msg.strip("*")
print(res)
print(msg)
msg = "*****+%***hello*******************"
res=msg.strip("*+%")
print(res)
print(msg)
#切分split
msg="egon:123:3000"
res=msg.split(":")
print(res)
#循环
================================
需要掌握的操作
1、优先掌握的操作*****:
1、按索引取值(正向取+反向取) :只能取 msg = 'hello world' print(msg[0],type(msg[0])) # 正向取 >>>: h <class 'str'> print(msg[-1]) # 反向取 msg[0] = 'H' # 只能取不能改 2、切片(顾头不顾尾,步长) 字符串切片:从字符串中取出相应的元素,重新组成一个新的字符串 语法: 字符串[ 开始元素下标 : 结束元素下标 : 步长 ] # 字符串的每个元素都有正负两种下标 步长:切片间隔以及切片方向,默认值是1;实际意义为从开始取一个数据,跳过步长的长度,再取一个数据,一直到结束索引 步长为正值:开始索引默认为0, 结束索引默认为最后是len()+1,从开始索引从左往右走; 步长为负值:开始索引默认为-1, 结束索引默认为开始,不能认为是0,也不能认为是-1,从开始索引从右往左走; msg = 'hello world' res1 = msg[1:7] res2 = msg[1:7:2] print(res1) print(res2) print(msg) >>>: ello w el hello world 复制: res = msg[:] print(res) >>>: hello world 将字符串倒着写出来 res = msg[::-1] print(res) 3、长度len msg = 'hello world' print(len(msg)) >>>: 11 4、成员运算in和not in msg = 'hello world' print('he' in msg) print('he' not in msg) # 推荐 print(not 'he' in msg) >>>: True False False 5、移除空白strip msg = ' hello ' print(msg.strip()) >>>: msg = 'hello world' msg = '*******hello*******' print(msg.strip('*')) >>>: hello msg = '+*-hello***%/*' print(msg.strip('+*-/%')) >>>: hello 6、切分split msg = 'egon:123:3000' res = msg.split(':') print(res[0]) >>>: egon res = msg.split(':',1) print(res) >>>: ['egon', '123:3000'] 7、循环 msg = 'hello word' for x in msg: print(x)
2、需要掌握的操作****:
1、strip,lstrip,rstrip msg = '*****hello*****' print(msg.strip('*')) print(msg.lstrip('*')) #去除左边指定字符 print(msg.rstrip('*')) #去除右边指定字符 >>>: hello hello***** *****hello 2、lower,upper msg = 'hello word' print(msg.lower()) print(msg.upper()) >>>: hello word HELLO WORD 3、startswith,endswith msg = 'egon is ok' print(msg.startswith('egon')) print(msg.startswith('eg')) print(msg.endswith('ok')) >>>: True True True 4、format的三种玩法 msg = 'my name is %s ,my age is %s' %('egon',18) msg = 'my name is {name} ,my age is {age}'.format(age = 18,name = 'egon') msg = 'my name is {1} ,my age is {0}{0}'.format(18,'egon') print(msg) print(msg) print(msg) >>>: my name is egon ,my age is 18 my name is egon ,my age is 18 my name is egon ,my age is 1818 补充: msg = 'my name is {name} ,my age is {age}'.format(**{'age':18,'name':'egon'}) msg = 'my name is %(name)s ,my age is %(age)s' %{'age':18,'name':'egon'} print(msg) print(msg) >>>: my name is egon ,my age is 18 my name is egon ,my age is 18 name = 'egon' age = 18 res = f'my name is {name} my age is {age}' print(res) >>>: my name is egon my age is 18 5、split,rsplit msg = 'egon:18:3000' print(msg.split(":",1)) print(msg.rsplit(":",1)) >>>: ['egon', '18:3000'] ['egon:18', '3000'] 6、join msg = 'egon:18:3000' l = msg.split(":") print(l) res = ":".join(l) print(res) >>>: ['egon', '18', '3000'] egon:18:3000 7、replace msg = 'egon xxx egon yyy egon' res = msg.replace('egon','Egon',1) res = msg.replace('egon','Egon',-1) res = msg.replace('egon','Egon') print(res) >>>: Egon xxx egon yyy egon Egon xxx Egon yyy Egon Egon xxx Egon yyy Egon 小案例: msg = '**_+_***he llo***+_**' res = msg.strip('*_+-').replace(" ",'') print(res) 8、isdigit num = input('>>>:') if num.isdigit(): num = int(num) print(num > 10) else: print('必须输入数字,小垃圾')
3、其他操作(了解即可)
其他操作(了解即可)*** 1、find,rfind,index,rindex,count msg = 'hello xxelx yyely abc' res =msg.find('el') res =msg.rfind('el') print(res) res1 = msg.index('el') res2 = msg.find('nnn') # 找不到返回-1 res2 = msg.index('nnn') # 找不到则报错 print(res1) print(res2) 2、center,ljust,rjust,zfill print('hello'.center(20,'*')) # *******hello******** print('hello'.ljust(20,'*')) # hello*************** print('hello'.rjust(20,'*')) # ***************hello print('hello'.zfill(20)) # 000000000000000hello 3、captalize,swapcase,title print('hello'.capitalize()) # Hello print('aAbB'.swapcase()) # AaBb print('hello word'.title()) # Hello Word 4、is数字系列 在python3中 num1=b'4' #bytes num2=u'4' #unicode,python中无需加u就是unicode num3='四' # 中文数字 num4='Ⅳ' #罗马数字 bytes、unicode print(num1.isdigit()) # True print(num2.isdigit()) # True print(num3.isdigit()) # False print(num4.isdigit()) # False unicode print(num2.isdecimal()) # True print(num3.isdecimal()) # False print(num4.isdecimal()) # False unicode、中文数字、罗马数字 print(num2.isnumeric()) # True print(num3.isnumeric()) # True print(num4.isnumeric()) # True 5、is其他 name = 'egon123' print(name.isalpha()) # False 只能由字母组成 print(name.isalnum()) # True 由字母或数字组成 print(name.islower()) # 是否全是小写 print(name.isupper()) # 是否全是大写 name = ' ' print(name.isspace()) # True name = 'Hell oword' print(name.istitle()) # False
该类型总结:
存一个值 有序 不可变
习题:
写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分) name = " aleX" 1) 移除 name 变量对应的值两边的空格,并输出处理结果 res = name.strip() print(res) #aleX 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果 res1 = name.startswith('al') res2 = name.strip().startswith('al') print(res1) # False print(res12) # True 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果 res = name.endswith('X') print(res) # True 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果 res = name.replace('l','p') print(res) # apeX 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。 res = name.split('l') print(res) # [' a', 'eX'] 6) 将 name 变量对应的值变大写,并输出结果 res = name.upper() print(res) # ALEX 7) 将 name 变量对应的值变小写,并输出结果 res = name.lower() print(res) # alex 8) 请输出 name 变量对应的值的第 2 个字符? res = name[1] print(res) # a 9) 请输出 name 变量对应的值的前 3 个字符? res = name[0:3] print(res) # al 10) 请输出 name 变量对应的值的后 2 个字符? res = name[-2::] print(res) #eX 11) 请输出 name 变量对应的值中 “e” 所在索引位置? res = name.index('e') print(res) # 3 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。 str1 = 'oldboy' res = str1[:-1] print(res)
3、列表
1、用途:按照位置存放多个值
2、定义方式:在[ ]内用逗号分隔开多个任意类型的值
l = [111,2222,333,'xxx',[11,22,33]] # l = list(...) print(type(l)) #<class 'list'>
list数据类型转换,把可迭代的类型转成列表,可以被for循环遍历的类型
res = list('hello') print(res) # ['h', 'e', 'l', 'l', 'o'] res =list({'k1':111,'k2':222}) print(res) # ['k1', 'k2'] res = list(1000) #TypeError: 'int' object is not iterable print(list(range(10))) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3、常用操作+内置方法
优先掌握的操作:
View Code
需要掌握的操作:
明日讲解