• Matéria: Informática
  • Autor: lucas27484
  • Perguntado 4 anos atrás

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

Anexos:

PedroviskHMA: Essa ideia é melhor
lucas27484: agora veio uma parecida, é assim quer que faça um programa que transforme a primeira letra da frase de minúsculo para maiúscula
lucas27484: eu consegui fazer, só que tipo
lucas27484: quando tem uma frase que tem várias palavras, ela transforma todas com a primeira letra maiúscula
lucas27484: eu só preciso da primeira
lucas27484: D = input()
E = D.title()
print(E)
lucas27484: eu usei esse, só que ele colocou todas as primeiras letras das palavras maiúscula
PedroviskHMA: string = input()
capital = string.split()
print(capital[0].title(), end = ' ')

for word in capital[1:]:
print(word, end = ' ')
lucas27484: rodou, vou colocar no debug para eu entender o código
lucas27484: vlw mano

Respostas

respondido por: talessilvaamarp9tcph
1

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

respondido por: PedroviskHMA
1

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()


talessilvaamarp9tcph: slc que gambiarra kk
talessilvaamarp9tcph: pelo menos funciona
talessilvaamarp9tcph: isso que import
PedroviskHMA: É verdade. Sua solução ficou bem mais simples.
Perguntas similares