Python - 在条件语句中使用返回

时间:2017-12-17 09:17:35

标签: python return

我想使用return而不是print语句,但是当我用return返回print语句时,我没有得到任何回复。我知道我错过了一些明显的东西:

def consecCheck(A):
    x = sorted(A)
    for i in enumerate(x):
        if i[1] == x[0]:
            continue
        print x[i[0]], x[i[0]-1]
        p = x[i[0]] - x[i[0]-1]
        print p
        if p > 1:
            print "non-consecutive"
            break
        elif x[i[0]] == len(x):
            print "consecutive"

if __name__ == "__main__":
    consecCheck([1,2,3,5])

-----更新------这是HEATH3N回答后的正确代码:

def consecCheck(A):
    x = sorted(A)
    for i in enumerate(x):
        if i[1] == x[0]:
            continue
        print x[i[0]], x[i[0]-1]
        p = x[i[0]] - x[i[0]-1]
        print p
        if p > 1:
            a = "non-consecutive"
            break
        elif x[i[0]] == len(x):
            a = "consecutive"
    return a

if __name__ == "__main__":
    print consecCheck([4,3,7,1,5])

2 个答案:

答案 0 :(得分:0)

我不认为你理解退货声明的作用:

  

return语句导致执行离开当前子例程,并在调用子例程之后立即恢复到代码中的点,称为返回地址。

您需要在打印语句中包装consecCheck([1,2,3,5])。否则,所有它都会调用函数(不再打印任何东西)并返回到它正在做的事情。

答案 1 :(得分:0)

print获取python对象并将打印的表示输出到控制台/输出窗口

return语句用于函数执行程序调用位置时,如果函数执行到达return语句,则不会执行其他行。阅读详细信息difference between print and return

所以在您的情况下,如果您想在输出控制台中显示结果,您可以按照以下示例执行:

def my_function():
    # your code
    return <calculated-value>
val = my_function()
print(val) # so you can store return value of function in `val` and then print it or you can just directly write print(my_function())

在您的代码中,您打印值并继续执行,在这种情况下,您可以考虑使用@COLDSPEED建议的yield关键字,或者只使用print到除上一个之外的所有语句