Karatasi ya kudanganya ya Python: sintaksia, amri na kazi zilizojengwa ndani kwenye majedwali
Sintaksia ya Python inategemea kujongea badala ya mabano ya mikunjo: kizuizi kinachofuata koloni kinasogezwa kwa nafasi 4. Msingi ni vigezo bila kutangaza aina, masharti ya if/elif/else, mizunguko for na while, kazi def, na kazi zilizojengwa ndani kama print, len, range, input, type, pamoja na mbinu za nyuzi, orodha na kamusi.
Karatasi hii ya kudanganya ya Python inakusanya kwenye ukurasa mmoja kila kitu unachohitaji kuwa nacho karibu katika miezi ya kwanza: sintaksia ya Python, mizunguko, kazi zilizojengwa ndani, mbinu za nyuzi, orodha na kamusi, na amri za terminal. Kila jedwali ni marejeo mafupi yenye mifano inayofanya kazi, ambayo unaweza kuiweka moja kwa moja kwenye REPL.
Misingi ya sintaksia ya Python
Kipengele kikuu cha lugha ni kwamba vizuizi vinaelezwa kwa kujongea, si kwa mabano. Baada ya mstari wenye koloni (if, for, def, class) mistari inayofuata inasogezwa kwa nafasi 4. Kuchanganya tabu na nafasi hakuruhusiwi — utapata IndentationError.
| Muundo | Mfano | Maelezo |
|---|---|---|
| Maoni | # maandishi | kila kilicho baada ya # hadi mwisho wa mstari hupuuzwa |
| Kigezo | age = 25 | aina haitangazwi, inaamuliwa na thamani |
| Upeanaji wa mara nyingi | a, b = 1, 2 | kufungua (unpacking); kubadilishana thamani: a, b = b, a |
| Kuchapisha | print("Habari", name) | hoja zinatenganishwa kwa nafasi |
| Kuingiza | s = input("Jina: ") | daima hurudisha nyuzi |
| F-string | f"{name}: {price:.2f}" | kuingiza misemo na muundo wa kuonyesha |
| Alama ya aina | count: int = 0 | dokezo kwa IDE na wakaguzi, halikaguliwi wakati wa kuendesha |
| Kizuizi tupu | pass | kishikilia nafasi pale sintaksia inahitaji mwili |
| Uagizaji | from math import sqrt | kuunganisha moduli au jina kutoka ndani yake |
Aina za data
| Aina | Literali | Inaweza kubadilishwa |
|---|---|---|
int | 42, 1_000_000 | hapana |
float | 3.14, 1e-3 | hapana |
bool | True, False | hapana |
str | "maandishi", 'maandishi', """mistari mingi""" | hapana |
list | [1, 2, 3] | ndiyo |
tuple | (1, 2), (1,) | hapana |
dict | {"a": 1} | ndiyo |
set | {1, 2}, tupu — set() | ndiyo |
NoneType | None | — |
Waendeshaji
| Kundi | Waendeshaji | Mfano → matokeo |
|---|---|---|
| Hesabu | + - * / // % ** | 7 // 2 → 3, 7 % 2 → 1, 2 ** 10 → 1024 |
| Ulinganisho | == != < > <= >= | 1 < x < 10 — mnyororo wa ulinganisho |
| Mantiki | and or not | x or "chaguo-msingi" |
| Umiliki | in, not in | "a" in "abc" → True |
| Utambulisho | is, is not | x is None |
| Upeanaji | += -= *= /=, := | if (n := len(s)) > 10: ... |
Masharti na ulinganishaji
if score >= 90:
grade = "A"
elif score >= 70:
grade = "B"
else:
grade = "C"
status = "mtu mzima" if age >= 18 else "mtoto" # opereta wa masharti
match command:
case "start":
print("Inaanza")
case "stop" | "exit":
print("Inasimama")
case _:
print("Amri isiyojulikana")
Thamani za uongo ni False, None, 0, nyuzi tupu na makusanyo matupu, kwa hiyo badala ya if len(items) > 0 wanaandika tu if items.
Mizunguko katika Python: sintaksia ya for na while
Mzunguko wa for
Sintaksia ya mzunguko wa for katika Python: for kigezo in mfuatano: na mwili uliojongezwa. Mzunguko unapitia kitu chochote kinachoweza kurudiwa — nyuzi, orodha, kamusi, faili, range.
for i in range(5): # 0 1 2 3 4
print(i)
for i in range(10, 0, -2): # 10 8 6 4 2
print(i)
for i, fruit in enumerate(["tufaha", "peari"], start=1):
print(i, fruit)
for name, score in zip(names, scores):
print(name, score)
for key, value in prices.items():
print(key, value)
Mzunguko wa while
attempts = 3
while attempts > 0:
password = input("Nenosiri: ")
if password == "secret":
print("Umeingia")
break
attempts -= 1
else:
print("Majaribio yameisha") # hutekelezwa ikiwa hapakuwa na break
| Amri | Inafanya nini |
|---|---|
break | kutoka kwenye mzunguko kabla ya wakati |
continue | nenda kwenye marudio yanayofuata |
else ya mzunguko | hutekelezwa ikiwa mzunguko umemalizika bila break |
range(stop), range(start, stop, step) | mfuatano wa namba, stop haijumuishwi |
Orodha za kutengeneza (comprehensions)
squares = [x ** 2 for x in range(10)]
evens = [x for x in numbers if x % 2 == 0]
lengths = {word: len(word) for word in words}
unique = {c.lower() for c in text}
total = sum(x * x for x in range(100)) # usemi wa jenereta
Kazi
def greet(name: str, greeting: str = "Habari") -> str:
"""Inarudisha salamu."""
return f"{greeting}, {name}!"
def total(*args, **kwargs):
return sum(args), kwargs
square = lambda x: x * x
print(greet("Amina")) # Habari, Amina!
print(greet("Amina", greeting="Hujambo")) # Hujambo, Amina!
| Kipengele | Maana |
|---|---|
def f(a, b=1) | kigezo chenye thamani ya chaguo-msingi |
*args | idadi yoyote ya hoja za nafasi (tuple) |
**kwargs | idadi yoyote ya hoja zenye majina (kamusi) |
return | kurudisha thamani; bila hiyo kazi itarudisha None |
lambda x: ... | kazi fupi isiyo na jina, ya usemi mmoja |
global, nonlocal | kubadilisha kigezo kutoka eneo la nje |
Usitumie thamani ya chaguo-msingi inayoweza kubadilika kama def f(items=[]): orodha inaundwa mara moja tu na inakusanyika kati ya miito. Njia sahihi ni items=None na ndani yake if items is None: items = [].
Kazi zilizojengwa ndani za Python
Kazi zilizojengwa ndani za Python zinapatikana bila uagizaji. Hizi ni kazi kuu zinazoonekana karibu kila script.
| Kazi | Inafanya nini | Mfano → matokeo |
|---|---|---|
print() | inaonyesha thamani | print(1, 2, sep="-") → 1-2 |
input() | inasoma mstari kutoka kibodi | int(input()) |
len() | urefu wa kontena au nyuzi | len("abc") → 3 |
type() | aina ya kitu | type(3.0) → <class 'float'> |
isinstance() | kukagua aina | isinstance(5, int) → True |
int() float() str() bool() | kubadilisha aina | int("42") → 42 |
list() tuple() set() dict() | kuunda makusanyo | list("ab") → ['a', 'b'] |
range() | safu ya namba | list(range(3)) → [0, 1, 2] |
enumerate() | jozi (faharasa, kipengele) | list(enumerate("ab")) → [(0, 'a'), (1, 'b')] |
zip() | inaunganisha mfuatano jozi kwa jozi | list(zip([1, 2], "ab")) → [(1, 'a'), (2, 'b')] |
sum() min() max() | jumla, kiwango cha chini, cha juu | max([3, 7, 1]) → 7 |
abs() round() | thamani kamili na kuzungusha | round(3.14159, 2) → 3.14 |
sorted() | orodha mpya iliyopangwa | sorted(words, key=len, reverse=True) |
reversed() | kirudiaji kwa mpangilio wa nyuma | list(reversed([1, 2])) → [2, 1] |
map() filter() | kutumia kazi / kuchuja | list(map(str, [1, 2])) → ['1', '2'] |
any() all() | angalau moja / zote ni kweli | all(x > 0 for x in nums) |
open() | inafungua faili | open("a.txt", encoding="utf-8") |
help() dir() | msaada na orodha ya sifa | help(str.split), dir(list) |
id() hash() | kitambulisho na hash ya kitu | hash("a") |
Kitabu bora cha marejeo kiko nawe kila wakati — kazi help() kwenye REPL: help(dict) itaonyesha mbinu zote za kamusi pamoja na maelezo, na dir(obj) — orodha ya majina yanayopatikana.
Mbinu za nyuzi
Sintaksia ya nyuzi za Python: nyuzi haibadiliki, na kila mbinu inarudisha nyuzi mpya. Kukata (slices) kunafanya kazi kama kwenye orodha: s[1:4], s[::-1] — kugeuza.
| Mbinu | Mfano → matokeo |
|---|---|
upper() lower() | "Py".upper() → 'PY' |
capitalize() title() | "hello world".title() → 'Hello World' |
strip() lstrip() rstrip() | " hi \n".strip() → 'hi' |
split(sep) | "a,b,c".split(",") → ['a', 'b', 'c'] |
join(iterable) | "-".join(["a", "b"]) → 'a-b' |
replace(old, new) | "bata".replace("b", "k") → 'kata' |
find() index() | "hello".find("l") → 2; ikiwa haipo — -1 (kwa index — kosa) |
count() | "banana".count("a") → 3 |
startswith() endswith() | "file.py".endswith(".py") → True |
isdigit() isalpha() isspace() | "123".isdigit() → True |
removeprefix() removesuffix() | "test_a".removeprefix("test_") → 'a' |
zfill() center() ljust() | "7".zfill(3) → '007' |
format() | "{} + {}".format(1, 2) → '1 + 2' |
Amri za orodha ya Python
Orodha ni kontena linaloweza kubadilishwa na lenye mpangilio. Mbinu nyingi zinabadilisha orodha papo hapo na kurudisha None, kwa hiyo a = a.sort() ni kosa la kawaida.
| Operesheni | Inafanya nini | Mfano |
|---|---|---|
append(x) | inaongeza mwishoni | a.append(4) |
extend(iter) | inaongeza vipengele vyote | a.extend([5, 6]) |
insert(i, x) | inaingiza kwa faharasa | a.insert(0, "first") |
remove(x) | inafuta mara ya kwanza thamani inapotokea | a.remove(3) |
pop(i) | inafuta na kurudisha kipengele (chaguo-msingi la mwisho) | last = a.pop() |
clear() | inafuta orodha yote | a.clear() |
index(x) | faharasa ya mara ya kwanza | a.index("b") |
count(x) | idadi ya marudio | a.count(1) |
sort() | inapanga papo hapo | a.sort(key=str.lower) |
reverse() | inageuza papo hapo | a.reverse() |
copy() | nakala ya juu juu | b = a.copy() |
del a[i] | kufuta kwa faharasa au kukata | del a[1:3] |
| Kukata | a[start:stop:step] | a[-1] — la mwisho, a[:3] — tatu za kwanza |
Amri za kamusi ya Python
| Operesheni | Inafanya nini | Mfano |
|---|---|---|
d[key] | thamani kwa ufunguo, ikiwa hakuna — KeyError | d["name"] |
get(key, default) | thamani au ya akiba | d.get("age", 0) |
d[key] = value | kuongeza au kubadilisha | d["city"] = "Arusha" |
keys() values() items() | funguo, thamani, jozi | for k, v in d.items(): |
update() | kuunganisha na kamusi nyingine | d.update({"a": 1}) |
d1 | d2 | kamusi mpya iliyounganishwa | merged = defaults | user |
pop(key, default) | kufuta na kurudisha thamani | d.pop("tmp", None) |
popitem() | kufuta jozi iliyoongezwa mwisho | d.popitem() |
setdefault(key, value) | kurudisha thamani, na ikiwa ufunguo haupo — kuuunda | d.setdefault("tags", []).append("py") |
key in d | kukagua kama ufunguo upo | if "name" in d: |
dict.fromkeys() | kamusi kutoka funguo zenye thamani moja | dict.fromkeys("abc", 0) |
len(d), del d[key] | ukubwa na kufuta | del d["old"] |
Tuple na seti
| Operesheni | Mfano → matokeo |
|---|---|
| Kufungua tuple | x, y = (3, 4) |
| Kuongeza kwenye seti | s.add(5), kufuta — s.discard(5) |
| Muungano / makutano | {1, 2} | {2, 3} → {1, 2, 3}; {1, 2} & {2, 3} → {2} |
| Tofauti | {1, 2} - {2} → {1} |
| Kuondoa marudio kwenye orodha | list(dict.fromkeys(items)) — pamoja na kuhifadhi mpangilio |
Vighairi na mafaili
try:
number = int(input("Namba: "))
except ValueError as err:
print("Hii si namba:", err)
else:
print("Imefanikiwa")
finally:
print("Inatekelezwa kila wakati")
with open("data.txt", "w", encoding="utf-8") as f:
f.write("mstari\n")
with open("data.txt", encoding="utf-8") as f:
for line in f:
print(line.rstrip())
| Kighairi | Kinatokea lini |
|---|---|
SyntaxError, IndentationError | kosa katika sintaksia au kujongea |
NameError | jina halijafafanuliwa (kosa la kuandika) |
TypeError | operesheni yenye aina isiyofaa: "1" + 1 |
ValueError | aina sahihi, lakini thamani si sahihi: int("abc") |
IndexError, KeyError | hakuna faharasa au ufunguo kama huo |
FileNotFoundError | faili halikupatikana |
ZeroDivisionError | kugawanya kwa sifuri |
Madarasa
from dataclasses import dataclass
class Dog:
def __init__(self, name: str):
self.name = name
def bark(self) -> str:
return f"{self.name}: Wau!"
@dataclass
class Point:
x: float
y: float
print(Dog("Fifi").bark()) # Fifi: Wau!
print(Point(1, 2)) # Point(x=1, y=2)
Moduli zilizojengwa ndani za Python
Maktaba ya kawaida inakuja pamoja na mkalimani — inatosha kufanya import.
| Moduli | Kwa nini | Mfano |
|---|---|---|
math | hisabati | math.sqrt(16) → 4.0 |
random | namba za kubahatisha | random.randint(1, 6), random.choice(items) |
datetime | tarehe na wakati | datetime.date.today() |
pathlib | njia na mafaili | Path("data").glob("*.csv") |
os, sys | mfumo, vigezo vya mazingira, hoja | os.environ.get("HOME"), sys.argv |
json | kusoma na kuandika JSON | json.loads(text), json.dumps(obj, ensure_ascii=False) |
csv | jedwali za CSV | csv.DictReader(f) |
collections | Counter, defaultdict, deque | Counter("banana").most_common(1) → [('a', 3)] |
itertools | mchanganyiko na minyororo ya virudiaji | itertools.chain(a, b) |
re | misemo ya kawaida (regular expressions) | re.findall(r"\d+", s) |
time | kusitisha na kupima muda | time.sleep(1), time.perf_counter() |
asyncio | msimbo wa usawazishaji | asyncio.run(main()) |
Katika Python 3.15 kuna lazy import (PEP 810): lazy import pandas as pd huahirisha upakiaji wa moduli hadi itakapotumika kwa mara ya kwanza, na script yenye utegemezi mzito huanza kwa kasi zaidi.
Amri za Python kwenye terminal
Kundi tofauti la maswali «amri za python» ni amri za kuendesha mkalimani na kusakinisha maktaba. Kwenye Windows badala ya python3 kwa kawaida huandikwa python au py.
| Amri | Inafanya nini |
|---|---|
python3 --version | kuonyesha toleo |
python3 | kufungua kiweko shirikishi REPL (kutoka — exit()) |
python3 script.py | kuendesha faili |
python3 -c "print(2 + 2)" | kutekeleza mstari mmoja |
python3 -m venv .venv | kuunda mazingira pepe |
source .venv/bin/activate / .venv\Scripts\activate | kuwasha mazingira (Linux, macOS / Windows) |
python3 -m pip install requests | kusakinisha kifurushi |
pip list, pip freeze > requirements.txt | orodha ya vifurushi na kuvihifadhi |
pip install -r requirements.txt | kusakinisha utegemezi kutoka faili |
python3 -m http.server 8000 | seva rahisi ya wavuti kwenye folda ya sasa |
uv init, uv add requests, uv run main.py | mradi, utegemezi na kuendesha kupitia kidhibiti uv |
Makosa ya kawaida ya wanaoanza
- Kulinganisha kwa
=— katika sharti inahitajika==;=moja ni upeanaji. - Koloni lililosahauliwa baada ya
if,for,deflinatoaSyntaxError. - Kujumlisha nyuzi na namba:
"Umri: " + 25ni kosa, andikaf"Umri: {25}". - Kubadilisha orodha wakati wa kuizungusha — pitia nakala
for x in a[:]au jenga orodha mpya. input()hurudisha nyuzi — kwa hesabu funga kwenyeint()aufloat().
Hitimisho
Sintaksia ya Python inategemea kujongea, koloni na seti ndogo ya miundo: masharti, mizunguko ya for na while, kazi, madarasa. Ongeza kwao kazi kadhaa zilizojengwa ndani na mbinu za nyuzi, orodha na kamusi — utamaliza sehemu kubwa ya kazi za kila siku. Hifadhi karatasi hii, na mambo haya yakishakuwa ya kawaida, endelea na moduli na usawazishaji; yote haya yanafafanuliwa kwa hatua kwa vitendo katika kozi «Python 3.15: kutoka mwanzoni hadi mtaalamu».
Maswali ya mara kwa mara
Ni nafasi ngapi za kujongea katika Python?
Kwa kiwango cha PEP 8 — nafasi 4 kwa kila ngazi. Muhimu ni kuwa sawa katika kizuizi chote na kutochanganya na tabu.
Orodha inatofautianaje na tuple?
Orodha inaweza kubadilishwa, unaweza kuiongezea na kuipanga papo hapo; tuple haibadiliki, kwa hiyo inafaa kama ufunguo wa kamusi na kwa seti za thamani zisizobadilika.
Ninawezaje kuona mbinu zote za kitu moja kwa moja kwenye Python?
Ita dir(obj) kwa orodha ya majina na help(obj) kwa maelezo — kwa mfano help(str) itaonyesha mbinu zote za nyuzi.
Kuna tofauti gani kati ya sort() na sorted()?
Mbinu list.sort() inapanga orodha yenyewe na kurudisha None, wakati kazi sorted() inarudisha orodha mpya na inafanya kazi na mkusanyiko wowote unaoweza kurudiwa.
Je, mstari unahitaji nukta-koma mwishoni?
Hapana. Nukta-koma inaruhusiwa kwa amri kadhaa kwenye mstari mmoja, lakini kwenye msimbo wa kawaida kila amri inaandikwa kwenye mstari wake.
Mada hii inafundishwa kwa kina pamoja na mazoezi katika kozi “Python 3.15: от новичка до профи”.
- Python 3.15 с нуля и для опытных: что нового и как учить
- Python 3.15: установка, REPL и первый скрипт за десять минут
- Переменные, числа и строки в Python: f-строки и t-строки
- Условия, циклы и match/case в Python: управляем ходом программы
- Списки, кортежи, словари и множества: frozendict в Python 3.15