




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 Python 复习题 PythonPython 语法基础小结语法基础小结 2010 09 08 2010 09 08 1 1 pythonpython 的基础数据类型的基础数据类型 类型类型名例子 整数 int1 5 0 xab 实数 float2 3 7 8E10 字符串 str abcd 你好 逻辑 boolTrue False 2 2 运算符运算符 加法 字符串联接 数组融合 减法 乘法 字符串级联 实数除法 整除 求余数 求幂 in 判断 元素是否在序列类型中 forfor x in 序列类型 序列类型遍历 and 并且 or 或者 not 不是 比较运算符 赋值语句 精品文档 2欢迎下载 3 if 语句 格式一 ifif 条件条件 如果条件成立执行本段代码如果条件成立执行本段代码 else else 如果条件不成立执行本段代码如果条件不成立执行本段代码 格式二 ifif 条件条件 如果条件成立执行本段代码如果条件成立执行本段代码 格式三 ifif 条件条件 1 1 如果条件如果条件 1 1 成立执行本段代码成立执行本段代码 elifelif 条件条件 2 2 如果条件如果条件 2 2 成立执行本段代码成立执行本段代码 elifelif 条件条件 3 3 如果条件如果条件 3 3 成立执行本段代码成立执行本段代码 else else 如果以上条件都不成立执行本段代码如果以上条件都不成立执行本段代码 4 for 循环 for i in 序列类型 对于 序列类型的每一个元素执行本段代码 例一 求数组元素平均的程序 coding gbk coding gbk 求数组元素的平均值求数组元素的平均值 x 1 2 3 4 6x 1 2 3 4 6 7 1 7 1 s 0s 0 forfor i i inin x x s s s s i i a a s s len len x x print print x x x x print print 共共 len x len x 个元素个元素 print print 总和总和 s s print print 平均值平均值 a a x 1 2 3 4 6 7 1 共 5 个元素 精品文档 3欢迎下载 总和 17 7 平均值 3 54 例例 2 2 求 求 1 2 3 100 1 2 3 100 coding gbk coding gbk 求求 1 2 3 100 1 2 3 100 s 0s 0 forfor i i inin range 1 100 1 range 1 100 1 s s s s i i print print 1 2 3 100 1 2 3 100 s s 1 2 3 100 5050 例例 3 3 求 求 1 3 5 7 99 1 3 5 7 99 coding gbk coding gbk 求求 1 1 3 5 7 99 3 5 7 99 s 0s 0 forfor i i inin range 1 99 1 range 1 99 1 2 2 s s s s i i print print 1 3 5 7 99 1 3 5 7 99 s s 1 3 5 7 99 2500 range 1 100 2 的意思是 的意思是 1 3 5 7 99 从从 1 开始 到开始 到 100 结束 但不结束 但不 包含包含 100 每次增加 每次增加 2 range 1 101 的意思是 的意思是 1 2 3 99 100 从从 1 开始 到开始 到 101 结束 但不结束 但不 包含包含 101 每次增加 每次增加 1 精品文档 4欢迎下载 例例 4 4 求 求 10 9 8 7 10 9 8 7 1 1 coding gbk coding gbk 求求 10 9 8 7 10 9 8 7 1 1 s 0s 0 forfor i i inin range 10 range 10 0 0 1 1 s s s s i i print print 10 9 8 7 10 9 8 7 1 1 s s 10 9 8 7 1 55 例例 5 5 求数组 求数组 10 8 1 10 8 1 100 200 100 200 35 35 的最大元素的最大元素 方法一方法一 coding gbk coding gbk 求数组求数组 10 8 1 10 8 1 100 200 100 200 35 35 的最大元素的最大元素 x x 10 8 1 10 8 1 100 200 100 200 35 35 mxmx x 0 x 0 forfor i i inin range range 0 0 len x len x ifif mxmx x i x i mxmx x i x i print print x x x x print print 最大元素最大元素 mx mx x 10 8 1 100 200 35 最大元素 200 例例 6 6 求数组 求数组 10 8 1 10 8 1 100 200 100 200 35 35 的最大元素的最大元素 方法二方法二 coding gbk coding gbk 求数组求数组 10 8 1 10 8 1 100 200 100 200 35 35 的最大元素的最大元素 x x 10 8 1 10 8 1 100 200 100 200 35 35 mxmx x 0 x 0 forfor y y inin x x ifif mxmx y y mxmx y y print print x x x x print print 最大元素最大元素 mx mx x 10 8 1 100 200 35 最大元素 200 range 10 0 1 的意思是 的意思是 10 9 8 7 6 1 从从 10 开始 到开始 到 0 结束 但不结束 但不 包含包含 0 每次增加 每次增加 1 精品文档 5欢迎下载 5 while 循环 格式 whilewhile 条件条件 当条件成立时 一直执行本段当条件成立时 一直执行本段 如果条件成立 一直执行后面的 语句块 这意味着 您需要在这意味着 您需要在 循环体的循环体的 语句块中于适当语句块中于适当 的时候改变条件表达式中的某个 或某些 变量 的时候改变条件表达式中的某个 或某些 变量 或者使用或者使用 breakbreak 中止循环 中止循环 while 与 if 的不同是 if 条件 如果条件成立 执行一次本段代码 而 while 则是 一直重复执行那段代码 直到 条件不满足时为止 场景一场景二 狄仁杰说道 我只问你一个问题 说了就放你走 山无陵 天地合 乃敢与君绝 if 说了 就放你走 while not 山无陵 天地合 与君一直在一起 例例 1 1 求数组 求数组 10 8 1 10 8 1 100 200 100 200 35 35 的最大元素的最大元素 方法三方法三 coding gbk coding gbk 求数组求数组 10 8 1 10 8 1 100 200 100 200 35 35 的最大值的最大值 x x 10 8 1 10 8 1 100 200 100 200 35 35 mxmx x 0 x 0 i i 0 0 whilewhile i i len x len x ifif mxmx 0 0 ifif mxmx x i x i mxmx x i x i i i i i 1 1 print print x x x x print print 最大元素最大元素 mx mx x 10 8 1 100 200 35 最大元素 200 死循环的用法 例例 3 3 求数组 求数组 10 8 1 10 8 1 100 200 100 200 35 35 的最大元素的最大元素 方法五方法五 coding gbk coding gbk 求数组求数组 10 8 1 10 8 1 100 200 100 200 35 35 的最大值的最大值 x x 10 8 1 10 8 1 100 200 100 200 35 35 mxmx x 0 x 0 i i len x 1len x 1 whilewhile True True ifif mxmx x i x i mxmx x i x i i i i i 1 1 ifif i i 0 0 的自然数的自然数 返回值返回值 n n f f 1 1 forfor i i inin range 1 n 1 range 1 n 1 f f f f i i returnreturn f f print print 5 5 fact 5 fact 5 5 120 在 fact 函数中 n n 是形式数是形式数 f i 是函数 fact 的局部变量局部变量 return f 是函数的返回值返回值 5 是调用函数 fact 的实际参数实际参数 函数的文档 精品文档 10欢迎下载 2 32 3 函数的形式参数与实际参数函数的形式参数与实际参数 让我们看下面的例子 coding gbk coding gbk defdef test test x1 x1 x2x2 x1 x2x1 x2 是形式参数是形式参数 x1x1 x1 x1x1 x1 x2x2 x2 x2x2 x2 y y x1 x2x1 x2 y y是局部变量是局部变量 returnreturn y y a1a1 2 2 a2a2 3 3 b b test test a1 a2a1 a2 a1a1 a2a2 是实际参数是实际参数 print print a1 a2 a1 a2 a1 a2 a1 a2 print print b b b b a1 a2 2 3 b 13 在这个例子中 函数test有两个形式参数 x1和x2 变量a1和a2是函数的实际参数 调用 test a1 a2 时 把实际参数a1 a2的值分别传递给形式参数 x1 x2 虽然形式参数虽然形式参数x1 x2x1 x2的值在函数内部被改变了 而实际参数的值在函数内部被改变了 而实际参数a1 a2a1 a2没有没有 被改变被改变 2 42 4 序列类型序列类型 之之 元组元组 tuple tuple 将几个量用逗号隔开 用一对园括号括起来 就形成一个元组元组 例如 1 2 abc 用途 x y z 1 2 3 这一句叫作元组的解包解包 执行该语句后 x 1 y 2 z 3 实际应用中 在不产生二义性的时候 可以省略园括号 例如 name name sex sex ageage 张三张三 男男 5858 虽然形式参数虽然形式参数 x1 x2x1 x2 的值在函数内部被改的值在函数内部被改 变了 而实际参数变了 而实际参数 a1 a2a1 a2 没有被改变没有被改变 精品文档 11欢迎下载 2 52 5 元组作为函数的返回值元组作为函数的返回值 当我们需要从函数中返回多个值时 可以使用元组作为返回值 coding gbk coding gbk 求序列类型的最大元素和最小元素求序列类型的最大元素和最小元素 入口入口 v v 序列类型序列类型 返回返回 最大元素最大元素 最小元素最小元素 defdef getMaxMin getMaxMin v v bigbig v 0 v 0 smallsmall v 0 v 0 forfor i i inin range range 0 0 len v len v ifif big v i bigv i small v i smallsmall v i v i returnreturn big smallbig small 应用举例应用举例 a a 1 2 0 5 1 2 0 5 1010 x yx y getMaxMin getMaxMin a a print print a a a a print print 最大元素最大元素 x x 最小元素最小元素 y y a a 张三张三 李四李四 王五王五 艰苦奋斗艰苦奋斗 x yx y getMaxMin getMaxMin a a print print a a a a print print 最大元素最大元素 x x 最小元素最小元素 y y a a 满清皇帝听说这双刀之中有一个能无敌於天下的大秘密满清皇帝听说这双刀之中有一个能无敌於天下的大秘密 x yx y getMaxMin getMaxMin a a print print a a a a print print 最大元素最大元素 x x 最小元素最小元素 y y a a 1 1 2 2 0 0 5 5 10 10 最大元素最大元素 1010 最小元素最小元素 0 0 a a 张三张三 李四李四 王五王五 艰苦奋斗艰苦奋斗 最大元素最大元素 艰苦奋斗艰苦奋斗 最小元素最小元素 张三张三 a a 满清皇帝听说这双刀之中有一个能无敌於天下的大秘密满清皇帝听说这双刀之中有一个能无敌於天下的大秘密 最大元素最大元素 这这 最小元素最小元素 一一 思考题 请推测下面代码的运行结果是什么 Z Z 8 8 4 4 2 2 10 710 7 X YX Y getMaxMin getMaxMin Z Z getMaxMingetMaxMin 是上面的函数是上面的函数 print print X YX Y 传入的是 传入的是 int 类型的 数组类型的 数组 传入的是 传入的是 str 类型的 数组类型的 数组 传入的是一个字符串传入的是一个字符串 精品文档 12欢迎下载 第第 3 3 章章 简单应用题简单应用题 3 13 1 闰年的计算闰年的计算 地球的公转周期是 365 2422 个太阳日 按这个天数 地球围绕太阳公转一周后 并 不是整整 365 个昼夜 因此 如果按照每年 365 天算 则每到四年 地球就和四年前的位置差了近一天 这 一天的公转距离需要闰 多 一日来补足 因此一般每四年就会出现一个闰年 0 2422 4 0 9688 1 1 返回 返回 1 1 y y 是闰年是闰年 0 0 y y 不是闰年不是闰年 defdef leapYear leapYear y y ifif y y 400 400 0 0 lplp 1 1 elifelif y y 100 100 0 0 andand y y 4 0 4 0 lplp 1 1 else else lplp 0 0 returnreturn lplp 应用举例应用举例 判断下列年份是否为闰年 判断下列年份是否为闰年 1918 1937 1918 1937 1949 1949 1984 2000 1984 2000 20102010 yyyy 1918 1937 1918 1937 1949 1984 1949 1984 2000 2000 20102010 forfor y y inin yy yy z z leapYear y leapYear y ifif z 1 z 1 s s 是闰年是闰年 else else s s 不是闰年不是闰年 print print y y 年年 s s 1918 年 不是闰年 1937 年 不是闰年 1949 年 不是闰年 1984 年 是闰年 2000 年 是闰年 2010 年 不是闰年 精品文档 15欢迎下载 例题 2 计算 y 年 m 月共有多少天的函数 getLastDay y m 计算计算 y y 年年 m m 月的天数月的天数 defdef getLastDay getLastDay y m y m ifif y 1 y 1 y 1y 1 ifif m 1 m12 m 12 m 12m 12 每个月的正常天数每个月的正常天数 月份月份 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1010 1111 1212 monthDay 31 28 31 30 31 30 31 31 30 31 30 31 monthDay 31 28 31 30 31 30 31 31 30 31 30 31 r r monthDay monthDay m 1 m 1 ifif m 2 m 2 r r r r leapYear y leapYear y 此处调用了前面的计算闰年有函数此处调用了前面的计算闰年有函数 returnreturn r r 例题 3 计算从公元 1 年 1 月 1 日到 y 年 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 年 当 m 1 时 先计算 1 m 1 月整月的天数 3 最后加上零头 第 m 月的 d 天 即可 这种方法 在程序设计中叫做 分而治之分而治之 精品文档 16欢迎下载 coding gbk coding gbk 判断某年是否为闰年的函数判断某年是否为闰年的函数 入口 入口 y y intint 类型类型 1 1 返回 返回 1 1 y y 是闰年是闰年 0 0 y y 不是闰年不是闰年 defdef leapYear leapYear y y ifif y 1 y 1 y 1y 1 ifif y y 400 400 0 0 lplp 1 1 elifelif y y 100 100 0 0 lp 0lp 0 elifelif y y 4 0 4 0 lplp 1 1 else else lplp 0 0 returnreturn lplp 计算计算 y y 年年 m m 月的天数月的天数 defdef getLastDay getLastDay y m y m ifif y 1 y 1 y 1y 1 ifif m 1 m12 m 12 m 12m 12 每个月的正常天数每个月的正常天数 月份月份 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1010 1111 1212 monthDay 31 monthDay 31 28 28 31 31 30 30 31 31 30 30 31 31 31 31 30 30 31 31 30 30 31 31 r r monthDay monthDay m 1 m 1 ifif m 2 m 2 r r r r leapYear y leapYear y returnreturn r r 计算从公元计算从公元 1 1 年年 1 1 月月 1 1 日到日到 y y 年年 m m 月月 d d 日的天数日的天数 含两端的函数含两端的函数 defdef calcDays calcDays y m dy m d ifif y 1 y 1 y 1y 1 ifif m 1 m12 m 12 精品文档 17欢迎下载 m 12m 12 ifif d 1 dgetLastDay y m d getLastDay y m d getLastDay y m d getLastDay y m T T 0 0 forfor i i inin range 1 y range 1 y T T T T 365365 leapYear leapYear i i forfor i i inin range 1 m range 1 m T T T T getLastDay y i getLastDay y i T T T T d d returnreturn T T y m dy m d 2010 9 82010 9 8 T T calcDays calcDays y m d y m d print print 从从 1 1 年年 1 1 月月 1 1 日到日到 y y 年年 m m 月月 d d 日日 共共 T T 天天 从从 1 1 年年 1 1 月月 1 1 日到日到 20102010 年年 9 9 月月 8 8 日日 共共 734023734023 天天 例题 4 求某年某月某日 是星期几 分析 公元 1 年 1 月 1 日是星期一 很久很久以前 上帝创造了天和地 这一天定为公元 1 年 1 月 1 日 第二天上帝创造空气 大气 或穹苍 称空气为天 按着上帝的命令 黑暗再次 的取代了光明 这是当天的傍晚发生 的 第三天 上帝创造了大海和高山 第四天 上帝创造太阳 月亮和星星 从此太阳为地球提供光和热 第五天 上帝创造了空中的鸟和水里 的鱼 第六天 上帝创造各类的动物在地上 这事之后 上帝就在第七日安息了 因此 我们也当工作六日 礼拜天休息 精品文档 18欢迎下载 根据这个故事 我们知道 要求出某年某月某日是星期几 只需调用 calcDays y m d calcDays y m d 然后除以 7 余几就是星期几 余 0 就是星期日 礼拜天 3 23 2 计算级数的前计算级数的前 n n 项和项和 例 1 求 Sn 1 2 3 4 5 n coding gbk coding gbk 求求 SnSn 1 1 2 2 3 3 4 4 5 5 n n 方法一 方法一 用累加法用累加法 defdef calcSn1 calcSn1 n n ifif n 1 n 1 returnreturn 0 0 s s 0 0 forfor i i inin range 1 n 1 range 1 n 1 s s s s i i returnreturn s s 方法二 方法二 用等差级数的求和公式用等差级数的求和公式 入口入口 a0a0 第一项第一项 n n 项数项数 d d 公差公差 返回返回 SnSn Sn n a0 n n 1 d 2Sn n a0 n n 1 d 2 defdef calcSn2 calcSn2 a0 n da0 n d ifif type a0 type a0 int int andand type d type d int int returnreturn n a0 n a0 n n 1 d 2n n 1 d 2 else else returnreturn n a0 n a0 n n 1 d 2n n 1 d 2 n n 100100 print print Sn Sn 1 1 2 2 3 3 4 4 5 5 n n print print n n n n print print 累加法累加法 Sn Sn calcSn1 calcSn1 n n print print 公式法公式法 Sn Sn calcSn2 calcSn2 1 100 11 100 1 SnSn 1 1 2 2 3 3 4 4 5 5 n n n n 100100 累加法累加法 Sn Sn 50505050 公式法公式法 Sn Sn 50505050 精品文档 19欢迎下载 例例 2 2 求求 SnSn 1 1 1111 111 111 1111 1111 11111111 111 111 最后一项是最后一项是 n n 个个 1 1 分析 第 1 项 T 1 1 第 2 项 T2 11 T1 10 1 第 3 项 T3 111 T2 10 1 即后一项 前一项 10 加 1 coding gbk coding gbk 求求 SnSn 1 1 1111 111 111 1111 1111 1111 111 1111 111 最后一项是最后一项是 n n 个个 1 1 defdef calcSn calcSn n n T T 1 1 S S 0 0 forfor I I inin range range 1 1 n 1 n 1 S S S S T T T T T T 1010 1 1 returnreturn S S n 3n 3 print print S n S n calcSn calcSn n n S S 3 3 123123 说明 本算法对 python 没有问题 对于 C 或 delphi 由整数可以表示的范围 太小 用实数 得出的结果又不够精确 当 n 较大时 需要先解决大数运算问题 例例 3 3 求求 SnSn 1 1 3 3 5 5 7 7 9 9 1111 分析 序号 I第 I 项的符号第 I 项的绝对值 1 1 2 3 3 5 4 7 I 1 I 1 2 I 1 观察 1 第 I 项 XI的绝对值 与 其前一项 XI 1 的绝对值的关系 X Xi i X Xi 1 i 1 2 2 2 第 I 项 XI的符号 FI 与 其前一项 XI 1 的符号 FI 1的关系 F FI I F FI 1 I 1 精品文档 20欢迎下载 coding gbk coding gbk 求求 SnSn 1 1 3 3 5 5 7 7 9 9 1111 defdef calcSn calcSn n n X X 1 1 S S 0 0 F F 1 1 forfor I I inin range range 1 1 n 1 n 1 S S S S F XF X X X X X 2 2 F F F F returnreturn S S n 4n 4 print print S n S n calcSn calcSn n n S S 4 4 4 4 例例 4 4 计算计算 6 1 5 1 4 1 3 1 2 1 1 要求 计算的相对偏差小于要求 计算的相对偏差小于 1010 5 5 coding gbk coding gbk 计算计算 snsn 1 1 1 2 1 2 1 3 1 3 1 4 1 4 要求 要求 计算的相对偏差计算的相对偏差 10 5 abs sn s1 1E 51E 5 abs sn abs s1 abs sn abs s1 如果还没有达到计算精度如果还没有达到计算精度 s1s1 snsn else else breakbreak print print sn sn sn sn sn 0 632120811287 精品文档 21欢迎下载 例例 5 5 计算计算的方法是 的方法是 a 1 1 给出初值给出初值 x1 1 0 x1 1 0 2 2 1 1 2 1 2 x a xx 3 3 如果如果 x1x1 与与 x2x2 很接近 则很接近 则 x2x2 是是的值 否则以的值 否则以 x2x2 代替代替 x1 x1 转 转 2 2 a coding gbk coding gbk 求求 a a 的算术平方根的近似方法的算术平方根的近似方法 defdef mysqrt mysqrt a a ifif a 0 aabs x2 x1 1E 51E 5 abs x2 abs x1 abs x2 abs x1 如果还没有达到计算精度如果还没有达到计算精度 x1x1 x2x2 else else breakbreak returnreturn x2x2 a 2a 2 print print a a 的算术平方根的算术平方根 mysqrt mysqrt a a a 3a 3 print print a a 的算术平方根的算术平方根 mysqrt mysqrt a a 2 2 的算术平方根的算术平方根 1 414213562371 41421356237 3 3 的算术平方根的算术平方根 1 732050807571 73205080757 精品文档 22欢迎下载 例例 6 6 求求 1010 7 7M M HNO HNO3 3溶液的溶液的 pHpH 值 值 分析 我们都知道 强酸的稀溶液中 它是完全电离的 即 HNOHNO3 3 电离出的 H 与 NO3 都是 1010 7 7 M 但是我们不能认为它的 pH 值 7 H2O H OH Kw 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 coding gbk 计算计算 1E 7M1E 7M 的硝酸溶液的的硝酸溶液的 pHpH 值值 令令 x x OH OH 则则 H H OH OH C C OH OH 新新 kw Hkw H importimport mathmath defdef calcPH calcPH C C kwkw 1E 141E 14 x1x1 1E 71E 7 whilewhile True True H H x1x1 C C x2x2 kw Hkw H ifif abs x2 x1 abs x2 x1 1E 51E 5 abs x2 abs x1 abs x2 abs x1 如果还没有达到计算精度如果还没有达到计算精度 x1x1 x2x2 else else breakbreak returnreturn math log10 H math log10 H C C 1E 7 1E 7 print print C MC M 的硝酸溶液的的硝酸溶液的 pH calcPH C pH calcPH C 1e 07 M 的硝酸溶液的 pH 6 79101457082 讨论 也许 你觉得 我们令 x OH 则 C x x Kw 解一元二次方程就可以了 何必这么麻 烦呢 在这里 我们是为了说明一种解题的方法 迭代法 精品文档 23欢迎下载 第第 4 4 章章 溶液中的酸碱平衡溶液中的酸碱平衡 4 14 1 弱酸水溶液的分布系数弱酸水溶液的分布系数 三元弱酸水溶液的电离平衡 3 2 1 33 22 32 23 2 HAAHkAHHA AHHAHkHAHAH AHAHHkAHHAH OHHKwOHHOH 略去电荷 根据电离平衡常数得 H2A H3A k1 H HA H2A k2 H H3A k1 k2 H2 A 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 2 1 2 1 1 3 2 1 3 2 1 2 1 1 2 1 3 2 1 2 1 1 1 3 2 1 2 1 1 23 23 23 2 2 23 3 3 2 3 kkkHkKHkH kkK C A kkkHkKHkH HkK C HA kkkHkKHkH Hk C AH kkkHkKHkH H C AH A HA AH AH 精品文档 24欢迎下载 题目 题目 计算计算 0 1M0 1M NaHAc NaHAc 草酸氢钠草酸氢钠 溶液的溶液的 pHpH 值值 k1 0 0562k1 0 0562 k2 5 248e 05k2 5 248e 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 H Na C 以上各种浓度除 Na 外 均是 H k1 k2 C 的函数 3 为了求取 H 它们需要满足电荷平衡 H Na HA 2 A OH 即 0 2 1 1 1 2 2 1 1 1 22 kkHkH Hk C kkHkH Hk C H kw CH 求解这个方程 则这个 H 的值就是溶液的 H 从而可以求出溶液的 pH 值 4 24 2 求解一元方程求解一元方程 y f x 0y 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 转 2 精品文档 25欢迎下载 coding gbk 计算 0 1M 的草酸氢钠水溶液的 pH 值 k1 0 0562 k2 5 248e 05 import math C 0 1 k1 0 0562 k2 5 248e 05 def Q H kw 1E 14 OH kw H HA C k1 H H H k1 H k1 k2 A C k1 k2 H H k1 H k1 k2 q H H C C OHOH HAHA 2 2 A A 电荷平衡电荷平衡 return q def maibu a0 b0 n 100 while True dh b0 a0 n haveFind 0 for i in range 0 n ai a0 i dh bi ai dh fa Q 10 ai fb Q 10 bi if fa fb 0 haveFind 1 break if haveFind 0 n n 2 else break return ai bi a1 b1 maibu 0 14 print a1 b1 2 8 2 94 通过一次迈步法的搜索 我们得到 溶液的 pH 值在 2 8 与 2 94 之 当我们得到了一个小区间后 可以进一步的搜索 得到更小的区间 那么何时停步搜索呢 如果小区间的两端非常接近了 则可以停止搜索 取该区间的中点就是我们要求的 pH 值 精品文档 26欢迎下载 方案如下 1 A0 B0 0 14 2 进行一次搜索 a1 b1 maibu a0 b0 3 如果 a1 与 b1 很接近 则 ph a1 b1 2 停止搜索 否则 令 a0 a1 b0 b1 转 2 coding gbk 计算 0 1M 的草酸氢钠水溶液的 pH 值 k1 0 0562 k2 5 248e 05 import math C 0 1 k1 0 0562 k2 5 248e 05 def Q H kw 1E 14 OH kw H HA 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 q def maibu a0 b0 n 100 while True dh b0 a0 n haveFind 0 for i in range 0 n ai a0 i dh bi ai dh fa Q 10 ai fb Q 10 bi if fa fb abs a1 b1 1E 51E 5 abs a1 abs b1 abs a1 abs b1 a0 b0a0 b0 a1 b1a1 b1 else else ph a1 b1 2ph a1 b1 2 breakbreak print pH ph pH 2 866829 精品文档 27欢迎下载 精品文档 28欢迎下载 例例 6 6 求求 1010 7 7M M HNO HNO3 3溶液的溶液的 pHpH 值 值 分析 我们都知道 强酸的稀溶液中 它是完全电离的 即 HNOHNO3 3 电离出的 H 与 NO3 都是 1010 7 7 M 但是我们不能认为它的 pH 值 7 H2O H OH Kw 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 coding gbk 计算计算 1E 7M1E 7M 的硝酸溶液的的硝酸溶液的 pHpH 值值 令令 x x OH OH 则则 H H OH OH C C OH OH 新新 kw Hkw H importimport mathmath defdef calcPH calcPH C C kwkw 1E 141E 14 x1x1 1E 71E 7 whilewhile True True H H x1x1 C C x2x2 kw Hkw H ifif abs x2 x1 abs x2 x1 1E 51E 5 abs x2 abs x1 abs x2 abs x1 如果还没有达到计算精度如果还没有达到计算精度 x1x1 x2x2 else else breakbreak returnreturn math log10 H math log10 H C C 1E 7 1E 7 print print C MC M 的硝酸溶液的的硝酸溶液的 pH calcPH C pH calcPH C 1e 07 M 的硝酸溶液的 pH 6 79101457082 讨论 也许 你觉得 我们令 x OH 则 C x x Kw 解一元二次方程就可以了 何必这么麻 烦呢 在这里 我们是为了说明一种解题的方法 迭代法 精品文档 29欢迎下载 3 33 3 水溶液中的酸碱平衡问题水溶液中的酸碱平衡问题 例例 1 1 求求 0 02M0 02M H H2 2A A 溶液的溶液的 pHpH 值 值 117 106 52 102 41 kk 分析 1 电离平衡 2 1 2 2 2 HAAHkAHHA AHHAHkHAHAH OHHKwOHHOH 2 物料平衡 2 AHAAHC 3 电荷平衡 2 AHAOHH 在该体系中有在该体系中有 5 5 个物种 个物种 H H OHOH H2AH2A HAHA A A 为了方便我们略去了电荷 为了方便我们略去了电荷 共有 共有 5 5 个方程 只要解出这个方程组即可 然而 这个方程组解起来不是很方便 是吗 个方程 只要解出这个方程组即可 然而 这个方程组解起来不是很方便 是吗 在无机或分析化学中 您一定学过几种近似公式 对于解这道题想信是难不住你的 在无机或分析化学中 您一定学过几种近似公式 对于解这道题想信是难不住你的 但在此处 我们想找出一种让计算机求解的方案 但在此处 我们想找出一种让计算机求解的方案 4 4 根据电离平衡 我们得到 根据电离平衡 我们得到 3 1 2 2 2 1 1 2 2 2 HAHKK HHAKA HAHKHA HkwOH 将将 式代入电离平衡 式代入电离平衡 4 1 2 11 1 2 11 1 2 1 2 2 2 2 2 222 HKKHKCAH HKKHKAH即C HAHKKHAHKAHC 二元弱酸的分布系数二元弱酸的分布系数 2 1 1 2 1 2 1 1 1 2 1 1 2 2 2 2 2 2 kKHkH kK C A kKHkH Hk C HA kKHkH H C AH A HA AH 精品文档 30欢迎下载 于是我们得到下面的计算方案于是我们得到下面的计算方案 设设 H1H1 1E 71E 7 A A 计算计算 OH H2A HA AOH H2A HA A 的浓度的浓度 HHAKA HAHKHA HKKHKCAH HkwOH 2 1 1 2 11 2 2 2 B B 根据电荷平衡求出根据电荷平衡求出 H2H2 2 AHAOHH C C 如果如果 H1H1 与与 H2H2 很接近 很接近 则则 H2H2 就是我们所求的氢离子浓度就是我们所求的氢离子浓度 否则否则 H1 H2H1 H2 转 转 A A 重新计算 重新计算 coding gbk coding gbk 计算计算计算计算 0 02M0 02M 的的 H2AH2A 溶液的溶液的 pHpH 值值 k1 4 2E 7k1 4 2E 7 k2 4 6E 11k2 4 6E 11 importimport mathmath defdef calcH2A calcH2A C C k1 k2 k1 k2 kwkw 1E 141E 14 H1H1 1E 71E 7 whilewhile True True OHOH kwkw H1H1 H2AH2A C 1 k1 H1C 1 k1 H1 k1 k2 H1 H1 k1 k2 H1 H1 HAHA k1 H2A H1k1 H2A H1 A A k2 HA H1k2 HA H1 H2H2 OHOH HAHA 2 A 2 A 电荷平衡电荷平衡 ifif abs H2 H1 abs H2 H1 1E 51E 5 abs H2 abs H1 abs H2 abs H1 如果还没有达到计算精度如果还没有达到计算精度 H1H1 H2H2 else else print OH H2A HA A H OH H2A HA A H2 print OH H2A HA A H OH H2A HA A H2 breakbreak returnreturn math log10 H2 math log10 H2 C C 0 02 0 02 k1 4 2E 7k1 4 2E 7 k2 4 6E 11k2 4 6E 11 print print C MC M 的的 H2AH2A 的的 pH calcH2A C k1 k2 pH calcH2A C k1 k2 OH H2A HA A H 1 09358016369e 10 0 0199085592111 9 1440742852e 05 4 59989799665e 11 9 1440944208e 05 0 02 M 的 H2A 的 pH 4 03885929812 精品文档 31欢迎下载 例例 2 2 计算计算 0 1M0 1M NaHANaHA 溶液的溶液的 pHpH 值值 k1 0 0562k1 0 0562 k2 5 248e 05k2 5 248e 05 1 电离平衡 2 1 2 2 2 HAAHkAHHA AHHAHkHAHAH OHHKwOHHOH HANaNaHA 2 物料平衡 2 AHAAHC 3 电荷平衡 2 AHAOHNaH 第第 8 8 章章 数的进制数的进制 8 18 1 二进制简介二进制简介 一 一 二进制 二进制是计算技术中广泛采用的一种数制 二进制数据是用 0 和 1 两个数码来表示的 数 它的基数为 2 进位规则是 逢二进一 借位规则是 借一当二 由 18 世纪德国数 理哲学大师莱布尼兹发现 当前的计算机系统使用的基本上是二进制系统 二 二进制数据的表示法 二进制数据也是采用位置计数法 其位权是以 2 为底的幂 例如二进制数据 110 其权的大小顺序为 22 21 20 对于有 n 位整数的二进制数据用加权系数展开式表示 可写为 0 0 2 2 1 1021 2 2 2 aaaaaa n n n nnn 注意 1 式中 aj 表示第 j 位的系数 它为 0 和 1 中的某一个数 2 a n 1 中的 n 1 为下标 三 二进制运算规则 二进制数据的算术运算的基本规律和十进制数的运算十分相似 最常用的是加法运算和乘法运算 精品文档 32欢迎下载 1 二进制加法 有四种情况 0 0 0 0 1 1 1 0 1 1 1 0 进位为 1 例 求 1101 2 1110 2 的和 解 11011 01110 10110 2 二进制减法 0 0 0 1 0 1 1 1 0 0 1 1 借位 1 借 1 作 2 3 二进制乘法 0 0 0 1 0 0 0 1 0 1 1 1 4 二进制除法 0 1 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兴业银行成都市武侯区2025秋招笔试综合模拟题库及答案
- 民生银行吉林市丰满区2025秋招数据分析师笔试题及答案
- 浦发银行廊坊市广阳区2025秋招笔试专业知识题专练及答案
- 光大银行株洲市芦淞区2025秋招笔试专业知识题专练及答案
- 浸泡型果酒酿造工安全规范考核试卷及答案
- 涂胶工协作考核试卷及答案
- 毛笔制作工突发故障应对考核试卷及答案
- 船舶电焊工专业知识考核试卷及答案
- 托盘叉车考试试题及答案
- 环己酮(醇酮)装置操作工晋升考核试卷及答案
- 农村厕所改建技术培训-三格化粪池式厕所课件
- 砖混框架房屋拆除专项施工方案
- 学生学习力评价量表
- 藏餐培训教学计划5篇
- 技术需求征集表
- 三年级上册美术课件-第1课 五星红旗我为你骄傲|辽海版
- 中职心理健康教育第一课-PPT课件
- 文化引领学校特色化课程体系的建构
- 安全现场文明施工措施费用清单
- 蓝色多瑙河(课堂PPT)
- 生物波能量与养生健康知识问答手册
评论
0/150
提交评论