Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: CaronteGold en 28 Diciembre 2009, 03:29 am



Título: Duda de if sobre if [Python]
Publicado por: CaronteGold en 28 Diciembre 2009, 03:29 am


     Buenas,



  Estoy haciendo una aplicación en Python y me surgió un problema, el caso es que tengo una situación así:

Código
  1. a = int(input("Primer numero: "))
  2. incoga = raw_input("Incognita (si no hay, poner "no": ")
  3. b = int(raw_input("Segundo numero:  "))
  4. incogb = raw_input("Incognita (si no hay, poner "no"): ")
  5. pot = int(raw_input("Potencia: "))
  6.  
  7.  

  Y después tengo :

 if incoga == "no" and incogb == "no":    

    if pot == "4":
         print ....................
    if pot == "5":
         print .........


   El caso es que tengo un if dentro de otro if, pues el if de dentro --->  if pot == "4"  , no se ejecuta. Pero la variable está bien comprobada arriba, ya que si en lo de -- > if incoga.....,  debajo pongo un else, al ser incoga == no y incogb == no, no se ejecuta, pero el problema es que no reconoce el sub if.

   No sé si me he explicado bien, la  cosa es que este punto :   if incoga == "no" and incogb == "no": , se ejecuta, pero cuando llega justo debajo, pasa de largo, no da error ni nada, en la salida del programa sale como en blanco.

  Lo que no se ejecuta es esto:

 if pot == "4":
         print ....................
    if pot == "5":
         print .........



  Puedo pensar que esos sub "if" los tengo que agrupar o no sé... si alguien sabe como lo puedo arreglar lo agradecería.

   Saludos.
 


Título: Re: Duda de if sobre if [Python]
Publicado por: 08l00D en 28 Diciembre 2009, 03:38 am
Citar
pot = int(raw_input("Potencia: "))
la variable pot contiene un entero...

y vos la estas comparando con una cadena .... sacale las comillas ...
Código:
if pot == 4:


Título: Re: Duda de if sobre if [Python]
Publicado por: CaronteGold en 28 Diciembre 2009, 03:39 am

    Muchas gracias, pues estuve ahí bastante tiempo y no dí con la solución, muchas gracias    ;D ;D

   EDITO:  Una cosa, si son letras también quito las comillas ¿? , como en el caso de " no ".


Título: Re: Duda de if sobre if [Python]
Publicado por: Shell Root en 28 Diciembre 2009, 04:06 am

    Muchas gracias, pues estuve ahí bastante tiempo y no dí con la solución, muchas gracias    ;D ;D

   EDITO:  Una cosa, si son letras también quito las comillas ¿? , como en el caso de " no ".

Nones! Como todo lenguaje de programacion, cuando se compara un INT no se pone las comillas, pero cuando comparamos un String si hay que ponersela.

Ademas de que como no estas ingresando un Tipo de Datos Entero, le cambias el
Código:
a = int(input("Primer numero: "))
Por:
Código:
a = raw_input("Ingrese Su Nombre")

Por Ejemplo:
Código:
# Coder Shell Root

a = raw_input("Ingrese Su Nombre")

if a == "Shell Root":
    print "Hola Eres Shell Root"
else:
    print "Eres un Desconocido"

Saludos!


Título: Re: Duda de if sobre if [Python]
Publicado por: CaronteGold en 28 Diciembre 2009, 04:32 am

    Muchas gracias, pues estuve ahí bastante tiempo y no dí con la solución, muchas gracias    ;D ;D

   EDITO:  Una cosa, si son letras también quito las comillas ¿? , como en el caso de " no ".

Nones! Como todo lenguaje de programacion, cuando se compara un INT no se pone las comillas, pero cuando comparamos un String si hay que ponersela.

Ademas de que como no estas ingresando un Tipo de Datos Entero, le cambias el
Código:
a = int(input("Primer numero: "))
Por:
Código:
a = raw_input("Ingrese Su Nombre")

Por Ejemplo:
Código:
# Coder Shell Root

a = raw_input("Ingrese Su Nombre")

if a == "Shell Root":
    print "Hola Eres Shell Root"
else:
    print "Eres un Desconocido"

Saludos!


   En el caso de "a" "b" y "pot", si lo pido, por eso pongo el int, pero luego en la variable, como son letras no lo pongo.

    Saludos.
   


Título: Re: Duda de if sobre if [Python]
Publicado por: 08l00D en 28 Diciembre 2009, 15:12 pm
EDITO:  Una cosa, si son letras también quito las comillas ¿? , como en el caso de " no ".
pues no ... por que la variable inconga y incongb son cadenas por lo tanto debes comparlos con cadenas ... las comillas encerrado cualquier caracter significa que se trata de una cadena por lo tanto -> "no" es una cadena lodejas asi como esta....

por cierto una pequeña observacion...
Citar
a = int(input("Primer numero: "))
no hace falta hacer int(input()), ya que de porsi input() retorna un numero entero no hace falta convertirlo con int()
por eso cuando pidas que el usuario introduzca un numero entero usa input("introduce el numero....") y cuando quieras que introduzca una cadena usa raw_input() y te ahorras de hacer las conversiones ...


Título: Re: Duda de if sobre if [Python]
Publicado por: CaronteGold en 28 Diciembre 2009, 15:51 pm


   Pues creo que eso lo había cambiado porque no me funcionaba así, no estoy muy seguro, o igual tenía raw_input , no sé. De todas formas muchas gracias, y tengo una duda que no sé si podrás resolverme :  la cosa es que quiero mostrar dos variables unidas, una será un número y otra será la incógnita ( letra ), de manera que pueda quedar así:  350x,  o 350z, según la letra que ponga el usuario.

    Saludos.


Título: Re: Duda de if sobre if [Python]
Publicado por: 08l00D en 28 Diciembre 2009, 16:24 pm
ahi si tenes que usar la funcion str() para convertir el entero en cadena para poder concatenarla (unirla) con la otra cadena ... aca te pongo un ejemplo:
Código
  1. a = int("Ingrese el numero: ")
  2. incognita = raw_input('Incognita (si no hay, poner "no": ')
  3.  
  4. print str(a) + incognita
  5.  


Título: Re: Duda de if sobre if [Python]
Publicado por: Novlucker en 28 Diciembre 2009, 17:07 pm
Solo un pequeño matiz a esto ...


Citar
a = int(input("Primer numero: "))
no hace falta hacer int(input()), ya que de porsi input() retorna un numero entero no hace falta convertirlo con int()
por eso cuando pidas que el usuario introduzca un numero entero usa input("introduce el numero....") y cuando quieras que introduzca una cadena usa raw_input() y te ahorras de hacer las conversiones ...

Si mal no recuerdo CaronteGold esta con Python 2.6, y en ese caso esta bien la apreciación, pero si paso a la versión 3.x eso ya no es así, raw_input dejo de existir y paso a ser solamente input, y este devuelve un string, así que en ese caso estaría bien la conversión.

:http://docs.python.org/3.1/whatsnew/3.0.html (PEP3111)
:http://docs.python.org/3.1/library/functions.html#input

Saludos



Título: Re: Duda de if sobre if [Python]
Publicado por: CaronteGold en 28 Diciembre 2009, 17:17 pm
Solo un pequeño matiz a esto ...


Citar
a = int(input("Primer numero: "))
no hace falta hacer int(input()), ya que de porsi input() retorna un numero entero no hace falta convertirlo con int()
por eso cuando pidas que el usuario introduzca un numero entero usa input("introduce el numero....") y cuando quieras que introduzca una cadena usa raw_input() y te ahorras de hacer las conversiones ...

Si mal no recuerdo CaronteGold esta con Python 2.6, y en ese caso esta bien la apreciación, pero si paso a la versión 3.x eso ya no es así, raw_input dejo de existir y paso a ser solamente input, y este devuelve un string, así que en ese caso estaría bien la conversión.

:http://docs.python.org/3.1/whatsnew/3.0.html (PEP3111)
:http://docs.python.org/3.1/library/functions.html#input

Saludos





      Sigo con la 2.6  ;D .


   He puesto en una int(input... , y en la otra he puesto, int(raw_input.. , entonces en la primera sería innecesario el int, pero en la 2da es necesario, cierto que al poner int, con input sería alargar más el code.

  Lo he dejado así:

  a = input("Primer numero: ")
incoga = raw_input("Incognita (si no hay, poner guión -): ")
b = input("Segundo numero:  ")
incogb = raw_input("Incognita (si no hay, poner guión -): ")
pot = input("Potencia: ")