零基础学编程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 ---
- 外媒:域名Covermate.com超35万终端交易
- 移除WordPress 管理后台的主题编辑功能
- 百度区域链开放平台“BaaS”启用了二级子域名chain.baidu.com
- Qt界面UI之QML初见(学习笔记四)
- 清新唯美的jQuery天气预报插件(网页天气预报插件)
- 32和64位的CentOS 6.0下 安装 Mono 2.10.8 和Jexus 5.0
- 跨平台的 .NET 运行环境 Mono 3.2 新特性
- Ibatisnet Quick Start
- 常见的3种Hive参数配置方法
- 6杂域名超16万元结拍
- GridView控件使用经验
- WordPress登陆文件wp-login.php添加相关参数,安全有保障
- WordPress在RSS Feed 中输出自定义特色图像(缩略图)
- 单拼域名can.com以高达99.2万元成交!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 接口自动化框架pyface详细介绍
- JVM字节码与Java代码层调优
- kubernetes(十四) 基于kubernetes的jenkins持续集成
- 2020测试工具索引
- 测试同学动手搭个简易web开发项目
- kubernetes(十五) kubernetes 运维
- JVM层GC调优(下)
- pytest封神之路第一步 tep介绍
- kubernetes(十六) k8s 弹性伸缩
- Mockito鸡尾酒第一杯 Java单测Mock
- kubernetes(十七) Helm V3 入门到放弃
- Dockerfile文件万字全面解析
- Go测试开发(一) 怎么写Go代码
- kubernetes(十八)集群网路
- Nginx性能监控与调优