零基础学编程005:打印一行复利数据

问题

上次文章《集成开发环境IDE》里留了一道练习题:

如何用Python打印这篇枯燥的《复利数据表》: (1+0.01) ^ 1 = 1.01 (1+0.01) ^ 2 = 1.02 (1+0.01) ^ 3 = 1.03 ... ... (1+0.01) ^ 364 = 37.41 (1+0.01) ^ 365 = 37.78

怎样解题

初学者完成这样的任务还是相当有难度的,但不要紧,做练习的过程就是学习并理解编程思维的最有效手段。

记得有一位黑客推荐过《怎样解题》这样一本书,写程序与解数学题有相似之处。遇到一个复杂的问题时,首先要将问题分解和简化,然后逐步逼近最终的问题。以后在编程的过程中,还要学习算法和数据结构都是为了掌握这些解题的思路和技巧。当了解的定式越来越多后,编程的思路就越开阔。

简化

比如上面的问题,总共有365行数据,我们只需要会打印其中的一行,再按照这种思路打印其它364行即可。这里随便取一行,假设是第3行。现在的问题就变为:如何打印第3行?

(1+0.01) ^ 3 = 1.03

这样问题是不是简化了许多?

进一步将问题分解

(1)输出等号左侧内容

根据等号,可以拆为两个部分,左边就是一串普通的文本。在最早的《Hello World》里就学过了,这里复习一下:

print( "(1+0.01) ^ 3" )

注意这里用的是Python 3的语法,在print后面必须有小括号,引号内的内容会原封不动地输出。

(2)输出等号右侧内容

在《Hello World》这一篇文章里介绍过计算2**10000,即2的1万次方,而这里我们只是计算1.01的3次方,简单吧?代码就是这样的:

print( 1.01**3 )

最后,把左侧、等号、右侧放在一起用print输出,即:

print( "(1+0.01) ^ 3", "=", 1.01**3 )

初学者一定要在集成环境IDLE中把这行代码敲上一遍,因为标点符号也不能错!执行的效果:

是不是与我们期望的结果已经很像了?只不过1.0303010000000001实在是太太太精确了,而我们只想显示两位小数1.03就够用了。这个问题暂时超过了我们当前正在学习的内容,以后再说。

逼近最终的问题

我们现在已经能够输出第3行了,我们再照这样把其它364行写出来?思路是对的,但计算机擅长做重复的事,可以用循环语句来彻底解决这个问题。只需要加一行语句即可,而不用辛苦地抄上364遍。敬请关注以后的内容。

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2016-12-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习思考者

matlab 数据预处理及常用操作

img_out = repmat(img,[10000 1]);%生成一个1万行的img矩阵 img=zeros(1,1024); %zeros生成为0的矩...

1919
来自专栏十月梦想

js实现随求抓取样本数据(批量或者样本元素)

马上期末汇报学期项目了,这个居然要随机点名汇报,突然想起是否可以使用筛选数据,批量抽取样本中数据进行排序!

752
来自专栏Python攻城狮

Python数据科学(一)- python与数据科学应用(Ⅰ)1.数据科学简介与应用2.Python与数据科学3.安装Anaconda4.使用Jupyter notebook5.Python 3 语法

数据科学主要以统计学、机器学习、数据可视化以及(某一)领域知识为理论基础,其主要研究内容包括数据科学基础理论、数据预处理、数据计算和数据管理(来自百度百科)。

964
来自专栏Crossin的编程教室

【每周一坑】生成词云

来看本周的题目。 使用 wordcloud 生成词云图 ? 在 Python 中有许多有趣的库可供学习, wordcloud 必须得算一个,本周我们的题目就是,...

35311
来自专栏老秦求学

算法三之归并排序

快速排序,应用到分治法。 下面先了解一下什么是分治法? 分治法,顾名思义,分而治之。先将问题进行分解,然后将分离的问题进行求解,最后将所有分离的解进行合并,得到...

33213
来自专栏程序生活

计算两个字符串相(或句子)似度的方法1 编辑距离2 余弦相似度3 FuzzyWuzzy

3363
来自专栏申龙斌的程序人生

310 BTC谜题的第二关详解

再来仔细看一下那张价值1400万的比特币谜图,里面有5条线段,另外还散乱地分布着几个字母和数字。

722
来自专栏数说工作室

IML的条件与循环 | 【SAS Says·扩展篇】IML:3.编程

【SAS Says·扩展篇】IML 分6集,回复【SASIML】查看全部: 入门 | SAS里的平行世界 函数 | 函数玩一玩 编程 | IML的条件与循环 ...

3238
来自专栏Python小屋

使用Python编写数独游戏自动出题程序

数独是一个很好玩的游戏,可以锻炼推理能力。下面的代码可以自动生成数独游戏题目。 from random import shuffle, randrange de...

2586
来自专栏帮你学MatLab

《Experiment with MATLAB》读书笔记(八)

读书笔记(八) 这是第八部分指数函数 复制代码即可运行 %% 指数函数与近似导数 a = 2; t = 0:.01:2; h = ...

27210

扫码关注云+社区