Diferència entre revisions de la pàgina «ASIX-M3-UF1-A4.1- Solucions Exercicis cadenes»
(Pàgina blanquejada) |
|||
| Línia 1: | Línia 1: | ||
| + | == 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: | ||
| + | <pre> | ||
| + | 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 | ||
| + | </pre> | ||
| + | |||
| + | <!----> | ||
| + | <source lang = "python"> | ||
| + | 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])) | ||
| + | </source> | ||
| + | |||
| + | |||
| + | 2. Fes un programa per que verifiqui que la lletra d’un DNI es correspon amb el seu número: | ||
| + | |||
| + | <!----> | ||
| + | <source lang = "python"> | ||
| + | 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!") | ||
| + | </source> | ||
| + | |||
| + | |||
| + | 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’). | ||
| + | <!----> | ||
| + | <source lang = "python"> | ||
| + | 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) | ||
| + | </source> | ||
| + | |||
| + | |||
| + | 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 '@'). | ||
| + | <!----> | ||
| + | <source lang = "python"> | ||
| + | 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) | ||
| + | </source> | ||
| + | |||
| + | |||
| + | 5. Feu un programa que si li passem un nom i un cognom com a paràmetres ens doni la benvinguda: | ||
| + | <pre> | ||
| + | Benvingut Sr. ... | ||
| + | i si no l'hi donem digui : | ||
| + | Hola desconegut. | ||
| + | </pre> | ||
| + | <!----> | ||
| + | <source lang = "python"> | ||
| + | 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") | ||
| + | </source> | ||
| + | |||
| + | |||
| + | 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. | ||
| + | <!----> | ||
| + | <source lang = "python"> | ||
| + | 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") | ||
| + | </source> | ||
| + | |||
| + | |||
| + | 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 | ||
| + | <source lang = "python"> | ||
| + | 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) | ||
| + | |||
| + | </source> | ||
| + | |||
| + | <!----> | ||
| + | |||
| + | versio 2 | ||
| + | <source lang = "python"> | ||
| + | |||
| + | 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) | ||
| + | </source> | ||
| + | |||
| + | 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. | ||
| + | |||
| + | <!----> | ||
| + | <source lang = "python"> | ||
| + | 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) | ||
| + | </source> | ||
| + | |||
| + | |||
| + | 9. Fes un programa que llegeixi una frase i un número enter N i ens digui quines i quantes paraules tenen longitud N. | ||
| + | <!----> | ||
| + | <source lang = "python"> | ||
| + | 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) | ||
| + | </source> | ||
| + | |||
| + | |||
| + | 10. Fes un programa que llegeixi una frase i la mostri invertida. | ||
| + | <!----> | ||
| + | <source lang = "python"> | ||
| + | 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() | ||
| + | </source> | ||
| + | |||
| + | <!----> | ||
| + | <source lang = "python"> | ||
| + | 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))) | ||
| + | </source> | ||
Revisió del 18:08, 4 maig 2023
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)))