반응형
반응형

turtle 로 전체화면에서 임의로 선그리기 

 

import turtle
import random

# 화면 설정
def setup_screen():
    """창을 설정하고 전체 화면과 유사하게 최대화합니다."""
    screen = turtle.Screen()
    screen.setup(width=1.0, height=1.0) # 화면 크기를 최대화합니다.
    screen.title("무작위 선 그리기 (전체 화면)")
    screen.colormode(255) # RGB 색상 모드를 0-255로 설정합니다.
    screen.bgcolor("black") # 배경색을 검은색으로 설정합니다.
    screen.tracer(0) # 그리기 속도를 높이기 위해 자동 화면 업데이트를 끕니다.
    return screen

# 거북이 설정
def setup_turtle():
    """선을 그릴 거북이를 설정합니다."""
    t = turtle.Turtle()
    t.hideturtle() # 거북이 아이콘을 숨깁니다.
    t.speed(0) # 최고 속도로 설정합니다.
    t.pensize(2) # 펜 두께를 설정합니다.
    return t

# 무작위 색상 생성
def get_random_color():
    """무작위 RGB 색상 튜플을 반환합니다."""
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    return (r, g, b)

# 메인 그리기 루프
def draw_random_lines(t, screen):
    """화면이 종료될 때까지 무작위 선을 계속 그립니다."""
    while True:
        # 무작위 색상 및 위치 설정
        color = get_random_color()
        t.pencolor(color)
        
        # 펜을 든 상태로 무작위 위치로 이동 (현재 위치에서 그리기 시작)
        t.left(random.randint(-180, 180)) # 무작위로 방향을 돌립니다.
        
        # 무작위 길이만큼 앞으로 이동 (선을 그림)
        distance = random.randint(50, 300)
        t.forward(distance)

        # 화면 가장자리를 벗어났는지 확인하고, 벗어났다면 펜을 들고 중앙 근처로 이동
        # 이 과정이 없으면 거북이가 화면 밖으로 나가버려 그림이 멈춘 것처럼 보일 수 있습니다.
        current_x, current_y = t.position()
        screen_width = screen.window_width()
        screen_height = screen.window_height()
        
        if abs(current_x) > screen_width / 2 or abs(current_y) > screen_height / 2:
            t.penup() # 펜 들기
            t.goto(0, 0) # 중앙으로 이동
            t.left(random.randint(-180, 180)) # 방향을 다시 무작위로 설정
            t.pendown() # 펜 내리기
            
        # 화면 업데이트 (tracer(0)를 사용했으므로 수동으로 업데이트)
        screen.update()

# 프로그램 실행
if __name__ == "__main__":
    screen = setup_screen()
    t = setup_turtle()
    
    try:
        draw_random_lines(t, screen)
    except turtle.Terminator:
        # 창 닫기 버튼을 눌렀을 때 발생하는 예외 처리
        print("프로그램이 종료되었습니다.")
    except Exception as e:
        print(f"예외 발생: {e}")
        
    # 창을 닫을 때까지 프로그램이 대기하도록 함 (실제 draw_random_lines 루프에서는 필요 없음)
    # turtle.done()
반응형
반응형

 

[python] asciichartpy -  터미널(콘솔) 환경에 깔끔하고 읽기 쉬운 텍스트 기반의 ASCII 아트 그래프를 그려주는 라이브러리

 

pip install asciichartpy

 

https://pypi.org/project/asciichartpy/

 

Client Challenge

JavaScript is disabled in your browser. Please enable JavaScript to proceed. A required part of this site couldn’t load. This may be due to a browser extension, network issues, or browser settings. Please check your connection, disable any ad blockers, o

pypi.org

 

 

import asciichartpy 

data = [1, 2, 3, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1]
print("ASCll Line Chart Example")
print(asciichartpy.plot(data, {'height': 10}))

 

import asciichartpy as ac

series1 = [20, 25, 22, 28, 30, 24, 35, 32, 26]
series2 = [10, 15, 12, 18, 20, 14, 25, 22, 16]

# 두 개의 계열을 하나의 차트에 표시
print(ac.plot([series1, series2], {'height': 15, 'colors': [ac.red, ac.blue]}))
반응형
반응형

[PYTHON] Python 3.14.0 정식 버전 출시 🐍

 

Python 3.14.0의 정식 버전이 출시되었습니다. 이번 업데이트는 성능 향상과 새로운 기능 추가에 중점을 두었습니다.


주요 기능

  • PEP 779: 자유 스레드 Python (Free-threaded Python) 공식 지원: 여러 스레드에서 Python 코드를 동시에 실행할 수 있어 멀티코어 프로세서를 더 효율적으로 활용할 수 있습니다.
  • PEP 649: 어노테이션 평가 지연: 타입 힌트와 같은 어노테이션의 평가를 나중으로 미루어 시작 시간을 단축합니다.
  • PEP 750: 템플릿 문자열 리터럴 (t-strings): f-string과 유사하지만 더 안전하고 유연한 새로운 문자열 형식입니다.
  • PEP 734: stdlib에 다중 인터프리터: 하나의 프로세스에서 여러 개의 독립적인 Python 인터프리터를 실행할 수 있습니다.
  • PEP 784: 새로운 compression.zstd 모듈: Zstandard 압축 알고리즘을 지원하여 더 빠르고 효율적인 데이터 압축이 가능합니다.
  • PyREPL의 구문 강조 표시 및 색상 지원: unittest, argparse, json, calendar CLI에서 색상을 지원하여 가독성을 높였습니다.

주요 변경 사항

  • PEP 761: 릴리스 아티팩트에 대한 PGP 서명 중단: 더 이상 PGP 서명을 제공하지 않고 Sigstore 사용을 권장합니다.
  • 실험적인 JIT 컴파일러 포함: 공식 macOS 및 Windows 릴리스 바이너리에 실험적인 JIT 컴파일러가 포함되어 성능이 향상될 수 있습니다.
  • 공식 Android 바이너리 릴리스: 이제 Android에서도 공식적으로 Python을 사용할 수 있습니다.
  • 새로운 Windows 설치 관리자: Windows Store 또는 다운로드 페이지에서 설치할 수 있는 새로운 설치 관리자로 교체됩니다.

https://www.python.org/downloads/release/python-3140/

 

Python Release Python 3.14.0

The official home of the Python Programming Language

www.python.org

 

 

반응형
반응형

[python]  Faker 라이브러리로 Dummy 데이터 만들기

 

pip install Faker
    
    1.faker는 이름, 주소, 이메일, 전화번호 등 다양한 종류의 가짜 데이터를 만들어주는 파이썬 패키지입니다. 
       Faker 객체를 생성하고, 해당 객체가 제공하는 다양한 메소드를 호출해 원하는 형식의 데이터를 얻을 수 있어요.
    2.Faker는 국가별 언어 설정을 지원해요. 예를 들어, Faker('ko_KR')를 사용하면 한국어 이름, 주소, 주민등록번호 등 

       한국 특화된 데이터를 생성할 수 있습니다.

 

 

""" pip install Faker 

"""

from faker import Faker

# Faker 객체 생성
fake = Faker('ko_KR') # 'ko_KR'은 한국어 더미 데이터를 생성하도록 설정합니다.

# 기본 정보 더미 데이터 생성
print("--- 기본 정보 ---")
print("이름:", fake.name())
print("주소:", fake.address())
print("전화번호:", fake.phone_number())
print("이메일:", fake.email())
print("회사:", fake.company())
print("직업:", fake.job())
print("생일:", fake.date_of_birth())
print("-" * 20)

# 텍스트 및 문장 더미 데이터
print("--- 텍스트 ---")
print("문장:", fake.sentence())
print("단락:", fake.paragraph())
print("텍스트:", fake.text())
print("-" * 20)

# 숫자 및 날짜/시간 더미 데이터
print("--- 숫자/시간 ---")
print("정수:", fake.random_int(min=1, max=100))
print("날짜:", fake.date_this_year())
print("시간:", fake.time())
print("-" * 20)

# 금융 정보 더미 데이터
print("--- 금융 정보 ---")
print("신용카드 번호:", fake.credit_card_number())
print("통화 코드:", fake.currency_code())
print("-" * 20)

# 한국어(ko_KR)에서만 제공하는 특별한 더미 데이터
print("--- 한국어 특화 ---")
print("주민등록번호:", fake.ssn())
print("우편번호:", fake.postcode())
print("-" * 20)

# 여러 개의 데이터 생성
print("--- 사용자 목록 ---")
for _ in range(3):
    print({
        '이름': fake.name(),
        '이메일': fake.email(),
        '주소': fake.address(),
        '나이': fake.random_int(min=20, max=60),
    })
print("-" * 20)
반응형
반응형

voronoi diagram for generative geometry using python

 

파이썬을 사용하여 제너레이티브 지오메트리(generative geometry)를 위한 보로노이 다이어그램(Voronoi diagram)을 생성하는 것은 널리 사용되는 강력한 기법입니다.

 

이 과정은 일련의 무작위 점을 생성한 다음, SciPy와 같은 라이브러리를 사용하여 이 점들에 대한 근접성에 따라 평면을 분할하는 보로노이 다이어그램을 계산하는 것을 포함합니다.

 

이렇게 분할된 공간은 복잡하고 유기적으로 보이는 디자인을 만드는 데 사용될 수 있습니다.

 

 

"""
파이썬을 사용하여 제너레이티브 지오메트리(generative geometry)를 위한 
 보로노이 다이어그램(Voronoi diagram)을 생성하는 것은 널리 사용되는 강력한 기법입니다. 
이 과정은 일련의 무작위 점을 생성한 다음, SciPy와 같은 라이브러리를 사용하여 
 이 점들에 대한 근접성에 따라 평면을 분할하는 보로노이 다이어그램을 계산하는 것을 포함합니다.
이렇게 분할된 공간은 복잡하고 유기적으로 보이는 디자인을 만드는 데 사용될 수 있습니다.
"""

import numpy as np
from scipy.spatial import Voronoi, voronoi_plot_2d
import matplotlib.pyplot as plt

# 1. Generate 20 random 2D points
points = np.random.rand(20, 2)

# 2. Compute the Voronoi diagram
vor = Voronoi(points)

# 3. Plot the diagram
fig = voronoi_plot_2d(vor)
plt.show()

핵심 라이브러리

파이썬에서 보로노이 다이어그램을 생성하고 시각화하려면 주로 다음 라이브러리가 필요합니다:

  • NumPy: 수치 연산을 위해, 특히 점들의 좌표를 생성하고 다루는 데 사용됩니다.
  • SciPy: 핵심 보로노이 다이어그램 계산을 위해. scipy.spatial.Voronoi 클래스가 주요 도구입니다.
  • Matplotlib: 결과 다이어그램을 플롯하고 시각화하는 데 사용됩니다.

기본 보로노이 다이어그램 생성 단계

다음 코드는 이 라이브러리들을 사용한 간단한 예시를 보여줍니다.

  1. 무작위 점 생성: 보로노이 셀의 "씨앗(seeds)" 또는 "생성자(generators)" 역할을 할 일련의 무작위 2D 점을 만듭니다.
  2. 보로노이 다이어그램 계산: 점 집합을 scipy.spatial.Voronoi에 전달합니다. 이 객체는 보로노이 셀의 꼭짓점과 그 관계를 포함하여 다이어그램에 대한 모든 필수 정보를 담고 있습니다.
  3. 다이어그램 플롯: scipy.spatial.voronoi_plot_2d를 사용하여 결과를 시각화합니다. 이 함수는 보로노이 객체를 받아 다이어그램의 선과 꼭짓점을 플롯하며, 종종 원래의 점들이 함께 겹쳐서 표시됩니다.

 

반응형
반응형

[python] Blackhole Glow using python

 

import matplotlib.pyplot as plt, numpy as np
plt.style.use("dark_background")
O = np.linspace(0, 10*np.pi, 2000)
r = 1/(1+0.2*O)
x, y = r*np.cos(O), r*np.sin(O)
plt.scatter(x, y, c=O, cmap="magma", s=3)
plt.axis("equal");
plt.show()

 

반응형

+ Recent posts