Sunteți pe pagina 1din 7

Universitatea Tehnic a Moldovei

Facultatea Informatic,calculatoare i Microelectronic

Lucrarea de laborator Nr.3


Tema: Operaii asupra Fiierelor, Listelor, Seturi i Dicionare. POO. Clase

A efectuat:

st.gr IA-151
Gheorghia Pavel

A verificat:

lect.superior
Lazu Victoria

Chiinu 2016

Tema: Operaii asupra Fiierelor, Listelor, Seturi i Dicionare. POO. Clase

Cerine:

Rezolvai n timpul laboratorului problemele de la punctul I.


Elaborarea interfeei grafice a unui joc elaborat n laboratorul nr.2

I Probleme
1. Scriei un program care s citeasc un fiier ce conine un text. Programul va crea i va
afia pe ecran un dicionar n care vor fi stocate cuvintele i numrul de apariii ale acestora n
textul din fiier. mbuntete programul prin imprimarea cuvintele n ordinea descresctoare
a numrului de apariii.
def problema1():
file=open("text.txt","r+")
wordcount={}
for word in file.read().split():
if word not in wordcount:
wordcount[word] = 1
else:
wordcount[word] += 1
print (sorted(wordcount.items()))

2. Scriei un program care adaug dou numere primite de la utilizator (de la consol) cu
verificare de erori. Scriei codul astfel nct s ceara utilizatorului un numr ntreg i apoi
verific dac ce a introdus utilizatorul e un numr valid. Afieaz un mesaj de eroare n caz c
numrul nu e valid i continu afiarea mesajului ce prompteaz utilizatorul s introduc un
numr pn cnd introduce unul valid. Sfat: Folosii raw_input pentru a citi numrul ca un ir
de caractere i apoi folosii o bucl while pentru a verifica c fiecare caracter este o cifr.
Realizai acelai lucru i pentru al doilea numr i apoi adunai-le.
def problema2():
numere=['0','1','2','3','4','5','6','7','8','9']
while 1:
k=0

n=input("Introduceti primul numar:")


for i in n:
if i in numere:
continue
else:
k=k+1
if k is 0:
break
else:
continue
while 1:
k=0
m=input("Introduceti al doilea numar:")
for i in m:
if i in numere:
continue
else:
k=k+1
if k is 0:
break
else:
continue
s=int(n)+int(m)
print(s)

3. Scriei un program pentru a gsi anagrame ntr-o anumit list de cuvinte. Dou cuvinte
sunt numite anagrame dac un cuvnt poate fi format prin rearanjarea literelor primului cuvnt.
De exemplu, A, C, E, S, T: ACEST = ASCET = CASET = CASTE = CESTA = CETAS =
SECAT = SECTA = SETCA = TEASC = TESAC sunt anagrame.
def anagrama(s):
if s== "":
return[s]
else:
ang=[]
for w in anagrama(s[1:]):
for pos in range(len(w)+1):
ang.append(w[:pos]+s[0]+w[pos:])
return ang

4. Scriei o funcie invertdict care ar interschimba cheile i valorile ntr-un dicionar. Pentru
simplificare, presupunem c toate valorile sunt unice.
def problema4():
d1={"Pavel":1, "Iulian":2, "Timur":3}
d2={}
for x in d1:
d2[d1[x]]=x
print(d2)

5. Scriei un program split.py, care are un numr ntreg n i un nume de fi ier ca argumente n
linia de comand i mparte fiierul n mai multe fiiere mici, cu fiecare avnd n linii.

def problema5():
file=open("text.txt","r+")
s=""
n=int(input("Introduceti numarul de linii"))
j=0
i=0
for line in file:
f=open("text"+str(j)+".txt","w+")
s=s+line
i=i+1
if i==n:
f.write(s)
j=j+1
i=0
s=""

6. Scriei o funcie care ar face liniarizarea unei liste. Aveti o list imbricat (adic list n
list) i creai o list nou.
De ex. liniarizare([ [1, 2, [3, 4] ], [5, 6], 7])
[1, 2, 3, 4, 5, 6, 7]

def problema6():
import itertools
lista = [[1,2,3],[4,5,6], [7], [8,9]]
listafinal = list(itertools.chain.from_iterable(lista))
print(listafinal)

7. Scriei o funcie vectorizati care ia o funcie f i returneaz o nou funcie, care ia o list ca
argument i solicit (cheam) f pentru fiecare element i returneaz rezultatul ca o list.
De exemplu:
import math
def lapatrat(a):
return a*a
def vectorizati(func):
def vec(lista):
n=0
for i in lista:
lista[n]=func(i)
n+=1
print(lista)
return vec

II Elaborarea interfeei grafice pentru jocurile: Jocul Bila Misterioas i/sau


Ghicete numrul
Elaborai un program Python ce ar simula jocul Mystic 8 Ball.
import random
import time

from tkinter import *


from PIL import ImageTk, Image
def numar_precizie(numar):
if numar==0:
return "Da probabil"
elif numar==1:
return "Definitiv NU"
elif numar==2:
return "Unde l-ai lsat."
elif numar==3:
return "n Africa."
elif numar==4:
return "Ud."
elif numar==5:
return "Caatare se poate de gindit."
elif numar==6:
return "Bem un ceai si decidem."
elif numar==7:
return "Repede la veceu si iti raspund."
elif numar==8:
return "Nustiu! Nu ma intreba!"
elif numar==9:
return "Data viitoare, acum nu sunt concentrat."
elif numar==10:
return "Da tu ma crezi?"
fnt=Tk()
en1=Entry(fnt,width=30)
en1.pack()
im1= ImageTk.PhotoImage(Image.open("img.png"))
panel =Label(fnt, image = im1)
panel.pack()
en2=Label(fnt)
en2.pack()
en2.place(x=190, y=240)
l1=Label(fnt,text="Introduceti Intrebarea")
l1.pack()
l1.place(x=25,y=1)
def mystical_ball():
if en1.get()=="":
en2['text']="Ati uitat sa introduceti intrebarea"
else:
aleator=random.randrange(0,10)
raspuns=numar_precizie(aleator)
en2['text']=raspuns
but=Button(fnt,text="Nisca din loc!", command=mystical_ball)
but.pack()
but.place(x=400,y=0)

fnt.mainloop()

Concluzie:
Pe parcursul acestei lucrri de laborator m-am familiarizat cu instruciunile de baza ale
limbajului Python. De asemenea am utilizat pachetul de funcii Time i Random.
Lucrarea dat mi-a oferit o nelegere mai bun a structurii programelor n Python i eficien ei
lui n faa altor limbaje.