程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么我在列表理解的 if 语句中收到“TypeError”?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么我在列表理解的 if 语句中收到“TypeError”??

开发过程中遇到为什么我在列表理解的 if 语句中收到“TypeError”?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么我在列表理解的 if 语句中收到“TypeError”?的解决方法建议,希望对你解决为什么我在列表理解的 if 语句中收到“TypeError”?有所启发或帮助;

我正在做一个小的密码项目,作为学习列表理解的一种方式。我已经写了一个 for 循环来做我想做的事情(注释掉的部分),我已经开始写一个列表推导式 encmessage = [alph[alph.index(i) + keyShift] for i in List(messagE)],我也注释掉了。

然而,带有附加 if 语句的列表解析会导致:TypeError: cAnnot concatenate 'str' and 'int' objects

为什么“if”部分有类型错误而不是表达式?

import String
alph = String.ascii_lowercase


def encM (message,keyShift):

    # for i in List(messagE):
    #     tempNum = alph.index(i) + keyShift
    #     if tempNum > 26:
    #         tempNum = tempNum - 26
    #     tempNum = alph[alph.index(i)]
    #     print(tempNum)

    # encmessage = [alph[alph.index(i) + keyShift] for i in List(messagE)]
    encmessage = [alph[alph.index(i) + keyShift] for i in List(messagE) if (alph[alph.index(i)] + keyShift > 26)]
    #String1 = ''.join([str(item) for item in encmessage])

print(encmessagE)

encM("test",3)

解决方法

问题是 alph[alph.index(i)] + keyShift 如果您将其更改为 alph.index(i)] + keyShift 它将起作用,因为后者获取索引值而不是索引处的 str 值。

以下解决异常:

encmessage = [alph[alph.index(i) + keyShift] for i in list(messagE) if (alph.index(i) + keyShift > 26)]

但是 encmessage 是空的,然后我将上面的代码更改如下,这似乎提供了正确的转换:

encmessage = [alph[alph.index(i) + keyShift] for i in list(messagE) if (alph.index(i) + keyShift < 26)]

如果有帮助,请告诉我。

大佬总结

以上是大佬教程为你收集整理的为什么我在列表理解的 if 语句中收到“TypeError”?全部内容,希望文章能够帮你解决为什么我在列表理解的 if 语句中收到“TypeError”?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。