2012-02-20 2 views
0

Так у меня есть код:Python TypeError

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) 

Кстати, все буквы будут определены, я просто не думаю, что это было положить необходимые их, (а = 1, Ь = 2 и т. д.), но всякий раз, когда я запускаю код, он дает мне ошибку TypeError: unsupported operand type(s) for +=: 'int' and 'str'

Я знаю, что означает эта ошибка, что я не могу добавить письмо к номеру, но есть ли способ сделать это без ошибки? Я попытался float(), но это дало мне еще одну ошибку! пожалуйста помоги!

+0

'intex == 'a' или 'b' или 'c'' Как вы думаете, что это делает? Вы можете объяснить этот фрагмент кода? Это не похоже на любой Python, который я когда-либо видел. –

+0

'counter + = input ('Введите текст письма \ n') в 'abcdefghijklmnopqr'' –

+0

Что такое' счетчик' счет? Как вы его используете? –

ответ

7

Оператор or не работает так, как вы думаете. Выражение a or b возвращает a, если оно имеет правду truth value, а также b. Вы, наверное, имели в виду

if intex in "abcdefghijklmnopqr": 
    ... 

Чтобы перевести письмо в целое число такое, что a карты для 1 и т.д., вы можете использовать ord():

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

дает мне эту ошибку TypeError: ord() ожидается символ, но строка длины 0 найдена – Billjk

+0

@SolomonWise: я добавил дополнительную информацию - ответ первоначально состоял только из первой части или 'или'. –

+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: недействительный литерал для int() с базой 10: 'a' – Billjk

+0

извините, не знаю, о чем я думал. Что ты пытаешься сделать? ваш код не имеет большого смысла. почему вы добавляете строку в счетчик? –

+0

Я конвертирую буквы в номера – Billjk