Está en la página 1de 8

Guía 3 Escuela de Estructura de Datos y Programación

Tecnología Orientada a Objetos

ESTRUCTURA DE
DATOS Y
PROGRAMACIÓN
ORIENTADA A
OBJETOS

Tema Nº3:
TEMA 01
Cadenas y métodos deTeoría
lista de los

TEMA de
Indicador Nº3:
logro Nº3:
Utiliza los diferentes métodos de cuerda a través de un lenguaje de programación.

1
Guía 3 Escuela de Estructura de Datos y Programación
Tecnología Orientada a Objetos

Excepciones
Subtema 3.1:
Caracteres y cadenas.
o El primer problema a mostrar es el cifrado César.
o El segundo es la transformación inversa ahora debe ser clara.
o El tercer programa muestra un método simple que le permite ingresar una línea llena
de números y procesarlos fácilmente.
o El cuarto programa implementa (en una forma ligeramente simplificada) un algoritmo
utilizado por los bancos europeos para especificar los números de cuenta. El estándar
denominado IBAN (Número de cuenta bancaria internacional).

 CIFRADO CÉSAR

Este código fue (probablemente) inventado y utilizado por Gaius Julius Caesar y sus
tropas durante las Guerras Gálicas. La idea es bastante simple: cada letra del mensaje
es reemplazada por su consecuente más cercano (A se convierte en B, B se convierte
en C, etc.). La única excepción es Z, que se convierte en A.

Este programa es una implementación muy simple (pero funcional) del algoritmo. Lo
hemos escrito usando los siguientes supuestos:

o Solo acepta letras latinas (nota: los romanos no utilizaron espacios en blanco ni
dígitos).
o Todas las letras del mensaje están en mayúsculas (nota: los romanos solo sabían
mayúsculas).

PROGRAMA:

text = input("INGRESAR MENSAJE: ")


cipher = ""
for char in text:
if not char.isalpha():
continue
char = char.upper()
code = ord(char) + 1
if code > ord("Z"):
code = ord("A")
cipher += chr(code)
print(cipher)

2
Guía 3 Escuela de Estructura de Datos y Programación
Tecnología Orientada a Objetos

INTERPRETACIÓN:

o Línea 01: solicite al usuario que ingrese el mensaje de una línea abierto (sin cifrar);
o Línea 02: preparar una cadena para un mensaje cifrado (vacío por ahora);
o Línea 03: comienza la iteración a través del mensaje;
o Línea 04: si el carácter actual no es alfabético . . .
o Línea 05: . . . ignóralo;
o Línea 06: convierte la letra a mayúsculas (es preferible hacerlo a ciegas, en lugar
de verificar si es necesario o no);
o Línea 07: obtener el código de la letra e incrementarlo en uno;
o Línea 08: si el código resultante ha "dejado" el alfabeto latino (si es mayor que el
código Z). . .
o Línea 09: . . . cambiarlo al código A;
o Línea 10: añadir el carácter recibido al final del mensaje cifrado;
o Línea 11: imprimir el cifrado.

LA SALIDA SERÁ:

INGRESAR MENSAJE: IDAT


JEBU

LA TRANSFORMACIÓN INVERSA

Usa el criptograma del programa anterior y devuelve las letras que están antes de las
ingresadas.

PROGRAMA:

cipher = input("Entrar criptograma: ")


text = ""
for char in cipher:
if not char.isalpha():
continue
char = char.upper()
code = ord(char) - 1
if code < ord("A"):
code = ord("Z")
text += chr(code)
print(text)

LA SALIDA SERÁ:

Entrar criptograma: HOLA


GNKZ

3
Guía 3 Escuela de Estructura de Datos y Programación
Tecnología Orientada a Objetos

 EXTRAER NÚMEROS DE UNA LÍNEA DE TEXTO

El tercer programa muestra un método simple que le permite ingresar una línea llena
de números y procesarlos fácilmente.

Nota: la función de entrada de rutina(),


combinada con las funciones int() o
float(), no es adecuada para este
propósito.

El procesamiento será extremadamente fácil: queremos que los números se sumen.

line = input("Introduzca línea llena de números - sepárelos con


espacios: ")
strings = line.split()
sum = 0
try:
for substr in strings:
sum += float(substr)
print("Sum = ", sum)
except:
print("No es un número: ", substr)

INTERPRETACIÓN:

o Línea 01: pida al usuario que ingrese una línea llena con cualquier número de
números (los números pueden ser flotantes)
o Línea 02: divide la línea que recibe una lista de subcadenas;
o Línea 03: iniciar la suma total a cero;
o Línea 04: como la conversión de cadena → flotante puede generar una excepción,
es mejor continuar con la protección del bloque try-except;
o Línea 05: iterar a través de la lista. . .
o Línea 06: . . . y tratar de convertir todos sus elementos en números flotantes; si
funciona, aumentar la suma;
o Línea 07: todo está bien hasta ahora, así que imprime la suma;
o Línea 08: el programa termina aquí en caso de error;
o Línea 09: imprima un mensaje de diagnóstico que muestre al usuario el motivo del
error.

LA SALIDA SERÁ:

Introduzca línea llena de números - sepárelos con espacios: 4 5


6 7 8 9
Sum = 39.0

4
Guía 3 Escuela de Estructura de Datos y Programación
Tecnología Orientada a Objetos

 COMPROBANDO EL IBAN

El cuarto programa implementa (en una forma ligeramente simplificada) un algoritmo


utilizado por los bancos europeos para especificar los números de cuenta. Proporciona
un método simple y bastante confiable para validar los números de cuenta contra los
errores tipográficos simples que pueden ocurrir durante la reescritura del número, por
ejemplo, desde documentos en papel, como facturas o facturas, hasta computadoras.

iban = input("Entrar IBAN, por favor: ")


iban = iban.replace(' ','')
if not iban.isalnum():
print("Caracteres inválidos dentro de IBAN - lo siento!")
elif len(iban) < 15:
print("IBAN demasiado corto")
elif len(iban) > 31:
print("IBAN demasiado largo")
else:
iban = (iban[4:] + iban[0:4]).upper()
iban2 = ""
for ch in iban:
if ch.isdigit():
iban2 += ch
else:
iban2 += str(10 + ord(ch) - ord("A"))
ibann = int(iban2)
if ibann % 97 == 1:
print("¡Parece legítimo!")
else:
print("No creo que sea un IBAN válido, lo siento")

LA SALIDA SERÁ:

Entrar IBAN, por favor: GRUPO UTP


IBAN demasiado corto

5
Guía 3 Escuela de Estructura de Datos y Programación
Tecnología Orientada a Objetos

Actividad:

CASO PRÁCTICO 1:

Introducir un texto e indicar cuantas palabras tiene y cuáles son:

SOLUCIÓN:

# Introducir un texto
Texto = input("Texto a introducir: ")

# Convertir un texto a una lista de palabras


Palabra_cadenas = Texto.split()

# Visualizar para las palabras del texto introducido


print("Listado de palabras")
for i, Listado_palabra in enumerate(Palabra_cadenas):
print("La palabra: ", Listado_palabra)

# Visualizar el número de palabras introducidas


print("El texto tiene: ", i + 1, "palabras")

LA SALIDA ES:

Texto a introducir: DESARROLLO DE SISTEMAS


Listado de palabras
La palabra: DESARROLLO
La palabra: DE
La palabra: SISTEMAS
El texto tiene: 3 palabras

CASO PRÁCTICO 2:

Introducir un texto, y visualizarlo al revés e indicar si es un palíndromo.

SOLUCIÓN:

# Introducir un texto
texto1 = input("Dame una cadena: ")

# Crear la palabra al revés


texto1_al_reves = texto1[::-1]

# Visualizar la palabra al revés

6
Guía 3 Escuela de Estructura de Datos y Programación
Tecnología Orientada a Objetos

print(texto1_al_reves)

# Verificar si la palabra introducida es igual que al revés


if (texto1 == texto1_al_reves):
print("Es palíndromo")
else:
print("No es palíndromo")

SU SALIDA ES:

Dame una cadena: AMA


AMA
Es palíndromo

CASO PRÁCTICO 3:

Un grupo de amigos desea codificar los mensajes secretos de tal forma que no puedan
ser interpretados con una lectura directa, para lo cual se han establecido las siguientes
reglas:
o Todo mensaje debe estar sus letras en mayúsculas.
o El mensaje solamente contiene letras, números y/o espacios.
o Reemplazar cada letra por la que sigue según abecedario, excepto Z que se
deberá reemplazar con la letra A.
o Reemplazar cada dígito encontrado por el siguiente número excepto el 9 que
deberá ser reemplazado por el 0.
o Los espacios en blanco se mantienen.
o Debe mostrar el mensaje codificado

SOLUCIÓN:

# Introducir texto a codificar, debe contener letras, números o


espacios
nuevo_codigo= input("Texto a codificar: ")
ve = list(nuevo_codigo.upper())

# Inicializar las variables


Num_letras = len(ve)

# Calcula la longitud del texto


letra = ""
valor_inicial = 0
cantidad_validos = 0

7
Guía 3 Escuela de Estructura de Datos y Programación
Tecnología Orientada a Objetos

# Verificar caracter a caracter si cumple con las condiciones


establecidas
while valor_inicial < Num_letras:
# Va verificando letra a letra
letra = ve[valor_inicial]
valor_inicial += 1
if letra.isspace() == True:
# Saber si el caracter es un espacio
cantidad_validos = cantidad_validos + 1
# Saber si hay letras o números
if letra.isdigit() == True or letra.isupper() == True:
cantidad_validos =cantidad_validos + 1
if cantidad_validos == Num_letras:
# Cumple con los requisitos exigidos
print("Eltexto introducido fue correcto")
nuevo_codigo = []
# Crea el código oculto
for i in ve:
if ord(i) == 90:
nuevo_codigo.append("A")
else:
if ord(i) == 57:
nuevo_codigo.append("0")
else:
if i == "":
nuevo_codigo.append("")
else:
nuevo_codigo.append(chr(ord(i) + 1))
# Imprime el nuevo código generado
print("El código correcto es: ", ''.join(nuevo_codigo))
else:
# Uno o más requisitos letras, números y no alfanuméricos no
se cumple
print("El texto tecleado no es correcto porque tiene
caracteres distintos de espacios, letras y números")

SU SALIDA ES:

Texto a codificar: t 9 ze
El texto introducido fue correcto
El código correcto es: U 0 AF

También podría gustarte