《Python程序设计(第3版)》[美]约翰·策勒(JohnZelle)第3章答案《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle)第 3 章答案
答案仅供参考,若有错误欢迎指正
判断对错
1.由计算机存储和操作的信息称为数据。
2.由于浮点数是⾮常准确的,所以通常应该使⽤它们,⽽不是int。
3.像加法和减法这样的操作在math库中定义。
4.n 项的可能排列的数⽬等于 n!。
5.sqrt函数计算数字的喷射(squirt)。
6.float数据类型与实数的数学概念相同。
7.计算机使⽤⼆进制表⽰数字。
8.硬件float可以表⽰⽐硬件int更⼤范围的值。
9.在获取数字作为⽤户输⼊时,类型转换函数(如float)是eval的安全替代。
10.在 Python 中,4 + 5 产⽣与 4.0 + 5.0 相同的结果类型。
解答
1. T
2. F(p.36 “由于浮点值不精确,⽽ int 总是精确的,所以⼀般的经验 法则应该是:如果不需要⼩数值,就⽤ int”)
3. F(见 p.37 “表 3.1 Python 内置的数值操作”)
4. T
5. F(p.41 “该程序使⽤了 math 库模块的平⽅根函数 sqrt”)
6. F(p.36 “int 和 float 之间的另⼀个区别是,float 类型只能表⽰对实数的近似”)
7. T
8. T
9. T
10. F(p.38 “结果的数据类型取决于操作数的类型”)
多项选择
1.下列________________项不是内置的 Python 数据类型。
linux下载网址a.int
b.float
c.rational
d.string
2.以下________________项不是内置操作。
a.+
b.%
c.abs()
d.sqrt()
傅里叶级数常用公式3.为了使⽤ math 库中的函数,程序必须包括________________。
a.注释
b .循环
c.操作符
d .import 语句
4.4!的值是________________。
a.9
b.24
c.41
d.120
5.⽤于存储π的值,合适的数据类型是________________。
a.int
b.float
c.irrational
d.string
6.可以使⽤ 5 位⽐特表⽰的不同值的数量是________________。
a.5
b.10
c.32
d.50
7.在包含 int 和 float 的混合类型表达式中,Python 会进⾏的转换是________________。a.浮点数到整数
b.整数到字符串
c.浮点数和整数到字符串
d.整数到浮点数
8.下列________________项不是 Python 类型转换函数。
a.float
b.round
c.int
d.abs
9.⽤于计算阶乘的模式是________________。
a.累积器
b.输⼊、处理、输出
c.计数循环
d.格⼦
10. ________________。
a.导致溢出
b.转换为 float
c.打破计算机
d.使⽤更多的内存
解答
1. C(Python 使⽤ 库中的 Fraction 函数来表⽰有理数,其实就是⽤分数来表⽰有理数?)
2. D( 函数是 库中的函数)
3. D
4. B(4!= 4 × 3 × 2 × 1 = 24)
5. B
6. C(1 位⽐特可以表⽰两个不同的值,5 位⽐特可以表⽰ 2^5 = 32 个不同的值)
7. D(p.38 “在“混合类型表达式”中,Python 会⾃动将int 转换为浮点数,并执⾏浮点运算以产⽣浮点数结果。”)
8. D( 函数返回实数的绝对值或负数的模)
9. Akm社区破解版
10. D
讨论
1.显⽰每个表达式求值的结果。确保该值以正确的形式表⽰其类型(int 或float)。如果表达式是⾮法的,请解释为什么。
a. 7.4
b. 5.0
c. 8
d. 表达式⾮法(p.42 “sqrt 函数⽆法计算负数的平⽅根。Python 打印“math domain error”。这告诉我们,负数不在sqrt 函数
的定义域中”。若要计算负数的平⽅根,请使⽤ )
e. 11
f. 27(3 ** 3 相当于 pow(3, 3),见 。注意与 的不同之处)
2.将以下每个数学表达式转换为等效的Python 表达式。你可以假定math 库已导⼊(通过import math)。
a. (3 + 4) * 5
b. n * (n - 1) / 2
c. 4 * math.pi * r ** 2
d. math.sqrt(r * (s(a)) ** 2 + r * (math.sin(b)) ** 2)
e. (y2 - y1) / (x2 - x1)
3.显⽰将由以下每个 range 表达式⽣成的数字序列。
a.range(5)
b.range(3, 10)
c.range(4, 13, 3)
d.range(15, 5, -2)
e.range(5, 3)
Tips: 类型表⽰⼀个不可变的数字序列,在 range(start, stop[, step]) 中,如果省略了 step 参数,则其默认为 1;如果省略 start 参数,则其默认为 0;如果 step 参数为 0,则会引发 ValueError
a. [0, 1, 2, 3, 4]
b. [3, 4, 5, 6, 7, 8, 9]
c. [3, 6, 9, 12]
d. [15, 13, 11, 9, 7]
e. [](省略了 step 参数,且 start ⼩于 stop,⽣成⼀个空的数字序列)
4.显⽰以下每个程序⽚段产⽣的输出。
a.1
4
osi七层模型英文9
16
25
36
49
64
81
100
b.1:1
3:27
5:125
7:343
9:729
9
c.012
212
412
612
812
done
d.1
2
3
4
5
6
7
8
9
10
385
5.如果使⽤负数作为 round 函数中的第⼆个参数,你认为会发⽣什么?例如,round(314.159265, -1) 的结果应该是什么?请解释答案的理由。在你写下答案后,请参阅 Python ⽂档或尝试⼀些例⼦,看看Python 在这种情况下实际上做了什么。
Python 环境:Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
python编程基础教程课后答案
310.0(参阅 函数)
n =314.159265
s =str(n)
l = s.split('.')
for i in range(-len(l[0]),len(l[1])+1):
print('round({0}, {1}) = {2}'.format(n, i,round(n, i)))
# Output:
# round(314.159265, -3) = 0.0
# round(314.159265, -2) = 300.0
# round(314.159265, -1) = 310.0
# round(314.159265, 0) = 314.0
# round(314.159265, 1) = 314.2 ①
# round(314.159265, 2) = 314.16
# round(314.159265, 3) = 314.159
# round(314.159265, 4) = 314.1593
# round(314.159265, 5) = 314.15927 ③
# round(314.159265, 6) = 314.159265
for i in range(-2,3):
print('round(0.5, {0}) = {1}'.format(i,round(0.5, i)))
# Output:
# round(0.5, -2) = 0.0
# round(0.5, -1) = 0.0
# round(0.5, 0) = 0.0 ②
# round(0.5, 1) = 0.5
# round(0.5, 2) = 0.5
Tips: 根据 Python 3.5 的⽂档,round() 函数并不是简单地四舍五⼊取整,“For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2”,即如果值距离两边的整数的距离相等,则向相邻的偶数取整(具体见结论 6)。.
结论:
1. round 函数⽤于对浮点数进⾏四舍五⼊求值,具体保留⼏位⼩数,由传⼊的 ndigits 参数来控制
2. ndigits 是可选参数,当不传⼊时,即以默认保留 0 位⼩数进⾏取整,返回的是整数
c语言中stdio怎么读3. ndigits 传⼊ 0 时,与不传⼊时⼀样以保留 0 位⼩数进⾏取整,但返回的是浮点数
4. ndigits 传⼊正数时,取整到 ndigits 位⼩数,整数部分不变,返回的是浮点数。如果传⼊的浮点数的⼩数部分的位数⼩于 ndigits 位,则返回原
来的数
5. ndigits 传⼊负数时,对整数部分的后 abs(ndigits) 位进⾏取整( 例如:ndigits 为 -3,则对整数部分的后 3 位进⾏取整),⼩数部分清 0,返
回的是浮点数。如果 ndigits 的绝对值⼤于传⼊的浮点数的整数部分的位数,则返回 0.0
6. 当值距离两边的整数的距离相等时的取整⽅法,根据官⽅⽂档,Python 2.x 与 Python 3.x 的具体实现是不同的,这⾥只讨论 Python 3.x 的情
况。这⾥需要提到⼀种取整⽅法,Banker’s rounding 算法(银⾏家舍⼊法)。简单地说就是,如果舍弃部分左边的数字为奇数,则向上取整(如 ①);如果舍弃部分左边的数字为偶数,则向下取整(如 ②)()
7. (浮点运算的⼀个问题)查看 ③ 的结果,按照上⾯的规则,round(314.159265, 5) 应该等于 314.15926 才对,可是答案却不符合我们的预
期。这不是⼀个 Bug,这跟浮点数的精度有关。在计算机中浮点数不⼀定能精确表达,导致在计算机中保存的 314.15926 ⽐其真实值要⼤⼀点点,因此取整时就近似为了 314.15927()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论