CURSO DE PYTHON 3.X


3.2.- Comparativo de Aplicación y Desarrollo de código en Python 3.x              Ejemplos Practicos III


DIFERENTES EJEMPLOS DE ORDENACIÓN NUMÉRICO Y LITERAL

 

     En Python, hay varios algoritmos de ordenación que puedes utilizar para ordenar listas o arreglos.

       Además, también exploraremos cómo trabajar con literales en Python.

 

Algoritmos de Ordenación Numérico

     Algunos ejemplos de algoritmos de ordenación numéricos en Python:

 

Ordenación por Inserción (Insertion Sort): En este algoritmo, se construye una lista ordenada uno a uno insertando elementos no ordenados en su posición correcta.

Aquí tienes un ejemplo en Python:

def insertion_sort(arr):

    for i in range(1, len(arr)):

        key = arr[i]

        j = i - 1

        while j >= 0 and arr[j] > key:

            arr[j + 1] = arr[j]

            j -= 1

        arr[j + 1] = key

 

nums = [4, 2, 7, 1, 9, 5]

insertion_sort(nums)

print(nums)  # Salida [1, 2, 4, 5, 7, 9]

 

SALIDA POR PANTALLA 

 

Ordenación por Combinación (Merge Sort): Este algoritmo divide la lista en mitades, ordena cada mitad y luego combina las mitades ordenadas.

Aquí tienes un ejemplo en Python:

def merge_sort(arr):

    if len(arr) > 1:

        mid = len(arr) // 2

        left_half = arr[:mid]

        right_half = arr[mid:]

 

        merge_sort(left_half)

        merge_sort(right_half)

 

        i, j, k = 0, 0, 0

        while i < len(left_half) and j < len(right_half):

            if left_half[i] < right_half[j]:

                arr[k] = left_half[i]

                i += 1

            else:

                arr[k] = right_half[j]

                j += 1

            k += 1

 

        while i < len(left_half):

            arr[k] = left_half[i]

            i += 1

            k += 1

 

        while j < len(right_half):

            arr[k] = right_half[j]

            j += 1

            k += 1

 

nums = [4, 2, 7, 1, 9, 5]

merge_sort(nums)

print(nums)  # Salida [1, 2, 4, 5, 7, 9]

 

SALIDA POR PANTALLA

 

 

Literales en Python

En Python, los literales son valores primitivos que se toman de forma literal. Algunos ejemplos de literales son:

 

Cadenas de texto: "Hola, soy un literal"

Números: 1, 1.5, -5.2

 

Ordenación Numérica y Literal en Python 3.X

     Python ofrece varias formas de ordenar listas.

     Veamos algunos ejemplos:

 

1. Ordenación por defecto (orden natural)

     La ordenación por defecto en Python organiza los elementos según su tipo de dato.

            Para números (int, float), ordena de menor a mayor.

Para cadenas (str), ordena alfabéticamente (mayúsculas antes que minúsculas con acentos).

numeros = [5, 1, 8, 3, 2]

print(sorted(numeros))  # Salida: [1, 2, 3, 5, 8]

palabras = ["Hola", "mundo", "banana", "adiós"]

print(sorted(palabras))  # Salida: ["Hola", "adiós", "banana",  "mundo"]

 

SALIDA POR PANTALLA

 

2. Ordenación inversa

Para ordenar en orden inverso, podemos usar el argumento reverse=True en la función sorted.

numeros = [5, 1, 8, 3, 2]

print(sorted(numeros, reverse=True))  # Salida: [8, 5, 3, 2, 1]

 

palabras = ["Hola", "mundo", "banana", "adiós"]

print(sorted(palabras, reverse=True))  # Salida: ["mundo",  "banana", "adiós""Hola"]

 

SALIDA POR PANTALLA

 

 

3. Ordenación con función personalizada

Podemos definir una función para especificar cómo comparar los elementos. La función recibe dos elementos y devuelve True si el primero debe ir antes que el segundo en la ordenación.

def ordenar_por_longitud(palabra1, palabra2):

  return len(palabra1) < len(palabra2)  # Ordena por longitud creciente

 

palabras = ["Hola", "mundo", "banana", "adiós"]

print(sorted(palabras, key=ordenar_por_longitud))  # Salida: ["Hola", "adiós", "banana", "mundo"]

 

En este ejemplo, la función ordenar_por_longitud ordena las palabras por su longitud de menor a mayor.

Se puede utilizar cualquier criterio en la función personalizada para definir el orden deseado.

 

Al ejecutarlo da este error: ordenar_por_longitud() missing 1 required positional argument: 'palabra2'

 

     El problema en este código es que la función ordenar_por_longitud espera dos argumentos (palabra1 y palabra2), pero al usarla como clave en la función sorted(), se espera que solo tome un argumento.

   Para solucionarlo, puedes definir ordenar_por_longitud como una función lambda que tome una sola palabra y calcule su longitud.

 

Aquí te muestro cómo hacerlo:

 

 

palabras = ["Hola", "mundo", "banana", "adiós"]

 

print(sorted(palabras, key=lambda palabra: len(palabra)))

 

 

Esta expresión lambda toma una palabra como entrada y devuelve su longitud, que es lo que quieres usar como criterio de ordenación.

 

De esta manera, evitas el error que estabas teniendo.

 

4. Ordenación de listas con elementos mixtos (números y cadenas)

Si la lista contiene elementos de diferentes tipos (por ejemplo, números y cadenas), la ordenación por defecto intentará convertir todo a un tipo común, lo que puede dar resultados inesperados.

 

Para evitar esto, se recomienda ordenar por separado los elementos numéricos y literales, o definir una función personalizada que maneje ambos tipos correctamente.

 

 

Algunos ejemplos más de ordenación numérica y literal en Python 3.x:

 

Ordenación Numérica:

# Ordenación de una lista de números de forma ascendente

numeros = [10, 5, 8, 2, 3]

numeros_ordenados = sorted(numeros)

print(numeros_ordenados)  # Salida: [2, 3, 5, 8, 10]

 

# Ordenación de una lista de números de forma descendente

numeros = [10, 5, 8, 2, 3]

numeros_ordenados = sorted(numeros, reverse=True)

print(numeros_ordenados)  # Salida: [10, 8, 5, 3, 2]

 

# Ordenación de una lista de tuplas por un elemento numérico

datos = [("Juan", 25), ("Ana", 18), ("Pedro", 30)]

datos_ordenados = sorted(datos, key=lambda x: x[1])

print(datos_ordenados)  # Salida: [("Ana", 18), ("Juan", 25), ("Pedro", 30)]

 

SALIDA POR PANTALLA

 

Ordenación Literal:

# Ordenación de una lista de palabras en orden alfabético

palabras = ["manzana", "banana", "cereza", "dátil"]

palabras_ordenadas = sorted(palabras)

print(palabras_ordenadas)  # Salida: ["banana", "cereza", "dátil", "manzana"]

 

# Ordenación de una lista de strings por longitud de forma ascendente

frases = ["Hola", "Hola mundo", "Hola a todos"]

frases_ordenadas = sorted(frases, key=len)

print(frases_ordenadas)  # Salida: ["Hola", "Hola a todos", "Hola mundo"]

 

# Ordenación de una lista de diccionarios por un campo literal

personas = [{"nombre": "Juan", "edad": 25}, {"nombre": "Ana", "edad": 18}, {"nombre": "Pedro", "edad": 30}]

personas_ordenadas = sorted(personas, key=lambda x: x["nombre"])

print(personas_ordenadas)  # Salida: [{"Ana", 18}, {"Juan", 25}, {"Pedro", 30}]

 

SALIDA POR PANTALLA

 

 

Ciertamente, en Python 3.x existen diferentes métodos y técnicas para ordenar listas de elementos numéricos y literales (cadenas de texto). 

Aquí te presento algunos ejemplos:

 

Ordenación numérica:

# Lista de números desordenada

numeros = [5, 2, 8, 1, 9, 3]

 

# Ordenar la lista en orden ascendente

numeros.sort()

print(numeros)  # Salida: [1, 2, 3, 5, 8, 9]

 

# Ordenar la lista en orden descendente

numeros.sort(reverse=True)

print(numeros)  # Salida: [9, 8, 5, 3, 2, 1]

 

 SALIDA POR PANTALLA

 

También puedes utilizar la función sorted() para obtener una nueva lista ordenada sin modificar la original:

numeros = [5, 2, 8, 1, 9, 3]

numeros_ordenados = sorted(numeros)

print(numeros_ordenados)  # Salida: [1, 2, 3, 5, 8, 9]

 

Ordenación de cadenas de texto:

# Lista de cadenas desordenada

palabras = ["manzana", "naranja", "kiwi", "banana", "pera"]

 

# Ordenar la lista de cadenas alfabéticamente

palabras.sort()

print(palabras)  # Salida: ['banana', 'kiwi', 'manzana', 'naranja', 'pera']

 

# Ordenar la lista de cadenas alfabéticamente (orden inverso)

palabras.sort(reverse=True)

print(palabras)  # Salida: ['pera', 'naranja', 'manzana', 'kiwi', 'banana']

 

SALIDA POR PANTALLA

 

Puedes utilizar la función sorted()de la misma manera que con los números:

palabras = ["manzana", "naranja", "kiwi", "banana", "pera"]

palabras_ordenadas = sorted(palabras)

print(palabras_ordenadas)  # Salida: ['banana', 'kiwi', 'manzana', 'naranja', 'pera']

 

Ordenación personalizada:

Python también te permite definir una función de clave personalizada para ordenar los elementos de acuerdo a criterios más complejos.

Por ejemplo, ordenar una lista de tuplas por el segundo elemento:

# Lista de tuplas

tuplas = [(2, 3), (1, 2), (3, 1), (2, 1)]

 

# Ordenar por el segundo elemento

tuplas.sort(key=lambda x: x[1])

print(tuplas)  # Salida: [(3, 1), (2, 1), (1, 2), (2, 3)]

 

 SALIDA POR PANTALLA

 

     En este ejemplo, la función lambda x: x[1]se utiliza como clave para ordenar las tuplas según su segundo elemento.

 

Estos son solo algunos ejemplos básicos de cómo ordenar listas de números y cadenas de texto en Python.

Existen muchas más opciones y técnicas de ordenación dependiendo de tus necesidades específicas.

 


PREGUNTAS DE CONOCIMIENTOS BASICOS

          A fin de reconocer el avance del conocimiento en este lenguaje de programación (Python 3.x) transcribo a continuación una serie de preguntas básicas cuyas respuestas la encontrara en las líneas desarrolladas hasta el presente módulo:

1. ¿Qué es un IDE y que funciones cumple? (mencionar sin conceptualizar)

2.   ¿Cómo se define una variable en Python?

3.   ¿Cuáles son las reglas básicas para la asignación de variables?

4.   ¿Qué es una variable numérica en Python?

5.   ¿Es necesario declarar una variable en Python?

6.   ¿Cómo se asigna valores a una variable?

7.   ¿Cuál es la diferencia entre una variable entera (int) y una variable flotante (float)?

8.   ¿Cómo se declara una variable entera en Python?

9.   ¿Cuál es el tipo de dato de la variable en la expresión: numero = 5.5?

10.  ¿Cómo se declara una variable flotante en Python?

11.  ¿Qué es una cadena de caracteres (string) en Python?

12.  ¿Cómo se declara una cadena de caracteres en Python?

13.  ¿Cómo pueden evaluarse una cadena de caracteres?

14.  ¿Cuál es el resultado de la concatenación de las cadenas 'Hola' y 'Mundo' en Python?

15. ¿Cómo se convierte un valor numérico en una cadena de caracteres en Python?

16. ¿Qué es una constante? 

17. ¿Cómo se identifica o definen las constantes?

 

 

Encontraran las respuestas en el próximo módulo