Python 如何在另一个公式中使用一个公式的结果?

Python 如何在另一个公式中使用一个公式的结果?,python,function,math,return,formula,Python,Function,Math,Return,Formula,如何将一个函数的结果转换为另一个函数 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()

如何将一个函数的结果转换为另一个函数

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
  • 使用函数的参数,而不是全局变量
  • 对于更通用的方法,在函数中使用默认值而不是硬编码数字
  • 不要创建不必要的变量(
    x
    内部
    margin
    函数)
  • 确保函数始终返回相同类型的变量,或者至少返回文档并处理特殊情况
  • 在相同的变量上迭代两次要小心(在迭代列表的
    calc
    margin
    函数中,列表中的第一个元素是唯一使用的元素)
  • 解决方案 规划良好做法
  • 不要将内置类型用作变量名(
    list
  • 使用函数的参数,而不是全局变量
  • 对于更通用的方法,在函数中使用默认值而不是硬编码数字
  • 不要创建不必要的变量(
    x
    内部
    margin
    函数)
  • 确保函数始终返回相同类型的变量,或者至少返回文档并处理特殊情况
  • 在相同的变量上迭代两次要小心(在迭代列表的
    calc
    margin
    函数中,列表中的第一个元素是唯一使用的元素)

  • “如何在另一个公式中使用一个公式的结果?”,不是这里的问题。这样做是正确的,顺便说一句,您不应该使用
    list
    作为变量名,因为这会隐藏内置的
    list
    类型。这不会导致此代码出现问题,但可能会导致产生神秘错误消息的错误。您的
    margin
    函数有点奇怪。现在还不清楚你为什么要重复这个列表。函数仅在列表中遇到1时返回数值,否则返回
    None
    ,如果尝试在算术表达式中使用
    None
    ,您将得到
    TypeError
    “如何在另一个公式中使用一个公式的结果?”,这不是这里的问题。这样做是正确的,顺便说一句,您不应该使用
    list
    作为变量名,因为这会隐藏内置的
    list
    类型。这不会导致此代码出现问题,但可能会导致产生神秘错误消息的错误。您的
    margin
    函数有点奇怪。现在还不清楚你为什么要重复这个列表。函数仅在列表中遇到1时返回数值,否则返回
    None
    ,如果您尝试在算术表达式中使用
    None
    ,您将得到
    TypeError
    。感谢您的打字和打印格式@ChristianKönig谢谢您,我是python新手,我会记住您的建议,你能解释一下最后一部分是:print({.1f}).format(format(formula)),能不能用一种我能很容易理解的更简单的方法来打印它。那部分实际上是@ChristianKönig的编辑,但我可以解释
    print()
    是一个接受多种类型变量并将其发送到控制台的函数。我和你一样使用
    print(formula)
    ,但这会打印一个
    float
    “{.1f}”。格式(公式)
    浮点
    转换为只打印一个十进制数字的
    str
    ,而另一个版本可以打印更多的十进制数字,因为
    浮点
    不是精确的十进制表示形式,
    2.2
    可以存储为
    2.19999999
    2.2000001
    。总而言之,这一部分强制打印一个小数点。谢谢你的打字错误和打印格式@ChristianKönignog谢谢你,Adiro,我是python新手,我会记住你的建议,你能解释一下最后一部分吗:打印(“{.1f}”。格式(公式)),有没有可能用一种我能理解的更简单的方法来打印这篇文章。这部分实际上是@ChristianKönig的编辑,但我可以解释
    print()
    是一个接受多种类型变量并将其发送到控制台的函数。我和你一样使用
    print(formula)
    ,但这会打印一个
    float
    “{.1f}”。格式(公式)
    浮点
    转换为只打印一个十进制数字的
    str
    ,而另一个版本可以打印更多的十进制数字,因为
    浮点
    不是精确的十进制表示形式,
    2.2
    可以存储为
    2.19999999
    2.2000001
    。总之,这一部分强制打印一个小数。
    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