嵩天Python学習ケースノート

42623 ワード

嵩天python学習ノート
1.温度変換
TempStr = input("           :")
if TempStr[-1] in ["C","c"]:
    F = 1.8*eval(TempStr[0:-1]) + 32
    print("       {:.2f}F".format(F))
elif TempStr[-1] in ["F","f"]:
    C = (eval(TempStr[0:-1]) - 32 )/1.8
    print("       {:.2f}C".format(C))
else:
    print("      ")
           :32f
       0.00C

2.Turtleライブラリ
import turtle 
turtle.setup(650, 350,) 
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)
turtle.done()

3.テキスト進捗バー
import time as t
scale = 10
print("- - - - - -    - - - - - -")
for i in range(scale+1):
    c = (i/scale) * 100
    b = '.' * (scale - i)
    a = '*' * i
    print("{:^3.0f}%[{}->{}]".format(c,a,b))
    t.sleep(0.1)
print("- - - - - -    - - - - - -")

- - - - - -    - - - - - -
 0 %[->..........]
10 %[*->.........]
20 %[**->........]
30 %[***->.......]
40 %[****->......]
50 %[*****->.....]
60 %[******->....]
70 %[*******->...]
80 %[********->..]
90 %[*********->.]
100%[**********->]
- - - - - -    - - - - - -
import time as t
for i in range(101):
    print("\r{:3}%".format(i),end="")
    t.sleep(0.1)
100%
import time
scale = 50
print("    ".center(scale//2, "-"))
start = time.perf_counter()
for i in range(scale+1): 
    a = '*' * i    
    b = '.' * (scale - i)  
    c = (i/scale)*100   
    dur = time.perf_counter() - start  
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')    
    time.sleep(0.1) 
print("
"
+" ".center(scale//2,'-'))
-----------    ----------
100%[**************************************************->]5.07s
-----------    ----------

4.モンテカルロ法の円周率の計算
from random import random
from time import perf_counter
DARTS = 1000*1000
hits = 0.0
start = perf_counter()
for i in range(1,DARTS+1):
    x,y = random(),random()
    dist = pow(x ** 2 + y ** 2,0.5)
    if dist <= 1.0:
        hits = hits + 1
    
pi = 4*(hits/DARTS)
print("     :{}".format(pi))
print("     :{:.5f}s".format(perf_counter()-start ))
     :3.143016
     :1.19607s

5.七段デジタルチューブの描画
import turtle
import time

def drawGap():
    turtle.penup()
    turtle.fd(5)
    
def drawLine(draw):            #       
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap()
    turtle.right(90)

def drawDigit(digit):         #           
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup()
    turtle.fd(20)
    
def drawDate(date):      #        
    turtle.pencolor('red')
    for i in date:
        if i == '-':
            turtle.write(' ',font=("Arial",26,"normal"))
            turtle.fd(40)
            turtle.pencolor('green')
        elif i == '=':
            turtle.write(' ',font=("Arial",26,"normal"))
            turtle.fd(40)
            turtle.pencolor('blue')
        elif i == '+':
            turtle.write(' ',font=("Arial",26,"normal"))
        else:
            drawDigit(eval(i))

def main():
    turtle.setup(800,350)
    turtle.penup()
    turtle.fd(-330)
    turtle.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
    turtle.hideturtle()
    turtle.done()
    
main()



6.コハ雪の描画
import turtle

def koch(size,n):
    if n == 0:
        turtle.fd(size)
    else:
        for angle in [0,60,-120,60]:
            turtle.left(angle)
            koch(size/3,n-1)
            
def main():
    turtle.setup(600,600)
    turtle.penup()
    turtle.goto(-200,100)
    turtle.pendown()
    turtle.pensize(2)
    level = 3      #      
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.right(120)
    turtle.hideturtle()
    
main()

7.基本統計値計算
def getNum():       #           
    nums = []
    iNumStr = input("     (    ): ")
    while iNumStr != "":
        nums.append(eval(iNumStr))
        iNumStr = input("     (    ): ")
    return nums
 
def mean(numbers):  #     
    s = 0.0
    for num in numbers:
        s = s + num
    return s / len(numbers)
 
def dev(numbers, mean): #    
    sdev = 0.0
    for num in numbers:
        sdev = sdev + (num - mean)**2
    return pow(sdev / (len(numbers)-1), 0.5)
 
def median(numbers):    #     
    sorted(numbers)
    size = len(numbers)
    if size % 2 == 0:
        med = (numbers[size//2-1] + numbers[size//2])/2
    else:
        med = numbers[size//2]
    return med
 
n =  getNum() #    
m =  mean(n)
print("   :{},  :{:.2},   :{}.".format(m, dev(n,m),median(n)))
     (    ): 1
     (    ): 2
     (    ): 3
     (    ): 4
     (    ): 5
     (    ): 6
     (    ): 7
     (    ): 8
     (    ): 9
     (    ): 
   :5.0,  :2.7,   :5.