为什么在Python中计算textwrap模块时,在输出的末尾得到一个“无”?

2024-04-24 02:55:38 发布

您现在位置: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*

你能帮我调试一下为什么这个“无”或者这个值是如何随着输出而增加的吗


Tags: nameimportinputstringif定义defresult
3条回答

你打印了两次。 在函数中输入一次,然后再次输入函数的返回值。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。默认情况下,它返回None。所以result的值是None。只需去掉result变量和下面的print()即可修复它。或者,更改wrap()以返回结果,而不是打印结果

相关问题 更多 >