Matematikai Algoritmusok és Felfedezések I.

2. Előadás, értékadás, vezérlés, függvények, egyszerű adattípusok, adatszerkezetek.

2021 február 15.

Technikai információk

Anyagok elérhetősége:

Emlékeztető

Értékadás (Assignment)

Kicsit más mint a legtöbb nyelvben:

Az id függvény visszaadja az objektum egyedi azonosító számát. (Miért lehet gond az id használatából?)

Az id-kat összehasonlíthatjuk az is paranccsal.

Feladvány

Egyszerű utasítások

if, elif, else

Feltételes kifejezések

int x = -2;
int abs_x = x>=0 ? x : -x;

Pythonban:

<kifejezés1> if <feltétel> else <kifejezés2>

for, range

lista iterálása

Az egészek egy intervallumán való iterálás

Így nézne ki C++-ban:

for (int i=0; i<5; i++)
   { cout << i << endl;}

A range mindig 0-val kezdődik!

Megadhatjuk a kezdőértéket:

Megadhatjuk a növekedés értékét is. Ekkor viszont kötelező megadni a kezdőértéket is.

while

Nincs do...while Pythonban.

break és continue

Függvények

Fontos, hogy ezek nem matematikai függvények. Például nem csak a bemenettől függ a függvényérték!

Függvény definíció

Függvényeket a def kulcsszó segítségévek használhatunk:

Függvény argumentumok, paraméterek

  1. pozíció szerinti (positional)
  2. kulcsszavas (named or keyword arguments)

Először a pozíció szerintieket kell írni aztán a kulcsszavasokat

Mit is jelent, hogy egy függvényt meghívunk valamilyen argumentumokkal?

Feladvány

Alapértelmezett argumentum (Default arguments)

Alapértelmezett argumentumokat nem is kötelező megadni.

Tetszőleges kihagyható közülük.

Emiatt rengeteg argumentumod lehet úgy is, hogy ez nem nehezíti meg a függvény használatát. Sok könyvtárban találunk olyan függvényeket, amiknek rengeteg argumentumunk van.

Például a következő függvényt a pandas könyvtárban találjuk:

pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=False, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, skip_footer=0, doublequote=True, delim_whitespace=False, as_recarray=False, compact_ints=False, use_unsigned=False, low_memory=True, buffer_lines=None, memory_map=False, float_precision=None)

Visszatérési érték, a return parancs

Beépített típusok és operátorok.

Dinamikus típusok

Erősen típusos nyelv

Viszont explicit konverzióval működik:

boolean típus

boolean operátorok

Numerikus típusok

Tartomány

float

Aritmetikai operátorok

Osztás vs benfoglalás

Mi a megoldás a ilyesmi problémák elkerülésére?

Összehasnolító operátorok

Össze is lehet őket láncolni

Egyéb operátorok

Maradék

Hatványozás

Abszolút érték

Kerekítés

Explicit konverzió

A math és cmath modulok még sok mást tartalmaznak

Mutable vs. immutable típusok

Mutable? bool értékek

Egyedi immutable objektumok, csak egy példány van belőlük.

Mutable? listák

A listák helyben megváltoztathatóak!