Diferència entre revisions de la pàgina «ASIX-M3-UF1-A2.1-Solucions Exercicis estructura alternativa»

De wikiserver
Dreceres ràpides: navegació, cerca
(Pàgina blanquejada)
Línia 1: Línia 1:
== 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).
 
 
<source lang="python">
 
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!")
 
 
</source>
 
<!---->
 
 
2. Escriure un programa que demani una nota d'una prova i ens digui si ha aprovat o ha suspès.
 
 
<source lang="python">
 
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!")
 
</source>
 
<!---->
 
 
3. Escriure un programa que demani dos números i digui si són iguals o diferents.
 
 
<source lang="python">
 
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!")
 
</source>
 
<!---->
 
 
4. Escriure un programa que provi d'endevinar un número secret (poseu el número secret com a constant).
 
<!--
 
<source lang="python">
 
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...")
 
</source>
 
-->
 
 
'''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.
 
 
<source lang="phyton">
 
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);
 
</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>
 
<!---->
 
 
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.
 
 
 
<source lang="phyton">
 
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
 
</source>
 
<!---->
 
 
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?
 
 
 
<source lang="phyton">
 
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)
 
</source>
 
<!---->
 

Revisió del 17:16, 10 set 2022