大家好,欢迎来到IT知识分享网。
作者 | 天元浪子
责编 | maozz
出品 | CSDN博客
编程语言虽然不是自然语言,细细琢磨的话,其实在很多方面也是符合传统语言学(linguistics)规律的。比如,编程语言也讲究词汇学(关键字),结构学(程序结构),句法(语法),语义(代码功能)等;在语言的学习方法上,编程语言和自然语言也高度相似。
回想一下学习英语的过程,都有这样一个阶段:语法都搞明白了,词汇量也比英国农民多得多(据说英国的农民,平均词汇量800,但我一直未找到资料验证真伪),可就是说也说不出来,听也听不明白,急得捶胸顿足。再来看看初学者学习 Python 的情况,是不是也有这样一个阶段呢?基础语法都学完了,可是读别人的代码特别吃力,自己写又茫茫然不知从何处着手。
为什么会这样呢?我给出的答案是:缺乏语感!何谓语感,专业的定义如下:语感,是比较直接、迅速地感悟语言的能力,是语言水平的重要组成部分,是对语言分析、理解、体会、吸收全过程的高度浓缩,是一种经验色彩很浓的能力,其中牵涉到学习经验、生活经验、心理经验、情感经验,包含着理解能力、判断能力、联想能力等诸多因素。
以上就是我提出编程也要讲“语感训练”的理论基础。语感训练,并不等同于语法学习,也不是完整的小项目、小课题练习,而是针对编程实践中经常遇到的字符串处理、文件读写、列表字典元组集合对象操作等基本技能进行训练,帮助初学者建立语感。
一旦建立起了语感,初学者就可以专注于功能的实现,而不会随时被一些小问题中断思维。
Python 语感训练涵盖列表、字典、元组、集合、字符串、格式化输出、类型和整数转换、文件读写、杂项等9个类别,共100道练习题。
-
将元组 (1,2,3) 和集合 {4,5,6} 合并成一个列表。
-
在列表 [1,2,3,4,5,6] 首尾分别添加整型元素 7 和 0。
-
反转列表 [0,1,2,3,4,5,6,7] 。
-
反转列表 [0,1,2,3,4,5,6,7] 后给出中元素 5 的索引号。
-
分别统计列表 [True,False,0,1,2] 中 True,False,0,1,2的元素个数,发现了什么?
-
从列表 [True,1,0,‘x’,None,‘x’,False,2,True] 中删除元素‘x’。
-
从列表 [True,1,0,‘x’,None,‘x’,False,2,True] 中删除索引号为4的元素。
-
删除列表中索引号为奇数(或偶数)的元素。
-
清空列表中的所有元素。
-
对列表 [3,0,8,5,7] 分别做升序和降序排列。
-
将列表 [3,0,8,5,7] 中大于 5 元素置为1,其余元素置为0。
-
遍历列表 [‘x’,‘y’,‘z’],打印每一个元素及其对应的索引号。
-
将列表 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 拆分为奇数组和偶数组两个列表。
-
分别根据每一行的首元素和尾元素大小对二维列表 [[6, 5], [3, 7], [2, 8]] 排序。
-
从列表 [1,4,7,2,5,8] 索引为3的位置开始,依次插入列表 [‘x’,‘y’,‘z’] 的所有元素。
-
快速生成由 [5,50) 区间内的整数组成的列表。
-
若 a = [1,2,3],令 b = a,执行 b[0] = 9, a[0]亦被改变。为何?如何避免?
-
将列表 [‘x’,‘y’,‘z’] 和 [1,2,3] 转成 [(‘x’,1),(‘y’,2),(‘z’,3)] 的形式。
-
以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有的键。
-
以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有的值。
-
以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有键值对组成的元组。
-
向字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中追加 ‘David’:19 键值对,更新Cecil的值为17。
-
删除字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中的Beth键后,清空该字典。
-
判断 David 和 Alice 是否在字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中。
-
遍历字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21},打印键值对。
-
若 a = dict,令 b = a,执行 b.update({‘x’:1}), a亦被改变。为何?如何避免?
-
以列表 [‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’] 中的每一个元素为键,默认值都是0,创建一个字典。
-
将二维结构 [[‘a’,1],[‘b’,2]] 和 ((‘x’,3),(‘y’,4)) 转成字典。
-
将元组 (1,2) 和 (3,4) 合并成一个元组。
-
将空间坐标元组 (1,2,3) 的三个元素解包对应到变量 x,y,z。
-
返回元组 (‘Alice’,‘Beth’,‘Cecil’) 中 ‘Cecil’ 元素的索引号。
-
返回元组 (2,5,3,2,4) 中元素 2 的个数。
-
判断 ‘Cecil’ 是否在元组 (‘Alice’,‘Beth’,‘Cecil’) 中。
-
返回在元组 (2,5,3,7) 索引号为2的位置插入元素 9 之后的新元组。
-
创建一个空集合,增加 {‘x’,‘y’,‘z’} 三个元素。
-
删除集合 {‘x’,‘y’,‘z’} 中的 ‘z’ 元素,增j加元素 ‘w’,然后清空整个集合。
-
返回集合 {‘A’,‘D’,‘B’} 中未出现在集合 {‘D’,‘E’,‘C’} 中的元素(差集)。
-
返回两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 的并集。
-
返回两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 的交集。
-
返回两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 未重复的元素的集合。
-
判断两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 是否有重复元素。
-
判断集合 {‘A’,‘C’} 是否是集合 {‘D’,‘C’,‘E’,‘A’} 的子集。
-
去除数组 [1,2,5,2,3,4,5,‘x’,4,‘x’] 中的重复元素。
-
返回字符串 ‘abCdEfg’ 的全部大写、全部小写和大下写互换形式。
-
判断字符串 ‘abCdEfg’ 是否首字母大写,字母是否全部小写,字母是否全部大写。
-
返回字符串 ‘this is python’ 首字母大写以及字符串内每个单词首字母大写形式。
-
判断字符串 ‘this is python’ 是否以 ‘this’ 开头,又是否以 ‘python’ 结尾。
-
返回字符串 ‘this is python’ 中 ‘is’ 的出现次数。
-
返回字符串 ‘this is python’ 中 ‘is’ 首次出现和最后一次出现的位置。
-
将字符串 ‘this is python’ 切片成3个单词。
-
返回字符串 ‘blog.csdn.net/xufive/article/details/’ 按路径分隔符切片的结果。
-
将字符串 ‘2.72, 5, 7, 3.14’ 以半角逗号切片后,再将各个元素转成浮点型或整形。
-
判断字符串 ‘adS12K56’ 是否完全为字母数字,是否全为数字,是否全为字母,是否全为ASCII码。
-
将字符串 ‘there is python’ 中的 ‘is’ 替换为 ‘are’。
-
清除字符串 ‘\t python \n’ 左侧、右侧,以及左右两侧的空白字符。
-
将三个全英文字符串(比如,‘ok’, ‘hello’, ‘thank you’)分行打印,实现左对齐、右对齐和居中对齐效果。
-
将三个字符串(比如,‘Hello, 我是David’, ‘OK, 好’, ‘很高兴认识你’)分行打印,实现左对齐、右对齐和居中效果。
-
将三个字符串 ‘15’, ‘127’, ‘65535’ 左侧补0成同样长度。
-
提取 url 字符串 ‘https://blog.csdn.net/xufive’ 中的协议名。
-
将列表 [‘a’,‘b’,‘c’] 中各个元素用’|’连接成一个字符串。
-
将字符串 ‘abc’ 相邻的两个字母之间加上半角逗号,生成新的字符串。
-
从键盘输入手机号码,输出形如 ‘Mobile: 186 6677 7788’ 的字符串。
-
从键盘输入年月日时分秒,输出形如 ‘2019-05-01 12:00:00’ 的字符串。
-
给定两个浮点数 3. 和 2.,格式化输出字符串 ‘pi = 3.1416, e = 2.7183’。
-
将 0.00 和 格式化输出为科学计数法字符串。
-
将十进制整数 240 格式化为八进制和十六进制的字符串。
-
将十进制整数 240 转为二进制、八进制、十六进制的字符串。
-
将字符串 ‘10100’ 按照二进制、八进制、十进制、十六进制转为整数。
-
求二进制整数1010、八进制整数65、十进制整数52、十六进制整数b4的和。
-
将列表 [0,1,2,3.14,‘x’,None,’’,list(),{5}] 中各个元素转为布尔型。
-
返回字符 ‘a’ 和 ‘A’ 的ASCII编码值。
-
返回ASCII编码值为 57 和 122 的字符。
-
将二维列表 [[0.468,0.975,0.446],[0.718,0.826,0.359]] 写成名为 csv_data 的 csv 格式的文件,并尝试用 excel 打开它。
-
从 csv_data.csv 文件中读出二维列表。
-
向 csv_data.csv 文件追加二维列表 [[1.468,1.975,1.446],[1.718,1.826,1.359]],然后读出所有数据。
-
交换变量 x 和 y 的值。
-
判断给定的参数 x 是否是整形。
-
判断给定的参数 x 是否为列表或元组。
-
判断 ‘https://blog.csdn.net’ 是否以 ‘http://’ 或 ‘https://’ 开头。若是,则返回 ‘http’ 或 ‘https’;否则,返回None。
-
判断 ‘https://blog.csdn.net’ 是否以 ‘.com’ 或 ‘.net’ 结束。若是,则返回 ‘com’ 或 ‘net’;否则,返回None。
-
将列表 [3,‘a’,5.2,4,{},9,[]] 中 大于3的整数或浮点数置为1,其余置为0。
-
a,b 是两个数字,返回其中较小者或最大者。
-
找到列表 [8,5,2,4,3,6,5,5,1,4,5] 中出现最频繁的数字以及出现的次数。
-
将二维列表 [[1], [‘a’,‘b’], [2.3, 4.5, 6.7]] 转为 一维列表。
-
将等长的键列表和值列表转为字典。
-
使用链状比较操作符重写逻辑表达式 a > 10 and a < 20。
-
写一个函数,以0.1秒的间隔不换行打印30次由函数参数传入的字符,实现类似打字机的效果。
-
数字列表求和。
-
返回数字列表中的最大值和最小值。
-
计算 5 的 3.5 方和 3 的立方根。
-
对 3. 四舍五入,保留小数点后5位。
-
判断两个对象是在内存中是否是同一个。
-
返回给定对象的属性和方法。
-
计算字符串表达式 ‘(2+3)*5’ 的值。
-
实现字符串 ‘x={“name”:“David”, “age”:18}’ 包含的代码功能。
-
使用 map 函数求列表 [2,3,4,5] 中每个元素的立方根。
-
使用 sys.stdin.readline 写一个和 input 函数功能完全相同的函数。
-
使用二维列表描述9×9围棋局面,’w’表示白色棋子,‘b’表示黑色棋子,’-‘表示无子,打印成下图左所示的文本棋盘。
-
对于9×9围棋盘,用a-i标识各行,用1-9标识各列,设计函数go,输入位置和颜色,即输出文本棋盘,模拟围棋对弈的过程。
-
下图中是国际跳棋的初始局面,10×10的棋盘上只有50个深色格子可以落子,’w’表示白色棋子,‘b’表示黑色棋子,’-‘表示无子,字符串 phase = ‘b’*20 + ‘-’*10 + ‘w’*20 表示下图中的局面,请将 phase 打印成下图右所示的样子。
题目就到此为止啦,各位小伙伴们做的怎么样呢?
接下来,是公布答案的时间啦。
解答:
1. 将元组 (1,2,3) 和集合 {4,5,6} 合并成一个列表。
>>> list((1,2,3)) + list({4,5,6})
[1, 2, 3, 4, 5, 6]
2. 在列表 [1,2,3,4,5,6] 首尾分别添加整型元素 7 和 0。
>>> a = [1,2,3,4,5,6]
>>> a.insert(0,7)
>>> a.append(0)
>>> a
[7, 1, 2, 3, 4, 5, 6, 0]
3. 反转列表 [0,1,2,3,4,5,6,7] 。
>>> a = [0,1,2,3,4,5,6,7]
>>> a.reverse
>>> a
[7, 6, 5, 4, 3, 2, 1, 0]
>>> a[::-1]
[0, 1, 2, 3, 4, 5, 6, 7]
4. 反转列表 [0,1,2,3,4,5,6,7] 后给出中元素 5 的索引号。
>>> [0,1,2,3,4,5,6,7][::-1].index(5)
2
5. 分别统计列表 [True,False,0,1,2] 中 True,False,0,1,2的元素个数,发现了什么?
>>> a = [True,False,0,1,2]
>>> a.count(True),a.count(False),a.count(0),a.count(1),a.count(2)
(2, 2, 2, 2, 1) # count不区分True和1、False和0,但None、''不会被视为False
以上是前 5 题的答案,因篇幅有限,更多答案内容,欢迎扫描下方海报二维码或点击【阅读原文】,加入 Python 大本营,点击查看!
另有任何关于 Python 问题,专家将及时在线解答!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/50495.html