2013-12-08 6 views
-2

필자는 파이썬 기술을 연습하고 문자를 내가 지정한 특정 숫자로 변환하는 프로그램을 작성하려고합니다. 코드의이 부분은 나에게 오류를 준다. 나는 네가 나에게 문제를 지적 할 때 묻는 것은 어리석은 일이라고 생각한다. 주어진Elif와 Python 3의 문제

num = input("Number is:") 
    for digit in num: 
     if (digit == "a" or "b" or "c"): 
      digit = "2" 
     elif (digit == "d" or "e" or "f"): 
      digit = "3" 
     elif (digit == "g" or "h" or "i"): 
      digit = "4"  
     elif (digit == "j" or "k" or "l"): 
      digit = "5" 
     elif (digit == "m" or "n" or "o"): 
      digit = "6" 
     elif (digit == "p" or "q" or "r" or "s"): 
      digit = "7" 
     elif (digit == "t" or "u" or "v"): 
      digit = "8" 
     else (digit == "w" or "x" or "y" or "z"): 
      digit = "9" 

오류 : 여기서

코드의 "구문 오류 : 다른 (자리 =="w "또는"X "또는"Y "또는"Z ") : 없음, 라인 1,710" .

도움을 많이 주시면 감사하겠습니다.

+2

'자리하는 것은 == ''w '또는 x''는 방법 당신 모호 그것을 대우하고 있습니다. 그것은'digit == 'w'또는'x ')'를 의미합니까, 아니면'digit == ('w '또는'x ')'를 의미합니까? (여전히 작동하지 않지만 그것을 가정합니다). 'digit == 'w'또는 digit == 'x''또는보다 간결하게 : digit in ('w', 'x')'명시 적이어야합니다. – Blender

답변

3

else에는 조건부가 적용되지 않습니다. digit=9w, x, y 또는로 좁히려면 elif으로 설정해야합니다. 코드에 더 읽기

그렇지 않으면

,

else: 
    digit = "9" 

, 당신의 조건문이 완료되지 않습니다. 이러한 검사를 할 수있는 더 좋은 방법은

if digit in ["a", "b", "c"]: 

또는 코드가 지금 방법에 가까이 인라인 수 :

if digit == "a" or digit == "b" or digit == "c": 
+0

고마워, 그게 옳은 대답이야. 이제 문제는 단지 문자를 숫자로 변환하지 않는다는 것입니다. 그냥 편지를 보관합니다. 왜 그런가? @andy – kiasy