作者|天元浪子

责编 | 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/102946961’ 按路径分隔符切片的结果。

将字符串 ‘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.1415926 和 2.7182818,格式化输出字符串 ‘pi = 3.1416, e = 2.7183’。

将 0.00774592 和 356800000 格式化输出为科学计数法字符串。

将十进制整数 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.1415926 四舍五入,保留小数点后5位。

判断两个对象是在内存中是否是同一个。

返回给定对象的属性和方法。

计算字符串表达式 ‘(2+3)*5’ 的值。

实现字符串 ‘x={“name”:“David”, “age”:18}’ 包含的代码功能。

使用 map 函数求列表 [2,3,4,5] 中每个元素的立方根。

使用 sys.stdin.readline() 写一个和 input() 函数功能完全相同的函数。

使用二维列表描述9x9围棋局面,'w’表示白色棋子,‘b’表示黑色棋子,’-'表示无子,打印成下图左所示的文本棋盘。

对于9x9围棋盘,用a-i标识各行,用1-9标识各列,设计函数go(),输入位置和颜色,即输出文本棋盘,模拟围棋对弈的过程。

下图中是国际跳棋的初始局面,10x10的棋盘上只有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 问题,专家将及时在线解答!

热 文 推 荐

点击阅读原文,加入 Python 大本营!

你点的每个“在看”,我都认真当成了喜欢

python 面试题 aac caa相似_Python 面试实训 100 题,哪道难住了你?| 文末附答案相关推荐

  1. Python 面试实训 100 题,哪道难住了你?

    编程语言虽然不是自然语言,细细琢磨的话,其实在很多方面也是符合传统语言学(linguistics)规律的.比如,编程语言也讲究词汇学(关键字),结构学(程序结构),句法(语法),语义(代码功能)等:在 ...

  2. python 面试题 aac caa相似_经典面试题:最长回文子串

    回文串是面试常常遇到的问题(虽然问题本身没啥意义),本文就告诉你回文串问题的核心思想是什么. 首先,明确一下什:回文串就是正着读和反着读都一样的字符串. 比如说字符串aba和abba都是回文串,因为它 ...

  3. 阿里巴巴整理的python_阿里P8大佬整理的2020年最全99道python面试题,文末附答案...

    前言: 学习python的优点是什么?python语法非常优雅,简单易学 免费开源 跨平台,可以自由移植 可扩展,可嵌入性强 第三方库丰富 python的应用领域在系统编程中应用广泛,比如说shell ...

  4. python程序员专用壁纸_程序员炫技必备:用Python生成马赛克画!(文末附源码)...

    原标题:程序员炫技必备:用Python生成马赛克画!(文末附源码) 源 | Python与数据分析文 | 强哥 大家知道马赛克画是什么吗?不是动作片里的马赛克哦~~ 马赛克画是一张由小图拼成的大图,本 ...

  5. Python数据分析与应用----财政收入预测分析、实训(企业所得税预测)

    Python数据分析与应用----财政收入预测分析.实训(企业所得税预测) 本案例按照1994年我国财政体制改革后至2013年的数据进行分析并预测未来两年财政收入变化情况.主要按照财政收入分析预测模型 ...

  6. Python网络爬虫与信息提取笔记(续篇)(文末附教学视频)只供教学讲解,请勿对有robots协议的网站(如淘宝网)造成骚扰

    接上篇博客:Python网络爬虫与信息提取笔记(文末附教学视频) 14:基于bs4库的HTML内容遍历方法 标签树的下行遍历: 用len(soup.body.contents)返回body标签的儿子节 ...

  7. 2022 年,阿里内推 Java 后端面试题,文末附面试福利

    阿里一面题目: osi 七层网络模型,五层网络模型,每次层分别有哪些协议 死锁产生的条件, 以及如何避免死锁,银行家算法,产生死锁后如何解决 如何判断链表有环 虚拟机类加载机制,双亲委派模型,以及为什 ...

  8. python语言的取余运算符_Python 中用于整数除法取余的运算符是()_学小易找答案...

    [填空题]隐球菌病多由()传播. [单选题]下列选项中,哪一个符号是管道符号. ( ) [多选题]可采用分批法计算产品成本的企业有( ) [填空题]现有字符串 s="1234567" ...

  9. 测试面试 | 一道大厂算法面试真题,你能答上来吗?(附答案)

    时光飞快,眨眼又到一年年底! 年底其实是跳槽换坑的绝佳时机,毕竟可以「年前面试,年后入职」,而且面试越早,好坑位较多,可选择的余地也较大.建议有换工作意向的测试同学可以多发发简历,多找找面试机会的.哪 ...

  10. 大学“电路分析基础”试题合集第六章(文末附PDF文档与Word文档)

    大学"电路分析基础"试题合集第一章 大学"电路分析基础"试题合集第二章 大学"电路分析基础"试题合集第三章 大学"电路分析基础&q ...

最新文章

  1. WebService(基于AXIS的WebService编程)
  2. 新版scipy中的imread,imsave,imresize被弃用解决方法
  3. 安装office2010出现了错误,提示要安装MSXML6.10.1129.0解决方法
  4. 【干货】常见的40个知识模型:学习力、思考力、创造力、共情力......
  5. 微软警告 Windows 10 1703 即将停止支持!
  6. js检测是否安装java_js判断当前浏览器是否是源生app的webview
  7. [渝粤教育] 中国地质大学 审计学 复习题 (2)
  8. 1 dhcp服务器的配置文件,Linux1 DHCP服务器配置 主配置文件(dhcpd.conf)
  9. 计算机网络作用范围网络分为,【填空题】从不同作用范围分类,计算机网络可以分为广域网、_______、_________、_________四种...
  10. 与计算机审计相关的论文,关于计算机审计类论文范文参考文献,与计算机审计一般原理应用相关硕士毕业论文范文...
  11. MySQL数据库定期自动备份(定时任务)
  12. Android MDM 参考资料
  13. imagej得到灰度图数据_ImageJ的高级使用方法
  14. Android 一篇文章轻松搞懂什么是Callback回调
  15. cocos渲染引擎分析(五)-----FBO实现多分辨率渲染
  16. 16个经典面试问题回答思路
  17. RuntimeError: cuda runtime error (8) : invalid device function at /pytorch/torch/lib/THC/generic/THC
  18. Google 的封杀与被封杀
  19. linux下spi flash驱动程序,SPI Flash(W25Q16DV) 驱动
  20. 推荐4款超简单的画平面图的软件

热门文章

  1. html jquery隐藏input,JQuery控制input的隐藏和显示
  2. 浅谈数字音频处理的新技术
  3. jdk 配置出错could not open `C:\Java\jdk16\lib\amd64\jvm.cfg‘ 解决方案
  4. 俄亥俄州立大学计算机硕士申请,俄亥俄州立大学计算机科学与工程理学硕士研究生申请要求及申请材料要求清单...
  5. 暴力破解zip压缩密码
  6. 使用 MATLAB Coder App 生成 C 代码
  7. FPGA数字鉴相鉴频器的开发记录
  8. java 图片深度_图像的色彩值称为图像的颜色深度,黑白图像的颜色深度为( )位。...
  9. 网易校招笔试第三题匈牙利算法
  10. linux 安装pureftp