2013-10-20 3 views
0

파이썬으로 프로그램을 만들려고하는데 elif 문을 사용할 때마다 절대로 작동하지 않습니다. 만약 내가 freq에 대해 500을 넣으면 마치 bad을 얻을 때 출력으로 Sorry이 나옵니다.else statement always always

내가 뭘 잘못하고 있니?

freq = raw_input() 
if freq <= "87.10" : 
    print("Sorry") 
elif freq <= "108.10" : 
    print("bad") 
else: 
    print("good") 
+5

freq <= 문자열에? –

+1

Tcl에서 Python으로 오는 사람들에게 좋지 않은 느낌이 들었습니다. 당신이 * 할 수 없었던 사실은 놀라움이 될 것입니다! – SethMMorton

답변

8

이것들은 수치가 아닌 사전 식으로과 비교됩니다. '5''8' 전에 정렬됩니다. 뒤에 오는 것이 무엇이든 관계없이 이 Beta보다 먼저 정렬되기 때문에 AB 앞에옵니다.

대신 숫자를 비교 :

freq = float(raw_input()) 
if freq <= 87.10: 
    print "Sorry" 
elif freq <= 108.10: 
    print "bad" 
else: 
    print "good" 

참고 : 파이썬 2를 사용하는 (또는 raw_input()을 사용할 수 없습니다 것), 그래서 print이 아닌 기능입니다.

+0

또한 python3에서는 예외가 발생합니다. – SethMMorton

+0

성명서로 출력 :'print "hello world!"'-oops는 여러분이 포함 된 것처럼 보입니다. –

+0

@SethMMorton :'NameError'는'raw_input()'이 없기 때문에 가능합니다. 아니요, 이것은 숫자 대 문자열이 아닙니다. 왜냐하면'raw_input()'이 문자열을 반환하기 때문입니다. –