2013-07-14 3 views
1

아래 코드에서 raw_input의 동작을 이해하고자했습니다. 알고 계신 분은 num입니다. 입력 한 숫자에 관계없이 항상 elif 부분을 입력하십시오. 예를 들어 num이 5 인 경우 if num<check: 부분으로 이동하거나 num이 10 일 경우 else 부분으로 이동해야합니다. 매번 elif으로 갈 것입니다. 나는 STRING과 INT가 예외를 던질 수 있다고 생각했는데 (그렇게 생각하지는 않는다) 단지 try except을 포함했지만 예상대로 예외를 던지지 않았다. 주어진 입력 (10)에도 때 항상 평등이어야 경우에 내가 출력 을 기다리고 있었다, elif을 타격raw_input()의 동작

num = raw_input('enter a number') 
check = 10 
try: 
    if num<check: 
     print 'number entered %s is less'%num 

    elif num>check: 
     print 'number entered %s is greater'%num 

    else: 
     print 'Equal!!!' 
    print 'END' 
except Exception,e: 
    print Exception,e 

는, 파이썬 전문가가, 신비 :

+0

[파이썬 문자열을 비교하고 int로 않습니다 어떻게?]의 중복 가능성 (http://stackoverflow.com/questions/3270680/how-does-python-compare-string-and-int) –

답변

4
를 해결하십시오 왜 그러나 나 퍼즐 것은

raw_input은 문자열을 반환합니다. 따라서 int(raw_input())을 사용하십시오.

문자열 및 int comparsion이 작동하는 방식은 here입니다.

+0

그 링크는 내 모든 의문/질문/혼동을 제거했습니다. 링크에 감사 드리며 num을 int 형으로 변환하는 것을 알고 있지만 raw_input을 이해하고 싶었습니다. 단지'input() '을 사용하면 내 목적을 해결할 수있을 것입니다. – ramd

+0

'input()'만 사용하면 보안 상 위험 할 수 있습니다. 파이썬 2에서'input'의 기능이 파이썬 3에서 없어지는 이유가 있습니다. – Matthias

1

answer here을 참조하십시오.

기본적으로 사과와 오렌지를 비교하고 있습니다.

>>> type(0) < type('10') 
True 
>>> 0 < '10' 
True 
>>> type(0) ; type('10') 
<type 'int'> 
<type 'str'> 
0
Python 2.7:  
num = int(raw_input('enter a number:')) 
Variable "num" will be of type str if raw_input is used. 
type(num)>>str 
or 
num = input("Enter a Number:")# only accept int values 
type(num)>>int 

Python 3.4 : 
num = input("Enter a Number:") will work ... 
type(num)>>str 
convert the variable "num" to int type(conversion can be done at time of getting the user "input") : 
num1 = int(num)