如果通过命令行参数传递,可变长度整数是否被区别对待
Are variable length integers treated differently if passed by command line arguement
我只想写一个简单的程序来找出 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[] 处理可变长度的方式不同还是我在某处犯了一个愚蠢的错误?
谢谢
命令行参数是字符串,不是数字。在比较它们之前,您必须将它们转换为数字:
a = float(sys.argv[1])
b = float(sys.argv[2])
首先,您需要转换命令行参数。其次,永远不要重新发明轮子,使用内置的max
函数。
我只想写一个简单的程序来找出 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[] 处理可变长度的方式不同还是我在某处犯了一个愚蠢的错误?
谢谢
命令行参数是字符串,不是数字。在比较它们之前,您必须将它们转换为数字:
a = float(sys.argv[1])
b = float(sys.argv[2])
首先,您需要转换命令行参数。其次,永远不要重新发明轮子,使用内置的max
函数。