Python Programming Language - Control Flow, Lists, and Functions

Python - if, else, while, for

  • În Python, indentarea este folosită pentru a marca corpul instrucțiunilor repetitive sau de decizie.
  • Semnul ":" marchează sfârșitul liniei cu if, else, while, for.

Exemplu:

x = 30
if x <= 15:
    y = x + 15
elif x <= 30:
    y = x + 30
else:
    y = x

x = 1
while x < 5:
    print(x)
    x = x + 1
    break #iese din bucla while
else:
    # aceasta clauza else este executata doar daca bucla while se termina
    # natural (fara break)
    for i in [1, 7, 13, 2]:
        print(i)

for i in range(5):
    print('Am ajuns aici deci x>=5')
    print(i)

Caracteristici Python

  • Limbaj mai ușor de învățat.
  • Nu are paranteze, nu are main.
  • Generează erori dacă există spații suplimentare.

Python - for

  • Deseori, când lista este deja definită în program, se folosesc construcții de tipul:
x = [1, 2, 2020, 3, 1, 2020]
for numar in x:
    print(numar)
  • Nu uitați semnul ":" la finalul liniei for, if etc.
  • Indentați liniile din corpul structurilor for, if etc.
  • Nu indentați alte linii (altfel apare eroare).

Python - for și enumerate

  • De obicei, for parcurge listele ascunzând indexul elementelor (ca în exemplul anterior, for numar in x:).
  • Dacă avem nevoie de indexul elementelor, folosim enumerate():
x = [1, 2, 2020, 3, 1, 2020]
for i, numar in enumerate(x):
    print(f"x[{i}] = {numar}")

Python - Liste numerice și for

  • În Python, generăm secvențe de numere cu range(start, stop[, step])
for i in range(5):
    print(i, end=', ')
print("\n")

for i in range(5, 10):
    print(i, end=', ')
print("\n")

for i in range(5, 50, 5):
    print(i, end=',')
  • Pentru lucrul cu secvențe numerice, este recomandat pachetul numpy.
  • Exemplu:
import numpy as np
for i in np.arange(5, 50, 2.5):
    print(i, end=', ')
  • Avantaj np.arange(0.0, np.pi, np.pi/100).

Python - List comprehension

  • for poate fi folosit pentru a genera liste pornind de la range sau de la o altă listă existentă:
nums = [0, 1, 2, 3, 4]
patrat = []
for x in nums:
    patrat.append(x ** 2)
print(patrat)
  • Abordare similară cu C:
import numpy as np
nums = np.arange(0, 5)
  • Abordare tipică Python:
patrat = [x ** 2 for x in nums]
print(patrat)
  • Putem include condiții (for ... if ...) în list comprehension:
patrat = [x ** 2 for x in nums if x % 2 == 0]

Python - Funcții

  • Funcțiile se declară folosind def cu o sintaxă similară if, for etc. (adică folosind markerul ":" și indentare).
def functie_simpla():
    print("Mesaj")

funkcie_simpla() #apelarea functiei

def apel(nume, numar):
    print(f"{nume} este asteptat la ghiseul {numar}")

apel("Popescu", 3)
  • Datorită faptului că nu există tipuri de variabile definite pentru argumente, este posibil să nu primim erori dacă nu respectăm ordinea parametrilor:
apel("Popescu", 3) # Popescu este asteptat la ghiseul 3
apel(3, "Popescu") # 3 este asteptat la ghiseul Popescu
  • Pentru a evita confuzia, se poate specifica numele parametrilor la apel:
apel(numar=3, nume="Popescu")

Python - Funcții și return

  • Funcțiile întorc valori cu return:
def get_formatted_name(first_name, last_name):
    full_name = f"{first_name} {last_name}"
    return full_name.title()

muzician = get_formatted_name('johann', 'bach')
print(muzician)
  • Argumentele pot primi valori default:
def apel(nume, numar=1):
    print(f"{nume} este asteptat la ghiseul {numar}")

apel("Popescu", 3)
apel("Popescu") #numar va primi valoarea default 1