Python语言程序设计基础(第2版)崇天 著 思考题
第3章 基本数据类型*(仅供参考)*
3.1
既然浮点数可以表示所有整数数值,Python语言为何要同时提供整数和浮点数两种类型?
因为浮点数类型的最长运算结果可输出17位数字,其运算精度为2.220e-16,运算误差仅为0.000 000 000 000 000 2,在对数据进行高精度科学计算是浮点数类型不能准确的计算出来。而整数类型进行运算能够输出完全准确的结果。
3.2
Python语言中整数1010的二进制、八进制和十六进制表示分别是什么?
二进制:0b1111110010
八进制:0o1762
十六进制:0x3f2
a = bin(1010) # 二进制
b = oct(1010) # 八进制
c = hex(1010) # 十六进制
print(a, b, c)
3.3
Python语言中-77.的科学计数法表示是什么?4.3e-3的十进制表示什么?
-77.的科学计数法表示:-7.7e1 或 -7.7e+1
4.3e-3的十进制表示:0.0043
3.4
复数2.3e+3-1.34e-3j的实部和虚部分别是什么?采用什么方法提取一个复数的实部和虚部?
实部:2.3e+3
虚部:-1.34e-3
z = 2.3e+3-1.34e-3j
print(z.real) # 提取实部
print(z.imag) # 提取虚部
2300.0
-0.00134
3.5
思考各操作符的优先级,计算下列表达式。
解:
3.6
请将下列数学表达式用Python程序写出来,并运算结果。
mod 表示取余
x1 = (pow(2, 4)+7-3*4)/5
x2 = (1+pow(3, 2))*(16 % 7)/7
print("x1={}\nx2={}".format(x1, x2))
x1=2.2
x2=2.857142857142857
3.7
假设x=1,x*=3+5**2的运算结果是什么?
x = x*(3+5**2)=1*(3+25)=28
3.8
请利用math库运行下面语句,获得计算结果。
import math
s = list()
s.append(math.sin(2*math.pi)) # (1)
s.append(math.fabs(-2.5)) # (2)
s.append(math.ceil(3.5+math.floor(-2.5))) # (3)
s.append(round(math.fabs(-2.5))) # (4)
s.append(math.sqrt(math.pow(2, 4))) # (5)
s.append(math.log(math.e)) # (6)
s.append(math.gcd(12, 9)) # (7)
s.append(math.fmod(36, 5)) # (8)
for i in range(8):
print("s{}={}".format(i+1, s[i]))
结果
s1=-2.4492935982947064e-16
s2=2.5
s3=1
s4=2
s5=4.0
s6=1.0
s7=3
s8=1.0
3.9
请利用math库将47°的角转换为弧度值,并将结果赋予给一个变量。
3.10
请利用math库将π/7的弧度值转换为角度值,并将结果赋予给一个变量。
import math
x = math.radians(47)
y = math.degrees(math.pi/7)
print("47°的角转换为弧度值为:{}\n"
"π/7的弧度值转换为角度值为:{}".format(x, y))
47°的角转换为弧度值为:0.8203047484373349
π/7的弧度值转换为角度值为:25.714285714285715
3.11
math库有44个函数,Python计算生态有超过10万个各类函数库,思考一下,该怎么学习这些函数库呢?
略。。。
3.12
一年365天,初始水平值为1.0,每工作一天水平增加N,不工作时水平不下降,一周连续工作4天,请编写程序运算结果并填写下表:
def day(n):
level = 1.0
for week in range(365):
if week % 7 in [1, 2, 3, 4]:
level *= (1 + n)
return level
for i in range(1, 11):
N = i / 1000
print("N={:.3f}的年终值为{:.3f}".format(N, day(N)))
N=0.001的年终值为1.231
N=0.002的年终值为1.515
N=0.003的年终值为1.865
N=0.004的年终值为2.294
N=0.005的年终值为2.822
N=0.006的年终值为3.470
N=0.007的年终值为4.267
N=0.008的年终值为5.246
N=0.009的年终值为6.447
N=0.010的年终值为7.922
3.13
略
3.14
略
3.15
一年365天,初始水平值为1.0,以每个月30天计算,在每个月月初连续10天里,每工作一天水平增加N,该月其他时间工作与否都不增加水平值。请编写程序运算结果并填写下表:
def year(n):
level = 1.0
for month in range(12):
for day in range(1, 31):
if day / 10 <= 1.0:
level *= (1 + n)
return level
for i in range(1, 11):
N = i / 1000
print("N={:.3f}的年终值为{:.3f}".format(N, year(N)))
N=0.001的年终值为1.127
N=0.002的年终值为1.271
N=0.003的年终值为1.433
N=0.004的年终值为1.615
N=0.005的年终值为1.819
N=0.006的年终值为2.050
N=0.007的年终值为2.310
N=0.008的年终值为2.602
N=0.009的年终值为2.930
N=0.010的年终值为3.300
3.16
s=“hello”, t=“world”, s+=t, 则s、s[-1]、s[2:8]、s[-2::-1]分别是多少?
s = s + t
s = “helloworld”
s[-1] = “d”
s[2:8] = “llowor”
s[-2::-1] = “lrowolleh”
3.17
判断题:Python中"4"+“5"结果为"9”
错,字符"4"和"5"的拼接,应是"45"
3.18
采用微实例3.1的设计思路还能完成哪些常用计算需要?
实例3.1 是获取星期字符串
日期、金额、各种商品的型号等等
3.19
s=“Python String”,写出下列操作的输出结果:
s = "Python String"
print(s.upper())
print(s.lower())
print(s.find('i'))
print(s.replace('ing', 'gni'))
print(s.split())
PYTHON STRING
python string
10
Python Strgni
['Python', 'String']
3.20
下列表达式错误的是()。
A.‘abcd’
B.‘abc’
C."
D.‘Hello’>‘hello’
C
3.21
请思考并描述下面Python语句的输出结果:
print("{:>15s}:{:<8.2f}".format(“Length”, 23.87501))
在15个字符长度里,由右对齐输出Length,其余用空格填充;再接着输出冒号(:),后面是在8个字符长度里,由左对齐输出23.87501保留2位小数长度的数23.88
*********Length:23.87***
# 这里将空格换成*
3.22
格式化输出389的二进制、八进制、十进制、和十六进制的表达式。以及对应的Unicode字符。
print("{0}的二进制是{0:b}\n"
"{0}的八进制是{0:o}\n"
"{0}的十进制是{0:d}\n"
"{0}的十六进制是{0:x}\n"
"{0}的Unicode字符是{0:c}\n".format(389))
389的二进制是110000101
389的八进制是605
389的十进制是389
389的十六进制是185
389的Unicode字符是ƅ
3.23
格式化输出0.002 178 对应的科学表示法形式,保留4位有效位的标准浮点数形式以及百分形式。
print("科学表示法:{0:e}\n"
"标准浮点形式:{0:.4f}\n"
"百分形式:{0:.4%}".format(0.002178))
科学表示法:2.178000e-03
标准浮点形式:0.0022
百分形式:0.2178%
3.24
进度条反映了软件的执行速度,请思考并给出至少3种提高软件执行速度的方法。
1.减少程序代码,尽量使用函数,局部变量
2.使用内建的字符串,元组,列表,集合,字典等容器。
3.有选择性的消除属性访问。如多用 from math import sqrt 而不要直接再程序中多次调用 math.sqrt(),或直接声明局部变量。
3.25
str.center()方法的功能是什么?
str.center()方法会对原字符串进行排版,通过指定一个长度值,将原字符串在该长度内居中。可选的填充字符参数可以指定填充字符,默认情况下以空格为填充字符。如果width大于字符串长度,则返回一个新字符串,否则返回原字符串。
str.center(width, fillchar)
# width字符串排版总宽度,整型参数,不可省略的参数
# fillchar填充字符,字符串参数,可省略的参数,省略时填充字符为空格符
3.26
如果将\r放在print()中字符串的其他部分,会产生什么效果?
产生的效果是,只会运行显示print()字符串中\r后面的字符串