728x90
728x90
728x90
728x90
import math

def rhun(x, y, z):
    x_r = y_r = z_r = 0
    
    while True:
        max_num = max(x, y, z)
        min_num = min(x, y, z)
        
        if max_num < 18 or min_num < 6:
            break

        r = math.ceil((max_num - min_num) / 18)

        if max_num == x:
            if min_num == z:
                r = min(r, z // 6)
            else:
                r = min(r, (z - y) // 6)
            if r == 0:
                r = 1
            x -= r * 18
            z -= r * 6
            x_r += r
        elif max_num == y:
            if min_num == x:
                r = min(r, x // 6)
            else:
                r = min(r, (x - z) // 6)
            if r == 0:
                r = 1
            y -= r * 18
            x -= r * 6
            y_r += r
        elif max_num == z:
            if min_num == y:
                r = min(r, y // 6)
            else:
                r = min(r, (y - x) // 6)
            if r == 0:
                r = 1
            z -= r * 18
            y -= r * 6
            z_r += r

    print(x_r, y_r, z_r, "//", x, y, z)

# Example usage
rhun(60, 45, 30)

 

728x90
728x90
728x90
728x90
import time

# from tkinter import filedialog
# filename = filedialog.askopenfilename(initialdir="/", title="텍스트 파일을 선택해 주세요",
#                                       filetypes=(("txt files", "*.txt"),
#                                                  ("all files", "*.*")))
# text_file = open(filename, 'r', encoding='UTF-8').readlines()
text_file = ['동해물과 백두산이 마르고 닳도록\n', '하느님이 보우하사 우리나라 만세\n', '무궁화 삼천리 화려 강산\n', '대한사람 대한으로 길이 보전하세\n',
             '남산 위에 저 소나무 철갑을 두른듯\n', '바람서리 불변함은 우리 기상일세\n', '무궁화 삼천리 화려 강산\n', '대한사람 대한으로 길이 보전하세\n',
             '가을 하늘 공활한데 높고 구름 없이\n', '밝은 달은 우리 가슴 일편단심일세\n', '무궁화 삼천리 화려 강산\n', '대한사람 대한으로 길이 보전하세\n',
             '이 기상과 이 마음으로 충성을 다하여\n', '괴로우나 즐거우나 나라사랑하세\n', '무궁화 삼천리 화려 강산\n', '대한사람 대한으로 길이 보전하세']
print('엔터를 입력하면 시작합니다.', end='')
input()
for x in text_file:
    correct = 0
    x = x.replace('\n', '')
    x = x.strip()
    print(x)
    start = time.time()
    write_text = input()
    print('속도 : %.2f' % (len(write_text) / (time.time() - start) * 60), end=' / ')
    for y, z in zip(x, write_text):
        if y == z:
            correct += 1
    print('정확도 : %.2f %%' % (correct / len(x) * 100))
    print('--------------------------------------------------')
text_file.close()

# from tkinter import filedialog
# filename = filedialog.askopenfilename(initialdir="/", title="텍스트 파일을 선택해 주세요",
#                                       filetypes=(("txt files", "*.txt"),
#                                                  ("all files", "*.*")))
# text_file = open(filename, 'r', encoding='UTF-8').readlines()

tkinter모듈의 askopenfilemane 함수를 사용하여 텍스트 파일을 선택 후 readlines 라인 별로 리스트에 저장한다.

 

text_file = ['동해물과 백두산이 마르고 닳도록\n', '하느님이 보우하사 우리나라 만세\n', '무궁화 삼천리 화려 강산\n', '대한사람 대한으로 길이 보전하세\n',
             '남산 위에 저 소나무 철갑을 두른듯\n', '바람서리 불변함은 우리 기상일세\n', '무궁화 삼천리 화려 강산\n', '대한사람 대한으로 길이 보전하세\n',
             '가을 하늘 공활한데 높고 구름 없이\n', '밝은 달은 우리 가슴 일편단심일세\n', '무궁화 삼천리 화려 강산\n', '대한사람 대한으로 길이 보전하세\n',
             '이 기상과 이 마음으로 충성을 다하여\n', '괴로우나 즐거우나 나라사랑하세\n', '무궁화 삼천리 화려 강산\n', '대한사람 대한으로 길이 보전하세']

애국가가 저장된 텍스트 파일을 불러와서 readlines 함수를 적용하면 위와 같이 리스트에 저장된다.

 

print('엔터를 입력하면 시작합니다.', end='')
input()

파일을 불러오고 엔터를 누룰 때까지 기다려준다.

 

for x in text_file:
    correct = 0
    x = x.replace('\n', '')
    x = x.strip()
    print(x)

리스트 text_file에서 하나씩 가져와서 개행문자를 제거하고 문자열 양쪽의 빈문자열을 제거한다.

 

	start = time.time()
	write_text = input()
	print('속도 : %.2f' % (len(write_text) / (time.time() - start) * 60), end=' / ')

속도를 측정하기위해 time.time()를 이용하여ㅕ 시작 시간을 저장하고 속도를 계산한다.

 

    for y, z in zip(x, write_text):
        if y == z:
            correct += 1
    print('정확도 : %.2f %%' % (correct / len(x) * 100))
    print('--------------------------------------------------')

for문으로 한 문자씩 정확도를 계산한다.

728x90
728x90
728x90
728x90

python으로 매크로를 만들어 반응속도 테스트에서 외계인이 되려 합니다.

pyautoGUI

마우스와 키보드 제어하는 라이브러리

pip install pyautogui를 이용하여 설치해야 함

 

자주쓰는 pyautoGUI 메서드

position = pyautogui.position()               # 좌표 객체 얻기

print(pyautogui.size())                           # 화면 전체 크기 확인하기

print(position.x)                                   # x, y 좌표

print(position.y)

pyautogui.moveTo(500, 500)                  # 마우스 이동 (x 좌표, y 좌표)

pyautogui.moveTo(100, 100, 2)              # 마우스 이동 (x 좌표, y 좌표 2초간)

pyautogui.click()                                  # 마우스 클릭

pyautogui.click(clicks= 2, interval=2)        # 2초 간격으로 2번 클릭

pyautogui.doubleClick()                        # 더블 클릭

pyautogui.click(button='right')                # 오른쪽 클릭

pyautogui.scroll(10)                              # 스크롤하기

pyautogui.drag(0, 300, 1, button='left')     # 드래그하기

 

write() 함수는 shift나 ctrl 등 특수키를 누룰수 없습니다.

pyautogui.write('hello world!')                           # 괄호 안의 문자를 타이핑 합니다.

pyautogui.write('hello world!', interval=0.25)         # 각 문자를 0.25마다 타이핑합니다.

 

pyautogui.press('shift')                                     # shift 키를 누릅니다.

pyautogui.keyDown('ctrl')                                 # ctrl 키를 누른 상태를 유지합니다.

pyautogui.keyUp('ctrl')                                     # ctrl 키를 뗍니다. 

 

키를 여러번 입력하고 싶을 때

pyautogui.press(['left', 'left', 'left'])                       # 왼쪽 방향키를 세번 입력합니다.

pyautogui.press('left', presses=3)                        # 왼쪽 방향키를 세번 입력합니다. 

pyautogui.press('enter', presses=3, interval=3)       # enter 키를 3초에 한번씩 세번 입력합니다. 

 

여러 키를 동시에 입력하고 싶을 때

pyautogui.hotkey('ctrl', 'c')                                # ctrl + c 키를 입력합니다.


Pillow

이미지 분석 및 처리를 도와주는 패키지

pip install pillow를 작성하여 설치해야 함


반응속도 테스트 외계인 되기

반응 속도 테스트 첫페이지 입니다.
보라색 화면을 클릭하면 빨간색이 되며 초록색이 되었을 때 클릭하여 반응속도를 체크합니다.

import pyautogui
from PIL import ImageGrab

a = 0
while a < 5:
    if ImageGrab.grab().getpixel(pyautogui.position()) == (178, 255, 178):
        pyautogui.click()
        a += 1

pyautogui.position()는 마우스의 좌표를 가져오는 함수이고

getpixel()은 x, y좌표을 매개변수로 받아서 그 위치의 RBG 값을 반환합니다,

마우스가 있는 위치의 RBG값이 초록색 부분 RGB(178, 255, 178)와 비교하여 같으면 클릭하는 작업을 반복합니다.


참고문헌

파이썬 웹크롤링 과 자동화에 대한 A to Z

인프런 강의 - 업무 자동화를 위한 파이썬 pyautogui, beautifulsoup 크롤링 기초

예제로 배우는 파이썬 프로그래밍 - 파이썬 이미지 처리 (Pillow)

정보의 공유 사회 티스토리 - 파이썬 이미지 처리 pillow(PIL) 설치 및 사용 예제 총정리

 

 

728x90
728x90
728x90
728x90