[ Foro de Python ]

Agradecimiento a Nacho

08-Apr-2015 02:57
Abel Santizo
8 Respuestas

Gracias apreciable Nacho, por tan excelente curso, quisiera publicar dos de mis programas que resuelven dos de los problemas que planteas en lo ultimo de las lecciones, pero solo con tu aprobación, si es que lo consideras prudente o te lo mando en privado?. saludos


09-Apr-2015 16:16
Nacho Cabanes (+31)

Me parece perfecto que los publiques "en abierto", adelante con ello!


11-Apr-2015 04:49
Abel Santizo

Ok gracias por la autorización Nacho, Que gusto.
?3.7. Crea un programa que pida al usuario tres números reales y muestre el mayor de los tres
El programa que hice de respuesta para la pregunta anterior, fue este:

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 and n_1 != n_3 and n_2 != n_3 :

       if n_1 > n_2:
           if n_1 > n_3:
               print()
               print("El primer numero es el mayor y es",n_1)
               oportunidades = 0
               flag = 1
               
       if n_2 > n_3:
           if n_2 > n_1:
               print()
               print("El segundo numero es el mayor y es",n_2)
               oportunidades = 0
               flag = 1
               
       if n_3 > n_2:
           if n_3 > n_1:
               print()
               print("El tercero numero es el mayor y es",n_3)
               oportunidades = 0
               flag = 1
   else:
       print()
       print("Escribiste dos o mas números iguales")
       print("Tienes que escribirlos diferentes")
       oportunidades = oportunidades-1
       if oportunidades == 1:
           print("Solo te queda",oportunidades,"oportunidad")
           print()
       elif oportunidades == 0:  
           print("¡Agotaste tus 3 oportunidades! :(")
           print()
       else:
           print("Solo te quedan",oportunidades,"oportunidades")
           print()

           
if flag == 0:
   print("¡¡ Nunca escribiste 3 numeros diferentes !!")
else:
   print()
   print("¡¡ Operación concluida exitosamente !!")

Califíqueme profe, no mas tenga en cuenta que tengo 15 días en esto del python jajaja


11-Apr-2015 05:18
Abel Santizo

?4.7. Crea un programa que pida al usuario una anchura y una altura, y dibuje un rectángulo formado por asteriscos, que tenga ese ancho y ese alto.  Así lo resolví:

#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="")    


11-Apr-2015 07:30
Abel Santizo

Programa para generar la tabla de multiplicar según el numero introducido:

print("Programa que escribe una tabla completa de multiplicar del número entero pedido")
n=int(input("Introduce un número "))
c=00

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


12-Apr-2015 17:38
Nacho Cabanes (+31)

Para el 4.6, la lógica es buena, aunque innecesariamente rebuscada: si introduce 5, 5 y 5, no tiene por qué ser un error. Simplemente, el mayor de esos valores es 5. Por eso, no es necesario darle varias oportunidades. Como otra mejora,  la variable "flag" es poco legible. El nombre debería indicar si misión.  Mejor un nombre largo pero claro, como "respuestaCorrecta" que uno corto y poco evidente.

El 4.7 es bueno. Aún así, una sugerencia de mejora : prueba a escribir una cadena multiplicada por un número.

El último esta perfecto también.


14-Apr-2015 01:47
Abel Santizo

Gracias Nacho por tus sugerencias y puntos de vista lo corregiré y luego comento. saludos


14-Apr-2015 03:47
Abel Santizo

Realice los cambios que me pediste haber como lo vez?

#Programa que genera un cuadro con lineas formadas de asteriscos
n=int(input("Introdusca el largo en astericos del rectangulo "))
a=int(input("Introdusca el ancho en astericos del rectangulo "))

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

for c in range(1,a+1):
   print("*",' '*(n-3),end="")
   print("*")

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


17-Apr-2015 17:50
Nacho Cabanes (+31)

La idea importante es que en Python (y no en la mayoría de lenguajes) puedes escribir 10 guiones usando el asterisco para multiplicar, así:

print("-"*10)

De hecho, puedes crear una cadena de forma repetitiva a partir de otra, usando el asterisco:

guiones = "-" * 10
print(guiones)

Si aplicas esa idea a tu programa, verás que se puede simplificar mucho.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)