Advertisement
Poganu

Curs 15 Iunie

Jun 15th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.48 KB | None | 0 0
  1. ''' Se dau urmatoarele obiecte
  2. Student
  3.    #nume: string
  4.    #prenume: string
  5.    #datNasterii: Data
  6.    #sex: caracter
  7.    #note: lista de numere
  8.    ------------
  9.    __repr__
  10.    __init__
  11.  
  12. Data
  13.    #zi: int
  14.    #luna: int
  15.    #an: int
  16.    ----------
  17.    __init__(z,l,a)
  18.    __repr__()
  19.  
  20. '''
  21. import math
  22. class Student:
  23.     def __init__(self, nume, prenume, datNasterii, sex, note):
  24.         self.nume = nume
  25.         self.prenume = prenume
  26.         self.datNasterii = datNasterii
  27.         self.sex = sex
  28.         self.note = note
  29.  
  30.     def __repr__(self):
  31.         return "(" + nume + ", " + prenume + ", " + datNasterii + ", " + sex + ", " + note + " )"
  32.  
  33.  
  34. class Data:
  35.     def __init__(self, z, l, a):
  36.         self.zi = z #proprietate
  37.         self.luna = l
  38.         self.an = a
  39.  
  40.     def __repr__(self):
  41.         return "(" + str(self.zi) + ", " + str(self.luna) + ", " + str(self.an) + ")"
  42.  
  43.     def __eq__(self, bunica):
  44.         c1 = self.zi == bunica.zi # este o conditie: true sau false
  45.         c2 = self.luna == bunica.luna # tot conditie
  46.         c3 = self.an == bunica.an # conditie
  47.  
  48.         return c1 and c2 and c3
  49.  
  50.     def __lt__(self, scufita):
  51.         # __lt__ = less than
  52.         # __gt__ = greated than
  53.         # __le__ = less than and equal
  54.         # __ge__ = greated then and equal
  55.  
  56.         # facem sortarea datelor prin verificare de conditii
  57.         # intai incepem cu anul, apoi luna, apoi ziua
  58.         if self.an < scufita.an:
  59.             return True
  60.         elif self.an > scufita.an:
  61.             return False
  62.         elif self.luna < scufita.luna:
  63.             return True
  64.         elif self.luna > scufita.luna:
  65.             return False
  66.         elif self.zi < scufita.zi:
  67.             return True
  68.         elif self.zi > scufita.zi:
  69.             return False
  70.         else:
  71.             return False
  72.  
  73.     def __sub__(self, lupu):
  74.         q1 = (self.an - 1) * 365 + (self.luna - 1) * 30 + self.zi
  75.         q2 = (lupu.an - 1) * 365 + (lupu.luna - 1) * 30 + lupu.zi
  76.         dif = abs(q1 - q2)
  77.  
  78.         ani = int(dif // 365)
  79.         luni = int((dif % 365) // 30)
  80.         zile = int(dif % 365 % 30)
  81.         vanatorul = Data(zile, luni, ani)
  82.         return vanatorul
  83.  
  84.  
  85.  
  86. # creem obiecte cu diferite valori
  87. d1 = Data(15, 6, 2020)
  88. print(d1)
  89.  
  90. d2 = Data(15, 8, 2020)
  91. d3 = Data(15, 6, 2020)
  92.  
  93. if d1 != d2:
  94.     print("D1 si D2 sunt diferite")
  95. if d1 == d3:
  96.     print("D1 si D3 sunt egale")
  97. else:
  98.     print("D1 si D3 sunt diferite")
  99.  
  100. # facem o lista de obiecte
  101. lista = [d1, d2, d3]
  102. lista.sort()
  103. print(lista)
  104.  
  105. dNastere = d1 - d2
  106. print(dNastere)
  107.  
  108. # ------------------------------------------
  109. # definim clasa Student
  110. class Student:
  111.     def __init__(self, nm, pm, dNasterii, gen):
  112.         self.nume = nm
  113.         self.prenume = pm
  114.         self.dataNasterii = dNasterii
  115.         self.sex = gen
  116.         self.note = []
  117.         today = Data(15, 6, 2020)
  118.         dif = today - self.dataNasterii
  119.         self.varsta = dif.an
  120.  
  121.     def __repr__(self):
  122.         return ("Nume: " + self.nume + ", Prenume: " + self.prenume + ", Data nasterii: " + str(self.dataNasterii) +
  123.                 ", Sex: " +  self.sex + ", Varsta: " + str(self.varsta))
  124.  
  125.     def __lt__(self, altStudent):
  126.  
  127.         if self.varsta < altStudent.varsta:
  128.             return True
  129.         else:
  130.             return False
  131.  
  132.     def __eq__(self, altStudent):
  133.         if self.nume == altStudent.nume and self.prenume == altStudent.prenume:
  134.             return True
  135.         else:
  136.             return False
  137.  
  138.  
  139. Emilia = Student("Popescu", "Emilia", Data(1, 11, 1993), "feminin")
  140. print(Emilia)
  141.  
  142. dn = Data(18, 12, 1991)
  143. Radu = Student("Popescu", "Radu", dn, "masculin")
  144. print(Radu)
  145.  
  146. # diferenta intre Emilia si Radu
  147. DiferentaVarste = Emilia.varsta - Radu.varsta
  148. print(abs(DiferentaVarste))
  149.  
  150. if Emilia > Radu:
  151.     print("Emilia este mai mare")
  152. else:
  153.     print("Radu este mai mare")
  154.  
  155. if Emilia == Radu:
  156.     print("Student duplicat")
  157. else:
  158.     print("Persoane diferite")
  159.  
  160. cateNote = int(input("Cate note vrei sa introduci pentru Emilia? "))
  161. for i in range(cateNote):
  162.     Emilia.note.append(int(input("Introduceti nota pentru " + Emilia.nume + ": ")))
  163.  
  164. print(Emilia.note)
  165.  
  166. # Tema
  167. # Sa se defineasca clasa Produs (nume, pret, cod_de_bare)
  168. # Sa se implementeze __init__, __eq__ (nume), __lt__ (pret), dupa nume/pret.
  169. # Sa se defineasca clasa AgentVanzare (nume, prenume, produs_pe_care_il_vinde, nr_bucati)
  170. # Sa se implementeze __init__, __repr__, __lt__, __eq__
  171. # Comparatia se face dupa vanzari
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement