パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

Python3 基礎をマスター(丸と時間と空間)

2018-06-23 | python入門(すぐさまマスター)
sin,cosまたはピタゴラスの定理を使います。
今回はそこからアナログ時計作成。
3D空間への丸の投影をしてみます。

#1,#2 丸
#3,#4,#5 時間
#6 アナログ時計
#7 空間に丸

すでに基礎ではない気もしますが...
#7は鬼級

前回と同じく必要なキーワード
前回とかぶるものは入れてません。

#1 sin cos 円(python不要 画像検索)
#2 べき乗 **
#3 時刻
#4 置き換え 分割
#7 タプル型
#7 座標変換 投影(python不要 画像検索)


#1
import math
def put(x,y,st):
    if 0>y or y>len(sc)-1 or 0>x or x>len(sc[0])-1:return
    sc[y]=sc[y][:x]+st+sc[y][x+1:]
def circle(cx,cy,r,st):
    for th in range(360):
        rd=th*math.pi/180
        put(int(cx+r*math.sin(rd)),int(cy+r*math.cos(rd)),st)
sc=[" "*40 for i in range(40)]
for i in range(30):
    circle(20,20,i,chr(i+50))
for s in sc:
    print(s)



#2
def put(x,y,st):
    if 0>y or y>len(sc)-1 or 0>x or x>len(sc[0])-1:return
    sc[y]=sc[y][:x]+st+sc[y][x+1:]
def circle(cx,cy,r,st):
    for x in range(40):
        for y in range(46):
            if r*r>(x-cx)**2+(y-cy)**2:
                put(x,int(y*0.5),st)
sc=[" "*40 for i in range(23)]
circle(10,10,8,"@")
circle(25,25,17,"o")
circle(5,35,12,"+")
for s in sc:
    print(s)



#3
import datetime
now = datetime.datetime.now()
print(str(now)) 



#4
import datetime
#2018-06-23 02:30:59.561902
now = str(datetime.datetime.now())
now=now.replace(" ","-")
y,m,d,o=now.split("-")
print(y+"年"+m+"月"+d+"日")



#5
import datetime
#2018-06-23 02:30:59.561902
now = str(datetime.datetime.now())
now=now.replace(" ",":")
now=now.replace(".",":")
_,h,m,s,_=now.split(":")
print(h+"時"+m+"分"+s+"秒")



#6
import math
import datetime
#2018-06-23 02:30:59.561902
def put(x,y,st):
    if 0>y or y>len(sc)-1 or 0>x or x>len(sc[0])-1:return
    sc[y]=sc[y][:x]+st+sc[y][x+1:]
def arrow(cx,cy,r,th,st):
    rd=th*math.pi/180-math.pi/2
    for i in range(r):
        put(int(cx+i*math.cos(rd)),int((cy+i*math.sin(rd))*0.6),st)
def getTime():
    now = str(datetime.datetime.now())
    now=now.replace(" ",":")
    now=now.replace(".",":")
    _,h,m,s,_=now.split(":")
    print(":".join([h,m,s]))
    return [int(h)*30,int(m)*6,int(s)*6]
sc=[" "*40 for i in range(22)]
r=10
for i in getTime():
    arrow(20,18,r,i,"*")
    r+=5
for s in sc:
    print(s)



#7
import math
import random
def put(x,y,st):
    if 0>y or y>len(sc)-1 or 0>x or x>len(sc[0])-1:return
    sc[y]=sc[y][:x]+st+sc[y][x+1:]
def conv3d2d(p,st):
    x,y,z=p
    ez=50
    rx=x*ez/(ez+z)+20
    ry=y*ez/(ez+z)+20
    put (int(rx),int(ry*0.5),st)
def dataset():
    r=[]
    for i in range(12):
        r.append((1000*math.sin(i*math.pi/6),1000*math.cos(i*math.pi/6),0))
    r.extend(shift(0,0,2000,r))
    return r
def shift(sx,sy,sz,a):
    r=[]
    for i in a:
        x,y,z=i
        r.append((sx+x,sy+y,sz+z))
    return r
rnd=random.randint
sc=[" "*40 for i in range(23)]
for i in range(5):
    c="+*o@x"[i]
    for p in shift(rnd(-2500,2500),rnd(-2500,2500),rnd(8000,30000),dataset()):
        conv3d2d(p,c)
for s in sc:
    print(s)


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。