如果通过命令行参数传递,则可变长度整数的处理方式不同

时间:2015-01-19 17:47:40

标签: python arguments command-line-arguments

我只想编写一个简单的程序来查找最多2个整数。 如果我通过命令行将整数传递给下面的程序,如果它们的长度可变,答案是不同的:

#!/usr/bin/python
import sys
def main():
        a = sys.argv[1]
        b = sys.argv[2]
        print 'the first variable is', a
        print 'the second variable is', b
        maximum(a,b)

def maximum(a,b):
        print 'The value of a is', a
        print 'The value of b is', b
        if a > b:
                print 'The bigger number is', a
        else:
                print 'The bigger number is', b

if __name__ == '__main__':
        main()

对于这个程序,如果我给2,3或10,11或123,131这样的输入它可以正常工作。 但是,如果我给出像3,10这样的输入,它会给出错误的答案。 但是如果我在程序中硬编码像3,10这样的值,它就可以正常工作。

所以我的问题是argv []处理变量长度的方式不同,还是我在某处犯了一个愚蠢的错误?

谢谢

2 个答案:

答案 0 :(得分:0)

命令行参数是字符串,而不是数字。在比较它们之前,你必须将它们转换为数字:

a = float(sys.argv[1])
b = float(sys.argv[2])

答案 1 :(得分:0)

首先,您需要转换命令行参数。其次,你不应该重新发明轮子,使用内置的max函数。