0188 - Inlocuire Cuvant

De la Universitas MediaWiki

Se dau două cuvinte a şi b şi o propoziţie s formată numai din litere mici ale alfabetului englez şi spaţii.

Cerinţa

Să se modifice s, înlocuind fiecare apariţie a cuvântului a cu cuvântul b.

Date de intrare

Fişierul de intrare inlocuirecuvantin.txt conţine pe prima linie cuvintele a şi b, separate printr-un spaţiu, iar pe a doua linie propoziţia s.

Date de ieșire

Fişierul de ieşire inlocuirecuvantout.txt va conţine pe prima linie propoziţia s, modificată în conformitate cu cerinţa.

Restricţii şi precizări

  • propoziţia s va avea cel mult 100 caractere
  • cuvintele a şi b vor avea cel mult 10 caractere
  • cuvintele sunt formate numai din litere mici ale alfabetului englez

Exemplul 1

inlocuirecuvantin.txt
dar insa
dar nu trebuie dar e mai bine astfel
inlocuirecuvantout.txt
Datele de intrare corespund restrictiilor impuse
insa nu trebuie insa e mai bine astfel


Exemplul 2

inlocuirecuvantin.txt
dar neînsemnând
dar nu trebuie dar e mai bine astfel
inlocuirecuvantout.txt
Datele de intrare nu corespund restrictiilor impuse


Rezolvare

def main():
    # Citirea cuvintelor și a propoziției din fișierul 'inlocuirecuvant.in'
    with open('inlocuirecuvantin.txt', 'r') as f:
        a, b = f.readline().strip().split()
        s = f.readline().strip()

    # Verifică dacă cuvintele și propoziția respectă restricțiile
    if len(a) > 10 or len(b) > 10 or len(s) > 100 or not (a.isalpha()
    and b.isalpha() and all(c.isalpha() or c.isspace() for c in s)):
        result = "Datele de intrare nu corespund restrictiilor impuse"
    else:
        result = "Datele de intrare corespund restrictiilor impuse"

        # Înlocuirea fiecărei apariții a cuvântului a cu cuvântul b în propoziție
        s_noua = s.replace(a, b)
        result += "\n" + s_noua

    # Scrierea rezultatului în fișierul 'inlocuirecuvant.out'
    with open('inlocuirecuvantout.txt', 'w') as f:
        f.write(result)


if __name__ == "__main__":
    main()