Mi primer programa

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

Mi primer programa

Notapor algarafa » Jue Nov 27, 2008 8:00 pm

¿Qué les parece mi primer programa en Python'

Código: Seleccionar todo
print 'Bienvenido a la calculadora geometrica en Python creada por Rafael Alvarez Garcia.'
print 'Elige una opcion del menu, para ello escribe el numero de dicha opcion y pulsa enter.'
print '1. Trabajar con cuadrados y cubos.'
print '2. Trabajar con rectangulos.'
print '3. Trabajar con circulos y esferas.'

# Les pido disculpas por no poner acentos, pero Python no los permite.
# Hasta aqui hemos mostrado el menu, ahora vamos a hacer una variable que determine que haremso mas adelante.

eleccion = int(raw_input('Elige una opcion del menu:'))

# Fijaos en este sistema para hacer menus, comparamos el valor asignado a una variable con el de la opcion del menu.

if eleccion == 1:
   print '1. Hallar el perimetro del cuadrado.'
   print '2. Hallar el area del cuadrado.'
   print '3. Hallar el volumen de un cubo.'
   
   # Ahora haremos lo mismo del menu de antes, pero con este submenu.
   
   eleccion_cuadrado = int(raw_input('Elige una opcion del submenu.'))
   
   if eleccion_cuadrado == 1:
      lado_cuadrado = float(raw_input('Dame el lado del cuadrado:'))
      peri_cuadrado = lado_cuadrado * 4
      print 'El perimetro del cuadrado es: %f' % (peri_cuadrado)
   
   if eleccion_cuadrado == 2:
      lado_cuadrado = float(raw_input('Dame el lado del cuadrado:'))
      area_cuadrado = lado_cuadrado ** 2
      print 'El area del cuadrado es: %f' % (area_cuadrado)
      
   if eleccion_cuadrado == 3:
      lado_cuadrado = float(raw_input('Dame el lado del cuadrado:'))
      volumen_cuadrado = lado_cuadrado ** 3
      print 'El volumen del cuadrado es: %f' % (volumen_cuadrado)
      
   # Ahora, por si alguien elige una opcion no existente, vamos a crar un mensaje de error.
   
   if eleccion_cuadrado != 1:
      if eleccion_cuadrado != 2:
         if eleccion_cuadrado != 3:
            print 'No has elegido una opcion existente del submenu.'
if eleccion == 2:
   print '1. Hallar el perimetro del rectangulo.'
   print '2. Hallar el area del rectangulo.'
   
   # Ahora seguimos el procedimiento de siempre.
   
   eleccion_rectangulo = int(raw_input('Elige una opcion del menu:'))
   
   if eleccion_rectangulo == 1:
      lado_1_recta = float(raw_input('Dame uno de los lados del rectangulo:'))
      lado_2_recta = float(raw_input('Dame el otro lado del rectangulo:'))
      peri_recta = (lado_1_recta * 2) + (lado_2_recta * 2)
      print 'El perimetro del rectangulo es: %f' % (peri_recta)
      
   if eleccion_rectangulo == 2:
      lado_1_recta = float(raw_input('Dame uno de los lados del rectangulo:'))
      lado_2_recta = float(raw_input('Dame el otro lado del rectangulo:'))
      area_recta = lado_1_recta * lado_2_recta
      print 'El area del rectangulo es: %f' % (area_recta)
   
   if eleccion_rectangulo != 1:
      if eleccion_rectangulo != 2:
         print 'No has elegido una opcion existente del submenu.'   
         
if eleccion == 3:
   from math import pi
   print '1. Hallar el perimetro de un circulo.'
   print '2. Hallar el area de un circulo.'
   print '3. Hallar el volumen de una esfera.'
      
   eleccion_circu = int(raw_input('Elige una opcion del submenu:'))
      
   if eleccion_circu == 1:
      radio_circu = float(raw_input('Dame el radio del circulo, (es la mitad del diametro):'))
      peri_circu = 2 * pi * radio_circu
      print 'El perimetro del circulo es: %f' % (peri_circu)
   
   if eleccion_circu == 2:
      radio_circu = float(raw_input('Dame el radio del circulo, (es la mitad del diametro):'))
      area_circu = pi * radio_circu ** 2
      print 'El area del circulo es: %f' % (area_circu)
   
   if eleccion_circu == 3:
      radio_circu = float(raw_input('Dame el radio de la esfera, (es la mitad del diametro):'))
      volumen_esfera = 4/3 * pi * radio_circu ** 3
      print 'El volumen de la esfera es: %f' % (volumen_esfera)
      
if eleccion != 1:
   if eleccion != 2:
      if eleccion != 3:
         print 'No has elegido una opcion existente del menu.'
         
raw_input()

# Anadimos la ultima linea para que el personal pueda leer los datos antes de que se cierre el programa y listo.
# Espero que les haya gustado.
Última edición por algarafa el Vie Nov 28, 2008 12:48 pm, editado 1 vez en total
http://liberatumundo.wordpress.com/
Avatar de Usuario
algarafa
 
Mensajes: 135
Registrado: Lun Oct 27, 2008 6:12 pm
Ubicación: España

Notapor endaramiz » Jue Nov 27, 2008 10:33 pm

Agradecería que pusieras el código dentro de las etiquetas code para poder hacer una lectura más fácil y poder entenderlo. Ten en cuenta que, en python, la indentación es de vital importancia (aunque en todo lenguaje hay que darle importancia).
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Re: Mi primer programa

Notapor endaramiz » Sab Nov 29, 2008 3:14 pm

RAGPacho escribió:¿Qué les parece mi primer programa en Python'
Está bien, pero he encontrado algunas cosas que se pueden mejorar y otras que se pueden simplificar(pero ya está bien, que sepas hacerlo de la manera complicada):
RAGPacho escribió:# Les pido disculpas por no poner acentos, pero Python no los permite.
En Ubuntu se pueden poner acentos en los comentarios de Python. Pero no se si en Windows funcionará. Para poder hacerlo, hay que añadir una línea al principio del archivo:
Código: Seleccionar todo
# -*- coding: utf-8 -*-

RAGPacho escribió: eleccion = int(raw_input('Elige una opcion del menu:'))
Está bien que sepas hacerlo conversiones de tipos, pero en este caso, no es necesario porque puedes hacer:
Código: Seleccionar todo
eleccion = input('Elige una opcion del menu:')

RAGPacho escribió: print 'El perimetro del cuadrado es: %f' % (peri_cuadrado)
Se puede simplificar:
Código: Seleccionar todo
print 'El perimetro del cuadrado es:', peri_cuadrado

RAGPacho escribió:
Código: Seleccionar todo
   if eleccion_cuadrado != 1:
      if eleccion_cuadrado != 2:
         if eleccion_cuadrado != 3:

Estos condicionales se pueden unir:
Código: Seleccionar todo
if eleccion_cuadrado != 1 and eleccion_cuadrado != 2...

Pero imagina que son n números. Lo más correcto es hacer:
Código: Seleccionar todo
if eleccion_cuadrado < 0 or n < eleccion_cuadrado:

RAGPacho escribió:from math import pi
Esto se hace al principio del archivo.
RAGPacho escribió:# Anadimos la ultima linea para que el personal pueda leer los datos antes de que se cierre el programa y listo.
Esto ya está bien, pero podrías poner un mensaje como: pulse una tecla para salir. O mejor aún. te animo a que hagas que tu programa se repita hasta que pulsas en la opción 0, que representaría salir.

Saludos y ánimo. Ahora a hacer algo un poco más complicado. Y ya sabes... estamos aquí para ayudarte.

Pd. puede que me haya saltado alguna cosa, hace meses que no toco python.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Muchas gracias

Notapor algarafa » Sab Nov 29, 2008 3:44 pm

Muchas gracias por tus consejos:D . Tranquilo por lo de los acentos que uso Linux. Tengo una duda, ¿como hacer que se repita el programa una y otra vez hasta que el usuario decida salir?
http://liberatumundo.wordpress.com/
Avatar de Usuario
algarafa
 
Mensajes: 135
Registrado: Lun Oct 27, 2008 6:12 pm
Ubicación: España

Re: Mi primer programa

Notapor hugoruscitti » Sab Nov 29, 2008 5:45 pm

dvd escribió:
RAGPacho escribió:
Código: Seleccionar todo
   if eleccion_cuadrado != 1:
      if eleccion_cuadrado != 2:
         if eleccion_cuadrado != 3:

Estos condicionales se pueden unir:
Código: Seleccionar todo
if eleccion_cuadrado != 1 and eleccion_cuadrado != 2...



Es cierto, y otra forma también podría ser:

Código: Seleccionar todo
if eleccion_cuadrado not in [1, 2, 3]:
    print "la eleccion no es 1, 2 ni 3"


donde el operador "in" sirve para consultar si un elemento pertenece a
una lista, y "not" es la negación de la consulta.

Por cierto, me gusta el programa. Mas tarde cuando llegué a mi
casa lo sigo viendo y veo si puedo hacer alguna otra sugerencia.

Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Gracias

Notapor algarafa » Sab Nov 29, 2008 6:45 pm

Doy gracias de nuevo por su atención. Como podran ver en fuera de tópico, en mi presentación, soy "prograamador autodidacta". Tengo trece años, y espero llegar a ser programador profesional, por lo que aprendo Python, por ser de sintaxis sencilla comparado con C. Muchas gracias por ayudarme a progresar. :wink:
http://liberatumundo.wordpress.com/
Avatar de Usuario
algarafa
 
Mensajes: 135
Registrado: Lun Oct 27, 2008 6:12 pm
Ubicación: España

Los retoques

Notapor algarafa » Sab Nov 29, 2008 7:08 pm

Aquí les dejo el código con la codificación utf-8 para la ortografía española, y con las modificaciones en las estructuras de control anidadas. Gracias.

Código: Seleccionar todo
# -*- coding: utf-8 -*-

#Añadimos esta linea para que se puedan usar 'ñ' y acentos.
# Antes de nada importamos algunas funciones que nos serán útiles más adelante.

from math import pi

print 'Bienvenido a la calculadora geométrica en Python creada por Rafael Álvarez García.'
print 'Elige una opción del menú, para ello escribe el número de dicha opción y pulsa enter.'
print '1. Trabajar con cuadrados y cubos.'
print '2. Trabajar con rectangulos.'
print '3. Trabajar con circulos y esferas.'

# Hasta aquí hemos mostrado el menú, ahora vamos a hacer una variable que determine que haremos más adelante.

eleccion = int(raw_input('Elige una opción del menú:'))

# Fijaos en este sistema para hacer menús, comparamos el valor asignado a una variable con el de la opción del menú.

if eleccion == 1:
   print '1. Hallar el perímetro del cuadrado.'
   print '2. Hallar el área del cuadrado.'
   print '3. Hallar el volumen de un cubo.'
   
   # Ahora haremos lo mismo del menú de antes, pero con este submenu.
   
   eleccion_cuadrado = int(raw_input('Elige una opción del submenu.'))
   
   if eleccion_cuadrado == 1:
      lado_cuadrado = float(raw_input('Dame el lado del cuadrado:'))
      peri_cuadrado = lado_cuadrado * 4
      print 'El perímetro del cuadrado es: %f' % (peri_cuadrado)
   
   if eleccion_cuadrado == 2:
      lado_cuadrado = float(raw_input('Dame el lado del cuadrado:'))
      area_cuadrado = lado_cuadrado ** 2
      print 'El área del cuadrado es: %f' % (area_cuadrado)
      
   if eleccion_cuadrado == 3:
      lado_cuadrado = float(raw_input('Dame el lado del cuadrado:'))
      volumen_cuadrado = lado_cuadrado ** 3
      print 'El volumen del cuadrado es: %f' % (volumen_cuadrado)
      
   # Ahora, por si alguien elige una opción no existente, vamos a crear un mensaje de error.
   
   if eleccion_cuadrado not in [ 1, 2, 3]:
            print 'No has elegido una opcion existente del submenu.'

if eleccion == 2:
   print '1. Hallar el perímetro del rectángulo.'
   print '2. Hallar el área del rectángulo.'
   
   # Ahora seguimos el procedimiento de siempre.
   
   eleccion_rectangulo = int(raw_input('Elige una opción del menú:'))
   
   if eleccion_rectangulo == 1:
      lado_1_recta = float(raw_input('Dame uno de los lados del rectángulo:'))
      lado_2_recta = float(raw_input('Dame el otro lado del rectángulo:'))
      peri_recta = (lado_1_recta * 2) + (lado_2_recta * 2)
      print 'El perímetro del rectángulo es: %f' % (peri_recta)
      
   if eleccion_rectangulo == 2:
      lado_1_recta = float(raw_input('Dame uno de los lados del rectángulo:'))
      lado_2_recta = float(raw_input('Dame el otro lado del rectángulo:'))
      area_recta = lado_1_recta * lado_2_recta
      print 'El área del rectángulo es: %f' % (area_recta)
   
   if eleccion_rectangulo not in [ 1, 2, 3]:
         print 'No has elegido una opción existente del submenu.'   
         
if eleccion == 3:
   print '1. Hallar el perímetro de un círculo.'
   print '2. Hallar el área de un círculo.'
   print '3. Hallar el volumen de una esfera.'
      
   eleccion_circu = int(raw_input('Elige una opción del submenu:'))
      
   if eleccion_circu == 1:
      radio_circu = float(raw_input('Dame el radio del círculo, (es la mitad del diámetro):'))
      peri_circu = 2 * pi * radio_circu
      print 'El perímetro del círculo es: %f' % (peri_circu)
   
   if eleccion_circu == 2:
      radio_circu = float(raw_input('Dame el radio del círculo, (es la mitad del diámetro):'))
      area_circu = pi * radio_circu ** 2
      print 'El área del círculo es: %f' % (area_circu)
   
   if eleccion_circu == 3:
      radio_circu = float(raw_input('Dame el radio de la esfera, (es la mitad del diámetro):'))
      volumen_esfera = 4/3 * pi * radio_circu ** 3
      print 'El volumen de la esfera es: %f' % (volumen_esfera)
      
   if eleccion_circu not in [ 1, 2, 3]:
            print 'No has elegido una opción existente del submenu.'
      
if eleccion not in [ 1, 2, 3]:
         print 'No has elegido una opción existente del menú.'
         
raw_input('Pulsa enter para salir.')

# Anadimos la última línea para que el personal pueda leer los datos antes de que se cierre el programa y listo.
# Espero que les haya gustado.
http://liberatumundo.wordpress.com/
Avatar de Usuario
algarafa
 
Mensajes: 135
Registrado: Lun Oct 27, 2008 6:12 pm
Ubicación: España

El bucle

Notapor algarafa » Dom Nov 30, 2008 3:08 pm

Ya he hecho para que el programa se repita hasta que el usuario lo pare, lo he hecho con While.
http://liberatumundo.wordpress.com/
Avatar de Usuario
algarafa
 
Mensajes: 135
Registrado: Lun Oct 27, 2008 6:12 pm
Ubicación: España

Re: Mi primer programa

Notapor endaramiz » Dom Nov 30, 2008 5:42 pm

hugoruscitti escribió:Es cierto, y otra forma también podría ser:
Código: Seleccionar todo
if eleccion_cuadrado not in [1, 2, 3]:
    print "la eleccion no es 1, 2 ni 3"

Oooh muy buena, no se me había ocurrido. Pero ahora que me has dado la idea, para hacer hasta n números se puede hacer con un range(1, n+1). Me lo apunto :wink:

RAGPacho escribió: Tranquilo por lo de los acentos que uso Linux.
Cierto, no me había fijado en tu firma.


RAGPacho escribió:¿como hacer que se repita el programa una y otra vez hasta que el usuario decida salir?
Bueno, lo que yo haría es:
Código: Seleccionar todo
salir = False
while not salir:
    [código]
    if eleccion == 0:
        salir = True
    [código]
Pero no se si habrá otra manera mejor de hacerlo y además, tengo las ideas "contaminadas" de C++; :lol:

Saludos.

Pd: 4 / 3 = 1; 4 / 3.0 = 1.33333... ; 4 / float(3) = 1.3333....
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Nuevo retoque

Notapor algarafa » Lun Dic 01, 2008 6:54 pm

Bueno, os dejo nueva "versión del programa, ahora ya se repite hasta que pulsas 0. Copien el código, y pruebenlo para que vean si funciona, si ven algún fallo me avisan, gracias por ayudarme a mejorarlo.

Código: Seleccionar todo
# -*- coding: utf-8 -*-

# Añadimos esta linea para que se puedan usar 'ñ' y acentos.
# Antes de nada importamos algunas funciones que nos serán útiles más adelante.

from math import pi

# Ahora, damos a esta variable el valor 0, mientras que esto permanezca así, el programa se repetirá continuamente.

salir = 0

while salir == 0:

  print 'Bienvenido a la calculadora geométrica en Python creada por Rafael Álvarez García.'
  print 'Elige una opción del menú, para ello escribe el número de dicha opción y pulsa enter.'
  print '1. Trabajar con cuadrados y cubos.'
  print '2. Trabajar con rectangulos.'
  print '3. Trabajar con circulos y esferas.'
  print '0. Elige 0 para salir del programa.'

  # Hasta aquí hemos mostrado el menú, ahora vamos a hacer una variable que determine que haremos más adelante.

  eleccion = int(raw_input('Elige una opción del menú:'))

  # Fijaos en este sistema para hacer menús, comparamos el valor asignado a una variable con el de la opción del menú.

  if eleccion == 1:
    print '1. Hallar el perímetro del cuadrado.'
    print '2. Hallar el área del cuadrado.'
    print '3. Hallar el volumen de un cubo.'
   
    # Ahora haremos lo mismo del menú de antes, pero con este submenu.
   
    eleccion_cuadrado = int(raw_input('Elige una opción del submenu.'))
   
    if eleccion_cuadrado == 1:
      lado_cuadrado = float(raw_input('Dame el lado del cuadrado:'))
      peri_cuadrado = lado_cuadrado * 4
      print 'El perímetro del cuadrado es: %f' % (peri_cuadrado)
      raw_input('Pulsa enter para continuar la ejecución del programa.')
   
    if eleccion_cuadrado == 2:
      lado_cuadrado = float(raw_input('Dame el lado del cuadrado:'))
      area_cuadrado = lado_cuadrado ** 2
      print 'El área del cuadrado es: %f' % (area_cuadrado)
      raw_input('Pulsa enter para continuar la ejecución del programa.')
      
    if eleccion_cuadrado == 3:
      lado_cuadrado = float(raw_input('Dame el lado del cuadrado:'))
      volumen_cuadrado = lado_cuadrado ** 3
      print 'El volumen del cuadrado es: %f' % (volumen_cuadrado)
      raw_input('Pulsa enter para continuar la ejecución del programa.')
      
    # Ahora, por si alguien elige una opción no existente, vamos a crear un mensaje de error.
   
    if eleccion_cuadrado not in [ 1, 2, 3]:
       print 'No has elegido una opcion existente del submenu.'
       raw_input('Pulsa enter para continuar la ejecución del programa.')

  if eleccion == 2:
    print '1. Hallar el perímetro del rectángulo.'
    print '2. Hallar el área del rectángulo.'
   
    # Ahora seguimos el procedimiento de siempre.
   
    eleccion_rectangulo = int(raw_input('Elige una opción del menú:'))
   
    if eleccion_rectangulo == 1:
      lado_1_recta = float(raw_input('Dame uno de los lados del rectángulo:'))
      lado_2_recta = float(raw_input('Dame el otro lado del rectángulo:'))
      peri_recta = (lado_1_recta * 2) + (lado_2_recta * 2)
      print 'El perímetro del rectángulo es: %f' % (peri_recta)
      raw_input('Pulsa enter para continuar la ejecución del programa.')
      
    if eleccion_rectangulo == 2:
      lado_1_recta = float(raw_input('Dame uno de los lados del rectángulo:'))
      lado_2_recta = float(raw_input('Dame el otro lado del rectángulo:'))
      area_recta = lado_1_recta * lado_2_recta
      print 'El área del rectángulo es: %f' % (area_recta)
      raw_input('Pulsa enter para continuar la ejecución del programa.')
   
    if eleccion_rectangulo not in [ 1, 2, 3]:
       print 'No has elegido una opción existente del submenu.'   
       raw_input('Pulsa enter para continuar la ejecución del programa.')
         
  if eleccion == 3:
    print '1. Hallar el perímetro de un círculo.'
    print '2. Hallar el área de un círculo.'
    print '3. Hallar el volumen de una esfera.'
      
    eleccion_circu = int(raw_input('Elige una opción del submenu:'))
      
    if eleccion_circu == 1:
      radio_circu = float(raw_input('Dame el radio del círculo, (es la mitad del diámetro):'))
      peri_circu = 2 * pi * radio_circu
      print 'El perímetro del círculo es: %f' % (peri_circu)
      raw_input('Pulsa enter para continuar la ejecución del programa.')
   
    if eleccion_circu == 2:
      radio_circu = float(raw_input('Dame el radio del círculo, (es la mitad del diámetro):'))
      area_circu = pi * radio_circu ** 2
      print 'El área del círculo es: %f' % (area_circu)
      raw_input('Pulsa enter para continuar la ejecución del programa.')
   
    if eleccion_circu == 3:
      radio_circu = float(raw_input('Dame el radio de la esfera, (es la mitad del diámetro):'))
      volumen_esfera = 4/3 * pi * radio_circu ** 3
      print 'El volumen de la esfera es: %f' % (volumen_esfera)
      raw_input('Pulsa enter para continuar la ejecución del programa.')
      
    if eleccion_circu not in [ 1, 2, 3]:
       print 'No has elegido una opción existente del submenu.'
       raw_input('Pulsa enter para continuar la ejecución del programa.')
      
  if eleccion == 0:
      salir = 1
     
      # Con esta ultima orden, hacemos que si el usuario pulsa 0, el valor de la variable salir cambie, y entonces el programa se detendrá.

  if eleccion not in [ 1, 2, 3, 0]:
     print 'No has elegido una opción existente del menú.'
     raw_input('Pulsa enter para continuar la ejecución del programa.')
         
raw_input('Pulsa enter para salir.')

# Añadimos la última línea para que el personal pueda leer los datos antes de que se cierre el programa y listo.
# Espero que les haya gustado.
http://liberatumundo.wordpress.com/
Avatar de Usuario
algarafa
 
Mensajes: 135
Registrado: Lun Oct 27, 2008 6:12 pm
Ubicación: España


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron