Diferència entre revisions de la pàgina «ASIX-M3-UF1-Banc de Solucions»

De wikiserver
Dreceres ràpides: navegació, cerca
(A2.4 Exercicis estructura iterativa)
 
(126 revisions intermèdies per 2 usuaris que no es mostren)
Línia 7: Línia 7:
  
 
#Entrada de dades
 
#Entrada de dades
num1 = int(input("Introudeix un número: "))
+
num1 = int(input("Introdueix un número: "))
num2 = int(input("Introudeix un altre número: "))
+
num2 = int(input("Introdueix un altre número: "))
  
 
# Operacions i resultats
 
# Operacions i resultats
Línia 17: Línia 17:
 
resultat = num1 * num2
 
resultat = num1 * num2
 
print("EL resultat de la multiplicación és: ",resultat)
 
print("EL resultat de la multiplicación és: ",resultat)
resultat = num1 / num2
+
resultat = num1 // num2
 
print("EL resultat de la división és: ",resultat)
 
print("EL resultat de la división és: ",resultat)
 
resultat = num1 ** num2
 
resultat = num1 ** num2
Línia 305: Línia 305:
  
 
num1 = int(input("Introdueix un valor enter: "))
 
num1 = int(input("Introdueix un valor enter: "))
 +
operacio = input("Introdueix l'operació ('+' , '-' , '*' , '/' , '//' , '%': ")
 
num2 = int(input("Introdueix un altre valor enter: "))
 
num2 = int(input("Introdueix un altre valor enter: "))
operacio = input("Introdueix l'operació ('+' , '-' , '*' , '/' , '//' , '%': ")
+
 
  
 
# Operació  
 
# Operació  
Línia 335: Línia 336:
 
<!--
 
<!--
 
<source lang="phyton">
 
<source lang="phyton">
print("Programa dígits d'un número")
+
print("Programa bits per representar en binari un número")
  
 
# Entrada número
 
# Entrada número
Línia 425: Línia 426:
 
print("Programa xifres d'un número")         
 
print("Programa xifres d'un número")         
  
# Determinar majoria d'edat
+
# Entrada de dades
  
 
numero = input("Introdueix un número: ")
 
numero = input("Introdueix un número: ")
Línia 445: Línia 446:
 
     print("El número %d és de %d xifres" %(numero,xifres))    # Xifres del número
 
     print("El número %d és de %d xifres" %(numero,xifres))    # Xifres del número
 
   else:  
 
   else:  
     print("El número %d no és dins del rang 0-10000" %numero) # Número fora del rang  
+
     print("El número %d no és dins del rang [0..9999]" %numero) # Número fora del rang  
 
except ValueError:         
 
except ValueError:         
 
   print("La entrada és incorrecte: escriu un número enter!")  # No és un enter
 
   print("La entrada és incorrecte: escriu un número enter!")  # No és un enter
Línia 865: Línia 866:
 
</pre>
 
</pre>
 
<!--
 
<!--
 +
<source lang="python">
 
print("Quadrat n x n d'asteriscos")
 
print("Quadrat n x n d'asteriscos")
  
Línia 872: Línia 874:
 
</source>
 
</source>
 
-->
 
-->
 +
<!--
 +
<source lang="python">
 +
print("Quadrat n x n d'asteriscos")
 +
 +
num = int(input("Introdueix número d'asteriscos: "))
 +
for _ in range(num):
 +
  for _ in range(num):
 +
    print("* ")
 +
  print("")
 +
</source>
 +
-->
 +
  
 
9. Com l'anterior però fent un quadrat buit. Per exemple si l'usuari introdueix el valor 5, imprimirà:
 
9. Com l'anterior però fent un quadrat buit. Per exemple si l'usuari introdueix el valor 5, imprimirà:
Línia 882: Línia 896:
 
</pre>
 
</pre>
 
<!--
 
<!--
 +
<source lang="python">
 
print("Quadrat n x n d'asteriscos buit")
 
print("Quadrat n x n d'asteriscos buit")
  
Línia 892: Línia 907:
 
     print("  "*(num-2), end='')
 
     print("  "*(num-2), end='')
 
     print("*")
 
     print("*")
 +
</source>
 +
-->
 +
<!--
 +
<source lang="python">
 +
print("Quadrat n x n d'asteriscos")
 +
 +
num = int(input("Introdueix número d'asteriscos: "))
 +
for i in range(1,num+1):
 +
  for j in range(1,num+1):
 +
    if i==1 or i==num or j==1 or j==num:
 +
      print("*", end=" " )
 +
    else:
 +
      print(" ", end=" " )
 +
  print("")
 
</source>
 
</source>
 
-->
 
-->
Línia 904: Línia 933:
 
</pre>
 
</pre>
 
<!--
 
<!--
 +
<source lang="python">
 
print("Dibuix amb asteriscos de num línies")
 
print("Dibuix amb asteriscos de num línies")
  
Línia 921: Línia 951:
 
</pre>
 
</pre>
 
<!--
 
<!--
 +
<source lang="python">
 
print("Dibuix amb asteriscos de num línies")
 
print("Dibuix amb asteriscos de num línies")
  
Línia 1.024: Línia 1.055:
 
<!--
 
<!--
 
<source lang="python">
 
<source lang="python">
 +
#triangles
 +
 
print("Dibuix amb números consecutius decreixents")
 
print("Dibuix amb números consecutius decreixents")
  
Línia 1.029: Línia 1.062:
 
for i in range(1,num+1):
 
for i in range(1,num+1):
 
   for j in range(1,num-i+1):
 
   for j in range(1,num-i+1):
     print(" ", end='')
+
     print(" ", end=' ')
 
   for j in range(i,0,-1):
 
   for j in range(i,0,-1):
     print(j, end='')
+
     print(j, end=' ')
 
   print("")
 
   print("")
</source>
+
 
-->
+
#quadrat
  
17. Escriu un programa que llegeixi un número imparell i mostri per pantalla el següent:
+
print("Dibuix amb números consecutius decreixents")
 +
 
 +
num = int(input("Introdueix un número enter positiu: "))
 +
for i in range(1,num+1):
 +
  for j in range(num,0,-1):
 +
      if (i<j):
 +
        print(" ", end=' ')
 +
      else:
 +
        print(j, end=' ')
 +
  print("")
 +
</source>
 +
-->
 +
 
 +
17. Escriu un programa que llegeixi un número imparell i mostri per pantalla el següent:
 
<pre>
 
<pre>
 
     Exemple num=9
 
     Exemple num=9
Línia 1.068: Línia 1.114:
 
</pre>
 
</pre>
  
<!--
+
<!---->
 +
<source lang = "python">
 
print("Cálcul del factorial d'un número")
 
print("Cálcul del factorial d'un número")
  
Línia 1.098: Línia 1.145:
 
     # Escribim el resultat del factorial del númeor nuactual  
 
     # Escribim el resultat del factorial del númeor nuactual  
 
     print(factorial)
 
     print(factorial)
-->
+
</source>
 +
 
  
 
19. Escriu un programa que mostri la següent sortida:
 
19. Escriu un programa que mostri la següent sortida:
Línia 1.130: Línia 1.178:
 
A
 
A
 
</pre>
 
</pre>
 
 
<!--
 
<!--
 +
<source lang = "python">
 
print("Abecedari invers")
 
print("Abecedari invers")
  
# Inicialitzem codi lletra inicial sempre la 'Z'
+
# Inicialitzem codi lletra final sempre la 'A'
codiInicial = ord('Z')
+
codiFinal=ord('A')
  
 
# Codi lletra final varia en cada línia
 
# Codi lletra final varia en cada línia
for codiFinal in range(ord('A'),ord('Z')):
+
for codiInicial in range(ord('Z'),ord('A')-1,-1):
  
 
     # Recorregut de tots els codis: codiInicial Fixe i codiFinal va variant...
 
     # Recorregut de tots els codis: codiInicial Fixe i codiFinal va variant...
Línia 1.147: Línia 1.195:
 
     print("")
 
     print("")
 
-->
 
-->
 +
20. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
 +
<pre>
 +
    1 2 3 4 5
 +
    1 2 3 4
 +
    1 2 3
 +
    1 2
 +
    1
 +
</pre>
 +
<!--
 +
<source lang = "python">
 +
print("Dibuix amb números consecutius")
  
== A2.5 Exercicis estructura iterativa: recorregut ==
+
num = int(input("Introdueix un número enter: "))
 +
for i in range(num, 0, -1):
 +
    for j in range(1, i+1):
 +
        print(j, end=" ")
 +
    print("")
 +
</source>
 +
-->
  
1. Escriu un programa que llegeixi números enters positius i mostri el més petit i el més gran. El programa finalitzarà quan ens introdueixin un número negatiu.
+
21. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
 +
<pre>
 +
    1 1 1 1 1
 +
    2 2 2 2
 +
    3 3 3
 +
    4 4
 +
    5
 +
</pre>
 
<!--
 
<!--
<source lang="python">
+
<source lang = "python">
'''
+
print("Dibuix amb números")
Escriu un programa que llegeixi números enters positius i mostri el més petit
 
i el més gran. El programa finalitzarà quan ens introdueixin un número
 
negatiu.
 
'''
 
print("Més gran i més petit d'una seqüencia de números")
 
  
# Accedir al primer element
+
num = int(input("Introdueix un número enter: "))  
num = int(input("Introdueix un valor positiu (per acabar negatiu): "))
+
for i in range(1, num+1):
 
+
     for j in range(num, i-1, -1):
# Inicialitzar tractament
+
        print(i, end=" ")
max = num;
+
    print("")
min = num
 
 
 
# Mentre no ultim element
 
while num >= 0:
 
 
 
  # Tractar_element
 
  if num > max:
 
     max = num
 
  if num < min:
 
    min = num
 
 
 
  # Obtenir següent element
 
  num = int(input("Introdueix un valor positiu (per acabar negatiu): "))
 
 
 
# Tractament_final
 
print("El valor màxim és: ", max)
 
print("El valor mínim és: ", min)
 
 
</source>
 
</source>
 
-->
 
-->
  
2. Donat un número llegit per teclat, calcula el número de dígits que té.
+
22. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)
 +
<pre>
 +
    5 5 5 5 5
 +
    4 4 4 4
 +
    3 3 3
 +
    2 2
 +
    1
 +
</pre>
 
<!--
 
<!--
<source lang="python">
+
<source lang = "python">
'''
+
print("Dibuix amb números")
Donat un número llegit per teclat, calcula el número de dígits que té.
 
'''
 
print("Càlcul del nombre de dígits d'un número")
 
  
# Accedir al primer element
+
num = int(input("Introdueix un número enter: "))  
num = int(input("Introdueix un valor positiu: "))
+
for i in range(num, 0, -1):
 
+
    for j in range(1, i+1):
# Inicialitzar tractament
+
        print(i, end=" ")
 
+
    print("")
digits = 0
 
 
 
# Mentre no ultim element
 
while num > 0:
 
 
 
  # Tractar_element
 
  digits += 1
 
   
 
  # Obtenir següent element
 
  num = num // 10
 
 
 
# Tractament_final
 
print("El número té %d dígits" %digits)
 
 
</source>
 
</source>
 
-->
 
-->
  
3. Donat un número llegit per teclat, realitzar la suma de tots els dígits del número.
+
23. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 7)
+
<pre>
Per exemple si introdueixen el valor 1238, s'imprimirà el valor : 1+2+3+8 --> 14
+
    1 1 1 1 1 1 1
 +
    1 2 3 4 5 6
 +
    3 3 3 3 3
 +
    1 2 3 4
 +
    5 5 5
 +
    1 2
 +
    7
 +
</pre>
 
<!--
 
<!--
<source lang="python">
+
Amb dos fors:
'''
+
<source lang = "python">
Donat un número llegit per teclat, realitzar la suma de tots els dígits del número.
+
print("Dibuix amb números")
'''
 
print("Suma de tots els digits d'un número")
 
  
# Accedir al primer element
+
num = int(input("Introdueix un número enter: "))
num = int(input("Introdueix un valor positiu: "))
+
for i in range(1, num+1):
 +
    for j in range(1, num-i+2):
 +
        if i%2==1 :
 +
            print(i, end=" ")
 +
        else:
 +
            print(j, end=" ")
 +
    print("")
 +
</source>
 +
-->
 +
<!--
 +
Amb tres fors:
 +
<source lang = "python">
 +
print("Dibuix amb números")
  
# Inicialitzar tractament
+
num = int(input("Introdueix un número enter: "))
suma = 0
+
for i in range(1, num+1):
 
+
    if i%2==1 :
# Mentre no ultim element
+
        for j in range(1, num-i+2):  
while num > 0:  
+
            print(i, end=" ")
 
+
    else:
  # Tractar_element
+
        for j in range(1, num-i+2):   
  suma=suma+(num%10)
+
            print(j, end=" ")
 
+
    print("")
  # Obtenir següent element
 
  num=num//10
 
 
 
# Tractament_final 
 
print("La suma dels dígits és: ", suma)
 
 
</source>
 
</source>
 
-->
 
-->
  
4. Donat un número llegit per teclat, realitzar la suma de tots els dígits parells del número.
+
24. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 7)
 +
<pre>
 +
    7 7 7 7 7 7 7
 +
    6 5 4 3 2 1
 +
    5 5 5 5 5
 +
    4 3 2 1
 +
    3 3 3
 +
    2 1
 +
    1
 +
</pre>
 +
 
 +
<!--
 +
Amb dos fors:
 +
<source lang = "python">
 +
print("Dibuix amb números")
 +
 
 +
num = int(input("Introdueix un número enter: "))
 +
for i in range(num, 0, -1):
 +
    for j in range(i, 0, -1):
 +
        if i%2==1 :
 +
            print(i, end=" ")
 +
        else:
 +
            print(j, end=" ")
 +
    print("")
 +
</source>
 +
-->
 +
<!--
 +
Amb tres fors:
 +
<source lang="java">
 +
print("Dibuix amb números")
 +
 
 +
num = int(input("Introdueix un número enter: "))
 +
for i in range(num, 0, -1):
 +
    if i%2==1 :
 +
        for j in range(i, 0, -1):       
 +
            print(i, end=" ")
 +
    else:
 +
        for j in range(i, 0, -1):
 +
            print(j, end=" ")
 +
    print("")
 +
</source>
 +
-->
 +
 
 +
== A2.5 Exercicis estructura iterativa: recorregut ==
 +
 
 +
1. Escriu un programa que llegeixi números enters positius i mostri el més petit i el més gran. El programa finalitzarà quan ens introdueixin un número negatiu.
 
<!--
 
<!--
 
<source lang="python">
 
<source lang="python">
 
'''
 
'''
Donat un número llegit per teclat, realitzar la suma de tots els dígits parells del número.
+
Escriu un programa que llegeixi números enters positius i mostri el més petit
 +
i el més gran. El programa finalitzarà quan ens introdueixin un número
 +
negatiu.
 
'''
 
'''
print("Suma de tots els digits d'un número")
+
print("Més gran i més petit d'una seqüència de números")
  
 
# Accedir al primer element
 
# Accedir al primer element
num = int(input("Introdueix un valor positiu: "))
+
num = int(input("Introueix un valor positiu (per acabar negatiu): "))
  
# Inicialitzar tractament
+
# Inicialitzar el tractament
suma = 0
+
mesPetit = num
 +
mesGran = num
 +
 
 +
# Mentre no últim element
 +
while num>= 0:
  
# Mentre no ultim element  
+
  # Tractar l'element
while num > 0:  
+
  if num > mesGran:
 +
    mesGran = num
 +
  if num < mesPetit:
 +
    mesPetit = num
  
  # Tractar_element
+
   #Obtenir següent element
  mod = num % 10
+
   num = int(input("Introueix un valor positiu (per acabar negatiu): "))
  if mod % 2 == 0:
 
    suma = suma + mod
 
   
 
   # Obtenir següent element  
 
   num=num//10
 
  
# Tractament_final 
+
# Tractament final
print("La suma dels dígits parells és: ", suma)
+
print("El valor més gran és: ", mesGran)
 +
print("El valor més petit és: ", mesPetit)
 
</source>
 
</source>
 
-->
 
-->
  
5. Donat un número llegit per teclat, determina el número de dígits més grans que 5.
+
2. Donat un número llegit per teclat, calcula el número de dígits que .
 
<!--
 
<!--
<source lang="java">
+
<source lang="python">
 
'''
 
'''
Donat un número llegit per teclat, determina el número de dígits més grans que 5.
+
Donat un número llegit per teclat, calcula el número de dígits que .
 
'''
 
'''
print("Determinar el número de dígits més grans que 5 d'un número")
+
print("Càlcul del nombre de dígits d'un número")
  
 
# Accedir al primer element
 
# Accedir al primer element
Línia 1.286: Línia 1.389:
  
 
# Inicialitzar tractament
 
# Inicialitzar tractament
quants = 0
+
 
 +
digits = 0
  
 
# Mentre no ultim element  
 
# Mentre no ultim element  
while num > 0:  
+
while num > 0:
  
 
   # Tractar_element
 
   # Tractar_element
   if num%10>5:
+
   digits += 1
    quants +=1
+
   
   
 
 
   # Obtenir següent element  
 
   # Obtenir següent element  
   num=num//10
+
   num = num // 10
  
# Tractament_final  
+
# Tractament_final  
print("Hi ha %d dígits més grans que 5" %quants)
+
print("El número té %d dígits" %digits)
 
</source>
 
</source>
 
-->
 
-->
  
6. Escriu un programa que llegeixi números enters positius (finalitzarà amb la introducció de -1) i mostri totes les parelles de números  consecutius que apareixen a la seqüència.  
+
3. Donat un número llegit per teclat, realitzar la suma de tots els dígits del número.
 
+
Per exemple si la seqüència de números és: 7 10 11 23 4 5 8 10 11 12 -1, mostrarà: 10 11, 4 5, 10 11, 11 12
+
Per exemple si introdueixen el valor 1238, s'imprimirà el valor : 1+2+3+8 --> 14
 
<!--
 
<!--
 
<source lang="python">
 
<source lang="python">
 
'''
 
'''
Escriu un programa que llegeixi números enters positius (finalitzarà amb la introducció de -1)
+
Donat un número llegit per teclat, realitzar la suma de tots els dígits del número.
i mostri totes les parelles de números  consecutius que apareixen a la seqüència.
 
 
'''
 
'''
print("Mostrar números consecutius d'una segqüencia")
+
print("Suma de tots els digits d'un número")
  
 
# Accedir al primer element
 
# Accedir al primer element
actual = int(input("Introdueix un valor positiu (per acabar -1): " ))
+
num = int(input("Introdueix un valor positiu: "))
anterior = actual;
+
 
 +
# Inicialitzar tractament
 +
suma = 0
  
 
# Mentre no ultim element  
 
# Mentre no ultim element  
while actual != -1:  
+
while num > 0:  
  
 
   # Tractar_element
 
   # Tractar_element
   if actual == anterior + 1:
+
   suma=suma+(num%10)
    print("%d - %d" %(anterior,actual))
+
 
   
 
 
   # Obtenir següent element  
 
   # Obtenir següent element  
   anterior = actual
+
   num=num//10
   actual = int(input("Introdueix un valor positiu (per acabar -1): " ))
+
 
 +
# Tractament_final    
 +
print("La suma dels dígits és: ", suma)
 
</source>
 
</source>
 
-->
 
-->
  
== A2.6 Exercicis estructura iterativa: cerca ==
+
4. Donat un número llegit per teclat, realitzar la suma de tots els dígits parells del número.
 
 
 
 
1. Escriu un programa que indiqui si existeix o no algun múltiple de 5 en una seqüència de números naturals finalitzada en -1 (seria  interessant que una vegada trobat un múltiple, el programa no continués executant-se).
 
 
<!--
 
<!--
 
<source lang="python">
 
<source lang="python">
 
'''
 
'''
Indica si existeix o no algun múltiple de 5 en una seqüència de números naturals finalitzada en -1
+
Donat un número llegit per teclat, realitzar la suma de tots els dígits parells del número.
 
'''
 
'''
 +
print("Suma de tots els digits d'un número")
  
print("Cerca d'un múltiple de 5")
+
# Accedir al primer element
 +
num = int(input("Introdueix un valor positiu: "))
  
# accedir al primer element
+
# Inicialitzar tractament
num = int(input("Introdueix un valor positiu (per acabar -1): "))
+
suma = 0
  
# Mentre no últim element i no element trobat fer
+
# Mentre no ultim element  
while num!=-1 and num % 5 !=0 :  
+
while num > 0:  
  
   # obtenir següent element
+
   # Tractar_element
   num = int(input("Introdueix un valor positiu (per acabar -1): "))
+
   mod = num % 10
 
+
  if mod % 2 == 0:
# tractament final
+
    suma = suma + mod
if num%5==0 :
+
   
   print("%d és múltiple de 5" %num)
+
  # Obtenir següent element
else :
+
   num=num//10
   print("No hi ha cap múltiple")
+
 
 +
# Tractament_final    
 +
print("La suma dels dígits parells és: ", suma)
 
</source>
 
</source>
 
-->
 
-->
  
2. Escriu un programa que determini si un número enter es primer o no (recorda que un número primer només és divisible per 1 i per ell mateix).
+
5. Donat un número llegit per teclat, determina el número de dígits més grans que 5.
 
<!--
 
<!--
 
<source lang="python">
 
<source lang="python">
 
'''
 
'''
Indica si un número enter és primer o no
+
Donat un número llegit per teclat, determina el número de dígits més grans que 5.
 
'''
 
'''
 +
print("Determinar el número de dígits més grans que 5 d'un número")
  
print("Número primer?")
+
# Accedir al primer element
 +
num = int(input("Introdueix un valor positiu: "))
  
# accedir al primer element
+
# Inicialitzar tractament
divisor=2;
+
quants = 0
       
 
# inicialitzar tractament
 
num = int(input("Introdueix un valor enter positiu: "))
 
  
# Mentre no últim element i no element trobat fer
+
# Mentre no ultim element  
while divisor<num and num%divisor!=0 :
+
while num > 0:  
  
    # obtenir següent element
+
  # Tractar_element
    divisor += 1
+
  if num%10>5:
       
+
    quants +=1
# tractament final
+
   
if divisor==num:
+
  # Obtenir següent element
   print("Primer")     
+
  num=num//10
else :
+
 
  print("No és primer")
+
# Tractament_final    
 +
print("Hi ha %d dígits més grans que 5" %quants)
 
</source>
 
</source>
 
-->
 
-->
  
3. Escriu un programa que vagi llegint notes (per finalitzar -1) i indiqui si hi ha com a mínim tres suspesos. Només cal dir sí o no.
+
6. Escriu un programa que llegeixi números enters positius (finalitzarà amb la introducció de -1) i mostri totes les parelles de números  consecutius que apareixen a la seqüència.  
 +
 
 +
Per exemple si la seqüència de números és: 7 10 11 23 4 5 8 10 11 12 -1, mostrarà: 10 11, 4 5, 10 11, 11 12
 
<!--
 
<!--
 
<source lang="python">
 
<source lang="python">
 
'''
 
'''
Indica si hi ha un mínim de 3 suspesos en una seqüència de notes
+
Escriu un programa que llegeixi números enters positius (finalitzarà amb la introducció de -1)
 +
i mostri totes les parelles de números  consecutius que apareixen a la seqüència.
 
'''
 
'''
 +
print("Mostrar números consecutius d'una segqüencia")
  
print("Hi ha un mínim de 3 suspesos?")
+
# Accedir al primer element
 +
actual = int(input("Introdueix un valor positiu (per acabar -1): " ))
 +
anterior = actual;
  
# accedir al primer element
+
# Mentre no ultim element  
nota = int(input("Introdueix un valor positiu (per acabar -1): "))
+
while actual != -1:  
     
 
# inicialitzar tractament
 
  
susp = 0;
+
  # Tractar_element
      
+
  if actual == anterior + 1:
# Mentre no últim element i no element trobat fer
+
     print("%d - %d" %(anterior,actual))
while nota != -1 and susp < 3 :
+
   
 +
  # Obtenir següent element  
 +
  anterior = actual
 +
  actual = int(input("Introdueix un valor positiu (per acabar -1): " ))
 +
</source>
 +
-->
  
    # tractar element
+
== A2.6 Exercicis estructura iterativa: cerca ==
    if nota < 5 :
 
      susp += 1
 
  
    # obtenir següent element       
 
    if susp < 3 :
 
      nota = int(input("Introdueix un valor positiu (per acabar -1): "))
 
  
# tractament final
+
1. Escriu un programa que indiqui si existeix o no algun múltiple de 5 en una seqüència de números naturals finalitzada en -1 (seria  interessant que una vegada trobat un múltiple, el programa no continués executant-se).
if susp == 3 :
+
<!--
  print("Sí")
 
else :
 
  print("No")
 
</source>
 
-->
 
 
 
4. Escriu un programa que vagi llegint números positius (per finalitzar -1) i indiqui si tots són parells.
 
<!--
 
 
<source lang="python">
 
<source lang="python">
 
'''
 
'''
Indica si tots els números són parells
+
Indica si existeix o no algun múltiple de 5 en una seqüència de números naturals finalitzada en -1
 
'''
 
'''
  
print("Tots els números són parells?")
+
print("Cerca d'un múltiple de 5")
  
 
# accedir al primer element
 
# accedir al primer element
 
num = int(input("Introdueix un valor positiu (per acabar -1): "))
 
num = int(input("Introdueix un valor positiu (per acabar -1): "))
     
+
 
 
# Mentre no últim element i no element trobat fer
 
# Mentre no últim element i no element trobat fer
while num != -1 and num % 2 == 0 :
+
while num!=-1 and num % 5 !=0 :  
+
 
 
   # obtenir següent element
 
   # obtenir següent element
 
   num = int(input("Introdueix un valor positiu (per acabar -1): "))
 
   num = int(input("Introdueix un valor positiu (per acabar -1): "))
  
 
# tractament final
 
# tractament final
if num==-1 :
+
if num%5==0 :
   print("Tots parells")
+
   print("%d és múltiple de 5" %num)
 
else :
 
else :
   print("No són tots parells")
+
   print("No hi ha cap múltiple")
 
</source>
 
</source>
 
-->
 
-->
  
5. Escriu un programa que llegeixi un número i indiqui si tots els dígits són parells.
+
2. Escriu un programa que determini si un número enter es primer o no (recorda que un número primer només és divisible per 1 i per ell mateix).
 
<!--
 
<!--
 
<source lang="python">
 
<source lang="python">
 
'''
 
'''
Indica si tots els dígits d'un número són parells
+
Indica si un número enter és primer o no
 
'''
 
'''
  
print("Tots els dígits d'un número són parells?")
+
print("Número primer?")
  
 
# accedir al primer element
 
# accedir al primer element
 +
divisor=2;
 +
       
 +
# inicialitzar tractament
 
num = int(input("Introdueix un valor enter positiu: "))
 
num = int(input("Introdueix un valor enter positiu: "))
  
 
# Mentre no últim element i no element trobat fer
 
# Mentre no últim element i no element trobat fer
while num > 0 and num % 2 == 0 :
+
while divisor<num and num%divisor!=0 :
  
 
     # obtenir següent element
 
     # obtenir següent element
     num = num // 10;
+
     divisor += 1
 
+
       
 
# tractament final
 
# tractament final
if num == 0 :
+
if divisor==num:
   print("Tots parells")
+
   print("Primer")    
 
else :
 
else :
   print("No són tots parells")
+
   print("No és primer")
 
</source>
 
</source>
 
-->
 
-->
  
6. Escriu un programa que vagi llegint números positius (per finalitzar -1) i indiqui si cada valor és més gran que l'anterior.
+
3. Escriu un programa que vagi llegint notes (per finalitzar -1) i indiqui si hi ha com a mínim tres suspesos. Només cal dir sí o no.
 
<!--
 
<!--
 
<source lang="python">
 
<source lang="python">
 
'''
 
'''
Indica si una seqüència de números és estrictament ascendent
+
Indica si hi ha un mínim de 3 suspesos en una seqüència de notes
 
'''
 
'''
  
print("La seqüència de números és estrictament ascendent?")
+
print("Hi ha un mínim de 3 suspesos?")
  
 
# accedir al primer element
 
# accedir al primer element
num = int(input("Introdueix un valor positiu (per acabar -1): "))
+
nota = int(input("Introdueix un valor positiu (per acabar -1): "))
anterior = -1
+
     
 +
# inicialitzar tractament
  
 +
susp = 0;
 +
   
 
# Mentre no últim element i no element trobat fer
 
# Mentre no últim element i no element trobat fer
while num != -1 and anterior < num :
+
while nota != -1 and susp < 3 :
  
     # obtenir següent element
+
    # tractar element
     anterior = num
+
    if nota < 5 :
    num = int(input("Introdueix un valor positiu (per acabar -1): "))
+
      susp += 1
 +
 
 +
     # obtenir següent element      
 +
     if susp < 3 :
 +
      nota = int(input("Introdueix un valor positiu (per acabar -1): "))
  
 
# tractament final
 
# tractament final
if num == -1 :
+
if susp == 3 :
   print("Es compleix")
+
   print("")
 
else :
 
else :
   print("No es compleix")
+
   print("No")
 
</source>
 
</source>
 
-->
 
-->
  
== A4.1 Exercicis Cadenes ==
+
4. Escriu un programa que vagi llegint números positius (per finalitzar -1) i indiqui si tots són parells.
 +
<!--
 +
<source lang="python">
 +
'''
 +
Indica si tots els números són parells
 +
'''
 +
 
 +
print("Tots els números són parells?")
  
1. L’última lletra del DNI pot calcular-se a partir del seus números. Per a això només has de dividir el número per 23 i quedar-te amb la resta. Fes un programa per calcular la lletra d’un DNI. La lletra que correspon a cada número la tens en aquesta taula:
+
# accedir al primer element
<pre>
+
num = int(input("Introdueix un valor positiu (per acabar -1): "))
    0 - T
+
     
    1 - R
+
# Mentre no últim element i no element trobat fer
    2 - W
+
while num != -1 and num % 2 == 0 :
    3 - A
+
    4 - G
+
  # obtenir següent element
    5 - M
+
  num = int(input("Introdueix un valor positiu (per acabar -1): "))
    6 - Y
 
    7 - F
 
    8 - P
 
    9 - D
 
  10 - X
 
  11 - B
 
  12 - N
 
  13 - J
 
  14 - Z
 
  15 - S
 
  16 - Q
 
  17 - V
 
  18 - H
 
  19 - L
 
  20 - C
 
  21 - K
 
  22 – E
 
</pre>
 
  
<!--
+
# tractament final
<source lang = "python">
+
if num==-1 :
print("Obtenció lletra DNI")
+
  print("Tots parells")
 
+
else :
# Constants
+
  print("No són tots parells")
NUMLLETRES = 23
 
LLETRESDNI = "TRWAGMYFPDXBNJZSQVHLCKE"
 
 
 
# Demanem número DNI
 
numDNI = int(input("Introdueix número d'un DNI: "))
 
 
 
# Càlcul de la posició de la lletra
 
numCalcul = numDNI % NUMLLETRES
 
 
 
# Mostrar la lletra
 
print("El número de DNI: %d li correspon la lletra: %s" %(numDNI,LLETRESDNI[numCalcul]))
 
 
</source>
 
</source>
 
-->
 
-->
  
2. Fes un programa per que verifiqui que la lletra d’un DNI es correspon amb el seu número:
+
5. Escriu un programa que llegeixi un número i indiqui si tots els dígits són parells.
 
 
 
<!--
 
<!--
<source lang = "python">
+
<source lang="python">
print("Verificació lletra DNI")
+
'''
 +
Indica si tots els dígits d'un número són parells
 +
'''
  
# Constants
+
print("Tots els dígits d'un número són parells?")
NUMLLETRES = 23
 
LLETRESDNI = "TRWAGMYFPDXBNJZSQVHLCKE"
 
  
# Demanem DNI
+
# accedir al primer element
dni = input("Introdueix un DNI: ")
+
num = int(input("Introdueix un valor enter positiu: "))
  
# Lletra i número del DNI
+
# Mentre no últim element i no element trobat fer
lletraDNI = dni[-1]
+
while num > 0 and num % 2 == 0 :
numDNI = int(dni[:-1])
 
  
# Càlcul de la posició de la lletra
+
    # obtenir següent element
numCalcul = numDNI % NUMLLETRES
+
    num = num // 10;
  
# Verificació
+
# tractament final
if lletraDNI == LLETRESDNI[numCalcul]:
+
if num == 0 :
   print("ÉS correcte!")
+
   print("Tots parells")
else:
+
else :
   print("És incorrecte!")
+
   print("No són tots parells")
 
</source>
 
</source>
 
-->
 
-->
  
3. Genera un programa que encripti una cadena de caràcters. Per exemple: '“avadakedavra”' encriptat es '“bwbeblfebwsb”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’).
+
6. Escriu un programa que vagi llegint números positius (per finalitzar -1) i indiqui si cada valor és més gran que l'anterior.
 
<!--
 
<!--
<source lang = "python">
+
<source lang="python">
print("Encriptació d'una cadena")
+
'''
 +
Indica si una seqüència de números és estrictament ascendent
 +
'''
  
# Constants
+
print("La seqüència de números és estrictament ascendent?")
LLETRES = "abcdefghijklmnopqrstvwxyza"
 
  
# Demanem cadena a encriptar
+
# accedir al primer element
cadena = input("Introdueix la cadena a encriptar: ")
+
num = int(input("Introdueix un valor positiu (per acabar -1): "))
 +
anterior = -1
 +
 
 +
# Mentre no últim element i no element trobat fer
 +
while num != -1 and anterior < num :
  
# Encriptació
+
    # obtenir següent element
cadenaEncriptada =""
+
    anterior = num
for carac in cadena:
+
    num = int(input("Introdueix un valor positiu (per acabar -1): "))
  posCaracter = LLETRES.find(carac)
 
  cadenaEncriptada += LLETRES[posCaracter+1]
 
  
# Mostrar el text encriptat
+
# tractament final
print("Cadena encriptada:", cadenaEncriptada)
+
if num == -1 :
 +
  print("Es compleix")
 +
else :
 +
  print("No es compleix")
 
</source>
 
</source>
 
-->
 
-->
  
4. Genera un programa que encripti una text de caràcters. Per exemple: '“hola que tal”' encriptat es '“ipmb@raf@vbm”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’ i el caràcter ' ' es substitueix per '@').
+
== A4.1 Exercicis Cadenes ==
<!--
 
<source lang = "python">
 
print("Encriptació d'un text")
 
  
# Constants
+
1. L’última lletra del DNI pot calcular-se a partir del seus números. Per a això només has de dividir el número per 23 i quedar-te amb la resta. Fes un programa per calcular la lletra d’un DNI. La lletra que correspon a cada número la tens en aquesta taula:
LLETRES = "abcdefghijklmnopqrstvwxyza @" 
+
<pre>
 
+
    0 - T
# Demanem número DNI
+
    1 - R
text = input("Introdueix el text a encriptar: ")
+
    2 - W
 +
    3 - A
 +
    4 - G
 +
    5 - M
 +
    6 - Y
 +
    7 - F
 +
    8 - P
 +
    9 - D
 +
  10 - X
 +
  11 - B
 +
  12 - N
 +
  13 - J
 +
  14 - Z
 +
  15 - S
 +
  16 - Q
 +
  17 - V
 +
  18 - H
 +
  19 - L
 +
  20 - C
 +
  21 - K
 +
  22 – E
 +
</pre>
  
# Encriptació
+
<!--
textEncriptat =""
+
<source lang = "python">
for carac in text:
+
print("Obtenció lletra DNI")
  posCaracter = LLETRES.find(carac)
 
  textEncriptat += LLETRES[posCaracter+1]
 
  
# Mostrar el text encriptat
+
# Constants
print("Text encriptat:", textEncriptat)
+
NUMLLETRES = 23
 +
LLETRESDNI = "TRWAGMYFPDXBNJZSQVHLCKE"
 +
 
 +
# Demanem número DNI
 +
numDNI = int(input("Introdueix número d'un DNI: "))
 +
 
 +
# Càlcul de la posició de la lletra
 +
numCalcul = numDNI % NUMLLETRES
 +
 
 +
# Mostrar la lletra
 +
print("El número de DNI: %d li correspon la lletra: %s" %(numDNI,LLETRESDNI[numCalcul]))
 
</source>
 
</source>
 
-->
 
-->
  
5. Feu un programa que si li passem un nom i un cognom com a paràmetres ens doni la benvinguda:
+
2. Fes un programa per que verifiqui que la lletra d’un DNI es correspon amb el seu número:
<pre>
+
 
    Benvingut Sr. ...
 
    i si no l'hi donem digui :
 
    Hola desconegut.
 
</pre>
 
 
<!--
 
<!--
 
<source lang = "python">
 
<source lang = "python">
print("Programa amb arguments ")
+
print("Verificació lletra DNI")
  
# Importar llibreries
+
# Constants
import sys
+
NUMLLETRES = 23
 +
LLETRESDNI = "TRWAGMYFPDXBNJZSQVHLCKE"
  
# Comprovar número d'arguments
+
# Demanem DNI
if(len(sys.argv) == 3):
+
dni = input("Introdueix un DNI: ")
 +
 
 +
# Lletra i número del DNI
 +
lletraDNI = dni[-1]
 +
numDNI = int(dni[:-1])
  
# Mostrar nom i cognom
+
# Càlcul de la posició de la lletra
    print ("Benvingut Sr./Sra. %s %s" %(sys.argv[1], sys.argv[2]))
+
numCalcul = numDNI % NUMLLETRES
  
# Missatge si no hi ha 2 arguments
+
# Verificació
 +
if lletraDNI == LLETRESDNI[numCalcul]:
 +
  print("ÉS correcte!")
 
else:
 
else:
    print ("Aquest programa requereix dos arguments")
+
  print("És incorrecte!")
 
</source>
 
</source>
 
-->
 
-->
  
6. Feu un programa que calculi la mitjana aritmètica dels valors passats com a paràmetres. Si no es passa cap paràmetre sortirà un missatge d’error i si el primer paràmetre és '''–ajut''' el programa traurà una petita explicació del funcionament.
+
3. Genera un programa que encripti una cadena de caràcters. Per exemple: '“avadakedavra”' encriptat es '“bwbeblfebwsb”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’).
 
<!--
 
<!--
 
<source lang = "python">
 
<source lang = "python">
print("Programa amb arguments: Mitjana de n números")
+
print("Encriptació d'una cadena")
  
# Importar llibreries
+
# Constants
import sys
+
LLETRES = "abcdefghijklmnopqrstuvwxyza" 
  
# Comprovar número d'arguments
+
# Demanem cadena a encriptar
if(len(sys.argv) > 1):
+
cadena = input("Introdueix la cadena a encriptar: ")
  
# Comprovar si necessiten l'ajuda
+
# Encriptació
    if(sys.argv[1] == "-ajut"):
+
cadenaEncriptada =""
        print ("Aquest programa calcula la mitjana dels valors passats com a arguments")
+
for carac in cadena:  
 
+
  posCaracter = LLETRES.find(carac)
# Calculem la mitja dels arguments
+
  cadenaEncriptada += LLETRES[posCaracter+1]
    else:
+
 
        suma = 0
+
# Mostrar el text encriptat
        for i in range(1,len(sys.argv)):
+
print("Cadena encriptada:", cadenaEncriptada)
            suma += int(sys.argv[i])
 
        print ("Resultat de la mitjana és:", suma/(len(sys.argv)-1))
 
# Missatge si no hi ha 2 arguments
 
else:
 
    print ("Aquest programa requereix arguments")
 
 
</source>
 
</source>
 
-->
 
-->
  
7. Genereu un programa anomenat '''ComptaAsString''' que compti quantes lletres 'a' conté una cadena de text. El text per tractar pot ser qualsevol i el podeu declarar com una constant en el codi font.
+
4. Genera un programa que encripti una text de caràcters. Per exemple: '“hola que tal”' encriptat es '“ipmb@rvf@ubm”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’ i el caràcter ' ' es substitueix per '@').
 
<!--
 
<!--
 
<source lang = "python">
 
<source lang = "python">
print("Programa comptar a's d'una frase")
+
print("Encriptació d'un text")
  
# Constant frase
+
# Constants
frase = "La ment que s'obre a una nova idea, mai torna a la seva mida original."
+
LLETRES = "abcdefghijklmnopqrstuvwxyza @"
  
# Inicialitzar variables
+
# Demanem número DNI
comptador = 0
+
text = input("Introdueix el text a encriptar: ")
pos = frase.find("a")
 
# Comptar a's
 
while pos != -1 :
 
  comptador += 1
 
  pos = frase.find("a",pos+1)
 
# Mostrar el resultat
 
print ("Hi ha %d a's en la frase" %comptador)
 
</source>
 
-->
 
 
 
8. Fes un programa que, primer demani a l’usuari escriure una rere l’altra, tres paraules que només continguin lletres minúscules. A continuació el programa ha d’escriure quina és la paraula més llarga i quina és l’alfabèticament menor.
 
  
 +
# Encriptació
 +
textEncriptat =""
 +
for carac in text:
 +
  posCaracter = LLETRES.find(carac)
 +
  textEncriptat += LLETRES[posCaracter+1]
  
9. Fes un programa que llegeixi una cadena i un número enter N i ens digui quantes paraules tenen longitud N.
+
# Mostrar el text encriptat
 +
print("Text encriptat:", textEncriptat)
 +
</source>
 +
-->
  
 +
5. Feu un programa que si li passem un nom i un cognom com a paràmetres ens doni la benvinguda:
 +
<pre>
 +
    Benvingut Sr. ...
 +
    i si no l'hi donem digui :
 +
    Hola desconegut.
 +
</pre>
 +
<!--
 +
<source lang = "python">
 +
print("Programa amb arguments ")
  
10. Fes un programa que llegeixi una cadena i la mostri invertida.
+
# Importar llibreries
 +
import sys
 +
 
 +
# Comprovar número d'arguments
 +
if(len(sys.argv) == 3):
  
 +
# Mostrar nom i cognom
 +
    print ("Benvingut Sr./Sra. %s %s" %(sys.argv[1], sys.argv[2]))
  
11. Volem un programa per treballar amb cadenes que mitjançant un menú ens permeti les següents opcions:
+
# Missatge si no hi ha 2 arguments
 +
else:
 +
    print ("Hola desconegut")
 +
</source>
 +
-->
  
:*Mostrar els n primers caràcters d’una cadena
+
6. Feu un programa que calculi la mitjana aritmètica dels valors passats com a paràmetres. Si no es passa cap paràmetre sortirà un missatge d’error i si el primer paràmetre és '''–ajut''' el programa traurà una petita explicació del funcionament.
:*Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta)
+
<!--
:*Eliminar els espais en blanc que hi hagi al final de la cadena
+
<source lang = "python">
:*Eliminar els espais en blanc que hi hagi al principi de la cadena
+
print("Programa amb arguments: Mitjana de n números")
:*Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p
 
:*Inserir una cadena dins d’una altra a partir de la posició p
 
:*Comptar el nombre de vegades que apareix una cadena dins d’una altra
 
:*Esborrar totes les aparicions d’una cadena dins d’una altra
 
  
 +
# Importar llibreries
 +
import sys
  
12. Escriu un programa que utilitzi el mètode regionMatches de la classe String per
+
# Comprovar número d'arguments
comparar dues cadenes introduïdes per l’usuari. L’aplicació rebrà com a entrada
+
if(len(sys.argv) == 1):
el nombre de caràcters a comparar i l’índex inicial de la comparació. L’aplicació
+
   
haurà d’indicar si les cadenes són iguals. Ignoreu si els caràcters estan en
+
    print("ERROR: Aquest programa necessita paràmetres")
majúscules o no en el moment de la comparació.
 
  
 +
# Comprovar si necessiten l'ajuda
 +
elif(sys.argv[1] == "-ajut"):
 +
        print ("Aquest programa calcula la mitjana dels valors passats com a arguments")
  
13. Escriu una aplicació que rebi com a entrada una línia de text i un caràcter de
+
# Calculem la mitja dels arguments
cerca i que utilitzi el mètode indexOf de la classe String per a determinar el
+
else:
nombre d’ocurrències del caràcter en el text.
+
    suma = 0
 +
    for i in range(1,len(sys.argv)):
 +
        suma += int(sys.argv[i])
 +
    print ("Resultat de la mitjana és:", suma/(len(sys.argv)-1))
 +
</source>
 +
-->
  
 +
7. Genereu un programa anomenat '''ComptaAsString''' que compti quantes lletres 'a' conté una cadena de text. El text per tractar pot ser qualsevol i el podeu declarar com una constant en el codi font.
 +
<!--
 +
versió 1
 +
<source lang = "python">
 +
print("Programa compar a's d'una frase")
  
14. Féu un programa que llegeixi una cadena de caràcters i indiqui si la cadena és un
+
# Entrada: frase a avaluar
palíndrom. Un palíndrom és una cadena que es llegeix d’igual manera
+
frase = input("Introdueix la frase a avaluar: ")
d’esquerra a dreta que de dreta a esquerra. Com per exemple : dabale arroz a la
 
zorra el abad. Cal entendre que per poder-ho fer d’aquesta manera no han
 
d’haver-hi espais en blanc.
 
  
 +
# Inicialitzar variables
 +
comptador = 0
  
15. Escriu una aplicació que utilitzi la generació de números aleatoris per a crear
+
# Comptar a's
enunciats. Utilitza quatre taules de cadenes anomenades article, substantiu, verb
+
for i in range(len(frase)):
i preposicio. Crea una oració seleccionant una paraula a l’atzar de cada una de
+
    if frase[i] == 'a':
les taules en el següent ordre: article, substantiu, verb, preposicio, article i
+
      comptador += 1
substantiu. A mesura que es triï una paraula s’ha de concatenar amb les anteriors
 
a l’enunciat. Les paraules es separen per espais. Quan es mostri l’enunciat final,
 
haurà de començar amb una lletra majúscula i acabar amb punt. El programa ha
 
de generar 20 enunciats.
 
Nota: Per generar números aleatoris cal fer el codi següent:
 
Random aleatori = new Random();
 
int valor = r.nextInt(maxim);
 
això genera un valor >= 0 i < maxim
 
  
 +
# Mostrar el resultat
 +
print("Hi ha %d a's en la frase" %comptador)
  
16. '''languageGames''': En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants:
+
</source>
 +
-->
 +
<!--
 +
versio 2
 +
<source lang = "python">
  
:'''a) Jerigonza''' (variant lúdica del castellà): després de cada vocal s'afegeix una 'p' i es repeteix la vocal.
+
print("Programa comptar a's d'una frase")
  
Exemples:
+
# Entrada: frase a avaluar. Per ex: "La ment que s'obre a una nova idea, mai torna a la seva mida original."
 +
frase = input("Introdueix la frase a avaluar: "
  
::*“casa” seria “capasapa”
+
# Inicialitzar variables
::*“Gabriel” seria “Gapabripiepel”
+
comptador = 0
::*“murcielago” seria “mupurcipiepelapagopo”
+
pos = frase.find("a")
 +
# Comptar a's
 +
while pos != -1 :
 +
  comptador += 1
 +
  pos = frase.find("a",pos+1)
 +
# Mostrar el resultat
 +
print ("Hi ha %d a's en la frase" %comptador)
 +
</source>
 +
-->
  
'''NOTA:''' Per simplificar-ho suposarem que no s'introdueixen accents.
+
8. Fes un programa que, primer demani a l’usuari escriure una rere l’altra, tres paraules que només continguin lletres minúscules. A continuació el programa ha d’escriure quina és la paraula més llarga i quina és l’alfabèticament menor.  
  
:'''b) Basic Pig Latin''' (variant lúdica de l'anglès): tenim dues regles:
+
<!--
 +
<source lang = "python">
 +
print("Programa ordenar paraules")
  
:A les paraules que comencen per vocal se'ls afegeix al darrera el sufix “ay”. Exemples:
+
# Entrada de les paraules
 +
par1 = input("Introdueix la primera paraula: ")
 +
par2 = input("Introdueix la primera paraula: ")
 +
par3 = input("Introdueix la primera paraula: ")
  
::*“ant” seria “antay”
+
# Cerquem la paraula més llarga
::*“astronaut” seria “astronautay”
+
mesLlarga = par1
 +
if len(mesLlarga) < len(par2):
 +
  mesLlarga = par2
 +
if len(mesLlarga) < len(par3):
 +
  mesLlarga = par3
  
:A les paraules que comencen per consonant, es mouen totes les consonants del davant de la primera vocal al final i s'afegeix el sufix “ay”. Exemples:
+
# Cerquem la paraula lexicogràficament menor
 +
alfMenor = par1
 +
if alfMenor > par2:
 +
  alfMenor = par2
 +
if alfMenor > par3:
 +
  alfMenor = par3
  
::*“mess” seria “essmay”
+
# Reultats
::*“father” seria “atherfay”
+
print("La paraula més llarga és: ", mesLlarga)
::*“chick” seria “ickchay”
+
print("La paraula lexicogràficament menor és: ", alfMenor)
::*“star” seria “arstay”
+
</source>
 +
-->
  
El programa ha d'implementar dos mètodes: un que tradueixi paraules del castellà al jerigonza i un altre que tradueixi paraules de l'anglès al basic pig latin.
+
9. Fes un programa que llegeixi una frase i un número enter N i ens digui quines i quantes paraules tenen longitud N.
 +
<!--
 +
<source lang = "python">
 +
print("Programa paraules de N caràcters")
  
A continuació posem alguns exemples d'execució:
+
# Entrada de dades
<pre>
+
frase = input("Introdueix la frase a tractar: ")
> Program p = new Program()
+
num = int(input("Introdueix el número de caràcters: "))
> p.spanish2jerigonza("casa")
 
"capasapa"
 
> p.spanish2jerigonza("murcielago")
 
"mupurcipiepelapagopo"
 
> p.english2basicPigLatin("astronaut")
 
"astronautay"
 
> p.english2basicPigLatin("father")
 
"atherfay"
 
> p.english2basicPigLatin("star")
 
"arstay"
 
</pre>
 
  
'''NOTA:''' Per simplificar, podeu suposar que la dada d'entrada serà UNA ÚNICA paraula i que aquesta no tindrà ni accents ni caràcters diferents de lletres.
+
# Inicialització de variables
 +
numParaules = 0
  
 +
# Recorregut de la frase mostrant les paraules de N caràcters
 +
print("Paraules de %d caràcters: " %num, end =' ')
 +
for par in frase.split():
 +
    if len(par) == num:
 +
      print(par, end=' ')
 +
      numParaules +=1
 +
print("Num paraules: ", numParaules)
 +
</source>
 +
-->
  
17. mySplit: L'objectiu d'aquest exercici és codificar una funcionalitat similar al mètode split de la classe String.
+
10. Fes un programa que llegeixi una frase i la mostri invertida.
 +
<!--
 +
<source lang = "python">
 +
print("Programa mostrar frase invertida")
  
Donades dues cadenes s i sub, construirem un array de cadenes amb les subcadenes de s delimitades per la subcadena sub.
+
# Entrada de dades
A continuació posem alguns exemples d'execució:
+
frase = input("Introdueix la frase a invertir: ")
<pre>
 
>Program p = new Program()
 
>p.mySplit("El gat s'ha escapat.", " ")
 
{El, gat, s'ha, escapat. }
 
>p.mySplit("El gat s'ha escapat.", "a")
 
{El g, t s'h, esc, p, t. }
 
>p.mySplit("El gat s'ha escapat.", "at")
 
{El g, s'ha escap, . }
 
</pre>
 
  
'''NOTA 1:''' NO podeu usar el mètode split de la classe String.
+
# Recorregut de la frase caràcter a caràcter començant pel final
'''NOTA 2:''' Podeu afegir al programa qualsevol mètode o fragment de codi fet a classe.
+
print("Frase invertida: ", end =' ')
 +
for car in range(len(frase)-1, -1, -1):
 +
      print(frase[car], end='')
 +
print()
 +
</source>
 +
-->
 +
<!--
 +
Altres opcions:
 +
print(frase[::-1])
  
== A4.2 Exercicis Llistes ==
+
for i in reversed(frase):
 
+
  print(i, end='')
1. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, la mostri per pantalla.
+
print()
 +
-->
 
<!--
 
<!--
 
<source lang = "python">
 
<source lang = "python">
print("Programa mòduls 1r d'ASIX")
+
print("Programa mostrar frase invertida")
print("-------------------------")
 
  
# Constant
+
# Entrada de dades
MODULS = ["Sistemes operatius", "Gestió de bases de dades", "Programació bàsica", "Llenguatge de marques", "Fonaments de maquinari", "Planificació i administració de xarxes", "Implantació d'aplicacions web", "Formació i orientació laboral"]
+
frase = input("Introdueix la frase a invertir: ")
  
# Recórrer la llista i mostrar cada mòdul
+
# Imprimir la frase invertida
for modul in MODULS :
+
print("Frase invertida: %s" %''.join(reversed(frase)))
    print(modul)
 
 
</source>
 
</source>
 
-->
 
-->
  
2. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, demani la nota obtinguda de cada mòdul i ens digui quants mòduls ha aprovat, ha suspès o té convalidats.
+
11. Volem un programa per treballar amb cadenes que mitjançant un menú ens permeti les següents opcions:
<!--
+
 
 +
:*Mostrar els n primers caràcters d’una cadena
 +
:*Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta)
 +
:*Eliminar els espais en blanc que hi hagi al final de la cadena
 +
:*Eliminar els espais en blanc que hi hagi al principi de la cadena
 +
:*Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p
 +
:*Inserir una cadena dins d’una altra a partir de la posició p
 +
:*Comptar el nombre de vegades que apareix una cadena dins d’una altra
 +
:*Esborrar totes les aparicions d’una cadena dins d’una altra
 +
 
 +
<!--
 
<source lang = "python">
 
<source lang = "python">
print("Programa mòduls aprovats, suspesos i convalidats de 1r d'ASIX \n")
+
salir = False
 +
while not salir:
 +
        print("Menú de opciones")
 +
        print("----------------")
 +
        print("1. Mostrar els n primers caràcters d’una cadena\n"
 +
            + "2. Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta)\n"
 +
            + "3. Eliminar els espais en blanc que hi hagi al final de la cadena\n"
 +
            + "4. Eliminar els espais en blanc que hi hagi al principi de la cadena\n"
 +
            + "5. Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p\n"
 +
            + "6. Inserir una cadena dins d’una altra a partir de la posició p\n"
 +
            + "7. Comptar el nombre de vegades que apareix una cadena dins d’una altra\n"
 +
            + "8. Esborrar totes les aparicions d’una cadena dins d’una altra\n"
 +
            + "9. Sortir\n")
 +
        opcion = int(input("Introdueix una opció de menú: "))
 +
        cadena = input("Introdueix una cadena de text: ")
 +
        #numeric = int(input("Has d'introduir un valor numèric: "))
 +
        if opcion == 1:
 +
            n = int(input("Introdueix el nombre de caràcters a mostrar: "))
 +
            print(cadena[0:n])
 +
        elif opcion == 2: 
 +
            n = int(input("Introdueix el nombre de caràcters a mostrar: "))
 +
            print(cadena[-n:])
 +
        elif opcion == 3:
 +
            print(cadena.rstrip())
 +
        elif opcion == 4:
 +
            print(cadena.lstrip())
 +
        elif opcion == 5:
 +
            # Opción 1
 +
            n = int(input("Introdueix el nombre de caràcters a eliminar: "))
 +
            posini = int(input("Introdueix la posició inicial: "))
 +
            posfin = len(cadena)
 +
            print(cadena[:-(posfin-posini)] + cadena[n+posini:posfin])
 +
            # Opción 2
 +
            #for car in range(len(cadena)):
 +
            #    if car < posini or car >= (n+posini):
 +
            #        print(cadena[car], end='')
 +
            #print("\n")       
 +
        elif opcion == 6:
 +
            # Opció 1
 +
            #scaner = input("Introdueix la cadena(palabra) a insertar: ");
 +
            #posini = int(input("Introdueix la posició de la cadena: "));
 +
            #cadsplit = cadena.split()
 +
            #cadsplit.insert(posini-1, scaner)
 +
            #cadenafinal = ' '.join(cadsplit)
 +
            #print(cadenafinal)
 +
            # opció 2
 +
            cad = input("Introdueix la cadena(palabra) a insertar: ");
 +
            posini = int(input("Introdueix la posició de la cadena: "));
 +
            print(cadena[:posini] + cad + cadena[posini:])           
 +
        elif opcion == 7:
 +
            scaner = input("Introdueix la cadena a buscar: ");
 +
            ocurrencias = cadena.count(scaner)
 +
            print(ocurrencias)
 +
        elif opcion == 8:
 +
            scaner = input("Introdueix la cadena a borrar: ");
 +
            replaced_text = cadena.replace(scaner, '')
 +
            print(replaced_text)
 +
            #Opció 2
 +
            posIni = 0         
 +
            posFin = cadena.find(scaner)
 +
            while posFin != -1:
 +
              cadAux += cadena[posIni:posFin]
 +
              posIni = posFin + len(scaner)
 +
              posFin = frase.find(scaner, posIni)
 +
            cadAux += cadena[posIni:]
 +
            cadena = cadAux
 +
            print("Frase sense la cadena: ", cadena)
 +
            #Opció 3
 +
            #posini = 0
 +
            #cadfin=[]
 +
            #for par in cadena.split():
 +
                #if par != scaner:
 +
                  #cadfin.insert(posini, par)
 +
                  #posini +=1
 +
            #print(" ".join(cadfin))
 +
        elif opcion == 9:
 +
            salir = True
 +
            print("¡Adiós!")
 +
        else:
 +
            print ("Introduce un numero entre 1 y 9\n")
 +
</source>
 +
-->
 +
 
 +
12. Escriu un programa per comparar dues cadenes introduïdes per l’usuari. L’aplicació
 +
rebrà com a entrada el nombre de caràcters a comparar i l’índex inicial de cada cadena
 +
de la comparació. L’aplicació haurà d’indicar si les subcadenes són iguals.
 +
 
 +
<!--
 +
<source lang = "python">
 +
print("Comparació de substrings")
  
# Constant
+
# Introducció de dades
MODULS = ["Sistemes operatius", "Gestió de bases de dades", "Programació bàsica", "Llenguatge de marques", "Fonaments de maquinari", "Planificació i administració de xarxes", "Implantació d'aplicacions web", "Formació i orientació laboral"]
+
cadena1 = input("Introdueix una cadena: ")
 +
cadena2 = input("Introdueix una altra cadena: ")
 +
numCar = int(input("Introdueix nombre de caràcters a comparar: "))
 +
index1 = int(input("Posició inicial cadena 1: "))
 +
index2 = int(input("Posició inicial cadena 2: "))
  
# Inicialitzar variables
+
# Comprovació dels límits de les cadenes
aprovats = 0
+
if (len(cadena1) < index1 + numCar) or (len(cadena2) < index2 + numCar):
suspesos = 0
+
    print("S'excedeixen els límits de les cadenes")
convalidats = 0
 
  
# Recórrer la llista i demanar cada nota
+
# Comparació dels substrings
for modul in MODULS :
+
else:
     nota = input("Nota de %s: " %modul)
+
     subCad1 = cadena1.lower()[index1-1:index1-1+numCar]
     if nota == "convalidat":
+
    subCad2 = cadena2.lower()[index2-1:index2-1+numCar]
       convalidats += 1
+
     if subCad1 == subCad2:
    elif int(nota) >= 5 :
+
       print("Les subcadenes són iguals. Subcadena: %s" %subCad1)
      aprovats += 1
+
     else:
     else :
+
       print("No són iguals. Subcadena1: %s, Subcadena2: %s" %(subCad1, subCad2))
       suspesos += 1
+
</source>
 +
-->
  
# Mostrar el resultat
+
13. Escriu una aplicació que rebi com a entrada una línia de text i un caràcter de cerca
 +
i indiqui el nombre d’ocurrències del caràcter en el text.
  
print("Aprovats: ", aprovats)
 
print("Suspesos: ", suspesos)
 
print("convalidats: ", convalidats)
 
 
</source>
 
</source>
 
-->
 
-->
 
3. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, demani la nota obtinguda de cada mòdul i elimini de la llista els aprovats i convalidats i mostri els mòduls pendents d'aprovar.
 
 
<!--
 
<!--
 
<source lang = "python">
 
<source lang = "python">
print("Programa mòduls pendents de 1r d'ASIX \n")
 
  
# Inicialitzar moduls
+
print("Programa comptar ocurrències caràcter en una frase")
moduls = ["Sistemes operatius", "Gestió de bases de dades", "Programació bàsica", "Llenguatge de marques", "Fonaments de maquinari", "Planificació i administració de xarxes", "Implantació d'aplicacions web", "Formació i orientació laboral"]
+
 
 +
# Entrada: frase a avaluar. Per ex: "La ment que s'obre a una nova idea, mai torna a la seva mida original."
 +
frase = input("Introdueix la frase a avaluar: ")
 +
caracter = input("Introdueix un caràcter: ")
  
 
# Inicialitzar variables
 
# Inicialitzar variables
aprovats = []
+
comptador = 0
 +
pos = frase.find(caracter)
 +
# Comptar ocurrències caràcter
 +
while pos != -1 :
 +
  comptador += 1
 +
  pos = frase.find(caracter,pos+1)
 +
# Mostrar el resultat
 +
print ("Hi ha %d %s's en la frase" %(comptador,caracter))
 +
</source>
 +
-->
  
# Recórrer la llista i demanar cada nota
+
14. Féu un programa que llegeixi una cadena de caràcters i indiqui si la cadena és un
for modul in moduls :
+
palíndrom. Un palíndrom és una cadena que es llegeix d’igual manera
    nota = input("Nota de %s: " %modul)
+
d’esquerra a dreta que de dreta a esquerra. Com per exemple : dabale arroz a la
    if nota == "convalidat" or int(nota) >= 5 :
+
zorra el abad. Cal entendre que per poder-ho fer d’aquesta manera no han
      aprovats.append(modul)
+
d’haver-hi espais en blanc.
  
# Treure els mòduls aprovats
+
<!--
for modul in aprovats :
+
:'''Slicing: indicant un rang'''
     moduls.remove(modul)
+
<source lang = "python">
 
+
miCadenaDeTexto = input("Introdueix una cadena: ")
# Mostrar els mòduls pendents
+
# Imprimeix si"Es palíndrom"
print("Mòduls pendents: "+ str(moduls))
+
if miCadenaDeTexto == miCadenaDeTexto[::-1]:
 +
    print("És palindrom")
 +
else:
 +
     print("No és palindrom")
 +
</source>
 +
:'''Funció reversed'''
 +
<source lang = "python">
 +
miCadenaDeTexto = input("Introdueix una cadena: ")
 +
# Imprimeix si"Es palíndrom"
 +
if miCadenaDeTexto == "".join(reversed(miCadenaDeTexto)):
 +
    print("És palindrom")
 +
else:
 +
    print("No és palindrom")
 
</source>
 
</source>
 
-->
 
-->
  
4. Feu un programa que donades dues llistes inicialitzades amb els valors [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1], posi a una tercera llista, per a cada posició, la suma dels elements de les altres llistes.  
+
15. '''languageGames''': En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants:
<!--
 
<source lang = "python">
 
# Inicialitzar les llistes
 
llista1 = [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1]
 
llista2 = [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1]
 
  
# Declarar la llista resultat
+
:'''a) Jerigonza''' (variant lúdica del castellà): després de cada vocal s'afegeix una 'p' i es repeteix la vocal.
resultat = []
 
  
# Recórrer les llistes
+
Exemples:
for i in range(len(llista1)):
 
  
    # suma de cada posició de les dues llistes
+
::*“casa” seria “capasapa”
    resultat.append(llista1[i] + llista2[i])
+
::*“Gabriel” seria “Gapabripiepel”
 +
::*“murcielago” seria “mupurcipiepelapagopo”
 +
 
 +
'''NOTA:''' Per simplificar-ho suposarem que no s'introdueixen accents.
 +
 
 +
:'''b) Basic Pig Latin''' (variant lúdica de l'anglès): tenim dues regles:
  
# Mostrar la llista amb el resultat
+
:A les paraules que comencen per vocal se'ls afegeix al darrera el sufix “ay”. Exemples:
print(resultat)
 
</source>
 
-->
 
  
5. Fes un programa que donada una llista de números ja inicialitzada, la recorri amb un for i quan surti del for imprimeixi el valor més petit de la taula.
+
::*“ant” seria “antay”
 +
::*“astronaut” seria “astronautay”
  
<!--
+
:A les paraules que comencen per consonant, es mouen totes les consonants del davant de la primera vocal al final i s'afegeix el sufix “ay”. Exemples:
<source lang = "python">
 
# Inicialitzar la llista
 
llista_num = [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1]
 
  
# Inicialitzar més petit
+
::*“mess” seria “essmay”
mesPetit = llista_num[0]
+
::*“father” seria “atherfay”
 +
::*“chick” seria “ickchay”
 +
::*“star” seria “arstay”
  
# Recórrer la llista
+
Cal fer un menú amb tres opcions: Jerigonza, Basic Pig latin i Sortir.
for numActual in llista_num :
 
  
    # En cas que el número actual sigui més petit s'actualtiza mesPetit
 
    if numActual < mesPetit :
 
      mesPetit = numActual
 
  
# Mostrar la llista amb el resultat
+
'''NOTA:''' Per simplificar, podeu suposar que la dada d'entrada serà UNA ÚNICA paraula i que aquesta no tindrà ni accents ni caràcters diferents de lletres.
print("Número més petit de la llista:", mesPetit)
 
</source>
 
-->
 
  
6. Fes un programa que donada una llista de números ja inicialitzada, imprimeixi per pantalla els valors en ordre invers.  
+
== A4.2 Exercicis Llistes ==
  
 +
1. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, la mostri per pantalla.
 
<!--
 
<!--
 
<source lang = "python">
 
<source lang = "python">
# Inicialitzar la llista
+
print("Programa mòduls 1r d'ASIX")
llista_num = [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1]
+
print("-------------------------")
 +
 
 +
# Constant
 +
MODULS = ["Sistemes operatius", "Gestió de bases de dades", "Programació bàsica", "Llenguatge de marques", "Fonaments de maquinari", "Planificació i administració de xarxes", "Implantació d'aplicacions web", "Formació i orientació laboral"]
  
# Recórrer la llista en ordre invers
+
# Recórrer la llista i mostrar cada mòdul
for num in reversed(llista_num) :
+
for modul in MODULS :
   
+
     print(modul)
    # Mostrar el número de la posició índex
 
     print(num)
 
 
</source>
 
</source>
 
-->
 
-->
  
7. Fes un programa que faci una rotació cap a l’esquerra o cap a la dreta (segons ens indiqui l’usuari) de tots els elements de una llista (en rotació esquerra l’element que està a la primera posició passarà a l’ultima i en rotació dreta l’element que està l’últim passarà a la primera posició).  
+
2. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, demani la nota obtinguda de cada mòdul i ens digui quants mòduls ha aprovat, ha suspès o té convalidats.
 
<!--
 
<!--
 
<source lang = "python">
 
<source lang = "python">
# Inicialitzar la llista
+
print("Programa mòduls aprovats, suspesos i convalidats de 1r d'ASIX \n")
llista_num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
 
  
# Inicialitzar sentit rotació
+
# Constant
rotacio = input("Rotació esquerra o dreta? ")
+
MODULS = ["Sistemes operatius", "Gestió de bases de dades", "Programació bàsica", "Llenguatge de marques", "Fonaments de maquinari", "Planificació i administració de xarxes", "Implantació d'aplicacions web", "Formació i orientació laboral"]
  
if rotacio == "esquerra" :
+
# Inicialitzar variables
 +
aprovats = 0
 +
suspesos = 0
 +
convalidats = 0
  
# Rotació esquerra
+
# Recórrer la llista i demanar cada nota
  aux = llista_num[0]
+
for modul in MODULS :
  for index in range(len(llista_num)-1) :
+
    nota = input("Nota de %s: " %modul)
       llista_num[index] = llista_num[index +1]
+
    if nota == "convalidat":
  llista_num[len(llista_num)-1] = aux
+
       convalidats += 1
  print(llista_num)
+
    elif int(nota) >= 5 :
 +
      aprovats += 1
 +
    else :
 +
      suspesos += 1
  
elif rotacio == "dreta" :
+
# Mostrar el resultat
  
# Rotació dreta
+
print("Aprovats: ", aprovats)
  aux = llista_num[len(llista_num)-1]
+
print("Suspesos: ", suspesos)
  for index in range(len(llista_num)-1, 0, -1) :
+
print("convalidats: ", convalidats)
      llista_num[index] = llista_num[index-1]
+
</source>
  llista_num[0] = aux
+
-->
  print(llista_num)
 
  
else :
+
3. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, demani la nota obtinguda de cada mòdul i elimini de la llista els aprovats i convalidats i mostri els mòduls pendents d'aprovar.
# Opció incorrecte
 
  print("Opció incorrecte: opcions vàlides són esquerra o dreta")
 
</source>
 
-->
 
 
 
 
 
 
 
 
 
Encara no!. Feu un programa anomenat '''ParaulesSenars''' que llegeixi una frase escrita en una sola línia des del teclat i tot seguit escrigui les paraules que hi ha en posició senar (la primera, la tercera, etc.). Per exemple, si s'escriu “Hi havia una vegada un lloc...”, es mostrarà “Hi una un”.
 
 
<!--
 
<!--
 
<source lang = "python">
 
<source lang = "python">
print("Programa paraules senars d'una frase")
+
print("Programa mòduls pendents de 1r d'ASIX \n")
 +
 
 +
# Inicialitzar moduls
 +
moduls = ["Sistemes operatius", "Gestió de bases de dades", "Programació bàsica", "Llenguatge de marques", "Fonaments de maquinari", "Planificació i administració de xarxes", "Implantació d'aplicacions web", "Formació i orientació laboral"]
  
 
# Inicialitzar variables
 
# Inicialitzar variables
frase = input("Introdueix una frase: ")
+
aprovats = []
index = 0
+
 
 +
# Recórrer la llista i demanar cada nota
 +
for modul in moduls :
 +
    nota = input("Nota de %s: " %modul)
 +
    if nota == "convalidat" or int(nota) >= 5 :
 +
      aprovats.append(modul)
  
# Obtenir llista de paraules
+
# Treure els mòduls aprovats
paraules = frase.split(' ')
+
for modul in aprovats :
 +
    moduls.remove(modul)
  
# Recórrer la llista i mostrar les paraules senars
+
# Mostrar els mòduls pendents
while index < len(paraules) :
+
print("Mòduls pendents: "+ str(moduls))
    # Mostrar la paraula
 
    print(paraules[index])
 
    # Paraula següent
 
    index +=2
 
 
</source>
 
</source>
 
-->
 
-->
  
== A4.3 Exercicis Diccionaris ==
+
4. Feu un programa que donades dues llistes inicialitzades amb els valors [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1], posi a una tercera llista, per a cada posició, la suma dels elements de les altres llistes.  
 
 
1. Escriu un programa que llegeixi una frase i crei un diccionari amb la quantitat d'aparicions de cada caràcter. A continuació, mostra el contingut del diccionari.
 
 
<!--
 
<!--
 
<source lang = "python">
 
<source lang = "python">
print("Repeticions caràcters en una frase  \n")
+
# Inicialitzar les llistes
 +
llista1 = [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1]
 +
llista2 = [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1]
  
# Inicialització diccionari i frase
+
# Declarar la llista resultat
caracters = {}
+
resultat = []
frase = input("Escriu una frase: ")
 
  
# Recórrer la frase i comptar caràcter
+
# Recórrer les llistes
for caracter in frase:
+
for i in range(len(llista1)):
    if caracter in caracters:
 
      caracters[caracter] += 1 # el caràcter ja està en el diccionari
 
    else:
 
      caracters[caracter] = 1  # primera aparició del caràcter
 
  
# Mostrar el resultat
+
    # suma de cada posició de les dues llistes
for clau,valor in caracters.items():
+
    resultat.append(llista1[i] + llista2[i])
    print(clau,":",valor)
+
 
 +
# Mostrar la llista amb el resultat
 +
print(resultat)
 
</source>
 
</source>
 
-->
 
-->
  
2. Escriu un programa, que declari un diccionari amb l'inventari d'un departament d'informàtica (ordinadors sobretaula, portàtils, projectors, impressores, ...). Presenteu un menú amb les opcions necessaris per fer un manteniment de l'inventari (insercions, actualitzacions i eliminacions). La darrera opció del menú serà per sortir del programa.
+
5. Fes un programa que donada una llista de números ja inicialitzada, la recorri amb un for i quan surti del for imprimeixi el valor més petit de la taula.  
 
 
 
<!--
 
<!--
 
<source lang = "python">
 
<source lang = "python">
inventari = {"ordinadors": 102, "portatils": 25, "projectors": 6, "impressores": 3}
+
# Inicialitzar la llista
 +
llista_num = [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1]
  
print("Menú principal \n 1. Afegir \n 2. Actualitzar \n 3. Eliminar \n 4. Llistat \n 5. Sortir \n")
+
# Inicialitzar més petit
opcio = input("Opcio: ")
+
mesPetit = llista_num[0]
  
while opcio != 4
+
# Recórrer la llista
    if opcio = 1 :
+
for numActual in llista_num :
      producte = input("Nom del producte: ")
 
      unitats = int(input("Unitats: "))
 
      inventari[producte] = unitats
 
     
 
    elif opcio = 2 :
 
  
     elif opcio = 3 :fruta.lower() not in precios:
+
     # En cas que el número actual sigui més petit s'actualtiza mesPetit
        print("Fruta no existe.")
+
    if numActual < mesPetit :
 +
      mesPetit = numActual
  
    elif opcio = 4 :
+
# Mostrar la llista amb el resultat
   
+
print("Número més petit de la llista:", mesPetit)
    else :
 
        print("Opció incorrecte!!")
 
   
 
    print("Menú principal \n 1. Afegir \n 2. Actualitzar \n 3. Eliminar \n 4. Sortir \n")
 
    opcio = input("Opcio: ")
 
 
        cantidad = int(input("Dime la cantidad de frutas que has vendido:"))
 
        print("El precio es de %f" % (cantidad * precios[fruta]))
 
    opcion = input("¿Quieres vender otra fruta (s/n)")
 
    while opcion.lower() != "s" and opcion.lower() != "n":
 
        print("Menú principal \n 1. Afegir \n 2. Actualitzar \n 3. Eliminar \n 4. Sortir \n")
 
        opcio = input("¿Quieres vender otra fruta (s/n)")
 
    if opcion.lower() == "n":
 
        break
 
 
</source>
 
</source>
 
-->
 
-->
# Codifica un programa en python que nos permita guardar los nombres de los alumnos de una clase
 
# y las notas que han obtenido. Cada alumno puede tener distinta cantidad de notas.
 
# Guarda la información en un diccionario cuya claves serán los nombres de los alumnos
 
# y los valores serán listas con las notas de cada alumno.
 
  
# El programa pedirá el número de alumnos que vamos a introducir, pedirá su nombre e irá
+
6. Fes un programa que donada una llista de números ja inicialitzada, imprimeixi per pantalla els valors en ordre invers.  
# pidiendo sus notas hasta que introduzcamos un número negativo.
+
<!--
# Al final el programa nos mostrará la lista de alumnos y la nota media obtenida por cada uno de ellos.
+
<source lang = "python">
# Nota: si se introduce el nombre de un alumno que ya existe el programa nos dará un error.
+
# Inicialitzar la llista
 
+
llista_num = [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1]
alumnos = {}
+
print(llista_num)
cantidad = int(input("Introduce la cantidad de alumnos que vamos a guradar:"))
 
for num in range(cantidad):
 
    alumno = input("Nombre del alumno:")
 
    while alumno in alumnos:
 
        print("Alumno ya existe.")
 
        alumno = input("Nombre del alumno:")
 
    notas=[]
 
    nota = int(input("Dame una nota del alumno (negativo para terminar):"))
 
    while nota > 0:
 
        notas.append(nota)
 
        nota = int(input("Dame una nota del alumno (negativo para terminar):"))
 
    alumnos[alumno] = notas.copy()
 
 
 
for alumno, notas in alumnos.items():
 
    print("%s ha sacado de nota media %f" % (alumno,sum(notas)/len(notas)))
 
  
# Escribir un programa que implemente una agenda. En la agenda se podrán guardar nombres y números de teléfono.
+
# Recórrer la llista en ordre invers
# El programa nos dará el siguiente menú:
+
for num in reversed(llista_num) :
#
+
   
# * Añadir/modificar: Nos pide un nombre. Si el nombre se encuentra en la agenda, debe mostrar el teléfono y,
+
    # Mostrar el número de la posició índex
# opcionalmente, permitir modificarlo si no es correcto. Si el nombre no se encuentra, debe
+
    print(num, end= "  ")
# permitir ingresar el teléfono correspondiente.
+
print()
# * Buscar: Nos pide una cadena de caracteres, y nos muestras todos los contactos cuyos nombres comiencen por dicha cadena.
+
# print(llista_num.reverse())
# * Borrar: Nos pide un nombre y si existe nos preguntará si queremos borrarlo de la agenda.
+
</source>
# * Listar: Nos muestra todos los contactos de la agenda.
+
-->
#
 
# Implementar el programa con un diccionario.
 
  
agenda = {}
+
7. Fes un programa que faci una rotació cap a l’esquerra o cap a la dreta (segons ens indiqui l’usuari) de tots els elements de una llista (en rotació esquerra l’element que està a la primera posició passarà a l’ultima i en rotació dreta l’element que està l’últim passarà a la primera posició).
while True:
+
<!--
    print("\n")
+
<source lang = "python">
    print("1. Añadir/modificar")
+
# Inicialitzar la llista
    print("2. Buscar")
+
llista_num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    print("3. Borrar")
+
print(llista_num)
    print("4. Listar")
+
# Inicialitzar sentit rotació
    print("5. Salir")
+
rotacio = input("Rotació esquerra o dreta? ")
   
+
 
    opcion = int(input("Dime opción:"))
+
if rotacio == "esquerra" :
    if opcion == 1:
+
 
        nombre = input("Nombre del contacto:")     
+
# Rotació esquerra
        if nombre in agenda:
+
  llista_num.append(llista_num.pop(0))
            print("%s ya existe su número de teléfono es %s" % (nombre,agenda[nombre]))
+
  print(llista_num)
            opcion = input("Pulsa 's' si quieres modificarlo!!!. Otra tecla para continuar.")
+
 
            if opcion == "s":
+
elif rotacio == "dreta" :
                numero = input("Dame el nuevo número de teléfono:")
+
 
                agenda[nombre]=numero
+
# Rotació dreta
        else:
+
  llista_num.insert(0,llista_num.pop(len(llista_num)-1))
            numero = input("Dame el número de teléfono:")
+
  print(llista_num)
            agenda[nombre]=numero
+
 
    elif opcion == 2:
+
else :
        cadena = input("Nombre del contacto a buscar:")  
+
# Opció incorrecte
        for nombre, numero in agenda.items():
+
  print("Opció incorrecte: opcions vàlides són esquerra o dreta")
            if nombre.startswith(cadena):
+
</source>
                print("El número de teléfono de %s es el %s" % (nombre,agenda[nombre]))
+
-->
     elif opcion == 3:
+
 
        nombre = input("Nombre del contacto para borrar:")  
+
<!--
        if nombre in agenda:
+
<source lang = "python">
            opcion = input("Pulsa 's' si quieres borrarlo!!!. Otra tecla para continuar.")
+
# Inicialitzar la llista
            if opcion == "s":
+
llista_num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
                del agenda[nombre]
+
 
         else:
+
# Inicialitzar sentit rotació
            print("No existe el contacto")
+
rotacio = input("Rotació esquerra o dreta? ")
     elif opcion == 4:
+
 
        for nombre, numero in agenda.items():
+
if rotacio == "esquerra" :
            print(nombre,"->",numero)
+
 
     elif opcion == 5:
+
# Rotació esquerra
        break
+
   aux = llista_num[0]
 +
  for index in range(len(llista_num)-1) :
 +
      llista_num[index] = llista_num[index +1]
 +
  llista_num[len(llista_num)-1] = aux
 +
  print(llista_num)
 +
 
 +
elif rotacio == "dreta" :
 +
 
 +
# Rotació dreta
 +
  aux = llista_num[len(llista_num)-1]
 +
  for index in range(len(llista_num)-1, 0, -1) :
 +
      llista_num[index] = llista_num[index-1]
 +
  llista_num[0] = aux
 +
  print(llista_num)
 +
 
 +
else :
 +
# Opció incorrecte
 +
  print("Opció incorrecte: opcions vàlides són esquerra o dreta")
 +
</source>
 +
-->
 +
 
 +
8. Feu un programa anomenat '''ParaulesSenars''' que llegeixi una frase escrita en una sola línia des del teclat i tot seguit escrigui les paraules que hi ha en posició senar (la primera, la tercera, etc.). Per exemple, si s'escriu “Hi havia una vegada un lloc...”, es mostrarà “Hi una un”.
 +
<!--
 +
<source lang = "python">
 +
print("Programa paraules senars d'una frase")
 +
 
 +
# Inicialitzar variables
 +
frase = input("Introdueix una frase: ")
 +
index = 0
 +
 
 +
# Obtenir llista de paraules
 +
paraules = frase.split(' ')
 +
 
 +
# Recórrer la llista i mostrar les paraules senars
 +
while index < len(paraules) :
 +
    # Mostrar la paraula
 +
    print(paraules[index])
 +
    # Paraula següent
 +
    index +=2
 +
 
 +
# Amb for ...
 +
'''
 +
for index in range(0, len(paraules), 2):
 +
    print(paraules[index])
 +
'''
 +
</source>
 +
-->
 +
 
 +
9. Feu un programa, que crei una taula (llista de dos dimensions) de 5x5 de números enters. I a continuació, mostri la suma de tots els elements per files i per columnes.
 +
<!--
 +
<source lang = "python">
 +
print("Suma matriu per files i columnes")
 +
print("-------------------------")
 +
 
 +
Matriu = [[2, 3, 5, 1, 4],
 +
          [3, 3, 8, 9, 7],
 +
          [5, 7, 7, 5, 9],
 +
          [2, 4, 7, 3, 1],
 +
          [2, 2, 5, 6, 3]]
 +
 
 +
for f in Matriu:
 +
  print(f)
 +
print("")
 +
 
 +
#Suma files
 +
numfila = 1
 +
for fila in Matriu:
 +
  sumafila = sum(fila)
 +
  print("Suma fila %d: %d" %(numfila,sumafila)) 
 +
  numfila += 1
 +
 
 +
print()
 +
#Suma columnes
 +
numcol = 1
 +
for col in range (len(Matriu[0])):
 +
  sumacol = 0 
 +
  for fila in range(len(Matriu)):
 +
    sumacol += Matriu[fila][col]
 +
  print("Suma columna %d: %d" %(numcol,sumacol))  
 +
  numcol += 1
 +
</source>
 +
-->
 +
 
 +
10. Feu un programa per gestionar els resultats de la quiniela de futbol. Utilitzarem dues taules:
 +
 
 +
    Equips: taula (llista de dos dimensions) de cadenes on guardarem a cada columna el nom dels equips de cada partit. En la quiniela s'indiquen 15 partits.
 +
     Resultats: taula d'enters on s'indica el resultat. Dues columnes, en la primera es posa el número de gols de l'equip que està en la primera posició i en la taula anterior, i en la segona els gols de l'altre equip.
 +
 
 +
El programa anirà mostrant els noms dels equips de cada partit, i omplirà la taula de resultats, a continuació mostrarà la quiniela de aquesta jornada.
 +
<!--
 +
<source lang = "python">
 +
 
 +
</source>
 +
-->
 +
 
 +
== A4.3 Exercicis Diccionaris ==
 +
 
 +
1. Creeu un programa en python on declarareu un diccionari per guardar els preus de les diferents fruites d'un supermercat. El programa demanarà el nom de la fruita i la quantitat que s'ha venut i mostrarà el preu final de la fruita a partir de les dades guardades al diccionari. Si la fruita no existeix, ens donarà un error. Després de cada consulta, el programa ens preguntarà si volem fer una altra consulta.
 +
<!--
 +
<source lang = "python">
 +
# Preus de la fruita
 +
preus = {"pera": 2.19, "melon": 2.05, "sandia": 1.95, "platano": 2.4, "fresa": 4.89}
 +
 
 +
# Menú
 +
 
 +
opcio = input("Calcular preu d'un producte (s/n): ")
 +
 
 +
print("")
 +
 
 +
# Mentre no Sortir
 +
while opcio == 's' :
 +
 
 +
    # Demanar dades del producte
 +
    producte = input("Nom del producte: ")
 +
    if producte in preus:
 +
        pes = float(input("Pes del producte: "))           
 +
   
 +
    # Calcular preu del producte 
 +
        preuProducte = preus[producte]*pes     
 +
 
 +
    # Mostrar el preu total
 +
         print('Preu del producte: %.2f' %preuProducte)
 +
 
 +
    # El producte no existeix
 +
    else :
 +
        print("Aquest producte no existeix!!")
 +
 
 +
    # Calcular preu d'un altre producte
 +
     opcio = input("Calcular preu d'un altre producte (s/n): ")
 +
 
 +
</source>
 +
-->
 +
2. Escriu un programa que llegeixi una frase i crei un diccionari amb la quantitat d'aparicions de cada caràcter. A continuació, mostra el contingut del diccionari.
 +
<!--
 +
<source lang = "python">
 +
print("Repeticions caràcters en una frase  \n")
 +
 
 +
# Inicialització diccionari i frase
 +
caracters = {}
 +
frase = input("Escriu una frase: ")
 +
 
 +
# Recórrer la frase i comptar caràcter
 +
for caracter in frase:
 +
     if caracter in caracters:
 +
      caracters[caracter] += 1 # el caràcter ja està en el diccionari
 
     else:
 
     else:
         print("Opción incorrecta")
+
      caracters[caracter] = 1  # primera aparició del caràcter
 +
 
 +
# Mostrar el resultat
 +
for clau,valor in caracters.items():
 +
    print(clau,":",valor)
 +
</source>
 +
-->
 +
 
 +
3. Escriu un programa, que declari un diccionari amb l'inventari d'un departament d'informàtica (ordinadors sobretaula, portàtils, projectors, impressores, ...). Presenteu un menú amb les opcions necessaris per fer un manteniment de l'inventari (insercions, actualitzacions, eliminacions i llistat). La darrera opció del menú serà per sortir del programa.
 +
<!--
 +
<source lang = "python">
 +
# Declarem l'inventari inicial
 +
inventari = {"ordinadors": 102, "portatils": 25, "projectors": 6, "impressores": 3}
 +
 
 +
# Menú
 +
print("\nMenú principal \n\n 1. Afegir \n 2. Actualitzar \n 3. Eliminar \n 4. Llistat \n 5. Sortir \n")
 +
opcio = input("Opcio: ")
 +
print("")
 +
 
 +
# Mentre no Sortir
 +
while opcio != '5' :
 +
 
 +
    # Afegir producte comprovant que no existeix...
 +
    if opcio == '1' :
 +
      producte = input("Nom del producte: ")
 +
      if producte in inventari :
 +
          print("Aquest producte ja existeix!!")
 +
      else :
 +
          unitats = int(input("Unitats: "))
 +
          inventari[producte] = unitats
 +
 
 +
    # Actualitzar producte comprovant que existeix... 
 +
    elif opcio == '2' :
 +
      producte = input("Nom del producte: ")
 +
      if producte in inventari :
 +
          print("Unitats inventari: %d" %inventari[producte])
 +
          unitats = int(input("Unitats actuals: "))
 +
          inventari[producte] = unitats
 +
      else :
 +
          print("Aquest producte no existeix!!")
 +
 
 +
    # Eliminar producte comprovant que existeix...
 +
    elif opcio == '3' :
 +
      producte = input("Nom del producte: ")
 +
      if producte in inventari :
 +
          unitats = inventari.pop(producte)
 +
          print("El producte tenia %d unitats" %unitats)
 +
      else :
 +
          print("Aquest producte no existeix!!")
 +
 
 +
    # Llistat de tots els productes de l'inventari
 +
    elif opcio == '4' :
 +
        print("\nProducte      Unitats")
 +
        print("--------      -------")
 +
        for clau, valor in inventari.items():  # retorna les claus i els seus valors
 +
            print(clau.ljust(16)+str(valor).rjust(5))
 +
 +
   
 +
    else :
 +
        print("Opció incorrecte!!")
 +
 
 +
    # Menú 
 +
    print("\nMenú principal \n\n 1. Afegir \n 2. Actualitzar \n 3. Eliminar \n 4. Llistat \n 5. Sortir \n")
 +
    opcio = input("Opcio: ")
 +
    print("")
 +
 
 +
print("\n\nGràcies per utilitzar aquest programa!\n\n")
 +
</source>
 +
-->
 +
 
 +
4. Escriu un programa que implementi una agenda de telèfons. Utilitza un diccionari amb clau nom del contacte e i valor el seu telèfon. Presenteu un menú amb les opcions: afegir/modificar, cercar contactes, eliminar un contacte i sortir del programa.
 +
 
 +
Descripció de les opcions:
 +
:* Afegir/modificar: demana un nom de contacte. Si es troba en l'agenda ha de mostrar el telèfon i, opcionalment, permetre modificar-lo. Si el nom no es troba enl'agenda es demanarà el telèfon i s'afagirà el contacte a l'agenda.
 +
:* Cercar: demana els primers caracters dels noms i mostrarà tots els noms dels contactes que comencin per aquests caracters juntament en els seus respectius telèfons.
 +
:* Eliminar: demana el nom d'un contacte i si existeix mostra el seu telèfon i demana confirmació per elimniar-lo; en cas afirmatiu l'eliminarà de l'agenda. Si el contacte no existeix informarà del fet.
 +
:* Llistar: mostrarà tots els contactes de l'agenda, juntament amb els seus telèfons.
 +
:* Sortir: finalitzarà el programa amb un missatge de comiat.
 +
<!--
 +
<source lang = "python">
 +
print("Agenda de contactes")
 +
 
 +
# Declarmem el diccionari
 +
agenda = {}
 +
 
 +
# Menú
 +
print("\nMenú principal \n\n 1. Afegir/modificar \n 2. Cercar \n",
 +
                            "3. Eliminar \n 4. Llistar \n",
 +
                            "5. Sortir \n")
 +
opcio = input("Opció: ")
 +
print("")
 +
 
 +
# Mentre no Sortir
 +
while opcio != '5' :
 +
 
 +
    # Afegir / modificar persona i/o telèfon
 +
    if opcio == '1' :
 +
        nomContacte = input("Nom del contacte: ")
 +
        if nomContacte in agenda :
 +
            print("Telèfon actual: ", agenda[nomContacte])
 +
            if input("Vols modificar el telèfon (Sí / No): ").lower().startswith('s'):
 +
                nouTelefon = input("Telèfon: ")
 +
                agenda[nomContacte] = nouTelefon
 +
        else:
 +
            nouTelefon = input("Telèfon: ")
 +
            agenda[nomContacte] = nouTelefon
 +
 
 +
    # Cercar totes les persones que comencin per una subcadena
 +
    elif opcio == '2' :
 +
        nomContacte = input("Introdueix inici noms: ")
 +
        print("\nContacte    Telèfon")
 +
        print("---------    -------")
 +
        for contacte, telefon in agenda.items():
 +
            if contacte.startswith(nomContacte):
 +
                print(contacte.ljust(12)+telefon)   
 +
 +
    # Eliminar una persona comprovant que existeix... 
 +
    elif opcio == '3' :
 +
        nomContacte = input("Nom del contacte: ")
 +
        if nomContacte in agenda :
 +
            print("Telèfon actual: ", agenda[nomContacte])
 +
            if input("Segur que vols elimiar aquest contacte (Sí / No): ").lower().startswith('s'):
 +
                contacteEl = agenda.pop(nomContacte) 
 +
        else :
 +
            print("Aquest contacte no existeix!!")
 +
 
 +
    # Llistat de tota l'agenda
 +
    elif opcio == '4' :
 +
        print("\nContacte    Telèfon")
 +
        print("---------    -------")
 +
        for contacte, telefon in agenda.items():  # retorna les claus i els seus valors
 +
            print(contacte.ljust(12)+telefon)   
 +
    else :
 +
        print("Opció incorrecte!!")
 +
 
 +
    # Menú 
 +
    print("\nMenú principal \n\n 1. Afegir/modificar \n 2. Cercar \n",
 +
                                "3. Eliminar \n 4. Llistar \n",
 +
                                "5. Sortir \n")
 +
    opcio = input("Opció: ")
 +
    print("")
 +
 
 +
print("\n\nGràcies per utilitzar aquest programa!\n\n")
 +
</source>
 +
-->
 +
 
 +
5. Crea un programa que permita introducir a un profesor las notas de sus estudiantes. Los datos se deberán almacenar en un diccionario como el siguiente:
 +
<pre>
 +
estudiantes = { 
 +
  1: { 
 +
"nombre": "Lorea", 
 +
  "nota": 8 
 +
      }, 
 +
  2: { 
 +
    "nombre": "Markel", 
 +
"nota": "4.2" 
 +
      }, 
 +
  3: { 
 +
      "nombre": "Julen", 
 +
"nota": 6.5 
 +
      } 
 +
}
 +
</pre>
 +
Una vez introducidos todos los datos, el programa mostrará una lista con los nombres de los estudiantes que han suspendido y otra con los que han aprobado. También calculará y mostrará la nota media de la clase.
 +
 
 +
<!--
 +
<source lang = "python">
 +
# Declarem el diccionari estudiants i el comptador d'alumnes
 +
estudiants = {}
 +
numAlumnes = 0
 +
 
 +
# Introduim els alumnes i les seves notes
 +
 
 +
opcio = input("Vols introduir un nou alumne?(s/n): ")
 +
print("")
 +
 
 +
# Mentre no Sortir
 +
while opcio == 's' :
 +
 
 +
    # Demanem dades de l'alumne
 +
 
 +
      nomAl = input("Nom de l'alumne: ")
 +
      notaAl =float(input("Nota de l'alumne: "))
 +
      numAlumnes += 1
 +
    # Introduim l'alumne i la seva nota en el diccionari 
 +
      estudiants[numAlumnes] = {"nom":nomAl,"nota":notaAl}
 +
   
 +
    # Més alumnes?
 +
      print("") 
 +
      opcio = input("Vols introduir un nou alumne?(s/n): ")
 +
      print("")
 +
 
 +
# Suspesos
 +
print("Alumnes suspesos")
 +
print("-----------------------------")
 +
 
 +
for numAl, alumne in estudiants.items():
 +
    if alumne["nota"] < float(5.0):
 +
      print(str(numAl).ljust(3)+alumne["nom"].ljust(16)+str(alumne["nota"]).rjust(5))
 +
print("")
 +
     
 +
# Suspesos
 +
print("Alumnes aprovats")
 +
print("-----------------------------")
 +
 
 +
for numAl, alumne in estudiants.items():
 +
    if alumne["nota"] >= float(5.0):
 +
      print(str(numAl).ljust(3)+alumne["nom"].ljust(16)+str(alumne["nota"]).rjust(5))
 +
 
 +
 
 +
</source>
 +
-->
 +
6. Escriu un programa, que ens permeti emmagatzemar els noms dels alumnes d'una classe i les notes obtingudes. Els alumnes poden tenir diferents número de notes. Utilitza un diccionari amb clau nom de l'alumne i valors les llistes de notes de cada alumne. Presenteu un menú amb les opcions: afegir alumne (sense notes), afegir alumne amb notes, afegir notes a un alumne, modificar una nota (primer cal mostrar-les), eliminar un alumne, mostrar les notes d'un alumne, calcular la nota mitjana, llistar tots els alumnes amb les seves notes i la darrera opció per sortir del programa.
 +
<!--
 +
<source lang = "python">
 +
print("Notes alumnes")
 +
 
 +
# Declarmem el diccionari
 +
alumnes = {}
 +
 
 +
# Menú
 +
print("\nMenú principal \n\n 1. Afegir alumne \n 2. Afegir alumne i notes \n",
 +
                            "3. Afegir notes a un alumne \n",
 +
                            "4. Modificar nota \n 5. Eliminar alumne \n",
 +
                            "6. Mostrar notes alumne \n 7. Calcula la mitja d'un alumne \n",
 +
                            "8. Llistat alumnes amb notes \n 9. Sortir \n")
 +
opcio = input("Opció: ")
 +
print("")
 +
 
 +
# Mentre no Sortir
 +
while opcio != '9' :
 +
 
 +
    # Afegir alumne sense notes comprovant que no existeix...
 +
    if opcio == '1' :
 +
        nomAlumne = input("Nom de l'alumne: ")
 +
        if nomAlumne in alumnes :
 +
            print("Aquest alumne ja existeix!!")
 +
        else :
 +
            alumnes[nomAlumne] = []
 +
 
 +
    # Afegir alumne amb notes comprovant que no existeix...
 +
    if opcio == '2' :
 +
      nomAlumne = input("Nom de l'alumne: ")
 +
      if nomAlumne in alumnes :
 +
          print("Aquest alumne ja existeix!!")
 +
      else :
 +
          print("Introdueix les notes de l'alumne (-1 per acabar)")
 +
          numNota = 1
 +
          nota = int(input("Nota %d alumne: " %numNota))
 +
          notes =[]
 +
          while nota != -1:
 +
              if nota >=0 and nota <=10:
 +
                  notes.append(nota)
 +
                  numNota += 1
 +
              else:
 +
                  print("Nota Incorrecte")             
 +
              nota = int(input("Nota %d alumne: " %numNota))
 +
          alumnes[nomAlumne] = notes
 +
 
 +
    # Afegir notes a un alumne comprovant que existeix... 
 +
    elif opcio == '3' :
 +
         nomAlumne = input("Nom de l'alumne: ")
 +
        if nomAlumne in alumnes :
 +
            print("Introdueix les noves notes de l'alumne (-1 per acabar)")
 +
            numNota = 1
 +
            nota = int(input("Nova nota %d alumne: " %numNota))
 +
            notes = alumnes[nomAlumne]
 +
            while nota != -1:
 +
                if nota >=0 and nota <=10:
 +
                    notes.append(nota)
 +
                    numNota += 1
 +
                else:
 +
                    print("Nota Incorrecte")             
 +
                nota = int(input("Nova nota %d alumne: " %numNota))
 +
            alumnes[nomAlumne] = notes
 +
        else :
 +
            print("Aquest alumne no existeix!!")
 +
 
 +
 
 +
    # Modificar una nota d'un alumne comprovant que existeix...
 +
    elif opcio == '4' :
 +
        nomAlumne = input("Nom de l'alumne: ")
 +
        if nomAlumne in alumnes :
 +
            # Mostrar les notes de l'alumne
 +
            numNota = 1
 +
            for nota in alumnes[nomAlumne]:
 +
                print("Nota %d: %d" %(numNota,alumnes[nomAlumne][numNota-1]))
 +
                numNota += 1
 +
            notaMod=int(input("Quina nota vols modificar? "))
 +
            if notaMod >= 1 and nota <= len(alumnes[nomAlumne]):
 +
                notaNova = int(input("Nota nova: "))
 +
                notaEl = alumnes[nomAlumne].pop(notaMod-1)
 +
                alumnes[nomAlumne].insert(notaMod-1,notaNova)
 +
        else :
 +
            print("Aquest alumne no existeix!!")
 +
 
 +
    # Eliminar un alumne comprovant que existeix... 
 +
    elif opcio == '5' :
 +
        nomAlumne = input("Nom de l'alumne: ")
 +
        if nomAlumne in alumnes :
 +
            notesEl = alumnes.pop(nomAlumne)
 +
        else :
 +
            print("Aquest alumne no existeix!!")
 +
 
 +
    # Mostrar notes d'un alumne
 +
    elif opcio == '6' :
 +
        nomAlumne = input("Nom de l'alumne: ")
 +
        if nomAlumne in alumnes :
 +
            print("\nAlumne      Notes")
 +
            print("------      -----")
 +
            print(nomAlumne.ljust(12)+str(alumnes[nomAlumne]))   
 +
        else :
 +
            print("Aquest alumne no existeix!!")
 +
 
 +
    # Calcular la mitja d'un alumne
 +
    elif opcio == '7' :
 +
        nomAlumne = input("Nom de l'alumne: ")
 +
        if nomAlumne in alumnes :
 +
            sumaNotes = 0;
 +
            print("\nAlumne      Mitja")
 +
            print("------      -----")
 +
            print(nomAlumne.ljust(12)+str(sum(alumnes[nomAlumne])/len(alumnes[nomAlumne])).rjust(5))   
 +
        else :
 +
            print("Aquest alumne no existeix!!")
 +
 
 +
    # Llistat de tots els alumnes
 +
    elif opcio == '8' :
 +
        print("\nAlumne      Notes")
 +
        print("------      -----")
 +
        for clau, valor in alumnes.items():  # retorna les claus i els seus valors
 +
            print(clau.ljust(12)+str(valor))   
 +
    else :
 +
        print("Opció incorrecte!!")
 +
 
 +
    # Menú 
 +
 
 +
    print("\nMenú principal \n\n 1. Afegir alumne \n 2. Afegir alumne i notes \n",
 +
                                "3. Afegir notes a un alumne \n",
 +
                                "4. Modificar nota \n 5. Eliminar alumne \n",
 +
                                "6. Mostrar notes alumne \n 7. Calcular la mitja d'un alumne \n",
 +
                                "8. Llistat alumnes amb notes \n 9. Sortir \n")
 +
    opcio = input("Opció: ")
 +
    print("")
 +
 
 +
print("\n\nGràcies per utilitzar aquest programa!\n\n")
 +
</source>
 +
-->
 +
 
 +
== A4.4 Exercicis Tuples ==
 +
 
 +
1.Escriviu un programa de Python que calculi el producte, multiplicant tots els números d'una tupla donada.
 +
 
 +
Original Tuple: (4, 3, 2, 2, -1, 18) Sortida: -864
 +
 
 +
<!--
 +
<source lang = "python">
 +
print("Multiplicar Tuples")
 +
nums = (4, 3, 2, 2, -1, 18)
 +
product = 1
 +
# recorren la tupla
 +
for x in nums:
 +
        product *= x
 +
print ("Tupla Original: ")
 +
print(nums)
 +
print("Multiplicant tots els nombres de la tupla:",product)
 +
 
 +
# Utilitzant una llista
 +
temp = list(nums)
 +
product = 1
 +
for x in temp:
 +
        product *= x
 +
print ("Tupla Original: ")
 +
print(temp)
 +
print("Multiplicant tots els nombres de la tupla:",product)
 +
 
 +
# Si entramos los valores por input:
 +
# temp = list(tuple(map(int,input("Entrar els elements de la Tupla: ").split())))
 +
</source>
 +
-->
 +
 
 +
2. Escriure un programa Python per comptar les ocurrències de tots els elements d'una tupla en una llista.
 +
Utilitzarem un bucle for i comptarem quantes vegades apareix cada element de la llista.
 +
 
 +
Exemples: Entrada: tupla = ('a', 'a', 'c', 'b', 'd') llista = ['a', 'b'] Sortida: 3
 +
<!--
 +
<source lang = "python">
 +
print("Ocurrències Tuples")
 +
tup = ('a', 'a', 'c', 'b', 'd')
 +
lst = ['a', 'b']
 +
count = 0
 +
for item in tup:
 +
    if item in lst:
 +
        count+= 1
 +
print("Ocurrencias", count)
 +
</source>
 +
-->
 +
 
 +
== A4.5 Exercicis Tipus definits per l'usuari (clases) ==
 +
 
 +
'''Exemplars llibres'''
 +
 
 +
Per a la gestió dels llibres d'una petita biblioteca és precís conèixer el seu títol, autor, l'ISBN (cadena de 17 caràcters: 978-3-16-148410-0), el número d'exemplar (1, 2, 3, ...) i si es troba prestat o no. Escriu un programa en java que:
 +
 
 +
a) Defineix una estructura denominada ExemplarLlibre que permeti emmagatzemar les dades de qualsevol llibre.
 +
 
 +
b) Declarara e inicialitza dues variables del tipus ExemplarLlibre
 +
 
 +
c) Comprova si les variables declarades representen exemplars d'un mateix llibre o de llibres diferents.
 +
 
 +
<!--
 +
:'''ClaseExemplarLlibre.py'''
 +
<source lang = "python">
 +
class ExemplarLlibre:
 +
    titol = ''
 +
    autor = ''
 +
    isbn = ''
 +
    exemplar = 0
 +
    prestat = False
 +
</source>
 +
:'''ExemplarsLlibres.py'''
 +
<source lang = "python">
 +
from ClaseExemplarLlibre import ExemplarLlibre
 +
 
 +
#Dues instàncies d'exemplar llibre
 +
llibre1 = ExemplarLlibre()
 +
llibre2 = ExemplarLlibre()
 +
 
 +
# Dades Llibre 1
 +
llibre1.titol = "Python 3"
 +
llibre1.autor = "Sébastien Chazallet"
 +
llibre1.isbn = "978-2-40-902575-4"
 +
llibre1.exemplar = 1
 +
llibre1.prestat = False
 +
 
 +
# Dades llibre 2
 +
llibre2.titol = "Learning python"
 +
llibre2.autor = "Lutz"
 +
llibre2.isbn = "978-0-59-651398-6"
 +
llibre2.exemplar = 1   
 +
llibre2.prestat = True
 +
 
 +
 
 +
# Comparem llibres
 +
   
 +
if llibre1.titol==llibre2.titol and llibre1.autor==llibre2.autor:
 +
  print("Són exemplars del mateix llibre")
 +
else:
 +
  print("No són exemplars del mateix llibre")
 +
     
 +
# Comparem instancies
 +
       
 +
if llibre1 == llibre2:
 +
  print("És la mateixa instancia!")         
 +
else:
 +
  print("No és la mateixa instancia")
 +
 
 +
       
 +
# I si copiem les dades ...
 +
       
 +
llibre2.titol = llibre1.titol
 +
llibre2.autor = llibre1.autor
 +
llibre2.isbn = llibre1.isbn
 +
llibre2.exemplar = llibre1.exemplar
 +
llibre2.prestat = llibre1.prestat
 +
       
 +
if llibre1 == llibre2:
 +
  print("És la mateixa instancia!")         
 +
else:
 +
  print("No és la mateixa instancia")       
 +
 
 +
       
 +
#I si assignem la instancia...
 +
 
 +
llibre2 = llibre1;
 +
 
 +
if llibre1 == llibre2:
 +
  print("És la mateixa instancia!")         
 +
else:
 +
  print("No és la mateixa instancia")         
 +
       
 +
#Aleshores que és llibre...
 +
print(llibre1)
 +
 
 +
# I si ara canviem l'autor del llibre1
 +
 
 +
llibre2.autor "Alfredo Moreno Muñoz"
 +
print(llibre1.autor)
 +
 
 +
</source>
 +
-->
 +
'''Estadístiques cargols'''
 +
 
 +
una fàbrica de cargols ens ha sol·licitat desenvolupar un programa en java que permeti obtenir e imprimir les estadístiques d'una determinada mostra de cargols. Per això, ens indiquen que cada cargol es caracteritza per la seva longitud i el seu diàmetre i que ambdues mesures han de emmagatzemar-se en un registre amb dos camps. El programa haurà de:
 +
 
 +
a) Sol·licitar a l'usuari les dades d'una mostra de cargols (longitud i diàmatre) i els emmagatzemi en una llista.
 +
 
 +
b) A partir de les dades introduïdes calcular i mostrar per pantalla la mitjana de les longituds i la mitjana dels diàmetres.
 +
 
 +
<!--
 +
:'''ClaseCargol.py'''
 +
<source lang = "python">
 +
class Cargol:
 +
    longitud = 0
 +
    diametre = 0
 +
</source>
 +
:'''llistaCargols.py'''
 +
<source lang = "python">
 +
from ClaseCargol import Cargol
 +
 
 +
# Inicialitzacio Variables
 +
llistaCargols = []
 +
sumaLongitud = 0
 +
sumaDiametre = 0
 +
 
 +
# Crear una llista de càrgols
 +
mesCargols = input('Vols introduir un nou càrgol (S/N)?')
 +
while mesCargols == 'S':
 +
  nouCargol = Cargol()
 +
  nouCargol.longitud = int(input('Longitud: '))
 +
  nouCargol.diametre = int(input('Diàmetre: '))
 +
  llistaCargols.append(nouCargol)
 +
  mesCargols = input('Vols introduir un nou càrgol (S/N)? ')
 +
 
 +
for carg in llistaCargols:
 +
  sumaLongitud += carg.longitud
 +
  sumaDiametre += carg.diametre
 +
 
 +
print("Mitja longituds dels cargols:", sumaLongitud / len(llistaCargols))
 +
print("Mitja Diàmetres dels cargols:", sumaDiametre / len(llistaCargols))
 +
 
 +
</source>
 +
-->
 +
 
 +
'''Llançament daus'''
 +
 
 +
Volem fer un estudi estadístic en relació al llançament d'un dau de sis cares. En concret volem obtenir 100 seqüències '''i a continuació''' determinar quina ha estat la seqüencia més llarga, la més curta, el número que s'ha repetit més vegades i el número que més vegades ha tancat una seqüencia.
 +
 
 +
Una seqüencia acaba quan han sortit totes les cares del dau.
 +
 
 +
Definiu la classe seqüencia per recullir totes les dades d'una seqüencia.
 +
 
 +
Per simular el llançament d'un dau utilitzeu la classe Ramdom:
 +
 
 +
<!--
 +
:'''EstadistiquesDau.py'''
 +
<source lang = "python">
 +
import random
 +
class EstDau:
 +
    tirades = 0
 +
    cares = {}
 +
    caraTancament = 0
 +
</source>
 +
:'''llençamentsDau.py'''
 +
<source lang = "python">
 +
from EstadistiquesDau import EstDau
 +
 
 +
# Inicialitzacio Variables
 +
NUM_SEQ = 10
 +
cara = 0
 +
sequencies=[]
 +
 
 +
# Generar seqüències
 +
for _ in range(NUM_SEQ):
 +
    seq = EstDau()
 +
    seq.cares = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0}
 +
    while seq.cares[1] == 0 or seq.cares[2] == 0 or seq.cares[3] == 0 or seq.cares[4] == 0 or seq.cares[5] == 0 or seq.cares[6] == 0:
 +
          cara = random.randrange(1,7) 
 +
          seq.cares[cara] += 1   
 +
          seq.tirades += 1
 +
    seq.caraTancament = cara
 +
    sequencies.append(seq)
 +
 
 +
# Resultats
 +
seqMesLlarga = sequencies[0].tirades
 +
numSeqMesLlarga = 1
 +
seqMesCurta = sequencies[0].tirades
 +
numSeqMesCurta = 1
 +
caraMesVegadesTancament = 0
 +
caraMesRepetida = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0}
 +
numSeq = 1
 +
for seq in sequencies:
 +
  print('Num seqüència: %2d Tirades: %2d Cara tancament: %2d' %(numSeq, seq.tirades, seq.caraTancament))
 +
  if seq.tirades > seqMesLlarga:
 +
      seqMesLlarga = seq.tirades
 +
      numSeqMesLlarga = numSeq
 +
  if seq.tirades < seqMesCurta:
 +
      seqMesCurta = seq.tirades
 +
      numSeqMesCurta = numSeq
 +
  for clau, valor in seq.cares.items():
 +
      caraMesRepetida[clau] += valor
 +
  numSeq += 1
 +
print('Seqüència mès llarga: %2d Tirades: %2d' %(numSeqMesLlarga, seqMesLlarga))
 +
print('Seqüència mès curta:  %2d Tirades: %2d' %(numSeqMesCurta, seqMesCurta))
 +
caraMesRep = 1
 +
repeticions = caraMesRepetida[1]
 +
for clau, valor in caraMesRepetida.items():
 +
      if valor > repeticions:
 +
          caraMesRep = clau
 +
          repeticions = valor
 +
print(caraMesRepetida)
 +
print('Cara més repetida:  %2d Repeticions: %2d' %(caraMesRep, repeticions))
 +
</source>
 +
-->
 +
 
 +
 
 +
== Controls ==
 +
 
 +
===Estructura alternativa===
 +
 
 +
'''Preu final vendes productes'''
 +
 
 +
Feu un programa per calcular el preu final de venda dels productes d’un mercat.
 +
 
 +
El programa ha de demanar la '''clau del producte''' del qual es vol calcular el preu final. Les possibles claus
 +
de productes son:
 +
 
 +
:*‘F’: per els productes que són fruites
 +
:*‘V’: per els productes que són verdures
 +
:*‘L’: per els productes que són làctics
 +
 
 +
Si la clau introduïda no està en el llistat anterior, el programa ha de mostrar a l’usuari el següent error:
 +
:‘Valor no vàlid’
 +
 
 +
Si la clau introduïda està en el llistat, aleshores, ha demanar a l’usuari el '''preu de l’article''' i el '''dia de la setmana''' per tal de calcular i mostrar el preu final del producte aplicant el corresponent descompte utilitzant els següents criteris:
 +
 
 +
:1. Els dilluns tenen un 10% de descompte els productes que són làctics
 +
:2. Els dimarts tenen un 20% de descompte els productes que són fruites
 +
:3. Els cap de setmana tenen un 30% de descompte tots els productes
 +
:4. La resta de dies no hi ha descomptes
 +
 
 +
''Recordeu: Utilitzeu comentaris i poseu nombre a les variables per tal que els vostres programes siguin el més llegibles possibles.''
 +
<!--
 +
'''Preu final comanda'''
 +
 
 +
Escriu un programa en Python per calcular el preu final d'una comanda en una botiga en línia. El programa ha de tenir en compte diferents criteris de descompte basats en el tipus de client i el total de la comanda.
 +
 
 +
El programa ha de demanar a l'usuari la següent informació:
 +
 
 +
:#Tipus de client (normal, premium, VIP).
 +
:#Import total de la comanda.
 +
 
 +
Segons el tipus de client i l'import total de la comanda, el programa ha d'aplicar els següents descomptes:
 +
 
 +
:#Si el client és normal:
 +
:::- Si la comanda supera els 100 euros, s'aplica un descompte del 5%.
 +
:::- Si la comanda supera els 200 euros, s'aplica un descompte addicional del 10%.
 +
 
 +
:#Si el client és premium:
 +
:::- S'aplica sempre un descompte del 10%.
 +
 
 +
:#Si el client és VIP:
 +
:::-S'aplica sempre un descompte del 20%.
 +
:::-Si la comanda supera els 500 euros, s'aplica un descompte addicional del 5%.
 +
 
 +
Finalment, el programa ha de mostrar el preu final de la comanda amb els descomptes aplicats.
 +
 
 +
-->
 +
 
 +
===Estructura iterativa===
 +
 
 +
Ex 1. Feu un programa que demani dos número i mostri la taula de multiplicar d'aquest número. Per exemple si el usuari introdueix el valor 5, mostrarà:
 +
 
 +
<pre>
 +
    5 * 1 = 5
 +
    5 * 2 = 10
 +
    5 * 3 = 15
 +
    5 * 4 = 20
 +
    5 * 5 = 25
 +
    5 * 6 = 30
 +
    5 * 7 = 35
 +
    5 * 8 = 40
 +
    5 * 9 = 45
 +
    5 * 10 = 50   
 +
</pre>
 +
'''4 punts'''
 +
 
 +
 
 +
Ex2. Feu un programa que demani el límit inferior i superior d'un interval. Si el límit inferior es major que el superior ho ha de tornar a demanar fins que sigui correcte. A continuació es demanaren nombres fins que s'introdueixi el número 0. El programa ha de mostrar la següent informació:
 +
 
 +
:* Suma de tots el nombres que es trobin dins del interval (sense incloure els límits).
 +
:* Quants nombres es troben fora del interval
 +
:* Cal indicar si s'ha introduït algun nombre igual als límits del interval.
 +
 
 +
'''4 punts'''
 +
 
 +
 
 +
Ex Extra. Fer el següent dibuix d'asteriscos per un valor imparell i més gran o igual a 9. Per exemple si l'usuari introdueix el valor 9, mostrarà:
 +
<pre>
 +
    *      *      *                *      *      *                        *           
 +
      *    *    *                    *    *    *                          *     
 +
        *  *  *                        *  *  *                        *  *  * 
 +
          * * *                            * * *                            * * *   
 +
    * * * * * * * * *                * * * * o * * * *                * * * * o * * * *
 +
          * * *                            * * *                            * * * 
 +
        *  *  *                        *  *  *                        *  *  *   
 +
      *    *    *                    *    *    *                          *       
 +
    *      *      *                *      *      *                        *   
 +
 
 +
    1 punt                            2 punts                          3 punts
 +
</pre>
 +
 
 +
::*[[ASIX-M3-UF1- Proves UF1-NF1|ASIX-M3-UF1- Proves UF1-NF1]]
 +
<!--
 +
 
 +
Ex 1.Escriu un programa en Python que calculi les potències d'un nombre introduït per l'usuari fins a un exponent màxim especificat. L'usuari haurà d'introduir un nombre base i un exponent màxim, i el programa haurà de calcular i mostrar les potències del nombre base des de l'exponent 1 fins a l'exponent màxim.
 +
 
 +
<pre>
 +
    Exemple
 +
   
 +
    Introdueix un nombre base: 3
 +
    Introdueix un exponent màxim: 5
 +
 
 +
    Potències del nombre 3 fins a l'exponent 5:
 +
    3**1 =  3
 +
    3**2 =  3
 +
    3**3 =  3
 +
    3**4 =  3
 +
    3**5 =  3
 +
</pre>
 +
'''4 punts'''
 +
 
 +
Ex 2. Feu un programa que demani dos números i mostri (del primer número al segon) i sumi tots els números de l'interval.
 +
 
 +
<pre>
 +
    Exemple 1
 +
   
 +
    num1 :  6
 +
    num2 : 10
 +
 
 +
    Els números són: 6 7 8 9 10
 +
    La suma és: 40
 +
 
 +
    Exemple 2
 +
 
 +
    num1 :  9
 +
    num2 :  4
 +
 
 +
    Els números són: 9 8 7 6 5 4
 +
    La suma és: 39
 +
</pre>
 +
'''4 punts'''
 +
 
 +
Ex Extra. Fer el següent dibuix d'asteriscos per un valor imparell i més gran o igual a 9. Per exemple si l'usuari introdueix el valor 9, mostrarà:
 +
<pre>
 +
    * * * * * * * * *                * * * * * * * * *            * * * * * * * * *         
 +
      *          *                    *          *                * * * * * * *       
 +
        *      *                        *      *                    * * * * *
 +
          *  *                            *  *                        * * *       
 +
            *                                o                            o 
 +
          *  *                            *  *                        * * * 
 +
        *      *                        *      *                    * * * * * 
 +
      *          *                    *          *                * * * * * * *     
 +
    * * * * * * * * *                * * * * * * * * *            * * * * * * * * *     
 +
 
 +
    1 punt                            2 punts                          3 punts
 +
-->
 +
===Cadenes===
 +
 
 +
'''languageGames''': En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants:
 +
 
 +
:'''a) Jerigonza''' (variant lúdica del castellà): després de cada vocal s'afegeix una 'p' i es repeteix la vocal.
 +
 
 +
Exemples:
 +
 
 +
::*“casa” seria “capasapa”
 +
::*“Gabriel” seria “Gapabripiepel”
 +
::*“murcielago” seria “mupurcipiepelapagopo”
 +
 
 +
'''NOTA:''' Per simplificar-ho suposarem que no s'introdueixen accents.
 +
 
 +
:'''b) Basic Pig Latin''' (variant lúdica de l'anglès): tenim dues regles:
 +
 
 +
:A les paraules que comencen per vocal se'ls afegeix al darrera el sufix “ay”. Exemples:
 +
 
 +
::*“ant” seria “antay”
 +
::*“astronaut” seria “astronautay”
 +
 
 +
:A les paraules que comencen per consonant, es mouen totes les consonants del davant de la primera vocal al final i s'afegeix el sufix “ay”. Exemples:
 +
 
 +
::*“mess” seria “essmay”
 +
::*“father” seria “atherfay”
 +
::*“chick” seria “ickchay”
 +
::*“star” seria “arstay”
 +
 
 +
Cal fer un '''menú amb tres opcions''': Jerigonza, Basic Pig latin i Sortir.
 +
 
 +
'''NOTA:''' Per simplificar, podeu suposar que la dada d'entrada serà UNA ÚNICA paraula i que aquesta no tindrà ni accents ni caràcters diferents de lletres.
 +
 
 +
<!--
 +
===Diccionaris===
 +
 
 +
1. Crea un programa de Login que comprovi l'usuari i contrasenya al diccionari definit a continuació:
 +
<pre>
 +
usuaris = { 
 +
      "ppujol": { 
 +
                  "nom": "Pere", 
 +
  "cognom": "Pujol", 
 +
  "password": "123123" 
 +
  }, 
 +
      "cmejia": { 
 +
          "nom": "Carla", 
 +
  "cognom": "Mejia", 
 +
  "password": "654321" 
 +
  }, 
 +
      "jpons": { 
 +
        "nom": "Joan", 
 +
  "cognom": "Pons", 
 +
  "password": "123456" 
 +
  } 
 +
    }
 +
</pre>
 +
 
 +
L'usuari tindrà un màxim de 3 intents, i en accedir correctament es mostrarà el nom i el cognom de l'usuari.
 +
 
 +
2. Feu un programa que defineixi per codi un diccionari i una llista, el diccionari amb l'estoc de productes informàtics (nom del producte i unitats) i la llista amb totes les operacions d'entrada (E) i sortida (S) que s'han realitzat al llarg del dia (producte, operació i unitats). El programa ha d'actualitzar l'estoc amb les operacions del dia i a continuació mostrar l'estoc amb un format com el de l'exemple:
 +
 
 +
 
 +
 
 +
Exemple
 +
# Productes i unitats
 +
 
 +
Stock =  {'Monitors': 102, 'Ratolins': 75, 'Teclats': 7, 'Impressores': 15}
 +
 
 +
# Operacions del dia
 +
 
 +
Operacions =[['Monitors','S',10],['Teclats','E',50],['Monitors','S',12],['HD','E',50],['Impressores','S',5],['HD','S',9]]
 +
 
 +
Stock data 07/05/2024
 +
 
 +
Producte     Unitats
 +
Monitors              80
 +
Ratolins            75
 +
Teclats            57 
 +
Impressores            10
 +
HD              41
 +
 
 +
 
 +
<source lang="python">                       
 +
# Declarem el diccionari amb l'estoc actual
 +
 
 +
Stock =  {'Monitors': 102, 'Ratolins': 75, 'Teclats': 7, 'Impressores': 15}
 +
 
 +
# Delclarem una llista amb totes les operacions del dia
 +
 
 +
Operacions =[['Monitors','S',10],['Teclats','E',50],['Monitors','S',12],['HD','E',50],['Impressores','S',5],['HD','S',9]]
 +
 
 +
# Per cada operació actualitzem l'estoc
 +
for operacio in Operacions:
 +
    print(operacio[1])
 +
    # Si l'operació és d'entrada
 +
    if operacio[1] == 'E':
 +
      if operacio[0] in Stock:
 +
          Stock[operacio[0]]+=operacio[2]
 +
      else:
 +
          Stock[operacio[0]]=operacio[2]
 +
    # Si l'operació és de sortida     
 +
    if operacio[1] == 'S':
 +
      if operacio[0] in Stock:
 +
          Stock[operacio[0]]-=operacio[2] 
 +
 
 +
print("Stock data 07/05/2024\n")         
 +
print(str("Producte").ljust(20)+"Unitats\n")
 +
# Mostrem l'estoc actualitzat
 +
for producte, unitats in Stock.items():
 +
    print(str(producte).ljust(25)+str(unitats))
 +
</source>
 +
-->
 +
<!--
 +
===Prova tipus de dades estructurades===
 +
 
 +
1.- Donada una frase i dos  caràcters introduïts per teclat, mostreu, si existeix, la cadena de caràcters de cada paraula de la frase compresa entre la primera aparició del primer caràcter i la darrera aparició del segon caràcter (ambdós caràcters inclosos).
 +
 
 +
'''3 punts'''
 +
 
 +
Per exemple si la frase és:
 +
 
 +
'''Quan creus que coneixes totes les respostes arriba l'univers i et canvia totes les preguntes'''
 +
 
 +
I els caràcters són : primer ‘'''e'''’ i segon ‘'''s'''’.
 +
 
 +
El resultat seria:
 +
 
 +
'''eus eixes es es espostes ers  es es eguntes'''
 +
 
 +
 
 +
2.- Feu un programa que a partir de dues llistes d'artícles, crei un altra només amb els productes que apareixen en les dues llistes. En la llista final '''no poden haver productes repetits'''. Utilitzeu les llistes de l’exemple.
 +
 
 +
'''3 punts'''
 +
 
 +
Exemple:
 +
 
 +
llistaArticles1 = ["ratolí", "ordinador", "CPU", "teclat", "ratolí", "disc dur”, “CPU"]
 +
 
 +
llistaArticles2 = ["pantalla", “teclat”, "impressora", "projector", "teclat", "CPU"]
 +
 
 +
articlesDuesLlistes = ["CPU", "teclat"]
 +
 
 +
 
 +
3.- Escriu un programa que gestioni les factures pendents de cobrament d’una empresa. Les factures s'emmagatzemaran a un diccionari on la clau de cada factura serà el número de factura i el valor el cost de la factura. El programa ha de preguntar a l’usuari si vol '''afegir''' una nova factura, '''pagar''' una existent o '''finalitzar'''. Si voleu afegir una nova factura es preguntarà pel número de factura i el seu cost i s'afegirà al diccionari. Si voleu pagar una factura es preguntarà pel número de factura i s'eliminarà del diccionari. Després de cada operació el programa ha de mostrar per pantalla la quantitat cobrada fins ara i la quantitat pendent de cobrament.
 +
 
 +
'''4 punts'''
 +
 
 +
Exemple d’execució del programa.
 +
<pre>
 +
Cobrat: 0
 +
Pendent de cobrament: 0
 +
 
 +
Vols afegir una factura nova (A), pagar-la (P) o finalitzar (F)? A
 +
Introdueix el número de la factura: 1
 +
Introdueix el cost de la factura: 150
 +
 
 +
Cobrat: 0
 +
Pendent de cobrament: 150.0
 +
 
 +
Vols afegir una factura nova (A), pagar-la (P) o finalitzar (F)? A
 +
Introdueix el número de la factura: 2
 +
Introdueix el cost de la factura: 300
 +
 
 +
Cobrat: 0
 +
Pendent de cobrament: 450.0
 +
 
 +
Vols afegir una factura nova (A), pagar-la (P) o finalitzar (F)? P
 +
Introdueix el número de la factura a pagar: 2
 +
 
 +
Cobrat: 300.0
 +
Pendent de cobrament: 150.0
 +
 
 +
Vols afegir una factura nova (A), pagar-la (P) o finalitzar (F)? A
 +
Introdueix el número de la factura: 3
 +
Introdueix el cost de la factura: 85
 +
 
 +
Cobrat: 300.0
 +
Pendent de cobrament: 235.0
 +
 
 +
Vols afegir una factura nova (A), pagar-la (P) o finalitzar (F)? P
 +
Introdueix el número de la factura a pagar: 1
 +
 
 +
Cobrat: 450.0
 +
Pendent de cobrament: 85.0
 +
 
 +
Vols afegir una factura nova (A), pagar-la (P) o finalitzar (F)? F
 +
</pre>
 +
-->
 +
[[ASIX-M3-UF1-Recuperació Extraordinària|PUF1-Recuperació Extraordinària]]

Revisió de 18:16, 28 maig 2024

A1.1 Exercicis seqüencials

1. Volem un programa que donat dos números enters ens mostri el resultat de les cinc operacions aritmètiques fetes amb aquests valors.

2. L’amo d’una botiga compra un article a un determinat preu. Mostreu el preu al qual el vendrà, si intenta guanyar un 30%.

3. En un hospital existeixen tres departaments: Ginecologia, Pediatria i Traumatologia.

El pressupost anual de l’hospital es reparteix així:

Ginecologia : 50%
Pediatria: 30%
Traumatologia: 20%

Obteniu la quantitat de diners que rebrà cada departament, per a qualsevol pressupost (que llegireu des de teclat).

4. Un alumne vol saber la seva nota final de programació. Aquesta nota es calcula així:

55% de la mitjana de tres exercicis
30% de la nota de l’examen
15% de la nota d’una pràctica final

5. Una família està formada per 6 membres: dos germans (Joan i Marta), els dos pares i els dos avis materns. De les seves edats sabem el següent:

a. L’avi té sis vegades l’edat de la Marta
b. L’avia té la suma de les edats dels pares menys l’edat de la Marta
c. L’edat del Joan és el resultat de fer el mòdul entre l’edat del pare i la de la Marta
d. L’edat de la mare és el triple de l’edat de la Marta afegint-li l’edat del Joan
e. L’edat del pare és el resultat de multiplicar per 6, la divisió entera entre l’edat de l’avi i l’edat de la Marta.
f. La Marta té 10 anys.

Quants anys tenen tots ? Mostrar-ho per pantalla.

6. El següent és el sou dels treballadors d’una empresa. Dissenyar un algorisme capaç de llegir el nombre de treballadors de cada tipus i calcular el sou total que s’ha de pagar mensualment.

a) Personal de neteja (500 euros)
b) Auxiliar administratiu (600 euros)
c) Administratiu (700 euros)
d) Informàtic (1200 euros)
e) Morro Consultant Senior (12000 euros)

A2.1 Exercicis estructura alternativa

Exercicis preliminars

1. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat (>=5).

2. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat o ha suspès.

3. Escriure un programa que demani dos números i digui si són iguals o diferents.

4. Escriure un programa que provi d'endevinar un número secret (poseu el número secret com a constant).

Exercicis sentencia if

1. Els treballadors d’una fàbrica treballen en dos torns: diürn i nocturn. Es vol calcular el salari d’un dia d’acord amb els següents punts:

a. La tarifa de les hores diürnes és de 4€
b. La tarifa de les hores nocturnes és de 6€
c. En cas de ser diumenge, la tarifa s’incrementa en 2€ el torn diari i en 3€ el torn nocturn.

El programa ha de llegir les hores treballades, el torn i el dia de la setmana i dir quin serà el salari.

2. Escriviu un programa que simuli una calculadora simple. El programa llegeix dos enters i un caràcter. Si el caràcter és un '+' s’imprimeix la suma, si és un '–' la resta, si és un '*' el producte, si és un '/' la divisió real, si és '//' la divisió entera i si és un '%', el mòdul.

3. Escriviu un programa que llegeixi del teclat un enter comprès entre 0 i 63 (inclosos) i ens digui el nombre de bits que necessitem per escriure’l en binari. No s’ha de fer servir cap funció calcular-ho, sinó simplement a base de if .. elif .. else, recordant que a cada potència de 2 necessitem un bit més.

4. Volem saber si una persona és major d’edat, per això llegirem la data de naixement(dia_neix, mes_neix i any_neix).

Utilitzeu el següent codi per obtenir dia, mes i any actual
from datetime import date

#Dia, mes i any actual

AVUI = date.today()
DIA_ACTUAL = AVUI.day
MES_ACTUAL = AVUI.month
ANY_ACTUAL = AVUI.year

5. Escriu un programa que llegeixi un número enter positiu i determini si es un número de 1, 2,3 o 4 xifres.

Control d'errors: Escriu els missatges pertinents si han introduït un valor fora del rang o si no han introduït un número enter.


6. En un casino de jocs es desitja mostrar els missatges respectius per els punts obtinguts en el llançament de tres daus d'un client, d'acord als següents resultats:

a) Si els tres daus són sis, mostrar el missatge "Excel·lent"
b) Si dos daus són sis, mostrar el missatge "Molt bé"
c) Si un dau és sis, mostrar el missatge "Regular"
d) Si cap dau és sis, mostrar el missatge "Pèssim"
Utilitzeu el següent codi per simular el llançament d'un dau
from random import randint

# Simulació del llançament d'un dau

dau = randint(1,6)

7. Demaneu tres números enters positius i mostreu-los en ordre descendent.

Control d'errors: Escriu els missatges pertinents si han introduït un valor negatiu, si no han introduït un enter o si han introduït números iguals.


8. Tres persones les edats de les quals s’han de llegir per teclat, van a un parc d’atraccions. El cost de l’entrada normal és de 20€. Però tenen els següents descomptes:

A. Els menors de 5 anys no paguen però han d’anar acompanyats d’algun més gran de 12 anys, sinó no poden entrar
B. Entre els 5 i els 12 anys paguen el 25 % de l’entrada
C. Entre els 12 anys i els 16 anys paguen el 50 % de l’entrada
D. Els més grans de 16 anys paguen l’entrada normal, excepte que els tres estiguin entre els 16 i els 18 anys, que aquest cas com hi ha una oferta, només pagaran dues entrades normals entre els tres.
E. Els més grans de 65 anys no paguen

Quan costaran les tres entrades?


A2.2 Exercicis avaluar expressions lògiques

Avalueu les següents condicions en funció dels valors corresponents de les variables

1. ((y<x) or ((y>1) and (x>1)))

a) x=1 y=1 
b) x=1 y=2 
c) x=2 y=1 
d) x=2 y=2 
e) x=0 y=0 
f) x=1 y=0 

2. (((x>3) and (x<6)) or not((y>3) and (y<6))) <==> (3<x<6) or not (3<y<6)

a) x=3 y=3 
b) x=3 y=4 
c) x=4 y=3 
d) x=4 y=4 

3. (z>x and z>y or x>=y)

a) x=1 y=1 z=1 
b) x=1 y=2 z=3 
c) x=1 y=3 z=2 
d) x=2 y=1 z=3 
e) x=2 y=3 z=1 
f) x=3 y=2 z=1 
g) x=3 y=1 z=2 

A2.3 Exercicis trobar expressions lògiques

  • Sent num1, num2, num3, num4 variables numèriques, escriviu l'expressió lògica corresponent a:
a) Els valors de num2 i num3 són tots dos superiors al valor de num4.
b) Els valors de num1, num2 i num3 són idèntics.
c) Els valors de num1, num2 i num3 són idèntics però diferents del valor de num4.
d) El valor de num2 està comprès, '''estrictament (<, >)''', entre els valors de num3 i num4, i el valor de num3 és més petit que el valor de num4.
  • En un algorisme que analitza els resultats d'exàmens, hi ha 3 variables definides: les variables notaLit, notaCat, notaMat que indiquen respectivament (per a un alumne en particular) les notes de literatura, català i matemàtiques. Totes les notes estan calculades sobre 10 i totes tenen el mateix pes. Escriviu les expressions lògiques corresponents a:
a) La mitjana de les tres notes és superior a 5.
b) Les notes de matemàtiques i català són superiors a la mitjana de les tres notes.
c) Hi ha, com a mínim, una nota superior a 5.
d) Totes les notes són superiors a 5.
  • Siguin vendesP1, vendesP2 i vendesP3 tres variables enteres que representen les vendes de tres productes.
Utilitzant aquestes variables, escriu les expressions que representin les següents afirmacions:
a) Les vendes del producte P1 són les més elevades.
b) Cap producte té unes vendes inferiors a 200.
c) Algun producte té unes vendes superiors a 400.
d) La mitjana de vendes és superior a 500.
e) El producte P2 no és el més venut.
f) El total de vendes està entre 500 i 1000.

A2.4 Exercicis estructura iterativa

1. Imprimir els números del 1 al 100.

2. Imprimir els números parells del 0 al 98.

3. Imprimir els números del 100 al 1.

4. Demanar cinc números i mostrar la suma.

5. Igual que l'anterior però només sumant els valors més grans de 10.

6. Calcular el producte dels números del 1 al 10.

7. Demanar cinc números enters positius i mostrar el valor més gran.

8. Fer un quadrat d'asteriscos. Per exemple si l'usuari introdueix el valor 5, imprimirà:

    * * * * *
    * * * * *
    * * * * *
    * * * * *
    * * * * *


9. Com l'anterior però fent un quadrat buit. Per exemple si l'usuari introdueix el valor 5, imprimirà:

    * * * * *
    *       *
    *       *
    *       *
    * * * * *

10. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)

    * 
    * * 
    * * * 
    * * * * 
    * * * * *

11. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)

    * * * * *
    * * * * 
    * * * 
    * * 
    * 

12. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)

            *
          * *
        * * *
      * * * *
    * * * * *

13. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)

    * * * * *
      * * * *
        * * *
          * *
            *

Bucles niuats

14. Escriu un programa que llegeixi un número num i mostri per pantalla el següent:

    Exemple num=5
    1
    1 2
    1 2 3
    1 2 3 4 
    1 2 3 4 5

15. Escriu un programa que llegeixi un número i mostri per pantalla el següent:

    Exemple num=5

    5 4 3 2 1
    4 3 2 1
    3 2 1
    2 1 
    1 

16. Escriu un programa que llegeixi un número i mostri per pantalla el següent:

    Exemple num=5

            1
          2 1
        3 2 1
      4 3 2 1
    5 4 3 2 1

17. Escriu un programa que llegeixi un número imparell i mostri per pantalla el següent:

    Exemple num=9

    1
    3 1
    5 3 1
    7 5 3 1
    9 7 5 3 1

18. Escriu un programa que llegeixi un número enter més gran que 0 i mostri el factorial de tots els números entre 1 i el número introduït.

    Exemple num = 4

    1! = 1
    2! = 2 * 1 = 2
    3! = 3 * 2 * 1 = 6
    4! = 4 * 3 * 2 * 1 = 24
print("Cálcul del factorial d'un número")

# Introduim el número preparem la sortida.
num = int(input("Introduiex un número enter: "))

# Recòrrer tots els números des de l'1 fins el num
for numactual in range(1, num+1):
    print("%d! =" %numactual, end= " ") 

# Inicialitzem la variable per calcular el factorial
    factorial = 1

# Tractament diferent del factorial de 1
    if numactual > 1:

# Càlcul del factorial del número numactual
       for n in range(numactual,0, -1):

           # Tractament diferent del cas 1
           if n == 1 :
              print("%d = " %n, end= " ") 
           else :
              print("%d * " %n, end= " ") 

           # Acumuelm el producte a cada iteració
           factorial *= n        
    
    # Escribim el resultat del factorial del númeor nuactual 
    print(factorial)


19. Escriu un programa que mostri la següent sortida:

ZYWXVUTSRQPONMLKJIHGFEDCBA
YWXVUTSRQPONMLKJIHGFEDCBA
WXVUTSRQPONMLKJIHGFEDCBA
XVUTSRQPONMLKJIHGFEDCBA
VUTSRQPONMLKJIHGFEDCBA
UTSRQPONMLKJIHGFEDCBA
TSRQPONMLKJIHGFEDCBA
SRQPONMLKJIHGFEDCBA
RQPONMLKJIHGFEDCBA
QPONMLKJIHGFEDCBA
PONMLKJIHGFEDCBA
ONMLKJIHGFEDCBA
NMLKJIHGFEDCBA
MLKJIHGFEDCBA
LKJIHGFEDCBA
KJIHGFEDCBA
JIHGFEDCBA
IHGFEDCBA
HGFEDCBA
GFEDCBA
FEDCBA
EDCBA
DCBA
CBA
BA
A

20. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)

    1 2 3 4 5
    1 2 3 4 
    1 2 3 
    1 2
    1 

21. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)

    1 1 1 1 1
    2 2 2 2 
    3 3 3 
    4 4
    5 

22. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 5)

    5 5 5 5 5
    4 4 4 4 
    3 3 3 
    2 2
    1 

23. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 7)

    1 1 1 1 1 1 1
    1 2 3 4 5 6
    3 3 3 3 3
    1 2 3 4
    5 5 5 
    1 2
    7

24. Realitzar un programa que mostri el següent dibuix per a un nombre de línies demanat a l'usuari (a l’exemple 7)

    7 7 7 7 7 7 7
    6 5 4 3 2 1
    5 5 5 5 5
    4 3 2 1 
    3 3 3 
    2 1
    1 


A2.5 Exercicis estructura iterativa: recorregut

1. Escriu un programa que llegeixi números enters positius i mostri el més petit i el més gran. El programa finalitzarà quan ens introdueixin un número negatiu.

2. Donat un número llegit per teclat, calcula el número de dígits que té.

3. Donat un número llegit per teclat, realitzar la suma de tots els dígits del número.

Per exemple si introdueixen el valor 1238, s'imprimirà el valor : 1+2+3+8 --> 14

4. Donat un número llegit per teclat, realitzar la suma de tots els dígits parells del número.

5. Donat un número llegit per teclat, determina el número de dígits més grans que 5.

6. Escriu un programa que llegeixi números enters positius (finalitzarà amb la introducció de -1) i mostri totes les parelles de números consecutius que apareixen a la seqüència.

Per exemple si la seqüència de números és: 7 10 11 23 4 5 8 10 11 12 -1, mostrarà: 10 11, 4 5, 10 11, 11 12

A2.6 Exercicis estructura iterativa: cerca

1. Escriu un programa que indiqui si existeix o no algun múltiple de 5 en una seqüència de números naturals finalitzada en -1 (seria interessant que una vegada trobat un múltiple, el programa no continués executant-se).

2. Escriu un programa que determini si un número enter es primer o no (recorda que un número primer només és divisible per 1 i per ell mateix).

3. Escriu un programa que vagi llegint notes (per finalitzar -1) i indiqui si hi ha com a mínim tres suspesos. Només cal dir sí o no.

4. Escriu un programa que vagi llegint números positius (per finalitzar -1) i indiqui si tots són parells.

5. Escriu un programa que llegeixi un número i indiqui si tots els dígits són parells.

6. Escriu un programa que vagi llegint números positius (per finalitzar -1) i indiqui si cada valor és més gran que l'anterior.

A4.1 Exercicis Cadenes

1. L’última lletra del DNI pot calcular-se a partir del seus números. Per a això només has de dividir el número per 23 i quedar-te amb la resta. Fes un programa per calcular la lletra d’un DNI. La lletra que correspon a cada número la tens en aquesta taula:

    0 - T
    1 - R
    2 - W
    3 - A
    4 - G
    5 - M
    6 - Y
    7 - F
    8 - P
    9 - D
   10 - X
   11 - B
   12 - N
   13 - J
   14 - Z
   15 - S
   16 - Q
   17 - V
   18 - H
   19 - L
   20 - C
   21 - K
   22 – E


2. Fes un programa per que verifiqui que la lletra d’un DNI es correspon amb el seu número:


3. Genera un programa que encripti una cadena de caràcters. Per exemple: '“avadakedavra”' encriptat es '“bwbeblfebwsb”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’).

4. Genera un programa que encripti una text de caràcters. Per exemple: '“hola que tal”' encriptat es '“ipmb@rvf@ubm”' i el mètode d’encriptació és canviar un caràcter pel seu successor a l’abecedari (el successor de ‘z’ és ‘a’ i el caràcter ' ' es substitueix per '@').

5. Feu un programa que si li passem un nom i un cognom com a paràmetres ens doni la benvinguda:

    Benvingut Sr. ...
    i si no l'hi donem digui :
    Hola desconegut.

6. Feu un programa que calculi la mitjana aritmètica dels valors passats com a paràmetres. Si no es passa cap paràmetre sortirà un missatge d’error i si el primer paràmetre és –ajut el programa traurà una petita explicació del funcionament.

7. Genereu un programa anomenat ComptaAsString que compti quantes lletres 'a' conté una cadena de text. El text per tractar pot ser qualsevol i el podeu declarar com una constant en el codi font.

8. Fes un programa que, primer demani a l’usuari escriure una rere l’altra, tres paraules que només continguin lletres minúscules. A continuació el programa ha d’escriure quina és la paraula més llarga i quina és l’alfabèticament menor.


9. Fes un programa que llegeixi una frase i un número enter N i ens digui quines i quantes paraules tenen longitud N.

10. Fes un programa que llegeixi una frase i la mostri invertida.

11. Volem un programa per treballar amb cadenes que mitjançant un menú ens permeti les següents opcions:

  • Mostrar els n primers caràcters d’una cadena
  • Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta)
  • Eliminar els espais en blanc que hi hagi al final de la cadena
  • Eliminar els espais en blanc que hi hagi al principi de la cadena
  • Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p
  • Inserir una cadena dins d’una altra a partir de la posició p
  • Comptar el nombre de vegades que apareix una cadena dins d’una altra
  • Esborrar totes les aparicions d’una cadena dins d’una altra


12. Escriu un programa per comparar dues cadenes introduïdes per l’usuari. L’aplicació rebrà com a entrada el nombre de caràcters a comparar i l’índex inicial de cada cadena de la comparació. L’aplicació haurà d’indicar si les subcadenes són iguals.


13. Escriu una aplicació que rebi com a entrada una línia de text i un caràcter de cerca i indiqui el nombre d’ocurrències del caràcter en el text.

</source> -->

14. Féu un programa que llegeixi una cadena de caràcters i indiqui si la cadena és un palíndrom. Un palíndrom és una cadena que es llegeix d’igual manera d’esquerra a dreta que de dreta a esquerra. Com per exemple : dabale arroz a la zorra el abad. Cal entendre que per poder-ho fer d’aquesta manera no han d’haver-hi espais en blanc.


15. languageGames: En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants:

a) Jerigonza (variant lúdica del castellà): després de cada vocal s'afegeix una 'p' i es repeteix la vocal.

Exemples:

  • “casa” seria “capasapa”
  • “Gabriel” seria “Gapabripiepel”
  • “murcielago” seria “mupurcipiepelapagopo”

NOTA: Per simplificar-ho suposarem que no s'introdueixen accents.

b) Basic Pig Latin (variant lúdica de l'anglès): tenim dues regles:
A les paraules que comencen per vocal se'ls afegeix al darrera el sufix “ay”. Exemples:
  • “ant” seria “antay”
  • “astronaut” seria “astronautay”
A les paraules que comencen per consonant, es mouen totes les consonants del davant de la primera vocal al final i s'afegeix el sufix “ay”. Exemples:
  • “mess” seria “essmay”
  • “father” seria “atherfay”
  • “chick” seria “ickchay”
  • “star” seria “arstay”

Cal fer un menú amb tres opcions: Jerigonza, Basic Pig latin i Sortir.


NOTA: Per simplificar, podeu suposar que la dada d'entrada serà UNA ÚNICA paraula i que aquesta no tindrà ni accents ni caràcters diferents de lletres.

A4.2 Exercicis Llistes

1. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, la mostri per pantalla.

2. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, demani la nota obtinguda de cada mòdul i ens digui quants mòduls ha aprovat, ha suspès o té convalidats.

3. Fes un programa que emmagatzemi els mòduls de primer d'ASIX ("Implantació de sistemes operatius", "Gestió de bases de dades", "Programació bàsica" ...) en una llista i a continuació, demani la nota obtinguda de cada mòdul i elimini de la llista els aprovats i convalidats i mostri els mòduls pendents d'aprovar.

4. Feu un programa que donades dues llistes inicialitzades amb els valors [-3, 5, 1, -4, 8, 20, -9, 2, 11, -1], posi a una tercera llista, per a cada posició, la suma dels elements de les altres llistes.

5. Fes un programa que donada una llista de números ja inicialitzada, la recorri amb un for i quan surti del for imprimeixi el valor més petit de la taula.

6. Fes un programa que donada una llista de números ja inicialitzada, imprimeixi per pantalla els valors en ordre invers.

7. Fes un programa que faci una rotació cap a l’esquerra o cap a la dreta (segons ens indiqui l’usuari) de tots els elements de una llista (en rotació esquerra l’element que està a la primera posició passarà a l’ultima i en rotació dreta l’element que està l’últim passarà a la primera posició).


8. Feu un programa anomenat ParaulesSenars que llegeixi una frase escrita en una sola línia des del teclat i tot seguit escrigui les paraules que hi ha en posició senar (la primera, la tercera, etc.). Per exemple, si s'escriu “Hi havia una vegada un lloc...”, es mostrarà “Hi una un”.

9. Feu un programa, que crei una taula (llista de dos dimensions) de 5x5 de números enters. I a continuació, mostri la suma de tots els elements per files i per columnes.

10. Feu un programa per gestionar els resultats de la quiniela de futbol. Utilitzarem dues taules:

   Equips: taula (llista de dos dimensions) de cadenes on guardarem a cada columna el nom dels equips de cada partit. En la quiniela s'indiquen 15 partits. 
   Resultats: taula d'enters on s'indica el resultat. Dues columnes, en la primera es posa el número de gols de l'equip que està en la primera posició i en la taula anterior, i en la segona els gols de l'altre equip.

El programa anirà mostrant els noms dels equips de cada partit, i omplirà la taula de resultats, a continuació mostrarà la quiniela de aquesta jornada.

A4.3 Exercicis Diccionaris

1. Creeu un programa en python on declarareu un diccionari per guardar els preus de les diferents fruites d'un supermercat. El programa demanarà el nom de la fruita i la quantitat que s'ha venut i mostrarà el preu final de la fruita a partir de les dades guardades al diccionari. Si la fruita no existeix, ens donarà un error. Després de cada consulta, el programa ens preguntarà si volem fer una altra consulta. 2. Escriu un programa que llegeixi una frase i crei un diccionari amb la quantitat d'aparicions de cada caràcter. A continuació, mostra el contingut del diccionari.

3. Escriu un programa, que declari un diccionari amb l'inventari d'un departament d'informàtica (ordinadors sobretaula, portàtils, projectors, impressores, ...). Presenteu un menú amb les opcions necessaris per fer un manteniment de l'inventari (insercions, actualitzacions, eliminacions i llistat). La darrera opció del menú serà per sortir del programa.

4. Escriu un programa que implementi una agenda de telèfons. Utilitza un diccionari amb clau nom del contacte e i valor el seu telèfon. Presenteu un menú amb les opcions: afegir/modificar, cercar contactes, eliminar un contacte i sortir del programa.

Descripció de les opcions:

  • Afegir/modificar: demana un nom de contacte. Si es troba en l'agenda ha de mostrar el telèfon i, opcionalment, permetre modificar-lo. Si el nom no es troba enl'agenda es demanarà el telèfon i s'afagirà el contacte a l'agenda.
  • Cercar: demana els primers caracters dels noms i mostrarà tots els noms dels contactes que comencin per aquests caracters juntament en els seus respectius telèfons.
  • Eliminar: demana el nom d'un contacte i si existeix mostra el seu telèfon i demana confirmació per elimniar-lo; en cas afirmatiu l'eliminarà de l'agenda. Si el contacte no existeix informarà del fet.
  • Llistar: mostrarà tots els contactes de l'agenda, juntament amb els seus telèfons.
  • Sortir: finalitzarà el programa amb un missatge de comiat.

5. Crea un programa que permita introducir a un profesor las notas de sus estudiantes. Los datos se deberán almacenar en un diccionario como el siguiente:

estudiantes = {  
   	1: {  
		"nombre": "Lorea",  
	  	"nota": 8  
  	    },  
  	2: {  
     	"nombre": "Markel",  
	 	"nota": "4.2"  
  	    },  
  	3: {  
      	"nombre": "Julen",  
	 	"nota": 6.5  
  	     }  
	}

Una vez introducidos todos los datos, el programa mostrará una lista con los nombres de los estudiantes que han suspendido y otra con los que han aprobado. También calculará y mostrará la nota media de la clase.

6. Escriu un programa, que ens permeti emmagatzemar els noms dels alumnes d'una classe i les notes obtingudes. Els alumnes poden tenir diferents número de notes. Utilitza un diccionari amb clau nom de l'alumne i valors les llistes de notes de cada alumne. Presenteu un menú amb les opcions: afegir alumne (sense notes), afegir alumne amb notes, afegir notes a un alumne, modificar una nota (primer cal mostrar-les), eliminar un alumne, mostrar les notes d'un alumne, calcular la nota mitjana, llistar tots els alumnes amb les seves notes i la darrera opció per sortir del programa.

A4.4 Exercicis Tuples

1.Escriviu un programa de Python que calculi el producte, multiplicant tots els números d'una tupla donada.

Original Tuple: (4, 3, 2, 2, -1, 18) Sortida: -864


2. Escriure un programa Python per comptar les ocurrències de tots els elements d'una tupla en una llista. Utilitzarem un bucle for i comptarem quantes vegades apareix cada element de la llista.

Exemples: Entrada: tupla = ('a', 'a', 'c', 'b', 'd') llista = ['a', 'b'] Sortida: 3

A4.5 Exercicis Tipus definits per l'usuari (clases)

Exemplars llibres

Per a la gestió dels llibres d'una petita biblioteca és precís conèixer el seu títol, autor, l'ISBN (cadena de 17 caràcters: 978-3-16-148410-0), el número d'exemplar (1, 2, 3, ...) i si es troba prestat o no. Escriu un programa en java que:

a) Defineix una estructura denominada ExemplarLlibre que permeti emmagatzemar les dades de qualsevol llibre.

b) Declarara e inicialitza dues variables del tipus ExemplarLlibre

c) Comprova si les variables declarades representen exemplars d'un mateix llibre o de llibres diferents.

Estadístiques cargols

una fàbrica de cargols ens ha sol·licitat desenvolupar un programa en java que permeti obtenir e imprimir les estadístiques d'una determinada mostra de cargols. Per això, ens indiquen que cada cargol es caracteritza per la seva longitud i el seu diàmetre i que ambdues mesures han de emmagatzemar-se en un registre amb dos camps. El programa haurà de:

a) Sol·licitar a l'usuari les dades d'una mostra de cargols (longitud i diàmatre) i els emmagatzemi en una llista.

b) A partir de les dades introduïdes calcular i mostrar per pantalla la mitjana de les longituds i la mitjana dels diàmetres.


Llançament daus

Volem fer un estudi estadístic en relació al llançament d'un dau de sis cares. En concret volem obtenir 100 seqüències i a continuació determinar quina ha estat la seqüencia més llarga, la més curta, el número que s'ha repetit més vegades i el número que més vegades ha tancat una seqüencia.

Una seqüencia acaba quan han sortit totes les cares del dau.

Definiu la classe seqüencia per recullir totes les dades d'una seqüencia.

Per simular el llançament d'un dau utilitzeu la classe Ramdom:


Controls

Estructura alternativa

Preu final vendes productes

Feu un programa per calcular el preu final de venda dels productes d’un mercat.

El programa ha de demanar la clau del producte del qual es vol calcular el preu final. Les possibles claus de productes son:

  • ‘F’: per els productes que són fruites
  • ‘V’: per els productes que són verdures
  • ‘L’: per els productes que són làctics

Si la clau introduïda no està en el llistat anterior, el programa ha de mostrar a l’usuari el següent error:

‘Valor no vàlid’

Si la clau introduïda està en el llistat, aleshores, ha demanar a l’usuari el preu de l’article i el dia de la setmana per tal de calcular i mostrar el preu final del producte aplicant el corresponent descompte utilitzant els següents criteris:

1. Els dilluns tenen un 10% de descompte els productes que són làctics
2. Els dimarts tenen un 20% de descompte els productes que són fruites
3. Els cap de setmana tenen un 30% de descompte tots els productes
4. La resta de dies no hi ha descomptes

Recordeu: Utilitzeu comentaris i poseu nombre a les variables per tal que els vostres programes siguin el més llegibles possibles.

Estructura iterativa

Ex 1. Feu un programa que demani dos número i mostri la taula de multiplicar d'aquest número. Per exemple si el usuari introdueix el valor 5, mostrarà:

    5 * 1 = 5
    5 * 2 = 10
    5 * 3 = 15
    5 * 4 = 20
    5 * 5 = 25
    5 * 6 = 30
    5 * 7 = 35
    5 * 8 = 40
    5 * 9 = 45
    5 * 10 = 50    

4 punts


Ex2. Feu un programa que demani el límit inferior i superior d'un interval. Si el límit inferior es major que el superior ho ha de tornar a demanar fins que sigui correcte. A continuació es demanaren nombres fins que s'introdueixi el número 0. El programa ha de mostrar la següent informació:

  • Suma de tots el nombres que es trobin dins del interval (sense incloure els límits).
  • Quants nombres es troben fora del interval
  • Cal indicar si s'ha introduït algun nombre igual als límits del interval.

4 punts


Ex Extra. Fer el següent dibuix d'asteriscos per un valor imparell i més gran o igual a 9. Per exemple si l'usuari introdueix el valor 9, mostrarà:

    *       *       *                *       *       *                        *             
      *     *     *                    *     *     *                          *      
        *   *   *                        *   *   *                        *   *   *   
          * * *                            * * *                            * * *    
    * * * * * * * * *                * * * * o * * * *                * * * * o * * * * 
          * * *                            * * *                            * * *   
        *   *   *                        *   *   *                        *   *   *    
      *     *     *                    *     *     *                          *         
    *       *       *                *       *       *                        *    

     1 punt                             2 punts                           3 punts

Cadenes

languageGames: En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants:

a) Jerigonza (variant lúdica del castellà): després de cada vocal s'afegeix una 'p' i es repeteix la vocal.

Exemples:

  • “casa” seria “capasapa”
  • “Gabriel” seria “Gapabripiepel”
  • “murcielago” seria “mupurcipiepelapagopo”

NOTA: Per simplificar-ho suposarem que no s'introdueixen accents.

b) Basic Pig Latin (variant lúdica de l'anglès): tenim dues regles:
A les paraules que comencen per vocal se'ls afegeix al darrera el sufix “ay”. Exemples:
  • “ant” seria “antay”
  • “astronaut” seria “astronautay”
A les paraules que comencen per consonant, es mouen totes les consonants del davant de la primera vocal al final i s'afegeix el sufix “ay”. Exemples:
  • “mess” seria “essmay”
  • “father” seria “atherfay”
  • “chick” seria “ickchay”
  • “star” seria “arstay”

Cal fer un menú amb tres opcions: Jerigonza, Basic Pig latin i Sortir.

NOTA: Per simplificar, podeu suposar que la dada d'entrada serà UNA ÚNICA paraula i que aquesta no tindrà ni accents ni caràcters diferents de lletres.

PUF1-Recuperació Extraordinària