绘制同心圆:
import turtle
for i in range(9):
turtle.circle((i+1)*25)
turtle.penup()
turtle.goto(0,-(i+1)*25)
turtle.pendown()
turtle.done()
turtle库是Python自带的绘图标准库
上述代码i循环从0-8,每次画一个半径为i+1的圆
画完后抬起画笔,将画笔移动到下个位置,放下画笔,方便下一步直接绘画
-----------------------------------------
turtle.goto(x坐标,y坐标);
斐波那契数列:
a,b = 0,1
while a <1000:
print(a,end=',')
a,b = b,a+b
Python具有不需要中间量就能元素值交换的强大操作。因此
a,b=b,a+b实际上是
a=b
b=a+b的缩写
生日悖论
from random import *
def randbirth():
mon = randint(1,12)
if mon in[1,3,5,7,8,10,12]:
day=randint(1,31)
elif mon ==2:
day=randint(1,28)
else:
day =randint(1,30)
return mon*100 + day
def main():
ls=[]
for i in range(23):
ls.append(randbirth())
if len(ls) == len(set(ls)):
return 1
else:
return 0
try:
poss =0
n=eval(input("请输入样本数量:"))
for i in range(n):
if main() == 1:
poss+=1
if(poss/n)>=0.5:
print("当房间内的人数为23人时,他们的生日记几率超过50%,是{}%".format(poss*100/n))
else:
print("当房间内的人数为23人时,他们生日几率没有一半,是{}%".format(poss*100/n))
except:
print("输入有误")
该问题为蒙特卡洛方法的衍生
蒙特卡洛方法:
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()))
蒙特卡洛的方法目前不会写也没有关系,该方法类似于掷骰子,只不过扔了很多,求平均。
Python蟒蛇绘制
import turtle
turtle.setup(650, 350, 200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40,80)
turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40 *2/3)
python的蟒蛇绘制看似复杂,步骤其实不难。