·斐波那契数列
要求列出1000以内的斐波那契数列元素
a,b = 0,1
while a <1000:
print(a,end=',')
a,b = b,a+b
注:(新手必踩的坑)
Python极大的简化了代码的书写,使得书写变得便捷,但便捷不代表简单,事实上Python
非常!
非常!
非常难!!!
不信的话,详见下面列举出的
一行解决一道题系列:
一行超人(一题一行系列):
·累加和问题
要求求出1到100的和
count = sum(range(0,101))
print(count)
·列表生成式
要求生成一个递增或递减的列表,步长和长度自定义。
print([x*11 for x in range(10)])
print([x*(-1) for x in range(10)])
·反转字符串
要求反转一串字符串
print("ASTER"[::-1])
重要——·蒙特卡罗方法
重点介绍一下该方法的思想,概率论中在极大似然估计这章中有涉及到蒙特卡罗和n重伯努利模型,这两种方法都展示了事件发生的频率和真实事件发生概率之间的关系。
代码可以不会写,主要了解思想。
思想:
蒙特卡罗在求PI值的时候,萌发出掷点到单位面积内,求无数次后,落到圆内的点数和总点数之间的比值,来近似估计圆的面积,这与那几位抛掷几万次硬币的科学家很像。
from random import random
from math import sqrt
from time import clock
DARTS = 1000
hits = 0.0
clock()
for i in range(1,DARTS+1):
x,y = random(),random()
dist = sqrt(x ** 2 + y **2)
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits/DARTS)
print("Pi的值是{}.".format(pi))
print("运行时间是:{:.5f}s".format(clock()))
-----------------------------------------------
from random import random
from math import sqrt
from time import process_time
DARTS = 1000
hits = 0.0
process_time()
for i in range(1,DARTS+1):
x,y = random(),random()
dist = sqrt(x ** 2 + y **2)
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits/DARTS)
print("Pi的值是{}.".format(pi))
print("运行时间是:{:.5f}s".format(process_time()))
Python3.8的同学用下面的版本,3.8抛弃了time的使用。