더북(TheBook)

정답을 끼워 넣을 차례입니다. 현재 selection에는 4개의 요소가 있으므로 인덱스 [0]부터 [3]까지 있습니다. 정답을 추가하면 인덱스는 [4]까지로 늘겠죠. 정답은 selection의 무작위 위치에 들어가야 하므로 0~4 중 하나를 무작위로 선택해야 합니다. 6장에서 다루지는 않았지만 리스트 중간에도 값을 추가할 수 있습니다. 형식은 다음과 같습니다.

형식

리스트명.insert(인덱스, 값)

randint()를 활용해 0부터 4 사이에서 인덱스를 구하고, 해당 인덱스에 정답인 num1 * num2를 끼워 넣으면 됩니다. 다음으로 완성된 선택지 selection을 콤보박스와 다시 연결해야겠죠? 콤보박스의 values에 새로운 값은 콤보박스명['vaules'] = 리스트명 형식으로 넣습니다. 따라서 여기에서는 a_combo['values'] = selection이 됩니다. set()을 사용하면 selection의 각 요소가 모두 한 줄로 표시되어 선택지가 하나로 나오기 때문에 이 방식을 사용합니다.

import random

# ----- 프로그램 기능 부분 -----
num1, num2 = 0, 0

def make_question():
    global num1, num2
    # 문제 만들기
    num1, num2 = random.randint(2, 9), random.randint(1, 9)
    question.set(str(num1) + 'x' + str(num2) + '? ')
    # 선택지 초기화하고 새로 만들기
    selection = []
    for i in range(4):
        selection.append(random.randint(2, 81))
    # 무작위 위치에 정답 끼워 넣기
    idx = random.randint(0, 4)
    selection.insert(idx, num1 * num2)

    # 콤보박스에 변경된 리스트 연결하기
    a_combo['values'] = selection
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.