Python 函数仅在打印时按我所需的方式工作,不返回

Python 函数仅在打印时按我所需的方式工作,不返回,python,string,function,printing,return,Python,String,Function,Printing,Return,此函数接受一个字符串和一个整数“n”,并将字符串分解为“n”行 它与“打印”一起工作,但最终输出“无” import textwrap def wrap(string, max_width): for i in range(0, len(string), max_width): print(string[i:i+max_width]) 我理解这是因为没有“返回”,但如果我用“返回”替换它,则输出是错误的。我试过修改代码,但没用 import textwrap def

此函数接受一个字符串和一个整数“n”,并将字符串分解为“n”行
它与“打印”一起工作,但最终输出“无”

import textwrap

def wrap(string, max_width):
    for i in range(0, len(string), max_width):
        print(string[i:i+max_width])
我理解这是因为没有“返回”,但如果我用“返回”替换它,则输出是错误的。我试过修改代码,但没用

import textwrap

def wrap(string, max_width):
    for i in range(0, len(string), max_width):
        return string[i:i+max_width]
有人能解释一下如何修复它,特别是为什么会发生


谢谢大家!

如果像下面这样编写,则函数在i=0后不会停止,而是会一直持续到结束。请注意,该函数现在返回字符串列表。你需要一些东西来保持所有的输出。列表是最简单的“容器”

原始函数只返回第一个字符串。
返回将中断for循环

def wrap(字符串,最大宽度):
返回[string[i:i+max_width],用于范围内的i(0,len(string),max_width)]
要查看发生了什么,我们可以运行以下代码:

wrapped_string=wrapp(“aabbcc”,2)
打印(包装字符串)
对于包装字符串中的s:
印刷品
哪张照片

['aa', 'bb', 'cc']
aa
bb
cc
这是一个带有生成器的版本(使用
yield
):

def生成包裹(字符串,最大宽度):
对于范围内的i(0,长度(字符串),最大宽度):
屈服字符串[i:i+最大宽度]
包装的字符串=生成包装(“aabbcc”,2)
打印(包装字符串)
对于包装字符串中的s:
印刷品
这张照片是:

<generator object generate_wrap at 0x039B8230>
aa
bb
cc

aa
bb
复写的副本

生成器是一个特殊的函数,它创建类似于列表的内容,但它一次生成一个值。此外,如果要再次使用生成器,则必须再次创建它。生成器对于非常长的列表非常重要,包括永无止境的列表(例如生成素数)。

当你说“错”时,你的意思是什么?你能写一个例子吗?如果你回来,它会打破循环。。。你想退货什么?列表?例如,如果您输入wrap(aabb,2),它应该输出:(第1行)aa(第2行)bb,但它只输出“aa”,尝试使用
yield
而不是return,看看这是否给出了您想要的结果。
yield
outputs
末尾的“None”是什么意思?如果您想使用输出,你必须把它放在某种“容器”里。你以后还能怎么看呢?