1、Python程序设计语言笔记Python 程序设计语言 笔记第一周 基本程序设计1.1程序设计的基本方法 IPO(输入、输出、处理(算法)(1)理解问题的计算部分:抽象问题 使用IPO 从多种方法中选择一种解决问题(2)程序编写步骤: 分析问题:分析问题的计算部分 确定问题:将计算部分划分为IPO三部分 设计算法 编写程序 调试测试 升级维护例:温度转换问题【问题描述】对于摄氏度和华氏度,存在以下转换:摄氏度1标准大气压0度100度华氏度1标准大气压0度212度请利用python程序完成以上转换。【解题步骤】1 分析问题的计算部分 简化为三个步骤:2 确定功能,利用IPO方法进一步分析: 确定
2、IPO输入:华氏度(F)/摄氏度(C) 编写程序处理:温度转化公式 调试程序输出:摄氏度(C)/华氏度(F)3 设计算法4 编写程序5 测试调试6 升级维护1.2 python程序元素分析程序1:# TempConvert.pyval = input(请输入带温度表示符号的温度值(例如: 32C): )if val-1 in C,c:# in 判断左侧内容是否在右侧集合中 f = 1.8 * float(val0:-1) + 32# float() 将括号中的字符串转换为浮点数 print(转换后的温度为: %.2fF%f)# .2表示输出的浮点数f有两位小数elif val-1 in F,
3、f: c = (float(val0:-1) - 32) / 1.8 print(转换后的温度为: %.2fC%c)else: print(输入有误)(1)缩进:标明代码层次关系、表明程序框架(2)注释:辅助说明,不被执行也不受语法约束,可以写入任何内容,用以提高可读性 注释方法:1 单行注释:#开头;2 多行注释: 开头和结尾;(3)变量:能够表示值的一个名称,值可以变化 命名:给自定义元素关联名字的过程(唯一性) 命名规则: 大小写字母、数字、下划线(大小写不统一)首字母只能是大小写字母或下划线,不能使用空格中文等非字母符号也可以作为名字 不能与python定义的保留字相同(4)表达式:产
4、生/计算数据值的一行代码(通过保留字和操作符)(5)空格的使用: 表示每行缩进关系的空格不能改变 空格不能分割命名(6)input()函数:从控制台获得用户的输入。使用方法为: = input()获得的用户输入以字符串的形式保存在中如果val = “28C”,则val-1=“C”,val0:2 = “28”表示从区间0,2)的一个子字符串可以通过val0:-1来获取除了最后一个字符以外的字符串(7)分支语句:根据判断条件,执行不同的路径。使用方法:If elif elif else: (8)赋值:同步赋值:同时给多个变量赋值。使用方法:,=,例:若要使变量x和y的值实现交换,则只需一行代码:x
5、, y = y, x(9)print()函数:用来输出字符信息,或以字符的形式输出变量的值,通过%选择要输出的变量(10)循环语句:控制程序循环运行的语句,根据判断/计数条件确定循环次数。使用方法:for I in range():函数编写模板(1)input print模板:(2)initial print模板: 用户输入:input() 初始变量:运算需要的初始值 运算部分:算法实现 运算部分:算法实现 结果输出:print() 结果输出:print()1.3 python蟒蛇程序的实现分析:程序2:import turtle#(乌龟)轨迹描绘函数库def drawSnake(rad,an
6、gle,len,neckrad):#绘制蟒蛇函数 for i in range(len): turtle.circle(rad,angle)#圆形轨迹函数,参数rad描述圆形半径的位置 turtle.circle(-rad,angle)#rad为负值,半径在乌龟右侧 turtle.circle(rad,angle/2)# 参数angle表示乌龟沿圆形爬行的弧度值 turtle.fd(rad)#也称为turtle.forward()函数#表示轨迹直线移动,参数表示移动距离 turtle.circle(neckrad+1,180) turtle.fd(rad*2/3)def main(): tur
7、tle.setup(1300,800,0,0)#启动图形窗口,参数分别为窗口的宽度、高度#窗口左上角点的横、纵坐标位置 pythonsize = 30 turtle.pensize(pythonsize)# 轨迹的宽度,参数为像素大小,这里为30 turtle.pencolor(blue)#轨迹颜色,参数为字符串(英文或16进制颜色代码) turtle.seth(-40)#轨迹运动方向,参数为角度(逆时针,以正东方向为0度)drawSnake(40,80,5,pythonsize/2)#绘制蟒蛇函数,用以绘制python蟒蛇main()def定义函数: 函数是一组代码的集合,用以完成特定的功能
8、,这组代码的名字就叫函数名 def所定义的函数,必须要通过函数名对函数进行调用才能执行函数库的引用:方式一:import 如:import turtle方式二:from import from import*调用函数时不需要使用库名,直接使用如:from turtle * fd(100)注意:方式一可调用不同库中的同名函数,方式二则不可第二周 类型及应用2.1类型 编程语言对数据的划分数字类型、字符串类型、元组类型列表类型、文件类型、字典类型(1)数字类型:数字类型对python语言中的数字的表示和使用进行了定义和规范1分类: 整数类型 浮点数类型 复数类型 整数类型概念与数学一致,没有取值范
9、围限制例:1010(十进制数),0x9a(十六进制数,以0x/0X开头),0b010(二进制数,以0b/0B开头)0o123(八进制数,以0o/0O开头) 浮点数类型是带有小数点及小数的数字,数值范围和小数精度有一定限制,因系统而异例:0.0(与整数0不同),96e4(科学计数法,e/E代表10的次幂,e/E后的数字为指数) 复数类型概念与数学一致,z=a+bj(j/J代表虚数部分)例:12.3+4j对于一个复数,如z = 1.1+9j,可以使用z.real和z.imag来获得复数的实部和虚部2数字类型的关系: 特例 特例整数 浮点数 复数 (范围逐渐扩大) 整数浮点数浮点数因此这三种数字类型
10、可以进行混合运算,生成结果为最宽类型 例: 3+4.2 = 7.23 类型转换:利用int(), float()和complex()三个函数实现例:int(4.5) = 4; float(4) = 4.0; complex(4) = 4 + 0j;【注意】不能将复数转成整数和浮点数!(但可以间接利用取实部虚部的方法实现)4 数字类型的判断 type(x); 例:type(4.5) 得到 5 数字类型的运算:x+yx与y之和x-yx与y之差x*yx与y之积x/yx与y之商x/y不大于x和y之商的最大整数x%yx与y之商的余数+xx-xx的负值x*yx的y次幂abs(x)x的绝对值divmod(x
11、,y)(x/y,x%y)pow(x,y)x的y次幂(2)字符串类型 用双引号“”或单引号括起来的一个或多个字符 可以保存在变量中,也可以单独存在1判断字符串类型:输入:type(str1) 输出:2可以使用 转义字符输出“”或之类的字符也可以用同样的方法 输出转义字符,n 输出换行符等例:print(“”大家好”);输出:”大家好”3 字符串是一个字符序列,字符串最左端位置标示为0,向右递增,字符串中字符位置的标示称为“索引”,例如:0123456789可以使用单个索引访问字符串的特定位置。格式如下:其中索引可以为常量和表达式4 python中字符串(设长度为L)索引从0开始,最后一个字符索引
12、为L-1同时也允许使用负数,对字符串从右至左进行反向检索,最右索引值为-1可以通过两个索引值来确定一个范围,从而返回这个范围内的子字符串。格式如下:,其中start和end都为整型,索引范围为start,end)程序实例:【题目描述】输入一个月份数字,返回对应月份名称的缩写【分析】IPO模式: 输入:输入一个表示月份的数字(1-12) 处理:利用字符串基本操作实现功能 输出:输出数字对应月份名称缩写【解答】程序3:# month.pymonths=JanFebMarAprMayJunJulAugSepOctNovDecn=input(请输入月份数(1-12):)pos=(int(n)-1) *
13、 3monthAbbrev=monthspos:pos+3print(月份简写是+monthAbbrev+.)输入: 输出:7 月份简写是Jul.(3)元组类型(Tuple) 包含0个至多个元素的类型,元素之间用逗号分割例:t1 = 123, 45.6, “hello”; t2 = (); t3 = 12;元组外部可以使用或不使用括号1元组类型的三个特点: 元组中的元素可以是不同类型的,可以嵌套(用括号区分) 元组中的各个元素存在先后关系,可以通过索引来访问元组中的元素 例:t10; 元组定义后不能更改和删除 安全2 与字符串类型类似,可以通过索引区间来访问元组中的部分元素也可以对元组进行+和
14、*的运算 例:t21:;(4)列表类型( List ) 有序的元素集合1 与元组类似,列表的每个元素类型可以不同,可以通过索引访问列表的单个元素 例:a = 0,1,2 print(a) 输出:0,1,22 与元组不同,列表的大小没有限制,可以随时修改(5)小结:1 序列(字符串、元组、列表)类型的操作:序列操作符操作的含义 + 连接两个序列 + 对序列进行整数次重复索引序列中的元素:取序列的一个子序列len()序列中元素个数for in 对序列进行循环列举 in 成员检查,判断是否在序列中2 方法,格式如下:.func() 字符串方法:字符串方法含义.upper()字符串中字母大写.lowe
15、r()字符串中字母小写.strip()去掉两边空格和指定字符.split()按指定字符分割字符串为数组.join()连接两个字符串序列.find()搜索指定字符串.replace()字符串替换 列表方法:列表方法含义.append(x)将元素x增加到列表最后.sort()将列表元素排序.reverse()将列表元素反转.index(x)返回第一次出现元素x的索引值.insert(i,x)在位置i处插入新元素x.count(x)返回元素x在列表中的数量.remove(x)删除列表中第一次出现的元素x.pop(i)取出列表中位置i的元素并删除2.2 math库和random库的使用及实例:(1)m
16、ath库:圆周率pi的近似值,15位小数自然常数eee的近似值,15位小数ceil(x)x对浮点数向上取整floor(x)x对浮点数向下取整pow(x,y)x的y次幂log(x)lnx以e为底的对数log10(x)以10为底的对数sqrt(x)平方根exp(x)e的x次幂degrees(x)弧度转角度radians(x)角度转弧度sin(x)sinxx的正弦值cos(x)cosxx的余弦值tan(x)tanxx的正切值asin(x)arcsinxx的反正弦值acos(x)arccosxx的反余弦值atan(x)arctanxx的反正切值x-1.0, 1.0(2)random库:seed(x)给
17、随机数一个种子值,默认随机种子是系统时钟random()生成一个0, 1.0之间的随机小数uniform(a,b)生成一个a到b之间的随机小数randint(a,b)生成一个a到b之间的随机整数randrange(a,b,c)随机生成一个从a开始到b以c递增的数choice()从列表中随机返回一个元素shuffle()将列表中元素随机打乱sample(,k)从指定列表随机获取k个元素【注意】seed()函数用来设置随机种子,随机种子相同,随机序列相同 伪随机数实例:的计算 蒙特卡洛方法(随机抽样/统计实验方法) 先构造单位正方形和1/4圆向正方形内抛洒大量点统计落入圆内的点占所有点的比例【分析
18、】IPO: 输入:抛点的数量 处理:对于每个抛洒点,计算点到圆心的距离 通过判断该点在圆内或圆外。统计圆内点的数量 输出:值程序4:# pi.pyfrom random import randomfrom math import sqrtfrom time import clockDARTS = 1200hits = 0clock()for i in range(1,DARTS):#抛洒DARTS次 x, y = random(), random() # 给出随机坐标(x,y) dist = sqrt(x*2 + y*2)#计算抛点到原点的距离 if dist 75 打印空气污染警告 If P
19、M2.5值 75: print(Unhealthy. Be careful!) if PM 35: print(Good. Go running!)main()【运行结果】输出: 输入:What is todays PM2.5? 90Unhealthy. Be careful!(1)If语句格式:If :【注】是条件表达式,是一个或多个语句序列先判断条件,若true,则执行,再转向下一条语句;若false,则直接跳过,转向下一条语句(2)简单条件构造 简单条件基本形式 是关系操作符, =, , != 使用“=”表示赋值语句,使用“=”表示等于 除数字外,字符或字符串也可以按照字典顺序用于条件比
20、较 是布尔表达式,为bool类型布尔值的真假以True和False表示(3)二分支语法结构If :else:程序6:# quadratic.py# 计算二次方程的实数根程序import mathdef main(): print(This program finds the real solutions to a quadraticn) a,b,c = eval(input(Please enter the coefficients(a,b,c): ) delta = b*b - 4*a*c if delta = 0: discRoot = math.sqrt(delta) root1 = (
21、-b + discRoot) / (2*a) root2 = (-b - discRoot) / (2*a) print(nThe solutions are:, root1, root2)else: print(The equation has no real roots!)main()【运行结果】输出:This program finds the real solutions to a quadratic输入:Please enter the coefficients(a,b,c): 1,2,3The equation has no real roots!3.3 多分支(1)多分支决策 要
22、解决双根问题,就需要对delta等于0的情况进行处理。语句的结构上要引入嵌套结构: 当delta 0,处理双根情况一种方案是在程序中使用两个if-else语句。把一个复合语句放到另一个语句的结构之中称为嵌套。1. 多分支决策是解决复杂问题的重要手段之一2. 一个三分之决策可以由两个二分支结构嵌套实现3. 使用if-else描述多分支决策时,实现更多分支需要更多嵌套,影响程序易读性Python使用if-elif-else描述多分支决策,简化分支结构的嵌套问题。格式如下:If : elif : elif : else: 例:程序7:# quadratic.pyimport mathdef main
23、(): print(This program finds the real solutions to a quadraticn) a,b,c = eval(input(Please enter the coefficients(a,b,c): ) delta = b*b - 4*a*c if a = 0: x = -b/c print(nThere is an solution, x) elif delta 0: print(nThe equation has no real roots!) elif dalta = 0: x = -b/(2*a) print(nTheere is a double root at, x) else: discRoot = math.sqrt(delta) root1 = (-b + discRoot) / (2*a) root2 = (-b - discRoot) / (2*a) print(nThe solutions are:, root1, root2)main()3.4 异常处理异常处理语句Python使用tryexcept,可使程序不因运行错误而崩溃Python的异常处理语句还可以使用else和finally关键字(可选项,若使用则else必须在finally之前)格式如下:try: except : excep
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1