【问题标题】:How do I eliminate even numbers from this python code without an infinite loop occurring?如何在不发生无限循环的情况下从此 python 代码中消除偶数?
【发布时间】:2021-07-16 11:41:34
【问题描述】:

我尝试了不同的方法来尝试仅打印奇数,但它只会导致发生无限循环。你能帮帮我吗?

import sys

i = 1
while i < len(sys.argv):
    print sys.argv[i]
    i = i + 1

【问题讨论】:

  • 我猜你是通过执行 python 脚本然后提供参数来运行这段代码的?
  • 根据python 3的语法,它也是print(sys.argv[i])而不是print sys.argv[i]
  • 也许 OP 在 Python2.7 上
  • 我在 python 3.10 上试过这个,它工作正常..这就是我如何称呼它 python script.py arg1 arg2 arg3 并且它打印 arg1 arg2 arg3 每个在单独的行上。我使用 print() 函数而不是 python3 的 print 语句。没有其他任何改变。
  • 是的,我正在这样做,但是每当我添加类似 if i % 2 == 1: 时,它会导致无限循环,任何方法都可以阻止它

标签: python-2.7 import sys


【解决方案1】:

您的问题有点令人困惑。 您应该处理所有参数,然后决定打印哪个参数。

import sys

i = 1
while i < len(sys.argv):
    number = int(sys.argv[i])
    if number % 2 == 1:
        print number
    i = i + 1

【讨论】:

  • 但问题是我的讲师在一次测试中将数字显示在 1,3,5 位置,然后在第二次测试中显示在 1,2,4 位置
  • 所以它也打印偶数
  • 哦,好的。我明白了..所以你只想要奇数。通过代码更改更新了答案,
  • 啊,现在我知道我哪里出错了,非常感谢
【解决方案2】:

在 python 中,sys.argv 在索引号 0 中只包含一项 'main.py'。

因此,如果您从索引 1 运行程序,您将不会得到任何输出。如果你从索引 0 开始设置,你会得到 'main.py' 打印输出。

如果此答案不令人满意,请用此代码说明您的问题。

【讨论】:

  • 是的,我知道我从 1 开始的原因是因为我现在不想在答案中出现奇怪的参数.py,例如,如果我要使用命令行参数运行我的代码它将为第一个测试 5 4 3 2 1 和下一个测试打印出来的问题 23521 24373 25882 5878 22229
  • 现在有办法在我的代码中添加一个参数或语句来消除打印中的偶数 nnumber
  • 一般来说,如果你尝试下面的代码,它会打印一个范围内的所有奇数。 print( [x for x in range(10) if x%2!=0] )
猜你喜欢
  • 2017-11-06
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
相关资源
最近更新 更多