Python TypeError

时间:2012-02-20 19:51:49

标签: python types

所以我有代码:

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(),但这给了我另一个错误!请帮忙!

2 个答案:

答案 0 :(得分:7)

or运算符无法按您的想法运行。表达式a or b如果有truth value则返回a,否则返回b。你可能意味着

if intex in "abcdefghijklmnopqr":
    ...

要将字母翻译成整数,a映射到1等,您可以使用ord()

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

答案 1 :(得分: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))

您能指定代码应该做什么吗?看起来很奇怪。