Python 从命令行获取数字列表并打印最大数字

Python 从命令行获取数字列表并打印最大数字,python,python-3.x,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 我正在努力找到最简单的方法来做这件事!谢谢大家! import sys print(max(float(x) for

我必须编写一个程序,当命令行给出数字时,该程序能够读取并打印最大的数字

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
我正在努力找到最简单的方法来做这件事!谢谢大家!

import sys
print(max(float(x) for x in sys.argv[1:]))
或者,您可以使用
打印(max(sys.argv[1:],key=float))
(多亏了frostnational的出色添加)

演示:

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

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

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

@timgeb答案很好,但我也会检查您是否使用命令行界面,它可以为您当前和未来的代码提供一些非常好的选项,通过使用
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:或者您想要添加的任何其他选项,您可以使用一个参数,在这种情况下,
--sum

max(sys.argv[1:],key=float)
如果您解释一下,会很有帮助。为什么
float
sys.argv[1://code>哇,这让它变得如此简单,哈哈。最后一件事是编写一个pgoram,从文件中输入一个数字列表并打印它们的总和。假设文件“x”包含数字:4 14 5对于求和,将
max
更改为
sum
@timgeb why float and not inti如果任务变得比给定示例更复杂,我绝对建议使用argparse。
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))