《从问题到程序:用Python学编程和计算》——2.12 练习

简介:

本节书摘来自华章计算机《从问题到程序:用Python学编程和计算》一书中的第2章,第2.12节,作者:裘宗燕 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.12 练习

概念和理解

  1. 复习下面概念:表达式,语句,赋值,控制结构,函数,提示符,值,求值,语法错误,单词,整数,浮点数,运算符,一元运算符,二元运算符,优先级,结合顺序,字面量,语法错误,续行,续行符,尾数,指数,精度,溢出,数值计算,误差,近似计算,对象,类型,整型,浮点型,类型名,数值类型,内置类型(标准类型),类型转换,强制类型转换,内置函数(标准函数),程序包,函数调用,实际参数(实参),返回值,程序包,导入,字符串,下标,下标越界,字符串长度,拼接,切片,变量,标识符,关键字,赋值语句,赋值,赋值符,编程,顺序计算,脚本,文件,扩展名py,输出函数,问题和实例,提示串,程序崩溃,注释,关系表达式,逻辑表达式,条件语句(分支语句,if语句),组合语句中的段,段的头部,段的体,结构的递归性,直线型程序,执行路径,分支程序,重复计算,循环语句(循环结构),迭代器,循环头部,循环体,迭代,牛顿迭代法,break语句,continue语句,三种计算流程模式,值抽象,函数抽象,函数定义,形式参数(形参),函数返回值,函数调用,实际参数(实参,实参表达式),扩展赋值符,条件表达式,
  2. 假定首先做下面的赋值:
length = 2.5
width = 4
something = "."
在此之后,下面表达式将给出什么结果:
length * 4
(length + 2) * width
something * 5
something * int(width * 2)
  1. 请用双引号形式写出下面的字符串:
    a) '"I'm fine", he said.'

b) """"Is this

the book
of you?", she asked."""
  1. 请分别写出对应于下面三个句子的Python字符串字面量,包括所有引号:
"He said 'I do not know that man'", Nancy added.
    We'll go to there soon.
    "Couldn't you give me a hand?"
  1. 首先自己分析下面逻辑表达式的值,再用Python系统检验:
    True and not True
    False or not False and False or not True or not False
    3 > 2 and 5 <= 4 or 4 > 3 and 7 < 9
  1. 在下面表达式的计算过程中,哪些地方将发生类型转换,各是从什么类型转换到什么类型,表达式计算的结果是什么?
    a) 3 * (2 + 4.5) - 12 + 44

b) 3 int(sqrt(34)) - sin(6) 5 + 3.56
c) cos(2.5 + 4) - 6 * 27 + 1526 - 2.4

  1. 下面字符序列中哪些不是合法的变量名:
    -abc __aa for pp.288 to be

IBM/PC ms-c #micro m%ust tihs
while r24_s25 __a__b a"bc _345

  1. 用Python系统的一个方便的地方就是很容易做试验。请设计一些试验,确认正文中的一个说法:计算中涉及的整数越大,计算进行得越慢。
  2. 请通过试验,设法确定Python能表示的最小和最大的正浮点数。其中最小的浮点数要求给出准确的结果,最大浮点数给出10位十进制有效数字的结果。
  3. 选择问答题:

        a)表达式2 ** 2 ** 3的值是(    )。

    A. 128 B. 64 C. 256 D. 512

        b)表达式6 ** 2 / 9 * 2的值是(    )。

    A. 2 B. 8 C. 2.0 D. 8.0

        c)下面哪些标识符可以用作变量名(    )。

    A. final B. global C. int D. print

        d)下面哪些是Python关键字(    )。

    A. and B. while C. int D. math

        e)下面哪些语句可能导致退出循环(    )。

    A. return B. continue C. import D. break

        f)设x和y是整数,下面表达式中等价于x != y的有(    )。

    A. not(x == y) B. x > y and x < y

C. x > y or x < y D. x >= y or x <= y

    g)下面哪个语句在Python中不合法(    )。

A. x = y = z = 1 B. x = (y = z + 1)
C. x, y = y, x D. x += y

    h)对下面系统输出的正确解释是(    )。
>>> print(1.8 - 0.6*3 == 0)"
False

A. 等于运算符右边应该写 0.0。 B. print不能输出逻辑结果。
C. 浮点数计算有误差。 D. Python系统的实现有问题。

  1. 设s的值是字符串"1234567890",请写出下面字符串切片的值( )。
    A. s[:30:2] B. s[:-1:-2] C. s[-4:] D. s[-1:1:-3]
  2. 请借助于各种字符串操作,用最简洁的方式构造出一个字符串,使得用print输出它将得到一个8×8个格子的棋盘(没有黑白填充的国际象棋棋盘)。
  3. 数学知识告诉我们,对于充分大的正整数n,一定有 。请利用Python找出使这个不等式成立的最小正整数。
    编程练习
  4. 用Python计算下面各个表达式的值:

    92a8ff93c467f6917a5e912632882ffe5bec7339

    1. 利用Python计算:

      a)半径3.4的圆球的体积;
      b)底半径2.5,高3.24的圆锥体的体积;
      c)一个中空圆柱体,外径3.45,内径2.33,高4.6,求其体积;
      d)假定一本书34.5元,目前网上书店打85折,邮费按公斤计每公斤1.8元,不足一公斤按一公斤计费,每本书0.3公斤,问买24本书总共需多少元;
      e)目前百米世界纪录是由博尔特于2009年8月17日在德国柏林创造的,按其速度环绕地球赤道一周需要多少时间?从地球跑到月亮呢?从地球跑到太阳呢?(请按天/小时/分/秒给出结果。)
    2. 利用Python的math包检验一些三角恒等式。采用具体的数值检验,计算等式两边的值和它们的差。可以在代码里写好具体数值,也可以通过人输入。可以考虑下面写法,以便执行时看到具体情况:
    a = ... # 计算恒等式左边的值
    b = ... # 计算恒等式右边的值
    print(a, b, a - b)
    
    1. 铁的比重为7.86,金的比重为19.3。请写一个程序,给它圆球的半径,它计算并输出具有该半径的铁球和金球的重量。
    2. 试验正文中求二次方程根的程序,求几个二次方程的根。
    3. 基于正文中求二次方程根的程序写一个程序,它能用于验证初等代数给出的二次方程求根公式是正确的,求根程序给出的结果误差不大。
    4. 写一个简单程序,它执行时输出一些有名的英文句子或诗。或输出李白的“望庐山瀑布”和另外几首你喜爱的唐诗宋词。(请注意,字符串引号必须是英文引号。)
    5. 如果四边形四个边的长度分别为a、b、c、d,一对对角之和为2α,则其面积为:

      39e210fd93633ee485bc38dd285c8ebe23ef5f00

      其中 。定义函数计算任意四边形的面积。设有一个四边形的四条边长
      分别为3、4、5、5,一对对角之和为145°,请计算其面积。
      1. 修改已知四边长求四边形面积的函数,增加对各种参数错误情况的检查和处理(如返回值0),用各种实例数据检查你的函数能否检查出所有可能出现的错误情况。总结一下你定义的函数有哪些不足之处,应从中吸取哪些教训?
      2. 请定义下面函数:

        a)已知立方体的边长,求其表面积;
        b)已知圆柱体的底半径和高,求其体积,求其表面积;
        c)已知圆球半径,求其体积,求其表面积。
      3. 请定义函数distance(x1, y1, x2, y2),它计算坐标分别为x1、y1和x2、y2的两个平面点之间的距离。
      4. 定义函数:double tmax(double, double, double),它返回三个参数中最大的一个。写一个主函数试验各种参数情况。
      5. 查看有关公式,写求解并输出一元三次方程的根的函数。
      6. 分析本章正文中给出的求二次方程根的函数,看它缺乏对哪些特殊情况的处理。补充这些处理,在需要时输出适当的信息,使之成为一个更完整的函数。请用各种特殊情况和一般情况测试你完成的函数。
      7. 请写程序输出不大于n的所有不能被7整除但能被3整除的自然数。考虑用两种不同的方法完成这一工作。
      8. 请写一个程序,从a开始到b按步长d逐一检查math包中sqrt的计算结果,看看其返回值sqrt(x)的平方与x的差。输出一个表格显示有关信息。先考虑固定的a、b和d,而后考虑由输入得到这几个基本参数。
      9. 写一个程序,从a开始到b按步长d比较math包的求平方根函数和课堂给出的求平方根程序,在一行里输出这两个函数值和它们之差的绝对值,并在最后输出误差的平均值。请以比较清晰的方式输出。先考虑固定的a、b和d,而后考虑由输入得到这几个基本参数。
      10. 请写一个程序,其功能是在一行里输出0到90°之间(包括两端点)每隔5°的角度值以及其正弦、余弦函数值。
      11. 在中国,评价汽车的油耗用每100公里耗油升数作为指标,在英美采用的指标是每加仑行驶的英里数(mpg)。请定义两个函数mpg_to_lit100和lit100_to_mpg,它们分别完成两个方向的数据转换。
      12. 法律规定每周5个工作日,每天工作时间为8小时。此外,工作日超时工作工资为正常工资的150%;休息日工资为正常工资的200%。请查出你所在地的最低小时工资额,并定义一个函数,计算工作人员的一周工资。
      13. 1)不用函数,直接写一个主程序计算并输出直径为100mm和150mm的金、银、铜、铁、锡球的重量(以kg为单位输出)。

        2)重做同一个程序,先定义一个函数求直径为x比重为y的圆球的重量,再写程序调用该函数完成所需工作。请比较这一程序与不用函数的程序,它们的长度和易出错程度。假设现在要求修改所用圆周率的精度,考虑用两种方式写程序的修改难度。
        3)请写程序,求出边长为100mm和150mm的金、银、铜、铁、锡立方体的重量。你可以利用前面的程序吗?是否很容易修改前面程序,完成这一计算?比较不用函数的解法和使用函数的解法在易修改和重复使用方面的效用。
      14. 请查银行1年定期存款的利率和5年定期存款的利率。假定现在存入100元钱,存款到期后立即将利息与本金一起再存入。请写程序计算按每次存1年和按照每次存5年,共存50年后两种存款方式的得款总额。对两种情况每隔5年输出一次当时的总金额。
      15. 写一个函数,它以两个电阻的值作为参数,求出并联的电阻值。
      16. 费马大定理说对于 ,不存在实数a,b,c使得 。请定义一个函数check_fermat(a, b, c, n),当上述等式成立时它输出Fermat is wrong,否则输出I can not find that Fermat is wrong。再写一段驱动函数,它反复输出提示符,读入数据后调用上面函数,检查费马大定理是否正确。
      17. 参考第2题的(d)项,定义一个函数,对任何书籍单价及其重量(及邮费),以及打折率和本数,计算出总价。
      18. 请定义一个函数count(s, c),它检查字符串s中单个字符c(用只包含一个字符的字符串表示)出现的次数,返回这个次数。
      19. 1939年美国作家Ernest Vincent Wright写了一本超过5万个词的小说Gadsby,其中没用一次字母e(注意,e是英文中使用最多的字母)。请定义函数has_no(s, c),它检查字符串s里是否不出现字符c,如果没有就返回True,否则返回False。
      20. 一个单词是字符串里连续的一段非空白字符。请定义函数has(s, w),它检查字符串s里是否出现单词w,如果出现就返回True,否则返回False。注意,这里你可能需要用到字符串长度、字符串切片的操作。只能使用本章介绍的几个字符串操作。
      21. 英文句子里用空格分隔不同的英文单词。请写一个程序,它输入一个句子,按从左到右的顺序确定该句子里的一个个单词,分别输出,一行输出一个单词。写程序时只能使用本章介绍的字符串操作。
      22. 请编写一个程序,要求用户输入一个大写英文字母,程序根据输入字符在字母表里的顺序位置n输出一个高度为n的金字塔图形,使最下一列的中间字母是用户输入的字母。例如,用户输入E时,程序将产生如下输出:

        A
          ABA
         ABCBA
        ABCDCBA
        ABCDEDCBA
        
      23. 在计算机上试验本章正文中的一些程序。观察程序运行的情况。对它们做一些你自己想到的修改或扩充,运行它们,设法理解和解释程序的行为。
相关文章
|
2天前
|
Python
【Python进阶(二)】——程序调试方法
【Python进阶(二)】——程序调试方法
|
2天前
|
Python
Python的全局变量作用于整个程序,生命周期与程序相同,而局部变量仅限函数内部使用,随函数执行结束而销毁。
Python的全局变量作用于整个程序,生命周期与程序相同,而局部变量仅限函数内部使用,随函数执行结束而销毁。在函数内部修改全局变量需用`global`关键字声明,否则会创建新局部变量。
9 2
|
4天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
19 5
|
5天前
|
消息中间件 程序员 调度
Python并发编程:利用多线程提升程序性能
本文探讨了Python中的并发编程技术,重点介绍了如何利用多线程提升程序性能。通过分析多线程的原理和实现方式,以及线程间的通信和同步方法,读者可以了解如何在Python中编写高效的并发程序,提升程序的执行效率和响应速度。
|
5天前
|
缓存 Shell 开发工具
[oeasy]python0016_在vim中直接运行python程序
在 Vim 编辑器中,可以通过`:!`命令来执行外部程序,例如`:!python3 oeasy.py`来运行Python程序。如果想在不退出Vim的情况下运行当前编辑的Python文件,可以使用`%`符号代表当前文件名,所以`:!python3 %`同样能运行程序。此外,可以使用`|`符号连续执行命令,例如`:w|!python3 %`会先保存文件(`w`)然后运行Python程序。这样,就可以在不离开Vim的情况下完成编辑、保存和运行Python程序的流程。
16 0
|
5天前
|
网络安全 Python
网安之python基础学习练习(2-3)
本篇博文是关于网络安全课程中Python编程的学习实践总结。分享关于两个练习题目及其解决方案。第一个题目要求用户输入姓名并选择一项武技,使用for循环和if判断实现。第二个题目是删除列表中特定值(如&#39;cat&#39;)的所有元素,作者展示了两种方法,包括列表推导式和常规循环删除。接下来,文章还介绍了如何编写一个函数,随机生成一副扑克牌(除大小王),并返回一张随机抽取的牌。
|
5天前
|
存储 网络安全 索引
网安之python基础学习练习(1)
本篇博文是关于网络安全课程中Python编程学习的总结,主要内容包括:1) 常见数据类型的回顾和应用,如数字(整数、浮点数、复数)、字符串、列表、元组、集合、字典和布尔类型;2) 数据类型的实例操作,展示如何创建和使用这些类型;3) 数值类型之间的加、减、乘、除和模运算;4) 列表和元组的索引访问;5) 字典的修改,如查看键和值,以及更新值。文章强调了基础知识的重要性,并以“自满必定失败,骄傲必定后悔”作为每日一言。
|
6天前
|
监控 开发者 Python
Python中记录程序报错信息的实践指南
Python中记录程序报错信息的实践指南
13 1
|
7天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
10 0
|
7天前
|
安全 数据安全/隐私保护 Python
Python的整型在计算中具有以下优势
Python整型提供任意精度整数计算,无溢出风险;支持多种算术运算,操作简便;作为不可变类型保证数据安全;能进行高级数学运算,并有NumPy等库加持,适合数值分析和科学计算。
16 0