ASIX-M3-UF1-A4.1- Solucions Exercicis cadenes

De wikiserver
Dreceres ràpides: navegació, cerca

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
print("Obtenció lletra DNI")

# Constants
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]))


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

print("Verificació lletra DNI")

# Constants
NUMLLETRES = 23
LLETRESDNI = "TRWAGMYFPDXBNJZSQVHLCKE"

# Demanem DNI
dni = input("Introdueix un DNI: ")

# Lletra i número del DNI
lletraDNI = dni[-1]
numDNI = int(dni[:-1])

# Càlcul de la posició de la lletra 
numCalcul = numDNI % NUMLLETRES

# Verificació
if lletraDNI == LLETRESDNI[numCalcul]:
  print("ÉS correcte!")
else:
  print("És incorrecte!")


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’).

print("Encriptació d'una cadena")

# Constants
LLETRES = "abcdefghijklmnopqrstvwxyza"  

# Demanem cadena a encriptar
cadena = input("Introdueix la cadena a encriptar: ")

# Encriptació
cadenaEncriptada =""
for carac in cadena: 
   posCaracter = LLETRES.find(carac)
   cadenaEncriptada += LLETRES[posCaracter+1]

# Mostrar el text encriptat
print("Cadena encriptada:", cadenaEncriptada)


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 '@').

print("Encriptació d'un text")

# Constants
LLETRES = "abcdefghijklmnopqrstvwxyza @"  

# Demanem número DNI
text = input("Introdueix el text a encriptar: ")

# Encriptació
textEncriptat =""
for carac in text: 
   posCaracter = LLETRES.find(carac)
   textEncriptat += LLETRES[posCaracter+1]

# Mostrar el text encriptat
print("Text encriptat:", textEncriptat)


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.
print("Programa amb arguments ")

# 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]))

# Missatge si no hi ha 2 arguments
else:
    print ("Aquest programa requereix dos arguments")


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.

print("Programa amb arguments: Mitjana de n números")

# Importar llibreries 
import sys 

# Comprovar número d'arguments
if(len(sys.argv) > 1):

# Comprovar si necessiten l'ajuda
    if(sys.argv[1] == "-ajut"):
        print ("Aquest programa calcula la mitjana dels valors passats com a arguments")

# Calculem la mitja dels arguments
    else:
        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))
# Missatge si no hi ha 2 arguments
else:
    print ("Aquest programa requereix arguments")


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

print("Programa compar a's d'una frase")

# Entrada: frase a avaluar
frase = input("Introdueix la frase a avaluar: ")

# Inicialitzar variables
comptador = 0

# Comptar a's
for i in range(len(frase)):
    if frase[i] == 'a':
       comptador += 1

# Mostrar el resultat
print("Hi ha %d a's en la frase" %comptador)


versio 2

print("Programa comptar a's d'una frase")

# 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: "

# Inicialitzar variables
comptador = 0
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)

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.

print("Programa ordenar paraules")

# Entrada de les paraules
par1 = input("Introdueix la primera paraula: ")
par2 = input("Introdueix la primera paraula: ")
par3 = input("Introdueix la primera paraula: ")

# Cerquem la paraula més llarga
mesLlarga = par1
if len(mesLlarga) < len(par2):
   mesLlarga = par2
if len(mesLlarga) < len(par3):
   mesLlarga = par3

# Cerquem la paraula lexicogràficament menor
alfMenor = par1
if alfMenor > par2:
   alfMenor = par2
if alfMenor > par3:
   alfMenor = par3

# Reultats
print("La paraula més llarga és: ", mesLlarga)
print("La paraula lexicogràficament menor és: ", alfMenor)


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

print("Programa paraules de N caràcters")

# Entrada de dades
frase = input("Introdueix la frase a tractar: ")
num = int(input("Introdueix el número de caràcters: "))

# 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)


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

print("Programa mostrar frase invertida")

# Entrada de dades
frase = input("Introdueix la frase a invertir: ")

# Recorregut de la frase caràcter a caràcter començant pel final
print("Frase invertida: ", end =' ')
for car in range(len(frase)-1, -1, -1):
       print(frase[car], end='')
print()
print("Programa mostrar frase invertida")

# Entrada de dades
frase = input("Introdueix la frase a invertir: ")

# Imprimir la frase invertida
print("Frase invertida: %s" %''.join(reversed(frase)))