Keyword և տեղային արգումենտներ

Ֆունկցիաներ կանչելիս մենք սովորաբար դրանց փոխանցում ենք արժեքներ և ֆունկցիան աշխատում է՝ այդ արժեքներն ունենալով։ Արժեքները հնարավոր է փոխանցել և՛ որպես տեղային պարամետրեր, և՛ որպես keyword պարամետրեր։
def rectangle(h, w, val=0):
	return [[val] * w] * h

print(rectangle(2, 3, 1))
# [[1, 1, 1], [1, 1, 1]]
def rectangle(h, w, val=0):
	return [[val] * w] * h

print(rectangle(2, w=3, val=1))
# [[1, 1, 1], [1, 1, 1]]
Հետևելով երկրորդ օրինակին՝ մենք կարող ենք ֆունկցիաներին փոխանցել արժեքներ՝ այդ արգումենտներին անուններ տալով (val=1 կամ w=3
Սա շատ օգտակար է այն ֆունկցիաների դեպքում, որոնք ունեն բազմաթիվ արգումենտներ, և դրանցից շատերն արդեն ունեն default արժեքներ, իսկ մենք ցանկանում ենք փոխանցել վերջիններից մեկի արժեքը։ Այս դեպքում մենք կարող ենք փոխանցել այդ արժեքը որպես keyword արգումենտ՝ նշելով դրա անունը։ Սա մեզ օգնում է փոխանցել միայն այն արգումենտները, որոնք մեզ անհրաժեշտ են և բաց թողնել մնացած բոլորը։
Նշենք, որ keyword արգումենտները կարող են ունենալ պատահական հերթականություն։ Այսինքն, քանի դեռ մենք ճիշտ անուններ ենք նշում և դրանց համապատասխան արժեքներ փոխանցում, դրանց հերթականությունը կարող է լինել խառը և չհամընկնել ֆունկցիայում նշված հերթականության հետ։
Այստեղ շատ կարևոր է նշել, որ տեղային արգումենտները չեն կարող լինել keyword արգումենտներից հետո։ Դրանք պետք է լինեն ֆունկցիայի կանչի սկզբում և միայն դրանից հետո պետք է նշվեն keyword արգումենտները։ Կարո՞ղ եք ասել, թե ինչու է նման սահմանափակում կիրառվում 🤔:

Առաջադրանք

Ունենալով մի ֆունկցիա, որը տպում է բուժառուների (պացիենտների) մասին ինֆորմացիա, կանչեք այդ ֆունկցիան 3 անգամ` արգումենտների հետևյալ հերթականությամբ.
  1. name, age, height
  1. age, name, height
  1. height, age, name
Ծրագրի ելքը կարող է լինել նույնը, բայց ֆունկցիան կանչելու համար դուք կարող եք օգտագործել և՛ տեղային, և՛ keyword արգումենտներ։
 

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