为什么我在 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 而不是打印结果。
尽管我的函数定义如下:
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 而不是打印结果。