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)

 

* 코드 설명
수식을 저장한다.

항은 2-3개정도로 하고 조정이 가능하다.

최종적으로 파이썬py파일을 실행하면

수식이미지 500개가 나오고 정답은 파일명이다. (정답이 중복되면 덮어쓰니 주의)

 

위 코드로 만든 사칙연산 퀴즈는 아래 사이트에서 진행할 수 있다.

https://supercup.co.kr/quizstat?type=keNKrpTRZPgq&start=Y 

 

+ Recent posts