sys.argv в python - PullRequest
       65

sys.argv в python

0 голосов
/ 26 марта 2020

Мне было просто интересно, как использовать в этой заданной программе c список sys.argv для аргументов командной строки вместо метода ввода. Поскольку argc не существует в python, длина будет определяться методом len, верно?

Спасибо за любую помощь заранее!

MORSE_CODE_DICT = {
    'A':'.-',
    'B':'-...',
    'C':'-.-.',
    'D':'-..',
    'E':'.',
    'F':'..-.',
    'G':'--.',
    'H':'....',
    'I':'..',
    'J':'.---',
    'K':'-.-',
    'L':'.-..',
    'M':'--',
    'N':'-.',
    'O':'---',
    'P':'.--.',
    'Q':'--.-',
    'R':'.-.',
    'S':'...',
    'T':'-',
    'U':'..-',
    'V':'...-',
    'W':'.--',
    'X':'-..-',
    'Y':'-.--',
    'Z':'--..',
    '1':'.----',
    '2':'..---',
    '3':'...--',
    '4':'....-',
    '5':'.....',
    '6':'-....',
    '7':'--...',
    '8':'---..',
    '9':'----.',
    '0':'-----',
}

```python

def encryptor(text):
    encrypted_text = ""
    for letters in text:
        if letters != " ":
            encrypted_text = encrypted_text + MORSE_CODE_DICT.get(letters) + " "
        else:
            encrypted_text += " "
    print(encrypted_text)

text_to_encrypt = input("Enter Some Text To Encrypt : ").upper()
encryptor(text_to_encrypt)

Ответы [ 2 ]

0 голосов
/ 26 марта 2020

sys.argv = список аргументов командной строки, передаваемых в сценарий Python. argv[0] - это имя скрипта.

Вы можете попробовать что-то вроде этого, а также вы можете использовать strip() метод для удаления начальных / конечных и символов (пробел является ведущим символом по умолчанию для удаления)


def encrypt():
    return "".join([MORSE_CODE_DICT.get(letter,"NA") for word in sys.argv[1:] for letter in word])
0 голосов
/ 26 марта 2020

Первый элемент sys.argv - это имя исполняемой программы. Остальные параметры передаются программе, управляемой оболочкой. Например, с расширением имени файла *.txt будет расширяться в отдельный элемент для каждого найденного текстового файла. Вы можете написать тестовую программу, чтобы увидеть различные расширения

test.py:

import sys
print(sys.argv)

Два способа запуска:

$ python test.py hello there buckaroo
['test.py', 'hello', 'there', 'buckaroo']
$ python test.py "hello there buckaroo"
['test.py', 'hello there buckaroo']

Простое решение для вас это просто объединить аргументы, чтобы человек мог вводить с или без кавычек

import sys
text_to_encrypt = " ".join(sys.argv[1:]).upper()
encryptor(text_to_encrypt)

Добавляя этот код, мы получаем

$ python morsecoder.py hello there buckaroo
.... . .-.. .-.. ---  - .... . .-. .  -... ..- -.-. -.- .- .-. --- --- 

Обратите внимание, что нам не нужно знать длину argv конкретно. Python любит повторять - часто бывает так, что если вам нужна длина чего-то, вы делаете это неправильно.

...