Apreneu el flux de control de Python i els bucles per escriure i ajustar scripts de Shell - Part 2


A l'article anterior d'aquesta sèrie de Python vam compartir una breu introducció a Python, el seu shell de línia d'ordres i IDLE. També vam demostrar com realitzar càlculs aritmètics, com emmagatzemar valors en variables i com imprimir aquests valors a la pantalla. Finalment, vam explicar els conceptes de mètodes i propietats en el context de la Programació Orientada a Objectes mitjançant un exemple pràctic.

En aquesta guia parlarem del flux de control (per triar diferents vies d'actuació en funció de la informació introduïda per un usuari, el resultat d'un càlcul o el valor actual d'una variable) i els bucles (per automatitzar tasques repetitives) i després aplicar el que He après fins ara a escriure un script d'intèrpret d'ordres senzill que mostrarà el tipus de sistema operatiu, el nom d'amfitrió, la versió del nucli, la versió i el nom del maquinari de la màquina.

Aquest exemple, tot i que bàsic, ens ajudarà a il·lustrar com podem aprofitar les capacitats de Python OOP per escriure scripts d'intèrpret d'ordres més fàcil que utilitzar eines bash habituals.

En altres paraules, volem anar de

# uname -snrvm

a

o

Es veu bonic, no? Arremanguem-nos les mànigues i fem-ho realitat.

Control de flux en Python

Com hem dit anteriorment, el flux de control ens permet triar diferents resultats en funció d'una condició determinada. La seva implementació més senzilla a Python és una clàusula if/else.

La sintaxi bàsica és:

if condition:
    # action 1
else:
    # action 2

  1. Quan la condició s'avalua com a vertadera, s'executarà el bloc de codi següent (representat per # acció 1. En cas contrari, s'executarà el codi sota else).
  2. Una condició pot ser qualsevol afirmació que es pugui avaluar com a vertader o fals. Per exemple:

1 < 3 # true
firstName == "Gabriel" # true for me, false for anyone not named Gabriel

  1. En el primer exemple vam comparar dos valors per determinar si un és més gran que l'altre.
  2. Al segon exemple vam comparar firstName (una variable) per determinar si, en el punt d'execució actual, el seu valor és idèntic a \Gabriel
  3. La condició i la instrucció else han d'anar seguides de dos punts (:)
  4. El sagnat és important a Python. Les línies amb sagnat idèntic es consideren al mateix bloc de codi.

Tingueu en compte que la instrucció if/else és només una de les moltes eines de flux de control disponibles a Python. L'hem revisat aquí, ja que l'utilitzarem al nostre script més endavant. Podeu obtenir més informació sobre la resta d'eines als documents oficials.

Loops en Python

En poques paraules, un bucle és una seqüència d'instruccions o declaracions que s'executen en ordre sempre que una condició sigui certa, o una vegada per element d'una llista.

El bucle més senzill de Python es representa amb els iteracions del bucle for sobre els elements d'una llista o cadena donada que comença amb el primer element i acaba amb l'últim.

Sintaxi bàsica:

for x in example:
	# do this

Aquest exemple pot ser una llista o una cadena. Si és el primer, la variable anomenada x representa cada element de la llista; si aquest últim, x representa cada caràcter de la cadena:

>>> rockBands = []
>>> rockBands.append("Roxette")
>>> rockBands.append("Guns N' Roses")
>>> rockBands.append("U2")
>>> for x in rockBands:
    	print(x)
or
>>> firstName = "Gabriel"
>>> for x in firstName:
    	print(x)

La sortida dels exemples anteriors es mostra a la imatge següent:

Mòduls Python

Per raons òbvies, hi ha d'haver una manera de desar una seqüència d'instruccions i declaracions de Python en un fitxer que es pugui invocar quan sigui necessari.

Això és precisament el que és un mòdul. En particular, el mòdul OS proporciona una interfície al sistema operatiu subjacent i ens permet realitzar moltes de les operacions que solem fer en un indicador de la línia d'ordres.

Com a tal, incorpora diversos mètodes i propietats que es poden anomenar tal com vam explicar a l'article anterior. Tanmateix, l'hem d'importar (o incloure) al nostre entorn mitjançant la paraula clau d'import:

>>> import os

Imprimim el directori de treball actual:

>>> os.getcwd()

Ara ajuntem tot això (juntament amb els conceptes comentats a l'article anterior) per escriure el guió desitjat.