Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.22 KB | None | 0 0
  1. #Scrivere una funzione ricorsiva che, data una lista di numeri interi (positivi o
  2. #negativi), restituisce come risultato la somma dei valori pari contenuti nella lista. Se la lista non
  3. #contiene valori pari, la funzione restituisce 0.
  4.  
  5. def sumIntList(L,sum):
  6. #@ param L: list; integer list
  7. #@ param sum: integer
  8. #@ return: integer
  9.  
  10. #caso base
  11. if len(L) == 1:
  12. if L[0] % 2 == 0:
  13. sum = sum + L[0]
  14. return sum
  15. if L[0] % 2 == 1:
  16. return sum
  17. #cso generale
  18. if len(L) > 1:
  19. if L[0] % 2 == 0:
  20. sum = sum + L[0]
  21. L = L[1:]
  22. return sumIntList(L,sum)
  23. if L[0] % 2 == 1:
  24. L = L[1:]
  25. return sumIntList(L,sum)
  26.  
  27. #Si consideri una classe Quadrato, che intende rappresentare tutti i possibili quadrati di
  28. #lato l. La classe ha come attributo la lunghezza del lato l, e come metodi i metodi Area() e
  29. #Perimetro() che restituiscono, rispettivamente, l'area e il perimetro del quadrato. Dare la definizione
  30. #completa della classe, che include la definizione del suo costruttore e dei due metodi indicati.
  31. #Fornire, inoltre, alcuni frammenti di codice Python che esemplificano l'uso della classe (creazione
  32. #di un oggetto "quadrato", calcolo della sua area o perimetro).
  33.  
  34. class Quadrato:
  35. def __init__(self,lato):
  36. #@ param lato: integer
  37. self.l = lato
  38. def Area(self):
  39. area = self.l * self. l
  40. return area
  41. def Perimetro(self):
  42. perimeter = (self.l * 4)
  43. return perimeter
  44.  
  45. #Dati i seguenti due numeri:
  46. #x = 1100110 (in base 2)
  47. #y = 2012 (in base 3)
  48. #determinare quale dei due ? maggiore dell'altro
  49.  
  50. # x=(1*2^6)+(1*2^5)+(0*2^4)+(0*2^3)+(1*2^2)+(1*2^1)+(0*2^0)=64+32+4+2= 102
  51. # y=(2*3^3)+(0*3^2)+(1*3^1)+(2*3^0)=54+3+2= 59
  52. # x > y
  53.  
  54. #Scrivere una funzione ricorsiva che, data una lista L di stringhe, restituisce come
  55. #risultato una stringa formata dalla concatenazione di tutte le stringhe in L aventi lunghezza dispari.
  56. #Se la lista non contiene stringhe di lunghezza dispari, la funzione restituisce la stringa vuota.
  57.  
  58. def oddStrList(L,oddList):
  59. #@ param L: list
  60. #@ param oddList: list
  61. #@ return: list
  62.  
  63. #caso base
  64. if len(L) == 1:
  65. if len(L[0]) % 2 == 0:
  66. return oddList
  67. if len(L[0]) % 2 == 1:
  68. oddList.append(L[0])
  69. return oddList
  70. #caso generale
  71. if len(L) > 1:
  72. if len(L[0]) % 2 == 0:
  73. L = L[1:]
  74. return oddStrList(L,oddList)
  75. if len(L[0]) % 2 == 1:
  76. oddList.append(L[0])
  77. L = L[1:]
  78. return oddStrList(L,oddList)
  79.  
  80. #Si consideri una classe Triangolo, che intende rappresentare tutti i possibili triangoli
  81. #equilateri di lato l. La classe ha come attributo la lunghezza del lato l, e come metodi i metodi
  82. #Area() e Perimetro() che restituiscono, rispettivamente, l'area e il perimetro del triangolo. Dare la
  83. #definizione completa della classe, che include la definizione del suo costruttore e dei due metodi
  84. #indicati. Fornire, inoltre, alcuni frammenti di codice Python che esemplificano l'uso della classe
  85. #(creazione di un oggetto "triangolo", calcolo della sua area o perimetro).
  86.  
  87. class Triangolo:
  88. def __init__(self,lato):
  89. #@ param lato: integer
  90. self.l = lato
  91. def Area(self):
  92. altezza = (self.l * sqrt(3)) / 2
  93. area = (self.l * altezza) / 2
  94. return area
  95. def Perimetro(self):
  96. perimetro = self.l * 3
  97. return perimetro
  98.  
  99. #Scrivere una funzione ricorsiva che, data una stringa s, restituisce come
  100. #risultato una stringa formata da tutti i caratteri di s separati tra loro da uno spazio bianco.
  101.  
  102. def newStr(s,newS):
  103. #@ param s: string
  104. #@ param newS: string
  105. #@ return: string
  106.  
  107. #caso base
  108. if len(s) == 1:
  109. if newS == '':
  110. return s
  111. else:
  112. newS = newS + ' ' + s[0]
  113. return newS
  114. #caso generale
  115. if len(s) > 1:
  116. newS = newS + ' ' + s[0]
  117. s = s[1:]
  118. return newStr(s,newS)
  119.  
  120. #Convertire in base 2 i seguenti numeri
  121. # a = 29; b = 13
  122. # a: 29:2=14 resto=1 14:2=7 resto=0 7:2=3 resto=1 3:2=1 resto=1 1:2=0 resto=1
  123. # a=(11101) in base 2
  124. # b: 13:2=6 resto=1 6:2=3 resto=0 3:2=1 resto=1 1:2=0 resto=1
  125. # b=(1101) in base 2
  126.  
  127. #Definire in Python una classe Iterator che prende come parametro del
  128. #costruttore una lista qualsiasi. L’Iterator permette di attraversare la
  129. #lista in entrambe le direzioni, aggiungere e rimuovere un elemento subito
  130. #dopo la posizione in cui si trova lungo la lista e inoltre tiene traccia della
  131. #posizione attuale nella lista. I metodi devono essere:
  132. #(a) hasNext : ritorna vero se esiste un elemento dopo la posizione attuale, falso altrimenti
  133. #(b) hasPrevious: ritorna vero se esiste un elemento prima della posizione attuale, falso altrimenti
  134. #(c) next: ritorna l’elemento successivo alla posizione attuale
  135. #(d) previous: ritorna l’elemento precedente alla posizione attuale
  136. #(e) add: aggiunge un elemento subito dopo la posizione attuale
  137. #(f) remove: rimuove l’elemento subito dopo la posizione attuale e lo ritorna
  138.  
  139.  
  140. class Iterator:
  141. def __init__(self,lista):
  142. #@ param lista: list
  143. self.lista = lista
  144. self.pos = 0
  145. def hasNext(self):
  146. #@ return: boolean
  147. if self.pos + 1 < len(self.lista):
  148. return true
  149. def hasPrevious(self):
  150. #@ return: boolean
  151. if self.pos - 1 >= 0:
  152. return true
  153. def next(self):
  154. #@ return: object
  155. if self.pos.hasNext():
  156. self.pos = self.pos + 1
  157. return self.lista[self.pos]
  158. def previous(self):
  159. #@ return: object
  160. if self.pos.hasPrevious():
  161. self.pos = self.pos - 1
  162. return self.lista[self.pos]
  163. def add(self,elem):
  164. #@ param elem: object
  165. self.lista = self.lista.insert(self.lista[self.pos + 1],elem)
  166. def remove(self):
  167. #@ return: object
  168. if self.lista[self.pos].hasNext():
  169. self.pos = self.pos + 1
  170. elem = self.lista[self.pos]
  171. self.lista.pop(self.lista[self.pos])
  172. return elem
  173.  
  174. #Scrivere una funzione ricorsiva in Python che, dati due interi positivi a e b, calcola a^b
  175.  
  176.  
  177. def potenza(a,b,p=0):
  178. #@ param a: integer
  179. #@ param b: integer
  180. #@ param p: integer
  181. #@ return: integer
  182.  
  183. #caso base
  184. if b == 1:
  185. return a
  186. if b == 0:
  187. return 1
  188.  
  189. #caso generale
  190. if b >= 2 and p == 0:
  191. p = a
  192. a = a * a
  193. b = b - 1
  194. return potenza(a,b,p)
  195. if b >= 2:
  196. a = p * a
  197. b = b - 1
  198. return potenza(a,b,p)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement