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

相关文章

来自专栏Crossin的编程教室

【每周一坑】乒乓数

刚从假期回来,又要迎接周末,各位看官想必都很辛苦,所以本周每周一坑为大家准备一道简单的甜点题目,本题取材于伯克利大学 CS61 课程 homework02。 求...

2536
来自专栏tkokof 的技术,小趣及杂念

'24点'编码小感

之前看到了一道四则运算相关的程序题,遂而想到了24点游戏,觉得有趣,就想自己随手编写了一个,起初觉得应该比较简单,但实际的路途却并不平坦~

712
来自专栏算法channel

玩转Pandas,让数据处理更easy系列6

玩转Pandas系列已经连续推送5篇,尽量贴近Pandas的本质原理,结合工作实践,按照使用Pandas的逻辑步骤,系统地并结合实例推送Pandas的主要常用功...

772
来自专栏python学习路

一、代码风格 1、假定你的代码需要维护2、保持一致性3、考虑对象在程序中存在的方式,尤其是那些带有数据的对象4、不要做重复工作5、让注释讲故事6、奥卡姆剃刀原则1、简洁的规则2、文档字符串3、空行4、

刚开始学的时候就要注意编码规范了,所以整理了一下,以便养成一个编码好习惯。不然以后真的不好改。 代码被读的次数远大于被写的次数。 作为一名程序员(使用任何语言)...

2235
来自专栏Golang语言社区

谁发明了Go?

谁发明了Go Go语言的设计和实现工作是由Google的一个研发小组以及来自世界各地的大量贡献者共同完成的。 动机 为什么要发明一门新语言? 在当今世界,编程语...

2984
来自专栏智能算法

一个程序员怎么才算精通python

我会先给出我对精通Python的理解,然后给出一些Python中有难度的知识点。如果大家在看完我这篇回答之前,已经充分理解了我列出的各个知识点,那么,我相信你...

4229
来自专栏云飞学编程

python实战,中文自然语言处理,应用jieba库来统计文本词频

2. 全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;

661
来自专栏云时之间

NLP入门之形式语言与自动机学习(一)

任何一门科学都有其自身的理论基础,计算机科学也是这样.大家现在看看计算机的技术变化的很快,现在我们很流行的框架和工具很有可能几年内就会变成过时的东西.但是计算机...

3526
来自专栏前端架构

Array.prototype.sort 在不同浏览器中的差异和解决办法

     * chrome 的排序不能说是排错了。因为我们是对分数进行排序,单看分数这一列完全没有错误。

802
来自专栏数说工作室

统计师的Python日记【第4天:欢迎光临Pandas】

本文是【统计师的Python日记】第4天的日记 回顾一下: 第1天学习了Python的基本页面、操作,以及几种主要的容器类型; 第2天学习了python的函数、...

3599

扫描关注云+社区