fb pixel

while ... else

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։
Մուտք
Ելք
1208452
The number neither has a digit 3 nor a digit 7
12939078123
The number contains a digit 3 or 7
 
To check your solution you need to sign in
Sign in to continue