【问题标题】:Using for-loop writing a function with inputing a list使用for循环编写一个输入列表的函数
【发布时间】:2021-09-23 15:28:39
【问题描述】:

问题:

“编写一个程序,以汽车的英里/加仑和汽油美元/加仑(均为浮点数)作为输入,并输出 10 英里、50 英里和 400 英里的汽油成本。”

我知道有一种方法可以单独打印出来,但我相信应该有一个 for 循环来执行此操作,所以即使你输入更多的driven_miles,它也会从 for 循环中迭代,

谁能帮帮我?谢谢!

以下是我遇到问题的代码:

def driving_cost(a, miles_per_gallon, dollars_per_gallon):
    cost = a / miles_per_gallon * dollars_per_gallon
    return cost
    
if __name__ == '__main__':
    driven_miles = [10, 50, 400]
    miles_per_gallon = input()
    dollars_per_gallon = input()
    for i in range(len(driven_miles)):
        a = driven_miles[i]
        print(driving_cost(a, miles_per_gallon, dollars_per_gallon))

【问题讨论】:

  • 请更清楚问题是什么。另外,当我运行代码时,我得到一个错误:TypeError: unsupported operand type(s) for /: 'list' and 'float'。问题代码应该没有与问题无关的错误。
  • 好的,谢谢你的建议,我已经澄清了我的提示

标签: python function for-loop


【解决方案1】:

就目前而言,成本是一个单一的价值。您可以将成本初始化为一个空列表,并将每个单独的成本附加到它,最后返回它

def driving_cost(driven_miles, miles_per_gallon, dollars_per_gallon):
    cost = []
    for miles in driven_miles:
        cost.append((miles / miles_per_gallon) * dollars_per_gallon)

    return cost

【讨论】:

    【解决方案2】:

    你有一个很好的帮手。 它的签名是

    def driving_cost(miles_per_gallon, dollars_per_gallon):
    

    你想修饰它的签名,所以添加第三个参数:

    def driving_cost(miles_per_gallon, dollars_per_gallon, driven_miles):
    

    那个,或者在帮助器中定义列表。


    迭代索引当然是可能的, 正如您的 for i in range(len(driven_miles)): 循环当前所做的那样。 它需要取消引用,例如driven_miles[i]

    但更自然的做法是忽略索引而只遍历元素:

    for dm in driven_miles:
    

    目前您循环三个值来计算三个成本, 并且您每次覆盖 cost。 所以第三个成本值最终被返回。

    考虑在该循环中将print 向下移动。 或者重构代码,让助手返回一个单一的成本 并且循环/打印职责在 main 函数中。

    【讨论】:

      【解决方案3】:
      def driving_cost(a, miles_per_gallon, dollars_per_gallon):
          cost = (a / miles_per_gallon) * dollars_per_gallon
          return cost
          
      if __name__ == '__main__':
          driven_miles = [10, 50, 400]
          miles_per_gallon = float(input())
          dollars_per_gallon = float(input())
          for i in range(len(driven_miles)):
              cost = driving_cost(driven_miles[i], miles_per_gallon, dollars_per_gallon)
              print('{:.2f}'.format(cost))
      

      我一直致力于解决方案。 第一次我通过使用 3 个参数计算成本来设置函数 第二,我在结果中进行了 for 循环,其长度为driven_miles,因此它将逐一迭代,然后打印出答案。 感谢您的帮助

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多