2016-09-17 6 views
-1

저는 계산기를 만들려고 노력하고 있지만 조금 다릅니다. 순간입력을 작업으로 가져 오는 방법

first_number = input('Type first number: ') 
first_operation = input('Type your operation (+, -, *, /): ') 
second_number = input('Type second number: ') 
first_answer = input('Do you wanna stop here y/n: ') 
if first_answer = "y": 
    print(int(first_number), str(first_operation), int(second_number)) 

, 프로그램이 사용자의 입력에 문제를 만들 필요가있다 : 같은 동작으로 얻을 입력하면 나는 생각하고있다. 예를 들어, 사용자가 첫 번째 숫자에 대해 3을 입력하면 첫 번째 작업에 대해 +, 두 번째 숫자에 대해 2을 입력합니다. 3 + 2과 같은 입력 만 쓸 수는 있지만 인쇄 대답 후에 해결하고 싶습니다.

답변

0

잡아에게 operator 모듈에서 운영 및 사용 가능한 사업자의 사전 작성 :

>>> from operator import add, sub, mul, truediv 
>>> ops = {'+': add, '-': sub, '*': mul, '/': truediv} 

이 작업을 수행 한 후, opskeyfirst_operation를 사용할 수있는 작업에 해당 기능을 얻을 first_number 공급을 그 인수로 second_number :

>>> first_number = int(input('Type first number: ')) 
>>> second_number = int(input('Type second number: ')) 
>>> first_operation = input('Type your operation (+, -, *, /): ') 

은의 우리가 5와 01를 입력한다고 가정 해 봅시다 다음및 + : 그들은 유형 str의 경우 다르게 동작하기 때문에

>>> print(ops[first_operation](first_number, second_number)) 
15 

참고, 숫자는 운영자에 공급하기 전에 int에 싸여있다. 간단한 대안으로

, 당신은 그것을 입력으로 표현 공급의 ast 모듈에서 literal_eval을 사용할 수

여기
>>> from ast import literal_eval 
>>> first_number = input('Type first number: ') 
>>> second_number = input('Type second number: ') 
>>> first_operation = input('Type your operation (+, -, *, /): ') 

방금 ​​모든 인수에 참여, int 아무것도 변경할 필요가 없습니다 및 전반적인 표현의 문자열을 만들고 그것을 위해 literal_eval 피드. 또, 15의 결과로

>>> literal_eval('5 + 10') 

:

>>> literal_eval(" ".join([first_number, first_operation, second_number])) 

는 본질적으로 전화처럼 보일 것이다.