Python map() 函数遍历 'None' 元素

Python map() function iterates over 'None' element

我编写了一个简单的 map() 函数,它遍历一个列表并打印列表中尽可能多的“*”。我发现我的代码有一个小问题,我在输出中看到一个额外的 'None'。有人可以帮我调试这个问题吗?

Problem Statement:
-----------------
Define a procedure histogram() that takes a list of integers and prints a
histogram to the screen. For example, histogram([4, 9, 7]) should print the
following:

****
*********
*******

源代码

def print_asterisks(num):
    print ''.join('*' for i in xrange(num))

def histogram(s):
    map(print_asterisks, s)

def main():
    # Test inputs
    print histogram([4,7,5])


if __name__ == "__main__":
    import sys
    sys.exit(main())

输出

****
*******
*****
None

这一行:

print histogram([4,7,5])

您正在打印 histogram 函数的 return 值,即 None。你只需要调用函数:

histogram([4,7,5])

因为函数 histogram 没有返回任何东西。 print histogram([4,7,5]) 打印 None.

def print_asterisks(num):
    print ''.join('*' for i in xrange(num))

def histogram(s):
    map(print_asterisks, s)

def main():
    # Test inputs
    histogram([4,7,5])


if __name__ == "__main__":
    import sys
    sys.exit(main())

输出:

****
*******
*****

替换

def main():
    # Test inputs
    print histogram([4,7,5])

def main():
    # Test inputs
    histogram([4,7,5])

注意:函数 histogram 没有任何 return 语句。

写直方图([4,7,5]) 打印直方图([4,7,5])


def print_asterisks(num):
    print ''.join('*' for i in xrange(num))

def histogram(s):
    map(print_asterisks, s)

def main():
    # Test inputs
    histogram([4,7,5])

if __name__ == "__main__":
    import sys
    sys.exit(main())