【问题标题】:All pairs (as tuples) of integers adding to a given integer N [closed]添加到给定整数 N 的所有整数对(作为元组)[关闭]
【发布时间】:2022-12-12 10:46:25
【问题描述】:

我想将所有总和等于 N 的整数对存储为元组。 到目前为止,这是我的代码:

m = []
l = []
degree = 9
for i in range(0, degree):
    m += [degree - i];
    l += [i]
    pairs = (m[i]),(l[i])    
pairs

此代码仅返回最后一对:

(1, 8)

我想要的是这样的:

(9, 0),(8, 1),(7, 2),(6, 3),(5, 4),(4, 5),(3, 6),(2, 7),(1, 8)

你能帮我找出并修复我的代码中的错误吗?

【问题讨论】:

  • 您的最后一条语句 pairs 仅返回最新的对的值。取而代之的是,您可以执行 print([(m1,l1) for m1,l1 in zip(m,l)])
  • 每次迭代都在重写 pairs。你需要初始化它循环,以及append
  • 此处显示的代码毫无意义,并且存在多个问题。如果您想修复代码,那么这里没有合适的问题;我们需要关于你有问题已经确定- 我们不做辅导。如果您只是询问如何获得结果,最好不要显示这样的代码 - 但问题仍然太宽泛:解决问题涉及遵循多个逻辑步骤。
  • @KarlKnechtel:请允许我不同意;这段代码虽然不是最优的,但几乎可以完成预期的工作;主要的(我们只说)问题是最后的陈述,它没有产生预期的结果。
  • 哦,我现在明白了方法。那很……奇怪,但它本来可以工作的,是的。在那种情况下,这个问题肯定仍然是重复的;这里的基本技术由例如涵盖。 How can I use return to get back multiple values from a loop? Can I put them in a list?。这段代码不在一个函数中,所以设置有点不同,但概念问题和解决方案是一样的。

标签: python


【解决方案1】:

您可以通过定义一对新的 list,将其附加到循环中,最后打印来实现。

m = []
l = []
degree = 9
pairs = []
for i in range(0, degree):
    m += [degree - i];
    l += [i]
    pairs.append((m[i],l[i]))
print(pairs)

【讨论】:

  • 这是否意味着元组对总是并且在任何情况下都存储为列表?
  • @feration48 是的,如果你想把它们作为集体对,那么你需要附加到列表中,或者如果你想打印,那么你可以不附加它
  • 为什么还要使用 ml?它可以只是pairs.append((degree-i, i))
  • @Tomerikoo 是的,先生,我们也可以这样做。我只是根据 OP 的问题添加
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多