Slovenian vocabulary layer for Python
Project description
slovarnik - Pythonov wrapper za slovenski jezik
Pythonova knjižnica, ki omogoča programiranje v slovenskem jeziku. Zagotavlja slovenske aliase za vgrajene funkcije, podatkovne tipe, kontrolne strukture in izjeme.
Namestitev
pip install slovarnik
Ali klonirajte repozitorij in ga namestite lokalno:
git clone https://github.com/LolekLiam/slovarnik.git
cd slovarnik
pip install -e .
Uporaba
from slovarnik import *
# Osnovne funkcije
izpis("Pozdravljen, svet!")
# Podatkovni tipi
stevilo = celo(42)
besedilo = niz("Hello")
seznam_stevil = seznam([1, 2, 3, 4, 5])
# Pogojni stavki
če(stevilo > 10).potem(lambda: izpis("Veliko")).sicer(lambda: izpis("Malo"))
Značilnosti
1. Podatkovni tipi
Slovenske alternative za Pythonove vgrajene tipe:
logično # bool
slovar # dict
realno # float
celo # int
seznam # list
množica # set
niz # str
terka # tuple
Primer:
starost = celo(25)
ime = niz("Ana")
ocene = seznam([5, 4, 5, 3, 4])
koordinate = terka((10.5, 20.3))
2. Vgrajene funkcije
Vse Pythonove vgrajene funkcije so na voljo v slovenščini:
# Matematične operacije
absolutno(-5) # abs(-5) → 5
največ(1, 5, 3) # max(1, 5, 3) → 5
najmanj(1, 5, 3) # min(1, 5, 3) → 1
vsota([1, 2, 3, 4]) # sum([1, 2, 3, 4]) → 10
zaokroži(3.7) # round(3.7) → 4
# Delo s podatki
dolžina([1, 2, 3]) # len([1, 2, 3]) → 3
urejeno([3, 1, 2]) # sorted([3, 1, 2]) → [1, 2, 3]
obratno([1, 2, 3]) # reversed([1, 2, 3])
enumeriraj(['a', 'b']) # enumerate(['a', 'b'])
# Vhod/izhod
vnos("Vpiši ime: ") # input("Vpiši ime: ")
izpis("Sporočilo") # print("Sporočilo")
odpri("datoteka.txt") # open("datoteka.txt")
# Pretvorbe
binarno(10) # bin(10) → '0b1010'
šestnajstiško(255) # hex(255) → '0xff'
osmiško(8) # oct(8) → '0o10'
3. Kontrolne strukture
Pogojni stavki (če/sicer_če/sicer)
def pozdravi():
izpis("Dober dan!")
def nasvidenje():
izpis("Nasvidenje!")
starost = 20
če(starost >= 18).potem(pozdravi).sicer(nasvidenje)
Večkratni pogoji:
ocena = 85
def odlicno():
izpis("Odlično!")
def prav_dobro():
izpis("Prav dobro!")
def zadostno():
izpis("Zadostno!")
če(ocena >= 90).potem(odlicno)\
.sicer_če(ocena >= 75).potem(prav_dobro)\
.sicer(zadostno)
Zanka dokler (while)
def izpisi_stevec():
izpis(stevec[0])
stevec[0] += 1
stevec = [0]
dokler(lambda: stevec[0] < 5).ponavljaj(izpisi_stevec)
# Izpiše: 0, 1, 2, 3, 4
Zanka za (for)
def izpisi_i(i):
izpis(i)
# Od 0 do 4
za(0, lambda i: i < 5, lambda i: i + 1).ponavljaj(izpisi_i)
# Korak 2
za(0, lambda i: i < 10, lambda i: i + 2).ponavljaj(izpisi_i)
# Izpiše: 0, 2, 4, 6, 8
# Obratno štetje
za(10, lambda i: i > 0, lambda i: i - 1).ponavljaj(izpisi_i)
4. Obravnava izjem (poskusi/ujemi/drugače/končno)
Osnovni poskusi-ujemi
def deli():
rezultat = 10 / 0
izpis(rezultat)
def obdelaj_napako(e):
izpis(f"Napaka: {e}")
poskusi(deli)\
.ujemi(NapakaDeljenjaNičle, obdelaj_napako)\
.končaj()
Večkratne izjeme
def tvegana_operacija():
# Nekaj, kar bi lahko sprožilo različne izjeme
pass
poskusi(tvegana_operacija)\
.ujemi(NapakaDeljenjaNičle, lambda e: izpis("Deljenje z nič!"))\
.ujemi(NapakaVrednosti, lambda e: izpis("Napačna vrednost!"))\
.ujemi(NapakaTipa, lambda e: izpis("Napačen tip!"))\
.končaj()
Blok drugače (else)
Izvede se, če ni bilo izjeme:
def uspesna_operacija():
izpis("Vse v redu")
def ce_uspe():
izpis("Operacija uspešna!")
poskusi(uspesna_operacija)\
.ujemi(Izjema, lambda e: izpis("Napaka!"))\
.drugače(ce_uspe)\
.končaj()
Blok končno (finally)
Izvede se vedno, ne glede na to, ali je bila izjema:
def odpri_datoteko():
izpis("Odpiranje datoteke...")
# Operacije z datoteko
def zapri_datoteko():
izpis("Zapiranje datoteke...")
poskusi(odpri_datoteko)\
.ujemi(NapakaVhodIzhod, lambda e: izpis("Napaka pri I/O"))\
.končno(zapri_datoteko)
Popoln primer
def opravi_delo():
izpis("Delam...")
rezultat = 100 / 5
izpis(f"Rezultat: {rezultat}")
def obdelaj_deljenje(e):
izpis("Napaka pri deljenju!")
def uspeh():
izpis("Ni bilo napak!")
def pocisti():
izpis("Čiščenje virov...")
poskusi(opravi_delo)\
.ujemi(NapakaDeljenjaNičle, obdelaj_deljenje)\
.drugače(uspeh)\
.končno(pocisti)
5. Izjeme
Vse Pythonove izjeme so na voljo v slovenščini:
# Pogosto uporabljene izjeme
Izjema # Exception
NapakaVrednosti # ValueError
NapakaTipa # TypeError
NapakaAtributa # AttributeError
NapakaIndeksa # IndexError
NapakaKljuča # KeyError
NapakaDeljenjaNičle # ZeroDivisionError
NapakaVhodIzhod # IOError
NapakaDatotekaNeObstaja # FileNotFoundError
NapakaDatotekaObstaja # FileExistsError
# Sistemske izjeme
TipkovničnaPrekinitev # KeyboardInterrupt
NapakaSpomina # MemoryError
NapakaSistema # SystemError
IzhodSistema # SystemExit
# Mrežne izjeme
NapakaPovezave # ConnectionError
NapakaIztek # TimeoutError
NapakaZavrnjenePovezave # ConnectionRefusedError
# In še veliko več...
Primer uporabe:
def preveri_starost(starost):
if starost < 0:
raise NapakaVrednosti("Starost ne more biti negativna")
izpis(f"Starost: {starost}")
poskusi(lambda: preveri_starost(-5))\
.ujemi(NapakaVrednosti, lambda e: izpis(f"Napaka: {e}"))\
.končaj()
Napredni primeri
Primer 1: Kalkulator
def kalkulator():
a = realno(vnos("Prvo število: "))
operacija = vnos("Operacija (+, -, *, /): ")
b = realno(vnos("Drugo število: "))
če(operacija == "+").potem(lambda: izpis(f"Rezultat: {a + b}"))\
.sicer_če(operacija == "-").potem(lambda: izpis(f"Rezultat: {a - b}"))\
.sicer_če(operacija == "*").potem(lambda: izpis(f"Rezultat: {a * b}"))\
.sicer_če(operacija == "/").potem(lambda: izpis(f"Rezultat: {a / b}"))\
.sicer(lambda: izpis("Neznana operacija"))
def obdelaj_napako(e):
izpis(f"Napaka: {e}")
poskusi(kalkulator)\
.ujemi(NapakaDeljenjaNičle, lambda e: izpis("Ne moreš deliti z nič!"))\
.ujemi(NapakaVrednosti, lambda e: izpis("Vpiši veljavno število!"))\
.končaj()
Primer 2: Obdelava seznama
seznam_imen = seznam(["Ana", "Bor", "Cvetka", "David"])
def izpisi_ime(i):
izpis(f"{i + 1}. {seznam_imen[i]}")
# Izpiši vsa imena
za(0, lambda i: i < dolžina(seznam_imen), lambda i: i + 1).ponavljaj(izpisi_ime)
# Filtriraj imena, ki se začnejo z 'A'
filtrirano = filtriraj(lambda ime: ime[0] == 'A', seznam_imen)
izpis(f"Imena z A: {seznam(filtrirano)}")
# Seštej dolžine imen
vsota_dolzin = vsota(zemljevid(dolžina, seznam_imen))
izpis(f"Skupna dolžina vseh imen: {vsota_dolzin}")
Primer 3: Branje datoteke
def preberi_datoteko():
datoteka = odpri("besedilo.txt", "r")
vsebina = datoteka.read()
izpis(vsebina)
datoteka.close()
def zapri_datoteko():
izpis("Datoteka zaprta")
poskusi(preberi_datoteko)\
.ujemi(NapakaDatotekaNeObstaja, lambda e: izpis("Datoteka ne obstaja!"))\
.ujemi(NapakaPravic, lambda e: izpis("Ni dovoljenja za branje!"))\
.končno(zapri_datoteko)
Opombe
Zakaj so potrebne lambde/funkcije?
Ta knjižnica uporablja funkcije kot argumente za odloženo izvajanje kode. To je nujno zaradi načina, kako Python deluje:
# ❌ To se izvede TAKOJ (napačno)
če(True).potem(izpis("Hello"))
# ✅ To se izvede, ko je pogoj izpolnjen (pravilno)
če(True).potem(lambda: izpis("Hello"))
# ✅ Ali z imenovano funkcijo (priporočeno za daljšo kodo)
def pozdravi():
izpis("Hello")
izpis("Welcome!")
če(True).potem(pozdravi)
Za enostavne primere uporabljajte lambde, za kompleksnejšo logiko pa definirajte funkcije.
Prispevanje
Prispevki so dobrodošli! Prosim:
- Forkajte repozitorij
- Ustvarite svojo feature vejo (
git checkout -b feature/izboljsava) - Commitajte spremembe (
git commit -am 'Dodaj novo funkcionalnost') - Pušajte na vejo (
git push origin feature/izboljsava) - Ustvarite Pull Request
Licenca
MIT License - poglejte LICENSE datoteko za podrobnosti.
Avtor
Liam Starič
Zahvale
- Pythonova skupnost za navdih
- Vsi, ki so prispevali k prevajanju in testiranju
Opomba: Ta projekt je izobraževalnega značaja in je namenjen učenju programiranja v slovenščini. Za produkcijske projekte priporočamo uporabo standardnega angleškega Pythona.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file slovarnik-1.0.0.tar.gz.
File metadata
- Download URL: slovarnik-1.0.0.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a0ad6b350ac3c0e21c01e9e0b09cc5f2dff5ebe67b27045d683e0162f012d43
|
|
| MD5 |
5b6ff41eb7bdb341e019dd71068948f9
|
|
| BLAKE2b-256 |
15e8e6cd3b5240070bf7c72b93afa51e132e249e3a02c0b5fed8251e2ab40c9a
|
File details
Details for the file slovarnik-1.0.0-py3-none-any.whl.
File metadata
- Download URL: slovarnik-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8283edbde5d51b18eef50ee2001f12f544ca74867d7ac29c3a485376774fd17
|
|
| MD5 |
f33a242585c971c163f915511a73fffd
|
|
| BLAKE2b-256 |
720d5d12b4905cb954efb57cf48598cc3ca53d8c8a1526bb2d2fd81d3b3b2d62
|