【发布时间】:2020-03-05 08:54:15
【问题描述】:
我是一名 python 初学者,正在尝试构建一个简单的密码,我在其中迭代一个列表,然后递增 3 以构建一个新列表,但不断收到类型错误。 lower_list = abcd 中的列表.....z
当我执行以下得到一个类型错误:
for i in lower_list:
shift_lower += lower_list[i:i+3]
有人提供有关如何在语法上正确执行此操作的任何提示吗?谢谢。
【问题讨论】:
-
您能否更清楚您想要的结果列表是什么?也许是一个例子?
-
@marv77 你将字符移动 3 位吗?如en.wikipedia.org/wiki/Caesar_cipher
-
i,根据你对lower_list = "abcd...xyz"的定义是字符串,不能用字符串索引lower_list,或者加3。看起来你想要for i in range(len(lower_list)): etc. -
i可能不是 int,即使是 int,您也可能会得到 index out of bounds 异常。试试for i in range(len(lower_list)) -
感谢大家的反馈 - 能够通过@Ch3steR 解决方案实现我想要的大部分功能,但是卡住试图环绕,这样当移位超过“z”时,它会再次返回并从“开始”一种'。在下面尝试: lower_list = [] cipher_lower = [] shift = 4 shift_unicode = 0 for i in lower_list: cipher_lower += [chr(ord(i) + shift)] shift_unicode = ( ord(i) + shift) if shift_unicode > 122: cipher_lower += [chr(ord(i) - 26)] 但没有运气 - list 语句似乎确实有效???任何提示都会很棒。