-
파이썬 내장함수 eval을 사용하여 앞자리 숫자 부터 차례대로 연산하는 계산기 프로그램 만들기
user = input("숫자를 입력해 주세요") # 사용자에게 입력값 받기 def cc (user) : # 계산기 역할 함수생성 ls = [] # 입력값을 계산할 보드 los = 0 # 현재 연산자의 인덱스 위치 oper = ["+", "-", "/", "*", "="] # 연산자를 담는 배열 생성 if user not in oper : # 입력값중에 마지막에 = 이 없다면 추가 user = user + "=" for i,s in enumerate(user) : # 사용자 입력값을 하나씩 반복문으로 출력하면서 enumerate 함수로 해당 인덱스번호도 같이 출력 if s in oper : # 만약 사용자 입력값에서 빼온 값이 연산자라면 ls.append(user[los : i]) # 처음에 생성한 계산기 보드에 0번째 인덱스 부터 연산자 이전의 인덱스 값까지 추가 ls.append(s) # 처음에 생성한 계산기 보드에 현재 연산자 추가 los = i + 1 # 현재 인덱스의 위치를 기억하기 위해 현재 연산자의 위치에서 +1을 함 # los = 다음 인덱스 위치를 저장 ls = ls[0:-1] # 보드에 임의로 넣어준 =을 제거 ps = 0 # 해당 부분부터 실질적인 계산 시작 # 계산은 인덱스 3개씩 묶어서 eval함수를 통해서 계산 # ex) "1" "+" "3" "+" "5" # 와 같다면 1, +, 3 인덱스 부터 계산후 # 계산한 값을 tamp변수에 넣은 뒤 해당 인덱스 삭제 # 삭제한 인덱스의 위치 즉 0번 인덱스에 계산한 값 insert # 해당 동작을 반복하면서 마지막 남을 결과값 즉 # 인덱스가 0번 하나 밖에 남지 않았을때 해당 반복문 탈출 while True : if len(ls) == 1 : break if len(ls) > 1 and ls[ps] in oper: tamp = ls[ps -1] + ls[ps] + ls[ps+1] del ls[0 : 3] ls.insert(0, str(eval(tamp))) ps = 0 ps += 1 return ls print(cc(user))
'매일프로그래밍' 카테고리의 다른 글
정수 배열안에 특정 정수값 찾기 (0) 2019.11.27 N번째 피보나치 수 구하기 (0) 2019.11.21 주어진 정수의 배수 구하기 (0) 2019.11.19 재귀함수란 ? (0) 2019.11.18 주어진 문장의 2번째 단어 없애기 (0) 2019.11.18