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

如何使用python中的return语句返回值?,python,return,Python,Return,我正在写一个返回火车价格的程序。当我运行函数时,没有返回任何内容 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 zon

我正在写一个返回火车价格的程序。当我运行函数时,没有返回任何内容

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()
def运输(区域、车票):
票价=['23','11.5','34.5']
如果区域<2且票证='成人':
往返票价[0]
elif区域<2且票证='child':
往返票价[1]
elif区域>4,票证=‘成人’:
返回-1
def main():
交通(1,'成人')#功能不返回票价Lst=23
main()
函数正在返回值;你只是没有用它做任何事。如果需要,您可以打印它:

def main():
    print transit(1, 'adult')
返回
与在屏幕上打印内容不同;返回值的使用方式如下,例如:

smth = transit(1, 'adult')
您不希望返回的所有内容都自动打印出来


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

fareLst = [23.0, 11.5, 34.5]
另外,请注意,如果调用
transit(5,'child')
,它将不返回任何内容。。。因此,您可能希望在
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
或者,如果要存储变量并在以后打印,请执行以下操作:

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

其他人已经提到,您没有存储返回值,但我还要补充一点,您在末尾没有默认的“基本情况”。在此代码中:

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运输(区域、车票):
票价=['23','11.5','34.5']
如果区域<2且票证='成人':
往返票价[0]
elif区域<2且票证='child':
往返票价[1]
elif区域>4,票证=‘成人’:
返回-1
如果
区域
等于2、3或4怎么办?如果
zone
是4,而
ticket
是child怎么办?所有这些都会一直到最后,函数的默认返回值是
None
。那可能不是你想要的。如果没有,请添加类似于
return 20
或任何合理的默认票价


另外,像上面最后一个例子那样返回sentinel值也不是Pythonic。一种更具python风格的方法是,如果参数不正确,则引发
ValueError
,然后将调用代码包装在
try/except
块中。这就没有了模棱两可的余地,检查返回值是一件令人头疼的事。

不管是谁否决了这个答案——为什么?这里没有任何错误或遗漏。为什么您的
fareLst
值存储为字符串?它们不应该是
浮点数
还是
十进制
?@user3339203:你应该接受其中一个答案(除非没有一个是好的);你问了很多关于SO的问题,但大多数都没有公认的答案。其他人正在花时间帮助你;至少你可以通过表扬他们来表达你的感激之情。作为记录:13分钟前我的回答中确实提到了缺失的违约案例:P