又來了。一項“相當簡單”的練習終于讓我頭疼了。
制作一個程式,使用查找表將任何一組字母轉換為其相應的北約語音字母 ( https://en.wikipedia.org/wiki/NATO_phonetic_alphabet )。還實作了反函式。
- 輸入:貓
- 輸出:查理阿爾法探戈
反函式:
- 輸入:查理阿爾法探戈
- 輸出:貓
我為每個字母定義了一個帶有字母表和它的北約等價物的字典。然后,我定義了一個函式,它將從串列中獲取元素作為輸入。字母對應字典中我的鍵,字母轉換對應我的值。該功能適用??于以下情況:
- 當我輸入一個字符時,它會給我它的“北約”等價物。(將字串與字母進行比較并輸出字母轉換)
- 當我輸入一個 Nato 字母字串時,它將輸出該字母。(比較字串與字母轉換并輸出字母)
當我需要評估串列中字串的長度,然后將每個字符轉換為其北約字母表時,我陷入了困境。
nato_alphabet = {'a':'Alfa', 'A': 'Alfa', 'b': 'Bravo', 'B': 'Bravo', 'c': 'Charlie', 'C': 'Charlie', 'd': 'Delta', 'D':'Delta', 'e': 'Echo', 'E':'Echo', 'f': 'Foxtrot', 'F': 'Foxtrot', 'G': 'Golf', 'g': 'Golf', 'h': 'Hotel', 'H': 'Hotel', 'k': 'Kilo', 'K': 'Kilo', 'l': 'Lima', 'L': 'Lima', 'm': 'Mike', 'M': 'Mike', 'n': 'November', 'N': 'November', 'o': 'Oscar', 'O': 'Oscar',
'p': 'Papa', 'P': 'Papa', 'q': 'Quebec', 'Q': 'Quebec', 'r': 'Romeo', 'R': 'Romeo', 's': 'Sierra', 'S': 'Sierra', 't':'Tango', 'T': 'Tango', 'u': 'Uniform', 'U': 'Uniform', 'V': 'Victor', 'v': 'Victor', 'w': 'Whiskey', 'W': 'Whiskey', 'y': 'Yankee', 'Y': 'Yankee', 'Z': 'Zulu', 'z': 'Zulu'}
#Passing through a list
def convert(word_to_convert):
word_converted= []
for i in word_to_convert:
for letter, letter_conversion in nato_alphabet.items():
if i == letter:
word_converted.append(letter_conversion)
if i == letter_conversion:
word_converted.append(letter)
if len(i) == letter:
word_converted.append(letter_conversion )
return word_converted
print(convert(['c', 'Alfa', 'moon']))
謝謝你們每一個人的幫助 !
戴安娜
uj5u.com熱心網友回復:
用:
def convert(word_to_convert):
word_converted = []
for i in word_to_convert:
word_converted.append(" ".join(nato_alphabet[ii.lower()] for ii in i))
return word_converted
print(convert(['c', 'Alfa', 'moon']))
輸出
['Charlie', 'Alfa Lima Foxtrot Alfa', 'Mike Oscar Oscar November']
作為備選:
# Passing through a list
def convert(words_to_convert):
word_converted = []
# iterate over each word
for word in words_to_convert:
nato_encoded_list = []
# iterate over each character in word
for char in word:
# fetch the corresponding value from nato_alphabet
nato_encoded_list.append(nato_alphabet[char.lower()])
# join the encoded words and add to word_converted list
word_converted.append(" ".join(nato_encoded_list))
return word_converted
基本上遍歷每個單詞并為單詞中的每個字符獲取nato_alphabet值。
uj5u.com熱心網友回復:
如果有不清楚的地方,這可能會讓我知道
nato_alphabet = {'a':'Alfa', 'A': 'Alfa', 'b': 'Bravo', 'B': 'Bravo', 'c': 'Charlie', 'C': 'Charlie', 'd': 'Delta', 'D':'Delta', 'e': 'Echo', 'E':'Echo', 'f': 'Foxtrot', 'F': 'Foxtrot', 'G': 'Golf', 'g': 'Golf', 'h': 'Hotel', 'H': 'Hotel', 'k': 'Kilo', 'K': 'Kilo', 'l': 'Lima', 'L': 'Lima', 'm': 'Mike', 'M': 'Mike', 'n': 'November', 'N': 'November', 'o': 'Oscar', 'O': 'Oscar',
'p': 'Papa', 'P': 'Papa', 'q': 'Quebec', 'Q': 'Quebec', 'r': 'Romeo', 'R': 'Romeo', 's': 'Sierra', 'S': 'Sierra', 't':'Tango', 'T': 'Tango', 'u': 'Uniform', 'U': 'Uniform', 'V': 'Victor', 'v': 'Victor', 'w': 'Whiskey', 'W': 'Whiskey', 'y': 'Yankee', 'Y': 'Yankee', 'Z': 'Zulu', 'z': 'Zulu'}
nato_alphabet_inverse = {v.lower():k.lower() for k,v in nato_alphabet.items()}
nato_alphabet = {k.lower():v.lower() for k,v in nato_alphabet.items()}
# print(nato_alphabet_inverse)
def convert(list_to_convert):
return_list = []
for each_item in list_to_convert:
# print(each_item)
if " " in each_item: # Sentence thus must be converted to Alphabets
l_ = each_item.split()
temp_list = []
for each_word in l_:
# print(each_word)
temp_list.append(nato_alphabet_inverse[each_word.lower()])
# return_list.append()
return_list.append("".join(temp_list))
else: # Convert to equivalent Nato
temp_list = []
for chr in each_item:
# print(chr)
temp_list.append(nato_alphabet[chr.lower()])
str_ = " ".join(temp_list)
return_list.append(str_)
return return_list
print(convert(['cAT',"charlie alfa tango"]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/342477.html
