• Problemas Python

 #343291  por DasHolE
 19 Dic 2011, 22:41
Muy buenas, soy nuevo por aqui y estoy intentando aprender algo de programación.
He comenzado con Python porque he leído por ahí que era la mejor opción para empezar con esto de la programación y durante el comienzo del aprendizaje ya empiezan a surgir los problemas y las dudas. Empezaré con algunas:

-Escribo el código fuente en el bloc de notas y luego, al guardar los archivos los guardo con extensión .py, eso esta bien no? la cuestión es que hay muchas funciones como el if que no me funcionan en este... por ejemplo:

#Definir 3 variables y...

edad=21
altura=1.92
valor=5+3j
nombre="Mario"
encontrado=False

print "LISTA"

print edad
print altura
print valor
print nombre
print encontrado

raw_input()

Eso me funciona pero si añado:

if edad<22:
print nombre
print "no tiene edad suficiente"

Si pongo esto me da error en el código, alguien me puede echar una mano?? que hago mal??

Un saludo y gracias
 #343299  por linkgl
 19 Dic 2011, 23:00
Código: [ Debe registrarse para ver este enlace ]
#Definir 3 variables y...

edad=21
altura=1.92
valor=5+3j
nombre="Mario"
encontrado=False

print "LISTA"

print edad
print altura
print valor
print nombre
print encontrado

raw_input()


if edad<22:
  print nombre
  print "no tiene edad suficiente"
Sí funciona :P, solo que el raw input te detiene el programa hasta que ingreses algun dato, solo ejecuta tu programa, escribes algo para el raw input das enter y pasa directamente al if xDD
 #343311  por DasHolE
 19 Dic 2011, 23:22
Cierto, muchas gracias ;)

Es que esto de aprender programación solo es un lio... bueno ya iré poniendo mis dudas por aqui.
 #343384  por KHC
 20 Dic 2011, 02:46
Tambien debes tener cuidado con la alineacion del texto recuerda que suele ser sensible !
 #343482  por DasHolE
 20 Dic 2011, 11:35
Ya, eso es algo que imagino tendré que aprender a base de cagarla, probar y volver a probar hasta que salga xD
 #343579  por ps1c0s1s
 20 Dic 2011, 21:12
tenes que indentar, la indentación en python es *obligatoria*, cuando pones el "if ... :" las dos líneas siguientes deben estar precedidas de 4 espacios podes indentar como quieras, con tabs, con 2 espacios, con 4 o como quieras , 4 espacios es lo recomendado pero no puedes poner un if: sin indentar el contenido

Sí funciona :P, solo que el raw input te detiene el programa hasta que ingreses algun dato, solo ejecuta tu programa, escribes algo para el raw input das enter y pasa directamente al if xDD
es correcto. raw_input espera una línea por teclado, la línea la devuelve como retorno aunque no la recoges cuando le des a intro, el programa continúa,lo que si queres es probar e intentar con raw_input a leer un nombre
 #343661  por KHC
 21 Dic 2011, 02:48
ps1c0s1s escribió:tenes que indentar, la indentación en python es *obligatoria*, cuando pones el "if ... :" las dos líneas siguientes deben estar precedidas de 4 espacios podes indentar como quieras, con tabs, con 2 espacios, con 4 o como quieras , 4 espacios es lo recomendado pero no puedes poner un if: sin indentar el contenido

Sí funciona :P, solo que el raw input te detiene el programa hasta que ingreses algun dato, solo ejecuta tu programa, escribes algo para el raw input das enter y pasa directamente al if xDD
es correcto. raw_input espera una línea por teclado, la línea la devuelve como retorno aunque no la recoges cuando le des a intro, el programa continúa,lo que si queres es probar e intentar con raw_input a leer un nombre
Sintesis de todo lo anterior!!!! RESUELTO y Saludos!
 #343745  por ps1c0s1s
 21 Dic 2011, 13:39
tenes que indentar, la indentación en python es *obligatoria*, cuando pones el "if ... :" las dos líneas siguientes deben estar precedidas de 4 espacios podes indentar como quieras, con tabs, con 2 espacios, con 4 o como quieras , 4 espacios es lo recomendado pero no puedes poner un if: sin indentar el contenido
Sintesis de todo lo anterior!!!!
No fue una síntesis de nada , ya que no se ha dicho eso al menos ni vos ni link lo ha dicho , y creo que merece ser destacado para que el usuario que recién se inicializa en el tema , vea un panorama mas especifico .
 #343865  por KHC
 22 Dic 2011, 00:07
[syntax=python"]edad=21
altura=1.92
valor=5+3j
nombre="Mario"
encontrado=False

print "LISTA:"
print edad
print altura
print valor
print nombre
print encontrado

vEdad = input("Cual es la edad: ")

if vEdad<22:
print nombre + ", no tiene edad suficiente"
else:
print nombre + ", edad suficiente"
[/syntax]

Listo arregle tu source, realmente no tenia mucho sentido y cosas como el raw_input no entiendo por que? o como funciona y lo hice en base a lo que crei que querias que hiciera... supuse con el if que tratabas de hacer una comprobacion de la edad en base el raw_input que hacias antes, pero en el if comparabas el valor de la edad no lo que ingresaban en raw_input nose lo hice como crei correcto y si estas pidiendo una entrada numerica no hace falta raw_input con un input normal mas que suficiente!
 #344239  por DasHolE
 23 Dic 2011, 15:19
Muchas gracias por las aportaciones, me serán útiles ;)

Sin embargo, a raíz de esto me han surgido mas dudas:

-Exactamente para que sirve la función raw_input() ?? en que se diferencia con la función input??

- La parte del código...vEdad = input("Cual es la edad: ") no la comprendo, no comprendo la "v" que precede a "Edad", porqué no poner edad como se especifica al comenzar el código?

-Cuando hago funcionar el código como .py solo me sale hasta "Cual es la edad:", la función if no se mantiene, sale una fracción de segundo y se cierra, por lo que se debería poner un raw_input() para mantenerlo no?

-( ya la última para no ser pesado xD) Tengo un problema con la función random, en el command line si me funciona, pero cuando escribo un código con random en el bloc de notas no funciona, me da error. Por ejemplo:

import random

valor1=random.randint(1, 10)
valor2=random.randint(1, 10)

print "Primer valor:"
print valor1

print "Segundo valor:"
print valor2

if valor1==valor2:
print "Los dos valores son iguales."
if valor1<5:
print "El primer valor es inferior a 5."
if valor2>5:
print "El segundo valor es superior a 5."

raw_input()

Este código me produce error y no comprendo por qué. Lo he revisado mil veces de arriba a abajo y no encuentro ningún error. Espero que podais ayudarme.
Gracias y un saludo.
 #344247  por ps1c0s1s
 23 Dic 2011, 15:37
metete al irc y lo hablamos online , ya que hay preguntas ahi que el mismo google te responderia . Pero metete ahora y te saco las dudas online , exitos
 #344251  por DasHolE
 23 Dic 2011, 16:04
No se porque no me deja conectarme al IRC, se me queda cargando sin responder...
 #344266  por ps1c0s1s
 23 Dic 2011, 16:35
te envie un privado hace 20 minutos ... no los lees??
 #344275  por linkgl
 23 Dic 2011, 17:10
1.- La diferencia es que input retorna un objeto y raw_input siempre te va a devolver una string por lo que si pones edad=raw_input... edad va a ser tipo string o cadena y no tipo entero.
2.- vEdad es otra variable que se le ocurrió poner para no modificar el contenido que ya tenia edad, pero la puedes cambiar de todas formas xD

Para lo del random abre otro tema, para no desviar este topic, tener todo mas ordenado
 #344279  por ps1c0s1s
 23 Dic 2011, 17:23
-
Exactamente para que sirve la función raw_input() ?? en que se diferencia con la función input??
en que raw_input admite el input como una cadena de texto , input en realidad ejecuta eval() sobre input para tratar de asignarle un tipo de entrada numerica con lo que admite que puedas introducir argumentos que se le pasa a eval() , y eso te puede provocar problemas de seguridad , o sea que es mejor usar raw_input y luego convertirlo o usar input en entornos muy controlados
- La parte del código...vEdad = input("Cual es la edad: ") no la comprendo, no comprendo la "v" que precede a "Edad", porqué no poner edad como se especifica al comenzar el código?
Simplemente estetica , por cierto las convenciones dicen que python se programa estilo gnu o sea como ves ahi "NO"!
variabes en minusculas , variable = 0
-Cuando hago funcionar el código como .py solo me sale hasta "Cual es la edad:", la función if no se mantiene, sale una fracción de segundo y se cierra, por lo que se debería poner un raw_input() para mantenerlo no?
Estoy percibiendo una cosa , seguro arrancas tus scripts haciendo doble click sobre ellos , abri una consola oython miprograma.py o en windows miprograma.py y asi no se cierra la ventana en caso de error y de paso ves donde esta el error

QUE NO USES RAW_INPUT !! PONE input("pulsa ENTER para continuar...") o para salir

-( ya la última para no ser pesado xD) Tengo un problema con la función random, en el command line si me funciona, pero cuando escribo un código con random en el bloc de notas no funciona, me da error. Por ejemplo:

import random

valor1=random.randint(1, 10)
valor2=random.randint(1, 10)

print "Primer valor:"
print valor1

print "Segundo valor:"
print valor2

if valor1==valor2:
print "Los dos valores son iguales."
if valor1<5:
print "El primer valor es inferior a 5."
if valor2>5:
print "El segundo valor es superior a 5."

raw_input()

Este código me produce error y no comprendo por qué. Lo he revisado mil veces de arriba a abajo y no encuentro ningún error. Espero que podais ayudarme.
ese codigo funciona perfectamente , usa un editor de texto decente , no el notepad bajate el ConText que es gratis y mas o menos puedes usar python con el o el SublimeText estas teniendo problema con tu editor de texto por cierto quita la mierda de raw_input() y pone un input con algo claro