İnformatika, Proqramlaşdırma
Python sətirləri, siyahıları və funksiyaları: kodu addım-addım izlə
Sətirdən kəsik götürməyi, siyahını dəyişməyi və funksiyanın qaytardığı qiyməti tapmağı öyrənəcəksən, qısa kodun nə çap etdiyini əvvəlcədən deyə biləcəksən.
Oxumaq 4 dəqiqə çəkir

Telefonda «Salam» yazanda proqram onu beş simvoldan ibarət bir ardıcıllıq kimi görür. Sözlərin arasına boşluq qoysan, o da ayrıca simvol sayılır. Kontaktların, mahnı növbən və alış-veriş qeydlərin isə elementləri bir-birinin ardınca düzülmüş siyahılardır.
Python-da bunların hamısı ilə bir neçə qısa əmrlə işləyirsən: sözdən parça kəsirsən, siyahıya element artırırsan, təkrarlanan işi funksiyaya yığırsan. Bir xırda tələ də var: Python saymağa sıfırdan başlayır. Bunu bir dəfə yaxşı başa düşsən, kodu oxumaq xeyli asanlaşır.
Niyə lazımdır
Sətir və siyahı demək olar ki, hər proqramda var: istifadəçinin yazdığı ad, cavablar, ballar, sözlər. Funksiya isə eyni hesablamanı bir neçə yerdə yenidən yazmamaq üçündür: onu bir dəfə def ilə yazırsan, sonra adı ilə çağırırsan.
İmtahan tapşırıqlarında kod qısadır, amma hər sətrin önəmi var. Kəsiyin sonu, bir indeks sürüşməsi və ya > ilə >= fərqi cavabı tamam dəyişir. Ona görə də burada əsas bacarıq qısa kodu kağız üzərində addım-addım izləməkdir.
İmtahan bu mövzuda nə soruşur?
İmtahanda sətir və siyahı üzərində əməliyyatların nəticəsini, funksiyanın qaytardığı qiyməti və proqramın çıxışını müəyyənləşdirirsən. Sözləri uzunluğuna görə müqayisə edən, daxil edilən ədədləri siyahıda toplayan və qonşulardan böyük elementləri sayan proqram da yazırsan. Dövrün addımlarını və dəyişən qiymətləri izlə.
Qayda
- Sətir dırnaq arasında göstərilən simvollar ardıcıllığıdır; boşluq da simvoldur. input() sətir qaytarır, int() uyğun sətri tam ədədə çevirir. "4" + "2" nəticəsində "42", 4 + 2 nəticəsində 6 alınır.
- İndeks sıfırdan başlayır: a[0] ilk, a[-1] son elementdir. len(a) elementlərin sayını verir; son elementin indeksi len(a)-1 olur.
- Kəsik a[i:j] yazılışında i mövqeyini götürür, j mövqeyini götürmür. a[:j] başlanğıcdan, a[i:] isə i indeksindən sona qədər hissədir. Bu qayda həm sətirə, həm siyahıya aiddir.
- Sətirdə s.find(t) ilk uyğunluğun indeksini, uyğunluq yoxdursa -1 qaytarır. s.split() sözlərdən siyahı yaradır; " ".join(a) sətir elementlərini aralarında boşluq qoyaraq birləşdirir.
- Siyahı kvadrat mötərizələrlə yazılır; elementləri dəyişdirilə bilər. a.append(x) sona, a.insert(0,x) əvvələ element artırır. del a[i] indeksə görə, a.remove(x) isə ilk uyğun qiymətə görə silir.
- Funksiya def ilə təyin edilir, adından sonra mötərizədə parametrlər yazılır. Çağırışdakı arqument uyğun parametrə ötürülür. return nəticəni qaytarıb çağırışın icrasını bitirir; print() isə ekrana çıxarır. Gövdənin sətirləri girinti ilə ayrılır.
- for x in a elementləri, for i in range(len(a)) indeksləri gəzir. Siyahı yerində dəyişirsə, sonrakı addım yenilənmiş qiyməti oxuyur. İki qonşunu yoxlamaq üçün range(1,len(a)-1) sərhəd elementlərini kənarda saxlayır.
Tapşırıqlarda işlənən qaydalar
Öyrənilməli qayda
Funksiyaya ötürülən arqument parametrin qiyməti olur, return isə hesablanan nəticəni çağırış yerinə qaytarır. Bölənləri sayan bu funksiyada yalnız iki müsbət böləni olan natural ədəd sadə sayılır və qaytarılan qiymət siyahının uyğun elementinə mənimsədilir.
Öyrənilməli qayda
Şərtdəki funksiya çağırışı return ilə qaytarılan qiymətə görə yoxlanılır və while yalnız şərt doğru olduqca təkrarlanır. Azalan sayğacın tələb olunan qiymətdə dayanması üçün əvvəlki addımda hər iki şərt doğru, dayanma addımında isə onlardan ən azı biri yanlış olmalıdır.
Öyrənilməli qayda
split() boşluqlarla ayrılmış sözlərdən siyahı yaradır, len() isə hər sözün neçə simvoldan ibarət olduğunu göstərir. Sözləri başlanğıcdan yoxlayıb yadda saxlanan sözü yalnız daha uzunu ilə əvəz etdikdə bərabər uzunluqlu namizədlərdən əvvəl rast gəlinən qalır.
Öyrənilməli qayda
Siyahıda i mövqeyi indeksi, a[i] həmin mövqedəki qiyməti bildirir; a[i-1] və a[i+1] isə qonşulara müraciətdir. Hər iki qonşusu olan elementləri yoxlayarkən kənar mövqelər buraxılır və s=s+i əməliyyatı şərti ödəyən qiymətləri deyil, onların indekslərini toplayır.
Öyrənilməli qayda
insert(0,x) yeni elementi başlanğıca yerləşdirərək mövcud elementləri sağa sürüşdürür, append(x) isə onu sona artırır. Əlavələri verilən ardıcıllıqla yerinə yetirdikdən sonra a[l:r] kəsiyində l mövqeyindən r mövqeyinə çatmamış elementlər götürülür.
Öyrənilməli qayda
Boş olmayan y sətrində y.count(y[0]) ilə len(y) bərabərdirsə, bütün simvollar birinci simvolla eynidir. Rəqəmlərin sırası reverse() ilə çevrilib join() ilə birləşdirildikdən və alınan ədəd ilkin ədədə əlavə edildikdən sonra bu yoxlama aparılır; şərti ödəyən hallarda cəmə ilkin ədəd qatılır.
Öyrənilməli qayda
Müsbət tam ədəd üçün n%10 son rəqəmi verir, n//10 isə həmin rəqəmi atır; while şərti pozulan kimi rəqəmlərin emalı dayanır. Hər çağırışda s yenidən sıfırdan başlayır və return ilə alınan cəmlər çağırışların yazılış sırasına uyğun çıxılır.
Öyrənilməli qayda
Sözlərin uzunluqlarını len() ilə müqayisə edərək ən böyük uzunluğu müəyyənləşdirmək olar. Sonra ilkin siyahını başdan sona gəzib həmin uzunluqdakı hər sözü append() vasitəsilə boş nəticə siyahısına artırmaq həm təkrarları, həm də daxilolma sırasını qoruyur.
Öyrənilməli qayda
a[i] üzərinə mənimsətmə siyahıdakı həmin elementi dərhal yeniləyir və sonrakı müraciətlər artıq yeni qiyməti oxuyur. Buna görə ardıcıl emalda əvvəlki qonşu daha öncə dəyişdirilibsə, toplamada onun yenilənmiş qiymətindən istifadə edilir.
Öyrənilməli qayda
str() ədədin yazılışını sətirə çevirir, count() isə verilmiş simvolun bu yazılışda neçə dəfə göründüyünü sayır. Sayın məhz birə bərabərliyi yoxlanarkən həm sıfır, həm də birdən böyük saylar else qoluna düşür və əməl ilkin ədəd üzərində aparılır.
Öyrənilməli qayda
n elementli siyahıda iki qonşusu olan mövqeləri range(1,n-1) ilə gəzmək olar; elementin hər qonşudan ciddi böyük olması and ilə birləşdirilmiş iki müqayisə tələb edir. Şərt ödənəndə sayğac bir artırılır, üçdən az element olduqda isə dövr işləmədiyindən başlanğıc qiymət saxlanılır.
Öyrənilməli qayda
abs() girişin modulunu verir, funksiya çağırışları isə arqumentləri əsasında hesablanan qiymətləri return ilə qaytarır. Artan sayğacla f(i)<g(k) şərtini yoxlayan dövr bərabərlikdə və ya sol tərəf daha böyük olduqda dayanır; çap edilən qiymət şərtin ilk dəfə pozulduğu addıma aiddir.
Öyrənilməli qayda
Qeyri-mənfi tam a ədədi üçün (a//10)%10 onluq rəqəmini verir; funksiyanın return ilə qaytardığı qiymət seçim şərtində yoxlanır. Şərti keçən element b.append(i) ilə siyahının sonuna artırılır və əlavə olunan qiyməti i müəyyən edir.
Öyrənilməli qayda
s.count(c) ifadəsi c simvolunun s sətrindəki sayını, r.count(c)==0 isə həmin simvolun nəticə sətrində olmadığını göstərir. Simvolları soldan sağa yoxlayıb sayı birdən böyük olanları boş başlayan r sətrinə yalnız bir dəfə birləşdirmək ilk görünmə sırasını qoruyur; sonda r boş qalarsa, ayrıca çıxış halı işlənir.
Öyrənilməli qayda
s.count(x) metodu x hərfinin s sətrində neçə dəfə işləndiyini hesablayır; ilkin namizəd sətrin birinci hərfi, ilkin maksimum isə onun sayıdır. Soldan sağa baxış zamanı namizəd və maksimum yalnız daha böyük say tapıldıqda yenilənirsə, bərabər saylı hərflər arasında əvvəl görünən seçilmiş qalır.
Kod nə çap edir?
Hər kodu başında izlə, sonra cavabı seç.
Nümunələr
s="bulud" üçün s[1:4] və len(s) nəticələrini tap. Kəsiyə 1, 2, 3 indeksli simvollar düşür: "ulu". Sətirdə beş simvol olduğundan uzunluq 5-dir.
Aşağıdakı proqram nə çap edir?
Həllə bax
def artir(x): return x + 3
a = []
for x in [3, 8, 5]: a.append(artir(x))
print(a[1:])
Çağırışlar 6, 11, 8 qaytarır. Əlavələrdən sonra a=[6,11,8] olur; çap edilən kəsik [11,8]-dir.
a=[2,5,1] siyahısında i əvvəlcə 1, sonra 2 olduqda a[i]=a[i]+a[i-1] yerinə yetirilir. İlk dəyişikliklə a=[2,7,1] alınır. Növbəti addımda 1 üzərinə artıq 7 əlavə edilir: yekun [2,7,8]-dir.
Tipik səhv
if len(w) >= len(uzun): uzun = w
if len(w) > len(uzun): uzun = w
Ən uzun sözlərdən birincisini saxlamaq üçün yenisini yalnız uzunluğu daha böyükdürsə seç; bərabərlikdə əvəzləmə, yoxsa sonda bərabər sözlərin sonuncusu qalar.
Qonşularla müqayisədə də “böyük” şərti bərabər qiymətləri qəbul etmir. Elementin sıra nömrəsini də indekslə qarışdırma: üçüncü elementin indeksi 2-dir.
Özünü yoxla
Kodu izlə: s = "alma nar heyva"; a = s.split(); print(len(a[1])). Ekrana nə çıxar?
split() sözlərdən siyahı yaradır; a[1] ikinci söz olan "nar" sətridir. len() bu sözün simvollarını sayır və 3 qaytarır.
a = [5, 2, 5, 8] siyahısına a.remove(5) əmri tətbiq etsən, hansı siyahı alınar?
remove(5) qiyməti 5 olan ilk elementi silir. İkinci 5 siyahıda qalır və nəticə [2, 5, 8] olur.
Funksiya belə təyin olunub: def son(a): return a[-1]. print(son([8, 3, 6]) + 2) əmri nə çap edər?
a[-1] siyahının son elementi olan 6-dır və return bu qiyməti çağırış yerinə qaytarır. Üzərinə 2 əlavə olunduğundan ekrana 8 çıxır.
Bu mövzuda sınaq
Bu mövzunun tapşırıqlarını həll et və hər birinin izahını oxu.
Digər mövzular
Bütün İnformatika mövzuları- İnformatikaPython dövrləri və rəqəmlərlə işSəndən dövrün nəticəsini hesablamaq, yığılan cəmi ifadə şəklində yazmaq, verilmiş çıxışa uyğun başlanğıc…
- İnformatikaPython kodunda qiymətlər və şərtlərİmtahanda Python kodunu izləyərək çıxışdakı ədədi, mətni və ya sətirlərin ardıcıllığını müəyyənləşdirirsən.
Dərslikdə bu mövzu
- Dərslik: İnformatika, 9-cu sinif, «Sətirlər», səh. 75
- Dərslik: İnformatika, 9-cu sinif, «Siyahılar», səh. 80
- Dərslik: İnformatika, 9-cu sinif, «Funksiya», səh. 86