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
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue