在循环中使用条件

时间:2018-03-16 01:56:26

标签: python

可以通过将字母表移动或旋转一定数量的位置来创建简单的替换密码。使用旋转系数为5的系统可以得到以下字母:

明文字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文字母:FGHIJKLMNOPQRSTUVWXYZABCDE

通过将纯文本字母表中的每个字母替换为等效位置的密文字母表中的字母,可以将任何纯文本消息转换为密文。空格保持不变。例如,使用上面的密码,单词DOG被加密为OBK。 给定String和旋转值,使用上述简单替换方法返回转换为密文的String。您可以假设文本仅包含空格或大写字母,并且旋转值始终为非负值

函数名称:rotate_text

参数:     text - 输入要编码的文本     n - 一个整数值,指定通过

旋转文本的字符数

返回:包含如上所述旋转的文本的字符串

Testing

我能够通过考试,但结果说我不能通过隐藏或更多考试,有人可以帮助我吗?

def rotate_text(string1, int1):
    loL = ['A','B','C','D','E','F','G','H','I','J','K',
           'L','M','N','O','P','Q','R','S','T','U','V',
           'W','X','Y','Z']

    strtoList = list(string1)
    list1 = []
    newStr = ""
    if int1 == len(loL):
        int1 = int1 % 26
    for i in range(len(strtoList)):
        if strtoList[i] in loL:
            loLindex = loL.index(strtoList[i]) 
            list1 += [loL[loLindex + int1]]
        elif strtoList[i] == " ":
            list1 += [" "]
    for i in range(len(list1)):
        newStr += list1[i]

    return newStr

1 个答案:

答案 0 :(得分:1)

你需要:

list1 += [loL[(loLindex + int1) % len(loL)]]

只要密码"循环回到第一个字母"。

然后

if int1 == len(loL):
    int1 = int1 % 26

也变得无关紧要。

顺便说一下,你不需要建立一个列表然后把它变成一个字符串。你也可以直接增长你的字符串......