2012-02-20 114 views
0

所以我的代碼:Python的類型錯誤

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) 

順便說一句,所有的字母都定義,我只是不認爲這是neccessary把他們在,(A = 1,B = 2等)但每當我運行的代碼,它給了我錯誤TypeError: unsupported operand type(s) for +=: 'int' and 'str'

我知道這個錯誤意味着,我不能添加一個字母數字,但有沒有辦法做到這一點沒有錯誤?我試過float(),但那給了我另一個錯誤!請幫忙!

+0

'INTEX == 'a' 或 'b' 或「c''你怎麼看這個呢?你能解釋這段代碼嗎?它不像我見過的任何Python。 – 2012-02-20 19:57:17

+0

'計數器+ =輸入「( '輸入文字\ n信')abcdefghijklmnopqr'' – 2012-02-20 20:03:01

+0

什麼是'counter'計數?你將如何使用它? – 2012-02-20 20:04:29

回答

7

or操作不工作,你的思考方式。表達a or b返回a如果它有一個trucy truth value,並b否則。你大概的意思

if intex in "abcdefghijklmnopqr": 
    ... 

以信爲整數轉換,使得a映射到1等,你可以使用ord()

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

給了我這個錯誤類型錯誤:奧德()預期的字符,但長度爲0的字符串中發現 – Billjk 2012-02-20 19:57:02

+0

@SolomonWise:我添加更多的信息 - 答案原本只由第一部分或'或'的。 – 2012-02-20 20:02:44

+0

謝謝,但我做什麼,如果用戶輸入b或c或d ... – Billjk 2012-02-20 20:12:35

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 2012-02-20 20:02:16

+0

對不起,不知道我在想什麼。你想做什麼?你的代碼沒有多大意義。你爲什麼要將字符串添加到計數器? – 2012-02-20 20:03:02

+0

我將字母轉換爲數字 – Billjk 2012-02-20 20:03:43