Programa de Python para imprimir palabras de una oración con el valor ASCII de caracteres más alto y más bajo

Dada una string S de longitud N , que representa una oración, la tarea es imprimir las palabras con el promedio más alto y más bajo de valores ASCII de caracteres.

Ejemplos:

Entrada: S = «cada momento es un nuevo comienzo»
Salida:
La palabra con valores ASCII promedio mínimos es «comienzo».
La palabra con valores ASCII promedio máximos es «cada».
Explicación:
El promedio de los valores ASCII de los caracteres de la palabra “cada” = ((101+118+101+114+121)/5 =111) El promedio de los valores ASCII de los caracteres de la palabra “momento” =: (
( 109+111+109+101+110+116)/6 = 109,33333)
El promedio de los valores ASCII de los caracteres de la palabra “es” = ((105+115)/2 =)
El promedio de los valores ASCII de los caracteres del palabra «fresco» = ((102+114+101+115+104)/5 = 110)
El promedio de los valores ASCII de los caracteres de la palabra «principio» = ((98+101+103+105+110+110+ 105+110+103)/9 =105).
Por lo tanto, la palabra con el mínimo de promedio de valores ASCII es «comenzando» y el máximo de promedio de valores ASCII es «cada».

Entrada: S = “el cielo es azul”
Salida:
La palabra con valores ASCII promedio mínimos es “azul”.
La palabra con valores ASCII promedio máximos es “cielo”.

Enfoque: La idea es usar la función split() .

  • Divide todas las palabras de la string separadas por espacios usando la función split() . Guárdelo en una lista , diga lis[].
  • Inicialice cuatro variables, digamos maxi, mini, maxId y minId , para almacenar el promedio máximo de valores ASCII, el valor ASCII promedio mínimo, el índice de la palabra con el valor ASCII promedio máximo en la lista lis y el índice de la palabra con el valor ASCII promedio mínimo en la lista lis[] respectivamente.
  • Defina una función, digamos averageValue(), para encontrar el valor ASCII promedio de una string .
  • Recorra la lista lis[] y realice las siguientes operaciones:
    • Para cada i- ésima palabra en la lista lis[] , y guárdela en una variable, diga curr.
    • Si curr> maxi, actualice maxi como maxi = curr y asigne maxId = i.
    • Si curr< mini, actualice mini como mini = curr y asigne minId = i.
  • Después de completar los pasos anteriores, imprima las palabras lis[minId] y lis[maxId] con el promedio mínimo y máximo del valor ASCII de sus caracteres .

Python3

# Python implementation of the above approach
 
# Function to find the average
# of ASCII value of a word
def averageValue(s):
 
    # Stores the sum of ASCII
    # value of all characters
    sumChar = 0
 
   # Traverse the string
    for i in range(len(s)):
 
        # Increment sumChar by ord(s[i])
        sumChar += ord(s[i])
 
    # Return the average
    return sumChar // len(s)
 
# Function to find words with maximum
# and minimum average of ascii values
def printMinMax(string):
 
    # Stores the words of the
    # string S separated by spaces
    lis = list(string.split(" "))
 
    # Stores the index of word in
    # lis[] with maximum average
    maxId = 0
 
    # Stores the index of word in
    # lis[] with minimum average
    minId = 0
 
    # Stores the maximum average
    # of ASCII value of characters
    maxi = -1
 
    # Stores the minimum average
    # of ASCII value of characters
    mini = 1e9
 
    # Traverse the list lis
    for i in range(len(lis)):
 
        # Stores the average of
        # word at index i
        curr = averageValue(lis[i])
 
        # If curr is greater than maxi
        if(curr > maxi):
 
            # Update maxi and maxId
            maxi = curr
            maxId = i
 
        # If curr is lesser than mini
        if(curr < mini):
 
            # Update mini and minId
            mini = curr
            minId = i
 
    # Print string at minId in lis
    print("Minimum average ascii word = ", lis[minId])
 
    # Print string at maxId in lis
    print("Maximum average ascii word = ", lis[maxId])
 
 
# Driver Code
 
S = "every moment is fresh beginning"
printMinMax(S)
Producción: 

Minimum average ascii word =  beginning
Maximum average ascii word =  every

 

Complejidad de tiempo: O(N), ya que estamos usando un bucle para atravesar N veces, por lo que nos costará O(N) tiempo 
Espacio auxiliar: O(1), ya que no estamos usando ningún espacio adicional.

Publicación traducida automáticamente

Artículo escrito por vikkycirus y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *