|
15 | 15 |
|
16 | 16 | 最简单的思路就是用公式法求解,这是普适法则(普世法则?普适是否等同于普世?)。 |
17 | 17 |
|
18 | | ->古巴比伦留下的陶片显示,在大约公元前2000年(2000 BC)古巴比伦的数学家就能解一元二次方程了。在大約公元前480年,中國人已经使用配方法求得了二次方程的正根,但是并没有提出通用的求解方法。公元前300年左右,欧几里得提出了一种更抽象的几何方法求解二次方程。 |
| 18 | +古巴比伦留下的陶片显示,在大约公元前2000年(2000BC)古巴比伦的数学家就能解一元二次方程了。在大约公元前480年,中国人已经使用配方法求得了二次方程的正根,但是并没有提出通用的求解方法。公元前300年左右,欧几里得提出了一种更抽象的几何方法求解二次方程。 |
19 | 19 |
|
20 | | ->7世紀印度的婆羅摩笈多(Brahmagupta)是第一位懂得用使用代數方程,它同時容許有正負數的根。 |
| 20 | +7世纪印度的婆罗摩笈多(Brahmagupta)是第一位懂得用使用代数方程,它同时容许有正负数的根。 |
21 | 21 |
|
22 | | ->11世紀阿拉伯的花拉子密 独立地发展了一套公式以求方程的正数解。亚伯拉罕·巴希亚(亦以拉丁文名字萨瓦索达著称)在他的著作Liber embadorum中,首次将完整的一元二次方程解法传入欧洲。(源自《维基百科》) |
| 22 | +11世纪阿拉伯的花拉子密 独立地发展了一套公式以求方程的正数解。亚伯拉罕·巴希亚(亦以拉丁文名字萨瓦索达著称)在他的著作Liber embadorum中,首次将完整的一元二次方程解法传入欧洲。。(源自《维基百科》) |
23 | 23 |
|
24 | 24 | 参考代码: |
25 | 25 |
|
|
30 | 30 | solving a quadratic equation |
31 | 31 | """ |
32 | 32 |
|
33 | | - from __future__ import division |
| 33 | + from __future__ import division #Python2中为了确保除法得到的结果是精确的,导入python未来支持的语言特征division(精确除法) |
34 | 34 | import math |
35 | 35 |
|
36 | 36 | def quadratic_equation(a,b,c): |
|
72 | 72 |
|
73 | 73 | 至少要完成上述改进,可能需要其它的有关python知识,甚至于前面没有介绍。这都不要紧,掌握了基本知识之后,在编程的过程中,就要不断发挥google的优势,让她帮助你找寻完成任务的工具。 |
74 | 74 |
|
75 | | ->python是一个开发的语言,很多大牛人都写了一些工具,让别人使用,减轻了后人的劳动负担。这就是所谓的第三方模块。虽然python中已经有一些“自带电池”,即默认安装的,比如上面程序中用到的math,但是我们还嫌不够。于是又很多第三方的模块来专门解决某个问题。比如这个解方程问题,就可以使用SymPy(www.sympy.org)来解决,当然NumPy也是非常强悍的工具。 |
| 75 | +>python是一个开发的语言,很多大牛人都写了一些工具,让别人使用,减轻了后人的劳动负担。这就是所谓的第三方模块。虽然python中已经有一些“自带电池”,即默认安装的,比如上面程序中用到的math,但是我们还嫌不够。于是又很多第三方的模块来专门解决某个问题。比如这个解方程问题,就可以使用SymPy(www.sympy.org) 来解决,当然NumPy 也是非常强悍的工具。 |
76 | 76 |
|
77 | 77 | ##统计考试成绩 |
78 | 78 |
|
|
103 | 103 | """ |
104 | 104 | score_values = scores.values() |
105 | 105 | sum_scores = sum(score_values) |
106 | | - average = sum_scores/len(score_values) |
| 106 | + average = round(sum_scores/len(score_values), 2) # round(a,2) 保留两位小数 |
107 | 107 | return average |
108 | 108 |
|
109 | 109 | def sorted_score(scores): |
|
148 | 148 | 保存为20502.py,然后运行: |
149 | 149 |
|
150 | 150 | $ python 20502.py |
151 | | - the average score is: 80.2222222222 |
| 151 | + the average score is: 80.22 |
152 | 152 | list of the scores: [('facebook', 99), ('apple', 99), ('amazon', 99), ('google', 98), ('alibaba', 80), ('android', 76), ('IBM', 70), ('baidu', 52), ('yahoo', 49)] |
153 | 153 | Xueba is: [('facebook', 99), ('apple', 99), ('amazon', 99)] |
154 | 154 | Xuzha is: [('yahoo', 49)] |
|
161 | 161 |
|
162 | 162 | 还是按照前面的管理,读者先做,然后我提供参考代码,然后自行优化。 |
163 | 163 |
|
164 | | ->質數(Prime number),又称素数,指在大於1的自然数中,除了1和此整数自身外,無法被其他自然数整除的数(也可定義為只有1和本身两个因数的数)。 |
| 164 | +>质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数) |
165 | 165 |
|
166 | | ->哥德巴赫猜想是數論中存在最久的未解問題之一。这个猜想最早出现在1742年普鲁士人克里斯蒂安·哥德巴赫与瑞士数学家莱昂哈德·欧拉的通信中。用现代的数学语言,哥德巴赫猜想可以陳述為:“任一大於2的偶數,都可表示成兩個質數之和。”。哥德巴赫猜想在提出后的很长一段时间内毫无进展,直到二十世纪二十年代,数学家从组合数学与解析数论两方面分别提出了解决的思路,并在其后的半个世纪里取得了一系列突破。目前最好的结果是陈景润在1973年发表的陈氏定理(也被称为“1+2”)。(源自《维基百科》) |
| 166 | +>哥德巴赫猜想是数论中存在最久的未解问题之一。这个猜想最早出现在1742年普鲁士人克里斯蒂安·哥德巴赫与瑞士数学家莱昂哈德·欧拉的通信中。用现代的数学语言,哥德巴赫猜想可以陈述为:“任一大于2的偶数,都可表示成两个素数之和。”。哥德巴赫猜想在提出后的很长一段时间内毫无进展,直到二十世纪二十年代,数学家从组合数学与解析数论两方面分别提出了解决的思路,并在其后的半个世纪里取得了一系列突破。目前最好的结果是陈景润在1973年发表的陈氏定理(也被称为“1+2”)。(源自《维基百科》) |
167 | 167 |
|
168 | 168 | 对这个练习,我的思路是先做一个函数,用它来判断某个整数是否是素数。然后循环即可。参考代码: |
169 | 169 |
|
|
188 | 188 | return True |
189 | 189 |
|
190 | 190 | if __name__ == "__main__": |
191 | | - primes = [i for i in range(2,100) if is_prime(i)] #从2开始,因为1显然不是质数 |
| 191 | + primes = [i for i in range(2,101) if is_prime(i)] #从2开始,因为1显然不是质数 |
192 | 192 | print primes |
193 | 193 |
|
194 | 194 | 代码保存后运行: |
|
200 | 200 |
|
201 | 201 | 还是前面的观点,这个程序你或许也发现了需要进一步优化的地方,那就太好了。另外,关于判断质数的方法,还有好多种,读者可以自己创造或者网上搜索一些,拓展思路。 |
202 | 202 |
|
| 203 | +#网友frankwang分享一段关于素数的代码,供各位参考: |
| 204 | + |
| 205 | +def find_primes(n): |
| 206 | + primesList = [] |
| 207 | + for x in range(2, n+1): |
| 208 | + isPrime = True |
| 209 | + for y in range(2, int(x**0.5) + 1): #x**0.5 相当于math.sqrt(x) |
| 210 | + if x % y == 0: |
| 211 | + isPrime = False |
| 212 | + break |
| 213 | + if isPrime: |
| 214 | + primesList.append(x) |
| 215 | + |
| 216 | + print(primesList) |
| 217 | +if __name__ == "__main__": |
| 218 | + max = int(input('Find primes up to: ')) |
| 219 | + find_primes(max) |
| 220 | + |
| 221 | +代码保存后运行: |
| 222 | +# 打印结果如下: |
| 223 | +Find primes up to: 100 |
| 224 | +[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] |
| 225 | + |
| 226 | + |
203 | 227 | ##编写函数的注意事项 |
204 | 228 |
|
205 | 229 | 编写函数,在开发实践中是非常必要和常见的,一般情况,你写的函数应该是: |
|
214 | 238 |
|
215 | 239 | [总目录](./index.md) | [上节:函数(4)](./204.md) | [下节:zip()补充](./236.md) |
216 | 240 |
|
217 | | -如果你认为有必要打赏我,请通过支付宝: **[email protected]**,不胜感激。 |
| 241 | +如果你认为有必要打赏我,请通过支付宝: **[email protected]**,不胜感激。 |
0 commit comments