voglio convertire codice Morse a inglese utilizzando Python 3+ sono riuscito a convertire inglese di codice Morse con questo http://code.activestate.com/recipes/578407-simple-morse-code-translator-in-python/codice morse all'inglese python3
Ma voglio convertire codice Morse a Inglese
Ho tentato di farlo da un personaggio alla volta, ma il problema è che le lettere di codice morse non sono lunghe come lettere inglesi, quindi E è "." e S è "...", il problema che ho è che il ciclo del dizionario troverà il "." e abbinarlo a E, quindi invece di ottenere S ottengo "EEE" ho provato a risolvere questo problema rilevando gli spazi e facendone una parola alla volta, ma invece di cercare le lettere nella parola cerca l'intera parola contro il dizionario sono nuovo di Python e dei dizionari e non so come distinguere tra una E "." e una S "..." quando si cerca il mio dizionario
Ecco il mio codice
# 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()
Questo codice prende una parola, e cerca di guardare in su contro il dizionario, ma non funziona ho anche provato a cercare ogni singola lettera di codice morse contro il dizionario, ma il problema è che non si può sapere quando una lettera inizia e finisce, quindi "..." esce come "EEE" invece di "S" e io so come risolvere questo
ho anche provato a cercare soluzioni ma le ho trovate solo in Java e non conosco Java
È necessario eseguire la scansione dell'ingresso fino a raggiungere una pausa che indica il carattere successivo. Ad esempio, se hai inserito "" ... "" c'è spazio tra i punti e hai tre '". "' S, ma se l'input è '" ... "' non hai spazio quindi ne hai uno ' "..." '. Puoi farlo usando il metodo 'split' sull'input. – skyking
È un problema matematico che il codice (Morse) non è una funzione iniettiva. Devi conoscere gli spazi (interruzioni) tra gli elementi del codice. https://en.wikipedia.org/wiki/Injective_function – cansik