Este programa permite al usuario ingresar una cadena y muestra el carácter que aparece con más frecuencia en una cadena. Necesito ayuda para explicar frecuente = i .

# This program displays the character that appears most frequently in the string

def main():

    # Local variables.
    count = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    index = 0
    frequent = 0

    # Get input.
    user_string = input('Enter a string: ')
    for ch in user_string:
        ch = ch.upper()

        # Determine which letter this character is.
        index = letters.find(ch)
        if index >= 0:

            # Increase counting array for this letter.
            count[index] = count[index] + 1

    # Please help me explain this entire part!
    for i in range(len(count)):
        if count[i] > count[frequent]:
            frequent = i

    print('The character that appears most frequently' \
          ' in the string is ', letters[frequent], '.', \
          sep='')


# Call main
main()
0
K-py 13 nov. 2017 a las 00:35

2 respuestas

La mejor respuesta

El fragmento de código en cuestión:

for i in range(len(count)):
    if count[i] > count[frequent]:
        frequent = i

Primero, el ciclo for itera sobre la longitud del recuento, que es 26.

La instrucción if:

if count[i] > count[frequent]:

Comprueba si la letra actual en el bucle for es más grande que el carácter más frecuente actual. Si es así, establece el nuevo carácter más frecuente como índice del bucle for.

Por ejemplo,

Si se hace referencia a A 12 veces y a B se hace referencia a 14, entonces en el segundo ciclo cuando i = 1, la declaración if se vería así:

if 12 > 14:
   frequent = 1

Esto establece frecuente en 1 que se puede utilizar para encontrar la frecuencia en el recuento, por ejemplo. contar [1] == 14

0
spitfire21 12 nov. 2017 a las 21:44

Hay 26 elementos diferentes en la lista count y 26 letras en el juego de caracteres. Repite la lista count para cada elemento (que es la parte for i in range (len(count))) y luego ve si el valor de ese elemento es mayor que el valor del elemento más grande actual que ha encontrado; simplemente hablando, valor más grande en la matriz, pero en lugar de obtener el valor que obtiene el índice, frequent = i está estableciendo el índice del valor más grande que se encuentra actualmente mientras itera a la variable frequent. Es más simple y más pitonista simplemente hacer frecuente = índice (max (recuento) que tiene EXACTAMENTE el mismo efecto

0
John 12 nov. 2017 a las 21:51