2013-09-21 5 views
2

간단한 산술 연산을 수행하는 프로그램을 작성하려고합니다. 나는 프로그램이이 개 번호를 사용자에게 메시지를 표시 한 다음 다섯 개 결과를 계산하려면 :파이썬 3 : 기본 산술 연산

  • 합을
  • 차이
  • 제품
  • 몫 양의 정수에 따라
  • 부동 소수점 분할.

지금, 파이썬 2에서, 일반적으로 숫자 문자열과 입력이 raw_input을 것을 기억 해요. 그러나 나는 단지 Python 3을 배우고 있으며, 입력은 기본적으로 문자열이며 숫자에 대해 원하는 숫자의 유형을 지정해야합니다. 즉 int (input()) 또는 float (input()) .

What is the first number? 4 
What is the second number? 2.5 
The sum is 6.5 
The difference is 1.5 
The product is 8.0 
The integer quotient is 2 
The floating-point quotient is 1.6 

내가 에이 코드를 입력합니다 파이썬 2 :

그래서, 예를 들어, 내가 (입력 4 및 2.5을 사용하여) 정확히 출력을 갖고 싶어한다고 가정하자

x=input ("What is the first number? ") 
y=input ("What is the second number? ") 

print "The sum is", x+y 
print "The difference is", x-y 
print "The product is", x*y 
print "The integer quotient is", int(x)/int(y) 
print "The floating-point quotient is", float(x)/float(y) 

그러나 완료 할 수 없습니다. Python 3. 내 두 번째 입력 (Y)에 의해 정의 된 플로트 아닌 INT 4.5을, 동일하기 때문에이 오류 메시지가, 분명히

x = int(input("What is the first number? ")) 
y = int(input("What is the second number? ")) 

print("The sum is: ", x+y) 
print("The difference is: ", x-y) 
print("The product is: ", x*y) 
print("The integer quotient is: ", x/y) 
print("The floating-point quotient is: ", x/y) 

: 이것은 내가 사용하고있는 (잘못된) 코드 내 입력. 부동 소수점 지수에 대해 float (x)/float (y)를 두는 것은 어렵지 않으므로 (모순) (따라서 오류). 대신 1.6 (

x = float(input("What is the first number? ")) 
y = float(input("What is the second number? ")) 

그러나이 경우, 내 제품 (안 10), 내 정수 지수 10.0을 얻을 것이다

는 부동입니다 :

나는 물론 대신 이런 INT의 떠 넣어 수 of 2)

나는 파이썬 3에서 입력을위한 일반 타입 번호를 요구할 수 없다는 것을 정말로 안타깝게 느낀다 (float 또는 int인지 지정할 필요없이). 따라서, 나는 그러한 단순한 프로그램에 머물러있어 어떤 해법/설명을 크게 고맙게 생각할 것입니다.

+1

'input()'은 "numbers in general"가 아니 었습니다. 파이썬 인터프리터에서 평가할 때 객체를 반환하는 것이 었습니다. 'else (2)'를'input()'프롬프트에 삽입하면 정수 '1'이 반환됩니다. – millimoose

+2

그것은 또한 끔찍한 안전하지 않은 생각이었고 당신이 일반적으로 원하는 것이 아니 었습니다. 그래서 그것을 변경했습니다. – user2357112

+2

기본적으로 변경 사항은 사용자가 예상하고있는 입력을 알고 있어야하거나 사용자가 직접 입력을 검사하고 직접 결정해야합니다. 'input()'에서 얻은 문자열을 여전히'eval()'할 수 있으며 재미있는 일을하지 못하도록 예방 조치를 취하십시오. 더 나은 방법은 ['ast.literal_eval()'] (http://docs.python.org/3.3/library/ast.html#ast.literal_eval)을 사용하는 것입니다. . – millimoose

답변

3

당신은 int로 입력을 구문 분석을 시도하고, 그래도 문제가 해결되지 않으면 float로 취급 할 수

def float_or_int(x): 
    try: 
     return int(x) 
    except ValueError: 
     return float(x) 

x = float_or_int(input("What's x?")) 
y = float_or_int(input("What's y?")) 

파이썬 3에서 바닥 부문을 얻으려면, 당신은 명시 적으로 요청해야 // 연산자 그것은이 "정수 몫"작업이 정말 부동 소수점 입력에 대한 이해가되지 않는

print("The integer quotient is:", x//y) 

참고.

+0

도움 주셔서 감사합니다! 물론이 문제를 해결할 수있는 방법이 있습니다. 나는 그저 그런 간단한 프로그램이 더 많은 코드를 필요로하지 않을 것이라고 생각했다. –