Universidad de Costa Rica | Facultad de Ingeniería Escuela de Ingeniería Eléctrica | Programación Bajo Plataformas Abiertas Modulo Python | Laboratorio #1 Erick Carvajal Barboza | B01395 Nota: 100 PASO DE ARGUMENTOS POR LA LÍNEA DE COMANDOS Modifique todos los programas del laboratorio anterior para que reciban sus argumentos a través de la línea de comandos y no de manera interactiva. Implemente un control de errores básico que verifique la cantidad de argumentos introducidos por el usuario. Se presenta a continuación el código implementado para el programa que calcula las raíces reales de una ecuación cuadrática. #!/usr/bin/python #La línea 'shebang', le indica a la consola donde se encuentra el intérprete de python. # ­*­ coding: latin­1 ­*­ #Declara la codificación del código fuente de python, como esto se podrán utilizar caracteres como tildes, etc import sys #Importa la librería 'sys' la cual permite utilizar la lista de entradas desde consola. import math #Importa la librería 'math', la cual permite utilizar operaciones como raíces cuadradas if len(sys.argv) != 4: print "Número de argumentos incorrecto" print "Uso: lab2_1 A B C" sys.exit(1) #Si no se utilizan la cantidad de argumentos necesarios imprime un error y se sale del programa a = float(sys.argv[1]) b = float(sys.argv[2]) c = float(sys.argv[3]) #Se define cada variable if a == 0: print "El valor de a no debe ser cero" sys.exit(1) discriminante = b * b ­ 4 * a * c if discriminante >= 0: solucion1 = float((­b + math.sqrt(discriminante))/(2*a)) solucion2 = float((­b ­ math.sqrt(discriminante))/(2*a)) print "x1 = %f \nx2 = %f" %(solucion1, solucion2) else: print "Las raices no son reales" #El algoritmo utilizado para calcular las raíces ya sabiendo a, b, c es el mismo utilizado en el laboratorio anterior. #Finaliza el programa lab2_1_1.py A seguir, el código utilizado para el programa que calcula las raíces complejas de una ecuación cuadrática. #!/usr/bin/python #La línea 'shebang', le indica a la consola donde se encuentra el intérprete de python. # ­*­ coding: latin­1 ­*­ #Declara la codificación del código fuente de python, como esto se podrán utilizar caracteres como tildes, etc import sys #Importa la librería 'sys' la cual permite utilizar la lista de entradas desde consola. import math #Importa la librería 'math', la cual permite utilizar operaciones como raíces cuadradas if len(sys.argv) != 4: print "Número de argumentos incorrecto" print "Uso: lab2_2 A B C" sys.exit(1) #Si no se utilizan la cantidad de argumentos necesarios imprime un error y se sale del programa a = float(sys.argv[1]) b = float(sys.argv[2]) c = float(sys.argv[3]) #Se define cada variable if a == 0: print "El valor de a no debe ser cero" sys.exit(1) discriminante = b * b ­ 4 * a * c if discriminante >= 0: solucion1 = float((­b + math.sqrt(discriminante))/(2*a)) solucion2 = float((­b ­ math.sqrt(discriminante))/(2*a)) print "x1 = %f \nx2 = %f" %(solucion1, solucion2) else: discriminante = ­discriminante real = ­b/(2 * a) imaginario1 = float(math.sqrt(discriminante)/(2*a)) imaginario2 = float(­math.sqrt(discriminante)/(2*a)) print "x1 = %f + j%f \nx2 = %f + j%f" %(real, imaginario1, real, imaginario2) #El algoritmo utilizado para calcular las raíces ya sabiendo a, b, c es el mismo utilizado en el laboratorio anterior. #Finaliza el programa lab2_1_2.py Y por último la serie geométrica: #!/usr/bin/python #La línea 'shebang', le indica a la consola donde se encuentra el intérprete de python. # ­*­ coding: latin­1 ­*­ #Declara la codificación del código fuente de python, como esto se podrán utilizar caracteres como tildes, etc import sys #Importa la librería 'sys' la cual permite utilizar la lista de entradas desde consola. import math #Importa la librería 'math', la cual permite utilizar operaciones como raíces cuadradas if len(sys.argv) != 4: print "Número de argumentos incorrecto" print "Uso: lab2_3 a r n" sys.exit(1) #Si no se utilizan la cantidad de argumentos necesarios imprime un error y se sale del programa a = float(sys.argv[1]) r = float(sys.argv[2]) n = float(sys.argv[3]) #Se define cada variable if r == 0: print "El valor de r no debe ser cero" sys.exit(1) contador = 0 print "Los primeros n terminos de la sucesión son: " while contador < n: contador += 1 numero = float(a * (r ** contador)) print "%f" %(numero) #El algoritmo utilizado para calcular las raíces ya sabiendo a, b, c es el mismo utilizado en el laboratorio anterior. #Finaliza el programa lab2_1_3.py Escriba un programa que reciba, a través de la línea de comandos, una lista e imprima en la terminal la lista ordenada de manera ascendente (un valor por línea). Si todos los valores de la lista son números enteros, los elementos de la lista deben ser tratados como números, de lo contrario, deben tratarse como cadenas de caracteres. El código que se utilizó se muestra a continuación: #!/usr/bin/python #La línea 'shebang', le indica a la consola donde se encuentra el intérprete de python. # ­*­ coding: latin­1 ­*­ #Declara la codificación del código fuente de python, como esto se podrán utilizar caracteres como tildes, etc import sys #Importa la librería 'sys' la cual permite utilizar la lista de entradas desde consola. import math #Importa la librería 'math', la cual permite utilizar operaciones como raíces cuadradas if len(sys.argv) == 1: print "Inserte algun elemento" print "Uso: lab2_3 n1 n2 n3 ... nn" sys.exit(1) #Se imprime un error si se llama al programa sin ningún elemento a ordenar, no hay tope superior lista = sys.argv[1:] #Se define una lista de todos los argumentos que ingresen excepto el nombre del script k=0 j=0 caracter = 0 #Se definen variables importantes while k < len(lista): if not lista[k].isdigit(): caracter = 1 k += 1 #El while recorre toda la lista y si encuentra algún elemento no numérico cambia el valor de carácter a 1 if caracter == 0: while j < len(lista): lista[j] = float(sys.argv[j+1]) j += 1 #Si todos los elementos son números los convierte a variables tipo float listaordenada = sorted(lista) #Ordena la lista i = 0 while i < len(listaordenada): print listaordenada[i] i += 1 #Recorre la lista e imprime cada elemento de la misma #Finaliza el programa lab2_2.py Modifique el programa anterior para agregar una opción que permita elegir si la lista será ordenada de forma ascendente o descendente. Por ejemplo, si se escribe: $ ./ord_lista.py a 54 66 33 77 42 86 45 4 la lista será ordenada ascendentemente. Si se escribe: $ ./ord_lista.py d 54 66 33 77 42 86 45 4 la lista se ordenará de manera descendente. Se muestra a continuación el código implementado: #!/usr/bin/python #La línea 'shebang', le indica a la consola donde se encuentra el intérprete de python. # ­*­ coding: latin­1 ­*­ #Declara la codificación del código fuente de python, como esto se podrán utilizar caracteres como tildes, etc import sys #Importa la librería 'sys' la cual permite utilizar la lista de entradas desde consola. import math #Importa la librería 'math', la cual permite utilizar operaciones como raíces cuadradas if len(sys.argv) == 1: print "Inserte algun elemento" print "Uso: lab2_3 n1 n2 n3 ... nn" sys.exit(1) #Se imprime un error si se llama al programa sin ningún elemento a ordenar, no hay tope superior orden = sys.argv[1] #Define una variable orden, la cual contiene la decisión del tipo de ordenamiento lista = sys.argv[2:] listaordenada = [] #Se define una lista de todos los argumentos que ingresen excepto el nombre del script, y una listaordenada aun en blanco. k=0 j=0 caracter = 0 #Se definen variables importantes while k < len(lista): if not lista[k].isdigit(): caracter = 1 k += 1 #El while recorre toda la lista y si encuentra algún elemento no numérico cambia el valor de carácter a 1 if caracter == 0: while j < len(lista): lista[j] = float(sys.argv[j+2]) j += 1 #Si todos los elementos son números los convierte a variables tipo float listaordenada = sorted(lista) #Define listaordenada como los elementos de lista ordenados ascendentemente i = 0 while i < len(listaordenada): if orden == "a": print listaordenada[i] elif orden == "d": print listaordenada[len(listaordenada) ­ 1 ­ i] else: print "Inserte un ordenamiento valido" i += 1 #Imprime los valores de lista ordenados descente o ascendentemente dependiendo de la elección del usuario, si no es un valor válido se imprime un error. #Finaliza el programa lab2_3.py