python基础-3(数据类型以及内置方法、解压缩、python与用户交互)

python基础

数据类型

首先我们要知道变量就是描述世间万物变化的状态,世间万物变化的状态是多种的,所以用不同的数据类型来描述这些不同的变量。其中最常见的几种数据类型分别是数字类型、字符串类型、列表类型、字典类型、布尔类型等。

数字类型

数字类型又分整型和浮点型。

整型(int)

作用:整型通常用来表示人的年龄、手机号码、级别。

定义:其中变量值为整数。

   age = 18 # age=int(18)
   age = (id(18))
   age = (type(18))      

**内置方法: ** 只有算术运算和比较运算

存一个值还是村多个值: 一个值

有序or无序(有索引还是无索引): 压根没有这一说法

可变还是不可变(值变id不变为可变,值变id也变为不可变): 不可变

浮点型 (float)

作用:浮点型则会用来表示人们的薪资、身高、体重等。

定义:变量值中含有小数点。

   salary = 33.2 # salary=float(33.2)
   salary = (id(33.2))
   salary = (type(33.2))

**内置方法: ** 只有算术运算和比较运算

存一个值还是村多个值: 一个值

有序or无序(有索引还是无索引): 压根没有这一说法

可变还是不可变(值变id不变为可变,值变id也变为不可变): 不可变

字符串类型(str)

作用:字符串类型一般用来表示爱好,名字等

定义:用单双引号或者三引号括起来的字符。

name = 'nick' # name = str('nick')
name = (id('nick'))
name = (type('nick'))

s = b'jin' # 打印出来的是bytes类型,二进制类型
w = 'a\na' # 遇到斜杠时, 计算机就会识别下一个字符与斜杠拼接一起具有特殊意义
# \n 表示换行
# \t 表示缩进4个空格
# \r 表示回退到上一个打印结果
w = 'a\\na' # 在斜杠前面再加一个斜杠表示取消该斜杠的特殊意义
w = r'a\na\te' # 加r表示取消该字符串里所有斜杠的特殊意义

**内置方法: **

索引取值
s = 'nick handsome'
print(s[1])  # i
切片(顾头不顾尾)
s = 'nick handsome'
print(s[::2])  # nc adoe  

print(s[5:0:-1]) # h kci     -1表示从右到左
for循环
s = 'nick handsome'
for i in s:
    print(i)
strip() 移除
s1 = '      nick handsome         '
print(s1.strip())  # nick hansome   默认移除空白

split() 切割
s2 = '***!!!!!nick handsome----***'
print(s2.split())  # 默认从左到右以空格切割字符串 也就是把空格转换为,
#['***!!!!!nick', 'handsome----***']

print(s2.split('!'))  # 以!切割 将!转换为,
#['***', '', '', '', '', 'nick handsome----***']

print(s2.split('!', 2)) # 转换两个!为,
#['***', '', '!!!nick handsome----***']
in 或 not in 成员判断
s2 = '***!!!!!nick handsome----***'
print('*' in s2)  # True

print('$' not in s2)  # True
len 长度
s2 = 'nick handsome'
print(len(s2))  # 求字符串的长度  
# 13
lstrip() 和 rstrip() 左移除和右移除
s2 = '***!!!!!nick handsome----***'
print(s2.lstrip('*')) #!!!!!nick handsome----***

print(s2.rstrip('*')) #***!!!!!nick handsome----
rsplit() 右切割
s2 = '***!!!!!nick handsome----***'
print(s2.rsplit('*', 1))
#['***!!!!!nick handsome----**', '']
lower和upper 小写和大写
s3 = 'aaabbJ'
print(s3.lower())
#aaabbj

print(s3.upper())
#AAABBJ
startswith和endswith 判断以什么开始和判断以什么结尾
s3 = 'aaabbJ'
print(s3.startswith('b'))  #False
print(s3.endswith('J'))  #True
join 拼接 一般与split联用
s = '辣条/薯片/汽水/泡面/火腿肠/枸杞/当归/鹿茸'

s1 = s.split('/') 

print(s1)  # 得到的是一个列表
#['辣条', '薯片', '汽水', '泡面', '火腿肠', '枸杞', '当归', '鹿茸']

print('*'.join(s1)) # 也就是说把,转换为* 得到的是一个字符串
#辣条*薯片*汽水*泡面*火腿肠*枸杞*当归*鹿茸
replace 替换
s2 = 'yongjiu handsome'
print(s2.replace('yongjiu', 'gebilaowang')) # 括号内第一个值为替换前的值,第二个值为替换之后的值
#gebilaowang handsome
isdigit(判断纯数字)/isalpha(判断纯字母)
s2 = '12312'
print(s2.isdigit())
#True

s3 = 'aaac1c'
print(s3.isalpha())
#False
以下方法为了解
# find|rfind|index|rindex|count
s2 = '**23423***ni234234ck $$ hand223423some******'
#     01234567891011
print(s2.find('j'))  # 从左找,找到第一个停止,找不到返回-1
print(s2.rfind('$'))  # 从右找,找到就停止,找不到返回-1
#  -1
#  22
print(s2.index('j'))  # 从左找,找不到报错
print(s2.rindex('$'))  # 从右找,找不到报错
# ValueError: substring not found
# 22

# center|ljust|rjust|zfill
s2 = 'nick handsome'
print(s2.center(50, '*'))  # 居中
print(s2.ljust(50, '*'))  # 居左
print(s2.rjust(50, '*'))  # 居右
print(s2.zfill(50))  # 填充0居右
# ******************nick handsome*******************
# nick handsome*************************************
# *************************************nick handsome
# 0000000000000000000000000000000000000nick handsome

# expandtabs
s2 = 'a\ta'
print(s2)
print(s2.expandtabs(8))  # 针对\t而言 缩进8格
# a	a
# a       a

# captalize|swapcase|title  只针对英文
s2 = 'harry Potter'
print(s2.capitalize())  # 首字母(一句话的开头)大写,其他全小写,用在段落开始
print(s2.swapcase())  # 大小写互换
print(s2.title())  # 所有单词首字母大写
# Harry potter
# HARRY pOTTER
# Harry Potter

# is系列(有兴趣的自己了解)
isalnum(): 如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False。
isalpha(): 如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False。
islower(): 如果字符串中只包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True,否则返回False。
isspace(): 如果字符串中只包含空白,则返回True,否则返回False
isupper(): 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True,否则返回False。
istitle(): 如果字符串是标题类型的(见title()),则返回True,否则返回False。

存一个值还是村多个值: 一个值

有序or无序(有索引还是无索引): 有序

可变还是不可变(值变id不变为可变,值变id也变为不可变): 不可变

注意:如果字符串内有引号,则包裹字符串的引号和字符串内部的引号不能相同。

msg2 = "my name is 'nick'"
msg3 = 'my name is "jin"'

print(msg2 + msg3)  # my name is 'nick'my name is "jin"

字符串的乘法只能乘以数字。

name = 'jin '
print(name * 10)  #jin jin jin jin jin jin jin jin jin jin

列表类型 (list)

作用:表示可以存放多个值,如多个女朋友,多个爱好。

定义:在[]内用逗号分隔开任意类型的值

hobby_list = [hobby, 'run', 'girl']
print(hobby_list)
print(id(hobby_list))
print(type(hobby_list))

内置方法:

索引取值改值
hobby_list = ['play', 'swimming', 'dancing', '666']

print(hobby_list[-1])  # 666

hobby_list[-1] = '233'  # 索引修改

print(hobby_list[-1])  # 233
切片(顾头不顾尾)
hobby_list = ['play', 'swimming', 'dancing', '233']

print(hobby_list[0:2])  # ['play', 'swimming']

print(hobby_list[::-1])  # 从右到左  # ['233', 'dancing', 'swimming', 'play']
长度 len
hobby_list = ['play', 'swimming', 'dancing', '666']

print(len(hobby_list)) # 4
in 或 not in 成员判断
hobby_list = ['play', 'swimming', 'dancing', '666']

print('play' in hobby_list)  # True

ptint('233' not in hobby_list) # True
for 循环
hobby_list = ['play', 'swimming', 'dancing', '666']

for hobby in hobby_list:
    print(hobby)
del 删除
hobby_list = ['play', 'swimming', 'dancing', '666']\

del hobby_list[-1]

print(hobby_list)
# ['play', 'swimming', 'dancing']
append() 追加
hobby_list = ['play', 'swimming', 'dancing', '666']

hobby_list.append('dapao-->piao')

print(hobby_list) # 默认加在末尾
# ['play', 'swimming', 'dancing', '666', 'dapao-->piao']
count() 计数
hobby_list = ['play', 'swimming', 'dancing', '666', '666', '666']

print(hobby_list.count('666'))  # 对列表内的某一个元素计数
#3
extend() 扩展列表
hobby_list = ['play', 'swimming', 'dancing', '666', '666', '666']

hobby_list.extend([1, 2, 3, 4])  # 扩展列表 

print(hobby_list)
#['play', 'swimming', 'dancing', '666', '666', '666', 1, 2, 3, 4]
clear() 清除列表
hobby_list.clear()  # 清除

print(hobby_list) #[]
copy() 复制列表
hobby_list = ['play', 'swimming', 'dancing', '666', '666', '666']

hobby_list2 = hobby_list.copy()  # 复制列表

# 因为列表是可变的
lis = [1, 2, 3, 4, 5]  
for i in lis:   # 1 2 3 4 5 #判断i是否在lis中,是走下一步,否就停止
    lis.pop()  
    print(lis)
 # [1,2,3,4]  # [1,2,3]  # [1,2]
pop() 默认删除列表里最后一个元素
hobby_list = ['play', 'swimming', 'dancing', '666', '666', '666']

hobby_list.pop()  # 删除,默认删除最后一个

print(hobby_list)
#['play', 'swimming', 'dancing', '666', '666']
index() 查看索引
hobby_list = ['play', 'swimming', 'dancing', '666', 666, '666']

print(hobby_list.index('play'))  # 查看'play'索引
#0

print(hobby_list.index('play', 2, 4))  # 索引2-4内'play',没有就报错
insert() 插入
hobby_list = ['play', 'swimming', 'dancing', '666', 666, '666']

hobby_list.insert(0, '1')  # 在0索引处插入'1'

print(hobby_list)
#['1', 'play', 'swimming', 'dancing', '666', 666, '666']
remove() 移除
hobby_list = ['1', 'play', 'swimming', 'dancing', '666', 666, '666']

hobby_list.remove('1')  # 移除'1'

print(hobby_list)
#['play', 'swimming', 'dancing', '666', 666, '666']
reverse() 反转
hobby_list = ['play', 'swimming', 'dancing', '666', 666, '666']

hobby_list.reverse()  # 顺序颠倒

print(hobby_list)
#['666', 666, '666', 'dancing', 'swimming', 'play']
sort() 排序
hobby_list = [5,3,8,7,6,1]

hobby_list.sort()

print(hobby_list)
#[1, 3, 5, 6, 7, 8]

存一个值还是村多个值: 多个值

有序or无序(有索引还是无索引): 有序

可变还是不可变(值变id不变为可变,值变id也变为不可变): 可变

元组类型(tuple)

作用:早期永远一般用于减小内存占用,现在毫无用处,以后只要定义列表就行了

定义:列表的中括号改成小括号

tup = (1,2,3,4)
元祖和列表一模一样,但是元祖无法修改,元祖在定义那一刻他的元素个数以及元素的值全部固定了

内置方法:

索引取值
hobby_tuple = ('play', 'swimming', 'dancing', '666')

print(hobby_tuple[-1])  # 666

hobby_list[-1] = '233'  # 不能索引修改,因为他是不可变的,报错
切片(顾头不顾尾)
hobby_tuple = ('play', 'swimming', 'dancing', '233')

print(hobby_tuple[0:2])  # ('play', 'swimming')


print(hobby_tuple[::-1])  # 从右到左  # ('233', 'dancing', 'swimming', 'play')
长度 len
hobby_tuple = ('play', 'swimming', 'dancing', '666')

print(len(hobby_tuple)) # 4
in 或 not in 成员判断
hobby_tuple = ('play', 'swimming', 'dancing', '666')

print('play' in hobby_tuple)  # True

print('233' not in hobby_tuple) # True
for 循环
hobby_tuple = ('play', 'swimming', 'dancing', '666')

for hobby in hobby_tuple:
    print(hobby)
count() 计数
hobby_tuple = ('play', 'swimming', 'dancing', '666', '666', '666')

print(hobby_tuple.count('666'))  # 对元组内的某一个元素计数
#3
index() 查看索引
hobby_tuple = ('play', 'swimming', 'dancing', '666', 666, '666')

print(hobby_tuple.index('play'))  # 查看'play'索引
#0

print(hobby_tuple.index('play', 2, 4))  # 索引2-4内'play',没有就报错

存一个值还是村多个值: 多个值

有序or无序(有索引还是无索引): 有序

可变还是不可变(值变id不变为可变,值变id也变为不可变): 不可变

字典类型 (dict)

作用:同样用来存放多个值,对于值添加描述信息,按照key:value的方式存值,取的时候可以通过key而非索引去取值,key对value具有描述性的作用。

定义:在{}里用逗号隔开多个元素,且每个元素都是key:value格式的键值对,此格式可以为任意数据类型。

user_info = {'name': 'nick', 'gender': 'male', 'age': 19,
             'company_info': ['oldboy', 'shanghai', 50]}

print(id(user_info))
print(type(user_info))
print(user_info)

内置方法:

按key取值,即可取也可改值
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'gender': 'female', 'hobby_list': ['dapao', '666', '233']}

print(info_dict['hobby_list'])  #['dapao', '666', '233']

info_dict['age'] = 20  # 可以根据key修改值

print(info_dict)
#{'name': 'wangdapao', 'age': 20, 'height': 120, 'gender': 'female', 'hobby_list': ['dapao', '666', '233']}
长度 len
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'gender': 'female', 'hobby_list': ['dapao', '666', '233']}

print(len(info_dict))
# 5
in 或 not in 成员判断
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'gender': 'female', 'hobby_list': ['dapao', '666', '233']}

print('name' in info_dict) # True

print('age' not in hobby_tuple) # False
for 循环
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'gender': 'female', 'hobby_list': ['dapao', '666', '233']}

for i in info_dict:
    print(i)
#name age height gender hobby_list
keys/values/items(items用的最多,一般和解压缩一起用)
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'gender': 'female', 'hobby_list': ['dapao', '666', '233']}

print(list(info_dict.keys()))  # 把字典里的key以列表形式展现出来
#['name', 'age', 'height', 'gender', 'hobby_list']

print(list(info_dict.values()))  # 把字典里的value以列表的形式展现出来
#['wangdapao', 18, 120, 'female', ['dapao', '666', '233']]

print(list(info_dict.items()))  # 把字典以(key,value)的形式转换为列表
#[('name', 'wangdapao'), ('age', 18), ('height', 120), ('gender', 'female'), ('hobby_list', ['dapao', '666', '233'])]
del 删除
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'gender': 'female', 'hobby_list': ['dapao', '666', '233']}

del info_dic['name']

print(info_dic)
#{'age': 18, 'height': 120, 'gender': 'female', 'hobby_list': ['dapao', '666', '233']}
copy() 复制
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'hobby_list': ['dapao', '666', '233']}

print(info_dict.copy())
pop() 删除
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'hobby_list': ['dapao', '666', '233']}

info_dict.pop('name')  # 指定key来删除value

print(info_dict)
# {'age': 18, 'height': 120, 'hobby_list': ['dapao', '666', '233']}
popitem() 删除
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'hobby_list': ['dapao', '666', '233']}

info_dict.popitem()  # 早期的时候字典是无序的,是随机删除的,但是由于python3底层优化了字典,让字典看的貌似有序了,所以默认删除最后一个

print(info_dict)  #{'name': 'wangdapao', 'age': 18, 'height': 120}
clear() 清除
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'hobby_list': ['dapao', '666', '233']}

info_dict.clear()

print(info_dict)  #{}
get() 获得value
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'hobby_list': ['dapao', '666', '233']}

print(info_dict.get('age')) #与索引取值的区别是,索引取值没有改key值会报错,而get取值没有key会返回None
# 18

print(info_dict.get('name1', 'nick'))  # 如果有,就返回真正的值;如果没有,默认返回None,也可以指定返回
# nick
setdefault() 追加一个键值对
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'hobby_list': ['dapao', '666', '233']}

info_dict.setdefault('gender', 123123)  # key已存在则value不变,不存在则往里面追加了该键值对genter:123123.123123该值可不写,不写,值默认为None

print(info_dict)
#{'name': 'wangdapao', 'age': 18, 'height': 120, 'hobby_list': ['dapao', '666', '233'], 'gender': 123123}
update() 添加新的键值对
info_dict = {'name': 'wangdapao', 'age': 18, 'height': 120, 'hobby_list': ['dapao', '666', '233']}

info_dict.update({'a':1})

print(info_dict)
#{'name': 'wangdapao', 'age': 18, 'height': 120, 'hobby_list': ['dapao', '666', '233'].'a':1}
formkeys 由dict.出来,快速造一个字典
print(dict.fromkeys(['a',2,3,4,5],'nick'))第一个元素为容器类型.第二个为固定的value值
# {'a': 'nick', 2: 'nick', 3: 'nick', 4: 'nick', 5: 'nick'}

存一个值还是村多个值: 多个值

有序or无序(有索引还是无索引): 无序

可变还是不可变(值变id不变为可变,值变id也变为不可变): 可变

集合类型(set)

作用:就是存储一大堆元素的东西,容器数据类型

定义:以{}用逗号隔开不可变数据类型 (去重,乱序的时候会用到集合)

s = {} # 空大括号是字典,不是集合,定义空集合必须得用set()

内置方法:

并集(将两个集合里面元素合在一起去重之后得到的结果)
pythoners = {'jason', 'nick', 'tank', 'sean'}
linuxers = {'nick', 'egon', 'kevin'}

print(pythoners | linuxers)  # 并集
#{'jason', 'tank', 'nick', 'egon', 'kevin', 'sean'}

print(pythoners.union(linuxers))
#{'jason', 'tank', 'nick', 'egon', 'kevin', 'sean'}
交集(两个集合相同的元素)
pythoners = {'jason', 'nick', 'tank', 'sean'}
linuxers = {'nick', 'egon', 'kevin'}

print(pythoners & linuxers)  # 交集
#{'nick'}

print(pythoners.intersection(linuxers))
#{'nick'}
差集(将第一个集合里的去掉两个集合相同的元素后得到的结果)
pythoners = {'jason', 'nick', 'tank', 'sean'}
linuxers = {'nick', 'egon', 'kevin'}

print(pythoners - linuxers)  # 差集
#{'jason', 'tank', 'sean'}

print(pythoners.difference(linuxers))
#{'jason', 'tank', 'sean'}
交叉补集(对称差集)(两个集合合在一起去除两个集合相同的元素后得到的结果)
pythoners = {'jason', 'nick', 'tank', 'sean'}
linuxers = {'nick', 'egon', 'kevin'}

print(pythoners ^ linuxers) # 交叉补集
#{'tank', 'egon', 'kevin', 'jason', 'sean'}

print(pythoners.symmetric_difference(linuxers))
#{'tank', 'egon', 'kevin', 'jason', 'sean'}
父集,子集
pythoners = {'jason', 'nick', 'tank', 'sean'}
pythoners2 = {'jason', 'nick', 'tank', 'sean','nick2'}
print(pythoners.issubset(pythoners2))  # 判断pythoners是否是pythoners2的子集
#True
print(pythoners.issuperset(pythoners2))  # 判断pythoners是否是pythoners2的父集
#False
以下方法为了解
pythoners = {'jason', 'nick', 'tank', 'sean'}
linuxers = {'nick', 'egon', 'kevin'}  

pythoners.add('jin') # 添加
print(pythoners)
#{'jason', 'nick', 'tank', 'sean','jin'}

pythoners.pop()  # 随机删除
print(pythoners)
#{'sean', 'jason', 'nick'}

pythoners.update(linuxers)  # 添加新集合
print(pythoners)
#{'jason', 'egon', 'kevin', 'sean', 'tank', 'nick'}

pythoners.clear()  # 清空
print(pythoners)
#set()

print(pythoners.copy())  # 复制

pythoners.remove('nickk')   # 删除 没有报错
print(pythoners)

pythoners.discard('nickk')  # 删除 没有不报错
print(pythoners)

# set之isdisjoint(),集合没有共同的部分返回True,否则返回False
pythoners = {'jason', 'nick', 'tank', 'sean'}
linuxers = {'nick', 'egon', 'kevin'}
pythoners.isdisjoint(linuxers)

print(linuxers)# False

存一个值还是村多个值: 多个值

有序or无序(有索引还是无索引): 无序

可变还是不可变(值变id不变为可变,值变id也变为不可变): 可变

布尔类型 (bool)

作用:用于判断条件结果

定义:只有两种结果:True,False。通常情况下不会直接使用的,需要使用逻辑运算得到结果。

print(bool(0)) #False
print(bool('nick')) #True
print(bool(1 > 2)) #False
print(bool(1 == 1)) #True

注意:Python中所有数据类型的值自带布尔值。如此多的数据类型中只需要记住只有0、None、空、False的布尔值为False,其余的为True。

解压缩

作用:用来一次性取多个值

lis = [1, 2, 3]
x1, x2, x3 = lis
print(x1) # 1
print(x2) # 2
print(x3) # 3
# 我不需要2
x1, _, x3 = lis  # _表示不需要,约定俗称的
# 只要第三个元素
_, _, x3 = lis
print(x3)
lis = [1, 2, 3, 4, 5, 6, 7]
x1, *_, x3 = lis  # *_会把前面所有的省略掉,都不要
print(x1)  # 1
print(x3)  # 7
print(_)  # [2, 3, 4, 5, 6]

注意:解压缩的对象有多少个元素,则必须拿多少个

python与用户交互

input() # 等待用户输入,如果用户不输入,程序不会结束运行

input接收的值无论如何都是字符串

x = input('请输入你想要的输入的数字:')
print(type(x))
print(x)

python2中的与用户交互

raw_input()  # 与用户交互和python3中的input一模一样
input()  # 与用户交互,必须得指定输入的类型,输入什么类型拿到什么类型
posted @ 2019-08-02 21:29  asyouwish  阅读(368)  评论(0编辑  收藏  举报