如何用python中的return语句返回值?

2024-10-03 23:30:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个程序返回火车的价格。当我运行函数时,什么都没有返回。你知道吗

def transit(zone, ticket):
    fareLst = ['23', '11.5', '34.5']

    if zone < 2 and ticket == 'adult':
        return fareLst[0]

    elif zone < 2 and ticket == 'child':
        return fareLst[1]

    elif zone > 4 and ticket == 'adult':
         return -1


def main():
    transit(1, 'adult')   # the function is not returning the fareLst = 23


main()

Tags: andthe函数程序zonereturnmaindef
3条回答

其他人已经提到您没有存储返回值,但是我还要补充一点,您在最后没有默认的“基本情况”。在本规范中:

def transit(zone, ticket):
    fareLst = ['23', '11.5', '34.5']

    if zone < 2 and ticket == 'adult':
        return fareLst[0]

    elif zone < 2 and ticket == 'child':
        return fareLst[1]

    elif zone > 4 and ticket == 'adult':
         return -1

如果zone等于2、3或4怎么办?如果zone是4,而ticket是child呢?所有这些都会一直到最后,函数的默认返回值是None。那可能不是你想要的。如果不是,添加return 20或任何合理的默认票价。你知道吗

同样,返回前哨值也不是Pythonic,就像上面的最后一个例子。一种更为python的方法是,如果参数不好,则引发ValueError,然后将调用代码包装在try/except块中。这就不留模棱两可的余地,检查返回值是一件麻烦事。你知道吗

函数返回值;只是没有对它做任何操作。如果需要,可以打印:

def main():
    print transit(1, 'adult')

return与在屏幕上打印不同;返回值的用法如下,例如:

smth = transit(1, 'adult')

你不希望所有你曾经返回的东西都被自动打印出来。你知道吗


另外,还应使用适当的浮点值来存储浮点数据,而不是字符串:

fareLst = [23.0, 11.5, 34.5]

另外,请注意,如果调用transit(5, 'child'),它将不返回任何内容/None。。。因此,您可能需要在if-elif块的末尾添加以下内容:

else:
    return -1

而不是:

elif zone > 4 and ticket == 'adult':
     return -1

…尽管None对于完全无效的输入也可能是一个可行的选择;但是,在这种情况下,例外情况会更好。你知道吗

如果只想打印结果,请执行以下操作:

def main():
    print transit(1,'adult')

或者,如果要存储变量并稍后打印,请执行以下操作:

def main():
    result = transit(1,'adult')
    #do something
    print result

相关问题 更多 >