본문 바로가기
프로그램

[파이썬] 문제 : 사칙연산 랜덤 계산

by 오디세이99 2023. 11. 8.
728x90
반응형
import random

op_idx = random.randint(0,3)     # 0=덧셐, 1=뺄셈, 2=곱셐, 3=나눗셐
op_lst = ['+','-','x','/']       # 화면에 연산부호 표시흫 위한 리스트. op_idx로 가리칠 수 있음
op_str = op_lst[op_idx]          # 화면에 보이는 연산부호

a = random.randint(1,99)         # 1~99까지 임의의 수 생성
b = random.randint(1,99)         # 1~99까지 임의의 수 생성 

answer = input(f"{a} {op_str} {b} = ")

if op_idx == 0:         # 덧셈
    result = (a + b)
elif op_idx == 1:       # 빼셈
    result = (a - b)
elif op_idx == 2:       # 곱셈
    result = (a * b)
elif op_idx == 3:       # 나눗셈
    result = (a / b)
    
if op_idx == 3:          # 나눗셈은 답이 실수 즉 소수점 아래값이 나오므로 실수로 변환
    answer = float(answer)
else:                    # 나눗셈 외에는 답이 정수가 되기때문에 정수 변환
    answer = int(answer)

if answer == result:     #답의 정답 여부에 따른 출력
    print('정답입니다.')
else:
    print(f"틀렸습니다. 정답은 {result} 입니다.")

 

또 다른 방법. 사칙연산 함수를 리스트의 요소로 등록해 사용할 수 있음.

import random

def add(a, b):         # 각각의 사칙연산 함수
    return a + b

def sub(a, b):
    return a - b

def mul(a, b):
    return a * b

def div(a, b):
    return a/b

op_func = [add, sub, mul, div]   # 사칙연산의 함수를 리스트의 요소로 대입

op_idx = random.randint(0,3)     # 0=덧셐, 1=뺄셈, 2=곱셐, 3=나눗셐
op_lst = ['+','-','x','/']       # 화면에 연산부호 표시흫 위한 리스트. op_idx로 가리칠 수 있음
op_str = op_lst[op_idx]          # 화면에 보이는 연산부호

a = random.randint(1,99)         # 1~99까지 임의의 수 생성
b = random.randint(1,99)         # 1~99까지 임의의 수 생성 
 
answer = input(f"{a} {op_str} {b} = ")   # 정답 입력 받기

result = op_func[op_idx](a, b)    # 사칙연산 함수가 요소로 있는 리스트를 인덱스로 실행하면서 인수로 주면 함수 실행 됨

if op_idx == 3:          # 나눗셈은 답이 실수 즉 소수점 아래값이 나오므로 실수로 변환
    answer = float(answer)
else:                    # 나눗셈 외에는 답이 정수가 되기때문에 정수 변환
    answer = int(answer)

if answer == result:     #답의 정답 여부에 따른 출력
    print('정답입니다.')
else:
    print(f"틀렸습니다. 정답은 {result} 입니다.")
728x90
반응형

댓글