Diferència entre revisions de la pàgina «ASIX-M3-UF1-A2.1-Solucions Exercicis estructura alternativa»
Línia 127: | Línia 127: | ||
print("El salari és: %d €" %salari); | print("El salari és: %d €" %salari); | ||
+ | </source> | ||
+ | <!----> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <source lang="phyton"> | ||
+ | print("Programa calculadora simple") | ||
+ | |||
+ | # Entrada números i operació | ||
+ | |||
+ | num1 = int(input("Introdueix un valor enter: ")) | ||
+ | num2 = int(input("Introdueix un altre valor enter: ")) | ||
+ | operacio = input("Introdueix l'operació ('+' , '-' , '*' , '/' , '//' , '%': ") | ||
+ | |||
+ | # 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) | ||
+ | </source> | ||
+ | <!----> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <source lang="phyton"> | ||
+ | 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) | ||
+ | </source> | ||
+ | <!----> | ||
+ | |||
+ | 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 | ||
+ | <source lang="python"> | ||
+ | from datetime import date | ||
+ | |||
+ | #Dia, mes i any actual | ||
+ | |||
+ | AVUI = date.today() | ||
+ | DIA_ACTUAL = AVUI.day | ||
+ | MES_ACTUAL = AVUI.month | ||
+ | ANY_ACTUAL = AVUI.year | ||
+ | </source> | ||
+ | |||
+ | <source lang="phyton"> | ||
+ | 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!") | ||
+ | </source> | ||
+ | <!----> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | |||
+ | <source lang="phyton"> | ||
+ | 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 | ||
+ | </source> | ||
+ | <!----> | ||
+ | |||
+ | 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 | ||
+ | <source lang="python"> | ||
+ | from random import randint | ||
+ | |||
+ | # Simulació del llançament d'un dau | ||
+ | |||
+ | dau = randint(1,6) | ||
+ | </source> | ||
+ | |||
+ | <source lang="phyton"> | ||
+ | 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") | ||
</source> | </source> | ||
<!----> | <!----> |
Revisió del 16:12, 3 nov 2021
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).
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).
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 = float(input("Introdueix el nombre d'hores treballades: "))
torn = input("Introdueix el torn (dia o nit): ")
dia = input("Introdueix el dia (laborable o festiu): ")
# Determinar salari
if dia == 'laborable':
if torn == 'dia':
salari = hores * DIA
else:
salari = hores * NIT
elif torn == 'dia':
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: "))
num2 = int(input("Introdueix un altre valor enter: "))
operacio = input("Introdueix l'operació ('+' , '-' , '*' , '/' , '//' , '%': ")
# 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")