Examples ~~~~~~~~ .. _intr_examples: Math Expressions and Assignment ------------------------------- .. code-block:: python3 :caption: Values of class :class:`int`: 3, 55, -2, 0 .. code-block:: python3 :caption: Values of class :class:`float`: 5.3, 572.23521, -0.352, 7e-3 .. code-block:: pycon :caption: Arithmetic Operadors: >>> 3.5 + 4 7.5 >>> 3 - 4.22 -1.22 >>> 3 * 4 # product 12 >>> 7/2 # division 3.5 >>> 7//2 # quotient of the integer division 3 >>> 7%2 # remainder of the integer division 1 >>> 7**2 # power or exponent 49 .. code-block:: pycon :caption: Calling built-in functions (pre-defined functions): >>> abs(3) # absolute value 3 >>> abs(-3) 3 >>> round(3.52359, 4) # rounding 3.5236 >>> round(3.05, 1) 3.0 >>> round(3.15, 1) 3.1 >>> round(3.25, 1) 3.2 >>> round(3.35, 1) 3.4 >>> round(3.45, 1) 3.5 >>> round(3.55, 1) 3.5 >>> round(3.65, 1) 3.6 >>> round(3.75, 1) 3.8 >>> round(3.85, 1) 3.9 >>> round(3.95, 1) 4.0 >>> max(5, -3, 1) 5 >>> min(5, abs(-3), 1) 1 >>> int('4') # converting to int 4 >>> int(3.52) 3 >>> float('3.66') # converting to float 3.66 >>> float(4) 4.0 >>> type(3) # type or class of an object >>> type(3.0) >>> type('3.0') .. code-block:: pycon :caption: Standard output: >>> print(10) 10 >>> x = 3 >>> print('Results', end=": "); print(x-10, x, x+10, sep="\t") Results: -7 3 13 .. code-block:: pycon :caption: Importing a module (or library): >>> import math .. code-block:: pycon :caption: Calling a function from a module: # What is the length of the hipotenuse for a triangle whose cathetus are 3.0 and 4.0 ? >>> math.sqrt(3.0**2 + 4.0**2) 5.0 # What is the radius of the cirle whose area is 2.0 ? >>> math.sqrt(2.0/math.pi) 0.7978845608028654 >>> math.pi*math.sqrt(2.0/math.pi)**2 2.0 .. code-block:: pycon :caption: Assignment: >>> edat = 35 >>> edat 35 >>> edat = edat + 1 >>> edat 36 >>> edat += 1 >>> edat 37 >>> area = 2.0 >>> math.pi*math.sqrt(area/math.pi)**2 2.0 .. code-block:: pycon :caption: Multiple Single Assignment: x = y = z = 0 .. code-block:: pycon :caption: Multiple Assignment: c1, c2 = math.sqrt(c1**2 + c2**2) .. _func_examples: Functions --------- .. code-block:: python3 :caption: Function definition: def hipotenuse(c1, c2): lh = (c1**2 + c2**2)**0.5 return lh def quo_rem(n, d): return n//d, n%d .. code-block:: pycon :caption: Function call: >>> c1, c2 = 3.0, 4.0 >>> hipotenuse(c1, c2) 5.0 >>> q1, r1 = quo_rem(34, 3) # 34 == 3*quotient + remainder (11, 1) .. code-block:: pycon :caption: Doctests: >>> import doctest >>> doctest.testfile("exemple_test.txt", verbose=True) From linux terminal that would be: $ python3 -m doctest joc-de-proves.txt -f .. _cond_examples: Conditionals ------------ .. code-block:: python3 :caption: Boolean values: True, False .. code-block:: pycon :caption: Relational Operadors: >>> 30 > 5 # greater than True >>> 3 >= 3 # greater than or equal to True >>> 3 < 5 # less than True >>> 3 <= 3 # less than or equal to True >>> 3 == 5 # equal to False >>> 3 != 5 # different than True .. code-block:: pycon :caption: Logic operators: >>> x = 5 >>> y = 10 >>> x > y or y == 10 # disjunction True >>> x > y and y == 10 # conjunction False >>> not(x > y) # negation True .. code-block:: python3 :caption: Simple conditional: if db < 55: soroll = 'normal' else: soroll = 'tall' .. code-block:: python3 :caption: Simple conditional without :code:`else`: if age > 65: discount = 5 .. code-block:: python3 :caption: Multi-Conditional: if x >= 9.0: grade = 'A' elif 6.0 <= x < 9.0: grade = 'B' elif 5.0 <= x < 6.0: grade = 'C' else: grade = 'D' .. _str_examples: Strings ------- .. code-block:: python3 :caption: Values of the class :class:`str`: '', 'hola', "hola", 'AeIoU', "hola i adeu" .. code-block:: pycon :caption: Built-in string funcions: >>> len('longitud') # longitud 8 >>> str(352) # conversió a str '352' >>> str(3.52) '3.52' >>> print("el resultat és") el resultat és .. code-block:: pycon :caption: Operacions d'strings. >>> 'hola' + 'que tal' # concatenació 'holaque tal' >>> s = 'fonaments' >>> s[2] # indexació 'n' >>> s[-1] 's' >>> s[3:7] # talls o llesques(slices) 'amen' >>> 'a' in s # pertinença True >>> 'amen' in s True >>> 'ae' in s False .. code-block:: pycon :caption: Mètodes d'strings: :meth:`~str.count`. >>> numn = s.count('n') # comptar aparicions d'elements >>> numn 2 .. code-block:: pycon :caption: Mètodes d'strings: :meth:`~str.replace`. >>> s2 = s.replace('n','x') # substituir aparicions d'un str per un altre >>> s2 'foxamexts' >>> s3 = s.replace('n','') >>> s3 'foamets' >>> s3 = s.replace('aments','tdelgat') >>> s3 'fontdelgat' .. code-block:: pycon :caption: Mètodes d'strings: :meth:`~str.find`. >>> pos = s3.find('t') # trobar posició de la primera aparició >>> pos 3 >>> pos = s3.find('x') >>> pos -1 .. code-block:: pycon :caption: Mètodes d'strings: :meth:`~str.upper`, :meth:`~str.lower`. >>> s4 = 'hola' >>> s5 = s4.upper() # conversió a majúscules >>> s5 'HOLA' >>> s6 = s5.lower() # conversió a minúscules >>> s6 'hola' .. code-block:: pycon :caption: Mètodes d'strings: :meth:`~str.isupper`, :meth:`~str.islower`, :meth:`~str.isdigit`, :meth:`~str.isalpha`, :meth:`~str.isspace`. >>> s5.isupper() # comprovació si és majúscula True >>> s5[0].isupper() True >>> s6[0].islower() # comprovació si és minúscula True >>> s7 = '123,un,dos,tres' >>> s7[0].isdigit() # comprovació si és dígit True >>> s7[5].isalpha() # comprovació si és alfabètic True >>> ' \t\n'.isspace() True .. _list_examples: Lists ----- .. code-block:: pycon :caption: Funcions predefinides. >>> max([5,3,1,22,7,0]) # màxim 22 >>> min([5,3,1,22,7,0]) # mínim 0 >>> sum([5,3,1,22,7,0]) # suma d'elements 38 >>> len([5,3,1,22,7,0]) # longitud 6 >>> list('hola') # conversió a list ['h', 'o', 'l', 'a'] .. code-block:: pycon :caption: Operacions bàsiques: concatenació, consulta i modificació d'un element, pertinença, llesques. >>> [1,2] + [3,5,63] # concatenació [1, 2, 3, 5, 63] >>> ll = [30,20,10,40,50] >>> ll[2] # indexació 10 >>> ll[-1] 50 >>> ll[3] = 100 # mutabilitat >>> ll [30, 20, 10, 100, 50] >>> ll2 = [[2,4,6],[10,30,50],['quatre','cinc']] >>> ll2[1][2] # indexació de llistes imbricades 50 >>> ll2[2][0][0] 'q' >>> ll3 = [100, 20, 10, 40, 30, 50] >>> 10 in ll3 # pertinença True >>> 70 in ll3 False >>> ll3[1:4] # talls o llesques(slices) [20, 10, 40] >>> ll3nova = ll3[:] # còpia de llistes sense efecte àlies >>> ll3nova [100, 20, 10, 40, 30, 50] .. code-block:: pycon :caption: Mètodes. >>> ll4 = [0, 3, 3, 6] >>> num3 = ll4.count(3) # comptar aparicions d'elements >>> num3 2 >>> posició = ll4.index(3) # trobar posició de la primera aparició >>> posició 1 .. code-block:: pycon :caption: Mètodes modificadors. >>> ll4 = [0, 3, 3, 6] >>> ll4.append(10) # afegir elements al final >>> ll4 [0, 3, 3, 6, 10] >>> ll5 = [4, 52, 32, 12, 0] >>> ll5.sort() # ordenar elements amb ordre ascendent >>> ll5 [0, 4, 12, 32, 52] >>> ll5.sort(reverse=True) # ordenar elements amb order descendent >>> ll5 [52, 32, 12, 4, 0] >>> ll6 = [1, 2, 3, 4] >>> ll6.reverse() # capgirar una llista >>> ll6 [4, 3, 2, 1] .. code-block:: pycon :caption: Mètode d'strings que retorna una llista: :meth:`~str.split`. >>> s4 = 'qui roba un ou, roba un bou' >>> ll = s4.split() # str a list separant per blancs >>> ll ['qui', 'roba', 'un', 'ou,', 'roba', 'un', 'bou'] >>> s5 = '35:523:True:baix' >>> ll2 = s5.split(':') # str a list amb separador >>> ll2 ['35', '523', 'True', 'baix'] .. code-block:: pycon :caption: Mètode d'strings que rep una llista: :meth:`~str.join`. >>> ll3 = ['qui','roba','un','ou'] >>> s6 = ''.join(ll3) # list a str sense separador >>> s6 'quirobaunou' >>> s7 = '-'.join(ll3) # list a str amb separador >>> s7 'qui-roba-un-ou' .. code-block:: pycon :caption: Recorregut dels elements d'una llista. >>> ll = [1,5,10] >>> for element in ll: ... print(element) 1 5 10 .. code-block:: pycon :caption: Recorregut dels elements d'un string. >>> s = 'hola' >>> for caracter in s: ... print(caracter) h o l a .. code-block:: pycon :caption: La classe :class:`range`. # convertim el resultat de range a llista només per visualitzar-ho >>> list(range(5)) [0, 1, 2, 3, 4] >>> list(range(2,5)) [2, 3, 4] >>> list(range(2,12,2)) [2, 4, 6, 8, 10] .. code-block:: pycon :caption: Recorregut dels índexs d'una llista. >>> s = 'hola' >>> for i in range(len(s)): ... print(s[i]) h o l a >>> ll = [1,5,10] >>> for i in range(len(ll)): ... print(ll[i]) 1 5 10 .. _tupl_examples: Tuples ------ .. code-block:: pycon :caption: Construcció, consulta d'un element, concatenació. >>> tup = ('anna', 10) >>> tup[0] # indexació 'anna' >>> tup + (35,) # concatenació i representació de tuples d'un sol element ('anna', 10, 35) .. _dict_examples: Dictionnaries ------------- .. code-block:: pycon :caption: Construcció, consulta del valor d'una clau, modificació del valor d'una clau, pertinença d'una clau. >>> d = {'A':10, 'B':35, 'C':23} >>> d2 = {'353':[10,30,35], '532':[32]} >>> d['C'] # accés a través de la clau 23 >>> d2['532'].append(50) >>> d2 {'353':[10,30,35], '532':[32,50]} >>> d['B'] = d['B'] + 1 # mutabilitat >>> d['B'] 36 >>> 'A' in d # operador in per comprovar si hi ha una clau True >>> 10 in d False .. code-block:: pycon :caption: Còpia de diccionaris. >>> d3 = {'353':[10,30,35], '532':[32]} >>> d3nou = d3.copy() # cópia de diccionaris sense efecte àlies >>> d3nou {'353':[10,30,35], '532':[32]} .. code-block:: pycon :caption: Recorregut de les claus d'un diccionari. >>> dicc = {'A':10,'E':53,'I':5} >>> for clau in dicc: ... print(clau,dicc[clau]) A 10 E 53 I 5 .. _file_examples: Files ----- .. code-block:: python3 :caption: Sentència *with*, funció *open*, recorregut línia a línia, escriure en un fitxer. with open('dades.txt','r') as f: # obrir fitxer per lectura for linia in f: # iterar per cada línia del fitxer .... # obrir més d'un fitxer alhora, un per lectura i un altre per escriptura with open('dades.txt','r') as f, open('resultat.txt','w') as g: for linia in f: .... g.write('string') # escriure a un fitxer .. _whil_examples: While ----- .. code-block:: pycon :caption: Sentència *while*. >>> i = 1 >>> while i<=4: ... print(i) ... i = i + 1 1 2 3 4