Python3.x 练习 --- demo

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()

你可能感兴趣的:(Python3.x 练习 --- demo)