收藏 分享(赏)

Python 复习题.doc

上传人:精品资料 文档编号:8473828 上传时间:2019-06-29 格式:DOC 页数:45 大小:1.26MB
下载 相关 举报
Python 复习题.doc_第1页
第1页 / 共45页
Python 复习题.doc_第2页
第2页 / 共45页
Python 复习题.doc_第3页
第3页 / 共45页
Python 复习题.doc_第4页
第4页 / 共45页
Python 复习题.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、Python 复习题Python 语法基础小结(2010-09-08)1 python 的基础数据类型类型 类型名 例子整数 int 1, -5, 0xab实数 float 2.3, 7.8E10字符串 str “abcd”, 你好逻辑 bool True False2 运算符+ 加法 ,字符串联接, 数组融合- 减法* 乘法 , 字符串级联/ 实数除法/ 整除% 求余数* 求幂 in 判断 元素是否在序列类型中for x in 序列类型 : 序列类型遍历and 并且or 或者not 不是比较运算符:= != =赋值语句=+= -= *= /= %= 3 if 语句格式一 if 条件 :如果条

2、件成立执行本段代码else:如果条件不成立执行本段代码格式二if 条件 :如果条件成立执行本段代码格式三 if 条件 1 :如果条件 1 成立执行本段代码elif 条件 2:如果条件 2 成立执行本段代码elif 条件 3:如果条件 3 成立执行本段代码else:如果以上条件都不成立执行本段代码4 for 循环for i in 序列类型:对于 序列类型的每一个元素执行本段代码例一:求数组元素平均的程序#coding=gbk#求数组元素的平均值x=1,2,3,4.6 , 7.1s=0for i in x:s = s + ia = s / len( x )print( “x=“, x )print

3、( “共“, len(x) ,“个元素“)print( “总和=“,s)print( “平均值=“,a)x= 1, 2, 3, 4.6, 7.1共 5 个元素总和= 17.7平均值= 3.54例 2 :求 1+2+3+.+100=?#coding=gbk#求 1+2+3+.+100=?s=0for i in range(1,100+1):s = s + iprint( “1+2+3+.+100=“, s )1+2+3+.+100= 5050例 3 :求 1+3+5+7.+99=?#coding=gbk#求 1+ 3+5+7+.+99=?s=0for i in range(1,99+1,2):s

4、 = s + iprint( “1+3+5+7+.+99=“, s )1+3+5+7+.+99= 2500range(1,100,2)的意思是: 1,3,5,7,.99从 1 开始,到 100 结束,但不包含 100,每次增加 2range(1,101 )的意思是: 1,2,3,.99,100从 1 开始,到 101 结束,但不包含 101,每次增加 1例 4 :求 10+9+8+7+ 1 =?#coding=gbk#求 10+9+8+7+ 1 =?s=0for i in range(10, 0 ,-1):s = s + iprint( “10+9+8+7+ 1=“, s )10+9+8+7+

5、 1= 55例 5 :求数组 10,8,-1, 100,200, 35的最大元素 - 方法一#coding=gbk#求数组 10,8,-1, 100,200, 35的最大元素x = 10,8,-1, 100,200, 35mx = x0for i in range( 0 , len(x) ):if mx =0:if mx =0 的自然数返回值 : n!“f = 1for i in range(1,n+1):f = f * ireturn fprint( “5!=“, fact(5) )5!= 120在 fact 函数中: n 是形式数, f , i 是函数 fact 的局部变量, return

6、 f 是函数的返回值, 5 是调用函数 fact 的实际参数。函数的文档2.3 函数的形式参数与实际参数让我们看下面的例子:#coding=gbkdef test( x1, x2 ):# x1,x2 是形式参数x1 = x1*x1x2 = x2*x2y = x1+x2 # y是局部变量return ya1 = 2a2 = 3b = test( a1,a2 )# a1 , a2 是实际参数print( “a1,a2=“, a1,a2)print( “b=“,b)a1,a2= 2 3b= 13在这个例子中:函数test有两个形式参数:x1和x2。变量a1和a2是函数的实际参数。调用 test(a1

7、,a2)时, 把实际参数a1、a2的值分别传递给形式参数x1、x2,虽然形式参数x1,x2 的值在函数内部被改变了,而实际参数a1,a2没有被改变。2.4 序列类型 之 元组(tuple)将几个量用逗号隔开,用一对园括号括起来,就形成一个元组。例如: ( 1, 2, “abc”)用途: x,y,z = (1,2,3) # 这一句叫作元组的解包。执行该语句后, x=1 ; y=2 ; z=3。实际应用中, 在不产生二义性的时候,可以省略园括号。例如:name, sex, age = “张三”, “男”, 58虽然形式参数 x1,x2的值在函数内部被改变了,而实际参数a1,a2 没有被改变。2.5

8、 元组作为函数的返回值当我们需要从函数中返回多个值时, 可以使用元组作为返回值。#coding=gbk#求序列类型的最大元素和最小元素#入口 : v 序列类型#返回 : ( 最大元素, 最小元素 )def getMaxMin( v ):big = v0small = v0for i in range( 0, len(v):if bigvi:small = vireturn big,small#- 应用举例 -a = 1,2,0,5, 10 x,y = getMaxMin( a )print( “a=“, a)print( “最大元素=“,x, “最小元素=“, y)a = “张三“,“李四“,

9、“王五“,“艰苦奋斗“ x,y = getMaxMin( a )print( “a=“, a)print( “最大元素=“,x, “最小元素=“, y)a = “满清皇帝听说这双刀之中有一个能无敌於天下的大秘密“x,y = getMaxMin( a )print( “a=“, a)print( “最大元素=“,x, “最小元素=“, y)a= 1, 2, 0, 5, 10最大元素= 10 最小元素= 0a= 张三, 李四, 王五, 艰苦奋斗最大元素= 艰苦奋斗 最小元素= 张三a= 满清皇帝听说这双刀之中有一个能无敌於天下的大秘密最大元素= 这 最小元素= 一思考题:请推测下面代码的运行结果是

10、什么Z = ( 8, 4, 2, 10,7 )传入的是(int 类型的)数组传入的是(str 类型的)数组传入的是一个字符串X,Y = getMaxMin( Z ) # getMaxMin 是上面的函数print( X,Y )第 3 章 简单应用题3.1 闰年的计算地球的公转周期是 365.2422 个太阳日,按这个天数,地球围绕太阳公转一周后,并不是整整 365 个昼夜。因此,如果按照每年 365 天算,则每到四年,地球就和四年前的位置差了近一天。这一天的公转距离需要闰(多)一日来补足,因此一般每四年就会出现一个闰年。 0.2422 * 4 = 0.9688 =1#返回:# 1= y 是闰年

11、# 0= y 不是闰年def leapYear( y ):if (y % 400)= 0:lp = 1elif (y % 100)!= 0 and (y % 4)=0:lp =1else:lp = 0return lp#应用举例:#判断下列年份是否为闰年?# 1918,1937, 1949, 1984,2000, 2010yy = 1918,1937, 1949,1984, 2000, 2010 for y in yy:z = leapYear(y)if z=1:s=“是闰年“else:s=“不是闰年“print( y,“年“, s )1918 年 不是闰年1937 年 不是闰年1949 年

12、不是闰年1984 年 是闰年2000 年 是闰年2010 年 不是闰年例题 2:计算 y 年 m 月共有多少天的函数 getLastDay( y,m)#计算 y 年 m 月的天数def getLastDay( y,m):if y12:m=12 # 每个月的正常天数# 月份 1 2 3 4 5 6 7 8 9 10 11 12monthDay=31,28,31,30,31,30,31,31,30,31,30,31r = monthDay m-1if m=2:r = r + leapYear(y) # 此处调用了前面的计算闰年有函数return r例题 3:计算从公元 1 年 1 月 1 日到 y

13、 年 m 月 d 日的天数(含两端)例如: 从公元 1 年 1 月 1 日到 1 年 2 月 2 日的天数是 31+2=33 天分析:要计算从公元 1 年 1 月 1 日到 y 年 m 月 d 日的天数,我们分成三个部分:(1) 计算从公元 1 年到 y-1 年,是整年,每年是 365 天或 366 天(如果某年是闰年)(2) 对于第 y 年, 当 m1 时, 先计算 1 m-1 月整月的天数(3) 最后加上零头(第 m 月的 d 天)即可这种方法,在程序设计中叫做“分而治之” 。#coding=gbk#判断某年是否为闰年的函数#入口: y , int 类型, =1#返回:# 1= y 是闰年

14、# 0= y 不是闰年def leapYear( y ):if y12:m=12 # 每个月的正常天数# 月份 1 2 3 4 5 6 7 8 9 10 11 12monthDay=31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31r = monthDay m-1if m=2:r = r + leapYear(y)return r#计算从公元 1 年 1 月 1 日到 y 年 m 月 d 日的天数(含两端的函数def calcDays( y,m,d ):if y12:m=12if dgetLastDay(y,m):d=getLastDay(y,m)T

15、= 0for i in range(1,y):T = T + 365 + leapYear( i )for i in range(1,m):T = T + getLastDay(y,i)T = T + dreturn Ty,m,d = 2010,9,8T = calcDays( y,m,d)print( “从 1 年 1 月 1 日到“,y,“年“,m,“月“,d,“日 共“, T, “天“) 从 1 年 1 月 1 日到 2010 年 9 月 8 日 共 734023 天例题 4 求某年某月某日 是星期几?分析: 公元 1 年 1 月 1 日是星期一。很久很久以前,上帝创造了天和地。(这一天

16、定为公元 1 年 1 月 1 日)第二天上帝创造空气(大气),或穹苍,称空气为天。 按着上帝的命令,黑暗再次的取代了光明。这是当天的傍晚发生的。第三天,上帝创造了大海和高山。第四天,上帝创造太阳、月亮和星星。从此太阳为地球提供光和热。第五天,上帝创造了空中的鸟和水里的鱼。第六天,上帝创造各类的动物在地上。这事之后,上帝就在第七日安息了。因此,我们也当工作六日,礼拜天休息。根据这个故事,我们知道,要求出某年某月某日是星期几,只需调用 calcDays(y,m,d) , 然后除以 7 余几就是星期几,余 0 就是星期日(礼拜天) 。3.2 计算级数的前 n 项和例 1 求 Sn = 1 +2 +3

17、 +4 + 5 + + n#coding=gbk#求 Sn = 1 +2 +3 +4 + 5 + + n# 方法一: 用累加法def calcSn1( n ):if n 1E-5 *( abs(sn)+abs(s1):#如果还没有达到计算精度s1 = snelse:breakprint( “sn=“,sn)sn= 0.632120811287例 5 计算 的方法是:a(1) 给出初值 x1=1.0,(2) )1(2xx(3) 如果 x1 与 x2 很接近,则 x2 是 的值,否则以 x2 代替 x1,转(2) 。a#coding=gbk#求 a 的算术平方根的近似方法def mysqrt( a

18、 ):if a 1E-5 *( abs(x2)+abs(x1):#如果还没有达到计算精度x1 = x2else:breakreturn x2a=2print( a,“的算术平方根=“,mysqrt( a )a=3print( a,“的算术平方根=“,mysqrt( a )2 的算术平方根= 1.414213562373 的算术平方根= 1.73205080757例 6 求 10-7M HNO3 溶液的 pH 值。分析:我们都知道 强酸的稀溶液中,它是完全电离的。即 HNO3 电离出的 H+与 NO3-都是10-7 M , 但是我们不能认为它的 pH 值=7.H2O = H+ + OH-Kw =

19、 1E-14计算方案:令 x1 = OH- = 1E-7(1) H = C + X1(2) X2 = Kw/H(3) 如果 X1 与 X2 很接近,则 转 (4),否则 令 X1=X2,转( 1)(4) pH = - log 10 H#coding=gbk#计算 1E-7M 的硝酸溶液的 pH 值#令 x = OH# 则 H = OH + C# OH新 = kw/Himport mathdef calcPH( C ):kw = 1E-14x1 = 1E-7 while True:H = x1 + Cx2 = kw/Hif abs(x2-x1) 1E-5 *( abs(x2)+abs(x1):#

20、如果还没有达到计算精度x1 = x2else:breakreturn - math.log10(H)C =1E-7print( C,“M 的硝酸溶液的 pH=“,calcPH(C)1e-07 M 的硝酸溶液的 pH= 6.79101457082讨论:也许,你觉得 我们令 x=OH, 则 (C+x)x=Kw 解一元二次方程就可以了,何必这么麻烦呢?在这里,我们是为了说明一种解题的方法-“迭代法” 。第 4 章 溶液中的酸碱平衡4.1 弱酸水溶液的分布系数三元弱酸水溶液的电离平衡 /32. /1. 33 22 32232 HAkAHOKwO略去电荷,根据电离平衡常数得:H2A = H3A * k1

21、 /HHA = H2A * k2 / H = H3A*k1*k2/H2A = HA * k3 / H = H3A*k1*k2*k3/H3酸的总浓度C = H3A + H2A + HA + A= H3A + H3A * k1 /H + H3A*k1*k2/H2 + H3A*k1*k2*k3/H3 =H3A ( 1 + k1 /H + k1*k2/H2 + k1*k2*k3/H3 )由此可得分布系数的公式:3*21*21*33*21*21*2323232233323 kHkKkHCAkkkHHkKCA 题目: 计算 0.1M NaHAc(草酸氢钠) 溶液的 pH 值k1=0.0562 k2=5.2

22、48e-05分析:(1) 溶液中的物种: H+, OH-, Na+, H2Ac, HAc-, Ac= (2) 草酸的分析浓度(即草酸的各种形式的总和)C = 0.1M:H2A = H2A * C = f0( C,k1,k2,H)HA = HA * C = f1( C,k1,k2,H)A = A * C = f2( C,k1,k2,H)OH = kw/ HNa = C以上各种浓度除 Na 外, 均是 H,k1,k2,C 的函数(3) 为了求取 H , 它们需要满足电荷平衡:H + Na = HA + 2A +OH 即: 0)2*1*21*( 22 kHCkCkw求解这个方程,则这个 H 的值就是

23、溶液的 H+,从而可以求出溶液的 pH 值。4.2 求解一元方程 y=f(x)=0 方程 f(x)=0 有实数解的情况:对于连续函数 f(x) 如果 f(Xa) 与 f( Xb) 符号相反,则方程在 (Xa,Xb) 之间至少存在一个解。对于上面的问题, 我们根据化学知识,知道 ph 一定在 0, 14 之间, 于是我们设计了下面的一个计算方案-迈步法:(1) 给定 pH 初始范围 a0,b0 = 0, 14 (2) 将区间分为 n = 100 等分对每个小区间进行探索, ai, bi 如果 f(ai) 与 f(bi) 符号相反, 则找到了新的求解区间 ai, bi 求解区间结束否则 n=n*2

24、 转(2)#coding=gbk#计算 0.1M 的草酸氢钠水溶液的 pH 值# k1=0.0562 k2=5.248e-05import mathC =0.1k1=0.0562k2=5.248e-05def Q( H):kw = 1E-14OH = kw/HHA = C*k1*H/(H*H + k1*H + k1*k2)A = C*k1*k2/(H*H + k1*H + k1*k2)q = (H + C )-( OH + HA + 2* A ) #电荷平衡return qdef maibu( a0, b0 ):n = 100while True:dh = (b0-a0) / nhaveFin

25、d =0for i in range(0,n):ai = a0 + i*dhbi = ai + dhfa = Q(10*(-ai)fb = Q(10*(-bi)if fa*fb = 1E-5 *( abs(a1)+abs(b1):a0,b0 = a1,b1else:ph=(a1+b1)/2breakprint(“pH=“,ph)pH= 2.866829例 6 求 10-7M HNO3 溶液的 pH 值。分析:我们都知道 强酸的稀溶液中,它是完全电离的。即 HNO3 电离出的 H+与 NO3-都是10-7 M , 但是我们不能认为它的 pH 值=7.H2O = H+ + OH-Kw = 1E-1

26、4计算方案:令 x1 = OH- = 1E-7(1) H = C + X1(2) X2 = Kw/H(3) 如果 X1 与 X2 很接近,则 转 (4),否则 令 X1=X2,转( 1)(4) pH = - log 10 H#coding=gbk#计算 1E-7M 的硝酸溶液的 pH 值#令 x = OH# 则 H = OH + C# OH新 = kw/Himport mathdef calcPH( C ):kw = 1E-14x1 = 1E-7 while True:H = x1 + Cx2 = kw/Hif abs(x2-x1) 1E-5 *( abs(x2)+abs(x1):#如果还没有

27、达到计算精度x1 = x2else:breakreturn - math.log10(H)C =1E-7print( C,“M 的硝酸溶液的 pH=“,calcPH(C)1e-07 M 的硝酸溶液的 pH= 6.79101457082讨论:也许,你觉得 我们令 x=OH, 则 (C+x)x=Kw 解一元二次方程就可以了,何必这么麻烦呢?在这里,我们是为了说明一种解题的方法-“迭代法” 。3.3 水溶液中的酸碱平衡问题例 1 求 0.02M H2A 溶液的 pH 值( )1706.52,10.4kk分析 :(1) 电离平衡 /21 22 HAkAHOKwO(2) 物料平衡 2HC(3)电荷平衡: *2 AO在该体系中有 5 个物种(H 、 OH、H2A、HA、A , 为了方便我们略去了电荷) ,共有 5 个方程,只要解出这个方程组即可。然而,这个方程组解起来不是很方便,是吗?在无机或分析化学中,您一定学过几种近似公式,对于解这道题想信是难不住你的。但在此处,我们想找出一种让计算机求解的方案。(4) 根据电离平衡,我们得到:3/*122/1.22HAKAHkwO将、式代入电离平衡: 4.)./1*2/1/( /22 222 HKKCAH即A二元弱酸的分布系数:2*12*1222222 kKHkCAkkHHA

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报