코딩도장

n번 계산기

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

예:

입력1: 2

입력2: 8/2

출력:2

계산:

1회 8/2=4

2회 4/2=2

출력:2

if
(追記) (追記ここまで)
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

12개의 풀이가 있습니다. 1 / 2 Page

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. 연산자를 구분자로 입력횟수만큼 해당연산 반복
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
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))
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

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

효찬정

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

(注記) 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
풀이 작성은 로그인이 필요합니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.

if x 2
연관 문제

언어별 풀이 현황
전 체 x 12
python x 10
기 타 x 2
코딩도장 © 2014 · 문의 [email protected]
피드백 · 개인정보취급방침 · RSS

AltStyle によって変換されたページ (->オリジナル) /