Python语言程序设计基础 第二版(嵩天著)课后答案第三章(思考与练习)

思考与练习
因为这一章的思考与练习有点多,所以我决定把它与程序练习题分开,程序练习题在下一篇
P66
3.1 浮点数运算结果只有前15个数字是确定正确的,整数运算能够输出完全正确的运算结果,使用整数可以获得精度更高的计算结果。(具体解释详见课本P64,65)
3.2 二进制:1111110010
八进制:1762
十六进制:3f2

#用format直接转化,format的用法在第一章有解释
print("{:b}".format(1010))    #二进制
print("{:o}".format(1010))    #八进制
print("{:x}".format(1010))    #十六进制

3.3
-77.的科学计数法表示:-7.7e+1
4.3e-3的十进制表示:0.0043
3.4
复数(2.3e+3-1.34e-3j)的实部:2300.0 ;虚部:-0.00134
采用real,imag方法提取

print((2.3e+3-1.34e-3j).real)    #实数部分
print((2.3e+3-1.34e-3j).imag)    #虚数部分

P69
3.5

print(30-3**2+8//3**2*10)   #21
print(3*4**2/8%5)   #1.0
print(2**2**3)      #256    #python中幂运算符**如果是多个的话,应该先算右边再算左边,也就是从右往左计算.2**3=8;2**8=256
print((2.5+1.25j)*4j/2)  #(-2.5+5j)

操作符优先级:
在这里插入图片描述
3.6

print((2**4+7-3*4)/5)   #运算结果:2.2
print((1+3**2)*(16%7)/7)  #运算结果:2.857142857142857

3.7

x = 1
x*=3+5**2  #x = x*(3+5**2)=1 * (3+25)=28
print(x)    #28

P74
3.8

import math
print(math.sin(2*math.pi))  #-2.4492935982947064e-16     #pi常数π,sin正弦
print(math.floor(-2.5))     #-3     #floor(X),向下取整,返回不大于X的最大整数
print(math.ceil(3.5+math.floor(-2.5)))  #1    #ceil(X),向上取整,返回不小于X的最小整数
print(round(math.fabs(-2.5)))         #2      #fabs(X),X的绝对值    round(X)对X四舍五入
print(math.sqrt(math.pow(2,4)))      #4.0     #pow(x,y),x的y次幂,sqrt开平方
print(math.log(math.e))              #1.0     #e常数,自然对数:2.718281828459045   log(x),x的对数值
print(math.gcd(12,9))                #3       #gcd(x,y)x与y的最大公约数
print(math.fmod(36,5))               #1.0     #fmod(x,y):x%y

3.9

import math
x = math.radians(47)    #radians(x)角度x转弧度值
print(x)  #结果:0.8203047484373349

3.10

import math
x = math.degrees(math.pi/7)   #degrees(x),x的弧度转角度
print(x)  #结果:25.714285714285715

math常用的函数书上(P71-73)还有更多,但鉴于我以后可能懒得翻书,我决定贴上来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.11.
该怎么学习呢,就用呗,用的多了就记住了
P77
3.12
为什么注释少了呢,因为for循环这个东西,之前已经接触到了,没什么好解释的,如果不懂,多写写代码体会一下就懂了。

dayup = 1.00     #初始水平值
dayfactor = 0.001   #每工作一天水平增加值
for j in range(10):
    for i in range(1,365):
        if i%7 in [1,2,3,4]:  
            dayup = dayup * (1+dayfactor)
        else:
            dayup = dayup
    print("增加值为{:.3f}时年终值:{:.2f}".format(dayfactor,dayup))
    dayfactor = dayfactor + 0.001
    dayup = 1.00

运行结果:
在这里插入图片描述

3.13

dayup = 1.00     #初始水平值
dayfactor = 0.001   #每工作一天水平增加值
for j in range(10):
    for i in range(1,365):
        if i%7 in [1,2,3,4,5]:  #只增加了5。    #3.14一周工作六天,则再增加6
            dayup = dayup * (1+dayfactor)
        else:
            dayup = dayup
    print("增加值为{:.3f}时年终值:{:.2f}".format(dayfactor,dayup))
    dayfactor = dayfactor + 0.001
    dayup = 1.00

运行结果:
在这里插入图片描述

3.14
只是加了个6,就不粘代码了,直接放运行结果。
在这里插入图片描述

3.15

dayup = 1.00
dayfactor = 0.001
for j in range(10):
    for i in range(1,365):
        if i%30 in [1,2,3,4,5,6,7,8,9,10]:
            dayup = dayup * (1+dayfactor)
        else:
            dayup = dayup
    print("增加值为{:.3f}时年终值:{:.2f}".format(dayfactor,dayup))
    dayfactor = dayfactor + 0.001
    dayup = 1.00

运行结果:
在这里插入图片描述
P84
3.16

s = "hello"
t = "world"
s += t
print(s,'\n',s[-1],'\n',s[2:8],'\n',s[::3],'\n',s[-2::-1])
#运行结果:
# helloworld
#  d    [-1]倒数第一个
#  llowor   [2:8]  切片,从第二个到第七个,注意,从零开始
#  hlod   [::3]   从第一个开始,每隔三个
#  lrowolleh    [-2::-1] -2从倒数第二开始,-1倒序,这个表达式就是从倒数第二个开始倒序

3.17
错误,结果是45。加了双引号就不是数值之间的计算,而是两个字符串相加。
3.18
嗯,,,不知道。。。。大概是幂运算?
3.19

s = "Python String"
print(s.upper(),'\n',s.lower(),'\n',s.find('i'),'\n',s.replace('ing','gni'),'\n',s.split(' '))
#运算结果:
# PYTHON STRING       #upper()全部大写
#  python string      #lower()全部小写
#  10                 #find('X'),返回X的位置
#  Python Strgni      #replace(x,y),用y代替x
#['Python', 'String'] #split(x)转换成列表,由x分割

关于字符串处理的函数:
在这里插入图片描述
3.20
CD
A选项: 先比第0个元素,a和a比一样大;再比第一个元素,b比d小.那么’abcd’比’ad’小.结果是对.
B选项:前三个元素都相等,但’abcd’有第三个元素,而’abc’没有.所以’abc’<‘abcd’.结果对
C选项:这个错了,既不是对,又不是错.
D选项:先比第0个元素,‘A’要比’a’小.所以’ABCD’应该小于’abcd’. 结果错误。
P88
在第一章的时候已经解释了format()方法,这里就不过多注释了。
3.21

print('{:>15s}:{:<8.2f}'.format('Length',23.87501))
#运行结果:
#         Length:23.88   

3.22
格式化不一定都是这个格式,我随便写的。可以有别的形式

print('{:-^20b}'.format(389))    #输出二进制
print('{:-^20o}'.format(389))         #输出八进制
print('{:-^20d}'.format(389))           #输出十进制
print('{:-^20x}'.format(389))           #输出十六进制
print('{:-^20c}'.format(389))         #输出Unicode字符
#运行结果:
#-----110000101------
#--------605---------
#--------389---------
#--------185---------
#---------ƅ----------

3.23

print("{:e}".format(0.002178))    #科学计数法
print("{:.4f}".format(0.002178))         #保留4位有效位的标准浮点形式
print("{:.2%}".format(0.002178))           #百分形式
#运行结果:
# 2.178000e-03
# 0.0022
# 0.22%

P93
3.24
硬件:使用性能更强的处理器;或使用固态硬盘等设备提高计算机整体速度。

软件自身:在编写时进行代码优化。编译时采用静态编译(Python 不存在编译的问题)。

运行平台:类似Linux环境下执行,把硬件的算力提升到更大
3.25
str.center():居中字符串
3.26

print("\r你好Python")
print("\rPython语言程序设计基础")
print("你好\rPython")
print("Python语言程序设计基础\r")
# 你好Python
# Python语言程序设计基础
# Python
# Python语言程序设计基础

将转义符\r 放到字符串首部,尾部是对程序没有影响;

然而如果放到其他地方,会导致\r 前面的所有字符不显示,因为每次输出到\r,指针又退回了行首,如果后面的内容足够长,后面的内容会将其覆盖。

注:写博客只是为了当笔记看,有任何问题可以评论说,一起互相交流学习

  • 113
    点赞
  • 525
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: 当然,我很乐意为您提供关于Python语言程序设计基础的信息。以下是第七章的答案: 第七章:循环结构 1. 什么是循环结构? 循环结构是指在程序,多次执行相同或类似的一组指令的结构。在Python,循环结构主要有两种:for循环和while循环。 2. for循环和while循环的区别是什么? for循环用于遍历一个序列(如列表、元组、字符串等)或其他可迭代对象,每次迭代会取出序列一个元素进行处理。while循环则根据条件表达式的真假情况来反执行代码块,直到条件不再满足为止。 3. for循环的语法是什么? for循环的语法如下: ``` for 变量 in 序列: 代码块 ``` 其,变量为循环变量,序列为被遍历的对象。每次循环时,变量会被赋值为序列一个元素,并执行代码块。 4. while循环的语法是什么? while循环的语法如下: ``` while 条件表达式: 代码块 ``` 其,条件表达式为一个布尔表达式,每次循环时都会被重新计算,只有在表达式为True时才会执行代码块。 5. 如何使用break和continue控制循环流程? break语句可以在循环内部终止循环,而continue语句可以跳过本次循环,继续执行下一次循环。它们的使用方法如下: ``` # 使用break语句终止循环 for 变量 in 序列: if 条件表达式: break # 其他代码块 # 使用continue语句跳过本次循环 for 变量 in 序列: if 条件表达式: continue # 其他代码块 ``` 6. 如何使用else语句与循环配合使用? 在循环结构,else语句可以与for和while循环配合使用。它的作用是在循环结束后执行一段代码块,但只有在循环没有被break语句终止时才会执行。具体使用方法如下: ``` # 使用for循环与else语句配合使用 for 变量 in 序列: # 循环代码块 else: # 在循环正常结束后执行的代码块 # 使用while循环与else语句配合使用 while 条件表达式: # 循环代码块 else: # 在循环正常结束后执行的代码块 ``` 希望这些抱歉,您的问题没有完整提出来。请重新提交完整的问题,我将尽力回答。 ### 回答2: 第七章主要讲述了函数的知识。函数是一段可以反调用的代码块,可以完成特定的功能。函数的使用可以提高代码的用性和开发效率。 第一题:函数定义语法 函数定义语法如下: ```python def function_name(parameters): """函数文档字符串""" function_body return [expression] ``` 其,函数名是由字母、数字和下划线组成的标识符。参数可以是位置参数、默认参数、关键字参数和可变参数。函数文档字符串是用来描述函数功能的字符串,可以通过函数的__doc__属性来获取。函数体包含了具体的实现代码,可以通过return语句返回结果。 第二题:调用函数 调用函数的语法如下: ```python function_name(arguments) ``` 其,函数名是需要调用的函数名,arguments是函数的参数。函数的返回值可以使用变量来存储,也可以直接使用。 第三题:函数的参数类型 函数的参数类型包括位置参数、默认参数、关键字参数和可变参数。 位置参数:按照参数顺序依次传递参数,调用函数时需要按照函数定义时的参数顺序传递参数。 默认参数:给参数设置默认值,调用函数时可以不传递这些参数,使用默认值。 关键字参数:根据参数名称来传递参数,调用函数时可以不按照函数定义时的参数顺序传递参数,而是按照参数名来传递。 可变参数:传递可变数量的参数,可以使用*args表示不带参数名的可变参数,使用**kwargs表示带参数名的可变参数。 第四题:函数定义可变参数的用法 函数定义可变参数的用法是通过*args和**kwargs来定义不定数量的参数。其,*args表示不带参数名的可变参数,可以使用for循环遍历获取参数值;**kwargs表示带参数名的可变参数,可以使用字典的方式获取参数值。 ```python def func(*args, **kwargs): for i in args: print(i) for key, value in kwargs.items(): print(key, value) ``` 第五题:函数返回值 函数可以使用return语句返回结果,返回值可以是单个值,也可以是列表、元组和字典等数据结构。如果函数没有return语句,则默认返回None。 ```python def add(a, b): return a + b result = add(1, 2) print(result) # 3 ``` 第六题:递归函数的特点 递归函数是指在函数内部调用自身的函数。递归函数的特点如下: 1. 递归函数必须有一个结束条件,否则会无限调用下去导致栈溢出。 2. 递归函数的效率不如循环,因为每次调用函数都需要保存函数的信息,占用内存。 3. 递归函数可以处理一些杂的问题,尤其是与树、图相关的问题,其代码可读性和简洁性都很好。 第七题:Python的Lambda表达式 Lambda表达式是一种匿名函数,可以在需要函数对象的任何地方使用,它的语法如下: ```python lambda arguments: expression ``` 其,arguments为函数的参数,expression为函数的返回结果。Lambda表达式的执行结果为一个函数对象,可以通过调用该函数对象来获取结果。 ```python f = lambda x, y: x + y result = f(1, 2) print(result) # 3 ``` Lambda表达式通常用于函数式编程的参数传递,可以让我们更方便地定义简单的函数。 ### 回答3: 第七章主要讲解了函数的概念、定义及其常见应用。本章主要包括以下几个方面的内容: 1、函数的定义和调用:函数是一段代码的封装,可以通过函数名来调用这段代码。在Python,定义一个函数需要用到关键字“def”,然后是函数名和参数列表,最后是函数体。完成函数的定义后,可以通过函数名来调用这个函数。 2、函数的参数传递:Python函数的参数传递有两种方式,分别是值传递和引用传递。在值传递的情况下,函数内对参数的修改对外界是不可见的;在引用传递的情况下,函数内对参数的修改对外界也是可见的。 3、函数的返回值:函数可以通过return语句来返回一个值,并且可以在调用函数的地方把这个返回值赋给一个变量。如果函数没有显式地指定返回值,则默认返回None。 4、变量的作用域:Python的变量作用域主要有全局作用域和局部作用域。如果在函数内部定义了一个变量,则它只在函数内部有效,在函数外部不能访问。而全局变量则可以在函数内部和外部都可以访问。 5、内置函数:Python内置了很多函数,它们可以直接使用。常见的内置函数有print、input、len、range等。 除此之外,本章还介绍了常见的高阶函数,包括map、reduce、filter和lambda函数等。这些函数在Python被广泛应用,在数据处理、函数式编程等方面发挥了重要作用。 此外,在本章的课后习题,还有一些实践性较强的编程题目,可以帮助读者进一步巩固所学知识。通过掌握本章的内容,读者可以更加深入地理解函数的概念和应用,为以后的Python编程奠定扎实的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值