Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使这个main()与我的编码器()一起工作?_Python_Function_Encryption - Fatal编程技术网

Python 如何使这个main()与我的编码器()一起工作?

Python 如何使这个main()与我的编码器()一起工作?,python,function,encryption,Python,Function,Encryption,现在它不是在句子中的每个字母上运行函数,然后打印结果 #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() 您需要在列表中收集函数中所有

现在它不是在句子中的每个字母上运行函数,然后打印结果

#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()

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

def encoder(plain):
    result = []  

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

    return result 

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

错误在
encoder

def encoder(plain):

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

您应该意识到,当执行return语句时,
encoder
的执行立即结束。循环体从未执行过两次!因此,如果希望for循环实际遍历所有数字,则需要移动该return语句。在此之后,您可能会遇到另一个问题,因为我每一次都被重写,所以您必须重新思考如何构造您的返回值。

这是因为您在for循环的第一次迭代中返回,您可以考虑<代码>收益率< /代码> < <代码> > <代码>循环的每一个结果。@ JonathonReinhart:是的,在编程之初就教人如何使用生成器可能不是最好的主意?@MartijnPieters True,这就是为什么我没有用它回答问题的原因。可能还需要返回字符串,而不是列表。这就是我们需要知道的
'.join()
方法。@alko:OP问了一系列问题;我们将担心在其他时间将这些值转换回字符串。