본문 바로가기
프로그램

[파이썬] 문제 : random을 사용한 사칙연산

by 오디세이99 2022. 11. 25.
728x90
반응형

(문제)

random 모듈을 사용하여 1부터 100미만의 난수를 2개 생성하고,

사칙 연산이 랜덤으로 실행되도록 하고,
‘종료’를 입력하면 프로그램은 종료되고,
프로그램 종료 전 문제를 맞힌 개수를 출력하는 프로그램의 코드를 작성
 
(방법)
import random

ok_cnt = 0           # 맞은 수
game_cnt = 0         # 전체 게임수
while(True):
    v1 = random.randint(1,100)    # 1~100 난수 발생
    v2 = random.randint(1,100)    # 1~100 난수 발생
    calcu = random.randint(1, 4)  # 1=+, 2=-, 3=*, 4=/   (사칙연산 구분 난수 발생)

    state = '[' + str(ok_cnt) + '/' + str(game_cnt) + '] ' # 게임 총수와 맞은 수 문자열로 변환(출력에서 사용)
    if calcu == 1:   
        rtn = input(state + str(v1) + ' + ' + str(v2) + ' = ')
        if rtn ==  '종료':                  # 종료면 break로 while을 빠져나가 종료됨
            break
        
        rtn = int(rtn)                       # 입력된 문자열을 정수로 변환
        if rtn == (v1+v2):                  # 계산이 맞는지 확인
            print('계산이 맞았습니다!!')
            ok_cnt += 1                      # 맞은 갯수 +1
        else:
            print('틀력습니다. 정답은 ' + str(v1+v2) + ' 입니다')
    elif calcu == 2:
        rtn = input(state + str(v1) + ' - ' + str(v2) + ' = ')
        if rtn ==  '종료':
            break

        rtn = int(rtn)
        if rtn == (v1-v2):
            print('계산이 맞았습니다!!')
            ok_cnt += 1
        else:
            print('틀력습니다. 정답은 ' + str(v1-v2) + ' 입니다')
    elif calcu == 3:
        rtn = input(state + str(v1) + ' * ' + str(v2) + ' = ')
        if rtn ==  '종료':
            break
            
        rtn = int(rtn)            
        if rtn == (v1*v2):
            print('계산이 맞았습니다!!')
            ok_cnt += 1
        else:
            print('틀력습니다. 정답은 ' + str(v1*v2) + ' 입니다')
    elif calcu == 4:
        tmp = v2         # 항상 큰수를 작은 수가 나누도록 함
        if v2 > v1:
            v2 = v1
            v1 = v2

        rtn = float(input(state + str(v1) + ' / ' + str(v2) + ' = '))
        if rtn ==  '종료':
            break
            
        rtn = int(rtn)
        if rtn == (v1/v2):
            print('계산이 맞았습니다!!')
            ok_cnt += 1
        else:
            print('틀력습니다. 정답은 ' + str(v1/v2) + ' 입니다')
    
    game_cnt += 1                    # 전체 게임수 +1

728x90
반응형

댓글