5.7
მარყუჟის ნიმუშები
როცა გვინდა სიაში ვიპოვნოთ უმცირესი ან უდიდესი ელემენტი, ხშირად ვიყენებთ for
ან while
მარყუჟს
ეს მარყუჟები ჩვეულებრივ აგებულია:
·
ერთი ან ორი ცვლადის ინიციალიზება
სანამ მარყუჟი დაიწყება.
·
მარყუჟის კოდში გამოთვლების
შესრულება თითოეული ელემენტისთვის, ცვლადების სავარაუდო შეცვლა მარყუჟის კოდში.
·
Looking at the resulting
variables when the loop completes.
გამოვიყენებთ ციფრების სიას მარყუჟის ნიმუშის
კონსტრუქციის და კონცეფციის სადემონსტრაციოდ.
5.7.1 მთვლელი და შემაჯამებელი მარყუჟები
მაგალითად, სიაში ელემენტების
რაოდენობის დასათვლელად, შეგვეძლო დაგვეწერა მსგავსი for მარყუჟი.
count = 0
for itervar in [3, 41, 12, 9, 74,15]:
count = count + 1
print "count: ", count
სანამ მარყუჟი დაიწყებოდა, ცვლად count - ს მივანიჭეთ მნიშვნელობა
0, შემდეგ დავწერეთ for მარყუჟი, რომ ემოძრავა ციფრების სიაში. განმეორებად
ცვლადს დავარქვით itervar და სანამ მარყუჟში არ ვიყენებთ itervar - ს, არ აკონტროლებს მარყუჟს და ამიტომ მარყუჟის კოდი
სიაში ყოველი მნიშვნელობისთვის ხორციელდება ერთხელ. მარყუჟის სხეულში count - ის მნიშვნელობას ვუმატებთ
ერთს სიაში თითო მნიშვნელობისთვის. სანამ მარყუჟი ხორციელდება, count - ის მნიშვნელობა არის ციფრი, რომელიც
უკვე ვნახეთ. როცა მარყუჟი მორჩება count
- ის მნიშვნელობა იქნება ელემენტების რაოდენობის
ტოლი. ჩვენ გავაკეთეთ მარყუჟი და როცა მარყუჟში შესრულდება გვქნება ის, რაც გვინდოდა რომ გვქონიყო.
სხვა მსგავსი მარყუჟი, რომელიც ითვლის სიაში არსებული ციფრების ჯამს:
total = 0
for itervar in [3, 41, 12, 9, 74, 15]:
total = total + itervar
print 'Total: ', total
ამ მარყუჟში გამოვიყენეთ განმეორებადი ცვლადი. ნაცვლად იმისა რომ ერთი
დაგვემატებინა count - ისთვის - როგორც წინა მარყუჟში. ჩვენ დავუმატეთ არსებული ციფრები
(3, 41, 12, და.ა.შ. ) მთელი
მარყუჟის განმავლობაში. თუ ფიქრობ ცვლადზე total, ის შეიცავს “running total
of the values so far”.ასე რომ
სანამ მარყუჟი დაიწყება total უდრის ნულს, იმიტომ რომ ჯერ არცერთი მნიშვნელობა არ გვინახავს.
მარყუჟის განმავლობაში total არის მიმდინარე მარყუჟის ჯამი და მარყუჟის ბოლოს total არის საერთო ჯამი სიაში ყველა
მნიშვნელობისა.
როცა კი მარყუჟი განხორციელდება, total აჯამებს ელემენტებს; ასე გამოყენებულ ცვლადს ხანდახან ეძახიან შემგროვებელს.
არც დამთვლელი და არც შემაჯამებელი მარყუჟები არა არის განსაკუთრებით სასარგებლო
პრაქტიკაში, იმიტომ რომ არის ჩაშენებული ფუნქციები len() და sum(), რომელიც ითვლის ელემენტების რაოდენობას სიაში და ელემენტების
ჯამს სიაში.
5.7.2 მაქსიმუმი და
მინიმუმი მარყუჟები
სიაში ან რიგში უდიდესი მნიშვნელობის საპოვნელად ავაგეთ შემდეგი მარყუჟი:
largest = None
print 'Before:', largest
for itervar in [3, 41, 12, 9, 74, 15]:
if largest is None or itervar > largest :
largest = itervar
print 'Loop:', itervar, largest
print 'Largest:', largest
პროგრამა როცა განხორციელდება ამონაბეჭდი იქნება შემდეგი:
Before: None
Loop: 3 3
Loop: 41 41
Loop: 12 41
Loop: 9 41
Loop: 74 74
Loop: 15 74
Largest: 74
ცვლადი largest არის საუკეთესო
გამოხატულება "უდიდესი მნიშვნელობა რაც აქამდე გვინახავს- ის". მარყუჟამდე
largest მივანიჭეთ
მნიშვნელობა None. None არის სპეციალური, მუდმივი
მნიშვნელობა, რომელიც შეგვიძლია მივანიჭოთ ცვლადს, ამ ცვლადის -
როგორც ცარიელი ცვლადის შესანახად.
სანამ მარყუჟი დაიწყებოდა უდიდესი მნიშვნელობა იყო None. სანამ მარყუჟი ხორციელდება,
largest თუ არის
None , მაშინ ვიღებთ პირველ მნიშვნელობას რომელსაც ვხედავთ
როგორც უდიდესს . პირველ გამეორებაში როცა itervar
არის 3, მაშ შემდეგ largest არის None , მყისიერად ვანიჭებთ largest - ს მნიშვნელობას 3.
პირველი გამეორების შემდეგ largest
აღარ არის None, ლოგიკური გამოსახულების მეორე
ნაწილი ამოწმებს itervar > largest და მოქმედებს მაშინ, როცა მნიშვნელობა უფრო დიდია ვიდრე
აქამდე გვენახა. როცა ვხედავთ უფრო დიდ მნიშვნელობას, ვიღებთ ახალ მნიშვნელობას ცვლადისთვის
largest. პროგრამის ამონაბეჭდში შეგიძლია ნახო largest არის
3 - დან 41 და 74 - მდე.
მარყუჟის ბოლოში შევამოწმეთ ყველა მნიშვნელობა და ცვლადი largest - ს ენიჭება სიაში უდიდესის მნიშვნელობებად.
უმცირესი ციფრის გამოსათვლელად კოდი არის თითქმის იგივე:
smallest = None
print 'Before:', smallest
for itervar in [3, 41, 12, 9, 74, 15]:
if smallest is None or
itervar < smallest:
smallest = itervar
print 'Loop:', itervar,
smallest
print 'Smallest:', smallest
Again, smallest is the “smallest so far” before, during, and after the loop
executes.
როცა მარყუჟი სრულდება, smallest -ს ენიჭება სიაში უმცირესის მნიშვნელობა.
როგორც დათვლის და შეჯამების ფუნქციები, ჩაშენებული ფუნქციები max() და min() ამ მარყუჟების დაწერას ხდის ზედმეტს.
შემდეგი კოდი min() ფუნქციის მარტივი ვერსიაა:
def min(values):
smallest = None
for value in values:
if smallest is None
or value < smallest:
smallest =
value
return smallest
ფუნქციურ ვერსიაში print
ბრძანებები მოვაშორეთ.
No comments:
Post a Comment