0

我需要通过命令行接受数字列表并打印最大的数字。所以我写了这个 Python 脚本

import sys

arg_list = sys.argv[:]
num_list = arg_list[1:]
if (len(num_list) == 0):
    print "Please pass a list on numbers as an argument"
else:
    max_num = max(num_list)
    print "The largest number is " + str(max_num)

现在这段代码对于列表 1、5、77、8 不能正常工作,但我不明白我做错了什么。有人能帮帮我吗?

4

3 回答 3

3

程序的参数始终是字符串,您需要将其转换num_list为整数:

num_list = map(int, num_list)

如果任何输入不是有效数字,这可能会引发 ValueError 异常,您可能想要捕捉到:

try:
    num_list = map(int, num_list)
except ValueError:
    print 'Please enter only integers'
    sys.exit(1)
于 2013-02-08T11:12:28.550 回答
1

您需要先将它们转换为整数

例如

max(int(num) for num in num_list)
于 2013-02-08T11:12:13.093 回答
1

您可以将它们转换为整数,也可以对整数值进行排序:

>>> num_list = ['1','5','77','8']
>>> sorted(num_list, key=int, reverse=True)[0]
'77'
于 2013-02-08T11:14:29.890 回答