Duda en python (Mensaje 7, el 1º era una duda resuelta)

A ver si vosotros podeis ayudarme, por que llevo asi un par de horas y tengo ese bichito en el cuerpo de mandar todo a tomar por culo.

He intentado ponerme a programar en C, todo muy bien, pero me parece un lenguaje complicado para empezar, por el tema de como se declaran las funciones, tanto corchetito y punto y coma me parece excesivo en plan para ver como funciona el rollo de la programación.

Entonces, opté por python, me parece un buen lenguaje y me busqué unos tutoriales. Y en fin, ahora vamos al meollo

Poseo Python 3.1.2, la version mas actualizada que habia en la web.
Poseo Eclipse, con su respectivo plugin de python hecho funcionar (configurado y tal, es pyDEV).
y por otra parte, miré varios tutoriales.

Ahora, el problema:

En TODOS los tutoriales que encuentro pone un hola mundo simplito
que es

print "Hola Mundo"
(opcional) raw_input()

Esto escribe en pantala Hola mundo y espera que pulses una tecla para que se cierre la ventanola de la consola.

Hasta ahi muy bien, hasta que me dice que hay un error de sintaxis. Un error de sintaxis? pero que cojones de error va a haber ahi, si lo copié y pegué del tuto. de verdad que no lo entiendo! se puede saber que pasa aqui?

EDITO: SOLUCIONADO

Resulta que el python al que se refieren todos los tutos era el 2.7, el antiguo.

Pero de ahi me brota una duda, para que gaitas cambian la sintaxis en un lenguaje de programacion de una version a otra? por que no bautizan otro lenguaje si cambia tanto, me parece idiota molestar tanto asi a la gente :S
La lista de cambios: http://docs.python.org/release/3.0.1/whatsnew/3.0.html

Se cambiaron pocas cosas, no era un cambio tan grande como de C a C++. Sacaron una herramienta automática para pasar código de la versión 2 a la 3. Esto sucede con todos los lenguajes.
Buenas, deberiamos hacer un post oficial de python ^^

Mira te comento no empieces con la verson 3.0 , el error lo tienes porque en 3.0 print es una funcion

print ("hola") y por eso te da el error
lwordl escribió:Buenas, deberiamos hacer un post oficial de python ^^

Mira te comento no empieces con la verson 3.0 , el error lo tienes porque en 3.0 print es una funcion

print ("hola") y por eso te da el error


ya me di cuenta, ya, ya aprendí un ratete, aunque programar se me hace muchísimo, pff tengo un cacao en la cabeza impresionante. Recuerdo que hace años probé DarkBASIC, dios mio, que cosa tan simple y tan util, creo que por culpa de eso ahora tengo en la cabeza metido que tantos lenguajes son tan complicados uhm...

en fin, yo no doy mas de mi con la programación, depues de leer, leer y mas leer aun no sé como decirle al programa que haga lo que quiero, quiero decir, que por ejemplo, me pida mi nombre, algo asi:

print "Hola, introduce tu nombre:"

funcionparaintroducirdatosqueaunnoencontrecomosellama (variabletexto)

print "Hola",variabletexto,",encantado de conocerte"

raw_input() #pa que no se me vaya la linea de comandos, estoy en windows

como se llama la funcion? Es que creo que raw_input sirve para eso, pero no sé como ordenarle que meta lo que escribo en una variable nueva.

PD: aunque parezca que no, SI, he estado buscando pero cada cosa que veo me parece mas compleja, pff
Sería así:
Imagen

De todas formas, si vas a empezar, te recomiento que te leas antes algún libro o tutorial de python. Mirate http://mundogeek.net/tutorial-python/ por ejemplo.
En python2 se usa raw_input, en python3 se usa input.

python2:
name = raw_input("Hola, introduce tu nombre: ")
print "hola", name


python3:
name = input("Introduce tu nombre: ")
print("hola", name)


En http://www.python.org/doc/ tienes la documentación, para más detalles de las funciones.
gracias a los 2, por ahora no usaré python 3, estoy aprendiendo python levemente para luego comprender mejor otros cuando empiece el ciclo superior. Por cierto, Korso10, ese es el tutorial que me estaba leyendo xDD (es muy largo, voy por etapas)


EDITO:

Bueno, ya que he abierto el hilo hago una pregunta, he diseñado un pequeño programa, y cuando el python shell repasa el código me dice que hay un error aqui: (está un comentario hecho en el codigo)

print "Bienvenido al programa chapuzas de Andrés"
print "Antes de empezar vamos a darnos a conocer, mi nombre es Python"
nombre = raw_input ("Cual es tu nombre? Escríbelo y pulsa Enter\n")
print "Muy bien, hola", nombre, "y bienvenido"
print "Vamos a calcular tu edad, dime, en que año estamos?\n"
year = raw_input()
print "Ajá, asique", year
print "Y en que año has nacido?\n"
fechanacimiento = raw_input()
edad = year - fechanacimiento
if edad >= 18:
   print "Anda, pero si ya eres mayor de edad!"

if edad >= 25:
   print "Y si me descuido, igual tienes hijos"
   hijosafirmativo = "si"
   hijosnegativo = "no"
   hijos = raw_input("Es así? Responde con un Si o un No"

#aqui es donde da el problema, concretamente me señala en rojo los 2 puntos al final del 18                       
if edad < 18:
   print "Veo que aun no puedes sacarte el carnet de conducir ;)"

if hijos == hijosafirmativo
      print "Espero que seas buen pad..."
                         
print "Ups, aun no sé si eres un hombre o una mujer"
sexo = raw_input("A que sexo perteneces? (responde con Hombre o Mujer)")

if sexo = "Hombre":
   print "No quiero ser machista, pero estaba pensando en que lo eras"

else:
   print "uff, esto me pasa por no preguntar antes, casi meto la pata"

print " Bueno, aqui se acaba el programa, pulsa enter para salir"

raw_input()


PD: que raro que en EOL no haya un subforo de programacion, vaya aberración xD una comunidad con tantísima gente que le toca a la scene en temas de programación y ni siquiera se dignan a poner un subforo :( creo que muchisima gente acudiría a el para aprender, mejorar, comentar, exponer, compartir etc proyectos
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
Oye, no sé, pero en FreeBASIC se poner algo así:
if edad >= 18 then print "Anda, pero si ya eres mayor de edad!"

En cambio, si se pone más de una línea de código, tienes que colocarlo en la línea siguiente y poner END IF al final:
if edad >= 25 then
   print "Y si me descuido, igual tienes hijos"
   hijosafirmativo = "si"
   hijosnegativo = "no"
   hijos = raw_input("Es así? Responde con un Si o un No"
[b]end if[/b]


Mira a ver si es similar en Phyton

EDITO: Ah, y te has olvidado un paréntesis). Has puesto
raw_input("Es así? Responde con un Si o un No"
en lugar de
raw_input("Es así? Responde con un Si o un No")
ndrs escribió:PD: que raro que en EOL no haya un subforo de programacion, vaya aberración xD una comunidad con tantísima gente que le toca a la scene en temas de programación y ni siquiera se dignan a poner un subforo :( creo que muchisima gente acudiría a el para aprender, mejorar, comentar, exponer, compartir etc proyectos

Si haces una búsqueda por feedback verás que se ha pedido en mas de una ocasión.

Por cierto, si no hay/existe hilo oficial de Python el que quiera es libre de crearlo XD
coyote escribió:
ndrs escribió:PD: que raro que en EOL no haya un subforo de programacion, vaya aberración xD una comunidad con tantísima gente que le toca a la scene en temas de programación y ni siquiera se dignan a poner un subforo :( creo que muchisima gente acudiría a el para aprender, mejorar, comentar, exponer, compartir etc proyectos

Si haces una búsqueda por feedback verás que se ha pedido en mas de una ocasión.

Por cierto, si no hay/existe hilo oficial de Python el que quiera es libre de crearlo XD


yo no, que no tengo ni pajolera idea.

socram8888 escribió:Oye, no sé, pero en FreeBASIC se poner algo así:
if edad >= 18 then print "Anda, pero si ya eres mayor de edad!"

En cambio, si se pone más de una línea de código, tienes que colocarlo en la línea siguiente y poner END IF al final:
if edad >= 25 then
   print "Y si me descuido, igual tienes hijos"
   hijosafirmativo = "si"
   hijosnegativo = "no"
   hijos = raw_input("Es así? Responde con un Si o un No"
[b]end if[/b]


Mira a ver si es similar en Phyton

EDITO: Ah, y te has olvidado un paréntesis). Has puesto
raw_input("Es así? Responde con un Si o un No"
en lugar de
raw_input("Es así? Responde con un Si o un No")


Gracias por tu corrección, de todos modos me lo iba a avisar mas tarde el python shell (hice este coso en 2 minutos XD) y voy a probar lo que dices, gracias por las respuestas.

Venga, que alguien se anime a hacer un hilo oficial de python xD

PD: le he puesto el endif en plan probar y creo que le suena a chino xDD

SOLUCIONADO: Era todo cosa del parentesis eso, pensaba que eso estaba mas abajo XD como me lo ha dejado escapar? bueno, pues parece que ya está, muchas gracias, y que alguien se anime a lo del post (soy un pesado) que a mi me vendría genial xD
Imprimete el pdf Python para todos, es bastante bueno aunque la programacion orientada a objetos esta mal explicada para personas que empiezan, en google econtraras mas

Haber si se anima alguien porque yo de python lo justo, entender el codigo y poco mas.

Una vez sepas la teoria ponte hacer mini ejercicios o tambien prueba Pygame , podras hacer juegos pequeños facilmente y te ayudara bastante para aprender
En python no se finalizan los bloques mediante caracteres ('}', end, etc), se basa en indentación, el bloque finaliza cuando se llega a un nivel de indentación inferior.
Bueno, tengo otro problema. Cuando le permito a python shell revisar el código me encuentra el siguiente error:

"There's an error in your program: *** can't assign to funcion call (prueba.py, line 29).

Y este es el código en cuestión (ahora, mas complejo y idiota que antes! (está sin acabar, faltan las condiciones de si los meses coinciden, para preguntarle los dias y asegurarme de que tiene o no 18)

NOTA: eso de variables "problemáticas" lo pongo por que en alguna ocasion me hizo falta, y asi las "declaro" todas, tampoco ocupan una barbaridad en la memoria.

#Variables Problemáticas
year = 0
fechanacimiento = 0
hijos = "pera"
sexo = "neutro"
hijosafirmativo = "si"
hijosnegativo = "no"
mes = "asdf"
numeromes = 0
mesnacimiento = "asdf"
numeromesnacimiento = 0
#Variables problemáticas

print "Bienvenido al programa chapuzas de Andrés"
print "Antes de empezar vamos a darnos a conocer, mi nombre es Python"
nombre = raw_input ("Cual es tu nombre? Escríbelo y pulsa Enter\n")
print "Muy bien, hola", nombre, "y bienvenido"
print "Vamos a calcular tu edad, dime, en que año estamos?\n"
year = input()
print "Ajá, asique", year
print "Y en que año has nacido?\n"
fechanacimiento = input()
edad = year - fechanacimiento
if edad >= 19:
   print "Anda, pero si ya eres mayor de edad!"

if edad == 18:
   print "Es probable que tengas 18 años, pero como estás justito, tengo que asegurarme.\n\n Tienes 18 años, o me he equivocado (Responde con Si o No)"
   raw_input() = dieciochoanos
   if dieciochoanos == "Si":
      print "Vaya, me has sacado del apuro de tener que hacer mas cálculos"
   if dieciochoanos == "No":
      print "Vaya hombre, entonces tendré que hacerte un par de preguntas más para asegurarme.\n"
      print "En que mes estamos? (Enero, Febrero, Marzo....). Por favor, escribe normativamente, con su Mayuscula inicial y rigor ortográfico. Gracias"
      raw_input = mes
      if mes == "Enero":
         numeromes = 1
      if mes == "Febrero":
         numeromes = 2
      if mes == "Marzo":
         numeromes = 3
      if mes == "Abril":
         numeromes = 4
      if mes == "Mayo":
         numeromes = 5
      if mes == "Junio":
         numeromes = 6
      if mes == "Julio":
         numeromes = 7
      if mes == "Agosto":
         numeromes = 8
      if mes == "Septiembre":
         numeromes = 9
      if mes == "Octubre":
         numeromes = 10
      if mes == "Noviembre":
         numeromes = 11
      if mes == "Diciembre":
         numeromes = 12
   print "Ahora necesito saber en que mes has nacido"
   raw_input("Me lo podrías decir?\n") = mesnacimiento
   if mesnacimiento == "Enero":
      numeromesnacimiento = 1
   if mesnacimiento == "Febrero":
      numeromesnacimiento = 2
   if mesnacimiento == "Marzo":
      numeromesnacimiento = 3
   if mesnacimiento == "Abril":
      numeromesnacimiento = 4
   if mesnacimiento == "Mayo":
      numeromesnacimiento = 5
   if mesnacimiento == "Junio":
      numeromesnacimiento = 6
   if mesnacimiento == "Julio":
      numeromesnacimiento = 7
   if mesnacimiento == "Agosto":
      numeromesnacimiento = 8
   if mesnacimiento == "Septiembre":
      numeromesnacimiento = 9
   if mesnacimiento == "Octubre":
      numeromesnacimiento = 10
   if mesnacimiento == "Noviembre":
      numeromesnacimiento = 11
   if mesnacimiento == "Diciembre":
      numeromesnacimiento = 12
   if numeromes < numeromesnacimiento:
         print "Ajá! asique tienes 17 años, me había equivocado en mis suposiciones"
   if numeromes > numeromesnacimiento:
         print "Pues si, tienes 18 años, que mal me lo haces pasar con tantos cálculos :("
         
if edad >= 25:
   print "Y si me descuido, igual tienes hijos"
   hijos = raw_input("Es así? Responde con un Si o un No")

if edad <= 17:
   print "Veo que aun no puedes sacarte el carnet de conducir ;)"

if hijos == hijosafirmativo:
   print "Espero que seas buen pad..."
                         
print "Ups, aun no sé si eres un hombre o una mujer"
sexo = raw_input("A que sexo perteneces? (responde con Hombre o Mujer)")

if sexo == "Hombre":
   print "No quiero ser machista, pero estaba pensando en que lo eras"

else:
   print "uff, esto me pasa por no preguntar antes, casi meto la pata"

print " Bueno, aqui se acaba el programa, pulsa enter para salir"

raw_input()


Por cierto, otro error curioso que me ha aparecido (este que pongo ahora ya está solucionado):

Imagen

EOL? EOL???? SABIA QUE LA CULPA ERA VUESTRA [qmparto] [qmparto] [qmparto]
La línea que te falla es ésta, ¿no?: raw_input() = dieciochoanos

La asignación es de derecha a izquierda, es decir, le estás asignando un valor a una función, lo cual no está permitido.

dieciochoanos = raw_input()

Poco más abajo tendrás otro error, en el orden y los paréntesis: raw_input = mes

Tienes ese error repetido alguna vez más.
amuchamu escribió:La línea que te falla es ésta, ¿no?: raw_input() = dieciochoanos

La asignación es de derecha a izquierda, es decir, le estás asignando un valor a una función, lo cual no está permitido.

dieciochoanos = raw_input()

Poco más abajo tendrás otro error, en el orden y los paréntesis: raw_input = mes

Tienes ese error repetido alguna vez más.


ahhh vale! ostia, que empanada tengo, no me habia fijado. siento mucho haber estado molestando con esa tontería :(
14 respuestas