我必须编写一个程序,当从命令行给出数字时,它会设法读取和打印最高数字。
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
我试图找到最简单的方法来做这件事!谢谢!
答案 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