ASIX-M3-UF1-A2.1-Solucions Exercicis estructura alternativa
Exercicis preliminars
1. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat (>=5).
print("Programa per determinar si una prova està aprovada")
# Constant nota aprovat
NOTA_APROVAT = 5.0
# Entrada nota prova
nota = float(input("Introdueix la nota de la prova: "))
# Determinar si la prova està aprovada
if (nota >= NOTA_APROVAT):
print("L'alumne ha aprovat!")
2. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat o ha suspès.
print("Programa per determinar si una prova està aprovada o suspesa")
# Constant nota aprovat
NOTA_APROVAT = 5.0
# Entrada nota prova
nota = float(input("Introdueix la nota de la prova: "))
# Determinar si la prova està aprovada
if (nota >= NOTA_APROVAT):
print("L'alumne ha aprovat!")
else:
print("L'alumne ha suspès!")
3. Escriure un programa que demani dos números i digui si són iguals o diferents.
print("Programa per deternimar si dos números són iguals o no")
# Entrada de números
numero_1 = float(input("Introdueix un número: "))
numero_2 = float(input("Introdueix un altre número: "))
# Determinar si dos números són iguals o no
if (numero_1 == numero_2):
print("Els números són iguals!")
else:
print("Els números són diferents!")
4. Escriure un programa que provi d'endevinar un número secret (poseu el número secret com a constant).
print("Programa per endevinar un número secret (0, )")
# Constant número secret
NUM_SECRET = 9
# Entrada del número
numero = int(input("Endivina el número secret: "))
# Determinar encert del número secret
if (numero == NUM_SECRET):
print("Enhorabona!")
else:
print("Ho sento! Torna-ho a intentar...")
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.
print("Programa per calcular el salari d'un dia de treball")
# Constants tarifes
DIA = 4
DIAFESTIU = 6
NIT = 6
NITFESTIU = 9
# Entrada hores, torn i dies
hores = int(input("Introdueix el nombre d'hores treballades: "))
torn = input("Introdueix el torn (diari ->d/nocturn->n): ")
dia = input("Introdueix el dia (diumenge->d/feiner->f): ")
# Determinar salari
if dia == 'f':
if torn == 'd':
salari = hores * DIA
else:
salari = hores * NIT
elif torn == 'd':
salari = hores * DIAFESTIU
else:
salari = hores * NITFESTIU
# Resultat: salari del dia
print("El salari és: %d €" %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.
print("Programa calculadora simple")
# Entrada números i operació
num1 = int(input("Introdueix un valor enter: "))
operacio = input("Introdueix l'operació ('+' , '-' , '*' , '/' , '//' , '%': ")
num2 = int(input("Introdueix un altre valor enter: "))
# Operació
if operacio == '+':
resultat = num1 + num2
elif operacio == '-':
resultat = num1 - num2
elif operacio == '*':
resultat = num1 * num2
elif operacio == '/':
resultat = num1 / num2
elif operacio == '//':
resultat = num1 // num2
else:
resultat = num1 % num2
# Resultat de l'operació
if isinstance(resultat,float):
print("El resultat de l'operació és: %3.2f " %resultat)
else:
print("El resultat de l'operació és: %d " %resultat)
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.
print("Programa bits per representar en binari un número")
# Entrada número
valor = int(input("Introdueix un valor enter: "))
# Validació del número entrat
if valor < 0 or valor > 63:
print("El número ha d'estar comprès en el rang [0:63]")
else:
# Obtenció del nombre de bits
if (valor < 2):
bits = 1
elif (valor < 4):
bits = 2
elif (valor < 8):
bits = 3
elif (valor < 16):
bits = 4
elif (valor < 32):
bits = 5
else:
bits = 6;
# Número de bits del número
print("Necessitem %d bits " %bits)
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
from datetime import date
print("Programa major d'edat")
# Constants dia, mes i any actual
AVUI = date.today()
DIA_ACTUAL = AVUI.day
MES_ACTUAL = AVUI.month
ANY_ACTUAL = AVUI.year
# Entrada dia, mes i any de neixement
dia_neix = int(input("Introdueix el dia de naixement: "))
mes_neix = int(input("Introdueix el mes de naixement: "))
any_neix = int(input("Introdueix el any de naixement: "))
# Determinar majoria d'edat
if (ANY_ACTUAL - any_neix < 18):
print("Ets menor d'edat!")
elif (ANY_ACTUAL - any_neix > 18):
print("Ets major d'edat!")
elif (MES_ACTUAL > mes_neix):
print("Ets major d'edat!")
elif (MES_ACTUAL < mes_neix):
print("Ets menor d'edat!")
elif (DIA_ACTUAL >= dia_neix):
print("Ets major d'edat!")
else:
print("Ets menor d'edat!")
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.
print("Programa xifres d'un número")
# Entrada de dades
numero = input("Introdueix un número: ")
try:
numero = int(numero) # En el cas de que no sigui un enter saltarà a la zona de excepcions
if numero >= 0 and numero <10000:
# Determinar les xifres del número
if numero <10:
xifres = 1
elif numero <100:
xifres = 2
elif numero <1000:
xifres = 3
else:
xifres = 4
print("El número %d és de %d xifres" %(numero,xifres)) # Xifres del número
else:
print("El número %d no és dins del rang [0..9999]" %numero) # Número fora del rang
except ValueError:
print("La entrada és incorrecte: escriu un número enter!") # No és un 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)
from random import randint
print("Programa joc de daus")
# Simulació del llançament de 3 daus
dau1 = randint(1,6)
dau2 = randint(1,6)
dau3 = randint(1,6)
print("Has tret: %d %d %d " %(dau1,dau2,dau3))
# Determinar quants sisos s'han obtingut en el llançament
if (dau1 == 6) and (dau2 ==6) and (dau3 ==6):
print("Excel·lent!")
elif ((dau1 == 6) and (dau2 ==6)) or ((dau1 == 6) and (dau3 == 6)) or ((dau2 == 6) and (dau3 == 6)):
print("Molt bé!")
elif (dau1 == 6) or (dau2 ==6) or (dau3 == 6):
print("Regular")
else:
print("Pèssim")
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.
print("Ordenació de tres números enters positius")
# Entrada dels 3 números
num1 = input("Introdueix un número: ")
num2 = input("Introdueix un segon número: ")
num3 = input("Introdueix un tercer número: ")
try:
num1 = int(num1) # En el cas de que no siguin enters saltarà a la zona de excepcions
num2 = int(num2)
num3 = int(num3)
if num1 >= 0 and num2 >= 0 and num3 >= 0: # Comprovació números positius
if not (num1 == num2 or num1 == num3 or num2 == num3): # Comprovació números diferents
if num1 > num2 and num1 > num3:
if num2 > num3:
print(" %d %d %d" %(num1,num2,num3))
else:
print(" %d %d %d" %(num1,num3,num2))
elif num2 > num3:
if num1 > num3:
print(" %d %d %d" %(num2,num1,num3))
else:
print(" %d %d %d" %(num2,num3,num1))
elif num1 > num2:
print(" %d %d %d" %(num3,num1,num2))
else:
print(" %d %d %d" %(num3,num2,num1))
else:
print("Els números no són diferents!")
else:
print("Els números no són enters positius!")
except ValueError:
print("La entrada és incorrecte: escriu només números enters positius!") # No són números enters
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?
print("Import entrades parc d'atraccions")
# Entrada edats de les tres persones
edat_P1 = int(input("Introdueix l'edat de la primera persona: "))
edat_P2 = int(input("Introdueix l'edat de la segona persona: "))
edat_P3 = int(input("Introdueix l'edat de la tercera persona: "))
# Comprovem si poden entrar...
if (((edat_P1 < 5) or (edat_P2 < 5) or (edat_P3 < 5)) and (edat_P1 < 12) and (edat_P2 < 12) and (edat_P3 < 12)):
print("NO ENTREN!!!");
else:
# Comprovem si tenen dret a l'oferta...
if ((edat_P1 >= 16) and (edat_P1 < 18) and (edat_P2 >= 16) and (edat_P2 < 18) and (edat_P3 >= 16) and (edat_P3 < 18)):
total = 40
else:
# Fem el calcul per la primera persona
if ((edat_P1 >= 5) and (edat_P1 < 12)):
ent_P1 = 5
elif ((edat_P1 >= 12) and (edat_P1 < 16)):
ent_P1 = 10
elif ((edat_P1 >= 16) and (edat_P1 < 65)):
ent_P1 = 20
else:
ent_P1 = 0
# Ho repetim per a la segona persona
if ((edat_P2 >= 5) and (edat_P2 < 12)):
ent_P2 = 5
elif ((edat_P2 >= 12) and (edat_P2 < 16)):
ent_P2 = 10
elif ((edat_P2 >= 16) and (edat_P2 < 65)):
ent_P2 = 20
else:
ent_P2 = 0
# Ho repetim per a la tercera persona
if ((edat_P3 >= 5) and (edat_P3 < 12)):
ent_P3 = 5
elif ((edat_P3 >= 12) and (edat_P3 < 16)):
ent_P3 = 10
elif ((edat_P3 >= 16) and (edat_P3 < 65)):
ent_P3 = 20
else:
ent_P3 = 0
# Calculem el total de les entrades
total = ent_P1 + ent_P2 + ent_P3
print("El cost de les entrades es de %d €" %total)