我需要对元组中的两个数字进行乘法运算

0 投票
4 回答
8279 浏览
提问于 2025-04-18 02:23

我需要写一个程序,输入的数据是一个包含两个元素的元组,比如:

((1, 1), (2, 2), (12, 13), (4, 4), (99, 98))

这些数据应该是直接写在代码里的,不需要用户输入。然后,程序要循环遍历这个元组,计算每对数字的乘积,并且用格式化的方式把结果显示得好看一些。

如果能详细解释一下我该怎么做,那就太好了。

更新:

我做了

multuple = ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98))

for a, b in multuple:
    print("{} = {} x {}".format(a*b,a,b)

谢谢大家的帮助。

4 个回答

0

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这种时候,我们可以去一些技术论坛,比如StackOverflow,寻求帮助。在这些论坛上,很多人会分享他们的经验和解决方案。

有些问题可能看起来很复杂,但其实只要理解了基本的概念,就能找到解决办法。比如,了解变量、循环和条件判断这些基础知识,就能帮助我们更好地理解代码是如何工作的。

如果你在论坛上看到一些代码示例,比如

>>> data = ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98))
>>> for x, y in data:
>>>    print("{} * {} = {}".format(x, y, x*y))

1 * 1 = 1
2 * 2 = 4
12 * 13 = 156
4 * 4 = 16
99 * 98 = 9702
,这通常是用来说明某个问题的具体情况。通过这些代码,我们可以更清楚地看到问题出在哪里,或者如何改进代码。

总之,遇到问题时,不要害怕去问别人,很多人都愿意帮助你。只要保持好奇心,慢慢学习,你一定能掌握编程的技巧。

0

这是最简单的方法——你可以把列表中的每个 tuple 拆开,然后在一个列表推导式中把它们相乘:

>>> ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98))
>>> [n*m for n, m in start]
[1, 4, 156, 16, 9702]
1

这可以通过列表推导式来实现,这是最简单的方法:

seq = ((1,1), (2,2), ...)
prod = [a * b for a,b in seq]

你可以倒着理解这个过程,看看它是怎么工作的。这个推导式 "[...]" 会遍历 seq,把每个元组拆分成两个变量 ab,然后把它们相乘,最后生成一个新的列表,里面装的是这些乘积。

3

最简单的方法是:

>>> data = ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98))
>>> result = (a[0] * a[1] for a in data)
>>> list(result)
[1, 4, 156, 16, 9702]
>>>

像上面那样计算 result,其实和下面这个做法是一样的:

result = []
for item in data:
    result.append(item[0] * item[1])

上面提到的那种一行代码的计算方式叫做列表推导式。因为我把 a[0] * a[1] for a in data 用圆括号包起来,而不是方括号,这样就告诉解释器要返回一个生成器,而不是一个列表。所以我需要用 list(result) 来把它打印成一个列表。对于像上面那样的小数组,这样做可能有点多余,但在处理较大的列表时,返回生成器是个好习惯。

我不太确定你说的用字符串格式化来好看地打印结果是什么意思,但这是一种方法:

>>> data = ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98))
>>> result = (a[0] * a[1] for a in data)
>>> for item in zip(data, list(result)):
        print 'Product of {} and {} is {}'.format(item[0][0], item[0][3], item[1])


Product of 1 and 1 is 1
Product of 2 and 2 is 4
Product of 12 and 13 is 156
Product of 4 and 4 is 16
Product of 99 and 98 is 9702
>>> 

关于 format() 的文档

撰写回答