Naucz się Python Control Flow and Ploops, aby zapisać i dostroić skontlerze - część 2

Naucz się Python Control Flow and Ploops, aby zapisać i dostroić skontlerze - część 2

W poprzednim artykule z tej serii Python podzieliliśmy krótkie wprowadzenie do Pyton, jego skorupa wiersza poleceń i bezczynność.

Wykazaliśmy również, jak wykonywać obliczenia arytmetyczne, jak przechowywać wartości w zmiennych i jak wydrukować te wartości na ekranie. Na koniec wyjaśniliśmy pojęcia metod i właściwości w kontekście programowania obiektowego za pomocą praktycznego przykładu.

W tym przewodniku omówimy przepływ kontroli (aby wybrać różne kursy działania w zależności od informacji wprowadzonych przez użytkownika, wyniku obliczeń lub bieżącej wartości zmiennej) i pętli (w celu zautomatyzowania zadań powtarzających się), a następnie zastosowanie zadań powtarzających się), a następnie zastosować zastosowanie zadań powtarzających się) Czego nauczyliśmy się do tej pory napisać prosty skrypt powłoki, który wyświetli typ systemu operacyjnego, nazwa hosta, wydanie jądra, wersja i nazwa sprzętu maszynowego.

Ten przykład, choć podstawowy, pomoże nam zilustrować, w jaki sposób możemy wykorzystać Python oopMożliwości do pisania skorupy łatwiejsze niż używanie zwykłych narzędzi Bash.

Innymi słowy, chcemy przejść od

# Uname -snrvm 
Sprawdź nazwę hosta Linux

Do

Sprawdź nazwę hosta Linux za pomocą skryptu Python

Lub

Skrypt do sprawdzenia informacji systemowych Linux

Wygląda ładnie, prawda?? Zwińmy rękawy i spraw, aby tak się stało.

Spis treści

1
  • Naucz się przepływu kontroli w Pythonie
  • Naucz pętle w Pythonie
  • Moduły Pythona
  • Skrypt Pythona
      • Streszczenie

Naucz się przepływu kontroli w Pythonie

Jak powiedzieliśmy wcześniej, kontrola przepływu pozwala nam wybrać różne wyniki w zależności od danego warunku. Jego najprostszą wdrożeniem w Python jest Jeśli inaczej klauzula.

Podstawowa składnia to:

Jeśli warunek: # Action 1 Else: # Action 2 
  • Gdy warunek oceni do true, poniższy blok kodu zostanie wykonany (reprezentowany przez # Działanie 1. W przeciwnym razie kod pod innymi zostanie uruchomiony.
  • Warunkiem może być każde stwierdzenie, które może ocenić jako prawdziwe lub fałszywe.

Na przykład:

1 < 3 # true firstName == "Gabriel" # true for me, false for anyone not named Gabriel 
  • W pierwszym przykładzie porównaliśmy dwie wartości, aby ustalić, czy jedno jest większe niż druga.
  • W drugim przykładzie porównaliśmy imię (zmienna) w celu ustalenia, czy w bieżącym punkcie wykonania jej wartość jest identyczna z „Gabriel"
  • Po stwierdzeniu i inne stwierdzenie musi nastąpić okrężnica (:)
  • Wcięcie jest ważne w Pythonie. Linie z identycznym wcięciem są uważane za znajdujące się w tym samym bloku kodu.

Pamiętaj, że Jeśli inaczej Oświadczenie jest tylko jednym z wielu narzędzia do sterowania Dostępne w Python. Sprawdziliśmy go tutaj, ponieważ użyjemy go później w naszym skrypcie. Możesz dowiedzieć się więcej o reszcie narzędzi w oficjalnych dokumentach.

Naucz pętle w Pythonie

Mówiąc najprościej, pętla jest sekwencją instrukcji lub instrukcji, które są wykonywane w kolejności, o ile warunek jest prawdziwy lub raz na element na liście.

Najpopularniejsza pętla w Pythonie jest reprezentowana przez dla pętli który iteruje pozycje z danej listy lub ciąg, który zaczyna się od pierwszego elementu i kończąc na ostatnim.

Podstawowa składnia:

Dla x w przykładzie: # zrób to 

Tutaj przykład może być lista lub ciąg. Jeśli ten pierwszy, wymieniona zmienna X reprezentuje każdy element na liście; Jeśli ten ostatni, X reprezentuje każdy znak w ciągu:

>>> Rockbands = [] >>> Rockbands.Dodatek („Roxette”) >>> Rockbands.Dodatek („Guns N 'Roses”) >>> Rockbands.append („u2”) >>> Dla x w Rockbands: print (x) lub >>> fertName = "Gabriel" >>> dla x w nazwie FirstName: print (x) 

Dane wyjściowe powyższych przykładów pokazano na poniższym obrazku:

Naucz pętle w Pythonie

Moduły Pythona

Z oczywistych powodów musi istnieć sposób na zapisywanie sekwencji instrukcji i stwierdzeń Pythona w pliku, który można wywołać, gdy jest to potrzebne.

Właśnie taki jest moduł. Szczególnie OS Moduł zapewnia interfejs do podstawowego systemu operacyjnego i pozwala nam wykonywać wiele operacji, które zwykle wykonujemy w wierszu wiersza polecenia.

Jako taki, zawiera kilka metod i właściwości, które można wywołać, jak wyjaśniliśmy w poprzednim artykule. Musimy jednak zaimportować (lub uwzględnić) w naszym środowisku za pomocą słowa kluczowego importu:

>>> Importuj system operacyjny 

Wydrukujmy obecny katalog roboczy:

>>> OS.getCwd () 
Naucz się modułów Pythona

Złóżmy to wszystko razem (wraz z koncepcjami omówionymi w poprzednim artykule), aby napisać pożądany skrypt.

Skrypt Pythona

Dobrą praktyką jest rozpoczęcie skryptu z oświadczeniem, które wskazuje na cel skryptu, warunki licencji, na podstawie których został wydany, oraz historię rewizji wymieniającymi wprowadzone zmiany. Chociaż jest to bardziej osobiste preferencje, dodaje profesjonalnego kontaktu z naszą pracą.

Oto skrypt, który wytwarza dane wyjściowe, które pokazaliśmy na górze tego artykułu. Jest mocno skomentowany, abyś mógł zrozumieć, co się dzieje.

Przed przejściem zajmuje to kilka minut. Zwróć uwagę, w jaki sposób używamy struktury if / else, aby ustalić, czy długość każdego podpisu pola jest większa niż wartość samego pola.

Na podstawie wyniku używamy pustych znaków, aby wypełnić przestrzeń między podpisem pola a drugim. Ponadto używamy odpowiedniej liczby kreśnictwa jako separatora między podpisem pola a jego wartością poniżej.

#!/usr/bin/python3 # Zmień powyższą linię na #!/usr/bin/python Jeśli nie masz zainstalowanego Python 3.Py # Cel: Zilustruj możliwości OOP Pythona do pisania skorupek łatwiejszych # Licencja: GPL v3 (http: // www.gnu antylopa.org/licencje/gpl.Html) # Copyright (C) 2016 Gabriel Alejandro Cánepa # Facebook / Skype / G+ / Twitter / Github: Gacanepa # E -mail: Gacanepa (AT) Gmail (DOT) Com # Ten program jest bezpłatnym oprogramowaniem: Możesz je redystrybuować i / lub modyfikować lub zmodyfikować # Jest to pod warunkiem ogólnej licencji publicznej GNU opublikowanej przez # Free Software Foundation, albo wersja 3 licencji, albo # (według opcji) dowolna późniejsza wersja. # Ten program jest dystrybuowany w nadziei, że będzie przydatny, #, ale bez żadnej gwarancji; nawet bez dorozumianej gwarancji # handlowości lub przydatności do określonego celu. Więcej informacji można znaleźć w licencji publicznej # GNU. # Powinieneś otrzymać kopię GNU General Public Licens # wraz z tym programem. Jeśli nie, patrz . # Wersja Historia # Data Wersja Autor Zmień Opis # ---------- ------- -------------- # 2016-05-28 1 1.0 Gabriel Cánepa Wersja początkowa # Importuj moduł OS Importuj system OS #.uname () do zmiennej SystemInfo # OS.uname () zwraca 5-strunowy krotek (sysname, nodename, wydanie, wersja, maszyna) # Dokumentacja: https: // dokumenty.pyton.org/3.2/Library/OS.html#module-oS SystemInfo = OS.uname () # Jest to stała tablica z żądanymi podpisami w nagłówkach wyjściowych skryptu = [„System operacyjny”, „nazwa hosta”, „wydanie”, „wersja”, „maszyna”] # Wartość początkowa zmiennej indeksu zmiennej indeksu. Służy do zdefiniowania indeksu # zarówno systeminfo, jak i nagłówków na każdym etapie iteracji. indeks = 0 # Wartość początkowa zmiennej podpisu. caption = "" # Wartość początkowa wartości zmiennej wartości = "" # Wartość początkowa separatorów zmiennych separatorów = "" # początek pętli dla elementu w systemie < len(headers[index]): # A string containing dashes to the length of item[index] or headers[index] # To repeat a character(s), enclose it within quotes followed # by the star sign (*) and the desired number of times. separators = separators + "-" * len(headers[index]) + " " caption = caption + headers[index] + " " values = values + systemInfo[index] + " " * (len(headers[index]) - len(item)) + " " else: separators = separators + "-" * len(item) + " " caption = caption + headers[index] + " " * (len(item) - len(headers[index]) + 1) values = values + item + " " # Increment the value of index by 1 index = index + 1 # End of the loop # Print the variable named caption converted to uppercase print(caption.upper()) # Print separators print(separators) # Print values (items in systemInfo) print(values) # INSTRUCTIONS: # 1) Save the script as uname.py (or another name of your choosing) and give it execute permissions: # chmod +x uname.py # 2) Execute it: # ./uname.py 

Po zapisaniu powyższego skryptu do pliku, podaj mu uprawnienia i uruchom go, jak wskazano na dole kodu:

# chmod +x uname.py # ./Uname.py 

Jeśli otrzymasz następujący błąd podczas próby wykonania skryptu:

-grzmotnąć: ./Uname.PY:/usr/bin/Python3: zły interpreter: brak takiego pliku lub katalogu 

To znaczy, że nie masz Python 3 zainstalowane. W takim przypadku możesz zainstalować pakiet lub wymienić linię interpretera (Zwróć szczególną uwagę i bądź bardzo ostrożny, jeśli wykonasz kroki w celu aktualizacji symbolicznych linków do binarnych Python, jak opisano w poprzednim artykule):

#!/usr/bin/python3 

z

#!/usr/bin/python 

co spowoduje zainstalowaną wersję Python 2 Zamiast tego wykonać skrypt.

Notatka: Ten skrypt został pomyślnie przetestowany oba w Python 2.X I 3.X.

Chociaż nieco podstawowe, możesz myśleć o tym skrypcie jako module Pythona. Oznacza to, że możesz otworzyć go na biegu jałowym (Plik → Otwórz… → Wybierz Plik):

Otwórz Python w biegu jałowym

Nowe okno otworzy się z zawartością pliku. Następnie idź do Uruchom → Uruchom moduł (lub po prostu naciśnij F5). Wyjście skryptu zostanie pokazane w oryginalnej powładzie:

Uruchom skrypt Python

Jeśli chcesz uzyskać te same wyniki ze skryptem napisanym wyłącznie w Grzmotnąć, Musisz użyć kombinacji AWK, SED i uciekać się do złożonych metod przechowywania i pobierania przedmiotów na liście (nie wspominając o użyciu TR do konwersji małych liter na górną).

Ponadto, Pyton Zapewnia przenośność, ponieważ wszystkie systemy Linux wysyłają co najmniej jedną wersję Python (albo 2.X Lub 3.X, czasami oba). Jeśli musisz polegać na powłoce, aby osiągnąć ten sam cel, musisz napisać różne wersje skryptu na podstawie powłoki.

To pokazuje, że funkcje programowania zorientowane na obiekt mogą stać się silnymi sojusznikami administratorów systemu.

Notatka: Możesz znaleźć ten skrypt Python (i inne) w jednym z moich repozytoriów Github.

Streszczenie

W tym artykule dokonaliśmy przeglądu pojęć przepływu kontroli, pętli/iteracji i modułów w Pythonie. Pokazaliśmy, jak wykorzystać metody i właściwości OOP w Pythonie, aby uprościć skromne skontlerze.

Czy masz jakieś inne pomysły, które chcesz przetestować? Śmiało i napisz własne skrypty Pythona i daj nam znać, jeśli masz jakieś pytania. Nie wahaj się upuścić nam linii za pomocą poniższego formularza komentarza, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.