python 无for循环中的输出

wmtdaxz3  于 2023-05-27  发布在  Python
关注(0)|答案(3)|浏览(197)

我试图使用for循环来循环一个字符串,但结果却是“None”输出弹出。
如何摆脱“none”输出?谢谢你

def name(a):
    for b in a:
        print (b)

print (name("hello123"))

输出:

h
e
l
l
o
1
2
3
None
q8l4jmvw

q8l4jmvw1#

您的name函数没有显式返回任何内容,因此它的返回值是None,然后打印该值。
在这种情况下,打印name的返回值根本没有意义。

def name(a):
    for b in a:
        print(b)

name("hello123")

作为补充说明,这根本不需要循环。
相反,我们可以将a扩展为print,并提供换行符作为分隔符。

>>> def name(a):
...     print(*a, sep='\n')
... 
>>> name("hello123")
h
e
l
l
o
1
2
3
>>>

这相当于写:

print('h', 'e', 'l', 'l', '0', '1', '2', '3', sep='\n')
ecr0jaav

ecr0jaav2#

由于print命令用于 name() 函数中的每个字符,因此不需要在最后的 print(name()) 调用中再次调用它。
在您的代码中,name() 函数打印每个字母,然后最后的 print(name()) 函数也尝试打印某些内容。但是由于name()不返回任何值,所以它打印“None”
修改后的代码应该可以完美地工作:

def name(a):
    for b in a:
        print (b)

name("hello123")

顺便说一句,在这个替代版本中:

def name(a):
    for b in a:
        print (b)
    return "Done"

print(name("hello123"))

它将**打印另一行“Done”,因为 name() 函数在完成时返回一个值,该值被传递给最终的 print() 函数。

uyhoqukh

uyhoqukh3#

答案很简单:

def name(a):
    for b in a:
        return(b)
print(name("hello123"))

返回函数在迭代之后不会生成任何“None”。

相关问题