Python 函数仅在打印时按我所需的方式工作,不返回
此函数接受一个字符串和一个整数“n”,并将字符串分解为“n”行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
它与“打印”一起工作,但最终输出“无”
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”是什么意思?如果您想使用输出,你必须把它放在某种“容器”里。你以后还能怎么看呢?