首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python TypeError

Python TypeError
EN

Stack Overflow用户
提问于 2012-02-21 03:51:49
回答 2查看 1.9K关注 0票数 0

所以我有代码:

代码语言:javascript
复制
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(),但这给了我另一个错误!请帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-21 03:53:45

or运算符的工作方式与您想象的不同。如果表达式a or b具有trucy truth value,则返回a,否则返回b。你的意思可能是

代码语言:javascript
复制
if intex in "abcdefghijklmnopqr":
    ...

要将字母转换为整数,以便a映射到1等,可以使用ord()

代码语言:javascript
复制
counter += ord(intex) - ord("a") + 1
票数 7
EN

Stack Overflow用户

发布于 2012-02-21 03:54:54

代码语言:javascript
复制
if intex == 'a' or 'b' or 'c' 

应该改为intex == 'a' or intex == 'b' ...

一种更简单的方法是使用in操作符。我只能假设您希望类似这样的东西将值存储在某个地方。

代码语言:javascript
复制
my_list = []
if ord(intex) >= ord("a") and ord(intex) <=ord("r"):
     my_list.append(ord(intex))

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9367513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档