0

现在它没有在句子中的每个字母上运行该函数,然后打印出结果。

#secret code encryptor 

def encoder(plain):

    for i in plain:
        i=ord(i)*77+4
        return i 

def main():

    plain=input('Enter a sentence: ')
    final=encoder(plain)
    print(final)

main()
4

2 回答 2

1

您需要在列表中收集函数中所有转换后的字符,然后返回:

def encoder(plain):
    result = []  

    for i in plain:
        i=ord(i)*77+4
        result.append(i)

    return result 

return立即退出函数,因此您的版本仅返回第一个编码值。

于 2013-11-02T19:32:38.500 回答
0

错误在encoder

def encoder(plain):

for i in plain:
    i=ord(i)*77+4
    return i

您应该意识到,当执行 return 语句时,执行encoder立即结束。循环体甚至不会执行两次!因此,如果您希望 for 循环实际遍历所有数字,您将需要移动该 return 语句。在那之后,您可能会遇到另一个问题,因为 i 每一轮都被覆盖,因此您将不得不重新考虑如何完全构建您的返回值。

于 2013-11-02T19:32:46.407 回答