【问题标题】:How to use the result of one formula in another formula?如何在另一个公式中使用一个公式的结果?
【发布时间】:2017-02-22 10:48:09
【问题描述】:

如何将一个函数的结果用于另一个函数。

list = [1, 1, 1, 1]
def margin():
    a = 0
    b = 1.2
    c = 1
    for i in list:
        if i == 1:
            x = a + b - c
            return x    # x = 0.2


def calc():
    for i in list:
        formula = 2 + margin()
        print(formula)

calc()
# 2.2 2.2 2.2 2.2 

我希望程序能够计算:

'''
          2  + 0.2 = 2.2
         2.2 + 0.2 = 2.4
         2.4 + 0.2 = 2.6
         2.6 + 0.2 = 2.8
giving result 2.2 2.4 2.6 2.8
'''

【问题讨论】:

  • "如何在另一个公式中使用一个公式的结果?" ,不是这里的问题。正确完成
  • 顺便说一句,您不应该使用 list 作为变量名,因为这会影响内置的 list 类型。它不会导致此代码出现问题,但可能会导致产生神秘错误消息的错误。
  • 你的margin 函数有点奇怪。目前尚不清楚您为什么要遍历该列表。该函数仅在列表中遇到 1 时返回数值,否则返回 None,如果您尝试在算术表达式中使用 None,您将得到 TypeError

标签: python function math return formula


【解决方案1】:

解决方案

def margin(element, a=0, b=1.2, c=1, default_margin=0):
    if element == 1:
        return a + b - c
    else:
        return default_margin


def calc(elements, start_value=2):
    formula = start_value
    for i in elements:
        formula += margin(i)
        print("{:.1f}".format(formula))


elements = [1, 1, 1, 1]
calc(elements)  # 2.2 2.4 2.6 2.8

编程良好实践

  1. 不要使用内置类型作为变量名 (list)
  2. 使用函数的参数而不是全局变量
  3. 在函数内部使用默认值而不是硬编码数字以获得更通用的方法
  4. 不要创建不必要的变量(xmargin 函数中)
  5. 确保函数始终返回相同类型的变量或至少记录和处理特殊情况
  6. 小心对相同的变量进行两次迭代(在 calcmargin 函数中,您正在迭代列表,因此列表中的第一个元素是唯一被使用的元素)。

【讨论】:

  • 感谢您的拼写错误和打印格式@ChristianKönig
  • 谢谢阿迪罗,我是 python 新手,我会记住你的建议,你能解释一下最后一部分:print("{:.1f}".format(formula)),是可以用我容易理解的更简单的方法打印出来。
  • 那部分实际上是@ChristianKönig 的编辑,但我可以解释一下。 print() 是一个函数,它接受多种类型的变量并将其发送到控制台。我和你一样使用print(formula),但这会打印float"{:.1f}".format(formula)float 转换为str 只打印一个十进制数字,而另一个版本可以打印更多小数,因为float 不是精确的十进制表示,2.2 可以存储为2.199999992.20000001。综上所述,该部分强制打印一个小数。
猜你喜欢
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 2013-10-03
  • 2015-02-06
  • 1970-01-01
  • 2022-11-01
相关资源
最近更新 更多