chcę konwertować kod Morse'a do języka angielskiego przy użyciu Python 3+ udało mi się po angielsku, aby przekształcić kod Morse'a za pomocą tego http://code.activestate.com/recipes/578407-simple-morse-code-translator-in-python/Morse kod na angielski python3
ale chcę konwertować kod Morse'a do języka angielskiego
Próbowałem zrobić to po jednym charecterze naraz, ale problem polega na tym, że litery alfabetu Morse'a nie są 1 charecter długie jak angielskie litery, więc E to "." a S jest "...", problem polega na tym, że pętla słownikowa znajdzie "." i dopasuj go do E, więc zamiast otrzymywać S, otrzymuję "EEE" próbowałem to naprawić, wykrywając spacje i robiąc to słowo na raz, ale zamiast szukać liter w słowie, przeszukuje całe słowo przeciw słownik Jestem nowy w Pythonie i słownikach i nie wiem jak odróżnić E "." oraz S „...”, szukając mojego słownika
Oto mój kod
# defines the dictionary to convert morse to english
CODE_reversed = {'..-.': 'F', '-..-': 'X',
'.--.': 'P', '-': 'T', '..---': '2',
'....-': '4', '-----': '0', '--...': '7',
'...-': 'V', '-.-.': 'C', '.': 'E', '.---': 'J',
'---': 'O', '-.-': 'K', '----.': '9', '..': 'I',
'.-..': 'L', '.....': '5', '...--': '3', '-.--': 'Y',
'-....': '6', '.--': 'W', '....': 'H', '-.': 'N', '.-.': 'R',
'-...': 'B', '---..': '8', '--..': 'Z', '-..': 'D', '--.-': 'Q',
'--.': 'G', '--': 'M', '..-': 'U', '.-': 'A', '...': 'S', '.----': '1'}
def main():
#takes user message and makes it upper case
msg = input('MESSAGE: ')
msg = msg.upper()
addtolist = "" # creates blank string
message = [] # creates blank list
for i in msg:
addtolist = addtolist + i # adds every letter in MSG into a string until it finds a space
addtolist.upper() # makes every letter uppercase
if i == " ": # if it detects a space
message.extend(addtolist)
# adds the previously created addtolist to a list, this makes one word
addtolist = "" # clears previous variable
for i in message:
# for every word in the list
str(i) # make it into a string
print(CODE_reversed[i()]) # search the dictionary for that word
if __name__ == "__main__":
main()
Ten kod zajmuje słowo i próbuje szukać go przed słownika, ale to nie działa Próbowałem również przeszukiwać każdą pojedynczą literę alfabetu Morse'a przed słownikiem, ale problem polega na tym, że nie można stwierdzić, kiedy litera zaczyna się i kończy, więc "..." wychodzi jako "EEE" zamiast "S", a ja nie wiesz, jak rozwiązać ten
Próbowałem również poszukiwanie rozwiązań, ale znalazłem je tylko w Javie i nie wiem Java
Musisz zeskanować wejście, aż osiągniesz pauzę wskazującą następny znak. Na przykład, jeśli masz wejście "" ... "" jest spacja między kropkami i masz trzy "", ale jeśli wejście to "" ... "" nie masz miejsca, więc masz je " "..." '. Możesz to zrobić za pomocą metody "split" na wejściu. – skyking
Jest to problem matematyczny, że kod (Morse) nie jest funkcją iniekcyjną. Musisz znać spacje (przerwy) między elementami kodu. https://en.wikipedia.org/wiki/Injective_function – cansik