elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Necesito pistas por favor. Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Necesito pistas por favor. Python  (Leído 3,506 veces)
makiro15

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Necesito pistas por favor. Python
« en: 21 Octubre 2015, 16:53 pm »

Pasar de un numero octal a decimal, nose como hacer que funcione con un número mayor a una cifra.

Código
  1. n=input('Ingrese un número: ')
  2. p='01234567'
  3.  
  4. l=len(n)
  5. q=1
  6. z=2
  7. n1=n
  8. if n in p:
  9.    while (q<=l):
  10.        m=((n[-q]))
  11.        m=int(m)
  12.        o=8**z
  13.        y=(m*o)  
  14.  
  15.  
  16.        print (n,y)
  17.        z+=1
  18.        q+=1


« Última modificación: 21 Octubre 2015, 17:00 pm por Eleкtro » En línea

kr.chacacreker

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: Necesito pistas por favor. Python
« Respuesta #1 en: 21 Octubre 2015, 19:12 pm »

mira las opciones que tienes con las funciones oct() e int(), son las que sirven para pasar de octal a decimal y viceversa. checa tambien hex() y bin().... En el interprete de python help(oct) por ejemplo.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Necesito pistas por favor. Python
« Respuesta #2 en: 21 Octubre 2015, 19:29 pm »

con tu código hay un montón de errores... fuera de la solución de kr.chacacreker que es la más practica

en tú código usas "input" pero eso captura un numero, no un string como tú esperas, para eso tienes que usar raw_input

el p es medio absurdo

if n in p tambien carece de sentido, no discutamos el while...


como sería lo más "practico"

n captura por raw input... luego inviertes n usando [::-1]

es decir
Código
  1. n = n[::-1]

asignas a la potencia que vas a usar inicialmente 0 no 2, a demás necesitas una variable que vaya acumulando el resultado

con todo esto simplemente usando un for puedes iterar entre los elementos de n

Código
  1. for numero in n:

"numero" contendrá el numero trabajado... de allí en más es que hagas el cálculo



En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Necesito pistas por favor. Python
« Respuesta #3 en: 22 Octubre 2015, 03:57 am »

coincido con ambos comentarios, salvo lo del raw input(por suerte ya no se usa más en las versiones de 3x), que por el print supongo es el que estas usando, pero es cierto que input toma strings, para que sea integer sería asi:
Código
  1. n=int(input('Ingrese un número: '))
  2.  
o
Código
  1. n=input('Ingrese un número: ')
  2. n=int(n)
  3.  
y es preferible usar las funciones ya predefinidas como dice kr.chacacreker
En línea

makiro15

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Necesito pistas por favor. Python
« Respuesta #4 en: 23 Octubre 2015, 17:06 pm »

mira las opciones que tienes con las funciones oct() e int(), son las que sirven para pasar de octal a decimal y viceversa. checa tambien hex() y bin().... En el interprete de python help(oct) por ejemplo.
Si entiendo mas o menos como usar esas funciones pero mi bendito profe quiere que el procedimiento sea multiplicando y elevando :/
Gracias.



con tu código hay un montón de errores... fuera de la solución de kr.chacacreker que es la más practica

en tú código usas "input" pero eso captura un numero, no un string como tú esperas, para eso tienes que usar raw_input

el p es medio absurdo

if n in p tambien carece de sentido, no discutamos el while...


como sería lo más "practico"

n captura por raw input... luego inviertes n usando [::-1]

es decir
Código
  1. n = n[::-1]

asignas a la potencia que vas a usar inicialmente 0 no 2, a demás necesitas una variable que vaya acumulando el resultado

con todo esto simplemente usando un for puedes iterar entre los elementos de n

Código
  1. for numero in n:

"numero" contendrá el numero trabajado... de allí en más es que hagas el cálculo




Lanzada la pregunta le dije al profe que hay un "for" necesario y me dijo que NO, que con un if bastaba :(
Pero con la ayuda que ya me has brindado, volveré a intentarlo.
Gracias.





coincido con ambos comentarios, salvo lo del raw input(por suerte ya no se usa más en las versiones de 3x), que por el print supongo es el que estas usando, pero es cierto que input toma strings, para que sea integer sería asi:
Código
  1. n=int(input('Ingrese un número: '))
  2.  
o
Código
  1. n=input('Ingrese un número: ')
  2. n=int(n)
  3.  
y es preferible usar las funciones ya predefinidas como dice kr.chacacreker
Efectivamente, ahora usamos python 3.5 XD
Pero diferencia es mínima :)
Gracias.

Mod: No hagas doble post, usa el botón modificar
« Última modificación: 23 Octubre 2015, 18:18 pm por engel lex » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Necesito pistas por favor. Python
« Respuesta #5 en: 24 Octubre 2015, 09:26 am »

¿es de matemáticas o de python el "profesor"? porque si es de matemáticas que mal método usa para la conversión, lo más normal o fácil es solo dividir y si es de python ponele que no quiera que uses la función oct(), pero podés usar el modulo math y alguna de sus funciones o salvo el int() ¿quiere todo a base de lógica? tipo antigua escuela que no había tantos modulos


Edito: ni siquiera leí bien el tipo de conversión! Error mío!

por perro que soy (y porque me aburre leer los post) al poner mal la info que conteste recién, hice un código más que simple, con un while y un if y variables indicativas.
Código
  1. #-*- coding:utf -8 -*-
  2.  
  3. numero=input('Ingrese un numero: ')
  4. invertido= numero[::-1]
  5. posibles='01234567'
  6. largo = len(numero)
  7. inicio=0
  8. indice=0
  9. elevado=0
  10. convertido=0
  11. while inicio < largo:
  12.    cada_numero=(invertido[inicio])    
  13.    inicio+=1
  14.    if cada_numero in posibles:
  15.        convertir=int(invertido[indice])*8 ** elevado
  16.        indice+=1
  17.        elevado+=1
  18.        convertido+=convertir
  19.  
  20.    else:
  21.        print("El numero {} no corresponde a un octal".format(cada_numero))
  22.  
  23. print ("El número {} octal es en decimal {} ".format (numero,convertido))
  24.  
« Última modificación: 24 Octubre 2015, 11:53 am por tincopasan » En línea

makiro15

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Necesito pistas por favor. Python
« Respuesta #6 en: 24 Octubre 2015, 16:48 pm »

¿es de matemáticas o de python el "profesor"? porque si es de matemáticas que mal método usa para la conversión, lo más normal o fácil es solo dividir y si es de python ponele que no quiera que uses la función oct(), pero podés usar el modulo math y alguna de sus funciones o salvo el int() ¿quiere todo a base de lógica? tipo antigua escuela que no había tantos modulos


Edito: ni siquiera leí bien el tipo de conversión! Error mío!

por perro que soy (y porque me aburre leer los post) al poner mal la info que conteste recién, hice un código más que simple, con un while y un if y variables indicativas.
Código
  1. #-*- coding:utf -8 -*-
  2.  
  3. numero=input('Ingrese un numero: ')
  4. invertido= numero[::-1]
  5. posibles='01234567'
  6. largo = len(numero)
  7. inicio=0
  8. indice=0
  9. elevado=0
  10. convertido=0
  11. while inicio < largo:
  12.    cada_numero=(invertido[inicio])    
  13.    inicio+=1
  14.    if cada_numero in posibles:
  15.        convertir=int(invertido[indice])*8 ** elevado
  16.        indice+=1
  17.        elevado+=1
  18.        convertido+=convertir
  19.  
  20.    else:
  21.        print("El numero {} no corresponde a un octal".format(cada_numero))
  22.  
  23. print ("El número {} octal es en decimal {} ".format (numero,convertido))
  24.  
._. El profesor es de python y quería que el programa resuelva a la antigua tal como lo acaba de hacer usted. Agradezco su ayuda y sería tonto yo, si no aprovecho lo que me acaba de regalar  :laugh:, no obstante, veo para mi una fuente de conocimientos que aun no había podido aplicar correctamente.
Gracias nuevamente.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
necesito hacer pistas
Multimedia
pardo 1 12,598 Último mensaje 30 Noviembre 2005, 06:19 am
por aNexos
Necesito ayuda, por favor, necesito eliminar definitivamente un contacto del msn « 1 2 »
Mensajería
jordijor 10 14,218 Último mensaje 19 Diciembre 2011, 09:16 am
por A4TECH
Ayuda x favor con Scriter 2.6 de python
Scripting
Danegui 1 2,189 Último mensaje 5 Marzo 2011, 12:46 pm
por xassiz~
[Python] Por favor
Scripting
Geormarsch 3 2,127 Último mensaje 16 Febrero 2012, 16:50 pm
por fallout20xx
[AYUDA][PYTHON] Necesito ayuda con el metodo SEARCH del modulo RE de python
Scripting
Noxware 2 3,634 Último mensaje 24 Mayo 2014, 16:11 pm
por Noxware
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines