为什么我在 Python 中计算 textwrap 模块时在输出末尾得到 "None"?

Why am I getting a "None" at the end of the output while computing textwrap module in Python?

尽管我的函数定义如下:

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*

你能帮我调试一下为什么这个 "None" 或者这个值是如何随着输出增加的。

您正在打印两次。 一旦进入函数,然后再次是函数的 return 值。 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)

您忘记返回结果:

这应该有效:

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)

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