Por ejemplo hoy en una clase nos pidieron un mini programa para encontrar el numero mayor entre un listado ingresado por el usuario. Lo primero que hice fue plantear que si el numero actual (number) es mayor al numero máximo (maxnumber) entonces el numero actual se convertirá en el nuevo numero máximo:
if number > maxnumber:
maxnumber = number
Bien ahora, de donde saco el valor de number? Pues de un listado de datos que debe ingresar el usuario. Para eso se utiliza la función de raw_input() y los números que se ingresen se almacenan en una variable:maxnumber = number
numberlist = raw_input("Enter your list of numbers, separated by commas >")
Pero number list va a contener una cadena de texto, como puedo sacar cada numero de esa cadena? con la función str.split()
numberarray = numberlist.split(",")
Lo que hice fue separar por comas todos los datos ingresados en la cadena de texto numberlist y guardarlos en la variable numberarray. Esto es lo que tengo hasta ahora:
numberlist = raw_input("Enter your list of numbers, separated by commas >")
numberarray = numberlist.split(',')
if number > maxnumber:
maxnumber = number
numberarray = numberlist.split(',')
if number > maxnumber:
maxnumber = number
Entonces ya tengo una colección de números, ahora me toca que comparar cada numero dentro de esa lista con el numero máximo. Pero de donde saco el maxnumber inicial? bueno pues de la colección de números en numberarray, extraigo el primer numero, que se encuentra en la posición 0:
maxnumber = numberarray[0]
Pero esperen un momento, todos los datos en numberarray están en formato de texto. Entonces lo que extraiga de esa lista debo convertirlo a formato de numero integral con la función int():
maxnumber = int(numberarray[0])
Entonces ahi si, hasta ahora llevo:
numberlist = raw_input("Enter your list of numbers, separated by commas >")
numberarray = numberlist.split(',')
maxnumber = int(numberarray[0])
if number > maxnumber:
maxnumber = number
Ya tengo todos los datos que necesitaba, una colección de números para comparar y un numero máximo inicial de referencia. Ahora viene lo bueno, como extraer el valor de "number" de la colección de números para compararlo con maxnumber y repetir ese proceso para cada uno de los números? con los maravillosos Loops.
for number in numberarray:
Con este código estoy diciendo dos cosas:
Cada elemento dentro de "numberarray" se asignará temporalmente a la variable "number".
Que el proceso que escriba a continuación se repetirá para cada elemento dentro de numberarray.
for number in numberarray:
number = int(number)
if number > maxnumber:
maxnumber = number
number = int(number)
if number > maxnumber:
maxnumber = number
Como tomos los numeros en la colección están en formato de texto, tengo que convertir cada numero a formato integral con la función int(). Al final incluyo un print para mostrar el resultado final y listo. El código me queda de esta manera:
numberlist = raw_input("Enter your list of numbers, separated by commas >")
numberarray = numberlist.split(',')
maxnumber = int(numberarray[0])
for number in numberarray:
number = int(number)
if number > maxnumber:
maxnumber = number
print "El numero mayor es: %s" %maxnumber
Y en la ejecuccion se ve así:
Rubens-MacBook-Pro:python eljayan$ python maxnum.py
Enter your list of numbers, separated by commas >1,4,3,5,6,6,1,2,1,21,31,22,14,54,3,2,3,44,23,43,13
El numero mayor es: 54