Python程序设计语言笔记第一周基本程序设计1.1程序设计的基本方法——IPO(输入、输出、处理(算法))(1)理解问题的计算部分:抽象问题→使用IPO→从多种方法中选择一种解决问题(2)程序编写步骤:①分析问题:分析问题的计算部分②确定问题:将计算部分划分为IPO三部分③设计算法④编写程序⑤调试测试⑥升级维护例:温度转换问题【问题描述】对于摄氏度和华氏度,存在以下转换:气压结冰点沸点摄氏度1标准大气压0度100度华氏度1标准大气压0度212度请利用python程序完成以上转换。【解题步骤】①分析问题的计算部分简化为三个步骤:②确定功能,利用IPO方法进一步分析:①确定IPO输入:华氏度(F)/摄氏度(C)②编写程序处理:温度转化公式③调试程序输出:摄氏度(C)/华氏度(F)③设计算法④编写程序⑤测试调试⑥升级维护1.2python程序元素分析程序1:#TempConvert.pyval=input(请输入带温度表示符号的温度值(例如:32C):)ifval[-1]in['C','c']:#in判断左侧内容是否在右侧集合中f=1.8*float(val[0:-1])+32#float()将括号中的字符串转换为浮点数print(转换后的温度为:%.2fF%f)#.2表示输出的浮点数f有两位小数elifval[-1]in['F','f']:c=(float(val[0:-1])-32)/1.8print(转换后的温度为:%.2fC%c)else:print(输入有误)(1)缩进:标明代码层次关系、表明程序框架(2)注释:辅助说明,不被执行也不受语法约束,可以写入任何内容,用以提高可读性注释方法:①单行注释:#开头;②多行注释:’’’开头和结尾;(3)变量:能够表示值的一个名称,值可以变化命名:给自定义元素关联名字的过程(唯一性)命名规则:①大小写字母、数字、下划线(大小写不统一)②首字母只能是大小写字母或下划线,不能使用空格③中文等非字母符号也可以作为名字④不能与python定义的保留字相同(4)表达式:产生/计算数据值的一行代码(通过保留字和操作符)(5)空格的使用:①表示每行缩进关系的空格不能改变②空格不能分割命名(6)input()函数:从控制台获得用户的输入。使用方法为:变量=input(提示性文字)获得的用户输入以字符串””的形式保存在变量中如果val=“28C”,则val[-1]=“C”,val[0:2]=“28”表示从区间[0,2)的一个子字符串可以通过val[0:-1]来获取除了最后一个字符以外的字符串(7)分支语句:根据判断条件,执行不同的路径。使用方法:If条件1成立表达式组1elif条件2成立表达式组2…elif条件N-1成立表达式组N-1else:表达式组N(8)赋值:同步赋值:同时给多个变量赋值。使用方法:变量1,…,变量N=表达式1,…,表达式N例:若要使变量x和y的值实现交换,则只需一行代码:x,y=y,x(9)print()函数:用来输出字符信息,或以字符的形式输出变量的值,通过%选择要输出的变量(10)循环语句:控制程序循环运行的语句,根据判断/计数条件确定循环次数。使用方法:forIinrange(计数值):表达式组函数编写模板(1)input–print模板:(2)initial–print模板:①用户输入:input()①初始变量:运算需要的初始值②运算部分:算法实现②运算部分:算法实现③结果输出:print()③结果输出:print()1.3python蟒蛇程序的实现分析:程序2:importturtle#(乌龟)轨迹描绘函数库defdrawSnake(rad,angle,len,neckrad):#绘制蟒蛇函数foriinrange(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)defmain():turtle.setup(1300,800,0,0)#启动图形窗口,参数分别为窗口的宽度、高度#窗口左上角点的横、纵坐标位置pythonsize=30turtle.pensize(pythonsize)#轨迹的宽度,参数为像素大小,这里为30turtle.pencolor(blue)#轨迹颜色,参数为字符串(英文或16进制颜色代码)turtle.seth(-40)#轨迹运动方向,参数为角度(逆时针,以正东方向为0度)drawSnake(40,80,5,pythonsize/2)#绘制蟒蛇函数,用以绘制python蟒蛇main()def定义函数:①函数是一组代码的集合,用以完成特定的功能,这组代码的名字就叫函数名②def所定义的函数,必须要通过函数名对函数进行调用才能执行函数库的引用:方式一:import库名如:importturtle方式二:from库名import函数名from库名import*←调用函数时不需要使用库名,直接使用如:fromturtle*fd(100)注意:方式一可调用不同库中的同名函数,方式二则不可第二周类型及应用2.1类型——编程语言对数据的划分数字类型、字符串类型、元组类型列表类型、文件类型、字典类型(1)数字类型:数字类型对python语言中的数字的表示和使用进行了定义和规范[1]分类:①整数类型②浮点数类型③复数类型①整数类型概念与数学一致,没有取值范围限制例: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]数字类型的关系:←特例←特例整数→浮点数→复数(范围逐渐扩大)整数浮点数浮点数因此这三种数字类型可以进行混合运算,生成结果为最宽类型例:3+4.2=7.2[3]类型转换:利用int(),float()和complex()三个函数实现例:int(4.5)=4;float(4)=4.0;complex(4)=4+0j;【注意】不能将复数转成整数和浮点数!(但可以间接利用取实部虚部的方法实现)[4]数字类型的判断——type(x);例:type(4.5)↙得到class‘float‘[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,y)(x//y,x%y)pow(x,y)x的y次幂(2)字符串类型——用双引号“”或单引号‘‘括起来的一个或多个字符——可以保存在变量中,也可以单独存在[1]判断字符串类型:输入:type(str1)↙输出:class‘str‘[2]可以使用\转义字符输出“”或‘‘之类的字符也可以用同样的方法\\输出转义字符,\n输出换行符等例:print(“\”大家好\””);输出:”大家好”[3]字符串是一个字符序列,字符串最左端位置标示为0,向右递增,字符串中字符位置的标示称为“索引”,例如:可以使用单个索引访问字符串的特定位置。格式如下:string[索引]其中索引可以为常量和表达式[4]python中字符串(设长度为L)索引从0开始,最后一个字符索引为L-1同时也允许使用负数,对字符串从右至左进行反向检索,最右索引值为-1可以通过两个索引值来确定一个范围,从而返回这个范围内的子字符串。格式如下:string[start,end]其中start和end都为整型,索引范围为[start,end)程序实例:【题目描述】输入一个月份数字,返回对应月份名称的缩写【分析】IPO模式:①输入:输入一个表示月份的数字(1-12)②处理:利用字符串基本操作实现功能③输出:输出数字对应月份名称缩写【解答】程序3:#month.pymonths=JanFebMarAprMayJunJulAugSepOctNovDecn=input(请输入月份数(1-12):)pos=(int(n)-1)*3monthAbbrev=months[pos:pos+3]print(月份简写是+monthAbbrev+.)输入:输出:7↙月份简写是Jul.(3)元组类型(Tuple)—包含0个至多个元素的类型,元素之间用逗号分割例:t1=123,45.6,“hello”;t2=();t3=12;元组外部可以使用或不使用括号HelloJhon0123456789[1]元组类型的三个特点:①元组中的元素可以是不同类型的,可以嵌套(用括号区分)②元组中的各个元素存在先后关系,可以通过索引来访问元组中的元素例:t1[0];③元组定义后不能更改和删除——安全[2]与字符串类型类似,可以通过索引区间来访问元组中的部分元素也可以对元组进行+和*的运算例:t2[1:];(4)列表类型(List)—有序的元素集合[1]与元组类似,列表的每个元素类型可以不同,可以通过索引访问列表的单个元素例:a=[0,1,2]print(a)输出:[0,1,2][2]与元组不同,列表的大小没有限制,可以随时修改(5)小结:[1]序列(字符串、元组、列表)类型的操作:序列操作符操作的含义seq+seq连接两个序列seq+整数类型对序列进行整数次重复seq[整数类型]索引序列中的元素seq[整数类型:整数类型]取序列的一个子序列len(seq)序列中元素个数forvarinseq对序列进行循环列举exprinseq成员检查,判断expr是否在序列中[2]方法,格式如下:type.func()①字符串方法:字符串方法含义string.upper()字符串中字母大写string.lower()字符串中字母小写string.strip()去掉两边空格和指定字符string.split()按指定字符分割字符串为数组string.join()连接两个字符串序列string.find()搜索指定字符串string.replace()字符串替换②列表方法:列表方法含义list.append(x)将元素x增加到列表最后list.sort()将列表元素排序list.reverse()将列表元素反转list.index(x)返回第一次出现元素x的索引值list.insert(i,x)在位置i处插入新元素xlist.count(x)返回元素x在列表中的数量list.remove(x)删除列表中第一次出现的元素xlist.pop(i)取出列表中位置i的元素并删除2.2math库和random库的使用及实例:(1)math库:函数数学表示含义圆周率piππ的近似值,15位小数自然常数eee的近似值,15位小数ceil(x)⌈x⌉对浮点数向上取整floor(x)⌊x⌋对浮点数向下取整pow(x,y)𝑥𝑦x的y次幂log(x)lnx以e为底的对数log10(x)log10𝑥以10为底的对数sqrt(x)√𝑥平方根exp(x)𝑒𝑥e的x次幂degrees