Такрор то рӯй додани чизе - Муқаддимаи барномасозӣ · Python
дарс кушода мешавад…
Даври while
Такрор то рӯй додани чизе
Даври while ва кай онро ба ҷои for интихоб кардан: break, continue, даврҳои беохир ва вуруде, ки бо сифр тамом мешавад. Баъд як адад, ки бо % 10 ва // 10 пора-пора мешавад.
Назария
Дарси 1 аз 7
Хониш: 18 дақиқа
Саволҳо: 4
Даври while
Даври for аз чизе мегузарад, ки пешакӣ маълум аст: фосилае, сатри ададҳо. Вале аксар вақт касе гуфта наметавонад, ки чанд гузариш лозим аст. Ду баробар хурд кардан, то 1 монад. Хондан, то 0 ояд. Тақсимкунандаҳоро санҷидан, то яке мувофиқ ояд. Ин кори while аст.
while танҳо шарт дорад. Python онро месанҷад. Агар дуруст бошад, Python тани сархатдорро иҷро мекунад ва барои санҷиши дубора бармегардад. Аввалин бор, ки нодуруст шавад, давр тамом мешавад. Ҳамаи боқӣ кори шумост:
оғозпеш аз давр гузошта мешавад;
шарт баъди while меояд;
қадамдар дохили тан гузошта мешавад. Агар онро фаромӯш кунед, i то абад 1 мемонад.
Санҷиш пеш аз ҳар гузариш, аз ҷумла якум, иҷро мешавад. Агар он фавран нодуруст бошад, тан ҳеҷ гоҳ иҷро намешавад.
for-ро истифода баред, вақте ки мешуморед ё аз чизе мегузаред: аз 1 то n, аз ҳар адади рӯйхат. while-ро истифода баред, вақте ки давр то рух додани чизе иҷро мешавад.
n-ро хонед (n на камтар аз 2 аст). Калонтарин тақсимкунандаи онро, ки аз n хурдтар аст, чоп кунед.
Вуруд
Баромад
Аз n - 1ба поён рафта, аввалин тақсимкунандае, ки давр вомехӯрад, калонтарин аст, барои ҳамин давр дарҳол қатъ мешавад. Он ҳамеша қатъ мешавад, зеро 1 ҳар ададро тақсим мекунад. Барои 91 он 90, 89, ..., 14-ро месанҷад ва дар 13 қатъ мешавад, зеро 91 = 7 · 13. Ҳамин давр барои n = 12 чӣ тавр кор мекунад, бубинед:
break давро фавран тамом мекунад, дар ҳар куҷо ки истад, ва барнома баъди давр идома меёбад. Он дар for ва while кор мекунад. Онро истифода баред, вақте ки лаҳзаи қатъ дар миёнаи тан фаро мерасад.
Ҳалзун дар таги чоҳи амиқии h метр аст. Ҳар рӯз он u метр боло мебарояд. Ҳар шаб d метр ба поён мелағжад. Дар ин ҷо u аз d калонтар аст. Он дар кадом рӯз берун мебарояд?
Вуруд
Баромад
while True шарти ҳамеша дурусте дорад. Танҳо он то абад иҷро мешуд ва break роҳи баромад аст. Он байни боло баромадан ва лағжидан меистад: вақте ки ҳалзун берун омад, шаб лағжиш нест. Барои h = 10, u = 3, d = 1 ҳалзун шомгоҳи чор рӯзи аввал дар баландии 3, 5, 7 ва 9 метр аст. Дар рӯзи 5 он то 11 боло мебарояд ва берун мешавад.
Гузаштани як гузариш: continue
continue боқимондаи танро мегузаронад ва ба гузариши оянда мегузарад.
Ададҳои ба 5 каратӣ гузаронида мешаванд. if дар атрофи print ҳамин корро мекард. continue вақте қулай аст, ки тан дароз аст ва қарори гузаронидан дар аввали он гирифта мешавад.
Ҳеҷ чиз i-ро тағйир намедиҳад:while i <= n: бо тане, ки ба i даст намерасонад.
Қадам ба самти нодуруст меравад:while i >= 1: бо i += 1.
i аз сарҳад меҷаҳад:while i != 10: бо i += 3, аз 2 оғоз карда. Қиматҳо 2, 5, 8, 11, 14, ... ва i ҳеҷ гоҳ 10 нест.
Ба роҳи баромад намерасад:while True: бо break, ки ба он намерасад.
Дар шарт < ва <=-ро ба != авлотар шуморед. Онҳо давро ҳатто вақте қатъ мекунанд, ки ҳисобкунак аз сарҳад ҷаҳида мегузарад. for бо фосила ҳеҷ гоҳ то абад иҷро шуда наметавонад: боз як сабаб, ки онро ҳар вақт имкон бошад, истифода баред.
Акнун қисмҳои даври while-ро чунон гузоред, ки он ҳамонро чоп кунад, ки билет мехоҳад.
Давр бояд инро чоп кунадсанҷида бин!
То сифр
Баъзан вуруд намегӯяд, ки чанд адад ҳаст. Қимати махсус охирро нишон медиҳад, аксар вақт 0, ки аз ҷумлаи ададҳо нест.
Ададҳо дар як сатр ҳастанд ва сатр бо 0 тамом мешавад. Баъди 0 боз ададҳо омада метавонанд, онҳоро бояд ба назар нагирифт. Чоп кунед, ки чандто аз ададҳои пеш аз 0 ҷуфтанд, ва ҷамъи онҳоро.
Вуруд
Баромад
Давр ҳамон for x in a-и пешин аст ва break дар 0 онро тамом мекунад. Сифр ҳеҷ гоҳ ҳисоб намешавад. Ададҳои баъди он ҳеҷ гоҳ дида намешаванд. Дар тестҳо баъзан дар он ҷо ададҳоро қасдан мегузоранд, то барномаеро, ки қатъ намешавад, бигиранд.
Агар ададҳо ҳар кадом дар як сатр меомаданд, пеш аз давр мехондед, x = int(input()), баъд while x != 0: ва дар охири тан боз мехондед.
Дар хотир доштани адади қаблӣ
Баъзе ҷавобҳо ду ҳамсояро талаб мекунанд: оё ин адад аз адади пеш аз он калонтар аст? Адади қаблиро дар тағйирёбанда нигоҳ доред ва онро дар охири ҳар гузариш навсозӣ кунед.
Ададҳо дар як сатр ҳастанд ва сатр бо 0 тамом мешавад. Чоп кунед, ки чандто аз онҳо аз адади фавран пеш аз худ калонтаранд.
Вуруд
Баромад
Ададҳое, ки аз адади қаблӣ калонтаранд, 5, 8 ва 9 мебошанд. Ду чиз муҳим аст. prev = xохирин меояд: вақте ки if иҷро мешавад, prev бояд ҳанӯз адади кӯҳна бошад. Ва prev аз адади аввал оғоз мекунад, барои ҳамин адади аввал аз худаш калон нест.