1

我希望它在参数超过 10 时给出“甜甜圈数量:很多”,当参数是 count<10 时给出“甜甜圈数量:”。但它总是给我“甜甜圈的数量:很多”

#!/usr/bin/python2.6 -tt
import sys
def donuts(count):
  if count < 10:
    x = str(count)
  else:
    x = 'many'
  print 'Number of donuts: ' + x

def main():
  donuts(sys.argv[1])

if __name__ == "__main__":
  main()
4

5 回答 5

6

sys.argv将仅包含字符串,即使您提供整数作为参数,例如,如果您将其称为python donuts.py 4,那么sys.argv[1]将是并且您将在实际需要时'4'尝试比较。'4' < 104 < 10

因此,首先,尝试转换sys.argv[1]为 int:

def main():
    donuts(int(sys.argv[1]))

您可能还需要添加一些错误处理,以防未提供参数或它不是整数:

def main():
    try:
        donuts(int(sys.argv[1]))
    except IndexError:
        print 'Missing argument'
    except ValueError:
        print 'Invalid argument'
于 2012-04-06T20:50:30.647 回答
5

count是一个字符串。尝试count = int(count)

于 2012-04-06T20:50:14.050 回答
3

您应该在将 count 与 10 进行比较之前将其转换为 int:

#!/usr/bin/python2.6 -tt
import sys
def donuts(count):
    if int(count) < 10:
        x = count
    else:
        x = 'many'
    print 'Number of donuts: %s' % x

def main():
    donuts(sys.argv[1])

if __name__ == "__main__":
    main()
于 2012-04-06T20:48:21.600 回答
3

尝试将count参数转换为 int 进行比较:

if int (count) < 10:
  x = str (count)
else:
  x = 'many'

因为您正在为参数传递一个字符串count参数,所以比较失败。

于 2012-04-06T20:50:20.087 回答
3

您不会将输入作为整数开始。

改变:

def main():
  donuts(sys.argv[1])

至:

def main():
  donuts(int(sys.argv[1]))

但是,如果他们输入字符串或小数而不是数值,您将遇到问题。

于 2012-04-06T20:50:37.033 回答