第二章
软件的如果没有一种系统的方法将会变得非常可怕。
2.1 软件开发流程
阐述需求:弄清楚到底要解决什么问题。
确定计划:明确程序能完成什么任务,简单来说就是输入input与输出output是什么,
以及他们之间的关系。
建立构思:阐述程序架构,设计算法。
实施构思:根据构思将算法用语言实现,本书用Python
测试调试:
维护程序:
2.2 一个实例:温度转换程序
我们来考虑下面这个案例:小影对摄氏度不熟悉,而是习惯看华氏度,她希望可以编写一个软件帮她自己动解决这个问题,于是这个案例可以按如下过程解决。
阐述需求:小影不熟悉摄氏度,而希望看到华氏度。
确定计划:输入为摄氏度,输出为华氏度,关系为:F=(9/5)C+32
建立构思:算法的基本模式:Input,Process,Output(IPO),程序要求用户输入数据,然后
经过转换生成输出,并在电脑上显示。
实施构思:往往并不立即用特定语言实现,而是先写成伪码再装换成代码。
伪码:
Input the temperature in degrees Celsius (call it celsius)
Calculate fahrenheit as 9/5 celsius + 32
Output Fahrenheit
代码:
# convert.py
# A program to convert Celsius temps to Fahrenheit
# by: Suzie Programmer
def main():
celsius = input("What is the Celsius temperature? ")
fahrenheit = 9.0 / 5.0 * celsius + 32
print "The temperature is", fahrenheit, "degrees Fahrenheit."
main()
2.3 程序的元素
1.名称
模块,函数,或变量的名称叫做标识符,标识符必须以字母或下划线开头,Python对大小写敏感,注意以下保留字
2.表达式
变量要被赋值然后才能用于表达式中,否则会提示Name Errot。运算符中,+,-,*,/与c语言相通,幂函数为**。注意在表达式中空格可有可无,不会影响正确性。请注意,9/5与9.0/5.0不同,后面会提到。
2.4 输出语句
Python有一系列严格的语法和语义规则,以print语句为例:
Print<expr>
Print<expr>,<expr>,…,<expr>
Print<expr>,<expr>,…,<expr>,
总之,一个print语句包括print关键字和一系列由逗号连起来的表达式。注意若以逗号结尾,则下一句print输出会紧接在上一句结尾处。
2.5 赋值语句
1.简单赋值
<variable>=<expr>
2.输入赋值
<variable>=input(<prompt>)
习惯在prompt的结尾加一个空格,使得用户输入是不会紧贴在冒号后面:
x=imput(“please input a number: ”)
3.同时赋值
<var>,<var>,…,<var>=<expr>,<expr>,…,<expr>
同时赋值是指各个表达式的赋值是同时发生的,比如,在数据交换时,要让x,y值交换,可以用:
temp=x
x=y
y=temp
但是在Python中,只需一句简单的同时赋值语句:
x,y=y,x
因为两个表达式同时执行赋值,因此不会造成覆盖。
同时赋值还用在输入语句中,如:
x,y=input(“please input two numbers: ”)
输入时,只要将个输入值用逗号隔开即可。
2.6 有限循环
一个Python的for循环有以下形式:
fo r<var> in <sequence>:
<body>
body循环体可以是任意数量的语句,这些语句的起始与结束由for语句下一行开始的tab符标志。
sequence序列是由方括号括起来的一系列值,值的数量决定循环次数,如:
for i in [1,3,5,7]:
print i
一个有趣的事情是,循环会改变程序的控制流,通常我们认为计算机串行执行序列,但是循环语句会使Python回头重复执行,这种循环语句叫做控制结构(control structures),程序员常用流图(flowcharts)表示控制结构,比如for的流图