demo.1
功能说明: 数学公式 xx * xxx = xxxx (x位正整数1~9中任一一个数字)。下列代码是让计算机随机枚举等号右边结果为9997~9999时,等号左边有几组数字。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author: jinfeng
import random
x=[a for a in range(1,10)]
set1=[]
set2=[]
set3=[]
while True:
i=x[random.randint(0,8)]*10+x[random.randint(0,8)]
j=x[random.randint(0,8)]*100+x[random.randint(0,8)]*10+x[random.randint(0,8)]
k=x[random.randint(8,8)]*1000+x[random.randint(8,8)]*100+x[random.randint(8,8)]*10+x[random.randint(6,8)]
if k==i*j:
if i not in set1:
set1.append(i)
if j not in set2:
set2.append(j)
set3.append(k)
print(set1)
print(set2)
print(set3)
demo.2 斐波那契数列
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author: jinfeng
# Fibonacci series:
# the sum of two elements defines the next
a, b = 0, 1
while a < 10:
print(a)
demo.3 Flag系列--China 有待改进 不够智能
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author: jinfeng
import turtle
import time
#缩放倍数
n=1.5
#前两个参数用于说明画布的大小,后两个参数说明窗体的位置
turtle.setup(600*n,400*n)
#将画笔实例化
flag=turtle.Pen()
flag.speed(10)
#--------------------------------------------------------------------------
#计算五角星五个顶点的坐标
# b=[69,141,213,285,357]
# c=[]
# i=0
# while i<5:
# flag.up()
# flag.setposition(-50, 10)
# flag.down()
# flag.setheading(b[i])
# flag.pencolor("yellow")
# flag.fd(10)
# zb=flag.pos()
# c.append(zb)
# i += 1
# print(c)
#--------------------------------------------------------------------------
#开始画红旗,比例为3:2
flag.up()
flag.setposition(-150*n,100*n)
flag.down()
flag.setheading(0)
a=0
flag.begin_fill()
flag.fillcolor("red")
flag.pencolor("red")
while a<2:
flag.fd(300*n)
flag.right(90)
flag.fd(200*n)
flag.right(90)
a+=1
flag.end_fill()
#开始画大五角星
flag.up()
flag.setposition(-128.53*n,59.27*n)
flag.down()
flag.pencolor("yellow")
flag.begin_fill()
flag.fillcolor("yellow")
flag.goto(-71.47*n,59.27*n)
flag.goto(-117.63*n,25.73*n)
flag.goto(-100.00*n,80.00*n)
flag.goto(-82.37*n,25.73*n)
flag.goto(-128.53*n,59.27*n)
flag.end_fill()
#开始画小五角星 甲、乙、丙、丁
flag.begin_fill()
flag.up()
flag.setposition(-40.04*n,80.87*n)
flag.down()
flag.goto(-58.57*n,85.15*n)
flag.goto(-46.09*n,70.79*n)
flag.goto(-47.75*n,89.74*n)
flag.goto(-57.55*n,73.44*n)
flag.goto(-40.04*n,80.87*n)
flag.end_fill()
flag.begin_fill()
flag.up()
flag.setposition(-22.93*n,67.07*n)
flag.down()
flag.goto(-39.88*n,58.44*n)
flag.goto(-21.09*n,55.46*n)
flag.goto(-34.54*n,68.91*n)
flag.goto(-31.56*n,50.12*n)
flag.goto(-22.93*n,67.07*n)
flag.end_fill()
flag.begin_fill()
flag.up()
flag.setposition(-20.60*n,33.42*n)
flag.down()
flag.goto(-39.61*n,32.76*n)
flag.goto(-23.84*n,22.12*n)
flag.goto(-30.35*n,39.99*n)
flag.goto(-35.59*n,21.71*n)
flag.goto(-20.60*n,33.42*n)
flag.end_fill()
flag.begin_fill()
flag.up()
flag.setposition(-46.42*n,19.34*n)
flag.down()
flag.goto(-58.39*n,4.55*n)
flag.goto(-40.01*n,9.48*n)
flag.goto(-57.77*n,16.29*n)
flag.goto(-47.41*n,0.34*n)
flag.goto(-46.42*n,19.34*n)
flag.end_fill()
#----------------------------------------------------------------------------
#写文字
flag.pencolor("black")
flag.up()
flag.setposition(0*n,-120*n)
flag.down()
flag.write("中国 CHINA ", align="center")
flag.hideturtle()
turtle.done()
demo.3.1 Flag系列--China 可以缩放 画法比较科学
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author: jinfeng
import turtle as t
import time
import math
#缩放倍数
N=1
#前两个参数用于说明画布的大小,后两个参数说明窗体的位置
t.setup(600*N,400*N,400/(2*N),150/(2*N))
#计算五角星的边长
#第一步计算正五边形边长,半径可以更换
r=10*N
l=math.sin(math.radians(36))*r*2
#第二部计算五角星的边长
standl=math.sin(math.radians(54))*l*2
#验证计算结果
print(standl)
#-------------------------------------------------------
#开始画红旗,比例为3:2
t.penup()
t.setposition(-150*N,100*N)
t.pendown()
t.setheading(0)
t.color("red")
t.begin_fill()
for i in range(2):
t.fd(300*N)
t.rt(90)
t.fd(200*N)
t.rt(90)
t.end_fill()
#-------------------------------------------------------
#开始画大五角星
t.penup()
t.setposition(-100*N,80*N)
t.pendown()
t.color("yellow")
t.begin_fill()
t.setheading(18-90)
for i in range(5):
t.fd(3*standl)
t.rt(144)
t.end_fill()
#开始画小五角星
#第一步小五角星顶点定位,计算出小五角星中心线与大五角星中心线方位角
x1=-100*N
y1=50*N
agl=math.degrees(math.atan((80*N-y1)/(-50*N-x1)))
#第二步 画甲星
t.penup()
t.setposition(-50*N,80*N)
t.pendown()
t.setheading(agl+180)
t.fd(10*N)
t.rt(180-agl/2)
t.begin_fill()
for i in range(5):
t.fd(standl)
t.rt(144)
t.end_fill()
#第二步 画乙星 只需替换他们的中心坐标就可以 中心坐标根据规范取得 下面依次类推
agl=math.degrees(math.atan((60*N-y1)/(-30*N-x1)))
t.penup()
t.setposition(-30*N,60*N)
t.pendown()
t.setheading(agl+180)
t.fd(10*N)
t.rt(180-agl/2)
t.begin_fill()
for i in range(5):
t.fd(standl)
t.rt(144)
t.end_fill()
agl=math.degrees(math.atan((30*N-y1)/(-30*N-x1)))
t.penup()
t.setposition(-30*N,30*N)
t.pendown()
t.setheading(agl+180)
t.fd(10*N)
t.lt(180-agl/2)
t.begin_fill()
for i in range(5):
t.fd(standl)
t.rt(144)
t.end_fill()
agl=math.degrees(math.atan((10*N-y1)/(-50*N-x1)))
t.penup()
t.setposition(-50*N,10*N)
t.pendown()
t.setheading(agl+180)
t.fd(10*N)
t.lt(180-agl/2)
t.begin_fill()
for i in range(5):
t.fd(standl)
t.rt(144)
t.end_fill()
#在下面标注国旗名称
t.penup()
t.setposition(0*N,-130*N)
t.pendown()
t.color("black")
t.write("中国 CHINA",align="center",font=("宋体",12,"normal"))
t.hideturtle()
#点击窗口退出 与done()一样可以保持窗口显示
t.exitonclick()
demo.3.2 Flag系列--USA
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author: jinfeng
import turtle as t
import math
#---------------画法----------------------------
# 国旗的宽度: A = 1.0 国旗的长度: B = 1.9
# 联邦范围宽度: C = 0.5385 (7/13, 7条间纹的阔度)
# 联邦范围长度: D = 0.76 (1.9 × 2/5, 五份二的国旗长度)
# E = F = 0.0538 (C/10, 联邦范围的十份之一阔度)
# G = H = 0.0633 (D/12, 联邦范围的十二份之一长度)
# 星的直径: K = 0.0616
# 条纹的宽度: L = 0.0769 (1/13)
#---------------画法----------------------------
N=2
t.setup(600*N,400*N,400/(2*N),150/(2*N))
flagw=190*N
flagh=100*N
t.speed(10)
#--画图框----------------
t.up()
t.setposition(-flagw,flagh)
t.down()
for i in range(2):
t.fd(2*flagw)
t.rt(90)
t.fd(2*flagh)
t.rt(90)
#画红条 颜色采用16进制输入
t.color("#B22234")
redw=2*flagh/13
for i in range(7):
t.begin_fill()
t.fd(2*flagw)
t.rt(90)
t.fd(redw)
t.rt(90)
t.fd(2*flagw)
if i !=6:
t.lt(90)
t.fd(redw)
t.lt(90)
else:
t.rt(90)
t.end_fill()
#--画联邦区域
t.up()
t.setposition(-flagw,flagh)
t.setheading(0)
t.down()
lbw=(2*flagw)/5*2
lbh=7*redw
t.color("#3C3B6E")
t.begin_fill()
for i in range(2):
t.fd(lbw)
t.rt(90)
t.fd(lbh)
t.rt(90)
t.end_fill()
#--画小星星 难点
# E = F = 0.0538 (C/10, 联邦范围的十份之一阔度)
# G = H = 0.0633 (D/12, 联邦范围的十二份之一长度)
# 星的直径: k=0.0616
#计算五角星的边长
#第一步计算正五边形边长,半径可以更换
r=0.025*200*N
l=math.sin(math.radians(36))*r*2
#第二部计算五角星的边长
standl=math.sin(math.radians(54))*l*2
#验证计算结果
#print(standl)
#有五颗五角星的列做循环
x1=-flagw+(lbw/12)/2
for i in range(6):
y1=flagh-lbh/10
for i in range(5):
t.up()
t.setposition(x1,y1)
t.setheading(0)
t.down()
t.color("white")
t.begin_fill()
for i in range(5):
t.fd(standl)
t.rt(144)
t.end_fill()
y1-=2*(lbh/10)
x1+=2*(lbw/12)
#有四颗五角星的列做循环
x1=-flagw+(lbw/12)*1.5
for i in range(5): #总共五列 循环5次
y1=flagh-2*lbh/10
for i in range(4): #一列四颗五角星 循环4次
t.up()
t.setposition(x1,y1)
t.setheading(0)
t.down()
t.color("white")
t.begin_fill()
for i in range(5): #一颗五角星 循环5次
t.fd(standl)
t.rt(144)
t.end_fill()
y1-=2*(lbh/10)
x1+=2*(lbw/12)
#在下面标注国旗名称
t.penup()
t.setposition(0*N,-130*N)
t.pendown()
t.color("black")
t.write("美国 America",align="center",font=("宋体",12,"normal"))
t.hideturtle()
t.exitonclick()
demo.3.3 Flag系列--JAP
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author: jinfeng
import turtle as t
import math
#--调整系数,及设置窗口大小根据调整系数做相应调整
N=2
t.setup(600*N,400*N,400/(2*N),150/(2*N))
#--设置初始坐标,根据旗帜的比例设置
starx=-150*N
stary=100*N
#--设置旗帜默认大小,后续可以根据N来调整
flagw=2*abs(starx)
flagh=2*abs(stary)
t.speed(6)
#--画图框----------------
t.up()
t.setposition(starx,stary)
t.down()
for i in range(2):
t.fd(flagw)
t.rt(90)
t.fd(flagh)
t.rt(90)
#--画太阳-----------
t.up()
t.setposition(0,-(flagh*0.6)/2)
t.down()
t.color("red")
t.begin_fill()
t.circle(flagh*0.3)
t.end_fill()
#在下面标注国旗名称
t.penup()
t.setposition(0*N,-130*N)
t.pendown()
t.color("black")
t.write("日本 Japan",align="center",font=("宋体",12,"normal"))
t.hideturtle()
t.exitonclick()
demo.3.3 Flag系列--UK
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author: jinfeng
import turtle as t
import math
#--调整系数,及设置窗口大小根据调整系数做相应调整
N=1
t.setup(600*N,400*N,400/(2*N),150/(2*N))
t.speed(0)
#--设置初始坐标,根据旗帜的比例设置
starx=-200*N
stary=100*N
#--设置旗帜默认大小,后续可以根据N来调整
flagw=2*abs(starx)
flagh=2*abs(stary)
t.speed(10)
#--第一步画蓝色底--------------------------
t.up()
t.setposition(starx,stary)
t.down()
t.color("#003399")
t.begin_fill()
for i in range(2):
t.fd(flagw)
t.rt(90)
t.fd(flagh)
t.rt(90)
t.end_fill()
#--第二步画白斜线--------------------------------------
#--求出斜线角度\长度------------------------------------
agl=math.degrees(math.atan(flagh/flagw))
xl=math.sqrt(flagh**2+flagw**2)
t.setheading(90-agl)
for i in [stary,-stary]:
t.up()
t.setposition(starx,i)
t.down()
t.color("white")
if i==-stary:
t.setheading(90+agl)
t.begin_fill()
for i in range(2):
t.fd(flagh/10)
t.rt(90)
t.fd(xl)
t.rt(90)
t.fd(flagh/10)
t.end_fill()
#--画小红斜线-----------------------------------------------
smly=(flagh/15)/(math.cos(math.atan(flagh/flagw)))
smlx=(flagh/15)/(math.sin(math.atan(flagh/flagw)))
t.up()
t.home()
t.down()
t.color("red")
#--第1条-------------------------------------
t.begin_fill()
t.setheading(270-agl)
t.fd(flagh/15)
t.rt(90)
t.goto(starx,stary-smly)
t.goto(starx,stary)
t.home()
t.end_fill()
#--第2条---------------------------------------------------
t.begin_fill()
t.setheading(90-agl)
t.fd(flagh/15)
t.rt(90)
t.goto(-starx,-stary+smly)
t.goto(-starx,-stary)
t.home()
t.end_fill()
#--第3条----------------------------------
t.begin_fill()
t.setheading(agl+90)
t.fd(flagh/15)
t.rt(90)
t.goto(-starx-smlx,stary)
t.goto(-starx,stary)
t.home()
t.end_fill()
#--第4条-------------------------------------------
t.begin_fill()
t.setheading(agl+270)
t.fd(flagh/15)
t.lt(90)
t.goto(starx+smlx,-stary)
t.goto(starx,-stary)
t.home()
t.end_fill()
#--画大白十字------------------------
t.up()
t.setposition(starx+flagw/60*25,stary)
t.setheading(270)
t.down()
t.color("white")
t.begin_fill()
for i in range(2):
t.fd(flagh/3)
t.rt(90)
t.fd(flagw/60*25)
t.lt(90)
t.fd(flagh/3)
t.lt(90)
t.fd(flagw/60*25)
t.rt(90)
t.fd(flagh/3)
t.lt(90)
t.fd(flagw/60*10)
t.lt(90)
t.end_fill()
#--画红色十字----------------------
t.up()
t.setposition(starx+flagw/60*27,stary)
t.setheading(270)
t.down()
t.color("#CC0000")
t.begin_fill()
for i in range(2):
t.fd(flagh/15*6)
t.rt(90)
t.fd(flagw/60*27)
t.lt(90)
t.fd(flagh/15*3)
t.lt(90)
t.fd(flagw/60*27)
t.rt(90)
t.fd(flagh/15*6)
t.lt(90)
t.fd(flagw/60*6)
t.lt(90)
t.end_fill()
#--在下面标注国旗名称
t.penup()
t.setposition(0*N,-130*N)
t.pendown()
t.color("black")
t.write("英国 UK",align="center",font=("宋体",12,"normal"))
t.hideturtle()
t.exitonclick()