为什么我需要返回才能使用此功能?

时间:2016-02-07 04:14:00

标签: python

; http://php.net/smtp
SMTP = tls://smtp.gmail.com
; http://php.net/smtp-port
smtp_port = 587

4 个答案:

答案 0 :(得分:1)

因为如果int没有返回值,那么在rental_car_cost中,正好在这一行:

trip_cost

您正尝试将return rental_car_cost(days) + hotel_cost(days) + plane_ride_cost(city) +\ spending_money NoneType

相加

答案 1 :(得分:0)

事实上,您不必从该行返回...此外,从每个if / elif分支返回是不好的做法,更好的方法是:

def rental_car_cost(days):
    cost_times_day = days * 40
    if days >= 7:
        cost_times_day -= 50
        print cost_times_day
    elif days >= 3 and days <7:
        cost_times_day -= 20    
    return cost_times_day  # <-- a single point of return

如果你有一个没有返回值的分支,Python默认会返回None,这会在调用者函数尝试将int添加到{{1}时失败因此错误:

  

TypeError:+不支持的操作数类型:'NoneType'和#'int'

答案 2 :(得分:0)

你的错误确实在这里:

return rental_car_cost(days) + hotel_cost(days) + plane_ride_cost(city)

您正在尝试将rental_car_cost(days)的结果添加到其他费用中,当您注释掉您提到的行时,有一种情况rental_car_cost不会返回任何内容(即返回{ {1}})。当您尝试将None添加到None时,它就会爆炸。

要解决此问题,请确保每个代码路径(特别是int语句中的每条可能路径)都返回有效的if

答案 3 :(得分:0)

puts chars.each_char.with_object(fruits.dup){|e, a| a.select!{|s| s.include?(e)}} 并删除已突出显示的return语句,if days >= 3 and days < 7函数将返回rental_car_cost()。当None函数尝试连接trip_cost()和两个数字时,它将失败,因为它不可能。