从命令行获取一个数字列表并打印最大的数字

时间:2014-06-19 06:22:06

标签: python python-3.x

我必须编写一个程序,当从命令行给出数字时,它会设法读取和打印最高数字。

import sys
numbers = sys.argv[1]
def map(f,items):
   result = [] 
   for i in range(0,len(items),1): 
   result = result + [f(items[i])
   return result

我试图找到最简单的方法来做这件事!谢谢!

2 个答案:

答案 0 :(得分:7)

import sys
print(max(float(x) for x in sys.argv[1:]))

或者,你可以使用print(max(sys.argv[1:], key=float))(感谢霜冻的好处)。

演示:

>> python a.py 12 6 3.14 11
12.0

说明:如果我们将print(sys.argv)添加到脚本中,则上述示例的输出将为

['a.py', '12', '6', '3.14', '11']
12.0

解决方案是切掉sys.argv的第一个元素,将其他字符串转换为生成器表达式中的浮点数,然后找到最大值。

答案 1 :(得分:1)

@timgeb答案非常好,但我也会检查argparse如果您使用的是命令行界面,它可以为您当前和未来的代码提供一些非常好的选择,方法是使用argparse您可以节省大量的编程时间,并获得完整的帮助和使用信息。

我将以文档为例,因为它与您的问题相关,此代码将打印max或sum。

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

对于max:只需使用数字列表调用代码。

对于总和:或您要添加的任何其他选项,您可以使用参数,在本例中为--sum