1. Scrieți un program care să determine grupurile de cuvinte dintr-un fișier text care p-rimează
între ele = au aceleași ultime p-litere (p citit de la tastatură). Numele fișierului de intrare se
va citi de la tastatură, iar grupurile se vor scrie în fișierul text “rime.txt”, câte un grup pe o
linie, în ordine descrescătoare în raport cu numărul de elemente din grup. Cuvintele din
fiecare grup vor fi sortate lexicografic descrescător.
De exemplu, pentru p=2 și fișierul:
ana dana
mere pere prune
bune
banana si gutui amare are
rime.txt va fi:
pere mere are amare
dana banana ana
prune bune
si
gutui
2. În fișierul text “test.in” se află testul unui elev de clasa a II-a la matematică, conținând 9
înmulțiri scrise pe rânduri distincte. Un calcul corect este notat cu un punct, iar unul
incorect cu 0 puncte. Să se realizeze un program care să evalueze testul dat, astfel: în dreptul
fiecărui calcul corect se va scrie mesajul ‘Corect’, iar în dreptul fiecărui calcul greșit se va
scrie mesajul ‘Gresit’ și rezultatul corect, iar la final se va scrie nota (un punct se acordă
din oficiu!). Rezultatul evaluării testului se va scrie în fișierul text “test.out”.
test.in
3*4=11
2*10=20
5*5=24
7*4=28
2*6=12
10*10=100
3*9=27
6*7=33
0*9=1
test.out
3*4=11 Gresit 12
2*10=20 Corect
5*5=24 Gresit 25
7*4=28 Corect
2*6=12 Corect
10*10=100 Corect
3*9=27 Corect
6*7=33 Gresit 42
0*9=1 Gresit 0
Nota 6
3. În fișierul text “date.in” sunt memorate, pe linii, numele și prenumele studenților dintr-o
grupă. Să se scrie un program care să genereze conturile de email ale studenților și
parolele temporare, după care să le salveze în fișierul text “date.out”. Contul de email al
unui student va fi de forma [email protected], iar parola temporară va fi de
forma o literă mare, 3 litere mici și 4 cifre. Se va scrie o funcție care generează parola
folosind funcții din modulul random https://docs.python.org/3/library/random.html
(randint, choice, choices pentru constantele string.ascii_uppercase, string.digits etc din
modulul string https://docs.python.org/3/library/string.html )
date.in
Bobocea Andrei
Marinescu Ciprian
Vasile Dragos
date.out (exemplu, parolele sunt generate aleator)
[email protected],Wadf2133
[email protected],Qsdd2111
[email protected],Bbyt7690
Răspunsuri la întrebare
Răspuns:
### 1. ###
fisier = input('Fișier: ')
p = int(input('p: '))
with open(fisier) as fisier_in:
text = fisier_in.read()
harta_grup = dict()
for cuvant in text.split():
rima = cuvant[-p:]
if rima in harta_grup:
harta_grup[rima].append(cuvant)
else:
harta_grup[rima] = [cuvant]
with open('rima.txt', 'w') as fisier_out:
for grup in sorted(harta_grup.values(), key = lambda pereche: len(pereche), reverse = True):
fisier_out.write(' '.join(sorted(grup, reverse = True)) + '\n')
### 2. ###
with open('test.in') as fisier_in:
with open('test.out', 'w') as fisier_out:
nota = 1
for rand in fisier_in:
inmultire, rezultat = rand.split('=')
operanzi = inmultire.split('*')
produs = int(operanzi[0]) * int(operanzi[1])
corect = int(rezultat) == produs
nota += corect
fisier_out.write(f"{rand.strip()} {'Corect' if corect else f'Gresit {produs}'}\n")
fisier_out.write(f'Nota {nota}\n')
### 3. ###
import random
import string
random.seed()
def parola():
return (
random.choice(string.ascii_uppercase) +
''.join(random.choices(string.ascii_lowercase, k = 3)) +
str(random.randint(1000, 9999))
)
with open('date.in') as fisier_in:
with open('date.out', 'w') as fisier_out:
for rand in fisier_in:
nume = rand.lower().split()
fisier_out.write(f'{nume[1]}.{nume[0]}@s.unibuc.ro,{parola()}\n')
Explicație:
Data viitoare te rog să postezi exerciţiile separat. Asa postarea soluţiilor trebuie amânată până terminăm cu toate, pentru că site-ul permite doar un singur răspuns de la un membru și și la ăla blochează editarea după o vreme.