Я пишу небольшую функцию, которая проверяет, является ли введенная строка морзевым кодом. Функция должна делать что-то вроде «If» - «or». »Only in Inputted_string:« Но я не могу найти способ сделать единственный бит на Python3. Текущий путь я это реализовано это очень неаккуратно и не очень PythonicЕсли строка содержит ТОЛЬКО "-" или "."
if "-" in message:
# message might be morse code so check even more
if "." in message:
# Message IS morse code so return true
return True
else:
# TODO you can use a REGEX for the below things
if '--' in message:
# if the messsage contains only hyphens, then check to see if
# message contans hyphen only morse code by checking all hyphen
# only morse code against message
return True
elif '-----' in message:
# if message contains 0 in morse code, return True
return True
if "." in message:
# message might contain morse code
if "-" in message:
# message IS morse code.
return True
else:
# check to see if message is dots only morse code
# TODO you can use a REGEX for the below things
if ".." in message:
# message IS Morse Code
return True
elif "..." in message:
# message IS Morse Code
return True
elif "....":
# message IS Morse Code
return True
# if dots or dash not in message, return none
return("Message has no hyphens or full stops")
форматирование немного выключен, когда я вставил, но это общая суть. Когда он проверяет, есть ли сообщение «----» или «..» и т. Д., Это связано с тем, что некоторые буквы кода Морзе - это только те харектеры, но я уверен, что есть намного более простой способ обойти это!
'return all (char in {'.', '-', ''} для сообщения char в сообщении)'? – jonrsharpe
@jonrsharpe - почему список, а не строка? 'all (char in '.-' для char в сообщении)' –
@ Robᵩ это не список, это набор, поэтому lookup - это 'O (1)' вместо 'O (n)' – jonrsharpe