零基础学编程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 条评论
登录 后参与评论

相关文章

扫码关注云+社区