字符串加密算法

2024-10-02 12:30:40 发布

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

我有一个字符串加密算法,它将输入的字符串转换成字符串列表。输出应该是每个列表元素的第一个字母(这里是字符串)。 下面列表1中的示例

输出应该是“tir hsy ia st” 以及 列表2输出应为“tir hsy iat sto”

但对于我所使用的代码,只有当每个列表元素(这里的字符串)包含相同数量的字母时,它才能打印输出,否则(在列表1的情况下)会引发“字符串索引超出范围”

这里的ceil表示每个列表元素中的字母数

如何以所示的方式打印list1的输出? p、 我是python的初学者

list1=['this','isat','ry']

list2=['this','isat','ryto']

我的代码打印输出

for elem in range(ceil):
        for i in range(len(list1)):
            if list1[elem][i]:
                print(list1[i][elem],end='')
        print(end=' ')

Tags: 字符串代码in元素列表for字母this
3条回答

我猜如果i不是list[elem]的成员,你会认为if list[elem][i]是假的,但它不是这样做的。相反,Python尝试检查该值是否真实,当那里根本没有值时,就会进入IndexError

不管怎样,与其三思而后行,不如请求原谅而不是允许:

list1=['this','isat','ry']

for elem in range(len(list1[0])):
        for i in range(len(list1)):
            try:
                print(list1[i][elem],end='')
            except IndexError:
                continue
        print(end=' ')

如果您喜欢“三思而后行”变体,那么检查索引是否存在的正确方法是

            if i in list1[elem]:

我假设列表的第一个元素总是有最大长度,所以我们只是在外循环中循环这个元素

您真正缺少的只是检查元素是否足够长以避免值错误。我还添加了内联代码来生成我假设的ceil

for i in range(max([len(i) for i in list1])):
   for j in list1:
     if i < len(j):
       print(j[i], end='')
   print(end=' ')

您可以改用itertools.zip_longest

from itertools import zip_longest
print(' '.join(map(''.join, zip_longest(*list1, fillvalue=''))))

这将输出:

tir hsy ia st

相关问题 更多 >

    热门问题