2013-04-02 2 views
-1

당신이 코드 전문가라면 이것이 바보처럼 보일 수 있습니다. 하지만 당신이 대답하면, 당신은 코더의 초자연적 인 영역에서 코드 보살과 같은 것이 될 것입니다. 그것은 농담으로 여겨지고 있습니다. 나는이 코드를 실행하면"if num is int :"조건이 작동하지 않는 이유는 무엇입니까?

def media():  
n = 0 
soma = 0 
while True: 
    print("Type a number") 
    num = input() 
    print type(num) 
    if num is int: 
     soma = soma + num 
     n = n + 1 
     print "soma =", soma, " num = ", num, " n = ", n 
     media = soma/n 
     print media 
    else: 
     break 
media() 

, 나는 이런 식으로 뭔가를 얻을 :

enter image description here

내 질문은 : 조건 if num is int: 인 이유

그래서, 코드의이 비트를 썼다 성취되지 않았습니까?

내 목표는 사용자가 ENTER를 입력 한 다음 중단하는 경우 조건을 만드는 것입니다. 사전에

감사합니다.

+1

올바른 구문은 "if isinstance (num, int)"입니다. 음, 파이썬 너무 beautifull 간단하고 양식은 "만약 num이 int입니다 :"너무 깔끔한 것 같습니다. 얼마나 불쌍한가! – craftApprentice

+3

타입 검사는 일반적으로 2.x에서'input()'을 사용하는 것과 같이 파이썬에서 나쁜 형태로 간주됩니다 - 대신에'raw_input()'을 사용하고'int()'를 사용하여 돌려 주어지는 캐릭터 라인 성공하면 숫자, 예외가 발생하면 그렇지 않습니다. –

답변

11
if isinstance(num, int) 

올바른 방법일까요?

if num is int 

int 제외하고 numint의 ID가 같은지 확인된다 일종 그들이 동일한 개체되지 않도록 num 해당 타입의 인스턴스이다.

+1

당신은 카르마 포인트를받을 자격이 있습니다. 니르바나에서 뵙겠습니다! – craftApprentice

관련 문제