“str”对象不适用

2024-10-03 00:16:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python编写了以下小函数:

def encode(str):
    out = ""
    for i in str:
        ret += str(ord(i.upper()) - 64)
    return ret

基本上,我想做的是得到alphabat中字母的编号,并将其连接到“out”字符串。有了这段代码,我在第4行得到了回溯:“str”对象不适用。你知道吗

有人能解释一下它为什么会抛出这个错误,以及我如何修复这个错误吗?(很抱歉,如果已经问过一次这个问题,我找不到它,可能也是因为我对Python和编程非常陌生)


Tags: 函数inforreturndef错误字母out
3条回答

正如其他人所说,不要使用str作为变量。你知道吗

我怀疑这就是你想要的:

def encode(s):
    return "".join(chr(ord(c.upper()) - 64) for c in s)

这相当于:

def encode(s):
    out = ""
    for c in s:
        ret += chr(ord(c.upper()) - 64)
    return ret

您正在寻找chr()函数,该函数将数字ASCII/Unicode值转换为1个字符的字符串。运行str()会将5转换为"5"。你知道吗

同样在风格上,当迭代一个字符串时,for c in s和当迭代一个整数序列时,for i in x是惯例。你知道吗

不要使用预定义的内置名称命名变量。你知道吗

在代码中,str不是内置函数。它是您在函数中用作参数的变量。你知道吗

另一个问题是,您已经声明了out变量,并且使用了ret,这将给您带来错误。将out = ""更改为ret = ""。你知道吗

不要调用你的变量str,你在跟踪built-in function。你知道吗

此外,还需要修复out/ret的命名。你知道吗

我个人会将此函数编写如下:

def encode(s):
   return ''.join(str(ord(c.upper()) - 64) for c in s)

(我没有真正理解str(ord(...))的意图,所以我只是从您的代码中复制了它。)

相关问题 更多 >