第二章 Python程序实例解析
1.实例1:温度转化
1.1 普通温度转化
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("输入格式错误!")
请输入带有符号的温度值:82f
转换后的温度为:27.78C
知识点1:
1.采用缩进表示程序框架,缩进表示所属关系
2.注释,单行注释用#,多行注释首尾都用'''
3.命名第一个不能是数字,对大小写敏感,有33个保留字
4.字符串包括两种序号体系:正向递增序列,反向递减序列,tempStr[0,-1]表示变量中从第一个字符到最后一个字符,但不包括最后一个字符
-11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
---|---|---|---|---|---|---|---|---|---|---|
H | e | l | l | d | W | o | r | l | d | |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
5.input()函数进行输入,无论是字符串还是数字,最后输出都会以字符串的形式输出
6.判断语句格式:
if <条件1>:
<语句1>
elif <条件2>:
<语句2>
...
else:
<语句N>
7.eval(<字符串>)函数:
将输入的字符串转换成python语句,并执行该语句,若字符串中是数学表达式则计算输出,若是eval("hello")则被理解为hello为之前定义过的变量,没有定义过则报错,若是eval("'hello'"),则'hello'解释为字符串,若是数字和字母混杂,则报错。
1.2 加入循环结构
tempStr = input("请输入带有符号的温度值:")
while tempStr[-1] not in ['N','n']:
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("输入格式错误!")
tempStr = input("请输入带有符号的温度值:")
================ RESTART: C:\Users\Administrator\Desktop\text.py ===============
请输入带有符号的温度值:82f
转换后的温度为:27.78C
请输入带有符号的温度值:28c
转换后的温度为:82.40F
请输入带有符号的温度值:n
知识点2:
1.循环结构语句
while (<条件>):
<语句块1,条件为true执行>
<语句块2,条件为false执行>
1.3定义函数执行
def tempConvert(tempStr):
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("输入格式错误!")
TempStr = input("请输入带有符号的温度值:")
while TempStr[-1] not in ['N','n']:
tempConvert(TempStr)
TempStr = input("请输入带有符号的温度值:")
print("结束!")
================ RESTART: C:\Users\Administrator\Desktop\text.py ===============
请输入带有符号的温度值:82f
转换后的温度为:27.78C
请输入带有符号的温度值:28c
转换后的温度为:82.40F
请输入带有符号的温度值:n
结束!
知识点3:
1.定义函数前要用保留字def
2.与函数平行的语句先执行
2.实例2:Python蟒蛇绘制
2.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)
知识点1:
通过使用函数库并利用库中函数进行编程的方法是Python语言最重要的特点,称为“模块编程”
2.2 利用通配符*,可以简化不再需要库名,优点是简洁
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)
知识点2:
当函数名冲突时,python解释器会以最近的函数定义为准。
3.turtle库语法元素分析
1.定义理解:
基本框架:一只小海龟在坐标系爬行,其爬行轨迹形成绘制图形。
对于小海龟而言,有“前进”,“后退”,“旋转”等爬行行为,对坐标系的探索也通过“前进方向”,“后退方向”,“左侧方向”,“右侧方 向”等小海龟自身角度方位来完成。刚开始绘制时,小海龟位于画布正中央,坐标为(0,0),行进方向为水平右方。
2.函数理解
(1)turtle.setup(width,height,startx,starty):
设置主窗体的大小和位于电脑屏幕的位置,startx表示距离电脑屏幕左边的长度,starty表示距离电脑屏幕上边的长度,width、height如果为整数则是像素值,如果为小数则是窗口高宽度与电脑屏幕的比例,startx、starty的值为数字则是像素距离,如果是None则是窗口位于电脑屏幕水平、垂直中央。
画笔控制函数
(2)turtle.penup():抬起画笔,不绘制形状,无参。
(3)turtle.pendown()**别名:turtle.pd()、turtle.down():落下画笔,绘制形状,无参。
(4)turtle.pensize(width)**别名:turtle.width():设置画笔尺寸,即宽度,width为None、空,则函数返回当前画笔宽度。
(5)turtle.pencolor("color") 或 turtle.pencolor((r,g,b)):设置画笔颜色,无参时返回当前画笔颜色。
形状绘制函数
(6)turtle.fd(distance) 别名:turtle.forward(distance):小海龟当前行进方向前进distance距离,distance为行进距离的像素值,当值为负数时,表示向反方向前进。
(7)turtle.seth(to_angle) 别名:turtle.setheading(to_angle):设置小海龟当前行进方向为to_angle,该角度是绝对方向角度值
(8)turtle.circle(radius,extent=None):根据半径radius绘制extent角度的弧形,radius表示弧形半径,当值为正数,半径在小海龟左侧,当值为负数时,半径在小海龟右侧。extent为弧形角度,为None或空时,绘制整个圆形
4.函数的封装
from turtle import *
def drawSnake(radius,angle,length):
seth(-40)
for i in range(length):
circle(radius,angle)
circle(-radius,angle)
circle(radius,angle/2)
fd(40)
circle(16,180)
fd(40*2/3)
setup(650,350,200,200)
penup()
fd(-250)
pendown()
pensize(25)
pencolor("purple")
drawSnake(40,80,4)
done()