【问题标题】:Python "return" difficultiesPython“回归”困难
【发布时间】:2015-10-15 03:09:02
【问题描述】:

首先,让我说我已经进行了深入的研究以试图理解。但是我不明白其他人给出的解释(提出问题的人都理解)。这是我遇到问题的代码:

def tax(bill):
    """Adds 8% tax to a restaurant bill."""
    bill *= 1.08
    print "With tax: %f" % bill
    return bill

def tip(bill):
    """Adds 15% tip to a restaurant bill."""
    bill *= 1.15
    print "With tip: %f" % bill
    return bill

meal_cost = 100
meal_with_tax = tax(meal_cost)
meal_with_tip = tip(meal_with_tax)

当我删除第一个“退货单”并运行它时,我得到了第一个数字,但在尝试计算第二个数字时出现错误。 def tax(bill) 取 100 输出 108 对吗?那么如果我删除了第一个“退货单”,那么为什么 def tip(bill) 不使用 108 进行计算而不是报错呢?

我在掌握最基本的编程概念方面确实存在问题。我已经学习了 3 个月,这就是我现在的位置。对于我来说,这是一个非常棘手的主题,我非常感谢您的帮助。

【问题讨论】:

  • 删除返回语句时,函数默认返回None。这意味着meal_with_tax 的值是NoneNone *= 1.15 是什么意思?
  • 同样的问题刚刚作为重复问题关闭。 stackoverflow.com/questions/33138918/…
  • 您确实补充说“我在掌握最基本的编程概念方面确实存在问题。我已经紧张学习了 3 个月,这就是我现在的位置。”我建议你找一个新老师。这真的是基本的东西。如果您已经有一位好老师,我建议您放弃,因为您现在应该已经学会了。
  • @digitaLink 见Dunning-Kruger effect

标签: python return


【解决方案1】:

我相信您误解了 returnprint 声明之间的区别。

在您的 tax(bill) 函数中,您将乘以 bill *= 1.08。然后print 的值是billprint 仅将 bill 的值输出到控制台窗口——它不会存储该值或允许它以任何方式被其他函数使用。

您要删除的return 语句将存储在bill 中的值108 返回给调用者。本例中的调用者是meal_with_tax = tax(meal_cost)。这意味着meal_with_tax 的值是tax(bill) 的返回值。当您删除return bill 时,您将返回一个值None,因此meal_with_tax 的值是None。您想要return bill,以便将值108 分配给meal_with_tax

tip(bill) 返回错误的原因是它试图计算None *= 1.15tip(bill)里面的bill的值并不是你想象的108

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    相关资源
    最近更新 更多