Hi~我是小鱼宝干,今天为大家整理了这份榜单,与大家分享100道Python练习题。在此之前,先给大家推荐一个工具,就是一个可视化分析Python运行原理的工具,PythonTutor。点击Next按钮会按照执行步骤显示原理,对于新手理解代码运行原理很有帮助。举个简单的例子,sort()和sorted()的区别。可以清楚的看到sort()会原地对原来的序列进行排序,sorted()会创建一个新的序列。Python基础练习1.如何计算的3次方2.解法一:直接使用运算符>>>2**3解法二:使用函数pow>>>pow(2,3)2.如何求最大的序列值和最小值?使用内置函数max和min>>>l=(123,888,666)>>>max(l)888>>>min(l)1233,如何将字符列表转换成字符串使用join合并序列元素的方法>>>l=['Python','Circle','is','ok']>>>j=''.join(l)>>>j'PythonCircleisok'4.如何快速打印使用string模块的方法输出一个包含所有ASCII字母(大写和小写)的字符串>>>importstring>>>string.ascii_letters'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'5.如何使用center对字符串进行居中methodinthestring,他会两边自动填充字符(默认为空格),让字符串居中>>>k=XiaoyuPython>>>k.center(50)'更多精彩,敬请关注《小鱼Python》'>>>k.center(50,'*')6.如何在字符串中查找子串使用find方法,如果找到则返回子串第一个字符的索引,否则返回-1>>>ss='我爱Python'>>>ss.find('I')0>>>ss.find('Python')77.如何将一个字符的首字母大写,其他字母小写解决方法一:使用title方法。>>>ss='ilovepython'>>>ss.title()'ILovePython'方案二:使用string模块中的capwords方法。>>>importstring>>>ss='ilovepython'>>>string.capwords(ss)'ILovePython'9.如何清除列表中的内容解决方法一:使用清除方法>>>l=[1,2,3]>>>l.clear()>>>l[]方案二:使用切片赋值>>>k=[1,2,3]>>>k[:]=[]>>>k[]10。如何计算指定元素在列表中出现了多少次?使用计数方法>>>l=['i','am','ok','ok']>>>l.count('ok')211、如何在列表末尾添加其他元素使用扩展方法>>>l=[1,2,3]>>>j=[4,5,6]>>>l。extend(j)>>>l[1,2,3,4,5,6]12、extend和listaddition有什么区别?两者似乎工作相同>>>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')114.如何将一个对象插入到列表中解决方法一:使用insert方法>>>num=[1,2,4,5]>>>num.insert(2,'three')>>>num[1,2,'three',4,5]方案二:切片插入>>>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、如何删除listremove方法中的指定元素>>>num[1,4]>>>num=[1,2,4,5,4]>>>num.remove(4)>>>num[1,2,5,4]remove方法只会删除第一次出现的元素/17。如何倒序排列列表?方案一:使用反向方法>>>num=[1,22,45,99,49]>>>num.reverse()>>>num[49,99,45,22,1]方案二:使用slices的方式>>>num=[1,22,45,99,49]>>>num[::-1][49,99,45,22,1]18.如何表示一个只包含一个的元组element1个元素的元组,唯一的元素后必须有逗号,否则不是元组>>>t=(1)>>>type(t)>>t=(1,)>>>type(t)19。如何使用replace方法批量替换字符串中的元素>>>'ilovePython'.replace('o','ee')'ileevePytheen'20.如何根据空格拆分字符串使用split方法,括号为空时,默认用空格分割>>>'ilovePython'.split()['i','love','Python']Python进阶练习1.for循环的使用方法将字符串转换为Unicode代码点列表>>>st='!@#$%^&*'>>>codes=[]>>>forsinst:codes.append(ord(s))>>>codes[33,64,35,36,37,94,38,42]2.如何使用列表理解将字符串转换为Unicode代码点列表>>>st='!@#$%^&*'>>>codes=[ord(s)forsinst]>>>codes[33,64,35,36,37,94,38,42]显然,使用列表理解更高效,简洁比for循环加append更易读3.打印出两个列表的笛卡尔积解1:使用生成器表达式生成笛卡尔积可以帮助节省运行for循环的开销。>>>colors=['blacks','white']>>>sizes=['S','M','L']>>>fortshirtin('%s%s'%(c,s)forcincolorsforsinsizes):print(tshirt)blacksSblacksMblacksLwhiteSwhiteMwhiteL解决方案2:使用itertools中的产品生成器功能。>>>importitertools>>>list(itertools.product(['blacks','white'],['S','M','L']))[('blacks','S'),('黑人','M'),('黑人','L'),('白人','S'),('白人','M'),('白人','L')]4.可迭代对象解包时如何给占位符赋值?我们经常使用for循环来提取元组中的元素。对于我们不想接收的元素,我们可以使用占位符_来接收它们。>>>player_infos=[('Kobe','24'),('James','23'),('Iverson','3')]>>>forplayer_names,_inplayer_infos:print(player_names)在KobeJamesIverson5和Python3中,接收不确定值或参数的方式是args,args的位置可以在任意位置。>>>a,b,*c=range(8)>>>a,b,c(0,1,[2,3,4,5,6,7])>>>a,*b,c,d=范围(5)>>>a,b,c,d(0,[1,2],3,4)>>>*a,b,c,d=范围(5)>>>a,b,c,d([0,1],2,3,4)6.使用切片反转对象的顺序>>>s='basketball'>>>s[::-1]'llabteksab'7、如何查看列表的ID>>>l=[1,2,3]>>>id(l)45076386648,对变量序列使用*=(就地乘法)后,会得到一个新的序列创造?不会,对可变序列使用*=(就地乘法)后,不会创建新序列,新元素会附加到旧元素上。以列表为例,我们看一下新旧列表的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(最后一次调用):文件“”,第1行,int[2]+=[50,60]TypeError:'tuple'objectdoesnotsupportitemassignment>>>t(1,2,[30,40,50,60])由于长度限制在本文中,不可能在这里提出所有100个问题。微信文章:Python爬取《中国医生》评论,实现数据可视化