Salta el contingut
 

Exercicis: Arguments de línia de comandes

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Objectius

En aquests exercicis treballarem:

  • Definició d'arguments posicionals i opcionals.
  • Validació i processament d'arguments.
  • Ús de diferents tipus d'arguments (cadenes, enters, booleans, llistes).
  • Creació de missatges d'ajuda personalitzats.

Els exercicis marcats amb ✅ seran corregits a classe.

Estructura del projecte

Tots els exercicis han de complir amb la següent estructura:

  • Cada exercici ha d'anar dins del directori corresponent.
  • El nom del fitxer ha de coincidir amb el títol de l'exercici.
  • El format de l'eixida del programa ha de ser consistent amb el format demanat.
  • La lògica d'aplicació ha d'estar organitzada en classes i mètodes; és recomanable afegir docstrings.

Exercicis

ud5/args

hello.py

Crea un programa que accepte un argument posicional name i imprimisca per pantalla el missatge Hello, <name>!. Si no es proporciona cap nom, el programa ha d'imprimir Hello, World!.

Exemple d'ús
$ python hello.py Alice
Hello, Alice!
$ python hello.py
Hello, World!

numbers-in-range.py

Crea un programa que accepte dos arguments posicionals: un nombre enter start i un nombre enter end. El programa ha d'imprimir tots els nombres enters des de start fins a end (inclosos) en una sola línia, separats per espais.

Exemple d'ús
$ python numbers-in-range.py 5 10
5 6 7 8 9 10
Ampliació: -s/--step

Modifica el programa anterior perquè accepte un argument opcional -s/--step que especifique el pas entre els nombres. Si no es proporciona aquest argument, el pas per defecte serà 1.

$ python numbers-in-range.py 5 15 -s 2
5 7 9 11 13 15
Ampliació: --exclude-end

Modifica el programa anterior perquè accepte un argument opcional --exclude-end, que, si es proporciona, excloga el nombre end de la llista impresa.

$ python numbers-in-range.py 5 10 --exclude-end
5 6 7 8 9
Ampliació: ordre dels paràmetres

Modifica el programa anterior perquè siga capaç de mostrar els nombres en un rang on el valor inicial és més gran que el valor final.

$ python numbers-in-range.py 10 5
10 9 8 7 6 5

echo.py

Crea un programa que accepte multiples arguments posicionals i els imprimisca per pantalla en l'ordre rebut.

Exemple d'ús
$ python echo.py Hola món des de Python
Hola món des de Python
Ampliació: -r/--reverse

Modifica el programa anterior perquè accepte un argument opcional -r/--reverse. Si aquest argument es proporciona, els arguments s'han d'imprimir en ordre invers.

$ python echo.py -r Hola món des de Python
Python de des món Hola
Ampliació: -u/--uppercase i -l/--lowercase

Modifica el programa anterior perquè accepte dos arguments opcionals: -u/--uppercase per imprimir els arguments en majúscules i -l/--lowercase per imprimir-los en minúscules.

$ python echo.py -u Hola món
HOLA MÓN

$ python echo.py -l Hola MÓN
hola món

Ampliació addicional: Els dos arguments no poden ser utilitzats al mateix temps ( mutually_exclusive_group).

tr.py

Crea un programa semblant a l'ordre tr de Linux.

El programa:

  • Ha d'acceptar dos arguments posicionals: a i b.
  • Ha de llegir text des de l'entrada estàndard i substituir cada ocurrència del caràcter a pel caràcter b.
  • El resultat s'ha d'imprimir a l'eixida estàndard.
Exemple d'ús
$ echo "casa" | python tr.py a e
cese

wordcount.py

Crea un programa semblant a l'ordre wc de Linux.

El comportament del programa ha de ser el següent:

  • Ha d'acceptar un argument opcional -w/--words per comptar el nombre de paraules (comportament per defecte).
  • Ha d'acceptar un argument opcional -l/--new-lines per comptar el nombre de línies.
  • Ha d'acceptar un argument opcional -c/--characters per comptar el nombre de caràcters.
  • Ha d'acceptar un argument opcional -v/--verbose per mostrar un missatge descriptiu juntament amb el nombre comptat.
Exemple d'ús
$ echo -e "Hola món\nAixò és Python" | python wordcount.py -w -v
Paraules: 5

$ echo -e "Hola món\nAixò és Python" | python wordcount.py -l
2

$ echo -e "Hola món\nAixò és Python" | python wordcount.py -c -v
Caràcters: 24

$ echo -e "Hola món\nAixò és Python" | python wordcount.py -w -c
5
24
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.