python基础数字类型--练习

#字符串常用的方法
#当使用字符串常用的方法时,首先要思考我为什么要用,就是我用它的效果是什么。

name='alex say :i have one tesla,my name is alex'
#1、将首字母大写:capitalize,字符串是不可变类型,有返回值
name1 = name.capitalize()   #也可以写成:print(name.capitalize()) == print(name1)
print(name)   #执行结果:alex say :i have one tesla,my name is alex
print(name1)   #Alex say :i have one tesla,my name is alex


#2、大小写翻转:swapcase
'''
name = name.swapcase()   #我觉得这个方法也不能改变name的值,因此应该和上边一样,要么把他变量给name,要么直接打印。
print(name)    #字符串是不可变类型
'''

#3、每个单词的首字母大写:title
'''
msg = 'my name is Alex'  #在字符串类型的变量里单词中即使含有首字母大写的单词也不影响这个方法的使用。
print(msg.title())   #直接打印为什么会报错?我的书写格式不对吗?还是括号里要加东西?可以试试吗?为什么更新了几次都不对,最后有对了?
'''

#4、内同居中,总长度,空白处填充:center
'''
n = "python"
#print(n.center())   #这样打印报错了,没有了解这个方法的意图,他需要在括号里添加长度和填充内容。
print(n.center(20, '*'))   #执行结果为:*******python*******,这是我要的效果。
'''

#5、数字符串中的元素出现的个数:count  为什么可以切片
'''
s = 'asdf;lasdflkjasdfakasdf'
print(s.count('d'))  #因为我要查某一个元素在s当中出现的次数,所以应该要不元素写进去,我用d来试一下。
print(s.count('d', 3, 18))  #想切片的,但是想想字符串是不可以被更改的,但是还是试一下。打印结果是2,为什么可以切片?
'''

#6、前面的补全:expandtabs   ???????????????没搞明白
'''
a2 = 'hqw\t'
print(a2.expandtabs())
'''
#7、判断以什么开头、以什么结尾,可以按照索引进行切片查询某一个位置是否以某一个字符串开始
'''
a4 = "dkfjdkfasf54"
print(a4.startswith('dk'))   #判断以什么开头,在这个方法后边加一个查询条件,他最后返回的是bool值。
print(a4.endswith('f5'))    #判断以什么结尾,在这个方法后边加一个查询条件,他最后返回的是bool值
print(a4.startswith('fj', 2))   #也可以切片查询,看这段字符串索引位置是否是以要查询的这个字符串开始的。
'''
#8、寻找字符串中的元素是否存在:1、find  2、index
'''
a4 = "dkfjdkfasf54"
print(a4.find('k'))   #寻找字符串中的元素是否存在,返回索引位置,但是只返回第一个元素的索引,其他的不管。
print(a4.find('t'))    #找不到元素的时候返回的是-1
print(a4.find('f'), 4)   #不是我要的结果,为什么返回的是2和4?#########切片的格式只能是(a4.find('f'), 4, 7)这样的吗?
print(a4.find('f', 4, 100))   #切片的时候一定要把切片的位置和元素放在一起,放到外边就没有切片的意义了,变成打印了,可以只写起\
始的位置。

print(a4.index('f'))
print(a4.index('q'))    #找到时返回元素索引位置,找不到的时候报错,这是和find的唯一不同之处!
'''

#9、 以什么分割,最终形成一个列表此列表不含有这个分割的元素:split
'''
a4 = "dkfjdkfasf54"
print(a4.split('f'))   #打印结果为:['dk', 'jdk', 'as', '54'],原字符串都已‘f’为分割标志,列表里没有f,默认是字符串里的\
所有f元素。
print(a4.split('f', 1))   #打印结果为:['dk', 'jdkfasf54'],后边加一个数字,代表以分割几次。
print(a4.split('f', 2))   #打印结果为:['dk', 'jdk', 'asf54'],以f分割了两次
print(a4.split('d', 1))   #打印结果为:['', 'kfjdkfasf54'],以d分割一次,d是第一个字母,因此最前边有一个空字符串。
print(a4.rsplit('f', 2))   #打印结果为:['dkfjdk', 'as', '54'],在split前边加一个r 代表从右向左分割,加一个数字代表分割几次。
'''
#10、格式化输出:format的三种玩法------我的第一感觉是在字符串里边也有format了?不是在字典里才有吗?它是什么意思?
# res = '{} {} {}'.format('Dave', 'student', 34)  #打印结果为:Dave student 第一种格式化输出,以{}为format提供格式化条件\
# # ,前边提供几个{},它只能一次往里边放几个字符串。并且{}的个数不可以超过format后边元素的个数,只能少,不能多。
# print(res)
# res = '{name} {age} {of}'.format(age='student', of=34, name='Dave')   #打印结果为:Dave student 34,有对应值不分位置。
# print(res)

#11、是去掉元素的'*'吗?strip两边,lstrip左边,rstrip右边。
'''
name='*egon**'
print(name.strip('*'))
print(name.lstrip('*'))    
print(name.rstrip('*'))
'''
#11、替换,replace
'''
name='alex say :i have one tesla,my name is alex'
print(name.replace('alex', 'Alex'))  #打印结果为:Alex say :i have one tesla,my name is Alex,前边是要替换掉的元素,后边\
# 替换后的元素。默认是这个元素全部替换,可以标注替换几次,如下:
print(name.replace('alex', 'Alex', 100))   #Alex say :i have one tesla,my name is Alex,数字大于它时按照最多的元素进行# 替换。
'''
#12、#####is系列
'''
name='jinxin123'
print(name.isalnum()) #判断字符串由字母或数字组成
print(name.isalpha()) #判断字符串只由字母组成
print(name.isdigit()) #判断字符串只由数字组成
'''
#列表的增删改查
#13、增的三种玩法:insert/append/extend
'''
li = [1, 'a', 'b', 2, 3, 'a']
li.insert(1, 'Dave')    #打印结果:[1, 'Dave', 'a', 'b', 2, 3, 'a'],按照索引位置添加元素
print(li)
li.append('Dave')    #打印结果:[1, 'a', 'b', 2, 3, 'a', 'Dave'],将元素添加到列表最后边
print(li)
li.extend('end')    #打印结果:[1, 'a', 'b', 2, 3, 'a', 'e', 'n', 'd'],将元素迭代添加至列表最后边
print(li)
li.extend(['end'])   #打印结果:[1, 'a', 'b', 2, 3, 'a', 'end'],将元素以一个完整的字符串形式放进列表里最后边。
print(li)
'''
#14、删的四种玩法:pop
'''
li = [1, 'a', 'b', 2, 3, 'a']
print(li.pop(1))   #执行结果:a,删掉列表里索引1的元素,返回值。
print(li)   #执行结果:[1, 'b', 2, 3, 'a']

del li[1:3]  #执行结果:[1, 2, 3, 'a'],按照位置去删除,可切片删除,没有返回值,顾头不顾尾,删掉列表当中索引1-3的元素包括1 但不包括3.
print(li)

li.remove(2)
print(li)     #执行结果:[1, 'a', 'b', 3, 'a'],按照元素去删除,
li.clear()
print(li)     #执行结果:[],清空列表
'''
#15、改的两种玩法
'''
li = [1, 'a', 'b', 2, 3, 'a']
li[1] = 'Dave'   #执行结果:1, 'Dave', 'b', 2, 3, 'a'],按照索引改元素
print(li)

li[2:] = 'ii'    #执行结果:[1, 'a', 'i', 'i'],按照索引先删除后迭代
print(li)
'''
#16、查---切片去查或者循环去查。

#其他操作--->方法
#17、count,数数,统计一个元素的数量
'''
a = ["q", "w", "q", "r", "t", "y"]
print(a.count('q'))   #执行结果为:2,在列表中的执行结果
b = 'aslf;lasdfkasdfkasdf'
print(b.count('s'))    #执行结果为:4,在字符串中的执行结果
a = ("q", "w", "q", "r", "t", "y")
print(a.count('q'))   #执行结果为:2,在元组中的执行结果
'''
#18、index,用于从列表中找出某个值第一个匹配项的索引位置
'''
a = ["q", "w", "r", "t", "y"]
print(a.index("r"))    #在列表中的执行结果为:2
b = 'aslflasdfkasdfkasdf'
print(b.index('f'))   #在字符串中的执行结果为:3

#sort,方法用于在原位置对列表进行排序
a.sort()  #它没有返回值,所以只能打印。
print(a)  #打印结果为:['q', 'r', 't', 'w', 'y']
'''
#19、reverse,方法将列表中的元素反向存放。
'''
a = [2, 1, 3, 4, 5]   #它没有返回值,所以只能打印结果。(如果想要把它顺序逆向打印,用下边的方法)
a.reverse()  #执行结果为:[5, 4, 3, 1, 2]
print(a)

a.sort()   #先进行排序,再进行列表中元素的反向存放。
print(a)   #执行结果:[1, 2, 3, 4, 5],排序,没有返回值,所以要打印。
a.reverse()  #没有返回值,所以要打印。
print(a)   #执行结果:[5, 4, 3, 2, 1],反向存放。
'''
#20、字典的增只有两种方法,直接添加/setdefault
'''
dic = {"name":'Dave'}
# dic['li'] = ["a", "b", "c"]   #直接给字典添加一个键值对
# print(dic)   #执行结果:{'name': 'Dave', 'li': ['a', 'b', 'c']}
#***setdefault 在字典中添加键值对,如果只有键那对应的值是none
dic.setdefault('k', 'v')   #执行结果:{'name': 'Dave', 'k': 'v'}
print(dic)  # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
dic.setdefault('k', 'v1')  # 如果原字典中存在设置的键值对,则他不会更改或者覆盖,如下-->没有变。
print(dic)   #执行结果:{'name': 'Dave', 'k': 'v'}
'''
#21、字典的删的四种玩法:pop/del/popitem/clear
'''
dic = {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
# #pop根据字典的键删除字典内的键值对,有返回值(pop根据key删除键值对,并返回对应的值,如果没有key则返回默认返回值):
# print(dic.pop('k'))   #打印结果是:v ,有返回值。
# print(dic)    #执行结果是:{'age': 18, 'name': 'jin', 'sex': 'male'}
#print(dic.pop('f', '不要报错'))   #执行结果:不要报错,pop后边加的‘不要报错’是默认返回值,不加默认返回值找不到key会报错.
#del根据字典的键删除字典内的键值对,没有返回值:

#**del没有返回值,没有默认返回值,可以清空列表但不能清空字典。
# del dic[('sex')]   #没有返回值,只能打印。
# print(dic)   #执行结果是:{'age': 18, 'name': 'jin', 'k': 'v'}

# del dic  #删除‘整个字典’,打印结果:name 'dic' is not defined
# print(dic)

#popitem删除最后一个键值对,并以元组的形式返回
# print(dic.popitem())   #执行结果:('k', 'v')有返回值,以元组的形式返回。
# print(dic)   #执行结果:{'age': 18, 'name': 'jin', 'sex': 'male'}

#clear清空字典
dic.clear()
print(dic)   #执行结果:{},清空字典。
'''
#22、字典的改update将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)
'''
dic = {"name": "jin", "age": 18, "sex": "male"}
dic1 = {'name': 'Dave', 'age': 34, 'like': 'IT'}
dic.update(dic1)   #将dic1里字典的元组迭代给dic,有相同key的覆盖,没有的添加进去,dic1没有改变。
print(dic)   #执行结果:{'name': 'Dave', 'age': 34, 'sex': 'male', 'like': 'IT'}
print(dic1)   #dic发生了改变,dic1没有改变。
'''
#22、字典的查,两种玩法:直接查和get
'''
dic = {"name": "jin", "age": 18, "sex": "male"}
print(dic['name'])  #直接查,有返回值,执行结果:jin
print(dic['like'])   #找不到key会报错。
print(dic.get('name'))   #根据key来查询,执行结果:jin
print(dic.get('like'))   #执行结果:None,当没有找到key时,默认返回结果时None,可以添加默认返回值,如下:
print(dic.get('like', '对不起'))   #执行结果:对不起,执行结果是提示返回值。
'''
#23、其他操作:items/keys/values
'''
dic = {"name": "jin", "age": 18, "sex": "male"}
#items形式,将字典里的每一个k与v转换成元组形式放在一个列表里,这个列表也同时放在一个元组里。
print(dic.items())   #执行结果:dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')])
#keys形式,将字典里的每一个k调取出来放进一个列表里,这个列表同时放进一个元组里。
print(dic.keys())   #执行结果:dict_keys(['name', 'age', 'sex'])
#values形式,将字典里的每一个v调取出来放进一个列表里,这个列表同时放进一个元组里。
print(dic.values())  #执行结果:dict_values(['jin', 18, 'male'])
print(dic)   #执行结果:{'name': 'jin', 'age': 18, 'sex': 'male'},原字典并没有改变。
'''
#24、字典的循环:for+ 直接循环key(键)/itmes【键值对】(key/k, v)
'''
dic = {"name": "jin", "age": 18, "sex": "male"}
for key in dic:
    print(key)   #执行结果:分别打印了字典的k,如:name\  age  \sex
for i in dic.items():
    print(i)     #执行结果:以元组的形式分别打印了每个键值对,如:('name', 'jin')\  ('age', 18)\   ('sex', 'male')
for k, v in dic.items():
    print(k, v)  #执行结果:分别打印了字典的键和值,如:name jin\  age 18\  sex male
'''
#其他(for,enumerate,range)。
#25、for循环:用户按照顺序循环可迭代对象的内容,用不同的数据类型,执行相同的结果。
'''
# dic = '字符串也可以循环打印,123abd,执行一下看看!'
# for i in dic:
#     print(i)   #打印结果:按照顺序循环打印了字符串。
# dic = ["name", "jin", "age", 18, "sex", "male"]
# for i in dic:
#     print(i)    #打印结果:按照顺序循环打印了列表。
dic = {"name": "jin", "age": 18, "sex": "male"}
for k, v in dic.items():
    print(k, v)   #打印结果:按照顺序循环打印了字典。打印结果:name jin\  age 18\  sex male
'''
#26、给iterable进行编号,enumerate:枚举(起始值可以根据需求随便设置,对于一个可迭代的(iterable)/可遍历的对
# 象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。for循环举例:
'''
li = ['alex', '银角', '女神', 'egon', '太白']
# for i in enumerate(li):
#     print(i)   #打印结果:循环打印列表内的元素,并给每个元素以元组的形式组成一个索引序列,默认从0开始,如:(0, 'alex')
# for i in enumerate(li, 1):  #可添加起始值
#     print(i)   #打印结果:循环打印列表内的元素,并给每个元素以元组的形式组成一个索引序列,从1开始,如:(1, 'alex')
for i in enumerate(li, 100):   #设定起始值为100
    print(i)   #打印结果:循环打印列表内的元素,并给每个元素以元组的形式组成一个索引序列,从100开始,如:(100, 'alex')
'''
#27、range:指定范围,生成指定数字。
'''
# for i in range(10):
# #     print(i)   #执行结果:依次循环打印数字0-9
# for i in range(1, 10):
#     print(i)   #执行结果:依次循环打印数字1-9
# for i in range(1, 10, 2):
#     print(i)   #执行结果:加步长
for i in range(10, 1, -2):
    print(i)   #执行结果:反向加步长
'''

 

posted @ 2018-01-22 06:13  DaveLau  阅读(266)  评论(0)    收藏  举报