董付国《Python程序设计》系列教材课后习题与答案.pdf
《董付国《Python程序设计》系列教材课后习题与答案.pdf》由会员分享,可在线阅读,更多相关《董付国《Python程序设计》系列教材课后习题与答案.pdf(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、董 付 国 Python程 序 设 计 习 题 与 参 考 答 案 说 明:内 容 适 用 于 董 付 国 老 师 在 清 华 大 学 出 版 社 出 版 的 系 列 教 材 Python程 序 设 计 基 础(ISBN:9787302410584,仅 适 用 于 前 9 章)、Python程 序 设 计(第 2版)(ISBN:9787302436515),也 可 以 作 为 Python可 以 这 样 学(ISBN:9787302456469,本 书 无 习 题)的 参 考 作 业。第 1章 基 础 知 识 1.1 简 单 说 明 如 何 选 择 正 确 的 Python版 本。答:在 选
2、择 Python的 时 候,一 定 要 先 考 虑 清 楚 自 己 学 习 Python的 目 的 是 什 么,打 算 做 哪 方 面 的 开 发,有 哪 些 扩 展 库 可 用,这 些 扩 展 库 最 高 支 持 哪 个 版 本 的 P y th o n,是 Python 2.x还 是 Python 3.x,最 高 支 持 到 Python 2.7.6还 是 Python 2.7.9还 是 Python 2.7.11 这 些 问 题 都 确 定 以 后,再 做 出 自 己 的 选 择,这 样 才 能 事 半 功 倍,而 不 至 于 把 大 量 时 间 浪 费 在 Python的 反 复 安
3、装 和 卸 载 上。同 时 还 应 该 注 意,当 更 新 的 Python版 本 推 出 之 后,不 要 急 于 更 新,而 是 应 该 等 确 定 自 己 所 必 须 使 用 的 扩 展 库 也 推 出 了 较 新 版 本 之 后 再 进 行 更 新。尽 管 如 此,Python 3 毕 竟 是 大 势 所 趋,如 果 您 暂 时 还 没 想 到 要 做 什 么 行 业 领 域 的 应 用 开 发,或 者 仅 仅 是 为 了 尝 试 一 种 新 的、好 玩 的 语 言,那 么 请 毫 不 犹 豫 地 选 择 Python 3.x系 列 的 最 高 版 本(目 前 是 Python 3.6.
4、1)。1.2 为 什 么 说 Python采 用 的 是 基 于 值 的 内 存 管 理 模 式?答:P ython采 用 的 是 基 于 值 的 内 存 管 理 方 式,如 果 为 不 同 变 量 赋 值 相 同 值,则 在 内 存 中 只 有 一 份 该 值,多 个 变 量 指 向 同 一 块 内 存 地 址,例 如 下 面 的 代 码。x=3 id(x)10417624 y=3 id(y)10417624 y=5 id(y)10417600 id(x)104176241.3 解 释 Python中 的 运 算 符/和 的 区 别。答:在 Python中/表 示 普 通 除 法(也 叫 真
5、 除 法),其 结 果 是 实 数,而 表 示 整 除,得 到 的 结 果 是 整 数,并 且 自 动 向 下 取 整。1.4 在 Python中 导 入 模 块 中 的 对 象 有 哪 儿 种 方 式?答:常 用 的 有 三 种 方 式,分 别 为 im port模 块 名 a s 别 名 fro m模 块 名 im port对 象 名 a s 别 名 from math import*1.5 是 目 前 比 较 常 用 的 Python扩 展 库 管 理 工 具(pip)1.6 解 释 Python脚 本 程 序 的 name变 量 及 其 作 用。答:每 个 Python程 序 都 有
6、一 个 _ n a m e _变 量,用 来 表 示 程 序 的 运 行 方 式。当 作 为 模 块 导 入 时,_ n a m e _变 量 的 值 等 于 程 序 文 件 名,当 直 接 运 行 程 序 时 其 值 为 字 符 串,_ m a in _ J。1.7 运 算 符(可 以、不 可 以)对 浮 点 数 进 行 求 余 数 操 作。(可 以)1.8 一 个 数 字 5(是、不 是)合 法 的 Python表 达 式。(是)1.9 在 Python 2.x中,input。函 数 接 收 到 的 数 据 类 型 由 _确 定,而 在 Python3.x中 该 函 数 则 认 为 接 收
7、 到 的 用 户 输 入 数 据 一 律 为。(界 定 符、字 符 串)1.1 0 编 写 程 序,用 户 输 入 一 个 三 位 以 上 的 整 数,输 出 其 百 位 以 上 的 数 字。例 如 用 户 输 入 1 2 3 4,则 程 序 输 出 12。(提 示:使 用 整 除 运 算。)答:x=input(,请 输 入 3 位 以 上 的 数 字:,)if len(x)=3:x=int(x)print(x/100)else:print(输 入 错 误。)第 2 章 Python数 据 结 构 2.1 为 什 么 应 尽 量 从 列 表 的 尾 部 进 行 元 素 的 增 加 与 删 除
8、操 作?答:当 列 表 增 加 或 删 除 元 素 时,列 表 对 象 自 动 进 行 内 存 扩 展 或 收 缩,从 而 保 证 元 素 之 间 没 有 缝 隙,但 这 涉 及 到 列 表 元 素 的 移 动,效 率 较 低,应 尽 量 从 列 表 尾 部 进 行 元 素 的 增 加 与 删 除 操 作 以 提 高 处 理 速 度。2.2 range。函 数 在 Python 2.x中 返 回 一 个,而 在 Python 3.x中 的 range。函 数 返 回 一 个 o(列 表、range对 象)2.3 编 写 程 序,生 成 包 含 1000个 0 至 I 100之 间 的 随 机
9、整 数,并 统 计 每 个 元 素 的 出 现 次 数。答:import randomx=random.randint(0,100)for i in range(1000)#使 用 集 合 s=set(x)for v in s:print,:,x,count(v)print(=*30)#使 用 字 典 d=dict()for v in x:dv=d.get(v,0)+Ifor k,v in d.items():print(k,v,sep=:)2.4 表 达 式“3 in 1,2 3 4”的 值 为(False)2.5 编 写 程 序,用 户 输 入 一 个 列 表 和 2 个 整 数 作 为
10、下 标,然 后 输 出 列 表 中 介 于 2 个 下 标 之 间 的 元 素 组 成 的 子 列 表。例 如 用 户 输 入 1,2,3,4,5,6和 2,5,程 序 输 出 3,4,5,6。答:x=input(Please input a list:)x-eval(x)start,end=eval(input(Please input the start position and the end position:*)print(xstart:end4-1)2.6 列 表 对 象 的 sort()方 法 用 来 对 列 表 元 素 进 行 原 地 排 序,该 方 法 的 返 回 值 为 o
11、(None)2.7 列 表 对 象 的 方 法 删 除 首 次 出 现 的 指 定 元 素,如 果 列 表 中 不 存 在 要 删 除 的 元 素,则 抛 出 异 常。(remove()2.8 假 设 列 表 对 象 sL ist的 值 为 3,4,5,6,7,9,11,13,15,17,那 么 切 片 aList3:7得 到 的 值 是 o(6,7,9,11)2.9 设 计 一 个 字 典,并 编 写 程 序,用 户 输 入 内 容 作 为 键,然 后 输 出 字 典 中 对 应 的 值,如 果 用 户 输 入 的 键 不 存 在,则 输 出“您 输 入 的 键 不 存 在!”答:d=l:a
12、;2:b,3:c;4:dv=input(*Please input a key:1)v=eval(v)print(d.get(v;您 输 入 的 的 键 不 存 在)2.1 0 编 写 程 序,生 成 包 含 2 0个 随 机 数 的 列 表,然 后 将 前 1 0个 元 素 升 序 排 列,后 10个 元 素 降 序 排 列,并 输 出 结 果。答:import randomx=random.randint(0,100)for i in range(20)print(x)x:10=sorted(x:101)x10:J=sorted(x10:J,reverse=True)print(x)2.1
13、 1 在 Python中,字 典 和 集 合 都 是 用 一 对 作 为 定 界 符,字 典 的 每 个 元 素 有 两 部 分 组 成,即 和,其 中 不 允 许 重 复。(大 括 号、键、值、键)2.1 2 使 用 字 典 对 象 的 方 法 可 以 返 回 字 典 的“键-值 对”列 表,使 用 字 典 对 象 的 方 法 可 以 返 回 字 典 的“键”列 表,使 用 字 典 对 象 的 方 法 可 以 返 回 字 典 的“值”列 表。(items()keys。、values()2.13 假 设 有 列 表 a=name,age,sex和 b=Dong,38,M ale,请 使 用 一
14、 个 语 句 将 这 两个 列 表 的 内 容 转 换 为 字 典,并 且 以 列 表 a 中 的 元 素 为 键,以 列 表 b 中 的 元 素 为 值,这 个 语 句 可 以 写 为 o(c-dict(zip(a,b)2.1 4 假 设 有 一 个 列 表 a,现 要 求 从 列 表 a 中 每 3 个 元 素 取 1个,并 且 将 取 到 的 元 素 组 成 新 的 列 表 b,可 以 使 用 语 句。(b=a:3)2.1 5 使 用 列 表 推 导 式 生 成 包 含 1 0个 数 字 5 的 列 表,语 句 可 以 写 为.(5foriinrange(10)2.16(可 以、不 可
15、以)使 用 d e l命 令 来 删 除 元 组 中 的 部 分 元 素。(不 可 以)第 3 章 选 择 结 构 与 循 环 结 构 3.1 分 析 逻 辑 运 算 符“or”的 短 路 求 值 特 性。答:假 设 有 表 达 式“表 达 式 1 o r表 达 式 2,如 果 表 达 式 1 的 值 等 价 于 T r u e,那 么 无 论 表 达 式 2 的 值 是 什 么,整 个 表 达 式 的 值 总 是 等 价 于 True。因 此,不 需 要 再 计 算 表 达 式 2 的 值。3.2 编 写 程 序,运 行 后 用 户 输 入 4 位 整 数 作 为 年 份,判 断 其 是 否
16、 为 闰 年。如 果 年 份 能 被 4 0 0整 除,则 为 闰 年;如 果 年 份 能 被 4 整 除 但 不 能 被 100整 除 也 为 闰 年。答:x=input(Please input an integer of 4 digits meaning the year:1)x=eval(x)if x%400=0 or(x%4=0 and not x%100=0):printCYes1)else:print(No)3.3 Python提 供 了 两 种 基 本 的 循 环 结 构:和。(for循 环、while循 环)3.4 编 写 程 序,生 成 一 个 包 含 5 0个 随 机 整
17、 数 的 列 表,然 后 删 除 其 中 所 有 奇 数。(答:import randomx=random.randint(0,100)for i in range(50)print(x)for i in range(len(x):-l:ifxi%2=1:del xiprint(x)3.5 编 写 程 序,生 成 一 个 包 含 2 0个 随 机 整 数 的 列 表,然 后 对 其 中 偶 数 下 标 的 元 素 进 行 降 序 排 列,奇 数 下 标 的 元 素 不 变。(提 示:使 用 切 片。)答:import randomx=random.randint(0,100)for i in
18、range(20)print(x)x:2=sorted(x:2,reverse=True)print(x)3.6 编 写 程 序,用 户 从 键 盘 输 入 小 于 1000的 整 数,对 其 进 行 因 式 分 解。例 如,10=2X5,60=2X 2X 3X 5。答:x=input(*PIease input an integer less than 1000:)x=eval(x)t=xi=2result=while True:ift=l:breakift%i=0:result.append(i)t=t/ielse:i+=1print(x,=,:,.join(map(str,result)
19、3.7 编 写 程 序,至 少 使 用 2 种 不 同 的 方 法 计 算 100以 内 所 有 奇 数 的 和。答:print(sum(i for i in range(1,1 00)if i%2=1)print(sum(range(l,l 00):2)3.8 编 写 程 序,输 出 所 有 由 1、2、3、4 这 4 个 数 字 组 成 的 素 数,并 且 在 每 个 素 数 中 每 个 数 字 只 使 用 依 次。答:from itertools import permutationsdigits=(1,2,3,4)def isPrime(n):if n=l:return Falseif
20、 n=2:return Trueifn%2=0:return Falsefor i in range(3,inl(n*0.5)+l,2):if n%i=0:return Falsereturn Truefor i in range(l,len(digits)+l):for number in permutations(digits,i):number=int(H.join(map(str,number)if isPrime(number):print(number)3.9 编 写 程 序,实 现 分 段 函 数 计 算,如 下 表 所 示。Xyx0 00=x5 X5=x10 3x-510=x2
21、0 0.5x-220=x 0答:x=input(Please input x:)x=eval(x)if 0=x5:print(x)elif 5=x10:print(3*x-5)elif 10=x20:print(0.5*x-2)else:print(O)第 4 章 字 符 串 与 正 则 表 达 式 4.1 假 设 有 一 段 英 文,其 中 有 单 独 的 字 母“I”误 写 为“i”,请 编 写 程 序 进 行 纠 正。答:1)不 使 用 正 则 表 达 式 x=i am a teacher,i am man,and i am 38 years old.I am not a busines
22、sman.*x=x.re p la c e(*i)x=x.replace(*i 7 I)print(x)2)使 用 正 则 表 达 式 import rex=i am a teacher,i am man,and i am 38 years old.I am not a businessman.1result=re.sub(r,bib,I,x)print(result)4.2 假 设 有 一 段 英 文,其 中 有 单 词 中 间 的 字 母“i”误 写 为“I”,请 编 写 程 序 进 行 纠 正。答:import rex=I am a teacher,!am man,and I am 38
23、 years old.I am not a businessman.print(x)result=re.sub(rBlB,T,x)print(result)4.3 有 一 段 英 文 文 本,其 中 有 单 词 连 续 重 复 了 2 次,编 写 程 序 检 查 重 复 的 单 词 并 只 保 留 一 个。例 如 文 本 内 容 为 This is is a desk.”,程 序 输 出 为 This is a desk.”答:这 里 给 出 Python 3.4.2代 码,如 果 使 用 Python 2.7.8的 话 只 需 要 修 改 其 中 的 print。函 数 为 print语 句
24、 即 可。1)方 法 一 import rex=This is is a desk.,pattern=pile(rb(w4-)(s+l)1,b)matchResult=pattern.search(x)x=pattern.sub(matchResult.group(1),x)print(x)2)方 法 二 import rex=This is is a desk.1pattern=pile(r(?Pbw+b)s(?P=f)matchResult=pattem.search(x)x=x,replace(matchResult.group(0),matchResult.group(1)print(
25、x)4.4 简 单 解 释 Python的 字 符 串 驻 留 机 制。答:P y thon支 持 字 符 串 驻 留 机 制,即:对 于 短 字 符 串,将 其 赋 值 给 多 个 不 同 的 对 象 时,内 存 中 只 有 一 个 副 本,多 个 对 象 共 享 该 副 本。这 一 点 不 适 用 于 长 字 符 串,即 长 字 符 串 不 遵 守 驻 留 机 制,下 面 的 代 码 演 示 了 短 字 符 串 和 长 字 符 串 在 这 方 面 的 区 别。a=1234,b=1234,id(a)=id(b)True a=1234*50 b=123450 id(a)=id(b)False4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python程序设计 董付国 Python 程序设计 系列 教材 课后 习题 答案
限制150内