paso de argumentos por la línea de comandos

Anuncio
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
Descargar