1866 - Pro Sir: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerința == Se consideră fișierul prosirin.txt care conține pe primul rând un text format din cel mult 200 de caractere litere mici și spații. Cuvintele din text sunt separate prin unul sau mai multe spații. Să se modifice textul citit din fișier prin înlocuirea ultimei litere a fiecărui cuvânt cu cifra 5. == Date de intrare == Fișierul de intrare prosirin.txt conține pe prima linie șirul de caractere. == Date de ieșire == Dacă datele sunt introduse corec...
 
No edit summary
Line 23: Line 23:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
# 1866 prosir
def validare(sir_caractere):
    if len(sir_caractere) > 200:
        raise ValueError
    for caracter in sir_caractere:
        if caracter < 'a' or caracter > 'z':
            if caracter != ' ' and caracter != '.':
                raise ValueError
    if sir_caractere[len(sir_caractere)-1] != '.':
        raise ValueError
    file_out.write("Datele de intrare corespund restrictiilor impuse\n")
def prosir(sir_caractere):
    sir_nou = []
    for index in range(len(sir_caractere) - 1):
        if (sir_caractere[index] != ' ' and sir_caractere[index + 1] == ' ') or sir_caractere[index+1] == '.':
            sir_nou.append('5')
        else:
            sir_nou.append(sir_caractere[index])
    sir_nou.append(".")
    for caracter in sir_nou:
        file_out.write(caracter)
if __name__ == '__main__':
    file_in = open("prosirin.txt", "r")
    file_out = open("prosirout.txt", "w")
    try:
        sir = file_in.readline()
        validare(sir)
        prosir(sir)
    except ValueError:
        file_out.write("Datele de intrare nu corespund restrictiilor impuse")
    except IndexError:
        file_out.write("Datele de intrare nu corespund restrictiilor impuse")
</syntaxhighlight>

Revision as of 19:06, 13 April 2023

Cerința

Se consideră fișierul prosirin.txt care conține pe primul rând un text format din cel mult 200 de caractere litere mici și spații. Cuvintele din text sunt separate prin unul sau mai multe spații. Să se modifice textul citit din fișier prin înlocuirea ultimei litere a fiecărui cuvânt cu cifra 5.

Date de intrare

Fișierul de intrare prosirin.txt conține pe prima linie șirul de caractere.

Date de ieșire

Dacă datele sunt introduse corect, în fișierul de ieșire prosirout.txt se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa șirul modificat conform cerinței. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse"

Restricții și precizări

  • lungimea șirului citit este maximum 200
  • ultimul cuvânt din text se termină cu caracterul '.'

Exemplu 1

prosirin.txt
ana are multe mare si o gutuie.
prosirout.txt
Datele introduse corespund restricțiilor impuse.
an5 ar5 mult5 mar5 s5 5 gutui5.


Exemplu 2

prosirin.txt
ana are $% 567
prosirout.txt
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

<syntaxhighlight lang="python" line>

  1. 1866 prosir

def validare(sir_caractere):

   if len(sir_caractere) > 200:
       raise ValueError
   for caracter in sir_caractere:
       if caracter < 'a' or caracter > 'z':
           if caracter != ' ' and caracter != '.':
               raise ValueError
   if sir_caractere[len(sir_caractere)-1] != '.':
       raise ValueError
   file_out.write("Datele de intrare corespund restrictiilor impuse\n")


def prosir(sir_caractere):

   sir_nou = []
   for index in range(len(sir_caractere) - 1):
       if (sir_caractere[index] != ' ' and sir_caractere[index + 1] == ' ') or sir_caractere[index+1] == '.':
           sir_nou.append('5')
       else:
           sir_nou.append(sir_caractere[index])
   sir_nou.append(".")
   for caracter in sir_nou:
       file_out.write(caracter)


if __name__ == '__main__':

   file_in = open("prosirin.txt", "r")
   file_out = open("prosirout.txt", "w")
   try:
       sir = file_in.readline()
       validare(sir)
       prosir(sir)
   except ValueError:
       file_out.write("Datele de intrare nu corespund restrictiilor impuse")
   except IndexError:
       file_out.write("Datele de intrare nu corespund restrictiilor impuse")

</syntaxhighlight>