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

相关文章

来自专栏码匠的流水账

java降低竞争锁的一些方法

本文介绍一下提升并发可伸缩性的一些方式:减少锁的持有时间,降低锁的粒度,锁分段、避免热点域以及采用非独占的锁或非阻塞锁来代替独占锁。

12710
来自专栏Java呓语

策略模式(分离算法,选择实现)

如果您是第一次阅读我的设计模式系列文章,建议先阅读设计模式开篇,希望能得到您宝贵的建议。

11230
来自专栏小小挖掘机

数据城堡参赛代码实战篇(二)---使用pandas进行数据去重

小编们最近参加了数据城堡举办的“大学生助学金精准资助预测”比赛,分组第19名的成绩进入了复赛,很激动有木有!在上一篇文章中,小编带你使用pandas并结合官方给...

38680
来自专栏吉浦迅科技

DAY37:阅读不同存储器的修饰符

14140
来自专栏Python爬虫与算法进阶

爬虫之全站爬取方法

其实这个很好理解。比如说知乎,一个大V有100W粉丝,从这个大V出发,抓取粉丝的粉丝,一直循环下去。(可能是个死循环)

46030
来自专栏Python研发

设计模式 -- 常用设计模式

                                  ——可复用面向对象软件的基础

34110
来自专栏CSDN技术头条

写出优质Java代码的4个技巧

我们平时的编程任务不外乎就是将相同的技术套件应用到不同的项目中去,对于大多数情况来说,这些技术都是可以满足目标的。然而,有的项目可能需要用到一些特别的技术,因此...

24470
来自专栏Android机动车

如何用五点教会你Python高效编程

我已经使用Python编程有多年了,即使今天我仍然惊奇于这种语言所能让代码表现出的整洁和对DRY编程原则的适用。

11030
来自专栏企鹅号快讯

Python 相较于Java 而言,有什么优势?

最近在后台,有很多的同学私聊我说,Python和Java.,哪个具有前景呢?今天我们就来简单的讲一下这两者的区别: 我认为C, Java跟Python都是非常成...

27260
来自专栏编程

编写高质量代码的思考

前言 最近在看《代码大全》,可以说是一本软件开发的百科全书,特别厚,但是干货也很多。平时写代码,代码规范是一个最低的要求(很多老代码连最低要求都达不到),为什么...

26360

扫码关注云+社区

领取腾讯云代金券