возьмите список чисел из командной строки и выведите наибольшее число

#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
  

я пытаюсь найти самый простой способ сделать это! Спасибо!

Ответ №1:

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

В качестве альтернативы вы можете использовать print(max(sys.argv[1:], key=float)) (благодаря хорошему дополнению от frostnational).

ДЕМОНСТРАЦИЯ:

 >> 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. или max(sys.argv[1:], key=float)

2. было бы полезно, если бы вы объяснили. почему float и sys.argv[1:]

3. вау, это только что сделало it….so гораздо проще, ха-ха. последнее, что нужно сделать, это написать pgoram, который вводит список чисел из файла и выводит их сумму. предположим, что файл «x» содержит числа: 4 14 5

4. Для суммы измените max на sum

5. @timgeb почему float, а не int

Ответ №2:

@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))
  

Для максимального: просто вызовите код со списком чисел.

Для sum: или любой другой опции, которую вы хотели бы добавить, вы можете использовать аргумент, в данном случае --sum

Комментарии:

1. Если задача становится более сложной, чем в приведенном примере, я бы определенно рекомендовал использовать argparse.