ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【干货大放送!】小白必备Python100道练习题,赶紧收藏

2021-07-03 21:03:02  阅读:195  来源: 互联网

标签:练习题 大放送 Python 元素 列表 num 序列 Python100 解法


嗨~我是小鱼

爆肝给大家整理了这份今天给大家分享100道Python练习题。大家一定要给我三连啊~

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

可以明显看到 sort() 会就地在原序列上排序,sorted() 新建了一个新的序列。

Python基础习题

1、怎么计算2的3次方

解法1:直接用运算符 **

>>> 2**3
8

解法2:用函数 pow

>>> pow(2,3)
8

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 S
blacks M
blacks L
white S
white M
white 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)

Kobe
James
Iverson

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)
4507939272

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道题全部呈现在此。

评论或者私聊我 “100题” 即可获取高清Python100题PDF

我是小鱼,一个90后程序名媛~


在实操或者练习过程中有问题的可以进群咨询,里面有各个阶段的朋友,你会在这里找到你想要的答案哦~交流群:954526228(注意进群暗号是:小鱼)

里面还有适合小白新手的全套资料给到大家~

快来和小鱼一起成长进步吧!

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

标签:练习题,大放送,Python,元素,列表,num,序列,Python100,解法
来源: https://blog.csdn.net/Modeler_xiaoyu/article/details/118444673

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有