Python 3定义了一个打印一系列浮点数的函数

时间:2015-02-22 04:07:15

标签: python function range python-3.4

我试图定义一个简单的函数来找到两个浮点数之间的范围,这就是我得到的:

def item(number, terminator, step):
    while number < terminator:
        return (number)
        number += step

item(1.00, 1.12, 0.01)

控制台不会打印任何错误,它不会打印None,它只是不做任何事情。它运行程序,什么都不做。我很迷茫。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

有两件事是错的:

  1. 您没有打印任何东西。 item()函数返回,您忽略了返回值。 Python交互式解释器几乎回应了您所做的一切,但是常规脚本要求您明确打印。

  2. 您将返回范围的第一个值。 return 结束一个功能。

  3. 您可以先构建一个值列表,然后返回该值,然后打印结果:

    def item(number, terminator, step):
        items = []
        while number < terminator:
            items.append(number)
            number += step
        return items
    
    print(item(1.00, 1.12, 0.01))
    

    演示:

    >>> def item(number, terminator, step):
    ...     items = []
    ...     while number < terminator:
    ...         items.append(number)
    ...         number += step
    ...     return items
    ... 
    >>> print(item(1.00, 1.12, 0.01))
    [1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11]
    

    或者,使用yield代替return将您的功能转换为generator,并循环显示结果:

    def item(number, terminator, step):
        while number < terminator:
            yield number
            number += step
    
    for value in item(1.00, 1.12, 0.01):
        print(value)
    

    产生:

    >>> def item(number, terminator, step):
    ...     while number < terminator:
    ...         yield number
    ...         number += step
    ... 
    >>> for value in item(1.00, 1.12, 0.01):
    ...     print(value)
    ... 
    1.0
    1.01
    1.02
    1.03
    1.04
    1.05
    1.06
    1.07
    1.08
    1.09
    1.1
    1.11