温度转换
1.设计算法
根据华氏温度和摄氏温度的定义,两个温度体系都以1标准大气压下水的结冰点和沸点为温度区间边界,因此,转换算法如下:
C = (F - 32)/1.8
F = C*1.8 + 32
其中,C为摄氏温度,F表示华氏温度。
算法(Algorithm)是数学和计算机领域的概念,指完成特定计算的一组有序操作。广义上,任何完成计算功能的一组操作都可以称为算法,这组操作可以对应单一的计算问题,也可以对应多个计算问题的组合;狭义上,算法通常针对单一计算问题,例如,针对优化求解问题的贪婪算法、遍历树结构的深度优先算法等。
2.源代码
TempStr = input("请输入带有符号的温度值: ")
if TempStr[-1] in ['F','f']:
C = (eval(TempStr[0:-1]) - 32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','c']:
F = 1.8*eval(TempStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
运行结果如下:
Python蟒蛇绘制
1.源代码
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
2.程序输出效果
3.面向对象编程
面向对象编程(Objected-Oriented Programming,OOP)是一种基于对象(Objected)的编程范式。对象是事物的一种抽象,他是一个实体,包含属性和方法两部分,属性是对象中的变量,方法是对象能够完成的操作。
假设对象是O,则O.a表示对象O的属性a,O.b()表示对象O的操作b(),其中a是一个变量值,b是一个函数,例如,一辆汽车可以作为一个对象,标记为C,汽车的颜色是汽车的属性,表示为C.color,前进是汽车的一个动作,相当于一个功能,因此前进是对象C的方法表示为O.forward()。
4.程序分析
第一,这个程序没有使用显式的用户输入输出,即没有input()函数和print()函数;第二,这个程序绝大多数代码行都是<a>.<b>()
形式,代码中没有赋值语句。这种通过使用函数库并利用库中函数进行编程的方法是Python语言最重要的特点,称为“模块编程”。
5.import函数库
使用import引用函数库有两种方式,但对函数的使用方式略有不同。
第一种引用函数库
import <库名>
此时,程序可以调用库名中的所有函数,使用库中函数的格式如下:
<库名>.<函数名>(<函数参考>)
第二种引用数据库
from <库名> import <函数名,函数名,...,函数名>
from <库名> import * #其中,*是通配符,表示所有函数
此时,调用该库函数时不再需要使用库名,直接使用如下格式:
<函数名>(<函数参数>)
采用第二种库引用方式修改实例代码完成蟒蛇绘制,代码如下:
from turtle import *
setup(650, 350, 200, 200)
penup()
fd(-250)
pendown()
pensize(25)
pencolor("purple")
seth(-40)
for i in range(4):
circle(40, 80)
circle(-40, 80)
circle(40, 80/2)
fd(40)
circle(16, 180)
fd(40 * 2/3)
代码运行结果相同,不同的是调用turtle库中函数时不再采用<a>.<b>()
方式,而直接使用函数名。由于“Python蟒蛇绘制”程序只用了turtle库中的setup()、penup()、fd()、pendown()、pensize()、pencolor()、seth()、circle()等8个函数,第二行的import语句也可以写成如下形式:
from turtle import setup, penup, fd, pendown
from turtle import pensize, pencolor, seth, circle
两种函数库引用方式各有优点。第一种采用<a>.<b>()
方式调用库中函数,能够显示标明函数来源,在引用较多库时代码可读性更好。第二种利用保留字直接引用库中函数,可以使代码更简洁,在只引用一个库的情况下,效果更好。
需要注意的是,第一种引用方式,Python解释器将<a>.<b>()
整体做为函数名。当采用第二种方式时,Python解释器将<b>
作为函数名。这可能产生一种情况,假设用户已经定义了一个函数<b>
,库中的函数名<b>
将会与用户自定义的函数名冲突。由于Python程序要求函数命名唯一,所以,当函数名冲突时Python解释器会以最近的函数定义为准。