import random
from PIL import Image, ImageDraw, ImageFont
# 수식 생성 함수
def generate_equation():
operand_count = random.randint(2, 3) # 항의 개수 (2-3)
equation = ""
# 랜덤하게 숫자와 연산자를 조합하여 수식 생성
for i in range(operand_count):
if i > 0:
operator = random.choice(["+", "-"]) # 연산자 선택 (+, -)
equation += operator
equation += str(random.randint(1, 9)) # 숫자 선택
# 곱하기 연산자 추가 (최대 1번)
if random.random() < 0.5: # 50%의 확률로 곱하기 연산자 추가
equation += "X" + str(random.randint(1, 9))
# 나누기 연산자 추가 (최대 1번)
if random.random() < 0.5: # 50%의 확률로 나누기 연산자 추가
divisor = random.randint(1, 9)
dividend = random.randint(1, 9) * divisor
equation += "/" + str(divisor)
answer = dividend / divisor
# 정답이 소수점으로 나오는 경우 다시 수식 생성
if answer != int(answer):
return generate_equation()
else:
# 정답 계산하여 수식 완성
answer = eval(equation.replace("X", "*"))
equation += " = "
return equation, int(answer)
# 이미지 크기 설정
image_width = 600
image_height = 100
# 이미지 저장 디렉토리
save_directory = "C:/app/math/"
# 폰트 설정
font_path = "C:/Windows/Fonts/Arial.ttf"
font_size = 40
font = ImageFont.truetype(font_path, font_size)
# 500개의 수식 이미지 생성 및 저장
for i in range(500):
equation, answer = generate_equation()
# 이미지 생성
image = Image.new("RGB", (image_width, image_height), (255, 255, 255))
draw = ImageDraw.Draw(image)
# 수식을 이미지에 그리기
draw.text((10, 10), equation, font=font, fill=(0, 0, 0))
# 이미지 저장
filename = save_directory + str(answer) + ".png"
image.save(filename)
from PIL import Image, ImageDraw, ImageFont
# 수식 생성 함수
def generate_equation():
operand_count = random.randint(2, 3) # 항의 개수 (2-3)
equation = ""
# 랜덤하게 숫자와 연산자를 조합하여 수식 생성
for i in range(operand_count):
if i > 0:
operator = random.choice(["+", "-"]) # 연산자 선택 (+, -)
equation += operator
equation += str(random.randint(1, 9)) # 숫자 선택
# 곱하기 연산자 추가 (최대 1번)
if random.random() < 0.5: # 50%의 확률로 곱하기 연산자 추가
equation += "X" + str(random.randint(1, 9))
# 나누기 연산자 추가 (최대 1번)
if random.random() < 0.5: # 50%의 확률로 나누기 연산자 추가
divisor = random.randint(1, 9)
dividend = random.randint(1, 9) * divisor
equation += "/" + str(divisor)
answer = dividend / divisor
# 정답이 소수점으로 나오는 경우 다시 수식 생성
if answer != int(answer):
return generate_equation()
else:
# 정답 계산하여 수식 완성
answer = eval(equation.replace("X", "*"))
equation += " = "
return equation, int(answer)
# 이미지 크기 설정
image_width = 600
image_height = 100
# 이미지 저장 디렉토리
save_directory = "C:/app/math/"
# 폰트 설정
font_path = "C:/Windows/Fonts/Arial.ttf"
font_size = 40
font = ImageFont.truetype(font_path, font_size)
# 500개의 수식 이미지 생성 및 저장
for i in range(500):
equation, answer = generate_equation()
# 이미지 생성
image = Image.new("RGB", (image_width, image_height), (255, 255, 255))
draw = ImageDraw.Draw(image)
# 수식을 이미지에 그리기
draw.text((10, 10), equation, font=font, fill=(0, 0, 0))
# 이미지 저장
filename = save_directory + str(answer) + ".png"
image.save(filename)
* 코드 설명
수식을 저장한다.
항은 2-3개정도로 하고 조정이 가능하다.
최종적으로 파이썬py파일을 실행하면
수식이미지 500개가 나오고 정답은 파일명이다. (정답이 중복되면 덮어쓰니 주의)
위 코드로 만든 사칙연산 퀴즈는 아래 사이트에서 진행할 수 있다.
https://supercup.co.kr/quizstat?type=keNKrpTRZPgq&start=Y
'개발' 카테고리의 다른 글
카카오 OAuth2 로그인 사파리 브라우저에서 안되는 이슈 (1) | 2023.09.26 |
---|---|
파이썬 - 사이트 크롤링해서 정보 저장하기 (포켓몬 도감 LOCAL에 저장) (0) | 2023.07.04 |
인물퀴즈는 SuperCup (0) | 2023.07.03 |
Spring Boot & DDD(Domain-Driven Design) 아키텍처 (0) | 2023.06.27 |
JAVA & Spring Boot (0) | 2023.06.27 |