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

De wikiserver
Dreceres ràpides: navegació, cerca
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")