Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 2 Noviembre 2010, 18:15 pm



Título: [Python] Pasar de decimal a Octal.
Publicado por: Meta en 2 Noviembre 2010, 18:15 pm
Debo lograr con for in pasar un número que me pide en raw_input de entrada numeros decimales y a su salida números octales.

Por ahora hice esto pero no me sale, es para dar ideas.

Código
  1. decimal = int(raw_input('Introduce un número decimal: '))
  2.  
  3. valor = 0
  4. for bit in decimal:
  5.    valor += valor + int(bit)
  6.  
  7. print 'Su valor Octal es', valor

# Se que el valor Octal se representa así \000

Hay que hacerlo con for in y cadenas, no como intenté hacer algo sin sentido.

Código
  1. decimal = int(raw_input('Introduce un número decimal: '))
  2.  
  3. print decimal \000


Título: Re: [Python] Pasar de decimal a Octal.
Publicado por: Shell Root en 2 Noviembre 2010, 19:19 pm
Citar
La conversión de un número decimal a octal se hace mediante divisiones sucesivas por 8 y colocando los restos obtenidos en orden inverso. Por ejemplo, para escribir en octal el número decimal 12210 tendremos que hacer las siguientes divisiones:

122 : 8 = 15   Resto: 2
15 : 8 = 1       Resto: 7
1 : 8 = 0         Resto: 1
Lo sabías?


Título: Re: [Python] Pasar de decimal a Octal.
Publicado por: VirajeCR en 2 Noviembre 2010, 19:24 pm
Respecto a tu código. Es importante recordar que en python los valores de tipo int no son iterables. Al menos ese código da ese error.

Personalmente creo que la mejor forma de atacar el problema es en la forma que propone Shell Root.

O habrá otra.

Saludos.


Título: Re: [Python] Pasar de decimal a Octal.
Publicado por: Meta en 2 Noviembre 2010, 23:36 pm
Citar
La conversión de un número decimal a octal se hace mediante divisiones sucesivas por 8 y colocando los restos obtenidos en orden inverso. Por ejemplo, para escribir en octal el número decimal 12210 tendremos que hacer las siguientes divisiones:

122 : 8 = 15   Resto: 2
15 : 8 = 1       Resto: 7
1 : 8 = 0         Resto: 1
Lo sabías?

Haciendo pruebas he estado comprobando si el resultado que hay que hacer o el Octal que busco está en el resto por lo que interpreto.

Código
  1. d = 945698965
  2. D = 567376
  3.  
  4. resultado = d / D
  5.  
  6.  
  7.  
  8. print resultado # Cociente.
  9. print d % D # ¿Este resto te refieres que en realidad es Octal?

Citar
1666
450549 Supuestamente es el resto y no da Octal.


Título: Re: [Python] Pasar de decimal a Octal.
Publicado por: VirajeCR en 2 Noviembre 2010, 23:45 pm
Esto está como querer jugar ajedrez sin saberlo.

Acá una ayudita para que aclares tus dudas.

Citar
http://platea.pntic.mec.es/~lgonzale/tic/binarios/numeracion.html


Título: Re: [Python] Pasar de decimal a Octal.
Publicado por: Meta en 3 Noviembre 2010, 01:07 am
La verdad no caigo. Se hacerlo a mano pero con Python como que no.

(http://www.subeimagenes.com/img/00001-5953.jpg)

Ver imagen. (http://www.subeimagenes.com/img/00001-5953.jpg)

Por lo que he entendido, el resultado si me funciona, claro que lo he hecho en plan chapuza a domicilio y no es cuestión. ¿Hay de una manera de ahcerlo con un simle for in?

Código
  1. n1 = 122 / 8
  2. resto1 = 122 % 8
  3. n2 = n1 / 8
  4. resto2 = n1 % 8
  5. n3 = n2 / 8
  6. resto3 = n2 % 8
  7.  
  8. print n1, n2, n3
  9. print resto3, resto2, resto1
Citar
15 1 0
1 7 2

Deba haber otra forma mejor de hacerlo. Puse los datos directamente. Debe ser que te pida una entrada decimal con raw_input con cualquier cifra corta o larga y después un resultado Octal.

Por ejemplo:
- Si introduzco en decimal 145 su Octal es 221.
- Si su valor decimal es 487653276, Octal es 3504177634.

Es la diea principal que me viene bien para hacer estas conversiones, no a la manera que hice porque me estaba buscando la vida de resolver el problema pero es específico y muy incómodo.


Título: Re: [Python] Pasar de decimal a Octal.
Publicado por: Novlucker en 3 Noviembre 2010, 11:31 am
Insisto en que tienes serios problemas de lógica :xD
Código
  1. n = input('Ingresa un valor: ')
  2. octal = ''
  3. while n!=0:
  4.    octal = str(n%8) + octal
  5.    n /= 8
  6. print(octal)

Saludos


Título: Re: [Python] Pasar de decimal a Octal.
Publicado por: Meta en 3 Noviembre 2010, 11:34 am
Parece que tengo más problemas más allá de lo que pueda imaginar.

Sin for in ni nada se puede hacer así.
Código
  1. n = int(raw_input("Dame un numero: "))
  2. print "%o" % n


Título: Re: [Python] Pasar de decimal a Octal.
Publicado por: Novlucker en 3 Noviembre 2010, 11:42 am
Pero esa no vale :xD También así:
Código
  1. n = input('Ingresa un valor: ')
  2. print(oct(n))

Por otra parte, antes de que en python 3000 se instaurara el input como función única, en python 2.x se usa raw_input para cadenas, e input para números, de este modo te evitas la conversión :P

Saludos


Título: Re: [Python] Pasar de decimal a Octal.
Publicado por: Meta en 3 Noviembre 2010, 11:54 am
No lo sabía.

Nota:
Estoy con la versión 2.6 el Python y no me quiero meter en el 3.x todavía. Deja ver si acabo el libro. Esto de aprender desde cero Python, veo que tarda mucho, en mi caso. No soy muy distro con él todavía, pero me engancha horas aquí.