ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

2-Python程序实例解析

2021-05-22 11:01:34  阅读:335  来源: 互联网

标签:turtle Python seth 实例 fd TempStr 100 解析 绘制


2.Python程序实例解析

1.实例1:温度转换

#TempConvert  温度转化
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 中正向字符数组下标为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.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("请输入带有符号的温度值(以N或n结尾结束程序):")

not表示对判断结果取反

函数

函数可以理解为对一组表达特定功能表达式的封装,与数学函数类似,能够接受变量并输出结果

#TempConvert-3函数
def tempConvert(ValueStr):
    if ValueStr[-1] in ['F','f']:
        C=(eval(ValueStr[0:-1])-32)/1.8
        print("转化后的温度是:{:.2f}C".format(C))
    elif ValueStr[-1] in ['C','c']:
        F=1.8*eval(ValueStr[0:-1])+32
        print("转化后的温度是{:.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.8
    print("转化后的温度是:{:.0f}C".format(c))
elif TempStr[-1] in ['C','c']:
    f=1.8*eval(TempStr[0:-1])+32
    print("转化后的温度为:{:.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])/6
    print("转化后的金额为:{:.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 步长为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)
    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版)课本内容第二章的整理

仅为个人学习处理。如有错误,欢迎指正!

标签:turtle,Python,seth,实例,fd,TempStr,100,解析,绘制
来源: https://blog.csdn.net/qq_44354427/article/details/117152704

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有