Foros del Web » Programando para Internet » Python »

problema con mi primer programa ipython

Estas en el tema de problema con mi primer programa ipython en el foro de Python en Foros del Web. hola tengo el siguiente programa y me da un error que no localizo es mi primera vez con python, a ver si me podéis echar ...
  #1 (permalink)  
Antiguo 28/10/2010, 09:15
 
Fecha de Ingreso: junio-2007
Mensajes: 21
Antigüedad: 17 años, 6 meses
Puntos: 0
problema con mi primer programa ipython

hola tengo el siguiente programa y me da un error que no localizo es mi primera vez con python, a ver si me podéis echar una mano,

el error que me da la consola es:
Código:
$ python corregido.py 
  File "corregido.py", line 5
SyntaxError: Non-ASCII character '\xc3' in file corregido.py on line 5, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
noel@noel-laptop:~/Documentos/FISICA/python$
y el programa este.

Código:
#!/usr/bin/python
# -*- coding: ascii -*-

import os
print("cargadndo")
os.system('clear') #borro la pantalla.


print("hola mundo")
entero = 0
positivo = 0
while entero!=1 and positivo!=1: #bucle de comprobación
 	n=""
	while not n.isdigit():         #bucle: comprueba que se introduce un número
       		n = raw_input("introduce un numero: ")
 	n = float(n) #Cambio de formato a decimal
	if n != int(n):  #comprobamos que sea entero.
		print("el número no es entero inserte un número nuevo\n")
	else:
		entero=1
	if n<0:         #comprobamos que sea positivo en los dos casos si es cambia las variables para salir del bucle
		print("el número es negativo inserte un número nuevo\n")
	else:
		positivo=1
	


entero=0
positivo=0
while not entero=1 and positivo=1: #bucle de comprobación
	
 	m=""
	while not m.isdigit():          #bucle: comprueba que se introduce un número
       		m = raw_input("introduce un numero: ")
 	m = float(m) #Cambio de formato a decimal
	if m != int(m):  #comprobamos que sea entero.
		print("el número no es entero inserte un número nuevo\n")
	else:
		entero=1
	if m<0:         #comprobamos que sea positivo en los dos casos si es cambia las variables para salir del bucle
		print("el número es negativo inserte un número nuevo\n")
	else:
		positivo=1


if n>m:  #Si n es mayor que m, los intercambio para que n sea siempre el menor
   a=0
   n = a
   m = n
   a = m
i=n   #defino la variable i que le asignare los valores pares entre n y m


sum = 0 #variable donde sumamos los números pares
cuantos = 0 # vairable que indica cuantos números hemos subido

while i <= m: #comienzo el bucle para que no salga mientras i sea menor que m
	if n%2 == 0:  #si el numero es par lo imprimo
		sum = i + sum       #sumo el numero par a la variable sum
		cuantos = cuantos +1 #sumo uno en la variable cuantos.
	
	i = i+1 #sumo uno a la variable i


print("la suma de los numeros pares entre %d y %d es: %d\n El numero de sumandos es %d" %(n,m,sum,cuantos)) #Imprimo los resultados

exit (0)
seguro que es una chorrada
  #2 (permalink)  
Antiguo 28/10/2010, 09:22
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: problema con mi primer programa ipython

Quitale los acentos que tenga tu programa, así sean comentarios. Eso o cámbiale el encoding
  #3 (permalink)  
Antiguo 28/10/2010, 09:52
 
Fecha de Ingreso: junio-2007
Mensajes: 21
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problema con mi primer programa ipython

gracias, que encoding me recomiendas para que se coma los acentos?


edito... me sigue dando el mismo problema

Última edición por noelin; 28/10/2010 a las 09:57
  #4 (permalink)  
Antiguo 28/10/2010, 10:16
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: problema con mi primer programa ipython

Usa utf-8

Otra cosa, nunca mezcles ni uses tabs para identar en python.
Aquí tu código, con espacios (Usa 4 espacios, puedes modificar tu editor para que al presionar tab inserte 4 espacios en vez del carácter tab).
Código Python:
Ver original
  1. #!/usr/bin/python
  2. # -*- coding: utf8 -*-
  3. import os
  4. print("cargadndo")
  5. os.system('clear') #borro la pantalla.
  6.  
  7.  
  8. print("hola mundo")
  9. entero = 0
  10. positivo = 0
  11. while entero != 1 and positivo != 1: #bucle de comprobación
  12.     n=""
  13.     while not n.isdigit():         #bucle: comprueba que se introduce un número
  14.         n = raw_input("introduce un numero: ")
  15.     n = float(n) #Cambio de formato a decimal
  16.     if n != int(n):  #comprobamos que sea entero.
  17.         print("el número no es entero inserte un número nuevo\n")
  18.     else:
  19.         entero=1
  20.     if n<0:         #comprobamos que sea positivo en los dos casos si es cambia las variables para salir del bucle
  21.         print("el número es negativo inserte un número nuevo\n")
  22.     else:
  23.         positivo=1
  24.    
  25.  
  26.  
  27. entero=0
  28. positivo=0
  29. m = 0
  30. while not entero == 1 and positivo == 1: #bucle de comprobación, CHECA ESTE WHILE NUNCA ENTRA
  31.     m=""
  32.     while not m.isdigit():          #bucle: comprueba que se introduce un número
  33.         m = raw_input("introduce un numero: ")
  34.     m = float(m) #Cambio de formato a decimal
  35.     if m != int(m):  #comprobamos que sea entero.
  36.         print("el número no es entero inserte un número nuevo\n")
  37.     else:
  38.         entero=1
  39.     if m<0:         #comprobamos que sea positivo en los dos casos si es cambia las variables para salir del bucle
  40.         print("el número es negativo inserte un número nuevo\n")
  41.     else:
  42.         positivo=1
  43.  
  44.  
  45. if n>m:  #Si n es mayor que m, los intercambio para que n sea siempre el menor
  46.     a=0
  47.     n = a
  48.     m = n
  49.     a = m
  50. i=n   #defino la variable i que le asignare los valores pares entre n y m
  51.  
  52.  
  53. sum = 0 #variable donde sumamos los números pares
  54. cuantos = 0 # vairable que indica cuantos números hemos subido
  55.  
  56. while i <= m: #comienzo el bucle para que no salga mientras i sea menor que m
  57.     if n&#37;2 == 0:  #si el numero es par lo imprimo
  58.         sum = i + sum       #sumo el numero par a la variable sum
  59.         cuantos = cuantos +1 #sumo uno en la variable cuantos. 
  60.     i = i+1 #sumo uno a la variable i
  61.  
  62. print("la suma de los numeros pares entre %d y %d es: %d\n El numero de sumandos es %d" %(n,m,sum,cuantos)) #Imprimo los resultados
  #5 (permalink)  
Antiguo 28/10/2010, 10:41
 
Fecha de Ingreso: junio-2007
Mensajes: 21
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problema con mi primer programa ipython

ole! muchas gracias sabia yo que era alguna chorrada de principiante :)
  #6 (permalink)  
Antiguo 28/10/2010, 11:28
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problema con mi primer programa ipython

Cita:
Iniciado por razpeitia Ver Mensaje
Otra cosa, nunca mezcles ni uses tabs para identar en python.
Creo que es cuestión de gustos. Yo prefiero espacios también, pero en realidad debería usarse el que a uno más le guste (siempre que no se mezclen espacios y tabuladores)
  #7 (permalink)  
Antiguo 28/10/2010, 11:41
 
Fecha de Ingreso: junio-2007
Mensajes: 21
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: problema con mi primer programa ipython

ya puestos tengo otra pregunta: en las comprobaciones de si el numero es entero y positivo me entra en el else y cambia la variable pero no imprime la cadena que está en el if por más vueltas que le doy no se por que no entra en el if pero si en el else

lineas 16:19
  #8 (permalink)  
Antiguo 28/10/2010, 13:04
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: problema con mi primer programa ipython

No necesitas convertir a un float y luego a un int.

isdigit funciona si todos los caracteres de la cadena son digitos entre 0 y 9. Por lo tanto no puedes insertar negativos, ni flotantes.

de las lineas 29 a 42 solo haría un simple:
Código Python:
Ver original
  1. m = ""
  2. while not m.is_digit(): #No acepta reales o flotantes, no acepta negativos
  3.     m = raw_input("Mensage: ")
  4. m = int(m)

Etiquetas: primer, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:02.