《从问题到程序:用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

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf