Autor
|
Tema: Duda de if sobre if [Python] (Leído 6,879 veces)
|
CaronteGold
Desconectado
Mensajes: 339
|
Buenas, Estoy haciendo una aplicación en Python y me surgió un problema, el caso es que tengo una situación así: a = int(input("Primer numero: ")) incoga = raw_input("Incognita (si no hay, poner "no": ") b = int(raw_input("Segundo numero: ")) incogb = raw_input("Incognita (si no hay, poner "no"): ") pot = int(raw_input("Potencia: "))
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.
|
|
« Última modificación: 28 Diciembre 2009, 04:16 am por Leo Gutierrez. »
|
En línea
|
|
|
|
08l00D
Desconectado
Mensajes: 168
|
pot = int(raw_input("Potencia: ")) la variable pot contiene un entero... y vos la estas comparando con una cadena .... sacale las comillas ...
|
|
|
En línea
|
|
|
|
|
Shell Root
|
Muchas gracias, pues estuve ahí bastante tiempo y no dí con la solución, muchas gracias 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 a = int(input("Primer numero: ")) Por:a = raw_input("Ingrese Su Nombre") Por Ejemplo:# Coder Shell Root
a = raw_input("Ingrese Su Nombre")
if a == "Shell Root": print "Hola Eres Shell Root" else: print "Eres un Desconocido"
Saludos!
|
|
« Última modificación: 28 Diciembre 2009, 04:07 am por alex19910218 »
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
CaronteGold
Desconectado
Mensajes: 339
|
Muchas gracias, pues estuve ahí bastante tiempo y no dí con la solución, muchas gracias 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 a = int(input("Primer numero: ")) Por:a = raw_input("Ingrese Su Nombre") Por Ejemplo:# 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.
|
|
|
En línea
|
|
|
|
08l00D
Desconectado
Mensajes: 168
|
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... 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 ...
|
|
|
En línea
|
|
|
|
CaronteGold
Desconectado
Mensajes: 339
|
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.
|
|
|
En línea
|
|
|
|
08l00D
Desconectado
Mensajes: 168
|
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: a = int("Ingrese el numero: ") incognita = raw_input('Incognita (si no hay, poner "no": ') print str(a) + incognita
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Solo un pequeño matiz a esto ... 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
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
CaronteGold
Desconectado
Mensajes: 339
|
Solo un pequeño matiz a esto ... 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 . 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: ")
|
|
« Última modificación: 28 Diciembre 2009, 17:19 pm por CaronteGold »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda sobre Python Keylogger
« 1 2 »
Scripting
|
mastertux
|
15
|
10,067
|
3 Abril 2011, 18:38 pm
por 08l00D
|
|
|
(Python)duda sobre color de texto y captura de teclas.
Scripting
|
S3kh
|
0
|
4,888
|
2 Septiembre 2011, 00:42 am
por S3kh
|
|
|
duda sobre python y perl
Programación General
|
Drewermerc
|
2
|
1,937
|
26 Junio 2014, 01:51 am
por Drewermerc
|
|
|
Duda sobre SharpDevelop y Python (asuntos legales :3)
Programación General
|
Noxware
|
3
|
3,227
|
6 Noviembre 2014, 07:08 am
por El Benjo
|
|
|
Duda sobre programación (C, C++, Python, etc...)
Programación C/C++
|
shaddy4ever
|
1
|
1,857
|
5 Agosto 2016, 13:47 pm
por ivancea96
|
|