Xoşbəxtlər ölkəsinin parlamenti

   Xoşbəxtlər ölkəsinin çox maraqlı parlamenti var idi. Amfiteatr formasında olan bu parlamentdə millət vəkilləri çox orijinal bir qayda ilə əyləşirdilər. Bu qayda deputatların təvəllüdlərinin palindromluq dərəcəsinə əsaslanırdı.

amphitheater-at-club-o7

   Təvəllüdlərinin palindromluq dərəcəsi 0 olan deputatlar ön sırada, 1 olanlar növbəti, 2 olanlar ondan sonrakı sırada əyləşirdilər. Və beləcə bu palindromluq dərəcəsi artdıqca millət vəkilləri də amfiteatrın yuxarılarına doğru öz yerlərini tuturdular. Palindromluq dərəcəsini öyrənmək üçün hər deputat öz təvəllüdünü ggaaiiii formatında (məs. 10011001) təqdim etməliydi.

   Gəlin əvvəlcə palindrom ədəd və palindromluq dərəcəsinin nə olduğunu aydınlaşdıraq. Əgər verilmiş natural ədəd özünün tərsinə yazılışı ilə eynidirsə, bu ədəd palindrom ədəd adlanır. Məsələn 10011001 ədədi kimi. Əgər verilmiş ədəd palindrom deyilsə, onun rəqəmlərini əks sırada yazırıq və verilən ədədlə toplayırıq. Bu prosesi palindrom ədəd alınana qədər davam etdirirk. İcra edilən əməliyyatların sayı verilmiş ədədin palindromluq dərəcəsi adlanır.

  Sizdən tələb olunan təqdim edilmiş təvəllüdə görə palindromluq dərəcəsini müəyyən edən proqram tərtib etməkdir.

Giriş verilənlərinə nümunə:

10121978

   Çıxış verilənlərinə nümunə:

5

   Proqramı özünüz tərtib etməyə çalışın. Alınmasa, aşağıdakı həll ilə tanış ola bilərsiniz:

Screen Shot 2019-01-01 at 21.36.04

Gəlin Başlayaq

Ənənəvi proqramlaşdırma kitablarında işə başlamaq üçün gərək 20-30 səhifə oxuyasan sonra başlayasan. Mən isə nə özümü nə də Sizi yoracam, elə bir başa keçəcəyik əsas mətləbə. Biz o an nə lazımdırsa, ancaq onu öyrənəcəyik, əlavə məlumatlarla mövzudan yayınmayacağıq. Bu metodika Python dilini həm asan, həm də sürətli öyrənməyinizə imkan verəcək.

İşə başlamaq üçün əvvəlcə Python dilinin interpretatorunu yükləyib kompüterimizə instalyasiya etməliyik. Bunun üçün Python layihəsinin rəsmi http://python.org saytından öz əməliyyat sistemimizə uyğun olan versiyanı yükləməliyik. Qeyd edim ki, Python dilinin interpretatoru müxtəlif əməliyyat sistemləri (Windows, UNIX/Linux, Mac OS X və s.) üçün mövcuddur. Azərbaycan kompüter istifadəçilərinin əksəriyyəti öz kompüterlərində Windows əməliyyat sistemindən istifadə etdikləri üçün bizi də ən çox Windows platforması maraqlandıracaq.

Saytın Downloads bölməsindən Windows platformasını seçdikdən sonra qarşımıza aşağıdakı səhifə çıxacaq:

Hazırda Python dili iki istiqamət üzrə (Python 2.x və Python 3.x) inkişaf etdirilir. Aralarındakı fərqlərə dair qısa olaraq onu demək olar ki, Python 3.x realizasiyası daha sadə sintaksisə malikdir və bir sıra yeniliklərlə zəngindir. Odur ki, Sizə də bu istiqaməti məsləhət görürəm. Yuxarıdakı şəkildən də gördüyünüz kimi bu sətirlər yazılan zaman hər iki istiqamət üzrə son versiyalar Python 2.7.18 və Python 3.9.5 idi. Ola bilsin ki, Siz bu sətirləri oxuyan zaman daha yeni versiyalar yayılmış olsun. İstənilən halda Python 3.x üzrə son versiyanı yükləməyiniz məsləhət görülür. Bu kitabda da biz Python 3.x versiyası ilə işləyəcəyik.

ord() və chr() funksiyaları

   Python proqramlaşdırma dilinin built-in (daxili) funksiyalarından olan chr()ord() funksiyaları simvollarla işləyərkən işimizə yarayır.

ord(simvol)

Bu funksiya Unicode simvolunun kodunu qaytarır:

>>> ord('a') 
97 
>>> ord('\u263E') 
9790 
>>>

chr(kod)

Bu funksiya verilmiş koda əsasən unicode simvolunu qaytarır:

>>> chr(97) 
'a' 
>>> chr(9790) 
'☾' 
>>>

str() və repr() funksiyaları

   Python proqramlaşdırma dilində qiymətləri sətir tipinə çevirən iki funksiya nəzərdə tutulmuşdur: str()repr(). Siz bunlardan birincisi ilə artıq tanışsınız. Bu dərsimizdə repr() funksiyasını da nəzərdən keçirib onun str() funksiyasından fərqini göstərəcəyik.

   str() funksiyası verilmiş qiyməti sətir tipinə çevirib insan üçün oxunaqlı şəkildə təqdim edir. Ondan fərqli olaraq repr() funksiyası sətir tipinə çevirdiyi veriləni interpretatorun anlayacağı formaya salır. Bu zaman əgər ekvivalent sintaksis aşkar olunmursa, SytaxError xətası qeydə alınır. İnsan tərəfindən oxuna bilən formada təsvir edilə bilməyən obyektlər üçün str() funksiyası repr() funksiyasının qaytardığı qiyməti verəcək. Əsasən ədəd və strukturlar (siyahı və lüğət kimi) üçün hər iki funksiyanın qaytardığı qiymətlər eyni formada olur. Sətirlərdə isə nəticələr fərqli olur.

Aşağıdakı nümunələri nəzərdən keçirin:

>>> s='Salam Azərbaycan' 
>>> str(s) 
'Salam Azərbaycan' 
>>> repr(s) 
"'Salam Azərbaycan'" 
>>> 
>>> h1=str('salam\n') 
>>> h2=repr('salam\n') 
>>> print(h1) 
salam
 
>>> print(h2) 
'salam\n' 
>>>

Kvadrat tənliyinin kökləri

   Aşağıdakı proqram kvadrat tənliyinin köklərini tapmaq üçün tərtib olunmuşdur:

import math 

a=float(input('a-nı daxil edin: ')) 
b=float(input('b-ni daxil edin: ')) 
c=float(input('c-ni daxil edin: ')) 
d=b**2-4*a*c
if d>0:
    x1=(-b+math.sqrt(d))/(2*a)
    x2=(-b-math.sqrt(d))/(2*a)
    print('x1=',x1)
    print('x2=',x2)
elif d==0:
    x1=-b/(2*a)
    print('x1=x2=',x1)
else:
    print('Tənliyin həqiqi kökləri yoxdur.')

   Biz burada sqrt() funksiyasından istifadə etmək üçün standard modullardan olan math modulunu daxil etməliyik.