수를 n번 만큼 계산하는 계산기를 만드세요. 사칙연산 기능이 포함되어있어야 합니다.
예:
입력1: 2
입력2: 8/2
출력:2
계산:
1회 8/2=4
2회 4/2=2
출력:2
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.")
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 함수로 입력받은 문자열을 잘 재조작하여 연산 가능한 정수형으로 바꾼 뒤에 그것들에 함수를 반복 적용시켜주면 되는 것입니다.
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)
2023年03月31日 09:19
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
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
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)
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
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()
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}")
풀이 작성