我正在编写一个返回火车价格的程序。当我运行该函数时,没有任何东西返回。
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()
答案 0 :(得分:5)
函数 返回值;你只是没有做任何事情。如果您愿意,可以打印:
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
也可能是一个可行的选择,例如输入完全无效;但话又说回来,在这种情况下,例外会更好。
答案 1 :(得分:2)
如果您只想打印出结果,请执行以下操作:
def main():
print transit(1,'adult')
或者如果您想要存储变量并在以后打印它,请执行以下操作:
def main():
result = transit(1,'adult')
#do something
print result
答案 2 :(得分:0)
其他人已经提到你没有存储返回值,但我还要补充一点,你没有默认&#34;基本情况&#34;在末尾。在这段代码中:
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
是小孩,该怎么办?所有这些都会落到最后,函数的默认返回值是None
。这可能不是你想要的。如果没有,请添加return 20
之类的内容或任何合理的默认机票价格。
另外,像上面的最后一例一样,它不是Pythonic返回的哨兵值。如果参数不好,更Pythonic的方法是引发ValueError
,然后将调用代码包装在try/except
块中。这没有留下任何歧义的余地,检查返回值是一个痛苦的问题。