6

Ввод данных пользователем и аргументы командной строки [закрыто]

1

Описание проблемы

Я столкнулся с проблемой при попытке создать Python-скрипт, который должен принимать ввод от пользователя. Мне нужно, чтобы скрипт мог как запрашивать данные у пользователя во время выполнения, так и обрабатывать аргументы, если он запускается из командной строки.

Вот что я пробовал:

  • Использовал функцию input() для получения ввода от пользователя.
  • Искал информацию о библиотеке argparse, чтобы обрабатывать аргументы командной строки.

Однако мне не совсем понятно, как правильно организовать код так, чтобы он мог одновременно обрабатывать и ввод от пользователя, и параметры командной строки.

Есть ли лучшие практики или примеры, которые могли бы помочь мне решить эту задачу? Буду благодарен за любые советы!

5 ответ(ов)

5

Вот как можно перевести указанные вами фрагменты кода на русский язык, сохраняя стиль ответа на StackOverflow:

Для Python 2:

var = raw_input("Пожалуйста, введите что-нибудь: ")
print "Вы ввели:", var

А для Python 3:

var = input("Пожалуйста, введите что-нибудь: ")
print("Вы ввели: " + var)

В данном случае, функция raw_input в Python 2 используется для получения пользовательского ввода, тогда как в Python 3 используется просто input. Вывод также адаптирован для русского языка.

0

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

import argparse
import sys

try:
     parser = argparse.ArgumentParser()
     parser.add_argument("square", help="вывести квадрат данного числа",
                type=int)
    args = parser.parse_args()

    # Выводим квадрат пользовательского ввода из командной строки.
    print(args.square**2)

    # Выводим все аргументы системы, переданные из командной строки, включая имя программы.
    print(sys.argv)

    # Выводим второй аргумент, переданный из командной строки; обращение начинается с НУЛЯ
    print(sys.argv[1])
except:
    e = sys.exc_info()[0]
    print(e)
  1. Для нахождения квадрата числа 5:
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
  1. Передача неверного аргумента, отличного от числа:
C:\Users\bgh37516\Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
<type 'exceptions.SystemExit'>

В первом случае программа успешно вычисляет квадрат числа 5 и выводит его, а также отображает переданные аргументы. Во втором случае, когда введено слово "five", программа сообщает об ошибке, так как ожидает целое число.

0

Будьте осторожны с использованием функции input, если вы не уверены в своих действиях. В отличие от raw_input, функция input принимает любое выражение на Python, так что это фактически похоже на eval.

0

Для ввода данных из консоли или терминала используйте raw_input.

Если вам нужно передать аргумент командной строки, например имя файла, вы можете сделать это следующим образом:

$ python my_prog.py file_name.txt

В этом случае вам понадобится использовать sys.argv...

import sys
print(sys.argv)

sys.argv — это список, где индекс 0 содержит имя программы. Таким образом, в приведенном примере sys.argv[1] будет равно "file_name.txt".

Если вам нужны полноценные параметры командной строки, рассмотрите возможность использования модуля optparse.

0

Если у вас версия Python 3.x, просто используйте:

variantname = input()

Например, если вы хотите ввести 8:

x = input()
8

Переменная x будет равна '8', но это будет строка, если вы не определите ее иначе.

Поэтому вы можете воспользоваться командой преобразования, например:

a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07

Таким образом, a будет равно 9.07.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь