В азбуке Морзе: пробел " " записывается как косая черта "/". Промежуток между буквами записывается как пробел " ".
Я сделал переводчик с английского на Морзе. Это было легко, так как каждая буква состояла из 1 символа, поэтому я мог разделить ее на символы. Однако идти другим путем сложно. Мне нужно иметь возможность обнаруживать разрывы между буквами, но также убедиться, что я не обнаруживаю разрывы между словами.
Вот мой код на питоне:
print("\nNote: not all characters are logged. \n\n")
english = [ "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",".",",",";",":","!","?","(",")","-","_","!","&",
" = ","+","$","/","'"," "]
morse = [ ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",
".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",
".--","-..-","-.--","--..",".----","..---","...--","....-",".....",
"-....","--...","---..","----.","-----",".-.-.-","-..-","-.-.-.",
"---...","--..--","..--..","-.--.","-.--.-","-....-","..--.-","--..--",
".-...","-...-",".-.-.","...-..-","-..-.",".----."," /"]
while True:
print ("English to Morse: press 1 ")
print ("Morse to English: press 2 ")
print ("What is morse code: press 3")
translate_direction = input("\n>").replace(" ","")
if translate_direction == "1":
tobetranslated = input("\nTranslate English to Morse Code\n\n> ").lower()
splitupinput = list(tobetranslated)
finishedoutput = ""
for i in splitupinput:
englishloc = english.index(i)
finishedoutput = finishedoutput + morse[englishloc]
finishedoutput = finishedoutput + " "
print(finishedoutput)
elif translate_direction == "2":
tobetranslated = input("\nTranslate Morse Code to English\n\n> ").lower()
tobetranslated = tobetranslated.replace(" ","ß ")
finishedoutput = ""
for i in splitupinput:
englishloc = english.index(i)
finishedoutput = finishedoutput + morse[englishloc]
finishedoutput = finishedoutput + " "
print(finishedoutput)
elif translated_irection == "3":
print("Morse code is... (insert long-winded explanation of the history of morse code and its applications)")
Я использую .replace()
, чтобы заменить пробелы каким-то символом, которого нет в азбуке Морзе, плюс пробел, чтобы при разделении по «π», которое будет потеряно, у меня оставался пробел, чтобы я мог определить разделение между словами. .
Но у меня проблема: я не знаю, как разбить строку на неопределенное количество разбиений в список.
Любая помощь?
Забавный факт: у меня есть только стандартная библиотека. Извини! Я несовершеннолетний, и мои родители не хотят ничего скачивать, сколько бы я ни просил.
Я также новичок в python, поэтому, если бы вы могли быстро объяснить, как/почему что-то работает, это было бы очень приятно :)
Пожалуйста, покажите это своим родителям: полвека назад мои родители поддержали меня, когда я захотел заняться программированием. (Они возили меня в университетский компьютерный центр.) И это дало мне прекрасную карьеру. Загрузка пакетов Python сильно отличается и намного безопаснее, чем загрузка большинства вещей из Интернета. И вы сможете многому научиться и помочь создать основу для ВАШЕЙ великой карьеры. С уважением, мисс и мистер Тунг, пожалуйста, обратите внимание на более тонкие правила загрузки.
Вам нужен встроенный метод .split()
.
Он делает такие вещи.
>>> '1/2/3'.split('/')
['1', '2', '3']
Читайте об этом здесь. https://docs.python.org/3/library/stdtypes.html#string-methods
Вы можете использовать функцию разделения строк, чтобы разделить строку на список строк с помощью предоставленного разделителя. Например, следующий код разбивает строку по пробелам в список строк.
stuff_to_split = "Hello there my friend"
list_of_strings = stuff_to_split.split(' ')
for word in list_of_strings:
print(word)
Выходы
Hello
there
my
friend
string.split()
то, что вы хотите? Он разделит строку на список по любому символу (символам), который вы укажете.