在字符串上迭代时,python在末尾返回None 让我们考虑一个字符串: s = 'abcdefghijl'
以及一个函数,该函数将字符串按一定宽度进行切片:在字符串上迭代时,python在末尾返回None 让我们考虑一个字符串: s = 'abcdefghijl',python,Python,以及一个函数,该函数将字符串按一定宽度进行切片: def wrap(string,max_width): for i in range(0,len(string),max_width): print(string[i:i+max_width]) wrap(s,3) 将在上一次迭代中打印None,因为切片字符串时我将超出范围。有没有一种方法可以解决这个问题,而不必创建如下列表: def wrap(string, max_width): return "\n".j
def wrap(string,max_width):
for i in range(0,len(string),max_width):
print(string[i:i+max_width])
wrap(s,3)
将在上一次迭代中打印None
,因为切片字符串时我将超出范围。有没有一种方法可以解决这个问题,而不必创建如下列表:
def wrap(string, max_width):
return "\n".join([string[i:i+max_width] for i in range(0, len(string), max_width)])
我在Python 3.6中测试了您的函数:
def wrap(string, max_width):
return "\n".join([string[i:i+max_width] for i in range(0, len(string), max_width)])
而且效果很好。现在,要获得所需的打印版本,必须按如下方式调用函数:
print(wrap(s,3))
这将获得您链接的网站中列出的预期结果。我用Python 3.6测试了您的功能:
def wrap(string, max_width):
return "\n".join([string[i:i+max_width] for i in range(0, len(string), max_width)])
而且效果很好。现在,要获得所需的打印版本,必须按如下方式调用函数:
print(wrap(s,3))
这将得到您链接的网站中列出的预期结果。不会返回任何结果,因为您没有返回任何内容…@Joannaraganau yap,哈哈哈:)我是说打印。在我的实验中,最后一行将打印none,它只是工作正常(打印'jl')。试试s[9:13],它仍然是“jl”,您如何运行您看到的
None
打印的代码?如果您的代码是脚本,它将不会打印None
,因为表达式语句在脚本运行时不会打印出来(或者print
也会打印None
,因为它也会返回None
)。如果在交互式解释器中运行代码,也不应该看到None
,因为REPL通常会抑制返回值。我只希望你看到None
打印出来,如果你打印了print(wrap(s,3))
(第一个版本的代码)。它不会返回任何内容,因为你没有返回任何内容…@Joannaraganau yap,哈哈哈:)我是说打印。在我的实验中,最后一行将打印none,它只是工作正常(打印'jl')。试试s[9:13],它仍然是“jl”,您如何运行您看到的None
打印的代码?如果您的代码是脚本,它将不会打印None
,因为表达式语句在脚本运行时不会打印出来(或者print
也会打印None
,因为它也会返回None
)。如果在交互式解释器中运行代码,也不应该看到None
,因为REPL通常会抑制返回值。我只希望你看到None
打印出来,如果你打印了print(wrap(s,3))
(使用代码的第一个版本)。