2016-11-14 13 views
1

Я пытаюсь перевести код Морзе на слова и предложения, и все работает отлично ... кроме одного. Вся моя продукция с нижним регистром, и я хочу, чтобы можно было использовать каждую первую букву каждого предложения.Python 3 - Как загладить первую букву каждого предложения при переводе из кода Морзе

Это мой текущий код:

text = input() 
     if is_morse(text): 
      lst = text.split(" ") 
      text = "" 
      for e in lst: 
       text += TO_TEXT[e].lower() 
      print(text) 

Каждый элемент в списке разделенном равно характеру (но в Морзе) не слово. «TO_TEXT» - это словарь. У кого-нибудь есть легкое решение? Я новичок в программировании и Python BTV, так что я не мог понять некоторые решения ...

+0

Можете ли вы исправить ваш отступ? –

ответ

0

Поддержание флага, сообщающего вам, является ли это первой буквой нового предложения. Используйте это, чтобы решить, должно ли письмо быть в верхнем регистре.

text = input() 
if is_morse(text): 
    lst = text.split(" ") 
    text = "" 
    first_letter = True 
    for e in lst: 
     if first_letter: 
      this_letter = TO_TEXT[e].upper() 
     else: 
      this_letter = TO_TEXT[e].lower() 

     # Period heralds a new sentence. 
     first_letter = this_letter == "." 

     text += this_letter 
    print(text) 
0

Предположим, у вас есть это text:

text = "this is a sentence. this is also a sentence" 

Вы можете прописные первая буква каждого предложения, делая :

  1. Split text на '.' символов
  2. Удалить пробелы в начале и конце каждого пункта
  3. заглавной первую букву каждого пункта
  4. воссоединиться элементов с '. '

В шаг за шагом код:

originals = text.split('.') 
    trimmed = [ sentence.strip() for sentence in originals ] 
    uppercased = [ sentence[0].upper() + sentence[1:] for sentence in trimmed ] 
    rejoined = '. '.join(uppercased) 

Вы хотите, чтобы упаковать это в функцию. Создание всех этих промежуточных объектов list не обязательно, вы можете сделать это с помощью циклов for или generators.

+0

Не может этого сделать, потому что текстовая переменная содержит код MORSE, а не TEXT. Мне нужно преобразовать из текста morese TO. – Schytheron

1

Из того, что понятно из вашего кода, могу сказать, что вы можете использовать функцию python title(). Для более строгих результатов вы можете использовать функцию capwords(), импортируя класс string.

Это то, что вы получаете от документации Python на capwords:

Split аргумент в слова, используя str.split(), капитализировать каждое слово, используя str.capitalize(), и присоединиться к капитализированные слова, используя ул .присоединиться(). Если необязательный второй аргумент sep отсутствует или None, пробелы пробельных символов заменяются одним пробелом, а удаленные пробелы ведущие и конечные удаляются, иначе sep используется для разделения и объединения слов.