嗨~我是小鱼

爆肝给大家整顿了这份明天给大家分享100道Python练习题。

在此之前,先给大家举荐一个工具,是一个对 Python 运行原理进行可视化剖析的工具,Python Tutor,点击 Next 按钮就会依据执行步骤显示原理,对老手了解代码运行原理有很大帮忙。举一个简略的例子,sort() 形式和 sorted()的区别。

能够显著看到 sort() 会就地在原序列上排序,sorted() 新建了一个新的序列。
Python根底习题

1、怎么计算2的3次方

解法1:间接用运算符 >>> 2**3解法2:用函数 pow>>> pow(2,3)

2、怎么找出序列中的最大值和最小值?

用内置函数 max 和 min

>>> l = (123, 888, 666)>>> max(l)888>>> min(l)123

3、怎么将字符列表转为字符串

用 join 办法,合并序列的元素

>>> l = ['Python', 'Circle', 'is', 'ok']>>> j = ' '.join(l)>>> j'Python Circle is ok'

4、怎么疾速打印出蕴含所有 ASCII 字母(大写和小写)的字符串

用 string 模块的办法

>>> import string>>> string.ascii_letters'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

5、怎么让字符串居中

用字符串中的 center 办法,他会在两边主动填充字符(默认为空格),让字符串居中

>>> k = 小鱼Python >>> k.center(50)'              更多精彩,请关注「小鱼Python」              '>>> k.center(50, '*')

6、怎么在字符串中找到子串

用 find 办法,如果找到,就返回子串的第一个字符的索引,否则返回 -1

>>> ss = 'I Love Python'>>> ss.find('I')0>>> ss.find('Python')7

7、怎么让字符的首字母大写,其余字母小写

解法1:用 title 办法。>>> ss = 'i love python'>>> ss.title()'I Love Python'解法2:用 string 模块里的 capwords 办法。>>> import string>>> ss = 'i love python'>>> string.capwords(ss)'I Love Python'

9、怎么清空列表内容

解法1:用 clear 办法>>> l = [1, 2, 3]>>> l.clear()>>> l[]解法2:用切片赋值的办法>>> k = [1, 2, 3]>>> k[:] = []>>> k[]

10、怎么计算指定的元素在列表中呈现了多少次?

用 count 办法

>>> l = ['i', 'am', 'ok', 'ok']>>> l.count('ok')2

11、怎么在列表开端退出其它元素

用 extend 办法

>>> l = [1, 2, 3]>>> j = [4, 5, 6]>>> l.extend(j)>>> l[1, 2, 3, 4, 5, 6]

12、extend 和列表相加的区别?

两者看起来成果统一

>>> l = [1, 2, 3]>>> j = [4, 5, 6]>>> l + j[1, 2, 3, 4, 5, 6]

extend 是间接在 l 列表里退出元素,相加会生成一个新元素,并不会对 l 做批改。

13、怎么查找列表中某个元素第一次呈现的索引,从 0 开始

用 index 办法

>>> l = ['are', 'you', 'ok']>>> l.index('you')1

14、怎么将一个对象插入到列表中

解法1:用 insert 办法>>> num = [1, 2, 4, 5]>>> num.insert(2, 'three')>>> num[1, 2, 'three', 4, 5]解法2:用切片的形式插入>>> num = [1, 2, 4, 5]>>> num[2:2] = ['three']>>> num[1, 2, 'three', 4, 5]

15、怎么删除列表中元素

pop 办法能够删除指定元素,不指定地位的话默认删除最初一个元素

>>> num = [1, 2, 4, 5]>>> num.pop()5>>> num[1, 2, 4]>>> num.pop(1)2>>> num[1, 4]

16、怎么删除列表中指定元素

用 remove 办法

>>> num[1, 4]>>> num = [1, 2, 4, 5, 4]>>> num.remove(4)>>> num[1, 2, 5, 4]remove 办法只会删除第一次呈现的元素/

17、怎么让列表按相同顺序排列?

解法1:用 reverse 办法>>> num = [1, 22, 45, 99, 49]>>> num.reverse()>>> num[49, 99, 45, 22, 1]解法2:用切片的形式>>> num = [1, 22, 45, 99, 49]>>> num[::-1][49, 99, 45, 22, 1]

18、怎么示意只蕴含一个元素的元组

1个元素的元组,必须在惟一的元素后加上逗号,否则不是元组

>>> t= (1)>>> type(t)<class 'int'>>>> t= (1,)>>> type(t)<class 'tuple'>

19、怎么批量替换字符串中的元素

用 replace 办法

>>> 'i love Python'.replace('o', 'ee')'i leeve Pytheen'

20、怎么把字符串依照空格进行拆分

用 split 办法,括号为空的状况下默认以空格拆分

>>> 'i love Python'.split()['i', 'love', 'Python']

Python进阶习题

1、怎么用for循环实现把字符串变成Unicode码位的列表

>>> st = '!@#$%^&*'>>> codes = []>>> for s in st: codes.append(ord(s)) >>> codes[33, 64, 35, 36, 37, 94, 38, 42]

2、怎么用列表推导式实现把字符串变成Unicode码位的列表

>>> st = '!@#$%^&*'>>> codes = [ord(s) for s in st]>>> codes[33, 64, 35, 36, 37, 94, 38, 42]

很显著,用列表推导式实现比 for 循环加 append 更高效简洁,可读性更好。

3、打印出两个列表的笛卡尔积

解法1:应用生成器表达式产生笛卡尔积,能够帮忙省掉运行 for 循环的开销。>>> colors = ['blacks', 'white']>>> sizes = ['S', 'M', 'L']>>> for tshirt in ('%s %s'%(c, s) for c in colors for s in sizes):    print(tshirt) blacks Sblacks Mblacks Lwhite Swhite Mwhite L解法2:应用 itertools 里的 product 生成器函数。>>> import itertools>>> list(itertools.product(['blacks', 'white'], ['S', 'M', 'L']))[('blacks', 'S'), ('blacks', 'M'), ('blacks', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')]

4、可迭代对象拆包时,怎么赋值给占位符

咱们常常用 for 循环提取元组里的元素,对于咱们不想接管的元素,咱们能够用占位符 _ 接管。

>>> player_infos = [('Kobe', '24'), ('James', '23'), ('Iverson', '3')]>>> for player_names, _ in player_infos:    print(player_names) KobeJamesIverson

5、Python3 中,用什么形式接管不确定值或参数

args 的形式,args 地位能够在任意地位。

>>> a, b, *c = range(8)>>> a, b, c(0, 1, [2, 3, 4, 5, 6, 7]) >>> a, *b, c, d = range(5)>>> a,b,c,d(0, [1, 2], 3, 4) >>> *a, b, c, d = range(5)>>> a,b,c,d([0, 1], 2, 3, 4)

6、用切片将对象倒序

>>> s = 'basketball'>>> s[::-1]'llabteksab'

7、怎么查看列表的 ID

>>> l = [1, 2, 3]>>> id(l)4507638664

8、可变序列用*=(就地乘法)后,会创立新的序列吗?

不会,可变序列用*=(就地乘法)后,不会创立新的序列,新元素追加到老元素上,以列表为例,咱们看下新老列表的id,相等的。

>>> l = [1, 2, 3]>>> id(l)4507939272>>> l *= 2>>> l[1, 2, 3, 1, 2, 3]>>> id(l)

9、不可变序列用*=(就地乘法)后,会创立新的序列吗?

会,不可变序列用*=(就地乘法)后,会创立新的序列,以元组为例,咱们看下新老元组的id,是不同的。

>>> t = (1, 2, 3)>>> id(t)4507902240>>> t *= 2>>> t(1, 2, 3, 1, 2, 3)>>> id(t)4507632648

所以,对不可变序列进行反复拼接操作的话,效率会很低,因为每次都有一个新对象,而解释器须要把原来对象中的元素先复制到新的对象里,而后再追加新的元素。

10、对于+=的一道谜题

t = (1, 2, [30, 40])t[2] += [50, 60]

到底会产生上面4种状况中的哪一种?a. t变成(1, 2, [30, 40, 50, 60])。b.因为tuple不反对对它的元素赋值,所以会抛出TypeError异样。c.以上两个都不是。d. a和b都是对的。答案是d,请看下运行后果。

>>> t = (1, 2, [30, 40])>>> t[2] += [50, 60]Traceback (most recent call last):  File "<pyshell#1>", line 1, in <module>    t[2] += [50, 60]TypeError: 'tuple' object does not support item assignment>>> t(1, 2, [30, 40, 50, 60])

因为文章篇幅限度,无奈将100道题全副出现在此。
微信文章:
Python爬取《中国医生》评论并实现数据可视化