设计一个程序
正确创建一个程序通常要经历5个阶段:
- 设计程序:根据需求对程序进行设计。
- 编写代码:采用诸如python这样的高级语言来编写代码。一个语言的语法明确规定如何使用关键字、运算符以及标点符号等诸如此类的事项。若程序员违反了这些规定,将会出现语法错误。
- 修正语法错误:在所有的语法错误和代码输入失误都修正后,程序就可以被编译并翻译成机器语言程序了(或者被解释器执行,这取决于所使用的语言)。
- 测试程序:一旦代码转换成可执行的形式,就需要对它进行测试以判断是否存在逻辑错误。(逻辑错误指那些不妨碍程序运行,但却会导致程序运行结果不正确的错误)
- 修正逻辑错误:如果程序运行结果不正确,就需要对代码进行调试排错(debug),即定位并修正程序中的逻辑错误。
算法:完成某个任务必须执行的一系列精心定义的逻辑步骤。 伪码:一种没有语法规则的非正式语言,既不能被编译,也不能被执行。(程序员只是用伪码来创建程序的模型或“框架”) 流程图:用来设计程序的另外一种工具。
- 终止符:出现在流程图的顶部和下部的椭圆,开始终止符表示程序的启动点,结束终止符表示程序的结束点。
- 输入输出符:平行四边形,它们表示程序中读取输入或显示输出的步骤。
- 处理符:它们表示程序中对数据进行某种处理的步骤。
- 箭头:表示程序流动的方向。
输入、处理与输出
计算机程序执行的处理通常分为以下三个步骤: 1.接收输入 2.对输入进行某种处理 3.产生输出
以薪酬计算程序的输入、处理与输出为例:
用print函数显示输出
print函数是python最基本的内置函数,它的主要功能是将输出显示在屏幕上。
字符串与字符串文本
字符串:被当作数据使用的字符序列称为字符串(string)。 字符串文本:出现在程序实际代码中的字符串。
字符串既可以用一对单引号(‘)括起来,也可以用一对双引号(")括起来。 若需要显示带有单引号或撇号的字符串文本,你就需要用双引号将字符串文本括起来。 若有显示带有双引号的字符串文本,你就需要用单引号将字符串文本括起来。 若文本同时包含单引号和双引号,就可以用三引号(’‘’)括起来。 三引号还可以用来将跨行编写的字符串括起来(单引号和双引号则不能)。
python允许在一次print函数中显示多项内容,只需用逗号将数据项分隔开即可。 print函数会自动在两个数据间打印一个空格,以便将它们分开。
print('abcdefg')
print("Kate Austen")
print("I'm here!")
print('Your assignment is to read "Hamlet" by tomorrow.')
print("""I'm reading "Hamlet" tonight.""")
print("""one
two
three""")
print("135","246")
注释
注释是位于程序不同位置的一些简短文本,用来解释相应位置程序段是如何工作的。 python中,注释前面必须放一个#号。 出现在代码行末尾的注释称为行末注释,它是专门解释所在行的的代码的。
print('abcdefg')
变量
程序是通过变量来访问和操纵存储器中的数据的。 变量是代表存储在计算机存储器中某个数值的名字。
使用赋值语句创建变量并使其引用一个数据:
age = 25
赋值语句的基本格式是:
variable = expression
等号(=)称为赋值运算符。variable是变量名,expression是一个值或能够产生一个值的代码。赋值语句中,被赋值的变量一定要出现在=运算符的左边。
width = 10
print(width)
当把变量作为一个参数传递给print函数时,不能使用引号括起来。
在变量被赋以某个值后,变量将一直引用这个值直到它被赋以新值为止。 当存储器中的数据不再被变量引用时,python解释器将通过一个所谓的垃圾收集机制来进行处理,自动的将它们移出存储器。
变量命名规则
- 不能使用Python的关键字作为变量名。
- 变量名不能有空格
- 第一个字符只能是a-z或A-Z的字母或下划线(_)。
- 第一个字符后面,可以使用a-z或A-Z的字母、0-9的数字或下划线(_)。
- 字母的大小写严格区分。即Team和team是两个不同的变量名。
除了上述规则,还应该选择能够表达变量用途的变量名。
由于变量名要反映出变量的用途,所以程序员常采用多个单词组合的变量名。因为变量名内不允许有空格,所以我们常采用以下两种方法来分隔单词:
数值数据类型和数值文本
直接写在程序代码中的数值称为数值文本。
- 数值文本是一个不带小数点的整数时,则它是int类型。
- 数值文本是带有小数点时,则它是float类型。
python内置的type函数可以判断一个数值的数据类型。
width = 10
print(type(width))
货币符号、空格以及逗号不能出现在数值文本中。
用数据类型str来存储字符串
变量在用某种类型的数据项赋值后,可以用其他类型的数据项重新赋值。
从键盘读取输入
Pyrhon语言内置的input函数来从键盘读取输入。 input函数从键盘上读取用户键入的一个数据,然后将该数据以一个字符串的形式,返回给程序。 通用格式为: variable = input(prompt) 其中prompt是一个显示在屏幕上的字符串,作用是提示用户输入数据,variable是引用用户从键盘上键入的这个数据的变量名。
name=input('What is your name?')
由于input函数不会在显示完提示后自动的显示一个空格,所以我们就只好在每个提示字符串的最后都放置一个空格。否则,用户输入的字符将会紧贴着提示字符串显示出来,不易用户区分。通常在提示后面加一个空格,可以把提示与用户输入分隔开。
用input函数键入数值
即使用户输入的是数值,input函数也还是会以一个字符串的形式将输入返回用户,但数学运算的操作数只能是数值,所有我们需要将字符串转换为数值。
python语言的内置函数可以将字符串转换成数值:
函数 | 说明 |
---|
int ( item ) | int( )函数将传递给它的参数转换成一个int型数值后将其返回 | float ( item ) | float( )函数将传递给它的参数转换成一个float型数值后将其返回 |
hours=int(input('How many hours did you work?'))
以上使用了嵌套函数调用,函数**int( )和float( )**仅在待转换的参数中包含有效的数值时才能正常工作。若参数未能转换成相应类型的数据,将会出现一个被称为异常的错误。
执行计算
python拥有很多可以用来执行各种数学运算的运算符。 python的数学运算符:
符号 | 运算 | 说明 |
---|
+ | 加法 | 两数相加 | - | 减法 | 在一个数中减去另一个数 | * | 乘法 | 一个数乘以另一个数 | / | 除法 | 一个数除以另一个数并给出一个实数结果 | // | 整数除法 | 一个数除以另一个数并给出一个整数结果 | % | 求余(取模) | 一个数除以另一个数并给出余数 | ** | 指数 | 一个数以另一个数为指数的幂值 |
运算符//的工作原理:若结果是正数,则截断整数部分,即小数部分将截掉。若结果是负数,则四舍五入到最接近的那个整数。
运算符的优先级
由高到低如下所示: 1、指数运算符:** 2、乘、除和求余:* / // % 3、加和减:+ -
若有圆括号,则以圆括号中优先进行运算。
混合数据类型的表达式与数据类型转换
python按照如下规则来求数学表达式的值:
1.对两个整型操作数进行数学运算时,运算结果的数据类型为整型。 2.对两个浮点型操作数进行数学运算时,运算结果的数据类型为浮点型。 3.对一个整型操作数和一个浮点型操作数进行数学运算时,这个整型操作数将被临时转换为浮点型,运算结果的类型也是浮点型。
(使用不同类型操作数的表达式称为混合数据类型表达式)
长语句拆分
python语言允许程序员使用行连接符,反斜杠(\)将一个语句拆分成若干行。
result = var1 * 2 + var2 * 3 + \
var3 * 4 + var4 * 5
python语言还允许程序员无须使用行连接符就可以将圆括号内的语句片段拆分成若干行。
total = (value1 + value2 +
value3 + value4 +
value5 + value6)
深入数据输出
抑制print函数的换行功能
print函数的基本功能是实现一行信息的输出。 例如,以下三条语句将输出三行字符:
print('One')
print('Two')
print('Three')
每行语句都是先显示字符串,然后再打印一个换行符。 如果不希望在一行输出结束后将输出位置前进到下一行的起始位置,可以给print函数传递一个特殊参数end = ’ ’ ,例如:
print('One',end = ' ')
print('Two',end = ' ')
print('Three')
输出结果:
One Two Three
以上就是该参数指定print函数在输出结束后打印一个空格而不是一个换行符。 若希望在输出结束后不打印任何东西,则不需要在引号内输入任何东西。
指定一个输出项分隔符
如果将多个参数传给print函数,那么在显示这些参数时将自动地在参数之间插入一个空格。
print('One','Two','Three')
输出结果:
One Two Three
如果不希望在输出各项之间出现空格,可以向print函数传递一个特殊的参数sep=’ ’ 。也可以借助这个参数来指定一个除空格外的其它字符来分隔各个输出项。
print('One','Two','Three',sep='')
输出结果:
OneTwoThree
print('One','Two','Three',sep='+')
输出结果:
One+Two+Three
转义字符
转义字符是一个出现在字符串文本中,以反斜杠(\)开始的特殊字符。 python语言的部分转义字符:
转义字符 | 输出效果 |
---|
\n | 将输出位置前进到下一行的起始位置(换行) | \t | 将输出位置前进到下一个水平制表符的(tab)位置 | \’ | 打印一个单引号 | \‘’ | 打印一个双引号 | \\ | 打印一个反斜杠 |
连接符
字符串的拼接可以使用+号进行操作。
print('this is' + 'one thing')
输出结果:
this is one thing
数据格式化
python语言内置的format函数可以实现数据格式化要求。 调用format函数时,需要向函数传递两个参数:欲输出的数值和格式限定符。 格式限定符是一个包含特殊字符的字符串,其中的特殊字符就表示数据的输出格式。
format(12345.6789,'.2f')
以上为例,第一个参数是浮点数12345.6789,是我们要格式化输出的数据。第二个参数,字符串’ .2f ’ 就是格式限定符,.2表示精度,即将数据舍入到小数点后的两位,f表示要格式化输出的数据类型是浮点数。
format函数返回一个字符串,该字符串包含了格式化处理过的数据。
print('the number is',format(1.234567,'.2f'))
输出结果:
the number is 1.23
科学计数法形式的格式化
如果采用科学计数法来显示一个浮点数,则可以用字母e或E来代替f。
print(format(12345.6789,'e'))
输出结果:
1.234568e+04
print(format(12345.6789,'.2e'))
输出结果:
1.23e+04
其中字母e表示指数,若采用大写E,则输出就要大写E表示指数。
插入逗号分隔符
若希望将数据格式化成带有逗号分隔符的形式,则可以在格式限定符中增加一个逗号,逗号写在精度说明符的右边:
print(format(123456789.46,',.2f'))
输出结果:
123,456,789.46
指定最小域宽
格式限定符中还可以包含一个最小域宽,用来指定显示数值的最小空格数。
print('the number is',format(12345.6789,'9.2f'))
输出结果:
the number is 12,345.68
这个例子中,出现在格式限定符的12个指定数据必须显示在占12个空格的最小域宽范围内。若小于域宽,则数据在域宽内是右对齐的,若大过指定域宽,那么系统会自动地增加域宽来容纳数据。
指定域宽主要用于希望对打印出来地数据进行列对齐地情况。
格式化浮点数为百分数形式
处理用f作为类型限定符外,你还可以使用百分号%来以百分数格式输出浮点数。 百分号%将会让数据乘以100后再显示出来,并在后边添加一个%。
print(format(0.5,'%'))
输出结果:
50.000000%
print(format(0.5,'.0%'))
输出结果:
50%
格式化整数
编写用于整数格式化地格式限定符时:
1.用d作为类型限定符 2.不能指定精度
有名常量
有名常量用于表示一个在程序执行过程中数值恒定不变地名字。 对于程序代码中出现地无法解释地数值,称为幻数。
幻数的缺点:
- 阅读代码很难了解幻数的用途
- 若程序中多处出现幻数,当修改时每一处都要修改,这会带来巨大的工作量
- 每次键入幻数都有出现击键错误的风险
使用有名常量代替函数,则可以解决这些问题。
有名常量就是一个在程序执行过程中数值保持恒定不变的名字。 有名常量名字都是大写字母。
采用有名常量的优点:
- 增强程序代码的自解释性
- 易于对程序进行大面积的修改
- 有助于消除使用幻数时经常发生的击键错误
机器龟图形库简介
python带有一个可以模拟机器龟的龟图系统。 机器龟首次出现时的默认朝向是0度(向东)。
import turtle
turtle.showturtle
turtle.forward(5)
turtle.ringht(90)
turtle.forward(5)
turtle.left(30)
turtle.setheading(50)
turtle.heading()
turtle.penup()
turtle.pendown()
turtle.circle(100)
turtle.dot()
turtle.pensize(5)
turtle.pencolor('red')
turtle.bgcolor('blue')
turtle.reset()
turtle.clear()
turtle.clearscreem()
turtle.setup(640,480)
turtle.goto(0,100)
turtle.pos()
turtle.xcor()
turtle.ycor()
turtle.speed(5)
turtle.hideturtle()
turtle.showturtle()
turtle.write('HELLO WORLD')
turtle.fillcolor('green')
turtle.begin_fill()
turtle.circle(100)
turtle.end_fill()
turtle.done()
参考书籍:《Python程序设计基础》 [美] 托尼·加迪斯
|