Seu Donato é professor de português em uma escola de educação básica e está corrigindo as redações dos alunos, que foram entregues ao docente por meio de um software educacional. Ao corrigir as redações, Seu Donato percebeu que a maioria dos alunos estava errando a escrita de palavras para a seguinte regra ortográfica da língua portuguesa:
"Deve-se empregar a consoante m antes das consoantes p e b para a criação dos sons am, em, im, om e um."
As palavras "pombo", "bombeiro" e "tampa" são exemplos corretos que respeitam a regra ortográfica acima. No entanto, Seu Donato percebeu que os alunos estavam escrevendo incorretamente essas palavras como "ponbo", "bonbeiro" e "tanpa". Tais erros se repetiram para diversas outras palavras da língua portuguesa conforme explicitado na regra específica.
Seu Donato quer sua ajuda. Ele gostaria que você ajustasse o software educacional para detectar esses erros nas redações dos alunos. Por isso, dada uma sentença de uma redação de um aluno qualquer, imprima a sentença com as correções necessárias quando alguma consoante n aparecer antes das letras b e p.
Entrada:
A entrada consiste de uma única linha contendo uma string s associada a uma sentença da redação de algum aluno. A string s pode conter, no máximo, 1000 caracteres e contém todos os caracteres entre 'a' e 'z' (é garantido que todas esses caracteres são minúsculos), como também caracteres de espaço em branco.
Saída:
Imprima a sentença lida na entrada da maneira correta conforme a regra ortográfica da língua portuguesa descrita no enunciado.
teste no anexo
E = D.title()
print(E)
capital = string.split()
print(capital[0].title(), end = ' ')
for word in capital[1:]:
print(word, end = ' ')
Soluções para a tarefa
textoIn = input("Digite o texto: ")
while len(textoIn)>1000:
print("Maior que 1000 caracteres! Digite novamente.")
textoIn = input("Digite o texto: ")
textoOut = ""
for i in range(len(textoIn)):
if textoIn[i:i+2] == "nb" or textoIn[i:i+2] == "np":
textoOut+="m"
else:
textoOut+= textoIn[i]
print(textoOut)
O primeiro if serve para tirar os textos com mais de 1000 caracteres.
O for percorre o texto lendo os caracteres de 2 em 2 e verifica se algum deles é "nb" ou "np". Caso sejam, ele corrige e segue a vida.
Tá aí um input que eu testei:
Digite o texto: tales tanpa tampa banpa bampa
tales tampa tampa bampa bampa
Utilizando de um método implementado pela rapaziada do python:
texto = input("Digite o texto: ")
while len(textoIn)>1000:
print("Maior que 1000 caracteres! Digite novamente.")
texto = input("Digite o texto: ")
texto.replace('nb','mb')
texto.replace('np','mp')
print(texto)
O mesmo teste:
Digite o texto: tales tanpa tampa banpa bampa
tales tampa tampa bampa bampa
Bom tarde! Essa realmente deu trabalho de achar um jeito de conseguir o próxima posição de um array em um for, mas eu consegui fazer. Você terá que instalar a lib "more-itertools" para consegui executar o programa.
import itertools
string = input()
iter0, iter1 = itertools.tee(string)
for item, next_item in itertools.zip_longest(iter0, itertools.islice(iter1, 1, None)):
if next_item == 'p' or next_item == 'b':
if item == 'n':
print('m', end = '')
else:
print(item, end = '')
elif item == 'm':
if next_item == ' ' or next_item == None:
print(item, end = '')
elif next_item != 'b' or next_item != 'p':
print('n', end = '')
else:
print(item, end = '')
print()