цикл. 3 дәріс - Циклдер және Функциялар (1). Python тілінде программалар ру
Скачать 5.93 Mb.
|
Python тілінде программалар құру3.1 – дәріс – Циклдер мен Функциялар Бөрібаев Бақыт Бөрібайұлы b.buribaev@gmail.com Мехмат ғимараты, 229 бөлме Сұрақтар
Күтілетін нәтижелер
что-то For циклі
for циклі
for айнымалы in [1-мән, 2-мән, ... ] оператор оператор ... оператор мұндағы 1-жол - for өрнегі , онда үтірлермен бөлінген мәндер беріледі, солардың әрқайсысы үшін шегініспен жазылған келесі операторлар қайталанып орындалады. Тік жақша ([…]) ішіндегі үтірмен бөлінген мәндер тізім деп аталады. for циклі# бұл for циклі программасы сандар тізімін қолданады print('1..5 арасындағы сандарды көрсету: ') for num in [ 1, 2, 3, 4, 5]: print (num) Нәтижесі: 1..5 арасындағы сандарды көрсету: 1 2 3 4 5 for циклі# Келесі for циклі тақ сандарды шығарады. print ('1 мен 10 арасындағы тақ сандар:') for i in range(10): if i%2==1: print(i)
Ол мәндер тізімін өз ретімен алып отырады. Мысалы, range(10) деп алсақ, ол 0, 1, ..., 9 мәндерін біртіндеп алып, циклді 10 рет қайталап орындайды. Нәтижесі: 1 мен 9 арасындағы тақ сандар: 1 3 5 7 9 for циклі
# Бұл цикл сөздерді 5 рет қайталайды. for x in range(5): print('Сіздерге сәлем жолдаймын!') for n in range(3,7): print('n=',n) Нәтижесі: Сіздерге сәлем жолдаймын! Сіздерге сәлем жолдаймын! Сіздерге сәлем жолдаймын! Сіздерге сәлем жолдаймын! Сіздерге сәлем жолдаймын! Нәтижесі: n = 3 n = 4 n = 5 n = 6 for циклі
for num in range(1,10,3): print('num=',num)
айнымалыны да қолдана аламыз. Мысалы, бүтін сандардың квадраттарын шығарайық: print('Сан \tСанның квадраты') print('--------------------') for number in range(1,4): square = number **2 print(number,'\t\t',square) Нәтижесі: num = 1 num = 4 num = 7 Нәтижесі: Сан Санның квадраты ----------------------------------
for циклі
# Цикл айнымалысының соңғы мәнін көрсету end = int(input('Hешеге дейін есептейік?')) print('Сан Санның квадраты') print('---------------------') for number in range(1, end + 1): square = number**2 print(number, '\t', square) Нәтижесі: Hешеге дейін есептейік? 5 Сан Санның квадраты --------------------- 1 1
for циклі
for num in range(5, 0, -1): print(num) Нәтижесі: 5 4 3 2 1 for циклінің мысалдары
print(i) а)
for j in range(3): print("i is {} and j is {}". format(i, j)) б) 0 1 2 3 4 5 6 7 8 9 i is 0 and j is 0 i is 0 and j is 1 i is 0 and j is 2 i is 1 and j is 0 i is 1 and j is 1 i is 1 and j is 2 i is 2 and j is 0 i is 2 and j is 1 i is 2 and j is 2 i is 3 and j is 0 i is 3 and j is 1 i is 3 and j is 2 i is 4 and j is 0 i is 4 and j is 1 i is 4 and j is 2 Нәтижелері: а) б) for циклінің мысалдары2-мысал: Сандар тізімі (жиым элементтері тәрізді) берілген. Сол тізімдегі сандардың әрқайсысын 2-ге арттыру керек. for циклі арқылы тізім элементтерін толық қарастыра отырып, олардың әрқайсысын 2-ге арттырамыз. tizim = [0,10,20,30,40,50,60,70,80,90]
print(tizim) Нәтижесі: [2, 12, 22, 32, 42, 52, 62, 72, 82, 92] for циклінің мысалдары3-мысал: Тіркес символдарын біртіндеп өңдеу және араларына басқа символдар кірістіру str = 'Сәлем' for әріп in str: print(әріп) for әріп in str: print(әріп, end = '') print() for әріп in str: print(әріп, end = '!') print() for әріп in str: print(әріп, end = '?!') Нәтижесі: С ә л е м Сәлем С!ә!л!е!м! С?!ә?!л?!е?!м?! while циклі (бұл да қабаттасып жазыла береді)
# өрнек ақиқат болса # әрекеттер орындау
while i < 5: print("i is %i" % i) i += 1 https://docs.python.org/3/reference/compound_stmts.html#the-for- statement while циклі
a) str1 = "+" i = 0 while i < 10: print (str1) i += 2 б) str1 = "+" i = 0 while i < 10: print (str1, end='') i += 2 Нәтижесі: + + + + + Нәтижесі: + + + + + а) б) while циклі
0, 1, 1, 2, 3, 5, 8, … fib1 = 0; fib2 = 1 print (fib1); print (fib2) i = 0; n = 7 while i < n: fib_sum = fib1 + fib2 print (fib_sum)
Нәтижесі: 0 1 1 2 3 5 8 13 21 while цикліb = {}".format(a, b)) 4- мысал: a = 10; b = 1 while a < 15: b = b * 2 print("a = {} a += 1
Практикалық жұмыс
Глобальдік айнымалылар
global a a = [] for i in ["red", "green", "blue", "black", "orange", "yellow", "white"]: a.append(i) Break операторы
Циклдегі continue операторы
while True: # infinite loop # True: шексіз цикл user_input = input(" Сәлем деп жаз, оны істемесең қайталай беремін! \t") print("Сөз енгіз: ", user_input) if user_input.lower() != "сәлем": continue else: print("Жақсы ұл/қыз екенсің! Сәлем деп жазарыңды білгенмін!") break Try – Except нұсқаулары
a = input("Бірдеңе енгізіңіз: ") try: a = int(a) except ValueError: # ValueError – аластама аты print("Бүтін санға түрлендірілмейтін мән енгізілді!") try except арқылы қатені анықтау
try: raise NameError('Сәлем дейік') except NameError: ('Aластама жоғалды!') raise Циклдердегі Else нұсқауы (бұл әзіл емес)
a=10 while a is not 0: print("a is %i" % a) a -=1 else: print("a has become %d :(" % a) for n in range(2, 10): for x in range(2, n): if n % x == 0: print(n, 'equals', x, '*', n//x) break else: # loop fell through without finding a factor print(n, 'is a prime number') Қорытынды
білетін болдыңыздар. Yes, yes, you are 3.2-дәріс. ФункцияларСұрақтар
Функциялар
... n-оператор болып саналады. Блок функция шақырылған сайын орындалады. Блок шегініспен (3-5 орын) жазылады. Олардағы шегіністер бірдей болуы тиіс.
def message(): # функцияны анықтау print('Мен - студентпін,') print('болашақта маман болып шығамын.' ) print(message()) # функцияны шақырып орындау Нәтижесі: Мен - студентпін, болашақта маман болып шығамын.
def main(): # main функциясын анықтау print('Мен Сізге мынаны айтайын деп едім.') message() # message функциясын шақырып орындау print('Қош болыңыз!') def message(): # message функциясын анықтау print('Мен - студентпін,') print('болашақта маман болып шығамын.' ) main() # main функциясын шақырып орындау Нәтижесі: Мен Сізге мынаны айтайын деп едім. Мен - студентпін, болашақта маман болып шығамын. Қош болыңыз! Программа блок-схемасы
ішінде жазылады да, соңында ‘Кері қайту’ сөзі жазылады.
main() ‘Мен айтайын..’ message() ‘Қош болыңыз’ Кері қайту message() ‘Мен студентпін’ ‘болашақта маман...’ Кері қайту
ды. Егер бір функциядағы код екінші бір функциядағы айнымалыны пайдаланатын болса, қате туындайды. Мысал қарастырайық. def main () : # Басты функцияны анықтау get_name () рrint('Сәлем, ', name) def get name(): # Бұл қате туындатады # get_name функциясын анықтау name = input ( 'Атыңыз кім: ' ) main() # Басты функцияны шақыру
5-жолда name айнымалысына ат енгізіледі. Бұл оператор get_name функциясында, сондықтан ол name бұл функция үшін локальді болып табылады. Осыған орай name айнымалысын get_name функциясынан тыс орналасқан оператор қол- дана алмайды.
оператор name айнымалысын қолдануға тырысады. Мұндай әрекет қате туындатады, себебі name айнымалысы get_name функциясы үшін локальді болып табылады. Нәтижесі: Атыңыз кім: Азат Traceback (most recent call last): File "C:/Users/.../funct.py", line 6, in main () # Басты функцияны шақыру. File "C:/Users/.../funct.py", line 3, in main рrint('Сәлем, ', name) # Бұл қате туындатады NameError: name 'рrint' is not defined
функцияларда да дәл осындай аттағы айнымалылар қолданыла береді. Мысал қарастырайық. # Бұл программа екі функцияда аттары бірдей екі # локальді айнымалыны (birds) пайдаланады. def main(): turgen() qarqaraly() # turgen функциясын шақыру # qarqaraly функциясын шақыру def turgen(): birds = 5000 # мұнда birds айнымалысы бар # birds айнымалысын анықтау print('Тurgen-де ', birds, 'құс бар.') def qarqaraly(): birds = 8000 # qarqaraly функциясында да birds айнымалысы бар # birds локальді айнымалысын анықтау main() print('Qarqaraly-да ', birds,'құс бар.') # басты функцияны шақыру Нәтижесі: C:\Users\...\Scripts\python.exe C:/Users/.../functions.py Тurgen-де 5000 құс бар. Qarqaraly-да 8000 құс бар.
аргументтерін есептеулерде немесе басқа да операцияларда пайдалана алады. параметрлер түріндегі айнымалылар берілуі мүмкін. def show_double(number): result = number * 2 print(result) екі еселенген мәнін қайтарады. # Бұл программа функцияға аргумент беруді көрсетеді def main(): value = 5 show_double(value) # show_double функциясы аргумент # қабылдап, оны екі еселейді def show_double(number): result = number * 2 print(result) main () # басты функцияны шақыру Нәтижесі: 10 Келесі алгоритмге сәйкес программа құрайық:
көрсетеміз.
intro – программаның не істейтінін көрсетеді. cups_to_gram – кеселер санын қабылдап алып, олардағы шәйдің неше грамм екендігі анықтайды. main – кеселер санын енгізеді, ол кейін функцияға беріледі. Осы алгоритм программасын құрайық. main intro cups_to_gram
cups = int(input('Кеселер саны: ')) cups_to_gram(cups_needed) # Граммға түрлендіру. def intro(): # intro функциясы енгізу терезесін көрсетеді. print('Өлшемдерді түрлендіру') print ('1 кесе = 150 грамм') def cups_to_gram(cups): # Бұл функция кесе санын алып, gram = cups * 150 # оны граммға айналдырады print('Бұл кеселерде', gram, ' грамм шәй бар. ') main() Нәтижесі: Өлшемдерді түрлендіру 1 кесе = 150 грамм Кеселер саны: 5 Бұл кеселерде 750 грамм шәй бар. Жолдарды шегініспен жазу
def my_function(): print('Ал ендігілері') print ('басқаша тәртіппен') print ('құрастырылған.') жол алдында <Таb> пернесін басу немесе <босорын> пернесін бірнеше рет басу. Бірақ шегініс жасау кезінде осы екі тәсілдің тек біреуін пайдалану керек, екеуін араластыра отырып қолдансаңыз, Python интерпретаторы шатасып қате беріп жатады. Жолдарды шегініспен жазу
Бақылау сұрақтары
def main(): # Мұнда 2 аргументі бар функция көрсетіледі print('12 және 45 сандарының қосындысы = ',end='') show_sum(12, 45) # Бұл функция 2 аргументті қосады def show_sum(num1,num2): result = num1 + num2 print(result) main() Нәтижесі: 12 және 45 сандарының қосындысы = 57
функцияға аргумент ретінде екі сөз тіркесі (2 тіркес) беріледі. def main (): # Бұл функцияға 2 аргумент - 2 тіркес беріледі first_name = input('Атыңызды енгізіңіз: ') last_name = input ('Тегіңізді енгізіңіз: ') print('Сіздің аты-жөніңіздің ауысып жазылуы:') reverse_name(first_name, last_name) def reverse_name(first, last): print(last, first) main() # Басты функцияны шақыру Нәтижесі: Атыңызды енгізіңіз: Азат Тегіңізді енгізіңіз: Байжанұлы Сіздің аты-жөніңіздің ауысып жазылуы: Байжанұлы Азат
параметр_аты = мәні мұндағы параметр_аты - бұл параметр түріндегі айнымалы аты, ал мәні - сол параметрге берілетін мән. Осы синтаксиске сәйкес берілген аргумент атаулы аргумент деп аталады. Келесі программа атаулы аргумент жұмы- сын көрсетеді. def main(): # Бұл программа атаулы аргументтерді қолданады # 1 мерзімдегі пайыз мөлшерін - 0.01, мерзімдер санын – 10, # шоттағы қаржы көлемін - $10 000 қолдана отырып, # пайыздық кірістер көлемін анықтау show_interest(rate=0.01, periods=10, principal=10000.0) # show_interest функциясы пайыздық кірістерді анықтайды. def show_interest(principal, rate, periods): interest = principal * rate * periods print('Қарапайым пайыздық кіріс көлемі$', format (interest, '.2f'), sep=' ') main () # Басты функцияны шақыру Нәтижесі: Қарапайым пайыздық кіріс көлемі$ 1000.00 Мұнда principal параметрінің функцияда 1-ші болып тұрғанымен, оны шақыруда 3- ші орында тұрғанына назар салыңыздар
number = random.randint(1, 100) import random def main(): number = random.randint(1, 10) # Кездейсоқ сан алу
Нәтижесі: Сан = 5
import random def main(): for count in range(5): print(random.randint(1,100)) # Санды көрсету main () # Басты функцияны шақыру Нәтижесі: 98 50 39 95 42
>>> import random Enter >>> random.randint(1,10) Enter 7 >>> random.randint(1,100) Enter 91 >>> random.randint(100,200) Enter 185 >>>
number = random.randrange(10) number = random.randrange(5,10) number = random.randrange(0, 101, 10) Бұл нұсқау нәтижесі: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] number = random.random()
number = random.uniform(1.0, 10.0) random.seed(10) import random Enter random.seed(10) Enter random.randint(1,100) Enter 74 random.randint(1,100) Enter 5 random.randint(1,100) Enter 55 random.randint(1,100) Enter 62 random.randint(1,100) Enter 74 Енді осы әрекеттерді қайталасақ, 74, 5, 55, 62 тізбегі қайталана береді. Бақылау сұрақтары
х = random.randint(1, 100) print(random.randint(1, 20)) print(random.random(10, 20)) print(random.random()) print(random.uniform(0.1, 0.5))
ол неге әсер етеді? керек?
ерекшелігі: функция жұмысын аяқтар шақта, return нұсқауы көрсетіледі: def функция_аты(): нұсқау нұсқау ... return өрнек return өрнек def sum(num1, num2): result = num1 + num2 return result
def main(): # Бұл программа функция мәнін қайтарады first_age = int(input('Жасыңызды енгізіңіз: ')) # Жас енгізу # Қолданушының жақын досының жасын енгізу second_age = int(input("Досыңыздың жасын енгізіңіз: ")) total = sum(first_age, second_age) # Екі жас қосындысын табу print('Екеуін қосқанда, ', total, 'жас.') # Жастар қосындысы # sum функциясы 2 аргументтің қосындысын табады def sum(num1, num2): return num1 + num2 main() Нәтижесі: Жасыңызды енгізіңіз: 18 Досыңыздың жасын енгізіңіз: 20 Екеуін қосқанда, 38 жас. Функциядан тіркестік мәндер қайтару
функцияларды жазуға болады. Мысалы, келесі функция қолдану- шыдан оның атын енгізуді сұрайды да, сонан кейін сол енгізілген тіркесті қайтарады: def get_name(): # Қолданушының енгізілген атын алу name = input('Атыңызды енгізіңіз: ') return name # Атты қайтару a=get_name() print('Сіздің атыңыз - ' + a) Нәтижесі: Атыңызды енгізіңіз: Азат Сіздің атыңыз - Азат
кезінде пайдаланылады. def is_even(number): # Сан жұп болса, status=True, әйтпесе status= Falseif (number % 2) == 0:status = True else:status = Falsereturn status # status айнымалысы мәнін қайтаруnumber = int(input('Сан енгізіңіз: '))if is_even(number): print ('Бұл жұп сан. ') else: print ('Бұл тақ сан. ') Нәтижесі: Сан енгізіңіз: 15 Бұл тақ сан. Сан енгізіңіз: 1256 Бұл жұп сан. Бірнеше мәндерді қайтару
return 1-өрнек, 2-өрнек, ... Бірнеше мәндерді қайтаруdef get_name(): # Қолданушының аты мен тегін енгізу. first = input ('Атыңызды енгізіңіз: ') last = input ('Тегіңізді енгізіңіз: ') return first, last # Екі мәнді де қайтару. first_name, last_name = get_name() print('Сіздің аты-жөніңіз -',first_name,last_name)
first_name, last name = get_name() Нәтижесі: Атыңызды енгізіңіз: Азат Тегіңізді енгізіңіз: Ғаниұлы Сіздің аты-жөніңіз - Азат Ғаниұлы Бақылау сұрақтары
def do_something(number): return number * 2 а) Бұл функция қалай аталады? ә) Функция не істейді? б) Жоғарыдағы функцияның анықталуына байланысты келесі нұсқау нені көрсетеді? print(do_something(10)) Тыңдағандарыңызға размет!Қымбатты Ada Lovelace! Сіздің циклдер жайлы идеяңыз үшін үлкен рахмет!Ada Lovelace
Biography.com Editors, (2014) Ada Lovelace Biography. Сайт: [https://www.biography.com/people/ada-lovelace-20825323] |