TODOPIC

Lenguajes de programación para PC => Python => Mensaje iniciado por: Micom en 05 de Abril de 2015, 18:17:52

Título: Mi primer programa
Publicado por: Micom en 05 de Abril de 2015, 18:17:52
Bueno me siento como  niño con juguete nuevo  :-/ y quiero mostrarles mi primer programa. Recuerden que soy extremadamente nuevo en esto, y si hay que criticarlo háganlo con todo, ya que quiero aprender.¡¡Que chulada es Python!!
Código: [Seleccionar]
print("Escribe 3 números enteros diferentes y te dire cual es el mayor")
print("Tienes 3 oportunidades")
print()
oportunidades = 3
flag = 0

while oportunidades != 0:
    
    n_1=int(input("Teclea el primer número "))
    n_2=int(input("Teclea el segundo número "))
    n_3=int(input("Teclea el tercer número "))

    if n_1 != n_2 != n_3:

        if n_1 > n_2:
            if n_1 > n_3:
                print()
                print("El primer numero es mayor y es ",end="")
                print(n_1)
                oportunidades = 0
                flag = 1
                
        if n_2 > n_3:
            if n_2 > n_1:
                print()
                print("El segundo número es mayor y es ",end="")
                print(n_2)
                oportunidades = 0
                flag = 1
                
        if n_3 > n_2:
            if n_3 > n_1:
                print()
                print("El tercer número es mayor y es ",end="")
                print(n_3)
                oportunidades = 0
                flag = 1
    else:
        print()
        print("Escribiste dos o mas números iguales")
        print("Tienes que escribirlos diferente")
        oportunidades = oportunidades-1
        print("Solo te quedan ",end="")
        print(oportunidades,"oportunidades")

if flag == 0:
    print()
    print("¡¡ Nunca escribiste 3 numeros diferentes !!")
else:
    print()
    print("¡¡ Operación concluida exitosamente !!")
Título: Re: Mi primer programa
Publicado por: Miquel_S en 06 de Abril de 2015, 19:28:34
Gracias Micom, como los que estamos aprendiendo cualquier tontería nos parece un éxito me he permitido con unas pequeñas modificaciones escribir tu código para una versión anterior.
 
Código: Python
  1. print("Escribe 3 números enteros diferentes y te dire cual de ellos es el mayor")
  2. print("Tienes 3 oportunidades")
  3. print
  4. oportunidades = 3
  5. flag = 0
  6.  
  7. while oportunidades != 0:
  8.    
  9.     n_1=int(input("Teclea el primer número "))
  10.     n_2=int(input("Teclea el segundo número "))
  11.     n_3=int(input("Teclea el tercer número "))
  12.  
  13.     if n_1 != n_2 != n_3:
  14.  
  15.         if n_1 > n_2:
  16.             if n_1 > n_3:
  17.                 print
  18.                 print("El primer numero es mayor y es ")
  19.                 print n_1
  20.                 oportunidades = 0
  21.                 flag = 1
  22.                
  23.         if n_2 > n_3:
  24.             if n_2 > n_1:
  25.                 print
  26.                 print("El segundo número es mayor y es ")
  27.                 print n_2
  28.                 oportunidades = 0
  29.                 flag = 1
  30.                
  31.         if n_3 > n_2:
  32.             if n_3 > n_1:
  33.                 print
  34.                 print("El tercer número es mayor y es ")
  35.                 print n_3
  36.                 oportunidades = 0
  37.                 flag = 1
  38.     else:
  39.         print
  40.         print("Escribiste dos o mas números iguales")
  41.         print("Tienes que escribirlos diferentes")
  42.         oportunidades = oportunidades-1
  43.         print("Solo te quedan "),(oportunidades),("oportunidades")
  44.         print
  45.        
  46. if flag == 0:
  47.     print
  48.     print("¡¡ Nunca escribiste 3 numeros diferentes !!")
  49. else:
  50.     print
  51.     print("¡¡ Operación concluida exitosamente !!")

Saludos!
Título: Re: Mi primer programa
Publicado por: Micom en 08 de Abril de 2015, 03:30:33
Así es Miguel aunque son meras practicas muy fáciles, realmente me estoy divirtiendo asiéndolas como esta: que genera un rectángulo de asteriscos tu das el largo y el ancho

Código: [Seleccionar]
#Programa que genera un cuadro con lineas formadas de asteriscos
l=int(input("Introdusca el largo en astericos del rectangulo "))
a=int(input("Introdusca el ancho en astericos del rectangulo "))
c=0

l1=l+1
l2=l-1
a1=a+1

for c in range(1,l1):
    print("*",end="")
print()    

for c in range(1,a1):
    print("*",end="")
    
    for c in range(1,l2): #Aqui se generan los espacios vacios segun sea el ancho
        print(" ",end="" )#del rectangunlo
        
    print("*")

for c in range(1,l1):
    print("*",end="")    
Título: Re: Mi primer programa
Publicado por: KILLERJC en 08 de Abril de 2015, 06:40:03
Código: Python
  1. # -*- coding: cp1252 -*-
  2. oportunidades = 3
  3. print("Escribe 3 números enteros diferentes y te dire cual de ellos es el mayor")
  4. print("Tienes "+str(oportunidades)+" oportunidades")
  5. print
  6. b = ["primer","segundo","tercer"]
  7.  
  8. for x in range(0,oportunidades):
  9.  
  10.     a = []
  11.  
  12.     for j in range(0,3):
  13.         try:
  14.             a.append(int(raw_input("Teclea el "+b[j]+" número ")))
  15.         except ValueError:
  16.             print "Numero no valido, sera reemplazado por un 0"
  17.             a.append(0)
  18.        
  19.  
  20.     if len(set(a))==len(a):
  21.  
  22.         print "El " + b[a.index(max(a))] + " número es mayor y es "+ str(max(a))
  23.         print
  24.         print("¡¡ Operación concluida exitosamente !!")
  25.         break
  26.  
  27.     else:
  28.         print
  29.         print("Escribiste dos o mas números iguales")
  30.         print("Tienes que escribirlos diferentes")
  31.         print("Solo te quedan "),(2-x),("oportunidades")
  32.         print

Yo tambien estuve jugando, use listas. Utilize el programa que hicieron y trate de hacerlo igual

Es el mismo programa que hicieron ustedes, nomas que lo hice con for de 0 a 2 la iteracion, en cada for creo/borro una una lista llamada a y que tiene el primer elemento vacio.
Luego procedo nuevmaente a otro for que pide las entradas, observaran que utilizo raw_input() en ves de input(), ya que input() intenta "evaluar" lo ingresado, ejemplo si ingreso 12 + 50 como un numero, se almacenaria 62, con raw input eso entra como un string. De haber un error en la conversion a entero a traves del int() este entra en excepcion y procede a rellenar con un 0 ese lugar. ( podria no poner un print para eso )

Luego reviso que no sean iguales ninguno de los valores de la lista ( estos sigue siendo igual ) y luego en el if utilizo la funcion max que me devuelve el valor maximo de la lista y utilizo el index(x) que me devuelve la posicion del valor maximo o que pongo en x, y luego hago una busqueda en la otra lista donde estan los nombres.

tuve que convertirlos a str para poder concatenarlos en el printf.

Use set() que me da la cantidad de elementos diferentes dentro de la lista y luego compruebo su largo.

set([1,2,3]) ---->  [1,2,3]
len(set[1,2,3])) ---> 3

set([2,2,3]) ---->  [2,3]
len(set[1,2,3])) ---> 2

O para hacerlo extensible a todos con len(set(a)) == len(a), o en este caso simplemente len(set(a)) == 3
Y eso me diria si ya hay algun duplicado.

Una cosa que no pude hacer por que no se como hacerlo es que ante el error de entrada de poner una letra u algo asi, el for no proceda sino que se quede en el mismo elemento
EDIT: vi que no se puede solo podria hacerlo con un while

Esto lo hace 1 sola ves, sino reemplaza el for por el while oportunidades != 0 y lo va a hacer continuamente.
Título: Re: Mi primer programa
Publicado por: Picuino en 08 de Abril de 2015, 09:17:37
Para esa tarea se pueden utilizar diccionarios:

Código: Python
  1. # -*- coding: cp1252 -*-
  2. a = 25
  3. b = 73
  4. c = 12
  5.  
  6. numeros = {}
  7. numeros[a] = 'primero'
  8. numeros[b] = 'segundo'
  9. numeros[c] = 'tercero'
  10.      
  11. menor = min(numeros.keys())
  12. mayor = max(numeros.keys())
  13.      
  14. print("El menor número es el " + numeros[menor])
  15. print("El mayor número es el " + numeros[mayor])

Saludos.
Título: Re: Mi primer programa
Publicado por: KILLERJC en 08 de Abril de 2015, 09:22:50
Si, lo que alarga el programa es comprobar que no sea ningun igual, y las 3 oportunidades.
Título: Re: Mi primer programa
Publicado por: Picuino en 08 de Abril de 2015, 09:36:45
Hay una función para comprobar las veces que ocurre un elemento en una lista:

>>>lista = [1, 1, 1, 2, 3, 4]
>>>lista.count(1)
3
>>>lista.count(3)
1


Código: Python
  1. # -*- coding: cp1252 -*-
  2. a = 25
  3. b = 73
  4. c = 12
  5.  
  6. numeros = {}
  7. numeros[a] = 'primero'
  8. numeros[b] = 'segundo'
  9. numeros[c] = 'tercero'
  10.      
  11. menor = min(numeros.keys())
  12. mayor = max(numeros.keys())
  13.      
  14. print("El menor número es el " + numeros[menor])
  15. print("Se repite" + str(numeros.keys().count(menor)) + " veces\n")
  16.  
  17. print("El mayor número es el " + numeros[mayor])
  18. print("Se repite" + str(numeros.keys().count(mayor)) + " veces\n")

Saludos.
Título: Re: Mi primer programa
Publicado por: Picuino en 08 de Abril de 2015, 09:44:25
Así es Miguel aunque son meras practicas muy fáciles, realmente me estoy divirtiendo asiéndolas como esta: que genera un rectángulo de asteriscos tu das el largo y el ancho

Código: [Seleccionar]
#Programa que genera un cuadro con lineas formadas de asteriscos
l=int(input("Introdusca el largo en astericos del rectangulo "))
a=int(input("Introdusca el ancho en astericos del rectangulo "))
c=0

l1=l+1
l2=l-1
a1=a+1

for c in range(1,l1):
    print("*",end="")
print()    

for c in range(1,a1):
    print("*",end="")
    
    for c in range(1,l2): #Aqui se generan los espacios vacios segun sea el ancho
        print(" ",end="" )#del rectangunlo
        
    print("*")

for c in range(1,l1):
    print("*",end="")    

Truco rápido:

Código: Python
  1. #Programa que genera un cuadro con lineas formadas de asteriscos
  2. largo = 10
  3. ancho = 15
  4.  
  5. print("*" * (largo+2))
  6. for i in range(ancho):
  7.    print("*" + " " * largo + "*")
  8. print("*" * (largo+2))

Saludos.
Título: Re: Mi primer programa
Publicado por: Micom en 09 de Abril de 2015, 03:34:49
Acá traigo otro que genera una tabla de multiplicar con un número dado. pues no se si es que el programa es muy intuitivo o me ha ayudado lo poco que se de programación de pics, pero no lei como debía de combinar esta exprecion y me salio muy bien, haber si se puede generar para una versión anterior. print(c," x ",n," = ",c*n)
Código: [Seleccionar]
print("Programa que escribe una tabla completa de multiplicar del número entero pedido")
n=int(input("Introduce un número "))
c=0

for c in range(1,11):
    print(c," x ",n," = ",c*n)

No hay nada mejor para aprender que ver como realizar el mismo trabajo de varias formas, es realmente excelente la versatilidad de Python. Gracias Compas
Título: Re: Mi primer programa
Publicado por: Picuino en 09 de Abril de 2015, 09:11:32
Acá traigo otro que genera una tabla de multiplicar con un número dado. pues no se si es que el programa es muy intuitivo o me ha ayudado lo poco que se de programación de pics, pero no lei como debía de combinar esta exprecion y me salio muy bien, haber si se puede generar para una versión anterior. print(c," x ",n," = ",c*n)
Código: [Seleccionar]
print("Programa que escribe una tabla completa de multiplicar del número entero pedido")
n=int(input("Introduce un número "))
c=0

for c in range(1,11):
    print(c," x ",n," = ",c*n)

No hay nada mejor para aprender que ver como realizar el mismo trabajo de varias formas, es realmente excelente la versatilidad de Python. Gracias Compas

Otra forma para la tabla del 6:

Código: Python
  1. n = 6
  2. for mul in range(1, 11):
  3.    print(" {} x {} = {}".format(n, mul, n*mul))

más corto (y más raro):

Código: Python
  1. n = 6
  2. print("\n".join([" {} x {} = {}".format(n, mul, n*mul) for mul in range(1, 11)]))

Saludos.