이 페이지는 코딩도장 데이터의 읽기 전용 정적 보관본입니다.

n번 계산기

수를 n번 만큼 계산하는 계산기를 만드세요. 사칙연산 기능이 포함되어있어야 합니다.

예:

입력1: 2

입력2: 8/2

출력:2

계산:

1회 8/2=4

2회 4/2=2

출력:2

if

2022/12/10 19:16

조랭이떡

12개의 풀이가 있습니다.

print("Enter 'q' to quit.") while True: first_number = input("Enter first number: ") if first_number == 'q': break second_number = input("Enter second number: ") if second_number == 'q': break try: first_number = float(first_number) second_number = float(second_number) except ValueError: print("Invalid input. Please enter a number.") else: operation = input("Enter an operation (+, -, , /): ") if operation == '+': result = first_number + second_number print(first_number, "+", second_number, "=", result) elif operation == '-': result = first_number - second_number print(first_number, "-", second_number, "=", result) elif operation == '': result = first_number * second_number print(first_number, "*", second_number, "=", result) elif operation == '/': try: result = first_number / second_number print(first_number, "/", second_number, "=", result) except ZeroDivisionError: print("Cannot divide by zero.") else: print("Invalid operation. Please enter a valid operation.")


2023/01/29 23:27

박형준

n=input("몇 회 연산할 것입니까?\n")

a=input("할 연산을 입력하세요.\n")

changedA=a.replace("+", ".").replace("-", ".").replace("*", ".").replace("/", ".")


isAd=a.find("+")
isSu=a.find("-")
isMu=a.find("*")
isDi=a.find("/")

numbers=changedA.split(".")

n1=int(numbers[0])
n2=int(numbers[1])

print("{}와 {}".format(n1, n2))

result=0


def Add(p, q):
    return p+q

def Subtract(p, q):
    return p-q

def Multiply(p, q):
    return p*q

def Divide(p, q):
    return p/q

def Repeat(func):
    returnNum=n1
    for i in range(int(n)):
        returnNum=func(returnNum, n2)
    return returnNum



if isAd!=-1:
    result=Repeat(Add)
elif isSu!=-1:
    result=Repeat(Subtract)
elif isMu!=-1:
    result=Repeat(Multiply)
elif isDi!=-1:
    result=Repeat(Divide)

print("결과는 {}입니다.".format(result))


이 코드는 1. 어떤 연산자가 쓰였는지 검사, 2. 연산 반복 이 두 단계로 나뉩니다. 1번은 문자열에 쓰는 find 함수를 통해 구현하였습니다. 그 이후에 split 함수로 입력받은 문자열을 잘 재조작하여 연산 가능한 정수형으로 바꾼 뒤에 그것들에 함수를 반복 적용시켜주면 되는 것입니다.

2023/02/18 16:37

개발선

print(4/2)

2023/03/23 09:23

김정헌

def n_calcul(n, w_range):
    num1 = ''
    num2 = ''
    ix = 0  # 숫자 구분자
    sa_math = ''  # 연산 구분자
    for i in n:
        if ix == 1:
            num2 += i
        elif i == '*' or i == '/' or i == '+' or i == '-':
            ix = 1
            sa_math = i
        else:
            num1 += i

    num1 = int(num1)
    num2 = int(num2)

    for i in range(int(w_range)):
        if sa_math == '*':  # *
            num1 = num1 * num2
        elif sa_math == '*':  # /
            num1 = num1 / num2
        elif sa_math == '+':  # +
            num1 = num1 + num2
        elif sa_math == '-':  # -
            num1 = num1 - num2

    return str(num1)

#main
math_string = input("계산식을 입력하세요 : ")
while_range = input("반복횟수 : ")

result = n_calcul(math_string, while_range)
print('result : ' + result)
  1. 반복문을 통해 숫자1, 숫자2, 연산자 분리 (split, find 등의 함수로 개선가능)
  2. 연산자를 구분자로 입력횟수만큼 해당연산 반복

2023/03/31 09:19

HoHyeon Kim

count = int( input("몇 회 계산할 건가요"))

print(f"{count} 번 계산을 선택하셨습니다" )

for x in range(count):
    inputData = input("계산식을 입력해주세요")

    CaluStats =  ""
    CalArray =["+","-","*","/"]
    CntCal=0
    for cal in CalArray:
        if inputData.find(cal) >= 0:
            CaluStats = cal
            UnitCalCnt =inputData.count(cal)

            CntCal = CntCal+UnitCalCnt  if UnitCalCnt >1 else 1

            print(f"계산식은 {cal}이며 {UnitCalCnt} 입니다")


    if CntCal > 1 :
        raise TypeError("계산식이 2개이상 포함되었습니다")
    if CntCal == 0 :
        raise TypeError("계산식이 없습니다")

    print(f"[{x+1}] 번째 입력한 계산식은 {inputData} 이며 연산기호는 {CaluStats} 이며 결과는 {eval(inputData)} 입니다")


2023/04/20 10:55

Seokwoo Choi

def calcProblem(problem):
    first = ""
    curr = ""
    op = ''
    for c in problem:
        if c.isdigit():
            curr += c
        else:
            op = c
            first = int(curr)
            curr = ""

    if op == '+':
        return first + int(curr)
    elif op == '-':
        return first - int(curr)
    elif op == '*':
        return first * int(curr)
    elif op == '/':
        return first / int(curr)
    else:
        print('잘못된 수식입니다...')
        return -1


N = int(input('계산식의 개수는: '))
for i in range(1, N+1):
    problem = input('{} 번째 문제을 입력 하세요: '.format(i))
    ans = calcProblem(problem)
    if ans != -1:
        print(problem, ' = ', calcProblem(problem))

2023/05/17 21:33

insperChoi

run_time = int(input())
cal = input()

num1, arithm, num2 = cal.split(' ', 3)
num1 = float(num1)
num2 = float(num2)

for i in range(run_time):
  if arithm == '/':
    num1/=num2
  elif arithm == '*':
    num1*=num2
  elif arithm == '+':
    num1+=num2
  elif arithm == '-':
    num1-=num2

print(num1)

2023/07/14 16:18

스탠리

입력값이 두자리 이상일 경우('2234/12')를 고려한 Slicing을 해주었음.

n = int(input())
m = input()
def equation(m, n):
    result = 0
    for _ in range(n):
        if '+' in m:
            idx = m.find('+')
            left, right = int(m[:idx]), int(m[idx+1:])            
            result = left + right
            m = str(result)+'+'+str(right)
        elif '-' in m:
            idx = m.find('-')
            left, right = int(m[:idx]), int(m[idx+1:])            
            result = left - right
            m = str(result)+'-'+str(right)
        elif '*' in m:
            idx = m.find('*')
            left, right = int(m[:idx]), int(m[idx+1:])            
            result = left * right
            m = str(result)+'*'+str(right)
        elif '/' in m:
            idx = m.find('/')
            left, right = int(m[:idx]), int(m[idx+1:])            
            result = left // right
            m = str(result)+'/'+str(right)
    return result

print(equation(m, n))

2023/07/22 22:37

Hawk Lee

Python 3.12

import re


def parser(input_str: str) -> tuple[str, str]:
    """입력식을 선행부분(피연산자)와 식을 포함한 후행부분(연산자)로 구분"""
    pattern = r"[\+\-\*\/]"
    match_obj = re.search(pattern, input_str)
    if match_obj:
        operand: str = input_str[: match_obj.start()]
        operator_body: str = input_str[match_obj.start() :]
    else:
        raise ValueError("Invalid input.")  # 유효한 사칙연산 식이 아닐 경우
    return operand, operator_body


def main():
    repeats = int(input())  # 입력 1
    operand, operator_body = parser(input())  # 입력 2
    for rpt in range(repeats):
        expr = f"{operand}{operator_body}"
        # 연산식이 올바르지 않을 경우 예외처리
        try:
            operand = eval(expr)
        except (SyntaxError, NameError, ZeroDivisionError) as e:
            print(f"Unvalid expression to eval(): {e}")
            raise
        print(f"{rpt+1}th calculation: {expr} = {operand}")
    print(operand)  # 출력


if __name__ == "__main__":
    main()

2023/11/08 12:44

mohenjo

n = int(input("Enter the number of operations: "))

for i in range(n): operation = input("Enter an operation (+, -, *, /): ") num1 = float(input("Enter the first number: ")) num2 = float(input("Enter the second number: ")) result = None

if operation == "+":
    result = num1 + num2
elif operation == "-":
    result = num1 - num2
elif operation == "*":
    result = num1 * num2
elif operation == "/":
    result = num1 / num2
else:
    print("Invalid operation")
    continue

print(f"{num1} {operation} {num2} = {result}")

2024/02/02 12:12

효찬정

import re
num1=int(input("반복 횟수를 입력하세요="))
num2=input("수식을 입력하세요=")
equation=re.compile("([0-9]+)([+]|[-]|[*]|[/]+)([0-9]+)")
equation_anal=equation.search(num2)
print(equation_anal.group())
n1=int(equation_anal.group(1))
for i in range(num1):
    if equation_anal.group(2)=="+":
        n2=n1+int(equation_anal.group(3))
    elif equation_anal.group(2)=="-":
        n2=n1-int(equation_anal.group(3))
    elif equation_anal.group(2)=="/":
        n2=n1/int(equation_anal.group(3))
    elif equation_anal.group(2)=="*":
        n2=n1*int(equation_anal.group(3))
    print(n1,equation_anal.group(2),equation_anal.group(3),"=",n2)
    n1=n2

2024/02/04 14:56

Dr.Choi

python 3.8
n = 10
expression = "100-10"

operand = []
op = ""
num = ""
result = 0
for d in expression:
    if d.isdigit():
        num += d
    else:
        operand.append(int(num))
        num = ""
        op = d
if num:
    operand.append(int(num))


for i in range(n):
    if i == 0:
        result = eval(f"{operand[0]} {op} {operand[1]}")
        print(f"{operand[0]} {op} {operand[1]}")
    else:
        print(f"{result} {op} {operand[1]}")
        result = eval(f"{result} {op} {operand[1]}")
print(result)

2024/04/18 23:50

김맹준

입력된 수식을 숫자와 연산자로 분리한 다음 eval함수를 사용하는 방법도 있습니다. - 김맹준, 2024/04/18 23:52
목록으로