if պայմանները կարող են ունենալ else բլոկներ, որոնք կկատարվեն, եթե if-ի պայմանը չբավարարվի: if պայմանների նմանությամբ՝ while ցիկլերը ևս կարող են ունենալ else բլոկներ, որոնք կկատարվեն, եթե while-ի պայմանը չկատարվի:
name = input()
if name != 'Alice':
print('I don\'t know you')
else:
print('Hi, Alice!')
print('End!')
name = input()
while name != 'Alice':
print('I don\'t know you')
name = input()
else:
print('Hi, Alice!')
print('End!')
Ծրագիրը կհուշի օգտվողին մուտքագրել իր անունը, եթե այն Alice չէ: Եթե անունը Alice է, ապա name != Alice պայմանը չի բավարարվի, և ծրագիրը կմտնի else բլոկի մեջ, որտեղ այն կտպի Hi, Alice!:
Իսկ չե՞նք կարող դա անել while-ից դուրս՝ անմիջապես print('End!')-ից առաջ
Այս օրինակում՝ այո՛, կարող ենք։ Բայց while ... else-ն իսկապես օգտակար է, երբ գործ ունենք break-ի հետ: Եթե դուրս գանք while ցիկլից break-ի պատճառով, else-ը չի կատարվի, քանի որ պայմանը դեռ պահպանվում էր, բայց մենք վաղաժամ դուրս եկանք break-ի պատճառով։ Իրականում, քննարկումներ էին տեղի ունենում, որպեսզի while ... else-ը անվանվի while ... nobreak։
Ենթադրենք՝ ուզում ենք ստուգել՝ արդյոք թիվը պարունակում է 5 թվանշանը, թե ոչ.
n = 123409087542108
while n != 0:
if n % 10 == 5:
print('The number contains a digit 5!')
break
n //= 10
else:
print('The number does not have a digit 5')
Այսպիսով, երբ while ցիկլը ընդհատվի break-ի պատճառով, else հայտարարությունը չի կատարվի, հետևաբար՝ ծրագիրը չի տպի երկրորդ հաղորդագրությունը, եթե այն արդեն գտել է 5 թվանշանը:
Եթե while ցիկլը հասնի ավարտին, և պայմանը չբավարարվի, else բլոկը կկատարվի, և ծրագիրը կտպի՝ The number does not have a digit 5։
Կարող ենք while ... else-ի իմաստը հիշել որպես while ... nobreak, բայց գրելիս օգտագործել else։
Առաջադրանք
Մուտքում տրված է մեկ ամբողջ թիվ: Ձեր խնդիրն է պարզել՝ արդյոք այն պարունակում է 3 կամ 7 թվանշանները: Եթե այո, ապա ծրագիրը պետք է տպի` The number contains a digit 3 or 7։ Հակառակ դեպքում այն պետք է տպի`The number neither has a digit 3 nor a digit 7։