(一)Python入门之100道基础题

绘制同心圆:

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的蟒蛇绘制看似复杂,步骤其实不难。

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值