Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果通过命令行参数传递,变长整数的处理方式是否不同_Python_Arguments_Command Line Arguments - Fatal编程技术网

Python 如果通过命令行参数传递,变长整数的处理方式是否不同

Python 如果通过命令行参数传递,变长整数的处理方式是否不同,python,arguments,command-line-arguments,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,

我只想写一个简单的程序来求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或123131,它工作正常。 但如果我给出3,10这样的输入,它给出了错误的答案。 但是如果我在程序中硬编码3,10这样的值,它工作得很好

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


谢谢

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

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

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

我会使用
int
而不是
float
,因为这个问题专门问整数。我明白了。如果我使用int来转换它们,然后进行比较,那么效果很好。但在我最初的计划中发生了什么。它没有抛出错误。那么,它是如何比较早期的值的呢?