python基本语法(四)数据类型上
数字类型
int (整型)
一:基本使用
1、用途:年龄 号码 等级...
2、 定义方式
age=10 #age=int(10) x=int('1111') # int只能将纯数字的字符串转成十进制的整型 print(type(x)) #>>> <class 'int'>
3 、常用操作+内置的方法
算数运算,比较运算
二:该类型总结
1 存一个值or存多个值
只能存一个值
2 有序or无序
没有有序无序这么一说
3 可变or不可变
可变不可变类型总结:
可变指的是改变原值,即在原值基础上进行修改
可变类型的底层原理:在id不变的情况下,值可以改变
不可变类型的底层原理:值改变,id也跟着变
int是不可变数据类型
age=10 print(id(age)) age=11 print(id(age)) ''' #>>> 1856746848 1856746880 '''
了解(**):
长整型Long,只有在python2中才有长整型号
复数complex
x=1-2j
print(x.real)
print(x.imag)
print(type(x))
一:基本使用
1 用途:薪资 身高 体重
2 定义方式
salary=3.1 #salary=float(3.1) n=float('3.1')
3 常用操作
算数运算 比较运算
二:该类型总结
1 存一个值or存多个值
只能存一个值
2 有序or无序
没有有序无序这么一说
3 可变or不可变
float是不可变类型
x=3.1 print(id(x)) x=3.2 print(id(x)) '''>>> 253287403928 1253287403976 '''
字符串类型
字符串
一:基本使用
1 用途: 描述性质的数据,比如人的名字,单个爱好,地址
2 定义方式
name='egon' #name=str('egon') x=str(1) y=str(1.1) z=str([1,2,3]) n=str({'a':1}) print(type(x)) print(type(y)) print(type(z)) print(type(n)) '''>>> <class 'str'> <class 'str'> <class 'str'> <class 'str'> '''
3 常用操作+内置的方法
优先掌握的操作(*****):
1、按索引取值(正向取+反向取) :只能取
msg='hello world' print(type(msg[5])) print(msg[-1]) #msg[2]='A' <<错误 '''>>> <class 'str'> d '''
2、切片(顾头不顾尾,步长)
msg='hello world' print(msg[1:5],type(msg[1:5])) print(msg[6:-1]) print(msg[6:11]) print(msg[6:]) print(msg[6::2]) '''>>> ello <class 'str'> worl world world wrd '''
了解(**)
msg='hello world' print(msg[0:]) print(msg[::-1]) msg='hello world' print(msg[-3:-6:-1]) '''>>> hello world dlrow olleh row '''
#print(msg[6:9:-1]) #此代码无输出内容
3、长度len
msg='hello world' print(len(msg)) #>>> 11
4、成员运算in和not in
print('SB' in 'my name is alex,alex is SB') print('alex' in 'my name is alex,alex is SB') print('egon' not in 'my name is alex,alex is SB') # 推荐 print(not 'egon' in 'my name is alex,alex is SB') #>>>全部输出>>>True
5、移除空白strip
name=' e gon ' print(name.strip(' ')) #>>>e gon print(name.strip()) #>>>e gon name='****A*e*gon****' print(name.strip('*')) #>>>A*e*gon name='****egon****' print(name.lstrip('*')) #>>>egon**** print(name.rstrip('*')) #>>>egon**** pwd=input('>>: ').strip() #pwd='123 ' if pwd == '123': print('login successful') #>>>
msg='cccabcdefgccccc' print(msg.strip('c')) #>>>abcdefg print('*-=egon *&^'.strip('-= *&^')) #>>>egon
6、切分split
msg='egon:18:male:180:160' l=msg.split(':') print(l) #>>>['egon', '18', 'male', '180', '160' print(l[3]) #>>>180
7、循环
msg='hello world' for x in msg: print(x) '''>>> h e l l o w o r l d '''
需要掌握的操作(****)
1、strip,lstrip,rstrip
name='*egon**' print(name.strip('*')) #>>>egon print(name.lstrip('*')) #>>>egon**
print(name.rstrip('*')) #>>>*egon
2、lower,upper
name='EoN' print(name.lower()) #>>>eon name='egonN' print(name.upper()) #>>>EGONN
3、startswith,endswith
print('alex is SB'.startswith('alex')) #>>>True print('alex is SB'.endswith('B')) #>>>True
4、format的三种玩法
print('my name is %s my age is %s' %('egon',18)) print('my name is {name} my age is {age}'.format(age=18,name='egon')) # 可以打破位置的限制,但仍能指名道姓地为指定的参数传值 print('my name is {} my age is {}'.format('egon',18)) print('my name is {0} my age is {1} '.format('egon',18)) #四行代码都输出>>>my name is egon my age is 18
5、split,rsplit
info='egon:18:male' print(info.split(':',1)) #>>>['egon', '18:male'] print(info.split(':',1)) #>>>['egon','18:male'] print(info.rsplit(':',1)) #>>>['egon:18','male']
6、join:只能将元素全为字符串的列表拼成一个大的字符串
info='egon:18:male' l=info.split(':') print(l) #>>>['egon', '18', 'male'] new_info='-'.join(l) print(new_info) #>>>['egon', '18', 'male'] num=['a','b','c'] ':'.join(num) #>>>a:b:c # num=[1,2,'c'] #!!数字无法执行 # ':'.join(num)
7、replace
msg='my name is wupeiqi,wupeiqi is SB' print(msg.replace('wupeiqi','Pig',1)) #>>>my name is Pig,wupeiqi is SB print(msg) #>>>my name is wupeiqi,wupeiqi is SB
8、isdigit
print('111.1'.isdigit()) #>>False print('1111'.isdigit()) #>>>True
AGE=73 age=input('>>: ').strip() #age='asdfasdf' #去用户输入的头尾的空格 if age.isdigit(): #判断变量值是否为数字 age=int(age) if age > AGE: print('too big') elif age < AGE: print('too small') else: print('you got it') else: print('必须输入数字啊傻叉')
其他操作(了解即可)(**)
1、find,rfind,index,rindex,count
msg='my name is alex,alex is hahaha' print(msg.find('alex')) #>>>11 #找出字符串在大字符串的起始位置 print(msg.find('SB')) #>>>-1 #找不到会返回-1 print(msg.index('alex')) #>>>11 print(msg.index('SB')) # 找不到index会报错>>ValueError: print(msg.find('alex',0,3)) #>>>-1 print(msg.count('alex')) #>>>2 print(msg.count('alex',0,15)) #>>>1
2、center,ljust,rjust,zfill
print('info egon'.center(50,'-')) print('info egon'.ljust(50,'-')) print('info egon'.rjust(50,'-')) print('info egon'.zfill(50)) '''>>> --------------------info egon--------------------- info egon----------------------------------------- -----------------------------------------info egon 00000000000000000000000000000000000000000info egon '''
3、expandtabs
print('a\tb\tc'.expandtabs(1)) #>>>a b c
4、captalize,swapcase,title
print('my name is egon'.capitalize()) #>>>My name is egon print('my Name Is egon'.swapcase()) #>>>MY nAME iS EGON print('my name is egon'.title()) #>>>My Name Is Egon
5、is数字系列
num1=b'4' #bytes num2=u'4' #unicode,python3中无需加u就是unicode num3='壹' #中文数字 num4='Ⅳ' #罗马数字 #isdigit():bytes,unicode print(num1.isdigit()) #>>>True print(num2.isdigit()) #>>>True print(num3.isdigit()) #>>>False print(num4.isdigit()) #>>>False #isdecimal():unicode print(num2.isdecimal()) #>>>True print(num3.isdecimal()) #>>>False print(num4.isdecimal()) #>>>False #isnumberic;unicode,中文,罗马 print(num2.isnumeric()) #>>>True print(num3.isnumeric()) #>>>True print(num4.isnumeric()) #>>>True
6、is其他
print('abasdf123123'.isalnum()) #>>>True print('asdfasdf'.isalpha()) #>>>True print('egon'.islower()) #>>>True print('ABC'.isupper()) #>>>True print(' '.isspace()) #>>>True print('My Name Is Egon'.istitle()) #>>>True
#二:该类型总结
1 存一个值or存多个值
只能存一个值
2 有序or无序
有序
3 可变or不可变
不可变
name='egon' print(id(name)) #>>>2003839202000 name='alex' print(id(name)) #>>>2003840071864
列表类型
作用:多个装备,多个爱好,多门课程,多个女朋友等
定义:[]内可以有多个任意类型的值,逗号分隔
my_girl_friends=['alex','wupeiqi','yuanhao',4,5] #本质my_girl_friends=list([...]) l=list('hello') # list内只能跟能够被for循环遍历的数据类型 print(l) #>['h', 'e', 'l', 'l', 'o'] l=list({'a':1,'b':2}) print(l)#>['a', 'b']
优先掌握的操作:
1、按索引存取值(正向存取+反向存取):即可存也可以取
names=['alex','wxx','lxx','egon'] names[0]='ALEX'# 列表第一元素以更改 print(names)#>>['ALEX', 'wxx', 'lxx', 'egon']
2、切片(顾头不顾尾,步长)
names=['alex','wxx','lxx','egon'] print(names[0:3]) #>['alex', 'wxx', 'lxx']
3、长度
names=['alex','wxx','lxx','egon'] print(len(names)) #>>4
4、成员运算in和not in
names=['alex','wxx','lxx','egon',4] print(4 in names) #>>>True
5、追加
names=['alex','wxx','lxx','egon'] names.append('cxx1') names.append('cxx2') names.append('cxx3') print(names) #>>['alex', 'wxx', 'lxx', 'egon', 'cxx1', 'cxx2', 'cxx3']
6、删除
names=['alex','wxx','lxx','egon'] del names[2] print(names)#>>>['alex', 'wxx', 'egon']
7、循环
names=['alex','wxx','lxx','egon'] for name in names: print(name) ''' alex wxx lxx egon '''
需要掌握的操作(****)
names=['alex','wxx','lxx','egon',4,3.1] names.insert(1,'SB') print(names) #>['alex', 'SB', 'wxx', 'lxx', 'egon', 4, 3.1] names=['alex','wxx','lxx','egon',4,3.1] res=names.remove('wxx') # 单纯的删掉,是按照元素的值去删除,没有返回值 print(res)#>>None print(names) #>>['alex', 'lxx', 'egon', 4, 3.1]
names=['alex','wxx','lxx','egon',4,3.1] res=names.pop(1) #拿走一个值,是按照索引去删除,有返回值 print(names) #>>['alex', 'lxx', 'egon', 4, 3.1] print(res)#>>wxx
names=['alex','wxx','lxx','egon',4,3.1] print(names.pop()) #>>3.1 print(names.pop()) #4 print(names) #>>['alex', 'wxx', 'lxx', 'egon']
names=['alex','wxx','lxx','lxx','egon',4,3.1] print(names.count('lxx')) #>>2 print(names.index('lxx')) #>>2 ,返回索引号 names.clear() print(names) #>>[] x=names.copy() print(x) #>>['alex', 'wxx', 'lxx', 'lxx', 'egon', 4, 3.1] names.extend([1,2,3]) print(names) names.reverse() print(names) #>>['alex', 'wxx', 'lxx', 'lxx', 'egon', 4, 3.1, 1, 2, 3
names=[1,10,-3,11] names.sort(reverse=True) print(names) #>>[11, 10, 1, -3]
二:该类型总结
1 存一个值or存多个值
可以存多个值,值都可以是任意数据类型
2 有序or无序
有序
3 可变or不可变
可变
l=['a','b'] print(id(l)) l[0]='A' print(id(l)) '''1887846495176 1887846495176'''