Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 16 Octubre 2010, 05:56 am



Título: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Meta en 16 Octubre 2010, 05:56 am
 :D

En un archivo de texto.py tengo en su interior este simple código.

range(2, 5, 1)

No me lo ejecuta si en el terminal pongo: python texto.py. No hace nada, se queda en blanco. Tampoco con el netbeans 6.8 del openSUSE 11.3 (http://software.opensuse.org/113/es).

Si me funciona si lo abro python en el terminal y lo escribo directamente.

¿Qué es lo que ocurre?

;)


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Shell Root en 16 Octubre 2010, 06:02 am
jejejeje supongo que quieres mostradlo. Así que,  :rolleyes:

Código
  1. print range(2, 5, 1)

Resultado,
Código
  1. shellroot@alex-laptop:~/Escritorio$ python PoC.py
  2. [2, 3, 4]

Que sería igual que,
Código
  1. shellroot@alex-laptop:~/Escritorio$ python
  2. Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
  3. [GCC 4.4.3] on linux2
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> range(2, 5, 1)
  6. [2, 3, 4]


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Meta en 16 Octubre 2010, 06:19 am
Pues si es así gracias.  ;-)


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Meta en 16 Octubre 2010, 06:24 am
Por cierto.

Debe aparecer entre 0 y 200 números pares.
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200]

Por poner un ejemplo arriba. Puse:

print range(0, 200, 2)

¿En cuanto al impar como se hace?

En caso de que no esté bien el par me avisas.


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Shell Root en 16 Octubre 2010, 06:31 am
WTF!, a que te refieres con al impar como se hace?.
Código
  1. 1,3,5,7...


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Meta en 16 Octubre 2010, 06:40 am
Cuando haces un range del 0 al 200, todos los números debe ser impar al visualizarse.


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Shell Root en 16 Octubre 2010, 06:47 am
Código
  1. for n in range(1,200,1):
  2.    if n % 2 != 0:
  3.        print n

Resultado,
Código
  1. shellroot@alex-laptop:~/Escritorio$ python PoC.py
  2. 1
  3. 3
  4. 5
  5. 7
  6. 9
  7. [--SNIP--]
  8. 191
  9. 193
  10. 195
  11. 197
  12. 199


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: [L]ord [R]NA en 16 Octubre 2010, 07:12 am
Código
  1. print range(1,200,2)


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Meta en 16 Octubre 2010, 07:22 am
Lo hice así desde el principio.

print range(0, 201, 2)

Así si da par. El problema cuando es impar. Por cierto. Hay que poner 201 para que llegue a los 200. Si usas el 200 a secas al final te muestra el 199.

Para que se hagan una idea:
Citar
# Si el número es par.
if a % 2 == 0:
print 'El número es par.'

# Si el número es impar.
if a % 2 == 1:
print 'El número es impar.'

El problema es intentarlo hacer con range(0, 200, 2)o como sea que sea par y el otro ejemplo impar.


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Meta en 16 Octubre 2010, 08:15 am
Código
  1. for n in range(1,200,1):
  2.    if n % 2 != 0:
  3.        print n

Resultado,
Código
  1. shellroot@alex-laptop:~/Escritorio$ python PoC.py
  2. 1
  3. 3
  4. 5
  5. 7
  6. 9
  7. [--SNIP--]
  8. 191
  9. 193
  10. 195
  11. 197
  12. 199

Es este:

Código
  1. for n in range(1,200,1):
  2.    if n % 2 != 0:
  3.        print n

impar es este:

Código
  1. for n in range(1,200,1):
  2.    if n % 2 != 1:
  3.        print n


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Shell Root en 16 Octubre 2010, 08:20 am
Pero como bien te lo dijo @Lord R.N.A.. Se puede hacer directamente con al rango. Así,

PAR,
Código
  1. >>> range(0,200,2)
  2. [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198]


IMPAR,
Código
  1. >>> range(1,200,2)
  2. [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199]


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Meta en 16 Octubre 2010, 08:53 am
Algo así hice, pero no se me ve en el archivo al cargarlo, debo ponerlo directamente en python en el Terminal.

Código
  1. for n in range(0, 201):
  2.    if n % 2 != 1:
  3.        print n

Ahora este te dice, números pares entre 0 y 200 en orden inverso.

Me sale inverso pero negativo. No se si esto es válido.

Citar
-200
-198
-196
-194
-192
-190
-188
-186
-184
-182
-180
-178
-176
-174
-172
-170
-168
-166
-164
-162
-160
-158
-156
-154
-152
-150
-148
-146
-144
-142
-140
-138
-136
-134
-132
-130
-128
-126
-124
-122
-120
-118
-116
-114
-112
-110
-108
-106
-104
-102
-100
-98
-96
-94
-92
-90
-88
-86
-84
-82
-80
-78
-76
-74
-72
-70
-68
-66
-64
-62
-60
-58
-56
-54
-52
-50
-48
-46
-44
-42
-40
-38
-36
-34
-32
-30
-28
-26
-24
-22
-20
-18
-16
-14
-12
-10
-8
-6
-4
-2


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Meta en 16 Octubre 2010, 08:57 am
Pero como bien te lo dijo @Lord R.N.A.. Se puede hacer directamente con al rango. Así,

PAR,
Código
  1. >>> range(0,201,2)
  2. [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200]


IMPAR,
Código
  1. >>> range(1,201,2)
  2. [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199]

Tienes que poner 201. Porque siempre te resta -1.

A parte de eso. ¿Cómo hacer en números pares pero inverso? Es decir, de 200 al 0. No al -200 al 0. Recuerda, que se apar también pero inverso.


Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Shell Root en 16 Octubre 2010, 09:12 am
Código
  1. >>> range(200, 0, -2)
  2. [200, 198, 196, 194, 192, 190, 188, 186, 184, 182, 180, 178, 176, 174, 172, 170, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 122, 120, 118, 116, 114, 112, 110, 108, 106, 104, 102, 100, 98, 96, 94, 92, 90, 88, 86, 84, 82, 80, 78, 76, 74, 72, 70, 68, 66, 64, 62, 60, 58, 56, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]



Título: Re: No me funcina dentro de un archivo, si en un terminal.
Publicado por: Meta en 16 Octubre 2010, 09:46 am
Al final se me escapó algo porque no me salía.

¿De esta manera que no me sale tampoco?

# Genera números pares del 0 al 200 inverso.
for n in range(200, 0):
    if n % -2 != 1:
        print n


Edito:


Ignora lo que acaba de decir arriba, el tuyo es más cómodo.

Muchas gracias.