2-Python程序实例解析
2.Python程序实例解析
1.实例1:温度转换
#TempConvert 温度转化
TempStr =input("请输入带有符号的温度数值:")
if TempStr[-1] in ['F','f']:C=(eval(TempStr[0:-1])-32)/1.8print("转化后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['c','C']:F=1.8*eval(TempStr[0:-1])+32print("转化后的温度为{:.2f}F".format(F))
else:print("输入格式错误")
#Python 中正向字符数组下标为0-length-1反方向为-1--(lengyh-1)
#反方向从字符串最后一个字符开始向前读取
Python 中正向字符数组下标为0-length-1反方向为-1–(lengyh-1)
反方向从字符串最后一个字符开始向前读取
2.Python程序语法元素分析(依据实例1)
程序的格式框架
**Python语言采用严格的“缩进”来表明程序的格式框架****两种注释:单行注释和多行注释****单行注释以“#”开头,多行注释以'''(三个引号)开头和结尾****注释用途:**表明作者和版权信息解释代码的原理或者用途辅助程序调试
命名与保留字
Python语言允许使用大小写字母,数字,下划线,汉子等字符命名,但是名字的首字母不能是数字,中间不能出现空格长度在语法上没限制,标识符和保留字均对大小写敏感一般不建议采用中文等非英语语言字符进行变量命名
字符串
字符串是用两个双引号“ ”或者单引号’'括起来的零或多个字符
序号体系:
正向递增序号(以最左侧字符序号为0向右依次递增)反向递减序号(以最右侧字符序号为-1向左依次递减)
Python字符串区间访问方式:
[N:M]格式,表示字符串中从N到M(不包含M)的子字符串,两者都是字符串的索引序号,可以混合使用正向递增序号和反向递件序号
例:TempStr[0:-1] 便是从下标为0的字符开始到最后一个字符(但是不包含最后一个字符)的子串
赋值语句
Python使用 “=”表示赋值,将右侧的计算结果赋给左侧
同步赋值:
<变量1>,<变量2>,<变量3>=<表达式1>,<表达式2>,<表达式3>
同步赋值,如果左右数目不相等,则会对多余变量取默认值
所有语句同时执行,执行过程中不会相互影响
应尽量避免将多个无关的单一赋值语句合成同步赋值语句,会降低程序可读性
input()函数
无论用户输入的是什么,都按照字符串类型返回结果
分支语句
使用方式:
if <条件1>:
<语句块1>
elif <条件2>:
<语句块2>
…
else:
<语句块n>
TempStr[-1] in ['F','f']
由保留字in组成的表达式表示判断字符串TempStr的最后一个字符是否存在于一个由‘F’或者’f’组成的集合中
eval()函数
将字符串当成有效的表达式来求值并返回计算结果
缺点:
不太安全,如果用户输入一些字符串是恶意代码,这会对系统造成不可预知的影响
在处理字符串时,会将双引号先去掉,再进行解释,
如“Hello”会被解释成变量Hello,"‘Hello’"会被解释成为字符串‘Hello’
Python支持+,-,,/,(幂)5种基本算数运算操作*
适当增加空格有利于提高代码可读性,但是不要改变与缩进相关的空格数量,也不能在变量名等命名中间添加空格
print()函数
需要采用格式化输出方式,通过format()方法将待输出变量整理成期望输出的格式
print()函数使用槽格式和format()方法将变量和字符串结合到一起输出
print("你的身高是{:.2f}".format(height))#输出的就是保留两位小数的身高值
循环语句
条件循环基本过程:
while(<条件>):<语句块1>
<语句块2>
#TempConvert-2while循环
#用户输入N或者n退出循环
TempStr=input("请输入带有符号的温度值:")
while TempStr[-1] not in ['N','n']:if TempStr[-1] in ['F','f']:c =(eval(TempStr[0:-1])-32)/1.8print("转化后的温度是:{:.2f}C".format(c))elif TempStr[-1] in ['C','c']:F=1.8*eval(TempStr[0:-1])+32print("转化后的温度是:{:.2f}F".format(F))else:print("输入格式错误")TempStr =input("请输入带有符号的温度值(以N或n结尾结束程序):")
not表示对判断结果取反
函数
函数可以理解为对一组表达特定功能表达式的封装,与数学函数类似,能够接受变量并输出结果
#TempConvert-3函数
def tempConvert(ValueStr):if ValueStr[-1] in ['F','f']:C=(eval(ValueStr[0:-1])-32)/1.8print("转化后的温度是:{:.2f}C".format(C))elif ValueStr[-1] in ['C','c']:F=1.8*eval(ValueStr[0:-1])+32print("转化后的温度是{:.2f}F".format(F))else:print("输入格式错误")
TempStr =input("请输入带有符号的温度值:")
tempConvert(TempStr)
由def保留字定义的函数在程序中不会被直接执行,需要使用函数名称调用才能执行
3.实例2:Python蟒蛇绘制
#Python蟒蛇的绘制
import turtle #别名:import turtle as tl
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,100)
turtle.fd(40*2/3)
turtle.done()
turtle.done()的作用
暂停程序,停止画笔绘制,但绘图窗体不关闭,直到用户关闭Python Turtle图形化窗口为止;它的目的是给用户时间来查看图形,没有它,图形窗口会在程序完成是立即关闭。
turtle库用于绘制图形
引用函数库方法(第一章已经提过)
方法一:
import <库名> ex: import turtle
方法二:
** 导入指定函数**
from <库名> import <函数名,函数名,…,函数名> ex:from turtle import penup,pendown
导入指定包的所有函数
from <库名> import * ex:from turtle import *
方法一采用.的方式调用库中函数,能够显示的标明函数的来源,在引用较多库时代码的可读性更好。
方法二利用保留字直接引用库中函数,可以是代码更加整洁,在只有一个引用库的情况下使用比较好。
为避免可能的命名冲突,对于初学者,建议采用第一种库引用方式。
4.turtle语法元素分析(上面实例)
绘图坐标体系 turtle.setup(width,height,startx,stary)
新建绘图窗口长宽分别是:width,height (如果为整数表示像素值,如果为小数表示其余屏幕对应宽度/高度与屏幕的比例)
新建窗体距离显示屏左侧边缘上侧边缘距离分别是 startx,starty (如果为整数分别表示像素距离,如果为None则分别为水平居中、垂直居中)
画笔控制函数
turtle,penup() 抬起画笔,之后移动画笔不绘制形状turtle.pendown() 放下画笔,之后移动画笔绘制形状turtle.pensize(width) 设置画笔尺寸,无参数时返回当前画笔宽度turtle.pencolor(colorString) 设置画笔颜色,无参数时返回当前画笔颜色turtle.pencolor((r,g,b)) (同上)
形状绘制函数
turtle.fd(distance) (或)turtle.forward(distance) 控制笔向当前方向前进一段距离
turtle.seth(to_angle)(或) turtle.setheading(to_angle) 改变画笔绘制方向到指定绝对方向角
绝对方向角度以说水平向右为0/360度,逆时针方向一圈增加到360度(大于360度重复略),顺时针从0递减到-360度
turtle.circle(radius,extent) 绘制圆弧
radius:半径。依据初始位置。为正时,小乌龟逆时针跑,为负时小乌龟顺时针跑
extent: 角度值,为None时,绘制整个圆
函数的封装(对上面的绘制蟒蛇程序)
#封装:Python绘制蟒蛇
import turtle
def drawSnack(radius,angle,length):turtle.seth(-40) #线条方向for i in range(length):turtle.circle(radius,angle)turtle.circle(-radius,angle)turtle.circle(radius,angle/2)turtle.fd(40) #移动turtle.circle(16,100)turtle.fd(40*2/3)
turtle.setup(650,350,200,200) #设置初始位置窗口
turtle.penup() #抬笔
turtle.fd(-250) #左移
turtle.pendown() #落笔
turtle.pensize(25) #线条粗细
turtle.pencolor("red") #线条颜色
drawSnack(40,80,4)
turtle.done()
5.程序练习题
1.实例1的修改,采用eval(input(<提示内容>))替换现有的输入部分,并使输出的温度值为整数
#实例1的修改,采用eval(input(<提示内容>))替换现有的输入部分,并使输出的温度值为整数
TempStr=eval("'"+input("请输入温度数值:")+"'") #注意加上引号,注意eval()函数的作用
if TempStr[-1] in ['F','f']:c=(eval(TempStr[0:-1])-32)/1.8print("转化后的温度是:{:.0f}C".format(c))
elif TempStr[-1] in ['C','c']:f=1.8*eval(TempStr[0:-1])+32print("转化后的温度为:{:.0f}F".format(f))
else:print("输入格式错误")
注意eval()函数的使用方法(前文提及过)
2.汇率兑换程序(按照温度转化程序的设计思路,按照1美元=6人民币的汇率进行双向兑换的程序)
#汇率兑换程序(按照温度转化程序的设计思路,按照1美元=6人民币的汇率进行双向兑换的程序)
exchangeRate =eval("'"+input("请输入金额以¥或$结尾:")+"'")
if exchangeRate[-1]in['¥']:c=1.0*eval(exchangeRate[0:-1])/6print("转化后的金额为:{:.2f}$".format(c))
elif exchangeRate[-1]in['$']:c=6.0*eval(exchangeRate[0:-1])print("转化后的金额为:{:.2f}¥".format(c))
else:print("格式错误")
3.绘制一条彩色蟒蛇
#绘制一条彩色蟒蛇
import turtle
import random #随机数生成库
def drawpencolorfulSnack(radius,angle,length):turtle.colormode(255) #改变颜色模式到RGB 255格式turtle.seth(-40) #调整画笔初始方向turtle.pendown()for i in range(length):turtle.pencolor((random.randrange(0,255,1),random.randrange(0,255,1),random.randrange(0,255,1))) #随机数0-255 步长为1turtle.circle(radius,angle)turtle.pencolor((random.randrange(0,255,1),random.randrange(0,255,1),random.randrange(0,255,1)))turtle.circle(-radius,angle)turtle.pencolor((random.randrange(0,255,1),random.randrange(0,255,1),random.randrange(0,255,1)))turtle.circle(radius,angle/2)turtle.fd(40) #直线移动turtle.pencolor((random.randrange(0,255,1),random.randrange(0,255,1),random.randrange(0,255,1)))turtle.circle(16,100) #颈部拐弯turtle.pencolor((random.randrange(0,255,1),random.randrange(0,255,1),random.randrange(0,255,1)))turtle.fd(40*2/3) #头部turtle.setup(650,350,200,200) #设置初始屏幕大小位置
turtle.penup() #提笔
turtle.fd(-250) #左移
turtle.pendown() #落笔
turtle.pensize(25) #画笔粗细
drawpencolorfulSnack(40, 80, 4)
turtle.done() #结束画图!
random库可以实现产生伪随机数,其中randrange(start,end,step)产生从start到end的步长为step的随机数
4.等边三角形的绘制
使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个等边三角形
#使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个等边三角形
import turtle
turtle.setup(600,500,300,300)
turtle.penup() #抬笔
turtle.fd(-100) #左移100 ,调整初始位置
turtle.pendown()#落笔
turtle.pensize(25) #画笔粗细
turtle.color("purple") #画笔颜色
turtle.seth(0) #调整初始角度,默认初始化为0,此处防止前面调整过角度(一般不会)
turtle.fd(100) #画底边
turtle.seth(120) #调整角度
turtle.fd(100) #画一边的腰
turtle.seth(-120) #调整角度
turtle.fd(100) #画另一边的腰
turtle.done() #结束绘图,起到暂停绘图界面的作用
5.叠加等边三角形的绘制
使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个等边三角形
#叠加三角形的绘制
import turtle
turtle.setup(600,500,200,200)
turtle.penup()
turtle.pensize(5)
turtle.pencolor("blue")
turtle.fd(-100)
turtle.pendown()
#底边
turtle.seth(0)
turtle.fd(200)
#右侧边
turtle.seth(120)
turtle.fd(200)
#左半侧边
turtle.seth(-120)
turtle.fd(100)
#内三角
turtle.seth(0)
turtle.fd(100)
turtle.seth(-120)
turtle.fd(100)
turtle.seth(120)
turtle.fd(100)
#外左下侧边
turtle.seth(-120)
turtle.fd(100)
turtle.done()
6.无角正方形的绘制
利用turtle库函数绘制一个没有角的正方形。
#无边正方形的绘制
import turtle
turtle.setup(600,500,300,300)
turtle.penup()
turtle.seth(0)
turtle.fd(-100)
#左侧边
turtle.pendown()
turtle.seth(-90)
turtle.fd(100)
turtle.penup()
turtle.fd(20)
#下侧边
turtle.seth(0)
turtle.fd(20)
turtle.pendown()
turtle.fd(100)
turtle.penup()
turtle.fd(20)
#右侧边
turtle.seth(90)
turtle.fd(20)
turtle.pendown()
turtle.fd(100)
turtle.penup()
turtle.fd(20)
#上侧边
turtle.seth(180)
turtle.fd(20)
turtle.pendown()
turtle.fd(100)
turtle.done()
7.六角形的绘制
#六角形的绘制
import turtle
turtle.setup(600,350,300,300)
turtle.seth(30)
turtle.pendown()
turtle.fd(200)
turtle.seth(-90)
turtle.fd(200)
turtle.seth(150)
turtle.fd(200)turtle.penup()
turtle.seth(0)
turtle.fd(50)
turtle.seth(-90)
turtle.fd(100)
turtle.pendown()
turtle.seth(30)turtle.fd(200)
turtle.seth(150)
turtle.fd(200)
turtle.seth(-90)
turtle.fd(200)
turtle.done()
8.正方形螺旋线的绘制
#正方形螺旋线的绘制
import turtle
turtle.setup(600,650,300,300)
turtle.pendown()
for i in range(0,50): #画50条线turtle.seth(90+90*i) #调整角度turtle.fd(10+10*i) #调整每个线的长度
turtle.done()
9.自定义Python蟒蛇绘制
#自定义Python的蟒蛇绘制
import turtle
turtle.setup(600,600,300,300)
turtle.color("purple")
turtle.pensize(15)
turtle.seth(0)
turtle.pendown()
turtle.circle(40,180)
turtle.circle(-40,240)
turtle.circle(-120,300)
turtle.done()
备注:以上为高等教育出版社 Python语言程序设计基础(第2版)课本内容第二章的整理
仅为个人学习处理。如有错误,欢迎指正!
2-Python程序实例解析相关推荐
- python程序格式框架的描述_python 程序语言设计(嵩天)-学习笔记(第二章python 程序实例解析)...
第 2 章 python 程序实例解析 学习目标: 掌握解决计算问题的一般方法. 掌握python语言的基本语法,包括缩进.变量.命名等. 掌握python语言绘制图形的一般方法. 了解python标 ...
- python课堂实例,Python电子教案2 1 Python程序实例解析课堂
<Python电子教案2 1 Python程序实例解析课堂>由会员分享,可在线阅读,更多相关<Python电子教案2 1 Python程序实例解析课堂(41页珍藏版)>请在人人 ...
- python turtle画圆、循环法_实验与作业(Python)-03 Python程序实例解析(函数、循环、range、turtle)...
截止日期: 要求: 下周实验课前上交,做好后在实验课上检查可获取平时分. 做出进阶或选做的的请用清晰的标致标识出来,方便老师批改 本次作业:可提交也可不提交.作业算平时成绩. 本次作业内容量较大,请组 ...
- Python语言程序设计基础(2)—— Python程序实例解析
温度转换 def tempConvert(ValueStr):if ValueStr[-1] in ['F','f']:ans = (eval(ValueStr[0:-1]) - 32)/1.8pri ...
- python递归算法案例教案_Python电子教案2-1-Python程序实例解析.ppt
Python电子教案2-1-Python程序实例解析.ppt 简单说,eval()的作用是将输入的字符串内容变成Python语句,并执行这个语句.实例代码1.1使用eval()函数将用户的部分输入(T ...
- java tcp 编程实例_Java实现基于TCP的通讯程序实例解析
Java中的TCP通信程序 TCP可以实现两台计算机之间的数据交互通信的两端,要严格区分客户端与服务端 两端通信时的步骤: 1.服务端程序,需要事先启动,等待客户端连接 2.客户端主动连接服务器端,才 ...
- python代码实例-python程序实例
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. github.comteamssixdouluo-download.gi ...
- python程序实例讲解_python入门编程实例 python入门编程实例解析
python入门编程实例 python入门编程实例解析 python入门编程实例及解析: 题目:有1.2.3.4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十 ...
- python函数实例解析_python支持返回函数的实例解析
这篇文章主要介绍了python支持返回函数的实例解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 最近接触python,看到了python中返回函数的概念,以前只接触过 ...
- python程序实例教程基础-Python程序设计案例教程——从入门到机器学习(微课版)...
第1章Python语言快速入门1 1.1Python的安装与配置1 1.2运行Python程序2 1.2.1运行Python的方式2 1.2.2Python编写规范4 1.3编写简单的Python程序 ...
最新文章
- 如何使用 CODING 实践 DevOps 全流程
- 告别“臃肿”,选择微服务(文末福利)
- 云大计算机基础,2019云南大学计算机技术专硕上岸经验
- 词云制作 Python
- EOS (3)系统特点
- Python 面试中可能会被问到的30个问题
- 【Laravel-海贼王系列】第十三章,路由控制器解析
- 不借助Maven,使用Eclipse创建Hello World级别的Spring项目
- html:(10):添加空格和hr
- php xml 返回 微信,php版微信返回用户text输入的方法
- 你能给我的手机推荐一款安全软件吗?
- windows编译opencv+opencv_contrib 以及解决cmake下载boostdesc_bgm等文件失败问题
- 接口管理平台YApi坑死我了(超级详细实操教程) - 421篇
- matlab混沌指数的计算,matlab实现混沌系统最大李雅普诺夫指数
- 心理学中的催眠术怎么学[为本教育]
- Splinter学习--模拟攥写博客园随笔
- 单片机搭建环境烧录方法_万物互联-stm32单片机简介、烧录、编程及其项目环境搭建...
- 简记_PSpice仿真软件学习笔记(一)
- Statement接口的基本介绍和使用
- C语言:围圈报数游戏