Vortaroj - Enkonduko,

Skip to content

Ĉi tio estas maŝine tradukita teksto kiu povas enhavi erarojn!

Ĉu vi luktas kun tro multaj variabloj, tro multaj listoj, tro da ĉio? Tiam la solvo por vi ekzistas: Vortaroj kaj Klasoj!

Dictionaries?

Perry the Dictionary


Vortaroj - Listo kun nomoj 📖

“Vortaro” (Norvega: ordbok 📖) estas datumstrukturo, kiu permesas vin teni spuron de pluraj valoroj, en multaj manieroj simile al listo, sed male al listoj, vi povas doni al ĉiu elemento “nomon”.

  • ✅ Ĉi tio estas utila ĉar ĝi permesas nin kolekti datumojn, kiuj devas esti kunligitaj en la sama loko!
  • ✅ Estas malpli da variabloj por teni spuron.

Jen ekzemplo de vortaro por uzanto:

user = {
    "username": "TheCoder27",
    "age": 17,
    "premium": False,
    "progress": 0.75
}
# Dette er en ordbok som representerer en bruker.
# Ĉi tio estas vortaro kiu reprezentas uzanton.

Kio okazas ĉi tie?

Vortaroj atendas la jenan strukturon:

variable_name = {
    "key_name": key_value,
    "key_name2": key_value,
    # ankaŭ plu malsupren
}

variable_name estas nur variablo, do la kutimaj reguloj por variabloj sekvas ĉi tie.

Tiam ni uzas kramparentezojn {} por diri al Python ke tio estu leksikono.

Poste listiĝas tio, kio estas konata kiel “ŝlosilo-valora” paroj. Do, ŝlosilo 🗝️ kaj valoro 🪙. Ĉi tio ĉio signifas, ke valoro ricevas nomon, kaj ĉi tiu valoro estu nur teksto, do string.

Se vi rigardas la uzantekzemplon supre, vi povas klare vidi kion tio signifas. Ekzemple: "username" en la uzanto estas "TheCoder27". Tiam la ŝlosilo 🗝️ estas "username", kaj la valoro 🪙 "TheCoder27".


Valoroj

Valoroj 🪙 en vortaro povas esti ajna datotipo. Rememoru al kiuj datotipoj ni havas.

Datotipo Skribmaniero
string "TheCoder27"
integer 17
boolean False
float 4.5

Vi povas do supozi ĝuste ke Listo kaj Vortaroj estas ankaŭ datatipoj: list kaj dict, do ĉi tiuj ankaŭ povas esti lokitaj ene de Vortaro. Ĉiuj tipoj funkcias!

dictionarydictionarydictionarydictionary

Dictionaryception


Elpreni valorojn 🤔

  • ✅ Se ni volas elprinti nur unu el la valoroj de ĉi tiu vortaro, vi povas uzi krampojn, kiel kun listoj:

# Skriver ut brukernavnet
# Elskribu la uzantanomon
print(user["username"])

  • ✅ Ĉi tiu kodo elprintos TheCoder27.
    • ❓ Kion vi kredas okazas se vi ŝanĝas de "username" al "age"?

Ĝisdatigi valorojn 🪙

  • ✅ Vi povas ĝisdatigi valorojn ene de Vortaro uzante =. Jen ekzemplo kie la rating de la uzanto estas ĝisdatigita:

# Brukerens fremgang er satt til 4.7
# La progreso de la uzanto estas metita al 4.7
user["progress"] = 4.7


Aldoni valorojn ➕

  • ✅ Por aldoni novan valoron en vortaron, vi simple skribu simile al aldono, sed kun ŝlosilo (key) kiu ankoraŭ ne ekzistas. Jen ekzemplo:

# Brukeren er nå innlogget
# La uzanto nun estas enlogita
user["logged_in"] = True

String Format

Io, kion vi ankoraŭ ne vidis, estas io nomata “string format”. Ĝi estas esence nur maniero skribi kodon en print().

Jen ekzemplo de kiel ĉi tio povas aspekti kun la vortar-ekzemplo de pli frue (uzante):

# Uzanto {user['username']} estas {user['age']} jaroj aĝa.
print(f"Brukeren {user['username']} er {user['age']} år gammel.")

Merk!

  • Tie, f estas uzata antaŭ la komenco de la teksto (string).
  • Ĉi tie troviĝas klamparentezoj {}.
  • Ĉar ni komencas la string-on per " ni ne povas uzi " por preni el la leksikono, ĉar tiam la teksto estus finita! Tial simplaj ' estas uzataj por preni el ĝi.


Taskoj

En ĉi tiu taska parto vi devas krei simplan “filma datumbazon”. 🎥🎞️

Tasko 1a - Kreu vortaron

Kreu novan Python-dosieron nomitan movies.py.

Kreu variablon nomitan movie kaj enmetu la jenajn ŝlosilojn:

  • title
  • year
  • director
  • rating

Elektu kio estu la valoroj ĉi tie mem.

Poste, elprintu ĝin per print().

⚠️ Memoru doni al ĉi tiuj valoroj la ĝustan datentipon, referu la tablon supre se vi ne certas kiel ĉi tio povas esti skribita.

Eksempel-Løsning
movie = {
    "title": "Inception",
    "year": 2010,
    "director": "Christopher Nolan",
    "rating": 8.8
}

print(movie)

Task 1b - Ŝanĝo?

Ŝanĝu unu el la valoroj kaj elprintu ĝin. Kio okazas?

Tasko 2 - Uzu leksikonon

Uzu la movie-leksikonon, kiun vi ĵus kreis, por elpreni:

  • La titolon de la filmo
  • En kiu jaro la filmo aperis

Eksempel-Løsning
print(filmo["titolo"])
print(filmo["jaro"])

Tasko 3a - Elprintu frazon

Uzu “string format”-on por elprinti frazon pri la filmo. Ekzemple kiel:

La filmo Inception aperis en 2010.

Eksempel-løsning
print(f"La filmo {movie['title']} aperis en {movie['year']}.")

Task 3b - Anotha one 🤑

Uzu string-formanton por elprinti frazon kiel ĉi tiu el la vortaro:

La filmo estis reĝisorita de Christopher Nolan kaj ricevis 8.8 en taksado.

Tasko 3c - Funkcioj

Konvertu la kodon, kiun vi faris en 1.3a kaj 1.3b al funkcio, kiu elprintas ĉi tiun informon.

  • ✅ La funkcio devas preni argumenton, kiu estas la vortaro.

Starta kodo:

def print_movie(the_movie):
    # ĉi tie vi skribu vian kodon

Eksempel-løsning
def print_movie(the_movie):
    print(f"La filmo {the_movie['title']} aperis en {the_movie['year']}.")
    print(f"La filmon reĝisoris {the_movie['director']} kaj ĝi ricevis {the_movie['rating']} en takso.")

print_movie(movie)

Tasko 4 - Ĝisdatigi takson

Ni faru kiel se nia filmo pliiĝis en takso. Ĝisdatigu la takson tiel ke ĝi fariĝu nova valoro. Poste reskribu ĝin.

Eksempel-løsning
movie["rating"] = 8.9

print(movie["rating"])

Tasko 5a - Ĉu la filmo estis rigardata? 🤔

Aldonu novan ŝlosilo-valoro (per kodo) kiu konservas informojn pri ĉu la filmo estis rigardata aŭ ne. Poste elprintu ĉiujn informojn pri la filmo.

Eksempel-løsning
movie["watched"] = True

print(movie)

Tasko 5b

Ĝisdatigu la funkcion, kiun vi kreis en 1.3c por elprinti "✅ Vi vidis ĉi tiun filmon." se la valoro de "watched" estas True. Se vi volas, vi ankaŭ povas elprinti mesaĝon se vi ne vidis la filmon.

Eksempel-løsning
def print_movie(the_movie):
    print(f"La filmo {the_movie['title']} eliris en {the_movie['year']}.")
    print(f"La filmon reĝisoris {the_movie['director']} kaj ĝi ricevis {the_movie['rating']} en takso.")

    if the_movie["watched"] == True:
        print("✅ Vi vidis ĉi tiun filmon.")

print_movie(movie)

True == True

Vi ankaŭ povas simple skribi if movie["watched"]:, ĉar True estas tio, kion if vere serĉas. Kio iasence skribiĝas ĉi tie estas True == True respondos kun la valoro True, ni nur bezonas skribi if True: por ke io estu vera.

Tasko 6 - Pli da filmoj

Aldonu du filmojn al via kodo. Nuntempe vi povas nomi ilin per variabloj kiel movie2 kaj movie3. Memoru inkludi la valoron por watched ankaŭ. Poste, elprintu ambaŭ ĉi tiujn per via funkcio.

Tasko 7 - Fina defio: Listo kun leksikonoj

Modifu vian kodon por uzi liston de leksikonoj nomitan movies. Poste uzu nombrojn (indeksojn) por elpreni ĉiun filmon. Vi povas uzi for-ciklon por trairi ĉiujn.

Eksempel-løsning
movies =
[
    {
        "title": "Inception",
        "year": 2010,
        "director": "Christopher Nolan",
        "rating": 8.8,
        "watched": True
    },
    {
        "title": "Fight Club",
        "year": 1999,
        "director": "David Fincher",
        "rating": 8.8,
        "watched": False
    },
    {
        "title": "GoodFellas",
        "year": 1990,
        "director": "Martin Scorsese",
        "rating": 8.7,
        "watched": False
    }
]

for movie in movies:
    print_movie(movie)
    print()