Bonus

   COVID-19 pandemiyası dövlət və özəl şirkətlərin də işini çətinləşdirmişdi. Böyük krizisə baxmayaraq MilliByte kompaniyası uğurlu fəaliyyət göstərərək xalis mənfəət və gəlirlərində artıma nail olmuşdu. Məhz buna görə də şirkətin rəhbəri bu uğurda rolu olan əməkdaşlarını mükafatlandırmaq qərarına gəlmişdi. Ay sonunda işçilər əmək haqqlarına əlavə olaraq bonus da alacaqdılar.

Working Notepad Bonus Salary Growth Success Promotion Concept

   Bu haqda elanlar lövhəsində məlumat da yerləşdirildi. Məlumatda həmçinin qeyd olundu ki, bir neçə günə kimin nə qədər bonus alacağı da elan olunacaq. Lakin rəhbərlik əməkdaşlarına veriləcək mükafatın məbləğinin hər kəs tərəfindən bilinməsini istəmirdi. Ona görə belə bir qərara gəldilər ki, bonus məbləğlərinin yerinə fərqli say sistemlərində verilmiş ədədlər yazsınlar. Əməkdaşların ad və soyadlarının yerinə isə onların yaşını qeyd etsinlər. Hər əməkdaş üçün say sistemi isə belə seçilirdi. Əməkdaşın yaşını götürərək onluq mövqedə duran rəqəmini silib üzərinə 2 gəlirdilər. Və beləcə alınan ədəd say sisteminin əsası qəbul edilirdi.

   İndi Sizdən tələb olunan MilliByte şirkətinin öz əməkdaşlarına nə qədər bonus verdiyini onluq say sistemində tapmaqdır.

   Əməkdaşların sayı 50-dən azdır, yaşları 100-dən çox deyil, aldıqları bonus onluq say sistemində 100000 manatdan çox deyil.

Giriş verilənlərinin formatı

   Birinci sətirdə bonus alacaq əməkdaşların sayı n (n < 50) verilir. Növbəti sətirlərdə isə  arada boşluq olmaqla əməkdaşın yaşı və hansısa say sistemində (rəqəm və böyük ingilis hərfləri ilə ifadə olunan) aldığı bonus miqdarı verilir.

Çıxış verilənlərinin formatı

   Hər əməkdaşın aldığı bonusun miqdarını onluq say sistemində ayrı-ayrı sətirlərdə çap etmək lazımdır.

Nümunə
Giriş verilənləri Çıxış verilənləri

2
28 2800
30 101

2800
5

   Proqramı özünüz tərtib etməyə çalışın. Əgər alınmasa, aşağıdakı həll ilə tanış olun.

Bonus

list() funksiyası

   list() funksiyası verilmiş ardıcıllıqdan/kolleksiyadan siyahı düzəldib qaytarır.

Funksiyanın sintaksisi aşağıdakı kimidir:

list(iterable)

   Burada iterable ardıcıllıq (sətir, siyahı və kortej) və ya kolleksiya (çoxluq və lüğət) tiplərində ola bilər. Funksiyada iterable parametrinin istifadəsi zəruri deyil, boş buraxıldığı təqdirdə funksiya boş siyahı qaytarır.

Aşağıda list() funksiyasının istifadəsi ilə bağlı nümunələr verilmişdir:

>>> m = list("PYTHON")
>>> print(m)
['P', 'Y', 'T', 'H', 'O', 'N']
>>>
>>> m = list([1,2,3,4,5])
>>> print(m)
[1, 2, 3, 4, 5]
>>>
>>> m = list(('a', 'e', 'i', 'o', 'u'))
>>> print(m)
['a', 'e', 'i', 'o', 'u']
>>>
>>> m = list({0,1,2,3,4,5,6,7,8,9})
>>> print(m)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>> m = list({'a': 1, 'e': 2, 'i': 3, 'o':4, 'u':5})
>>> print(m)
['a', 'e', 'i', 'o', 'u']
>>>
>>> m = list()
>>> print(m)
[]
>>>

Armud ağacı

   Mauqlinin böyüyüb başa çatdığı Seoni cəngəlliyində çox ləzzətli armudlar yetişirdi. Amma onların içərisində elə bir armud ağacı var idi ki, onun meyvələri tamam başqa aləm idi. Belə bir məsəl var, “meşədə armudun yaxşısını ayı yeyər”. Elə ona görə də bu armud ağacının yerini yalnız ayı Balu bilirdi.

armud_agaci

   Balu sevimli armud ağacının çiçəklənməsini və meyvə verməsini hər dəfə səbirsizliklə gözləyərdi. Ağac bar verməyə başlayanda ayı gəlib meyvələri sayar və onların n qədər olduğunu müəyyənləşdirərdi. O məhsulun bol olmasına sevinib Allaha şükr edərdi. Bu mövsüm də belə oldu, hər gün armud yeyəcəyini qət edən ayı mağarasına şad-xürrəm geri döndü. Seoni cəngəlliyinin torpaqları çox münbit olduğundan armudlar tez yetişirdi. Bir neçə gün sonra Balu yetişmiş armudları toplamağa gəldi. Bu onun məhsul yığımının ilk günü idi. Balu ağacda k sayda yetişmiş armud gördü və səliqəylə dərib səbətinə qoydu. Bu armudları o elə həmin gün yeyəcək və sabahısı gün yenidən gələcəkdi. Təcrübəsinə əsasən Balu bilirdi ki, hər yeni gün ağacdakı yetişmiş armudların sayı əvvəlki gündən m qədər çox olurdu.

Vitamins in Pear-02

   Balu həm də onu bilirdi ki, armudda çoxlu vitaminlər var. Odur ki, hər gün daha çox armud yemək onu qəti narahat etmirdi.

   İndi Sizdən tələb olunan ayı Balunun sonuncu gün, yəni n-ci armudun yetişdiyi gün neçə armud yeməsini tapmaqdır.

Giriş verilənlərinin formatı

  Tək sətirdə n, km (1000000000-ı aşmayan) tam ədədləri verilir.

Çıxış verilənlərinin formatı

  Məsələnin cavabı olan tam ədədi tək sətirdə çap etmək lazımdır.

Nümunə
Giriş verilənləri Çıxış verilənləri

10 1 1

4

100 20 10

10

Proqramı özünüz tərtib etməyə çalışın. Əgər alınmasa, aşağıdakı həll ilə tanış olun.

pear_tree

 

divmod() funksiyası

   divmod() funksiyası tam və ya həqiqi ədəd tipində iki parametr qəbul edir və birincini ikinciyə bölərək natamam qismətqalığı kortej şəklində qaytarır.

Funksiyanın sintaksisi aşağıdakı kimidir:

divmod(a, b)

   Burada a bölünən, b isə bölən ədəddir. Hər iki parametr tamhəqiqi ədəd tipində ola bilər, onların kompleks ədəd tipində verilməsi yolverilməzdir.

Aşağıda divmod() funksiyasının istifadəsi ilə bağlı nümunələr verilmişdir:

>>> x, y = divmod(5, 2)
>>> print(x, y)
2 1
>>>
>>> x, y = divmod(8.4, 3)
>>> print(x, y)
2.0 2.4000000000000004
>>>
>>> x, y = divmod(7.5, 2.5)
>>> print(x, y)
3.0 0.0
>>>
>>> print(divmod(0xa, 0x3))
(3, 1)
>>>

abs() funksiyası

   abs() funksiyası verilmiş ədədin modulunu qaytarır.

Funksiyanın sintaksisi aşağıdakı kimidir:

abs(x)

   Burada x int (tam), float (həqiqi) və complex (kompleks) ədəd tipində ola bilər.

Aşağıda abs() funksiyasının istifadəsi ilə bağlı nümunələr verilmişdir:

>>> print(abs(-5))
5
>>> print(abs(-1.25))
1.25
>>> print(abs(3 - 4j))
5.0
>>>

pow() funksiyası

   Bildiyiniz kimi ədədi qüvvətə yüksəltmək üçün x**y riyazi ifadəsindən istifadə etmək mümkündür. Bununla yanaşı Python dilində pow() funksiyası da nəzərdə tutulmuşdur.

Funksiyanın sintaksisi aşağıdakı kimidir:

pow(base, exp, mod)

   Burada base əsasdır; int (tam), float (həqiqi) və complex (kompleks) ədəd tipində ola bilər. İkinci parametr exp qüvvət üstüdür; o da həmçinin int (tam), float (həqiqi) və complex (kompleks) ədəd tipində ola bilər. İstifadəsi zəruri olmayan üçüncü parametr mod isə qüvvətə yüksəldilmiş ədədi qalıqlı bölmə ilə bölən ədəddir. Əgər pow() funksiyasında mod parametri istifadə edilirsə, base (əsas) və exp (qüvvət üstü) int (tam ədəd) tipində verilməli, və exp (qüvvət üstü) mənfi ədəd olmamalıdır.

Aşağıda pow() funksiyasının istifadəsi ilə bağlı nümunələr verilmişdir:

>>> print(pow(2, 3))
8
>>> print(pow(3.5, 4))
150.0625
>>> print(pow(-2, 2))
4
>>> print(pow(4, -2))
0.0625
>>> print(pow(3+4j, 5))
(-237-3116j)
>>> print(pow(3+4j, 2+3j))
(1.4260094753925756+0.6024346301905391j)
>>>

Aşağıdakı misalda isə mod parametrindən istifadə olunur:

>>> print(pow(3, 2, 4))
1
>>> print(pow(4, 3, 2))
0
>>>

pow() funksiyası ikilik, səkkizlik, və onaltılıq ədədlərlə də istifadə oluna bilər:

>>> print(pow(0b11, 2))
9
>>> print(pow(0o123, 3))
571787
>>> print(pow(0xFB, 4))
3969126001
>>>

   Sonda qeyd etmək yerinə düşərdi ki, math modulunun da math.pow(x, y) adlı oxşar funksiyası vardır.

sum() funksiyası

   sum() funksiyası verilmiş ardıcıllığın/kolleksiyanın elementlərini toplayır və cəmi qaytarır.

Funksiyanın sintaksisi aşağıdakı kimidir:

sum(iterable, start)

   Burada iterable ardıcıllıq (siyahı və kortej) və ya kolleksiya (çoxluq və lüğət) tiplərində ola bilər. İstifadəsi zəruri olmayan ikinci parametr start isə yekun cəmə əlavə olunan qiymətdir. Default qiyməti 0 olaraq təyin edilib. Funksiya yalnız ədədi qiymətləri toplamaq üçün nəzərdə tutulub. Odur ki, ardıcıllığın elementləri mütləq şəkildə ədədlərdən ibarət olmalı və start parametri sətir olmayan qiymətlə təyin edilməlidir. Əks halda xəta qeydə alınacaq.

Aşağıda sum() funksiyasının istifadəsi ilə bağlı nümunələr verilmişdir:

>>> # ardıcıllıq siyahıdır
>>> m = [1, 2.5, -3, 5]
>>> cem = sum(m)
>>> print(cem)
5.5
>>>
>>> # ardıcıllıq kortejdir
>>> m = (10, 30, 120)
>>> cem = sum(m)
>>> print(cem)
160
>>>
>>> # kolleksiya çoxluqdur
>>> m = {1, 2, 3, 4, 5}
>>> cem = sum(m)
>>> print(cem)
15
>>>
>>> # kolleksiya lüğətdir
>>> m = {1: "bir", 2: "iki", 3: "üç"}
>>> cem = sum(m)
>>> print(cem)
6
>>>

Son nümunədə sum() funksiyası verilmiş lüğətin açarlarını toplayır.

Aşağıdakı misalda isə start parametrindən istifadə olunur:

>>> m = [10, 20, 30]
>>> cem = sum(m, 100)
>>> print(cem)
160
>>>

Anonim funksiyalar

   Biz indiyə qədər funksiyaları def açar sözündən istifadə edərək təyin etdik. Bundan başqa Python proqramlaşdırma dilində anonim funksiyalar da vardır ki, onlar da lambda açar sözü (lambda-ifadələr) ilə təyin olunurlar. Adsız olaraq təyin edilən anonim funksiyalara lambda funksiyalar da deyilir.

   Anonim funksiya aşağıdakı kimi elan edilir:

lambda arqumentlər: ifadə

   Lambda funksiyalarda arqumentlər istənilən sayda, ifadə isə yalnız bir dənə ola bilər. Buradakı ifadə icra olunaraq (hesablanaraq) anonim funksiyanın qiyməti kimi qaytarılır. Funksiya obyektləri tələb olunan hər yerdə anonim funksiyalar tətbiq oluna bilər. Lambda-ifadələr adətən qısa funksiyaları təyin etmək üçün istifadə olunurlar.

   Gəlin aşağıdakı nümunələri nəzərdən keçirək:

>>> sqrsum = lambda x,y: x**2+y**2
>>> sqrsum(3,4)
25
>>> print((lambda x: x**3) (5))
125
>>>

   Birinci misaldan da gördüyünüz kimi lambda funksiya elan edilərək hər hansı bir dəyişənə mənimsədilə bilər. İkinci misalda isə lambda funksiya təyin edildikdən həmən sonra istifadə edilir və print() funksiyasına arqument kimi ötürülür.

max() funksiyası

   max() funksiyası verilmiş ardıcıllığın (sətir, siyahı və kortej) və ya kolleksiyanın (çoxluq və lüğət) ən böyük elementini qaytarır. Bu funksiya həmçinin iki və daha çox parametr arasından ən böyüyünü tapmaq üçün də istifadə edilir.

   Beləliklə max() funksiyasının iki cür yazılış forması vardır.

1. Ardıcıllığın/kolleksiyanın ən böyük elementini tapmaq üçün:

max(iterable, *iterables, key, default)

   Gəlin parametrləri nəzərdən keçirək.

  • iterable – ardıcıllıq (sətir, siyahı və kortej) və ya kolleksiya (çoxluq və lüğət) tiplərində ola bilər.
  • *iterables (istəyə bağlı) – birdən çox ardıcıllıq/kolleksiya verilə bilər.
  • key (istəyə bağlı) – ardıcıllığın/kolleksiyanın elementlərinə müqayisədən öncə tətbiq edilən funksiyadır. Default qiyməti None olaraq təyin edilib, bu halda müqayisə bir-başa olaraq aparılır.
  • default (istəyə bağlı) – əgər verilmiş ardıcıllıq/kolleksiya boşdursa, default olaraq göstərilən qiymət qaytarılır. Defaul qiymət təyin edilməmişsə və verilmiş ardıcıllıq/kolleksiya da boşdursa, o zaman xəta qeydə alınır.

Bir neçə misalları nəzərdən keçirək:

>>> nums = [3, -2, 8, -5, 10, 6]
>>> max_num = max(nums)
>>> print("Ən böyük element:", max_num)
Ən böyük element: 10
>>>

   Yuxarıdakı misalda biz bir ardıcıllıq verdik və max() funksiyası bu ardıcıllığın ən böyük elementini tapdı.

   Aşağıdakı misallarda key parametri istifadə edilir:

>>> lets = ["c", "b", "a", "Y", "Z"]
>>> print(max(lets, key = str.lower))
Z
>>>

   Burada ardıcıllıq kimi hərflər (sətir tipli siyahı) verilmişdir, key olaraq isə sətrin böyük hərflərini kiçik hərflərə çevirən lower() metodu təyin edilmişdir. Bu zaman öncə siyahının bütün elementləri kiçik hərfə çevriləcək və yalnız bundan sonra ən böyük element (kiçik hərfinin kodu ən böyük olan simvol) tapılacaq.

   Başqa bir misalı nəzərdən keçirək:

>>> nums = [3, -2, 8, -5, 10, 6]
>>> max_sqr_num = max(nums, key = lambda i: i**2)
>>> print("Kvadratı ən böyük element:", max_sqr_num)
Kvadratı ən böyük element: 10
>>>

   Burada key parametri kimi ədədi kvadrata yüksəldən anonim funksiyadan (lambda-ifadə) istifadə edirik. Bu zaman max() funksiyası bizə hansı elementin kvadratı ən böyük olacaqsa o elementi qaytarır.

   max() funksiyasında birdən çox ardıcıllıq verilə bilər:

>>> max_list = max([1,2],[1,2,3],[1,2,3,4])
>>> print("Ən uzun siyahı:", max_list)
Ən uzun siyahı: [1, 2, 3, 4]
>>>

   Bu halda bizə elementlərinin sayı ən çox olan ardıcıllıq (indiki halda siyahı) qaytarılacaq.

   Qeyd edildiyi kimi max() funksiyasında ardıcıllıq kimi sətir verilə bilər:

>>> max_let = max("PYTHON")
>>> print(max_let)
Y
>>>

   Bu zaman sətrin kodu ən böyük olan simvolu qaytarılacaq.

İndi isə gəlin max() funksiyasında birdən çox sətir verilməsi halına baxaq:

>>> prog_langs = ["Python", "Delphi", "Java"]
>>> largest_string = max(prog_langs);
>>> print(largest_string)
Python
>>>

   Bu zaman əlifba sırasına uyğun olaraq ən uzaqdakı sətir (indiki halda Python) qaytarılacaq. Bunun səbəbi P simvolunun kodunun DJ simvollarının kodlarından böyük olmasıdır.

   Əgər max() funksiyasını tətbiq etdiyiniz ardıcıllığın boş olma ehtimalı varsa, default parametrindən istifadə etməyiniz məsləhət görülür:

>>> m = []
>>> print(max(m, default = "Siyahı boşdur!"))
Siyahı boşdur!
>>>

   max() funksiyasında kolleksiya kimi lüğətlərdən (dict tipi) istifadə oluna bilər:

>>> digs = {1: "bir", 2: "iki", 3: "üç", 4: "dörd", 5: "beş"}
>>> print(max(digs))
5
>>>

   Yuxarıdakı misalda max() funksiyası lüğətin ən böyük açarını qaytarır.

   Digər misalı nəzərdən keçirək:

>>> digs = {1: "bir", 2: "iki", 3: "üç", 4: "dörd", 5: "beş"}
>>> max_digs_value = max(digs, key = lambda k: digs[k])
>>> print(max_digs_value)
3
>>>

   Burada key parametri kimi açara görə qiyməti verən anonim funksiyadan istifadə edirik. Bu zaman max() funksiyası bizə qiyməti ən böyük olan (əlifba sırasına görə) açarı qaytaracaq.

2. İki və daha çox parametr arasından ən böyüyünü tapmaq üçün:

max(arg1, arg2, *args, key)

Gəlin parametrləri nəzərdən keçirək.

  • arg1 – obyektdir; ədəd, sətir və s. tipdə ola bilər.
  • arg2 – obyektdir; ədəd, sətir və s. tipdə ola bilər.
  • *args (istəyə bağlı) – birdən çox obyekt verilə bilər.
  • key (istəyə bağlı) – obyektlərə müqayisədən öncə tətbiq edilən funksiyadır. Default qiyməti None olaraq təyin edilib, bu halda müqayisə bir-başa olaraq aparılır.

Aşağıdakı misalları özünüz nəzərdən keçirin:

>>> max_num = max(4, 15, -23, 5)
>>> print(max_num)
15
>>>
>>> max_num = max(4, 15, -23, 5, key = abs)
>>> print(max_num)
-23
>>>
>>> max_fr = max("alma", "armud", "ananas")
>>> print(max_fr)
armud
>>>
>>> max_fr_len = max("alma", "armud", "ananas", key = len)
>>> print(max_fr_len)
ananas
>>>

Armstronq ədədləri

   Hesab aləmində çoxlu maraqlı ədədlər vardır. Belə ədədlərə nümunə kimi Armstronq ədədlərini göstərmək olar. Əgər n-rəqəmli ədədin rəqəmlərinin n-ci qüvvətlərinin cəmi həmin ədədin özünə bərabərdirsə, belə ədəd Armstronq ədədi adlanır.

armstrong_number

Məsələn: 153 = 13 + 53 + 33 ; 1634 = 14 + 64 + 34 + 44

Sizdən tələb olunan a-dan b-yə qədər bütün Armstronq ədədlərin tapmaqdır.

Giriş verilənlərinin formatı

  Tək sətirdə ab (100ab999) tam ədədləri verilir.

Çıxış verilənlərinin formatı

  a-dan b-yə qədər bütün Armstronq ədədlərini tək sətirdə çap etmək lazımdır.

Nümunə
Giriş verilənləri Çıxış verilənləri

100 400

153 370 371

   Proqramı özünüz tərtib etməyə çalışın. Əgər alınmasa, aşağıdakı həll ilə tanış olun.

armstronq_ededleri