2012-02-20 7 views
0

그래서 내가 코드를 가지고 : 그런데파이썬 형식 오류

intex = input("Enter in a letter of text\n") 
if intex == 'a' or 'b' or 'c' or 'd' or 'e' or 'f' or 'g' or 'h' or 'j' or 'k' or 'l' or 'm' or 'n' or 'o' or 'p' or 'q' or 'r': 
    counter += intex 
    print(counter) 

을 모든 문자가 정의되어, 나는 그냥 그들 넣어이 켜지지 생각하지 않았다, (A = 1, B = 2 등)하지만 코드를 실행할 때마다 오류가 발생합니다. TypeError: unsupported operand type(s) for +=: 'int' and 'str'

이 오류의 의미를 알고 번호에 문자를 추가 할 수는 있지만 오류없이 수행 할 수있는 방법이 있습니까? 나는 float()를 시도했으나 다른 오류가 발생했습니다! 도와주세요!

+0

'intex =='a '또는'b '또는'c ''어떻게 생각하십니까? 이 코드 스 니펫을 설명해 주시겠습니까? 내가 본 모든 파이썬과는 다릅니다. –

+0

'abcdefghijklmnopqr''의'counter + = input ('텍스트 문자로 입력하십시오 \ n') –

+0

'카운터 계산이란 무엇입니까? 어떻게 사용합니까? –

답변

7

or 연산자는 생각대로 작동하지 않습니다. a or b 표현식은 truth value 인 경우 a을, 그렇지 않은 경우 b을 반환합니다. 당신은 아마 그런 그 a지도 1 등의 정수로 편지를 번역하려면

if intex in "abcdefghijklmnopqr": 
    ... 

을 의미, 당신은 ord() 사용할 수 있습니다

counter += ord(intex) - ord("a") + 1 
+0

나에게이 오류를 준다 TypeError : ord()는 문자를 기대했지만 길이가 0 인 문자열을 찾는다 – Billjk

+0

@SolomonWise : 나는 더 많은 정보를 추가했다. 그 대답은 원래 첫 번째 부분 또는'or'로만 구성되었다. –

+0

감사합니다,하지만 사용자가 b 또는 c 또는 d를 입력하면 어떻게됩니까? – Billjk

4
if intex == 'a' or 'b' or 'c' 

대신해야 intex == 'a' or intex == 'b' ...

더 쉬운 이 작업을 수행하는 방법은 in 연산자를 사용하는 것입니다. 나는 당신이 어딘가에 값을 저장하는 이와 같은 것을 원한다고 가정 할 수 있습니다.

my_list = [] 
if ord(intex) >= ord("a") and ord(intex) <=ord("r"): 
    my_list.append(ord(intex)) 

코드에서 수행해야 할 작업을 지정할 수 있습니까? 오히려 이상하게 보입니다.

+1

이것은 나에게 오류가 발생합니다 ValueError : 밑이 10 인 int()에 대한 리터럴이 잘못되었습니다. 'a' – Billjk

+0

죄송합니다. 너 뭐하려고? 당신의 코드는별로 의미가 없습니다. 왜 그 문구를 카운터에 추가하고있는거야? –

+0

글자를 숫자로 변환 중입니다. – Billjk