【问题标题】:calculates the product of all elements in a tuple. For example, for (2,3,4) the result would be 2X3X4=24计算元组中所有元素的乘积。例如,对于 (2,3,4),结果将是 2X3X4=24
【发布时间】:2022-10-04 17:35:38
【问题描述】:
numbers = (2,3,4)
def product(n):
    m = 1
    for i in n:
        m *= i
        return print(numbers[0],'x',numbers[1],'x',numbers[2],'=',m)
product(numbers)

这是我为这个问题写的。但我不知道如何使结果完全像“2x3x4=24”。另一个问题是如果我在括号中添加“5”,它只显示“2x3x4=120”,我无法得到“2x3x4x5=120”。谁能帮我修复我的代码???谢谢。

【问题讨论】:

  • 您的 return 语句在循环内,因此该函数在第一次迭代结束时返回。你想回来循环结束。
  • 嗨,0x263A。感谢您分享链接,但这并不能回答我的问题。
  • 你可以使用from functools import reduce 然后print(" X ".join(map(str, a)), " = ", reduce(lambda x1,x2: x1 * x2, a))

标签: python numbers tuples


【解决方案1】:

您的代码有两个主要问题。第一个是您的 return 语句在循环的第一次迭代中执行,但您希望它在整个循环完成后发生。发生这种情况是因为 return 语句左侧有太多空格。第二个是您试图将调用的返回值返回到print。要解决此问题,请使用 return 或更好地返回一个字符串,然后打印:

numbers = (2,3,4)
def product(n):
    m = 1
    for i in n:
        m *= i
    return f"{n[0]}x{n[1]}x{n[2]}={m}"

returned = product(numbers)
print(returned)

cmets 中链接的答案指出有一种更简单的方法可以做到这一点:

from math import prod
returned = prod((2,3,4))
print(returned)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    相关资源
    最近更新 更多