大佬教程收集整理的这篇文章主要介绍了为什么我在列表理解的 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,请注明来意。