为什么Python中的以下短脚本忽略了"if"中的条件?

Nim*_*ust 1 python if-statement

当参数超过10时,我希望它给出'甜甜圈的数量:很多'和当参数数量<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()
Run Code Online (Sandbox Code Playgroud)

And*_*ark 6

sys.argv将只包含字符串,即使你提供整数作为参数,因此,例如,如果你叫这个为python donuts.py 4,那么sys.argv[1]'4',你会尝试比较'4' < 10当你真正想4 < 10.

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

def main():
    donuts(int(sys.argv[1]))
Run Code Online (Sandbox Code Playgroud)

如果没有提供参数或者它不是整数,您可能还想添加一些错误处理:

def main():
    try:
        donuts(int(sys.argv[1]))
    except IndexError:
        print 'Missing argument'
    except ValueError:
        print 'Invalid argument'
Run Code Online (Sandbox Code Playgroud)


blu*_*ume 5

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