【问题标题】:while loop won't break,should break when the counter is no longer less than the length of the arraywhile循环不会中断,当计数器不再小于数组的长度时应该中断
【发布时间】:2013-06-04 09:29:03
【问题描述】:

尝试比较 a 和 b 中的项目并在列表 big 中的每个索引处返回最大的数字 - 结果应该是 [9,14,9,14,15,18,15]。为一个类执行此操作,必须使用 while循环和计数器

a = [7,12,9,14,15,18,12]
b = [9,14,8,3,15,17,15]
big = []
i = 0
length = len(a)
while i < length:
    if a[i] > b[i]:
        big.append(a[i])
    else:
        big.append(b[i])
    i = i + 1
print(big)

【问题讨论】:

  • 你的问题是什么? a 和 b 的大小相同吗?
  • 它确实坏了。是什么让你认为它没有?此外,您还可以使用 map: map(max, zip(a, b)) 做得更好。
  • 您错过了一条重要信息:这是什么语言?最好将它包含在与问题相关联的标签中,这样知道该语言的人会更快发现它。
  • 对我来说看起来像是伪代码的家庭作业。可能没有真正的语言。
  • @curtisdf 它是有效的 Python :)

标签: python while-loop counter break


【解决方案1】:

代码没有问题。我只是复制它并通过IDLE运行。输出与您指定的完全一样

【讨论】:

  • 我没有收到错误,我正在尝试在 pyscripter 中运行,但它一直在运行,我必须终止程序。为什么会这样
  • 这不会发生在其他任何人身上。我会在循环中添加一个print i, length 语句,看看它在做什么。
  • 问题可能出在 pyscripter 上。
  • 问题似乎出在 if 子句上,以这种方式重写
  • a = [7,12,9,14,15,18,12] b = [9,14,8,3,15,17,15] i = 0 big = [] 长度= len(a) while i
【解决方案2】:

如果你直接在 python shell 中运行你的代码,你会得到一个 SyntaxError。

欲了解更多信息,请参阅http://bugs.python.org/issue11433

如果你将代码保存在一个文件中,比如 test.py,然后运行python test.py,它将按预期打印出结果。

编辑:

此答案目前的评分为 -1。在你投反对票之前,你能真正阅读并尝试理解答案吗?

这就是我要说的:

【讨论】:

  • -1。在 Python shell 中使用上述代码没有任何问题。它完全符合 OP 的预期。
  • 抱歉忘记指定这是 python,我在 pyscripter 中运行它,它看起来好像它没有破坏我必须杀死程序
  • @dansalmo 我认为您实际上没有在 python 解释器中尝试过它。你明白其中的区别吗?
  • @Anthony Kong:您看到的问题与 OP 提出的问题完全不同。您的问题与您输入代码的方式有关。
  • @dansalmo 鉴于 OP 提供的信息有限,这是他最有可能遇到的错误。事实上,他的问题在于交互式会话,而不是代码本身。
猜你喜欢
  • 1970-01-01
  • 2021-01-30
  • 2013-11-01
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
相关资源
最近更新 更多