如何使用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