为什么在Python中计算textwrap模块时在输出末尾出现“ None”?

问题描述 投票:0回答:3

尽管我正在如下定义我的功能:

import textwrap

def wrap(string, max_width):
    print(textwrap.fill(string, max_width))

if __name__ == '__main__':
    string, max_width = input(), int(input())
    result = wrap(string, max_width)
    print(result)

我收到类似的错误:

*ABCD
EFGH
IJKL
IMNO
QRST
UVWX
YZ
None*

您能帮我调试为什么“无”或此值如何随输出增加。

python string word-wrap
3个回答
1
投票

您正在打印两次。一次进入函数,然后再次返回函数的返回值。 None来自第二张打印。

执行此操作:

import textwrap

def wrap(string, max_width):
    return textwrap.fill(string, max_width) # return , don't print

if __name__ == '__main__':
    string, max_width = input().rstrip(), int(input())
    result = wrap(string, max_width)
    print(result)

0
投票

您忘记重新调整结果:

这应该起作用:

import textwrap

def wrap(string, max_width):
    return(textwrap.fill(string, max_width))

if __name__ == '__main__':
    string, max_width = input(), int(input())
    result = wrap(string, max_width)
    print(result)

0
投票

wrap()没有明确的return。默认情况下,它返回None。因此,result的值为None。只需删除result变量和以下print()即可对其进行修复。或者,更改wrap()以返回结果,而不是打印结果。

© www.soinside.com 2019 - 2024. All rights reserved.