Программалауда практикалық тапсырмалар
2002 санын оқы — солдан оңға да, оңнан солға да БІРДЕЙ! Мұндай сандар палиндром деп аталады. Ал компьютер мұны қалай «көреді»? Ол санды әріптей оқи алмайды — тек цифрларды бөліп-бөліп алып, қайта құрастыра алады. Бұл қорытынды сабақта IV бөлімде үйренген БАРЛЫҚ құралды (циклдер, кірістіру, шарттар) БІРІКТІРІП, екі классикалық ҰБТ есебін шешеміз.
IV бөлімдегі көптеген есептің НЕГІЗІ — БІР ҚАРАПАЙЫМ операция: санның соңғы цифрын бөліп алу. Мұны екі оператормен жасаймыз: n % 10 — санның СОҢҒЫ цифрын береді (қалдық); n // 10 — санның СОҢҒЫ цифрын АЛЫП ТАСТАЙДЫ (бүтін бөлу).
Мысалы, n = 573: n % 10 = 3 (соңғы цифр), n // 10 = 57 (қалған сан).
Палиндром сан — солға да, оңға да бірдей оқылатын сан (мысалы, 1881, 2002).
A, B = map(int, input().split()) t = 0 for i in range(A, B+1): n = i s = 0 while n > 0: k = n % 10 # соңғы цифрды ал n //= 10 # оны санынан алып таста s = s*10 + k # жаңа санды «керісінше» құрастыр if s == i: t = 1 print(s, end=' ') if t == 0: print(-1)Қалай жұмыс істейді? i=2002 болсын. n=2002. 1-қадам: k=2, n=200, s=2. 2-қадам: k=0, n=20, s=20. 3-қадам: k=0, n=2, s=200. 4-қадам: k=2, n=0, s=2002. n=0 болғанда while тоқтайды. s=2002, i=2002 — ТЕҢ! Демек, 2002 — палиндром.
Жауабы: A=1800, B=2020 болса → 1881 1991 2002.
Басты идея: «керісінше құрастыру» — while циклінің ішінде s-ті ӘРҚАШАН 10-ға көбейтіп, жаңа цифрды соңына қосу арқылы жүзеге асады.
Соңғы есеп — үш деңгейлі кірістірілген циклдің КҮШІН көрсетеді: «цифрлары әртүрлі үштаңбалы сандардың саны нешеу?»
p = 0 for i in range(1, 10): # жүздік разряд: 1-9 for j in range(0, 10): # ондық разряд: 0-9 for k in range(0, 10): # бірлік разряд: 0-9 if i != j and j != k and i != k: p += 1 print(p)Идея: үш деңгей — үш разряд. Шарт i≠j and j≠k and i≠k — ЕКІ-ЕКІДЕН барлық жұп ӘРТҮРЛІ болуы керек дегенді білдіреді.
Жауабы: p = 648 (жүздік — 9 нұсқа: 1-9; ондық — қалған 9 нұсқа; бірлік — қалған 8 нұсқа). Тексеру: 9 × 9 × 8 = 648.
Басты идея: тіктөртбұрышты кестеде екі деңгей жеткілікті болды (жол, баған), ал «үш разрядты» есепте ҮШ деңгей керек — деңгей саны есептің «өлшеміне» тәуелді.
- Кез келген «санмен жұмыс» есебі % 10 мен // 10 операцияларынан басталады.
- Палиндром — санды керісінше құрастырып салыстыру.
- «Барлығы әртүрлі» есептері — кірістірілген циклмен барлық комбинацияны сұрыптап, әр ЖҰПТЫ тексеру арқылы шешіледі.
- Осымен IV бөлім — Python-да циклдерді программалау — толық аяқталды.