Python отправляет каждый символ через функцию? - PullRequest
0 голосов
/ 11 декабря 2019

Итак, у меня есть это назначение, где мне нужно запросить ввод пользователя. Каждая буква, которую вводит пользователь, будет возвращать эквивалент алфавита НАТО. например, F = "FoxTrot". Этот ввод вводится через функцию для получения возвращаемого значения. У меня также есть несколько операторов IF в функции для определенных символов, например, 9 = "niner", - = "Dash", любой другой номер / символ просто возвращает этот символ.

Проблема, с которой я столкнулся, заключается в том, что в настоящее время разрешено вводить только один символ. Если я попытаюсь ввести несколько символов, появится сообщение об ошибке «typeerror ord () ожидал символ, но длина строки # найдена». Я не могу изменить это утверждение в соответствии с заданием. Потому что это дает правильный расчет для алфавитного эквивалента НАТО.

def main():
    char = input("Enter license plate tag: ")
    charToWord(char)

def charToWord(char):    
nato = ["Alpha","Beta","Charlie","Delta","Echo","Foxtrot","Golf","Hotel","India","Juliett","Kilo","Lima","Mike","November","Oscar","Papa","Quebec","Romeo","Sierra","Tango","Uniform","Victor","Whiskey","X-Ray","Yankee","Zulu" ]
work =''

charNum = ord(char) - 65
word = nato[charNum]

if char.isalpha():
   print(word)
if char == "9":
   print("Niner")
if char == "-":
   print("Dash")
else:
   print(char)

return word

main()

Итак, я считаю, что мне нужно ввести цикл For в основную функцию? Для того, чтобы передать несколько символов через функцию charToWord? Однако я не уверен, как его построить. Какие-либо предложения? Спасибо.

Ответы [ 2 ]

1 голос
/ 11 декабря 2019

Вы можете сделать следующее, используя map:

def charToWord(char):    
    nato = ["Alpha","Beta","Charlie","Delta","Echo","Foxtrot","Golf","Hotel","India","Juliett","Kilo","Lima","Mike","November","Oscar","Papa","Quebec","Romeo","Sierra","Tango","Uniform","Victor","Whiskey","X-Ray","Yankee","Zulu" ]
    decode = {w[0]: w for w in nato}
    decode["9"] = "Niner"
    decode["-"] = "Dash"
    return decode.get(char, char)

# ...
list(map(charToWord, "ABC9-9G"))
# ['Alpha', 'Beta', 'Charlie', 'Niner', 'Dash', 'Niner', 'Golf']
0 голосов
/ 11 декабря 2019

Или вы можете изменить структуру main () следующим образом:

def main():
    userInput = input("Enter license plate tag: ")
    for char in userInput:
        charToWord(char)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...