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 = "abcdefghijklmnopqrstuvwxyza" | ||
+ | |||
+ | # 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 = "abcdefghijklmnopqrstuvwxyza @" | ||
+ | |||
+ | # 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 ("Hola desconegut") | ||
+ | </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): | ||
+ | |||
+ | print("ERROR: Aquest programa necessita paràmetres") | ||
+ | |||
+ | # Comprovar si necessiten l'ajuda | ||
+ | elif(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)) | ||
+ | </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> | ||
+ | <!----> | ||
+ | |||
+ | Altres opcions: | ||
+ | print(frase[::-1]) | ||
+ | |||
+ | for i in reversed(frase): | ||
+ | print(i, end='') | ||
+ | print() | ||
+ | --> | ||
+ | <!-- | ||
+ | <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> | ||
+ | <!----> | ||
+ | |||
+ | 11. Volem un programa per treballar amb cadenes que mitjançant un menú ens permeti les següents opcions: | ||
+ | |||
+ | :*Mostrar els n primers caràcters d’una cadena | ||
+ | :*Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta) | ||
+ | :*Eliminar els espais en blanc que hi hagi al final de la cadena | ||
+ | :*Eliminar els espais en blanc que hi hagi al principi de la cadena | ||
+ | :*Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p | ||
+ | :*Inserir una cadena dins d’una altra a partir de la posició p | ||
+ | :*Comptar el nombre de vegades que apareix una cadena dins d’una altra | ||
+ | :*Esborrar totes les aparicions d’una cadena dins d’una altra | ||
+ | |||
+ | |||
+ | <source lang = "python"> | ||
+ | salir = False | ||
+ | while not salir: | ||
+ | print("Menú de opciones") | ||
+ | print("----------------") | ||
+ | print("1. Mostrar els n primers caràcters d’una cadena\n" | ||
+ | + "2. Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta)\n" | ||
+ | + "3. Eliminar els espais en blanc que hi hagi al final de la cadena\n" | ||
+ | + "4. Eliminar els espais en blanc que hi hagi al principi de la cadena\n" | ||
+ | + "5. Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p\n" | ||
+ | + "6. Inserir una cadena dins d’una altra a partir de la posició p\n" | ||
+ | + "7. Comptar el nombre de vegades que apareix una cadena dins d’una altra\n" | ||
+ | + "8. Esborrar totes les aparicions d’una cadena dins d’una altra\n" | ||
+ | + "9. Sortir\n") | ||
+ | opcion = int(input("Introdueix una opció de menú: ")) | ||
+ | cadena = input("Introdueix una cadena de text: ") | ||
+ | #numeric = int(input("Has d'introduir un valor numèric: ")) | ||
+ | if opcion == 1: | ||
+ | n = int(input("Introdueix el nombre de caràcters a mostrar: ")) | ||
+ | print(cadena[0:n]) | ||
+ | elif opcion == 2: | ||
+ | n = int(input("Introdueix el nombre de caràcters a mostrar: ")) | ||
+ | print(cadena[-n:]) | ||
+ | elif opcion == 3: | ||
+ | print(cadena.rstrip()) | ||
+ | elif opcion == 4: | ||
+ | print(cadena.lstrip()) | ||
+ | elif opcion == 5: | ||
+ | # Opción 1 | ||
+ | n = int(input("Introdueix el nombre de caràcters a eliminar: ")) | ||
+ | posini = int(input("Introdueix la posició inicial: ")) | ||
+ | posfin = len(cadena) | ||
+ | print(cadena[:-(posfin-posini)] + cadena[n+posini:posfin]) | ||
+ | # Opción 2 | ||
+ | #for car in range(len(cadena)): | ||
+ | # if car < posini or car >= (n+posini): | ||
+ | # print(cadena[car], end='') | ||
+ | #print("\n") | ||
+ | elif opcion == 6: | ||
+ | # Opció 1 | ||
+ | #scaner = input("Introdueix la cadena(palabra) a insertar: "); | ||
+ | #posini = int(input("Introdueix la posició de la cadena: ")); | ||
+ | #cadsplit = cadena.split() | ||
+ | #cadsplit.insert(posini-1, scaner) | ||
+ | #cadenafinal = ' '.join(cadsplit) | ||
+ | #print(cadenafinal) | ||
+ | # opció 2 | ||
+ | cad = input("Introdueix la cadena(palabra) a insertar: "); | ||
+ | posini = int(input("Introdueix la posició de la cadena: ")); | ||
+ | print(cadena[:posini] + cad + cadena[posini:]) | ||
+ | elif opcion == 7: | ||
+ | scaner = input("Introdueix la cadena a buscar: "); | ||
+ | ocurrencias = cadena.count(scaner) | ||
+ | print(ocurrencias) | ||
+ | elif opcion == 8: | ||
+ | scaner = input("Introdueix la cadena a borrar: "); | ||
+ | replaced_text = cadena.replace(scaner, '') | ||
+ | print(replaced_text) | ||
+ | #Opció 2 | ||
+ | posIni = 0 | ||
+ | posFin = cadena.find(scaner) | ||
+ | while posFin != -1: | ||
+ | cadAux += cadena[posIni:posFin] | ||
+ | posIni = posFin + len(scaner) | ||
+ | posFin = frase.find(scaner, posIni) | ||
+ | cadAux += cadena[posIni:] | ||
+ | cadena = cadAux | ||
+ | print("Frase sense la cadena: ", cadena) | ||
+ | #Opció 3 | ||
+ | #posini = 0 | ||
+ | #cadfin=[] | ||
+ | #for par in cadena.split(): | ||
+ | #if par != scaner: | ||
+ | #cadfin.insert(posini, par) | ||
+ | #posini +=1 | ||
+ | #print(" ".join(cadfin)) | ||
+ | elif opcion == 9: | ||
+ | salir = True | ||
+ | print("¡Adiós!") | ||
+ | else: | ||
+ | print ("Introduce un numero entre 1 y 9\n") | ||
+ | </source> | ||
+ | <!----> | ||
+ | |||
+ | 12. Escriu un programa per comparar dues cadenes introduïdes per l’usuari. L’aplicació | ||
+ | rebrà com a entrada el nombre de caràcters a comparar i l’índex inicial de cada cadena | ||
+ | de la comparació. L’aplicació haurà d’indicar si les subcadenes són iguals. | ||
+ | |||
+ | |||
+ | <source lang = "python"> | ||
+ | print("Comparació de substrings") | ||
+ | |||
+ | # Introducció de dades | ||
+ | cadena1 = input("Introdueix una cadena: ") | ||
+ | cadena2 = input("Introdueix una altra cadena: ") | ||
+ | numCar = int(input("Introdueix nombre de caràcters a comparar: ")) | ||
+ | index1 = int(input("Posició inicial cadena 1: ")) | ||
+ | index2 = int(input("Posició inicial cadena 2: ")) | ||
+ | |||
+ | # Comprovació dels límits de les cadenes | ||
+ | if (len(cadena1) < index1 + numCar) or (len(cadena2) < index2 + numCar): | ||
+ | print("S'excedeixen els límits de les cadenes") | ||
+ | |||
+ | # Comparació dels substrings | ||
+ | else: | ||
+ | subCad1 = cadena1.lower()[index1-1:index1-1+numCar] | ||
+ | subCad2 = cadena2.lower()[index2-1:index2-1+numCar] | ||
+ | if subCad1 == subCad2: | ||
+ | print("Les subcadenes són iguals. Subcadena: %s" %subCad1) | ||
+ | else: | ||
+ | print("No són iguals. Subcadena1: %s, Subcadena2: %s" %(subCad1, subCad2)) | ||
+ | </source> | ||
+ | <!----> | ||
+ | |||
+ | 13. Escriu una aplicació que rebi com a entrada una línia de text i un caràcter de cerca | ||
+ | i indiqui el nombre d’ocurrències del caràcter en el text. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | <source lang = "python"> | ||
+ | |||
+ | print("Programa comptar ocurrències caràcter en 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: ") | ||
+ | caracter = input("Introdueix un caràcter: ") | ||
+ | |||
+ | # Inicialitzar variables | ||
+ | comptador = 0 | ||
+ | pos = frase.find(caracter) | ||
+ | # Comptar ocurrències caràcter | ||
+ | while pos != -1 : | ||
+ | comptador += 1 | ||
+ | pos = frase.find(caracter,pos+1) | ||
+ | # Mostrar el resultat | ||
+ | print ("Hi ha %d %s's en la frase" %(comptador,caracter)) | ||
+ | </source> | ||
+ | <!----> | ||
+ | |||
+ | 14. Féu un programa que llegeixi una cadena de caràcters i indiqui si la cadena és un | ||
+ | palíndrom. Un palíndrom és una cadena que es llegeix d’igual manera | ||
+ | d’esquerra a dreta que de dreta a esquerra. Com per exemple : dabale arroz a la | ||
+ | zorra el abad. Cal entendre que per poder-ho fer d’aquesta manera no han | ||
+ | d’haver-hi espais en blanc. | ||
+ | |||
+ | |||
+ | :'''Slicing: indicant un rang''' | ||
+ | <source lang = "python"> | ||
+ | miCadenaDeTexto = input("Introdueix una cadena: ") | ||
+ | # Imprimeix si"Es palíndrom" | ||
+ | if miCadenaDeTexto == miCadenaDeTexto[::-1]: | ||
+ | print("És palindrom") | ||
+ | else: | ||
+ | print("No és palindrom") | ||
+ | </source> | ||
+ | :'''Funció reversed''' | ||
+ | <source lang = "python"> | ||
+ | miCadenaDeTexto = input("Introdueix una cadena: ") | ||
+ | # Imprimeix si"Es palíndrom" | ||
+ | if miCadenaDeTexto == "".join(reversed(miCadenaDeTexto)): | ||
+ | print("És palindrom") | ||
+ | else: | ||
+ | print("No és palindrom") | ||
+ | </source> | ||
+ | <!----> | ||
+ | |||
+ | 15. '''languageGames''': En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants: | ||
+ | |||
+ | :'''a) Jerigonza''' (variant lúdica del castellà): després de cada vocal s'afegeix una 'p' i es repeteix la vocal. | ||
+ | |||
+ | Exemples: | ||
+ | |||
+ | ::*“casa” seria “capasapa” | ||
+ | ::*“Gabriel” seria “Gapabripiepel” | ||
+ | ::*“murcielago” seria “mupurcipiepelapagopo” | ||
+ | |||
+ | '''NOTA:''' Per simplificar-ho suposarem que no s'introdueixen accents. | ||
+ | |||
+ | :'''b) Basic Pig Latin''' (variant lúdica de l'anglès): tenim dues regles: | ||
+ | |||
+ | :A les paraules que comencen per vocal se'ls afegeix al darrera el sufix “ay”. Exemples: | ||
+ | |||
+ | ::*“ant” seria “antay” | ||
+ | ::*“astronaut” seria “astronautay” | ||
+ | |||
+ | :A les paraules que comencen per consonant, es mouen totes les consonants del davant de la primera vocal al final i s'afegeix el sufix “ay”. Exemples: | ||
+ | |||
+ | ::*“mess” seria “essmay” | ||
+ | ::*“father” seria “atherfay” | ||
+ | ::*“chick” seria “ickchay” | ||
+ | ::*“star” seria “arstay” | ||
+ | |||
+ | Cal fer un menú amb tres opcions: Jerigonza, Basic Pig latin i Sortir. | ||
+ | |||
+ | |||
+ | '''NOTA:''' Per simplificar, podeu suposar que la dada d'entrada serà UNA ÚNICA paraula i que aquesta no tindrà ni accents ni caràcters diferents de lletres. | ||
+ | --> |
Revisió del 14:33, 8 abr 2024
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 = "abcdefghijklmnopqrstuvwxyza"
# 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 = "abcdefghijklmnopqrstuvwxyza @"
# 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 ("Hola desconegut")
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):
print("ERROR: Aquest programa necessita paràmetres")
# Comprovar si necessiten l'ajuda
elif(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))
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()
Altres opcions: print(frase[::-1])
for i in reversed(frase):
print(i, end=)
print() -->
11. Volem un programa per treballar amb cadenes que mitjançant un menú ens permeti les següents opcions:
- Mostrar els n primers caràcters d’una cadena
- Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta)
- Eliminar els espais en blanc que hi hagi al final de la cadena
- Eliminar els espais en blanc que hi hagi al principi de la cadena
- Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p
- Inserir una cadena dins d’una altra a partir de la posició p
- Comptar el nombre de vegades que apareix una cadena dins d’una altra
- Esborrar totes les aparicions d’una cadena dins d’una altra
salir = False
while not salir:
print("Menú de opciones")
print("----------------")
print("1. Mostrar els n primers caràcters d’una cadena\n"
+ "2. Mostrar els n últims caràcters d’una cadena (d’esquerra a dreta)\n"
+ "3. Eliminar els espais en blanc que hi hagi al final de la cadena\n"
+ "4. Eliminar els espais en blanc que hi hagi al principi de la cadena\n"
+ "5. Eliminar d’una cadena els n caràcters que apareixen a partir de la posició p\n"
+ "6. Inserir una cadena dins d’una altra a partir de la posició p\n"
+ "7. Comptar el nombre de vegades que apareix una cadena dins d’una altra\n"
+ "8. Esborrar totes les aparicions d’una cadena dins d’una altra\n"
+ "9. Sortir\n")
opcion = int(input("Introdueix una opció de menú: "))
cadena = input("Introdueix una cadena de text: ")
#numeric = int(input("Has d'introduir un valor numèric: "))
if opcion == 1:
n = int(input("Introdueix el nombre de caràcters a mostrar: "))
print(cadena[0:n])
elif opcion == 2:
n = int(input("Introdueix el nombre de caràcters a mostrar: "))
print(cadena[-n:])
elif opcion == 3:
print(cadena.rstrip())
elif opcion == 4:
print(cadena.lstrip())
elif opcion == 5:
# Opción 1
n = int(input("Introdueix el nombre de caràcters a eliminar: "))
posini = int(input("Introdueix la posició inicial: "))
posfin = len(cadena)
print(cadena[:-(posfin-posini)] + cadena[n+posini:posfin])
# Opción 2
#for car in range(len(cadena)):
# if car < posini or car >= (n+posini):
# print(cadena[car], end='')
#print("\n")
elif opcion == 6:
# Opció 1
#scaner = input("Introdueix la cadena(palabra) a insertar: ");
#posini = int(input("Introdueix la posició de la cadena: "));
#cadsplit = cadena.split()
#cadsplit.insert(posini-1, scaner)
#cadenafinal = ' '.join(cadsplit)
#print(cadenafinal)
# opció 2
cad = input("Introdueix la cadena(palabra) a insertar: ");
posini = int(input("Introdueix la posició de la cadena: "));
print(cadena[:posini] + cad + cadena[posini:])
elif opcion == 7:
scaner = input("Introdueix la cadena a buscar: ");
ocurrencias = cadena.count(scaner)
print(ocurrencias)
elif opcion == 8:
scaner = input("Introdueix la cadena a borrar: ");
replaced_text = cadena.replace(scaner, '')
print(replaced_text)
#Opció 2
posIni = 0
posFin = cadena.find(scaner)
while posFin != -1:
cadAux += cadena[posIni:posFin]
posIni = posFin + len(scaner)
posFin = frase.find(scaner, posIni)
cadAux += cadena[posIni:]
cadena = cadAux
print("Frase sense la cadena: ", cadena)
#Opció 3
#posini = 0
#cadfin=[]
#for par in cadena.split():
#if par != scaner:
#cadfin.insert(posini, par)
#posini +=1
#print(" ".join(cadfin))
elif opcion == 9:
salir = True
print("¡Adiós!")
else:
print ("Introduce un numero entre 1 y 9\n")
12. Escriu un programa per comparar dues cadenes introduïdes per l’usuari. L’aplicació rebrà com a entrada el nombre de caràcters a comparar i l’índex inicial de cada cadena de la comparació. L’aplicació haurà d’indicar si les subcadenes són iguals.
print("Comparació de substrings")
# Introducció de dades
cadena1 = input("Introdueix una cadena: ")
cadena2 = input("Introdueix una altra cadena: ")
numCar = int(input("Introdueix nombre de caràcters a comparar: "))
index1 = int(input("Posició inicial cadena 1: "))
index2 = int(input("Posició inicial cadena 2: "))
# Comprovació dels límits de les cadenes
if (len(cadena1) < index1 + numCar) or (len(cadena2) < index2 + numCar):
print("S'excedeixen els límits de les cadenes")
# Comparació dels substrings
else:
subCad1 = cadena1.lower()[index1-1:index1-1+numCar]
subCad2 = cadena2.lower()[index2-1:index2-1+numCar]
if subCad1 == subCad2:
print("Les subcadenes són iguals. Subcadena: %s" %subCad1)
else:
print("No són iguals. Subcadena1: %s, Subcadena2: %s" %(subCad1, subCad2))
13. Escriu una aplicació que rebi com a entrada una línia de text i un caràcter de cerca i indiqui el nombre d’ocurrències del caràcter en el text.
print("Programa comptar ocurrències caràcter en 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: ")
caracter = input("Introdueix un caràcter: ")
# Inicialitzar variables
comptador = 0
pos = frase.find(caracter)
# Comptar ocurrències caràcter
while pos != -1 :
comptador += 1
pos = frase.find(caracter,pos+1)
# Mostrar el resultat
print ("Hi ha %d %s's en la frase" %(comptador,caracter))
14. Féu un programa que llegeixi una cadena de caràcters i indiqui si la cadena és un palíndrom. Un palíndrom és una cadena que es llegeix d’igual manera d’esquerra a dreta que de dreta a esquerra. Com per exemple : dabale arroz a la zorra el abad. Cal entendre que per poder-ho fer d’aquesta manera no han d’haver-hi espais en blanc.
- Slicing: indicant un rang
miCadenaDeTexto = input("Introdueix una cadena: ")
# Imprimeix si"Es palíndrom"
if miCadenaDeTexto == miCadenaDeTexto[::-1]:
print("És palindrom")
else:
print("No és palindrom")
- Funció reversed
miCadenaDeTexto = input("Introdueix una cadena: ")
# Imprimeix si"Es palíndrom"
if miCadenaDeTexto == "".join(reversed(miCadenaDeTexto)):
print("És palindrom")
else:
print("No és palindrom")
15. languageGames: En molts idiomes disposem de variants lúdiques de l'idioma. Aquest programa codificarà dos mètodes que ens permetran traduir paraules d'idiomes coneguts a variants lúdiques d'aquests. Expliquem primer aquestes variants:
- a) Jerigonza (variant lúdica del castellà): després de cada vocal s'afegeix una 'p' i es repeteix la vocal.
Exemples:
- “casa” seria “capasapa”
- “Gabriel” seria “Gapabripiepel”
- “murcielago” seria “mupurcipiepelapagopo”
NOTA: Per simplificar-ho suposarem que no s'introdueixen accents.
- b) Basic Pig Latin (variant lúdica de l'anglès): tenim dues regles:
- A les paraules que comencen per vocal se'ls afegeix al darrera el sufix “ay”. Exemples:
- “ant” seria “antay”
- “astronaut” seria “astronautay”
- A les paraules que comencen per consonant, es mouen totes les consonants del davant de la primera vocal al final i s'afegeix el sufix “ay”. Exemples:
- “mess” seria “essmay”
- “father” seria “atherfay”
- “chick” seria “ickchay”
- “star” seria “arstay”
Cal fer un menú amb tres opcions: Jerigonza, Basic Pig latin i Sortir.
NOTA: Per simplificar, podeu suposar que la dada d'entrada serà UNA ÚNICA paraula i que aquesta no tindrà ni accents ni caràcters diferents de lletres.
-->