我需要对元组中的两个数字进行乘法运算
我需要写一个程序,输入的数据是一个包含两个元素的元组,比如:
((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 个回答
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这种时候,我们可以去一些技术论坛,比如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
,这通常是用来说明某个问题的具体情况。通过这些代码,我们可以更清楚地看到问题出在哪里,或者如何改进代码。
总之,遇到问题时,不要害怕去问别人,很多人都愿意帮助你。只要保持好奇心,慢慢学习,你一定能掌握编程的技巧。
这是最简单的方法——你可以把列表中的每个 tuple
拆开,然后在一个列表推导式中把它们相乘:
>>> ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98))
>>> [n*m for n, m in start]
[1, 4, 156, 16, 9702]
这可以通过列表推导式来实现,这是最简单的方法:
seq = ((1,1), (2,2), ...)
prod = [a * b for a,b in seq]
你可以倒着理解这个过程,看看它是怎么工作的。这个推导式 "[...]" 会遍历 seq
,把每个元组拆分成两个变量 a
和 b
,然后把它们相乘,最后生成一个新的列表,里面装的是这些乘积。
最简单的方法是:
>>> 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()
的文档