Python语言程序设计 1

目录

1 Python基本语法元素￲

1.1 程序设计基本方法

1.1.1计算机与程序设计

1.1.2 编译与解释

1.1.3 程序的基本编写方法—IPO

1.1.4 计算机编程

1.2 Python开发环境配置

1.2.1 Python语言概述

1.2.2 Python程序的编写与运行

例1:计算圆面积

例2:绘制同切圆

例3:绘制五角星

1.3 实例一:温度转换

1.3.1问题分析:

实例编写:

1.4 Python程序语法元素分析

1.4.1 格式框架

1.4.2命名与保留字

1.4.3 数据类型

1.4.4语句与函数

1.4.5输入与输出

2 Python基本图形绘制

2.1 深入理解Python语言

2.1.1 计算机技术的演进

2.1.2 编程语言的多样初心

2.1.3 Python语言的特点

2.1.4 编程语言的种类与“超级语言”的诞生

2.2 实例二:Python蟒蛇绘制

2.2.1 问题分析

2.2.2 实例编写

2.2 模块1:turtle库的使用

2.2.1 turtle库基本介绍

2.2.2 turtle绘图窗体布局

2.2.3 空间坐标体系

2.2.4 turtle角度坐标体系

2.2.5 RGB色彩体系

2.4 turtle程序语法元素分析

2.4.1 库引用与import

2.4.2 turtle画笔控制函数

2.4.3 turtle运动控制函数

2.4.4 turtle方向控制函数

2.4.5循环语句与range()函数

2.4.6 turtle库函数补充


1 Python基本语法元素

1.1 程序设计基本方法

1.1.1计算机与程序设计

计算机的概念

功能性:对数据的操作,表现为数据计算、输入输出处理和结果存储等

可编程性:根据一系列指令自动地、可预测地、准确地完成操作者的意图

计算机的发展

摩尔定律:计算机发展历史上最重要的预测法则

    单位面积集成电路上可容纳晶体管的数量约每两年翻一番;

CPU/GPU、内存、硬盘、电子产品价格等都遵循摩尔定律;

未来30年,摩尔定律依然有效。

计算机的发展参照摩尔定律,表现为指数方式

计算机硬件所依赖的集成电路规模参照摩尔定律发展;

计算机运行速度因此也接近几何级数快速增长;

计算机所能高效支撑的各类运算功能不断丰富发展。

程序设计(也称编程)

深度应用计算机的主要手段;

计算机可编程性的体现。

程序设计语言(也称编程语言)

程序设计的具体实现方式;

用于交互(交流)的人造语言。

特点:简单,严谨,精确。

      特定的关键词、规则,使简单;

      同样的代码只能有一种理解,不能有二义性,使严谨;

      让计算机知道数据的特性、特点,使精确。

C语言1972,Python语言1990。

1.1.2 编译与解释

编程语言的执行方式

源代码:采用某种编程语言编写的计算机程序,人类易理解,如:

      a = 7;

目标代码:计算机直接执行,常人难理解,如:

      11010010 00111011;

编译

将源代码一次性转换成目标代码的过程。(一次性翻译,之后不需要源代码)￲

将源代码通过编译器翻译成计算机可直接执行的目标代码,程序执行软件获取程序输入并输出结果。

解释

将源代码逐条转换成目标代码并逐条运行。(实时翻译和执行)￲

解释器读取运行源代码和程序输入得到输出结果。

编程语言的分类

静态语言:使用编译器 C/C++、Java

编译器一次生成目标代码,充分使用更多优化程序

程序运行速度快

脚本语言:使用执行器 Python、JavaScript、PHP

          执行程序需要源代码,维护灵活(逐条),能跨多个操作系统平台

边翻译边执行难加载优化

程序在,源代码就在,不易丢失

1.1.3 程序的基本编写方法—IPO

I Input   输入 程序输入

P Process 处理 程序主要逻辑(处理方法,即算法)

O Output  输出 程序输出

编程解决问题的步骤:

分析问题的计算部分—规划IPO—设计算法—编写程序调试测试—升级维护

1.1.4 计算机编程

编程能训练计算思维:抽象交互关系、自动化执行的思维模式

                    区别于逻辑思维(数学)和实证思维(物理)的第三种思维模式

1.2 Python开发环境配置

1.2.1 Python语言概述

Python-蟒蛇

Python 1~3:1990-2002-2008

应用于火星探测、搜索引擎、引力波分析……

1.2.2 Python程序的编写与运行

两种编程方式

交互式:在 IDLE 中,对每条语句即使运行结果,适合语法练习

文件式:在一个源程序的文件中批量地编写一组语句,一次性执行

例1:计算圆面积

交互式:

>>> r=25
>>> area=3.1415*r*r
>>> print(area)

文件式:

r=25
area=3.1415*r*r
print(area)

输出结果:

1963.4375000000002

例2:绘制同切圆

交互式:

>>> import turtle
>>> turtle.pensize(2)
>>> turtle.circle(10)
>>> turtle.circle(40)
>>> turtle.circle(80)
>>> turtle.circle(160)

文件式:

import turtle
turtle.pensize(2)
turtle.circle(10)
turtle.circle(40)
turtle.circle(80)
turtle.circle(160)

输出结果: 动态绘制

例3:绘制五角星

交互式:

>>> from turtle import *
>>> color('red','red')
>>> begin_fill()
>>> for i in range(5):
        fd(200)
        rt(144)

>>> end_fill()

文件式:

from turtle import *
color('red','red')
begin_fill()
for i in range(5):
    fd(200)
    rt(144)

end_fill()

输出结果:

1.3 实例一:温度转换

1.3.1问题分析:

需求:华氏度和摄氏度的相互转换

计算部分:直接转换温度值

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

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

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

设计输入输出格式:例如F表示华氏度,C表示摄氏度

设计算法:华氏度和摄氏度的定义及转换公式

C=(F-3²)/1.8

F=C*1.8+3²

实例编写:

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("输入格式错误")

1.4 Python程序语法元素分析

1.4.1 格式框架

高亮

缩进:表达程序的格式框架

      严格明确,是语法的一部分,缩进不正确程序运行错误

      表达所属关系,

1.4.2命名与保留字

变量

用来保存和表示数据的占位符号

变量采用标识符(名字)来表示,关联标识符的过程叫命名

可以用等号对变量赋值或修改值(单一等号“=”为赋值符号)

命名规则

大小写字母、数字、下划线、汉字等字符及组合

注意:首字符不能是数字、不与保留字相同

保留字

被编程语言内部定义并保留使用的标识符

Python 33个保留字(关键字)

and

elif

import

raise

global

continue

pass

as

else

in

return

nonlocal

def

yield

assert

except

is

try

Ture

from

del

break

finally

lambda

while

False

if

class

for

not

with

None

or

1.4.3 数据类型

字符串类型

字符串由单引号或双引号表示

字符串是有序字符序列,可以对字符索引

  • 字符串序号:

正向递增序号:第一个为0,往后递增

反向递减序号:第一个为-1,往前递减

  • 字符串的使用:使用 [ ] 获取字符串中一个或多个字符

索引:返回字符串中单个字符

格式:字符串[M]  ( M表示字符序号)

如 "请输入带有符号的温度值:"[0] 或TempStr[-1]

切片:返回字符串中一段字符子串

格式:字符串[M:N]

如 "请输入带有符号的温度值:"[1:3] 或TempStr[0:-1]

数字类型:

整数类型 浮点数类型

列表类型:

由0个或多个数据组成的有序序列 (类似数组)

用[ ]表示,内用逗号分隔,如:

[10,010,110]  ['F','f']

用保留字“in”判断一个元素是否在列表中,结果Ture/False,如:

TempStr[-1] in ['C','c']

1.4.4语句与函数

赋值语句

由赋值符号(=)构成的一行代码

分支语句

由判断条件决定程序运行方向的语句

使用保留字if...elif...else构成条件判断的分支结构,如:

        if TempStr[-1] in ['F','f']:

    如果条件为Ture则执行冒号后缩进的语句

冒号“:”是语法必不可少的一部分

打完冒号自动缩进

elif=else if

函数

格式:函数名(参数)

如:eval(TempStr[0:-1])

1.4.5输入与输出

输入函数:input( )

获取输入的信息

格式:变量名=input(“提示信息的字符串”)

括号中的文字用来提示用户输入什么样的信息

输出函数:print( )

以字符形式输出结果

格式:print(字符串或字符串变量)

格式化:

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

        { }表示槽,后面变量填充到这个槽里

        :.2f表示变量F填充到这个位置时,保留两位小数

评估函数:eval( )

去掉参数最外侧单/双引号并执行余下的语句

格式:eval(字符串/字符串变量)

举例: >>>eval(“1”)-- 1

       >>>eval(“1+2”)-- 3

       >>>eval(‘ “1+2” ’)-- ‘1+2’

       >>>eval(‘print(“Hallo”)’)-- Hallo

2 Python基本图形绘制

2.1 深入理解Python语言

2.1.1 计算机技术的演进

时间节点

时期

任务

1946 第一台计算机诞生

↓→

计算机系统结构时代

解决计算能力问题:研制计算机及体系结构,CPU,计算机系统,操作系统,编译器解释器。

1981 个人PC机诞生

↓→

网络和视窗时代

解决机机交互与人机交互问题:互联网 Windows视窗操作系统

2008 安卓系统诞生

↓→

复杂信息时代

解决数据问题:接口、存储、产生

2016 计算机打败人工

↓→

人工智能时代

关注人类自身问题

2.1.2 编程语言的多样初心

C

语言本质:理解计算机系统结构

解决问题:性能

适用对象:计算机专业,做底层程序的设计开发

Java

诞生于网络与视窗时代

采用面向对象的方式 跨平台的方法

学习内容:对象 跨平台 运行时

语言本质:理解主客体关系

解决问题:跨平台 程序交互问题

适用对象:适合软件专业

C++

C语言的演进 有面向对象的特点

学习内容:对象 多态 继承

语言本质:理解主客体关系

解决问题:大规模程序编写(操作系统 大规模图像处理)

适用对象:计算机专业

VB

学习内容:对象 按钮 文本框

语言本质:理解交互逻辑(人机)

解决问题:桌面应用

用得少

Python

学习内容:编辑逻辑 第三方库

语言本质:理解问题求解

解决问题:各类问题计算部分的实现

适用对象:所有专业

2.1.3 Python语言的特点

优势一:语法简洁

语法强制可读性(缩进使整洁易读

较少底层语法元素,不操作内存和低级借口

有多种编程方式

支持处理中文字符

优势二:生态高产

有13万第三方库,安装后可使用,数量快速增长。

用他人的代码减少重复工作

程序生态更加开放共享

能跨操作平台,更灵活

2.1.4 编程语言的种类与“超级语言”的诞生

机器语言

一种二进制语言,直接使用二进制代码表达指令

计算机硬件(CPU)可以直接执行,与具体CPU型号有关

例如:完成2+3功能的机器语言,表示出来的是二进制代码,这个代码怎样执行、执行结果,怎样表达应CPU而异

汇编语言

一种将二进制代码直接对应助记符的编程语言,利用助记符进行程序设计

汇编语言与CPU型号有关,程序不通用,需要汇编器转换

例如:完成2+3 功能的汇编语言为add 2,3,result

高级语言

更接近自然语言,同时更容易描述计算问题

高级语言代码与具体CPU型号无关,编译后运行(用编译器或解释器)

编译器参考CPU型号,将高级语言转换为目标代码

例如:完成2+3功能的高级语言为result = 2 + 3

超级语言 Python

具有庞大计算生态,可以很容易利用已有代码功能

编程思维不再是刀耕火种,而是集成开发

例如:完成2+3 功能的高级语言result = sum(2,3)  利用已有函数

2.2 实例二:Python蟒蛇绘制

2.2.1 问题分析

设计蟒蛇形状

计算机绘图原理?窗体如何通过程序产生?如何在窗体绘图

如何绘制线-弧-蛇

2.2.2 实例编写

import turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("grey")
turtle.seth(-40)
for i in range(3):
    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)
turtle.done()

2.2 模块1:turtle库的使用

2.2.1 turtle库基本介绍

turtle-海龟

turtle库是turtle绘图体系的Python实现

turtle绘图体系诞生于1969,主要用于程序设计入门

turtle库是Python语言的标准库之一,入门级的图形绘制函数库

Python计算生态=标准库+第三方库

标准库:随解释器直接安装到操作系统中的功能模块

第三方库:需要安装才能使用的功能模块

库library、包package、模块module三者略有不同,且统称为模块

Turtle的原理

海龟在窗体中心,在画布上游走,轨迹形成图案

由程序控制,可以改变颜色、宽度等

2.2.2 turtle绘图窗体布局

窗体(绘图窗口)最小单位为像素

屏幕坐标原点为桌面左上角

Turtle绘图窗体坐标原点是窗体左上角

setup()函数:设置窗体位置及大小

setup()函数不是必须的,需要控制位置和大小才用

用法:turtle.setup(窗体宽度,窗体高度,在屏幕的起始点X,在屏幕的起始点Y)

        后两个参数可以没有,默认屏幕正中间

例如:

2.2.3 空间坐标体系

turtle窗体内部的空间坐标体系包含绝对坐标海龟坐标

绝对坐标:窗体中心为原点,正负与笛卡尔坐标系一致

goto()函数:让海龟到达某个坐标位置

用法:turtle.goto(x,y)

海龟坐标:以海龟所在位置为坐标原点

fd():向海龟运行方向前进一段距离

用法:turtle.fd(距离)

说明:这个距离指像素长度

bk():向海龟运行方向反方向后退一段距离

用法:turtle.bk(距离)

circle()函数:向海龟运行方向左侧一定距离为圆心进行曲线运行

用法:turtle.circle(圆弧半径,圆弧角度)

2.2.4 turtle角度坐标体系

绝对角度

以窗体为参考

seth()函数:改变海龟行进方向

用法:seth(绝对角度)

注意:只改变海龟方向(角度)但不行进(没有轨迹)

海龟角度

以海龟前方为0°基线,划定角度

left()函数:让当前海龟向左改变方向

用法:turtle.left(海龟角度)

right函数:让当前海龟向右改变方向

用法:turtle.right(海龟角度)

2.2.5 RGB色彩体系

RGB色彩模式:由三种颜色构成的万物色

RGB指红绿蓝三个颜色通道的色彩组合

覆盖视力能感知的所有颜色

每色取值范围为0-255整数或者0-1小数

中文名称

英文名称

RGB整数值

RGB小数值

白色

white

255,255,255

1,1,1

黄色

yellow

255,255,0

1,1,0

洋红

magenta

255,0,255

1,0,1

青色

cyan

0,255,255

0,1,1

蓝色

blue

0,0,255

0,0,1

黑色

black

0,0,0

0,0,0

海贝色

seashell

255,245,238

1,0.96,0.93 

金色

gold

255,215,0

1,0.84,0   

粉红色

pink

255,192,203

1,0.75,0.80

棕色

brown

165,42,42

0.65,0.16,0.16

紫色

purple

160,32,240

0.63,0.13,0.94

番茄色

tomato

255,99,71

1,0.39,0.28

turtle的RGB色彩模式

默认用小数值,可以切换整数

colormode()函数:确定颜色模式

用法:turtle.colormode(1/255)

用“1”,则后续RGB值均为小数

用“255”,则后续RGB值均为整数

2.4 turtle程序语法元素分析

2.4.1 库引用与import

库引用:扩充Python程序功能的方式

使用保留字import引入库

用法:import 库名

后续使用方法为:库名.函数名(函数参数)

使用保留字from和import引入库

这样在使用函数前不用加“turtle.”

用法:from 库名 import 函数名

from 库名 import *

from 库名 import 函数名(函数参数)

例如:

import turtle

turtle.setup(650,350,200,200)

改写为:

from turtle import*

setup(650,350,200,200)

两种引用库的方法比较

用import引入,使用时“turtle.setup”为一个整体,不会出现重名问题

用from 库名 import* 引入,使用时为“setup”,可能与自定义函数重名

如果程序中使用了多个库,那么尽量用import引入方式

用保留字import和as引入(常用)

用法import 库名 as 库别名(小名)

用一个更简短的名字代替原库名,后续使用时用这个简短的库名就可以

例如:

import turtle as t

t.setup(650,350,200,200)

2.4.2 turtle画笔控制函数

penup()函数

别名:pu()

抬起画笔,不在画布上形成图案

用法:turtle.penup()

pendown(函数)

别名:pd()

放下画笔

用法:turtle.pendown()

pendown与penup成对出现,有起有落

pensize()函数

别名:penwidth()

设置画笔宽度

用法:turtle.pensize(像素宽)

pencolor()函数

设置画笔颜色

用法:turtle.pencolor(颜色字符串或R,G,B值)

颜色字符串:turtle.pencolor("purple")

RGB小数值:turtle.pencolor(0.63,0.13,0.94)

RGB元组值:turtle.pencolor((0.63,0.13,0.94))

pensize与pencolor设置后一直有效,直至下一次设置

2.4.3 turtle运动控制函数

控制海龟行进:走直线 走曲线

forward()函数

别名:fd()

向前行进,海龟走直线

用法:turtle.forward(像素距离)

距离值为正,海龟正向运动

距离值为负,海龟反向运动

circle()函数

绘制弧形曲线

用法:turtle.circle(半径长度,圆心角角度)

半径:正数圆心在海龟左边,负数圆心在海龟右边

同心角:如果未设定此参数,默认为整圆

2.4.4 turtle方向控制函数

海龟原地转动,不行进

控制海龟面对方向:绝对角度 海龟角度

setheading() 函数

别名:seth()

改变行进方向,让海龟原地转动至给定的绝对角度

用法:turtle.seth(角度)

left()函数与right()函数

海龟原地转动至给定的海龟角度(以海龟自身为参考)

用法:

turtle.left(角度)

turtle.right(角度)

2.4.5循环语句与range()函数

range()函数:产生循环计数序列

用法:主要与for和in搭配使用

range(N):产生0到N-1的整数序列,共N个

range(M,N):产生M到N-1的整数序列,共N-M个

保留字for和in实现循环

用法:for 变量 in range(循环次数):

        要循环的语句

例如:

>>> for i in range(5):
    print(i)
0
1
2
3
4
>>> for i in range(5,10):
    print(i)
5
6
7
8
9
>>> for i in range(3):
    print("youth:",i)
youth: 0
youth: 1
youth: 2

备注:从0开始

备注:print函数内、双引号外有逗号时,打印出来会变成空格

done()函数

在文件式中,如果要绘图窗口自动关闭,则不加此语句;如果要保留绘图窗口,手动关闭,则最后加上“turtle.done()”

2.4.6 turtle库函数补充

turtle.hideturtle() 隐藏海龟

turtle.showturtle() 显示海龟

turtle.speed() 控制画笔速度

turtle 的速度介于0到10之间

速度字符串通过以下方式映射到速度值:

‘fastest’:10

‘fast’:10

‘normal’:6

‘slow’:3

‘slowest’:1

从1到10的速度会强制加快线条绘制和 turtle 转向的动画速度

turtle.tracer(False) 实现秒画

turtle.bgcolor(颜色) 设置背景颜色

turtle.home() 海龟返回初始状态(0,0)(使用前应该抬起)

turtle.fillcolor(颜色) 填充颜色,在开始和结束位置用上begin_fill()和end_fill()

turtle.color(颜色) 同时设置画笔和填充的颜色

turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal'))

turtle.write(内容, 画笔位置, 对齐方式, font=('字体', 字号, '类型'))

move(可选):在默认情况下,move为false。如果move为true,则笔将移动到右下角。

align(可选):可取值是left即左、center即中、right即右之一,是字符串格式。

font(可选):字体三元组(fontname、fontsize、fonttype),fontname即字体名称,fontsize即字体大小,fonttype即字体类型如:normal、bold、italic...

参考:(12条消息) Python可视化:python画图字体设置_刘兴禄的博客-CSDN博客_python画图设置字体

用法:turtle.write(内容, font=('字体', 字号, '类型'))就可以

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值