Thursday, June 11, 2015

თავი 3 (3,5 - 3,6)



3.5 Chained conditionals
3.5 მიჯაჭვული კავშირები

ხანდახან არის ორზე მეტი შესაძლებლობა და გვინდა ორზე მეტი ტოტი(კოდის) . ერთ-ერთი საშუალება გამოთვლის  გამოსახატად არის chained conditional (მიჯაჭვული კავშირი);

if x < y:
      print 'x is less than y'
elif x > y:
      print 'x is greater than y'
else:
      print 'x and y are equal'


elif არის “else if.” - ის აბრევიატურა.  კიდევ ერთხელ; ზუსტად ერთი ტოტი განხორციელდება.



elif ცნების რაოდენობაზე ლიმიტი არ არის. თუ არის else პირობა, ის უნდა იყოს კოდის ბოლოში, მაგრამ აქ არცერთის ყოფნაა არაა საჭირო:

if choice == 'a':
      print 'Bad guess'
elif choice == 'b':
      print 'Good guess'
elif choice == 'c':
      print 'Close, but not correct'

თითოეული პირობა შემოწმებულია რიგის მიხედვით. პირველი პირობა თუ მცდარია, შემოწმდება მეორე და. ა. შ. რომელიმე თუ მართალია შესაბამისი ტოტი განხორციელდება და ანგარიში მორჩება. თუ ერთზე მეტი პირობაა მართალი, მარტო პირველი მართალი ტოტი განხორციელდება.

3.6 Nested conditionals
3.6 დაბუდებული პირობითი კავშირი

პირობა შეიძლება ჩაბუდებული იყოს სხვა პირობაში. შეგვეძლო დაგვეწერა ასეც:

if x == y:
      print 'x and y are equal'
else:
      if x < y:
            print 'x is less than y'
      else:
            print 'x is greater than y'

ამ კოდს აქვს ორი ტოტი. პირველ ტოტში მარტივი ბრძანებაა , მეორე ტოტი შეიცავს სხვა if  პირობას, რომელსაც თავის მხრივ აქვს ორი ტოტი. ამ ორივე ტოტში მარტივი ბრძანებებია, თუმცა ეს ასევე შეიძლება ყოფილიყო პირობითი ცნებები


დაკბილულობა კოდს ხდის ხილვადს. დაბუდებული პირობითი  კავშირები  არის ძნელად წასაკითხი და ზოგადად კარგი იქნება თუ აირიდებ მსგავს კოდს.
ლოგიკური ოპერატორები ხშირად უზრუნველყოფენ გზას, რომ გაამარტივო ჩაბუდებული კავშირები. მაგალითად, შეგვიძლია გადავწეროთ კოდი ერთი პირობის გამოყენებით:

if 0 < x:
      if x < 10:
            print 'x is a positive single-digit number.'


print ბრძანება განხორციელდება თუ ორივე პირობა შესრულდება. ასეთივე კოდის დაწერა შეგვიძლია and ოპერატორის დახმარებით

if 0 < x and x < 10:
      print 'x is a positive single-digit number.'

No comments:

Post a Comment