Underc0de

Programación Scripting => Python => Mensaje iniciado por: D3ivid en Octubre 06, 2015, 02:56:11 AM

Título: Dos ejercicios para practicar con for in
Publicado por: D3ivid en Octubre 06, 2015, 02:56:11 AM
Bueno, hace ya unas semanas que no posteaba los ejercicios del libro "Introducción a la programación". La verdad que te enredas a ver y a aprender cosas y la mente se dispersa. En fin hoy traigo dos ejercicios  puesto que son muy básicos.

Ejercicio 121 dice Haz un programa que muestre, en líneas independientes y en orden inverso, todos los números pares comprendidos entre 0 y 200 (ambos inclusive).

Código (python) [Seleccionar]

# Programa que muestre en lineas individuales
# todos los numeros pare comprendidos entre 0 y 200 ambos inclusive
# orden inverso

numero = 0

for numero in range(200,-1,-2):
#La unica miga es el range puesto que lo que dice que empiece en 200  hasta -1 (no inclusive) es decir hasta 0,
#y el -2  simplemente es que le vaya restando
    print "el numero: %d\n"% (numero)


El ejercicio 122 dice Escribe un programa que muestre los números pares positivos entre 2 y un número cualquiera que introduzca el usuario por teclado.

Código (python) [Seleccionar]

#Muestra todos los numeros pares desde 2 hasta el numero que le indique
# el usuario por teclado



numero = int(raw_input('Introduzca un numero'))

for x in range(2,numero+1):
#En este e hecho una variante para que diese igual el numero que ingreses, en el anterior estaba sujeto a númer extrictos
#este pongas el numero que pongas siempre te dará lo que le pides, ademas el numero+1 es para que nos salga hasta
# el numero indicado inclusive.
    if x % 2 == 0:
        print x, " es numero par"



Viendo este tema y para que no quede muy escueto  voy a poner un trozo de teoria sacada del libro que viene al tema del range, y se trata del error conocido como Obi Wan.

Puede resultar sorprendente que range(a, b) incluya todos los números enteros comprendidos
entre a y b, pero sin incluir b. En realidad la forma ((natural)) o más frecuente de usar
range es con un sólo parámetro: range(n) que devuelve una lista con los n primeros números
enteros incluyendo al cero (hay razones para que esto sea lo conveniente, ya llegaremos).
Como incluye al cero y hay n n´umeros, no puede incluir al propio número n. Al extenderse el
uso de range a dos argumentos, se ha mantenido la ((compatibilidad)) eliminando el último
elemento. Una primera ventaja es que resulta fácil calcular cu´antas iteraciones realizar´a
un bucle range(a, b): exactamente b - a. (Si el valor b estuviera incluido, el número de
elementos sería b - a + 1.)
Hay que ir con cuidado, pues es fácil equivocarse ((por uno)). De hecho, equivocarse ((por
uno)) es tan frecuente al programar (y no sólo con range) que hay una expresión para este
tipo de error: un error Obi Wan (Kenobi), que es más o menos como suena en inglés ((off
by one)) (pasarse o quedarse corto por uno).


Pd: Espero os sea útil, y cualquier comentario es bienvenido :)