Python dla inżynierów

Python dla inżynierów: #1 Wprowadzenie i Liczby

Co robisz, jeśli masz do obliczenia coś nietypowego? Albo coś, czego nie da się obliczyć komercyjnym oprogramowaniem, którego używasz na co dzień? Jakich wtedy narzędzi używasz do swoich obliczeń? Liczysz ręcznie, Excel, a może tworzysz własne procedury obliczeniowe programując w jakimś języku?

Ja na co dzień używam w takich przypadkach Pythona. Towarzyszy mi on w mojej codziennej pracy od 2013 r. i coraz bardziej go lubię (z roku na rok jest też coraz popularniejszy).

Pokażę Ci, że programowanie własnych algorytmów i procedur obliczeniowych jest łatwe i pomaga w codziennej pracy projektowej. A z czasem, kiedy stworzysz już kilka algorytmów, oszczędzisz godziny mozolnej pracy.

W tym cyklu postów pokażę Ci jak działa Python i do czego możnesz go wykorzystać w projektowaniu. Zacznę od tematów podstawowych i będę przechodzić do tematów coraz bardziej zaawansowanych.

Dla kogo jest ten kurs? Lekcje Pythona piszę przede wszystkim dla:

  • początkujących, którzy jeszcze nigdy nie programowali,
  • osób, które mają pewne doświadczenie w programowaniu w innych językach i chcą zacząć programować w Pythonie,
  • osób, które znają Pythona na poziomie średnio zaawansowanym i chcą poznać kolejne bardziej zaawansowane tematy.

Jeśli masz już większe doświadczenie w programowaniu w Pythonie, to możesz śmiało opuścić początkowe lekcje i przeglądać treści według tego, co Cię zainteresuje. Uczymy się przecież przez całe życie, prawda? :)

Dziś oprócz krótkiego wprowadzenia do Pythona pokażę jak wykonywać podstawowe działania na liczbach. Obiecuję, że po tej lekcji będziesz w stanie pisać proste procedury obliczeniowe na swój użytek. Poznasz następujące zagadnienia:

  1. Krótkie wprowadzenie do Pythona,
  2. Typy liczb w Pythonie,
  3. Operacje arytmetyczne,
  4. Definiowanie zmiennych,
  5. Przykład obliczeniowy (Eurokod 2).

1. Wprowadzenie do Pythona

Na początek krótkie i konieczne wprowadzenie.

Czym jest Python? Python to oczywiście język programowania i – co ważne – wysokiego poziomu (czytaj: łatwy w rozumieniu kodu przez człowieka). Jego „ideą przewodnią jest czytelność i klarowność kodu źródłowego. Jego składnia cechuje się przejrzystością i zwięzłością” (źródło: Wikipedia). Więcej możecie znaleźć w sieci, m.in. python.org.

Uruchamianie i obsługa Pythona

Używam Pythona 3 na Windowsie i na tym systemie możesz pracować z Pythonem na kilka sposobów:

Sposób programowania i narzędzia to kwestia upodobań. Każdy powinien wybrać to, co mu najbardziej pasuje. Ja osobiście używam i polecam Pythona w pakiecie Anaconda. Paczka ta zawiera wszystkie biblioteki Pythona, które będą przydatne w naszych obliczeniach. Poza tym jest łatwa w instalacji. Do pisania i uruchamiania kodu używam edytora Sublime – jest łatwy w obsłudze i zupełnie wystarczający na potrzeby tego kursu. Instrukcje instalacji znajdziesz pod linkami:

Uwaga techniczna: Kod, który pokazuję tutaj, będzie pisany w Pythonie wersji 3. Jest to wersja Pythona, która jest obecnie najmocniej rozwijana.

2. Typy liczb w Pythonie

Zacznę od podstawowych obiektów Pythona, jakimi są liczby i od działań na nich.

Python wyróżnia kilka „typów” liczb. Najczęściej używanymi typami są liczby całkowite (w Pythonie oznaczane są jako int, integer) i zmiennoprzecinkowe (tzw. float, floating-point number).

Liczby typu int to liczby całkowite (sic!), „okrągłe”, czyli bez części dziesiętnych. (Od razu wyjaśniam, że nie chcę tłumaczyć tutaj podstaw matematyki, chodzi mi tylko o pokazanie jak Python rozumie liczby.) I tak 2 i -2 są przykładami liczb całkowitych typu int.

Liczby zmiennoprzecinkowe w Pythonie float są to – mówiąc najprościej – liczby zawierające znak dziesiętny (dla Pythona jest to . kropka) albo używające wyrażenia potęgowego (e). Dla przykładu 2.0 i -2.1 są liczbami zmiennoprzecinkowymi, czyli float. Wyrażenie 3e2 (3 razy 10 do potęgi 2) jest również przykładem liczby zmiennoprzecinkowej w Pythonie.

Tabela poniżej przedstawia dwa podstawowe typy liczb, które będziemy używać w naszych obliczeniach.

Przykład Typ liczby
1, 2, -5, 100 int (liczba całkowita)
1.0, -0.5, 100.2, 2e2, 3E2 float (liczba zmiennoprzecinkowa)

3. Operacje arytmetyczne

Zacznijmy coś liczyć. Na początek wystartuję z podstawowymi operacjami arytmetycznymi. Zobacz, że notacja działań na liczbach w Pythonie jest bardzo podobna do typowych działań matematycznych, jakie znasz. Jest to wielka zaleta Pythona w odróżnieniu od wielu innych języków programowania. Przejdźmy przez działania arytmetyczne krok po kroku.

Da nam oczywiście wynik 3.

Dwie uwagi techniczne:

  1. Zauważ, że w kodzie powyżej użyłem znaku # (hash). Znak # pozwala wprowadzić do kodu jednolinijkowe komentarze, które zwiększają jego czytelność. Są to linie, których Python „nie widzi” (pomija je). Więcej powiem o tym przy innej okazji.
  2. Jeśli używasz czystego Pythona np. w wierszu poleceń, to tak zapisana operacja 1+2 zwróci wynik obliczeń bezpośrednio po uruchomieniu kodu. Jeśli natomiast używasz edytora tekstowego (w moim przypadku Sublime), to po uruchomieniu tego kodu, Python nie wyświetli wam nic. Python wykonał co prawda obliczenia, tylko wynik nie został jeszcze wyświetlony – służy do tego opcja print(). Zatem, żeby wyświetlić wynik działania w edytorze kodu, nasze działanie należy zapisać jako print(1+2) i następnie wykonać kod (w Sublime jest to komenda Ctrl+B lub menu: Tools > Build).

Zwróci nam wynik 1.

= 4

= 1.5

Uwaga do Pythona 2

Wynikiem tego dzielenia będzie… 1

Co się tutaj stało? Poprzednim razem dzielenie 3/2 dało nam 1.5, a nie 1! Tutaj pojawia się różnica pomiędzy Pythonem 2 i 3. Rozróżnienie typu liczby int czy float ma szczególne znaczenie w Pythonie 2. W tej wersji Pythona mamy do czynienia z „klasycznym” dzieleniem liczb całkowitych. Oznacza to, że część dziesiętna z dzielenia jest odrzucana. Działając na liczbach całkowitych, wynikiem tego działania będzie liczba całkowita.

Python 3 działania już inaczej. Znak dzielenia / wykonuje „prawdziwe” dzielenie. Dlatego wynikiem działania 3/2 jest 1.5.

Jeżeli korzystasz z Pythona 2, to są dwie metody na to, żeby uniknąć powyższego błędu:

= 1.5

= 1.5

= 1.5

O tzw. funkcjach i innych bardziej zaawansowanych opcjach będę szczegółowo pisał w kolejnych lekcjach. Tutaj ważne jest, abyś poznał jak działają tylko niektóre z nich.

Działania arytmetyczne – ciąg dalszy

Wróćmy do działań arytmetycznych.

= 8

= 8

= 300 (czyli 3 * 10**2)

= 2

= 2

Istnieje też konkretna funkcja do otrzymania pierwiastka kwadratowego z liczby sqrt(), ale z racji jej specyfiki, pokażę ją później przy omawianiu funkcji w Pythonie.

= 103

Kolejność operacji jest zgodną z tradycyjną notacją matematyczną. Np. dodawanie i odejmowanie mają priorytet niższy niż operacje mnożenia i dzielenia, z kolei te mają priorytet niższy od potęgowania. Przy tym samym priorytecie, działania wykonywane są w kolejności czytania tekstu „od lewej do prawej”.

= 132

= 20

Jeśli potrzebujesz wartość bezwzględną z liczby, możesz ją wyznaczyć korzystając z kombinacji funkcji potęgowej, np. (x**2)**0.5. Python ma też do tego osobną funkcję:

= 2

= 8

= -10

Kolejną przydatną funkcją dla liczb jest zaokrąglenie. Wynikiem tej funkcji jest liczba zaokrąglona do zadanego miejsca po przecinku (domyślnie do zerowego miejsca dziesiętnego).

= 3

= 3.14

= 123.5

= 120.0

= 100.0

4. Definiowanie zmiennych

Jak dotąd poznałeś jak wykorzystać Pythona do działań na liczbach jako zwykły kalkulator. W Pythonie możesz również przypisać liczbom i innym obiektom nazwy. Taki obiekt z przypisaną do niego nazwą określamy jako zmienną. Jest to opcja bardzo pomocna zwłaszcza w algorytmach obliczeniowych, gdzie zamiast wpisywania za każdym razem np. wartości liczb, operujesz po prostu na zmiennych. Wykorzystując nazwy zmiennych możesz bardzo sprawnie śledzić przebieg obliczeń naszego kodu. Zmniejsza to znacznie ryzyko błędów w kodzie. Przypisanie nazwy do zmiennej wykonujemy za pomocą pojedynczego znaku = (równa się). Zobacz to na kilku przykładach:

Teraz, jeśli wykonam ten kod, Python zwróci liczbę 5.

= 10

Zmienne w Pythonie mają to do siebie, że możesz im w każdym momencie przypisać nową wartość.

Jeśli wywołasz x, to dostaniesz wartość 15, a nie – jak wcześniej – 5.

Możesz również użyć zmiennej do zmiany jej samej. Jest to bardzo ważna funkcja w obliczeniach numerycznych (nazywa się rekurencją). Pozwala ona na odwoływanie się zmiennej do niej samej (będzie o tym trochę później). Spójrz na przykład poniżej, żeby zrozumieć o co mi chodzi:

Teraz x wynosi 30.

Do zmiany wartości zmiennej x możesz wykorzystać również inne poznane operatory matematyczne, np. x*x, x/x, x**x etc.

Zasady nazywania zmiennych

Zmienne w Pythonie możesz nazywać dowolnie. Jest jednak kilka zasad, których musisz przestrzegać, inaczej Python zwróci nam błąd przy uruchomieniu obliczeń. Należy przestrzegać następujących zasad:

  • Nazwy nie mogą zaczynać się od liczby.
  • Nie można używać spacji w nazwie, zamiast tego użyj _ (podkreślenia).
  • Nie można używać następujących znaków: ' " , < > / ? | \ ( ) ! @ # $ % ^ & * ~ - +
  • Zaleca się, aby nazwy pisane były małymi literami (por. najlepsze praktyki PEP8).

Co do ostatniej uwagi, to małe rozróżnienie. Czasem potrzebujemy użyć nie tyle zmiennej, co stałej, czyli obiektu, któremu przypisujemy niezmienną wartość. Wtedy tworzymy nazwę stałej WIELKIMI_LITERAMI i z uwzględnieniem pozostałych reguł (np. BETON_WSP_POISSONA = 0.20).

5. Przykład obliczeniowy (Eurokod 2)

W każdym z tekstów dotyczącym nauki programowania w Pythonie postaram się dać Ci konkretny przykład obliczeniowy, który będzie odpowiadać treści lekcji i który będzie można wykorzystać bezpośrednio w projektowaniu. Zacznę od przykładów prostszych (jak ten tutaj) i będę przechodzić do coraz bardziej zaawansowanych.

Napisz teraz krótką procedurę obliczeniową dla parametrów wytrzymałościowych betonu. Załóżmy, że chcemy obliczyć moduł sprężystości betonu Ecm wg Eurokodu 2. Znamy klasę betonu (np. C30/37) i przez to możemy odczytać wartość wytrzymałości betonu na ściskanie (fck = 30 MPa).

Po wywołaniu tej procedury w Pythonie wynikiem naszych obliczeń będzie Ecm = 32.8 GPa, co odpowiada wartości odczytanej z tab. 3.1 EC2.

Tutaj celowo pominąłem temat jednostek w obliczeniach (MPa etc.). Bez obaw, powiem o tym później i pokażę mój sposób na obliczenia z jednostkami SI.


OK, to czego się nauczyliśmy?

Po krótkim wprowadzeniu do Pythona poznałeś typy liczb, dalej nauczyłeś się wykonywać działania arytmetyczne i obliczenia. Umiesz nazywać zmienne i przypisywać im wartości, umiesz też wykonywać obliczenia na zmiennych. Za pomocą poznanych możliwości potrafisz tworzyć proste procedury obliczeniowe.

Możesz ściągnąć spakowany plik .py z zapisanym kodem, który pokazałem w tym wpisie.

W następnym poście zajmiemy się obiektami, które określamy jako „Napisy” (dosłownie z ang. Strings)!


Wpisy z cyklu „Python dla inżynierów„:

  1. Wprowadzenie do Pythona i Liczby
  2. Napisy (Strings)
  3. Listy(**

W drugiej lekcji „Python dla inżynierów” nauczę Cię jak tworzyć napisy w Pythonie i jak operować na nich. Potrafisz już co prawda pisać proste procedury obliczeniowe, ale jak wykorzystać wyniki z Pythona do Twoich projektów? „Gołe” wyniki nie przydadzą się na wiele. Jak zatem pokazać wyniki tych obliczeń? Jak wprowadzić do algorytmów Pythona napisy i jak je później wyświetlić? Tego nauczysz się z tej lekcji!

Aby wykorzystać w projekcie stworzone przez Ciebie w Pythonie algorytmy obliczeniowe, potrzebujesz odpowiednio sformatowanego tekstu, który będziesz mógł dowolnie zmieniać i następnie wklejać tam gdzie chcesz. Nauczę Cię jak radzić sobie z napisami w Pythonie, ponieważ jest to bardzo przydatne! Nauczę Cię też jak tworzyć własne raporty obliczeniowe do wykorzystania bezpośrednio w Twoich obliczeniach statycznych.

Dzisiaj nauczę Cię następujących operacji na napisach (ang. strings):

  1. Tworzenie napisów
  2. Wyświetlanie napisów
  3. Podstawowe operacje na napisach
  4. Właściwości napisów
  5. Metody wbudowane napisów
  6. Formatowanie napisów
  7. Przykład zastosowania napisów: Raport z obliczeń

1. Tworzenie napisów

Napisy w Pythonie to ciąg znaków, które służą do przechowywania informacji (danych) tekstowych. Ciąg ten ma ściśle określoną kolejność znaków (sekwencja znaków). Np. napis tekst Python widzi jako zbiór liter o konkretnej kolejności. Sekwencyjność w Pythonie ma duże znaczenie – powiem o tym więcej za chwilę.

Bardzo często ciągi znaków w Pythonie określa się zamiennie jako napis, string (wersja angielska) lub łańcuch znaków. W tej lekcji będę używać zamienne tych nazw.

Napisy (Strings) w Pythonie definiuje się za pomocą apostrofu ' umieszczonego na początku i na końcu ciągu znaków. Może to być:

Te dwa sposoby zapisu napisów (za pomocą apostrofu '...' lub cudzysłowu "...") dają taki sam efekt końcowy. Ważne jest, aby zaczynać i kończyć napisy konsekwentnie tym samym znakiem.

Po wywołaniu tego tekstu Python zwróci błąd tego typu:

Powodem tego błędu jest to, że tym drugim apostrofem kończę mój napis, więc słowo uważać jest już poza napisem. Jeśli potrzebujesz użyć w tekście apostrofu lub cudzysłowu (np. pisząc po angielsku I'm lub cytując "kogoś"), to użyj kombinacji tych dwóch, czyli ' i " do stworzenia takiego tekstu. Przykład:

2. Wyświetlanie napisów (drukowanie)

Napisy możesz wyświetlić (wydrukować) za pomocą funkcji print(). Pamiętasz? Użyłem tej funkcji już w lekcji o liczbach.

Wywołanie tej linijki kodu zwróci nam ciąg znaków Python dla inżynierów.

Napisy są z reguły jednowierszowe. Jeśli jednak masz taką potrzebę, to możesz tworzyć napisy wielowierszowe. Tworzysz je dodając na początku i końcu ciągu znaków potrójne apostrofy '''...''' lub potrójne cudzysłowy """...""".

Wynikiem tego będzie:

Drugi sposób:

Po wywołaniu dostaniesz taki ciąg znaków:

Jeśli chcesz wyświetlić jednocześnie kilka napisów, to wystarczy je wypisać rozdzielając przecinkami:

Wynikiem będzie: a b c. Poszczególne napisy zostaną połączone i rozdzielane domyślnie pojedynczą spacją (white space).

A co jeśli chcemy sami zdecydować jaki znak będzie rozdzielał poszczególne napisy? W tym celu na końcu funkcji dodajemy separator sep='[Twój znak]':

Python wyświetli to jako:

Polskie znaki w skryptach Pythona

Interpreter Pythona przyjmuje domyślnie dla plików .py kodowanie ASCII. Jeżeli chcesz stosować polskie znaki (ą, ę, ć etc.), to powinieneś na początku kodu podać odpowiednie kodowanie. Ja zalecam kodowanie Unikod UTF-8. ASCII jest z nim w pełni kompatybilne i zawiera dodatkowo znaki specjalne wszystkich języków. Po zapisaniu pliku z tym kodowaniem należy dodać na początku pliku Pythona: #-*-coding: utf-8-*-. Ta informacja pozwala zorientować się jakie kodowanie przyjąłeś w Twoim pliku .py.

3. Podstawowe operacje na napisach

Napis jako zmienna

Wynikiem będzie abc.

Długość napisów

Przydatną funkcją w napisach jest funkcja len(). Służy ona do sprawdzenia długości łańcucha znaków:

Funkcja len() zwróci nam, że to zdanie ma 24 znaki.

Operator indeksowania

Napisy, jak wspomniałem na początku, to łańcuchy znaków o określonej kolejności. Oznacza to, że Python może używać indeksów do wywołania poszczególnych znaków lub części danego łańcucha.

Do wywołania pojedynczego znaku w danym napisie, któremu odpowiada wybrany przez nas indeks, używamy nawiasów kwadratowych [] umieszczonych zaraz za tym napisem:

Po wywołaniu tego kodu Python zwróci nam znak P.

Zwróć uwagę, że indeksowanie w Pythonie zaczyna się od liczby 0. Zatem pierwszy znak w łańcuchu ma przypisany indeks 0, drugi – 1, trzeci – 2 itd.

Wynikiem będzie:

Jeśli natomiast chcesz wyświetlić określony fragment łańcucha znaków, to operator indeksowania ma postać nazwa_zmiennej[od:do]. Przykład:

W efekcie dostaniemy:

Możesz również użyć ujemnych wartości indeksów:

Python zwróci tutaj:

Python pozwala również na wyświetlenie fragmentu łańcucha z zadanym krokiem (skok, co który znak ma być wyświetlony).

Wynikiem będzie odpowiednio:

4. Właściwości napisów

Modyfikacja napisów

Podobnie jak w innych językach (np. C#, Java) napisy w Pythonie są niemodyfikowalne (immutable), tj. po stworzeniu napisu nie można zmieniać lub zastępować w nim poszczególnych znaków. Zobaczmy to na naszym przykładzie str = 'Python dla inżynierów':

Po wywołaniu tej linii dostaniemy błąd:

Zwróć uwagę, że Python pokazuje bezpośrednio czego nie możesz zrobić – w tym wypadku nie możesz zmienić przypisania dla wybranego elementu.

Ale co możesz zrobić, to łączyć ze sobą napisy!

Łączenie napisów

Dostaniemy tutaj abc dodaj mnie.

Zauważ, że możesz też nadpisywać napisy (przypisać im nową wartość w miejsce starej). Przykład:

Wynikiem będzie abc dodaj mnie.

A co jeśli chcemy połączyć ze sobą tekst i liczbę?

Niestety, Python wyrzuci błąd:

Python nie pozwala na łączenie dwóch różnych typów obiektów jak str ('abc = ') i np. int (123). Rozwiązaniem tego problemu jest zamiana liczby na ciąg znaków za pomocą funkcji str() lub repr():

Python zwróci nam wtedy 'abc = 123'

Powielanie napisów

Python zwróci ciąg znaków abcabcabcabcabcabcabcabcabcabc.

Zauważ, że nie jest to typowe mnożenie, jak w przypadku liczb, tylko powielanie (powtórzenie). Różnica jest taka, że liczba powieleń musi być dodatnią liczbą całkowitą typu int.

Python zwróci wtedy błąd:

Python wyrzuci błąd:

Uwaga: Na pewno zwróciłeś uwagę na różnicę pomiędzy operacjami na napisach i na liczbach? Żeby rozwiać wszelkie wątpliwości weźmy dwa proste przykłady:

  • Dodawanie '2' + '2' nie da w wyniku liczby 4 tylko string '22',
  • podobnie mnożenie 4 * '2' nie da wyniku 8, tylko '2222'.

Widzisz teraz różnicę?

5. Metody wbudowane

Obiekty w Pythonie mają zwykle tzw. metody wbudowane (built-in methods). Metody, mówiąc najprościej, są to funkcje zaszyte w danym obiekcie (będę o tym mówił w kolejnych lekcjach), które mogą wykonywać polecenia na nich samych. Nie martw się jeśli nie wszystko jest tutaj zrozumiałe. Zajmiemy się tym później i nauczę Cię tworzenia własnych obiektów i funkcji.

Aby wywołać konkretną metodę trzeba po nazwie obiektu postawić kropkę . i następnie podać nazwę metody. Zasada jest taka: obiekt.metoda(parametr). Zerknij poniżej na kilka przykładów użycia metod dla stringów.

Formatowanie napisów

Dostaniemy z tego odpowiednio:

Przeszukiwanie napisów

Powyższe dwie metody zwrócą nam:

Jeśli chcemy dowiedzieć się tylko czy dany znak lub ciąg znaków występuje w łańcuchu, najlepiej wykorzystać do tego polecenie in:

W wyniku powyżej otrzymaliśmy wartości: True dla 'Python' (tak, 'Python' występuje w str) oraz False dla 'Pascal' (nie, 'Pascal' nie występuje w str).

Inne przydatne metody:

W wyniku dostaniemy:

Uwaga: Wielkość liter w Pythonie ma znaczenie! Spójrz na przykład powyżej. Dla wyrażenia str.count('p') Python zwrócił wartość 0, ponieważ w str nie występuję znak małe p.

Wynikiem będzie napis P.thon dla inż.nierów. Metoda ta pozwala na zastępowanie znaków w napisie. Jednak, jak powiedziałem wyżej, sam str pozostaje bez zmian (po wywołaniu print(str) dostaniemy niezmieniony napis).

Dzielenie / łączenie napisów

Za pomocą metody split() otrzymujemy listę znaków wydzieloną separatorem. Powstała lista nie będzie zawierać znaku separatora (odpowiednio w przykładzie: znak spacji i y).

Nie przejmuj się jeśli nie wiesz jeszcze co to listy. Omówię je w następnych lekcjach. Tutaj wspominam o nich jedynie jako wynik działania funkcji.

Wynikiem działania join() będzie:

Metody wbudowane są bardzo pomocne w szybkim operowaniu na obiektach. Nie trzeba tracić czasu na tworzenie nowych funkcji, mamy je już wbudowane. Więcej na temat metod wbudowanych w stringach możesz znaleźć tutaj.

6. Formatowanie napisów

Przechodzimy teraz do, moim zdaniem, najciekawszej części tej lekcji – formatowania napisów.

Jeśli wykonuję jakieś obliczenia za pomocą algorytmów napisanych w Pythonie, to zawsze przychodzi etap wyświetlania wyników obliczeń. A dokładnie chodzi o sensowne sformatowanie wyników, żeby można było je wykorzystać dalej.

To, co daje nam Python to to, że możemy niemal dowolnie komponować dane i wyniki wg własnych potrzeb i upodobań. Pokażę Wam kilka przydatnych opcji.

Weźmy prosty przykład.

Wynikiem będzie tekst Stolicą kraju Tanzania jest Dodoma. Populacja kraju: 53950935 mieszkańców.

Wygląda nienajgorzej, prawda? Ale można też się pogubić z tymi znakami jak + itp. I jeszcze pilnowanie tych spacji… A może by zrobić to tak:

Formatowanie napisów za pomocą %

Wynik jest identyczny: Stolicą kraju Tanzania jest Dodoma. Populacja kraju: 53950935 mieszkańców.

Prawda, że lepiej? Taki sposób odwołania do zmiennych za pomocą % jest dużo łatwiejszy, czytelniejszy i mniej podatny na błędy. Za pomocą % możemy w Pythonie odwoływać się do m.in. następujących typów obiektów:

  • %s – napis, łańcuch znaków,
  • %d – liczba całkowita,
  • %f – liczba rzeczywista, zmiennoprzecinkowa,
  • %e – liczba rzeczywista w notacji naukowej.

Dzięki odwołaniom możemy też określać dokładność wyświetlanych zmiennych. Przykład:

Wynik: Najpopularniejsze stałe matematyczne to pi = 3.14 i e = 2.718.

Formatowanie napisów za pomocą metody format()

Jest jeszcze inny sposób formatowania napisów – metoda format(). Wygląda podobnie do odwołania za pomocą % z drobnymi różnicami. Sprawdźcie sami na przykładzie ze stolicą:

Wszystkie trzy funkcje dadzą ten sam wynik: Stolicą kraju Tanzania jest Dodoma. Populacja kraju: 53950935 mieszkańców..

Więcej ciekawych przykładów z wykorzystaniem metody format() znajdziecie tutaj.

7. Przykład zastosowania stringów: Raport z obliczeń

W ostatniej lekcji nauczyłeś się programować proste procedury obliczeniowe oparte o działania arytmetyczne. Tutaj też Ci się to przyda. W tym przykładzie nauczę Cię jak wyświetlać przykładowe wyniki obliczeń, żebyś mógł wykorzystać to bezpośrednio w Twoich obliczeniach.

Napiszemy krótką procedurę do obliczania naprężeń normalnych i sformatujemy dane i wyniki tak, żeby powstał z tego raport z obliczeń. Wykorzystując print() i inne poznane funkcje możesz dowolnie formatować dane i wyniki obliczeń, które chcesz wyświetlić.

W efekcie dostaniemy następujący wydruk:

Tak przygotowaną notatkę obliczeniową możesz wykorzystać bezpośrednio wklejając ją do Twojego projektu. Metoda jest prosta i pozwala na radzenie sobie z problemami, których nie możesz ogarnąć typowym oprogramowaniem.

Sposób formatowania notatek jest oczywiście dowolny. Można je rozbudowywać, pokazywać lub ukrywać wybrane przez Ciebie informacje. Pokazałem tutaj prosty przykład, w którym wykorzystałem też inne przydatne opcje tekstu (np. rjust() – wyrównywanie do prawej). Przykład ten oczywiście nie rozwiązuje wszystkich problemów (np. jednostki SI, grafiki, zapis do PDF etc.), ale cierpliwości :) Będzie niedługo o tym więcej. Póki co eksperymentuj i zobacz jak to działa z innymi funkcjami!

Podsumowanie

A teraz krótkie podsumowanie. W tej lekcji nauczyłeś się tworzyć i wyświetlać napisy w Pythonie. Poznałeś właściwości napisów (jak len(), indeksowanie znaków etc.). Umiesz operować na napisach – łączyć je, powielać, przeszukiwać etc. Wiesz też jak formatować napisy, żeby wyglądały tak, jak tego chcesz. Potrafisz już tworzyć proste i szybkie raporty z Twoich obliczeń.

Możesz też ściągnąć spakowany plik .py z kodem, który pokazałem w tej lekcji.

Teraz spróbuj napisać własną procedurę obliczeniową i utworzyć dla niej raport z tych obliczeń. Co to będzie? Jeśli potrzebujesz pomocy – napisz mi o tym w komentarzu!

W następnym poście zajmiemy się tzw. listami!


Wpisy z cyklu „Python dla inżynierów„:

  1. Wprowadzenie do Pythona i Liczby
  2. Napisy (Strings)
  3. Listy
  4. (w opracowaniu)

8 komentarzy

  • To jak to opisałeś przekonuje mnie do programowania.
    Cały czas korzystam z excela.
    Dzisiaj zainteresowałem się tym programem i spróbuję coś napisać.

  • Fajne wprowadzenie. Też interesuję się tematem programowania do zastosowań inżynierskich i szukam ciekawych lekcji. Jako laik mam jedno pytanie. Czemu wybrałeś właśnie Pythona?

    • Hej Zbyszek! Super, że zaciekawiły Cię lekcje Pythona. Mam nadzieję, że wszystko jest czytelne?
      Jeśli chodzi o wybór języka, to próbowałem wcześniej Pascal (Delphi), śladowo też C++ i było nawet OK. Mam nawet kilka programików napisanych w Delphi. Po pewnym czasie zobaczyłem jednak, że np. w Delphi ciągle muszę tworzyć wiele rzeczy sam od nowa (np. funkcji, operacje na tablicach, całki etc.), bo nie ma tyle materiałów w sieci albo tylu aktywnych usersów.
      Python przewijał się gdzieś obok od samego początku, ale dopiero po czasie go doceniłem. Przede wszystkim z racji prostoty składni, szybkości pisania kodu i – co bardzo ważne – masy dostępnych bibliotek. Dodatkowo od ręki miałem łatwo dostępne przykłady kodu w Pythonie. Patrząc teraz z dystansu, to nie żałuję ani trochę. Prostota składni Pythona i dostępność tak wielu bibliotek daje niesamowite możliwości. Myślę też, że obecnie Python jest jednym z najszybciej rozwijających się języków i wiele softów daje do siebie dostęp właśnie przez Pythona.

      • Witaj,
        Wydaje się dość przejrzyście opisane i raczej z głową.
        Jednak do obiektywnej odpowiedzi musiałbym spróbować coś samemu napisac ale jeszcze się za to nie zabrałem ;).
        Oczywiście będę śledził Twojego bloga.

        Odnośnie tematyki mam jedną uwagę. Oczywiście każdy program obliczeniowy pomagający w pracy jest dobrym pomysłem ale ja bardziej skłaniam się ku pomocy w rysowaniu. Czy planujesz jakiś przewodnik z tej dziedziny?

    • Struhon, dobra uwaga. Dzięki! Nie mówiłem o tym tutaj wiele całkiem świadomie. Będę o tym mówił później przy omawianiu funkcji – tam, moim zdaniem, najlepiej będzie to widoczne. O PEP 8 napisałem przy akapicie „Zasady nazywania zmiennych” – zerknij.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *