《从问题到程序:用Python学编程和计算》——练习-程序员宅基地

技术标签: python  

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

练习

概念和理解

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

在此之后,下面表达式将给出什么结果:

length * 4
(length + 2) * width
something * 5
something  int(width  2)
3.   请用双引号形式写出下面的字符串:
a) '"I'm fine", he said.'
b) """"Is this
    the book
    of you?", she asked."""
4.   请分别写出对应于下面三个句子的Python字符串字面量,包括所有引号:

"He said 'I do not know that man'", Nancy added.
We'll go to there soon.
"Couldn't you give me a hand?"

5.   首先自己分析下面逻辑表达式的值,再用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
6.   在下面表达式的计算过程中,哪些地方将发生类型转换,各是从什么类型转换到什么类型,表达式计算的结果是什么?
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
7.   下面字符序列中哪些不是合法的变量名:
-abc __aa for pp.288 to be
IBM/PC ms-c #micro m%ust tihs
while r24_s25 __a__b a"bc _345
8.   用Python系统的一个方便的地方就是很容易做试验。请设计一些试验,确认正文中的一个说法:计算中涉及的整数越大,计算进行得越慢。
9.   请通过试验,设法确定Python能表示的最小和最大的正浮点数。其中最小的浮点数要求给出准确的结果,最大浮点数给出10位十进制有效数字的结果。
10.   选择问答题:

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

编程练习

1.   用Python计算下面各个表达式的值:
image

2.   利用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日在德国柏林创造的,按其速度环绕地球赤道一周需要多少时间?从地球跑到月亮呢?从地球跑到太阳呢?(请按天/小时/分/秒给出结果。)

3.   利用Python的math包检验一些三角恒等式。采用具体的数值检验,计算等式两边的值和它们的差。可以在代码里写好具体数值,也可以通过人输入。可以考虑下面写法,以便执行时看到具体情况:
a = ... # 计算恒等式左边的值
b = ... # 计算恒等式右边的值
print(a, b, a - b)
4.   铁的比重为7.86,金的比重为19.3。请写一个程序,给它圆球的半径,它计算并输出具有该半径的铁球和金球的重量。
5.   试验正文中求二次方程根的程序,求几个二次方程的根。
6.   基于正文中求二次方程根的程序写一个程序,它能用于验证初等代数给出的二次方程求根公式是正确的,求根程序给出的结果误差不大。
7.   写一个简单程序,它执行时输出一些有名的英文句子或诗。或输出李白的“望庐山瀑布”和另外几首你喜爱的唐诗宋词。(请注意,字符串引号必须是英文引号。)
8.   如果四边形四个边的长度分别为a、b、c、d,一对对角之和为2α,则其面积为:
image

9.   修改已知四边长求四边形面积的函数,增加对各种参数错误情况的检查和处理(如返回值0),用各种实例数据检查你的函数能否检查出所有可能出现的错误情况。总结一下你定义的函数有哪些不足之处,应从中吸取哪些教训?
10.   请定义下面函数:

a)已知立方体的边长,求其表面积;
b)已知圆柱体的底半径和高,求其体积,求其表面积;
c)已知圆球半径,求其体积,求其表面积。

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

2)重做同一个程序,先定义一个函数求直径为x比重为y的圆球的重量,再写程序调用该函数完成所需工作。请比较这一程序与不用函数的程序,它们的长度和易出错程度。假设现在要求修改所用圆周率的精度,考虑用两种方式写程序的修改难度。
3)请写程序,求出边长为100mm和150mm的金、银、铜、铁、锡立方体的重量。你可以利用前面的程序吗?是否很容易修改前面程序,完成这一计算?比较不用函数的解法和使用函数的解法在易修改和重复使用方面的效用。

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

31.   在计算机上试验本章正文中的一些程序。观察程序运行的情况。对它们做一些你自己想到的修改或扩充,运行它们,设法理解和解释程序的行为。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33875564/article/details/90528639

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签