python-第2章-程序解析

本文详细介绍了Python编程中问题分析、IPO模型、算法设计、语法元素如缩进、注释、命名规则、字符串操作、赋值、input()函数、分支结构、eval()函数、print()函数、循环和函数的使用,以及turtle库在图形绘制中的应用。
摘要由CSDN通过智能技术生成

python-第2章-程序解析

计算机解决问题六步骤

1)分析问题:

针对温度转换问题,从的3 种角度对问题计算部分的不同理解会产生不同的 IPO 描述、算法和程序。我们“利用计算机解决问题”需要结合计算机技术的发展水平和人类对问题的思考程度,在特定技术和社会条件下,分析出一个问题最经济、最合理的计算部分,进而用程序实现。

2)划分边界:

明确问题的输入数据、输出数据和对数据处理的要求。

例如,温度转换程序,该功能的IPO描述

输入:带华氏或摄氏标志的温度值,82F/28C

处理:根据温度标志选择适当的温度转换算法

输出:带摄氏或华氏标志的温度值

3)设计算法:

算法(Algorithm)是数学和计算领域的概念,指完成特定计算的一组有序操作。

在IPO模式中,确定输入和输出后,处理过程通常也称为算法

4)编写程序:

根据IPO 描述和算法设计,编写 Python程序

5)调试测试:

保存文件,使用IDLE运行该程序。耐心寻找调试的错误点

6)升级维护:

随着问题使用场景,输入输出要求等因素的变化,程序将需要不断地维护和升级。

Python程序语法元素分析

讲解例子:温度转换

 #e1.1TempConvert.py     ‘保存的文件名’
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  #"82F"经eval()函数处理,变成python内部可进行数学运算的数值82
    print("转换后的温度是:{:.2f}F".format(F))
else:
    print("输入格式错误")
    
    
============================== RESTART: D:/1234.py =============================
请输入带有符号的温度值:82F    #输入格式   数值F/C
转换后的温度是27.78C
============================== RESTART: D:/1234.py =============================
请输入带有符号的温度值:-30C
转换后的温度是:-22.00F

1)缩进

缩进是程序的格式框架

代码编写中,缩进可以用Tab键实现,也可用多个空格(4个空格)*两种方式不混用

缩进行代码在逻辑上之前紧邻的无缩进代码行的所属范畴

单层缩进,也可无限制“嵌套”形成多层缩进

*不是所有的代码都能通过缩进包含其他代码,eg.print()

2)注释

辅助性文字,不被计算机执行

注释方法:

单行注释,#…

多行注释,‘’‘…’‘’

*作用:辅助程序调试,将一些代码转成注释行

3)命名与保留字

命名:保证程序元素唯一性

格式要求:大写字母,小写字母,数字,下划线_和汉字等字符及其组合给变量命名,但名字首字符不能是数字,中间不能出现空格,长度没有限制。命名的名字不能和版本的保留字一样

*保留字,也称关键字,指被编程语言内部定义并保留使用的标识符

*标识符对大小写敏感

33个保留字列表:

Falsedefifraise
Nonedelimportreturn
Trueelifintry
andelseiswhile
asexceptlambdawith
assertfinallynonlocalyield
breakfornot
classfromor
continueglobalpass

4)字符串

文本在程序中用字符串类型表示。

格式:“…零个或多个字符…” / ‘…零个或多个字符…’

两种体系:正向递增序列,字符长度为L,最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1

反向递减序列,字符长度为L,最右侧字符序号为**-1**,向左依次递减,最右侧字符序号为**-L**

在这里插入图片描述

字符串是字符的序列,可按照单个字符或字符片段进行索引。

单个字符:TempStr[-1],表示字符串TempStr变量的最后一个字符,即d

字符片段:采用**[N;M]**格式,表字符串中从N到M(不包含M)的子字符串,可以混合使用两种体系。TempStr[0:-1],即Hello Worl

使用示例:

>>> temptri='ABC123'
>>> print(temptri[-1])
3
>>> print(temptri[0:-1])
ABC12

5)赋值语句

程序中产生或计算新数据值的代码称为表达式。

运算结果的类型由操作符或运算符决定。

=,表示赋值,即等号右侧的计算结果赋给左侧变量,含=语句为赋值语句

赋值类型:

单一赋值,即一对一

t=x           
x=y
y=t    #交换x和y值

同步赋值,先运算右侧的n个表达式 ,同时将表达式结果赋值给左侧n个边量

x,y=y,x

6)input()函数

无论用户在控制台输入什么内容,input()函数都以字符串类型返回。

使用方法: <变量>=input(<提示性文字>)

>>> input("请输入:")    #使用input()函数
请输入:python           #用户输入python
'python'                #函数返回字符串类型,'python'

7)分支语句

根据判断条件选择程序执行路径

使用方法:

if <条件1><语句块1>
elif <条件2><语句块2>
...
else:
	<语句块n>

if TempStr[-1] in ['F','f']:,其中in是保留字,表示判断,相等返回True,否则返回False
列表,格式 [元素1,元素2,...,元素n]

8)eval()函数

eval(<字符串>)函数,能够以Python表达式的方式解析并执行字符串,字符串->Python语句

使用方法:

>>> abc = "123c"
>>> eval(abc[0:-1])
123
>>> x=1
>>> eval("x+1")
2
>>> value=eval(input("请输入要计算的数值:"))
请输入要计算的数值:2.0
>>> print(value*2)
4.0

*eval("hello"),eval()函数会去掉两个引号,将其解释为变量,若之前没有定义过hello变量,解释器报错

*eval("'hello'"),eval()函数会去掉两个引号,将其解释为字符串’hello’

Python支持 +,-,*,/,**(幂) ,5种基本算术运算操作

9)print()函数

格式:print(<带输出字符>)

当输出纯字符信息时,可直接将待输出内容传递给print()函数;

当输出变量值时,需采用格式输出方式,通过format()方法将待输出变量整理成期望输出的格式。

print("输入格式错误")

print("转换后的温度是{:.2f}C".format(C))

print()函数用槽格式和format()方法将变量和字符串结合到一起输出大括号*{ }表示一个槽位置**,这个括号内容由字符串后面紧跟的format()方法中的参数C填充

10)循环语句

根据判断条件确定一段程序是否再次执行一次或多次

循环语句有很多类型。

while语句,条件循环的使用方法:

while (<条件>):
	<语句块1>
<语句块2>

当条件为真(True)时,执行语句块1语句(缩进表达);

当条件为假(False)时,退出循环,执行语句块2语句

11)函数

实际编程中,一般将特定功能代码编写在一个函数里,便于阅读和复用,使程序模块化更好。

使用方法:

#e1.3TempConvert.py
def tempConvert(ValueStr):     #tempConvert()函数所属代码是此行后与之有缩进关系的代码,
    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)

============================== RESTART: D:/1111.py =============================
请输入带有符号的温度值:34c
转换后的温度是93.20F

turtle库语法元素分析

*前提补充

1)面向对象编程(OOP)——基于对象的编程范式

对象是事物的一种抽象,它是一个实体,包含属性(对象中的变量)和方法(对象能够完成的操作)

对象属性方法
OO.a (O的属性a)O.b() (O的操作b)
C (汽车)C.color (汽车的颜色)C.forward() (汽车的前进功能)

2)import引用函数库的两种方式

第一种(在引用较多库时代码可读性好)

import <库名> ,可以调用库名中的所有函数,使用库中函数方式,<库名>.<函数名>(<函数参数>)

第二种(只引用一个库的情况下效果更好)

from <库名> import * ,可以调用库名中的所有函数(*是通配符,表所有函数)

from <库名> import <函数名,函数名,...,函数名>

调用库中函数无需库名,方式<函数名>(函数参数)

讲解示例:蟒蛇绘制

#e2.1DrawPython.py          import引用函数库的第一种方式
import turtle                #用保留字import引用函数库,turtle库,用于绘制图形
turtle.setup(650,350,200,200)#<a>.<b>()形式是python编程的一种典型表达式
turtle.penup()              #表调用一个对象<a>的方法<b>(),也表调用一个函数库<a>中的函数<b>()
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)

'''from turtle import *          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)
'''

在这里插入图片描述

1)绘图坐标体系

刚开始绘制时,小海龟位于画布正中央,此处坐标为(0,0),行进方向为水平右方(–>)

坐标体系图在这里插入图片描述

turtle.setup(width,height,startx,starty)

参数含义图

在这里插入图片描述

*width和height:如果值为整数,表示像素值;如果值为小数,表窗口(宽/高)度与屏幕的比例

startx和starty:窗口左侧(顶部)和屏幕左侧(顶部)的像素距离,如果值为None,窗口位于屏幕水平(垂直)中央

2)画笔控制函数

turtle.penup()

别名:turtle.pu(),turtle.up

作用:抬起画笔,之后移动画笔不绘制形状

参数:无

turtle.pendown()

别名:turtle.pd(),turtle.down

作用:落下画笔,之后移动画笔将绘制形状

参数:无

turtle.pensize(width)

别名:turtle.width()

作用:设置画笔宽度,当无参数输入时返回当前画笔宽度

参数:width——设置的画笔线条宽度,若为None或者为空,则函数返回当前画笔宽度

turtle.pencolor(colorstring)

或:turtle.pencolor((r,g,b))

作用:设置画笔颜色,当无参数输入时返回当前画笔颜色

参数:

colorstring:表示颜色的字符串

(r,g,b):颜色对应的RGB数值

部分典型RGB颜色对照表
在这里插入图片描述

*RGB颜色:采用 (r,g,b)表示,其中,每个颜色采用8bit表示,取值范围是[0,225],故RGB颜色可表示(253**3)(16M,约1678万种颜色)

3)形状绘制函数

turtle.fd(distance)

别名:turtle.forward(distance)

作用:向小海龟当前方向前进distance距离

参数:distance——行进距离的像素值,当值为数时,表反方向前进

turtle.seth(to_angle)

别名:turtle.setheading(to_angle)

作用:设置小海龟当前行进方向为to_angle,该角度是绝对方向角度值

参数:to_angle:角度的整数值

turtle的角度坐标体系图
在这里插入图片描述

for语句,“遍历循环”

格式:

for i in range(<循环次数>):
	<语句块1>

turtle.circle(radius,extent=None)

作用 :根据半径radius绘制extent角度的弧形

参数:

radius:弧形半径,值为正数,半径在小海龟左侧;值为负,半径在小海龟右侧(正左负右

extent:绘制弧形的角度,当不设置参数或参数设置为None时,绘制整个圆

4)函数的封装

定义drawSnake()函数,将蟒蛇绘制这个独立功能封装

#e2.3DrawPython.py
import turtle
def drawSnake(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,180)
    turtle.fd(40*2/3)
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
drawSnake(40,80,4)
turtle.done()

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值