当参数大于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()
答案 0 :(得分: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]))
如果没有提供参数或者它不是整数,您可能还想添加一些错误处理:
def main():
try:
donuts(int(sys.argv[1]))
except IndexError:
print 'Missing argument'
except ValueError:
print 'Invalid argument'
答案 1 :(得分:5)
count
是一个字符串。试试count = int(count)
答案 2 :(得分:3)
在将count与10比较之前,你应该将count转换为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()
答案 3 :(得分:3)
尝试将count
参数转换为int以进行比较:
if int (count) < 10:
x = str (count)
else:
x = 'many'
因为您传入了count
参数的字符串参数,所以比较失败。
答案 4 :(得分:3)
您不要将输入作为整数开始。
变化:
def main():
donuts(sys.argv[1])
为:
def main():
donuts(int(sys.argv[1]))
如果他们输入字符串或小数而不是数字值,你会遇到问题。