# OOPS & Python Programming (4351108) - Winter 2023 Solution (ગુજરાતી)
Solution guide for OOPS & Python Programming (4351108) Winter 2023 exam
પ્રશ્ન 1(અ) [3 ગુણ]
પાયથન પ્રોગ્રામિંગ લેન્ગવેજના કોઈ પણ 6 ઉપયોગો લખો.
જવાબ:
પાયથનના ઉપયોગોનું ટેબલ:
| ઉપયોગ ક્ષેત્ર | વર્ણન |
|---|---|
| વેબ ડેવેલપમેન્ટ | Django, Flask frameworks |
| ડેટા સાયન્સ | Analysis અને visualization |
| મશીન લર્નિંગ | AI model development |
| ડેસ્કટોપ એપ્લિકેશન | GUI using Tkinter, PyQt |
| ગેમ ડેવેલપમેન્ટ | Pygame library |
| ઑટોમેશન | Scripting અને testing |
સ્મરણ સૂત્ર: "Web Data Machine Desktop Game Auto"
પ્રશ્ન 1(બ) [4 ગુણ]
પાયથન પ્રોગ્રામિંગ લેન્ગવેજની કોઈ પણ 8 વિશેષતાઓ લખો.
જવાબ:
પાયથનની વિશેષતાઓનું ટેબલ:
| વિશેષતા | વર્ણન |
|---|---|
| સરળ સિન્ટેક્સ | વાંચવા અને લખવામાં સરળ |
| ઇન્ટરપ્રિટેડ | Compilation ની જરૂર નથી |
| ઑબ્જેક્ટ-ઓરિએન્ટેડ | OOP concepts સપોર્ટ કરે છે |
| ડાયનેમિક ટાઇપિંગ | Variables ને type declaration જરૂરી નથી |
| ક્રોસ-પ્લેટફોર્મ | Multiple OS પર ચાલે છે |
| મોટી લાઇબ્રેરીઓ | Rich standard library |
| ઓપન સોર્સ | ઉપયોગ અને modify કરવા માટે મફત |
| ઇન્ટરેક્ટિવ | REPL environment |
સ્મરણ સૂત્ર: "Simple Interpreted Object Dynamic Cross Large Open Interactive"
પ્રશ્ન 1(ક) [7 ગુણ]
પાયથનની for અને while લૂપનું કાર્ય સમજાવો.
જવાબ:
For Loop:
- પુનરાવર્તન: Sequences પર પુનરાવર્તન કરે છે (lists, strings, ranges)
- સિન્ટેક્સ:
for variable in sequence: - આપોઆપ: Iteration આપોઆપ handle કરે છે
While Loop:
- શરત આધારિત: જ્યાં સુધી શરત સાચી રહે છે
- મેન્યુઅલ નિયંત્રણ: Programmer iteration નો નિયંત્રણ કરે છે
- જોખમ: શરત કદી false ન બને તો infinite loop બની શકે છે
ડાયાગ્રામ:
goat
કોડ ઉદાહરણ:
Python
સ્મરણ સૂત્ર: "For આપોઆપ, While મેન્યુઅલ"
પ્રશ્ન 1(ક OR) [7 ગુણ]
પાયથનના break, continue અને pass સ્ટેટમેન્ટના કાર્ય સમજાવો.
જવાબ:
Break Statement:
- બહાર નીકળવું: સંપૂર્ણ loop ને terminate કરે છે
- ઉપયોગ: જ્યારે કોઈ specific condition મળે છે
- અસર: Control loop પછીના statement પર જાય છે
Continue Statement:
- છોડીને આગળ: ફક્ત current iteration skip કરે છે
- ઉપયોગ: Iteration માં specific values skip કરવા માટે
- અસર: Next iteration પર જાય છે
Pass Statement:
- Placeholder: કંઈ કરતું નથી, syntactic placeholder
- ઉપયોગ: જ્યારે syntax statement જોઈએ પણ કોઈ action નહીં
- અસર: કોઈ operation perform કરતું નથી
કોડ ઉદાહરણો:
Python
સ્મરણ સૂત્ર: "Break બહાર, Continue છોડીને, Pass રાહ"
પ્રશ્ન 2(અ) [3 ગુણ]
લિસ્ટના દરેક ઘટકનું મૂલ્ય 1 થી વધારવા માટેનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
કોડ:
Python
સ્મરણ સૂત્ર: "Loop Index અથવા Comprehension"
પ્રશ્ન 2(બ) [4 ગુણ]
વપરાશકર્તા પાસેથી 3 સંખ્યા લઈ તેની સરેરાશ શોધવા માટેનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
કોડ:
Python
મુખ્ય મુદ્દાઓ:
- ઇનપુટ: દશાંશ સંખ્યાઓ માટે
float()ઉપયોગ કરો - સૂત્ર: બધાનો સરવાળો કરીને સંખ્યા વડે ભાગો
- આઉટપુટ: Formatting માટે f-string ઉપયોગ કરો
સ્મરણ સૂત્ર: "Input Float, Sum Divide, Format Output"
પ્રશ્ન 2(ક) [7 ગુણ]
પાયથનનો list ડેટા ટાઈપ વિસ્તારથી સમજાવો.
જવાબ:
લિસ્ટની લાક્ષણિકતાઓ:
- ક્રમબદ્ધ: Elements sequence જાળવે છે
- બદલાવ પાત્ર: બનાવ્યા પછી modify કરી શકાય છે
- વિવિધ પ્રકારની: વિવિધ data types store કરી શકે છે
- ઇન્ડેક્સવાળી: Index વડે elements ને access કરી શકાય છે (0-based)
લિસ્ટ ઑપરેશન્સ ટેબલ:
| ઑપરેશન | Syntax | વર્ણન |
|---|---|---|
| બનાવવું | list = [1,2,3] | નવી list બનાવો |
| એક્સેસ | list[0] | Index વડે element મેળવો |
| Append | list.append(4) | અંતે element ઉમેરો |
| Insert | list.insert(1,5) | Specific position પર ઉમેરો |
| Remove | list.remove(2) | પહેલું occurrence દૂર કરો |
| Pop | list.pop() | છેલ્લું element દૂર કરીને return કરો |
| Slice | list[1:3] | Sublist મેળવો |
કોડ ઉદાહરણ:
Python
સ્મરણ સૂત્ર: "ક્રમબદ્ધ બદલાવપાત્ર વિવિધપ્રકારની ઇન્ડેક્સવાળી"
પ્રશ્ન 2(અ OR) [3 ગુણ]
for લૂપની મદદથી લિસ્ટના દરેક ઘટકનો સરવાળો શોધવા માટેનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
કોડ:
Python
સ્મરણ સૂત્ર: "શૂન્ય શરૂઆત, લૂપ ઉમેરો, કુલ પ્રિન્ટ"
પ્રશ્ન 2(બ OR) [4 ગુણ]
વપરાશકર્તા પાસેથી લીધેલા મૂડલ, વ્યાજદર અને વર્ષ પરથી સાદું વ્યાજ શોધવા માટેનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
કોડ:
Python
સૂત્ર:
- સાદું વ્યાજ = (P × R × T) / 100
- કુલ રકમ = મૂડલ + સાદું વ્યાજ
સ્મરણ સૂત્ર: "મૂડલ દર સમય, ગુણો ભાગો સો"
પ્રશ્ન 2(ક OR) [7 ગુણ]
પાયથનનો tuple ડેટા ટાઈપ વિસ્તારથી સમજાવો.
જવાબ:
ટ્યૂપલની લાક્ષણિકતાઓ:
- ક્રમબદ્ધ: Elements sequence જાળવે છે
- અપરિવર્તનીય: બનાવ્યા પછી modify કરી શકાતું નથી
- વિવિધ પ્રકારની: વિવિધ data types store કરી શકે છે
- ઇન્ડેક્સવાળી: Index વડે access કરી શકાય છે (0-based)
ટ્યૂપલ ઑપરેશન્સ ટેબલ:
| ઑપરેશન | Syntax | વર્ણન |
|---|---|---|
| બનાવવું | tuple = (1,2,3) | નવું tuple બનાવો |
| એક્સેસ | tuple[0] | Index વડે element મેળવો |
| Count | tuple.count(2) | Occurrences ગિનો |
| Index | tuple.index(3) | પહેલો index શોધો |
| Slice | tuple[1:3] | Sub-tuple મેળવો |
| Length | len(tuple) | Tuple નું size મેળવો |
| Concatenate | tuple1 + tuple2 | Tuples જોડો |
કોડ ઉદાહરણ:
Python
લિસ્ટ સાથે મુખ્ય તફાવત:
- અપરિવર્તનીય: Elements બદલી શકાતા નથી
- પરફોર્મન્સ: Lists કરતા વધુ ઝડપી
- ઉપયોગ: Fixed data collections માટે
સ્મરણ સૂત્ર: "ક્રમબદ્ધ અપરિવર્તનીય વિવિધપ્રકારની ઇન્ડેક્સવાળી"
પ્રશ્ન 3(અ) [3 ગુણ]
random મોડ્યૂલની કોઈ પણ 3 મેથડ સમજાવો.
જવાબ:
Random મોડ્યૂલ મેથડ્સ ટેબલ:
| મેથડ | Syntax | વર્ણન |
|---|---|---|
| random() | random.random() | 0.0 થી 1.0 વચ્ચે float |
| randint() | random.randint(1,10) | આપેલી range વચ્ચે integer |
| choice() | random.choice(list) | Sequence માંથી random element |
કોડ ઉદાહરણ:
Python
સ્મરણ સૂત્ર: "Random Float, Randint Integer, Choice Select"
પ્રશ્ન 3(બ) [4 ગુણ]
વપરાશકર્તા પાસેથી એક સ્ટ્રિંગ લઈને એમાંના દરેક 'a' નું સ્થાન પ્રિન્ટ કરવાનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
કોડ:
Python
મુખ્ય મુદ્દાઓ:
- Case-insensitive: 'a' અને 'A' બંને શોધવા માટે
.lower()ઉપયોગ કરો - Index tracking: range અથવા enumerate ઉપયોગ કરો
- આઉટપુટ ફોર્મેટ: સ્પષ્ટ position indication
સ્મરણ સૂત્ર: "લૂપ ઇન્ડેક્સ ચેક ઉમેરો પ્રિન્ટ"
પ્રશ્ન 3(ક) [7 ગુણ]
પાયથનનો string ડેટા ટાઈપ વિસ્તારથી સમજાવો.
જવાબ:
સ્ટ્રિંગની લાક્ષણિકતાઓ:
- અપરિવર્તનીય: બનાવ્યા પછી બદલી શકાતું નથી
- અનુક્રમ: Characters નો ordered collection
- ઇન્ડેક્સવાળી: Index વડે characters ને access કરી શકાય છે
- યુનિકોડ: બધી ભાષાઓ અને symbols સપોર્ટ કરે છે
સ્ટ્રિંગ મેથડ્સ ટેબલ:
| મેથડ | ઉદાહરણ | વર્ણન |
|---|---|---|
| upper() | "hello".upper() | Uppercase માં convert કરો |
| lower() | "HELLO".lower() | Lowercase માં convert કરો |
| strip() | " hello ".strip() | Whitespace દૂર કરો |
| split() | "a,b,c".split(",") | List માં split કરો |
| replace() | "hello".replace("l","x") | Substring replace કરો |
| find() | "hello".find("e") | Substring index શોધો |
| join() | ",".join(["a","b"]) | List elements join કરો |
સ્ટ્રિંગ ઑપરેશન્સ:
Python
મુખ્ય વિશેષતાઓ:
- જોડાણ: + operator વડે
- પુનરાવર્તન: * operator વડે
- સભ્યપદ: 'in' operator વડે
- ફોર્મેટિંગ: f-strings, .format(), % formatting
સ્મરણ સૂત્ર: "અપરિવર્તનીય અનુક્રમ ઇન્ડેક્સવાળી યુનિકોડ"
પ્રશ્ન 3(અ OR) [3 ગુણ]
math મોડ્યૂલની કોઈ પણ 3 મેથડ સમજાવો.
જવાબ:
Math મોડ્યૂલ મેથડ્સ ટેબલ:
| મેથડ | Syntax | વર્ણન |
|---|---|---|
| sqrt() | math.sqrt(16) | Square root ગણતરી |
| pow() | math.pow(2,3) | Power ગણતરી |
| ceil() | math.ceil(4.3) | Integer માં round up |
કોડ ઉદાહરણ:
Python
સ્મરણ સૂત્ર: "Square Root, Power Up, Ceiling Round"
પ્રશ્ન 3(બ OR) [4 ગુણ]
વપરાશકર્તા પાસેથી એક સ્ટ્રિંગ લઈને એમાં રહેલા અંગ્રેજી સ્વરોની સંખ્યા શોધવાનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
કોડ:
Python
મુખ્ય મુદ્દાઓ:
- સ્વર વ્યાખ્યા: બંને cases શામેલ કરો
- લૂપ કરો: String ના દરેક character માં
- ગિનતી તર્ક: Membership check કરો અને increment કરો
સ્મરણ સૂત્ર: "સ્વર વ્યાખ્યા, લૂપ ચેક, ગિનતી વધારો"
પ્રશ્ન 3(ક OR) [7 ગુણ]
પાયથનનો set ડેટા ટાઈપ વિસ્તારથી સમજાવો.
જવાબ:
સેટની લાક્ષણિકતાઓ:
- અક્રમ: Elements નો કોઈ નિશ્ચિત sequence નથી
- બદલાવ પાત્ર: Elements ઉમેરી/દૂર કરી શકાય છે
- અનન્ય: Duplicate elements allowed નથી
- પુનરાવર્તનીય: Elements માં loop કરી શકાય છે
સેટ ઑપરેશન્સ ટેબલ:
| ઑપરેશન | Syntax | વર્ણન |
|---|---|---|
| બનાવવું | set = {1,2,3} | નવો set બનાવો |
| Add | set.add(4) | Single element ઉમેરો |
| Remove | set.remove(2) | Element દૂર કરો (error if not found) |
| Discard | set.discard(2) | Element દૂર કરો (no error) |
| સંયોજન | `set1 | set2` |
| છેદ | set1 & set2 | સામાન્ય elements |
| તફાવત | set1 - set2 | ફક્ત set1 માંના elements |
સેટ ગણિતીય ઑપરેશન્સ:
Python
મુખ્ય ઉપયોગો:
- Duplicates દૂર કરવા: Lists માંથી
- ગણિતીય ઑપરેશન્સ: સંયોજન, છેદ
- સભ્યપદ પરીક્ષા: ઝડપી lookup
સ્મરણ સૂત્ર: "અક્રમ બદલાવપાત્ર અનન્ય પુનરાવર્તનીય"
પ્રશ્ન 4(અ) [3 ગુણ]
પાયથનમાં ક્લાસ શું છે? તે ઓબ્જેક્ટથી કઈ રીતે અલગ છે?
જવાબ:
ક્લાસ વિ. ઓબ્જેક્ટ સરખામણી:
| પાસું | ક્લાસ | ઓબ્જેક્ટ |
|---|---|---|
| વ્યાખ્યા | Blueprint અથવા template | ક્લાસનું instance |
| મેમરી | કોઈ memory allocate થતી નથી | Memory allocate થાય છે |
| અસ્તિત્વ | Logical entity | Physical entity |
| બનાવટ | class keyword ઉપયોગ કરીને | Class constructor ઉપયોગ કરીને |
ઉદાહરણ:
Python
મુખ્ય મુદ્દાઓ:
- ક્લાસ: Properties અને methods વ્યાખ્યાયિત કરતું template
- ઓબ્જેક્ટ: Specific values સાથેનું actual instance
- સંબંધ: એક ક્લાસ, અનેક ઓબ્જેક્ટ્સ
સ્મરણ સૂત્ર: "ક્લાસ Blueprint, ઓબ્જેક્ટ Instance"
પ્રશ્ન 4(બ) [4 ગુણ]
dictionary ડેટા ટાઈપની કોઈ પણ 4 મેથડ સમજાવો.
જવાબ:
Dictionary મેથડ્સ ટેબલ:
| મેથડ | Syntax | વર્ણન |
|---|---|---|
| keys() | dict.keys() | બધી keys મેળવો |
| values() | dict.values() | બધી values મેળવો |
| items() | dict.items() | Key-value pairs મેળવો |
| get() | dict.get('key') | Value સુરક્ષિત રીતે મેળવો |
કોડ ઉદાહરણ:
Python
સ્મરણ સૂત્ર: "Keys Values Items Get"
પ્રશ્ન 4(ક) [7 ગુણ]
કોઈ કાર્યો કરવા માટે યુઝર ડિફાઈન્ડ મોડ્યૂલ બનાવી તેને ઈમ્પોર્ટ કરી તેના ફંક્શનનો ઉપયોગ કરવાનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
મોડ્યૂલ બનાવવું (math_operations.py):
Python
મુખ્ય પ્રોગ્રામ (main.py):
Python
મુખ્ય મુદ્દાઓ:
- મોડ્યૂલ બનાવવું: Functions સાથે અલગ .py ફાઈલ
- Import પદ્ધતિઓ: import module અથવા from module import function
- ઉપયોગ: module.function() અથવા direct function() વડે access
સ્મરણ સૂત્ર: "બનાવો Import ઉપયોગ"
પ્રશ્ન 4(અ OR) [3 ગુણ]
પાયથન ક્લાસની મેથડ્સના પ્રકારો ટૂંકમાં સમજાવો.
જવાબ:
મેથડ્સના પ્રકારોનું ટેબલ:
| મેથડ પ્રકાર | Syntax | વર્ણન |
|---|---|---|
| Instance Method | def method(self): | Instance variables ને access કરે છે |
| Class Method | @classmethod def method(cls): | Class variables ને access કરે છે |
| Static Method | @staticmethod def method(): | Class/instance થી સ્વતંત્ર |
ઉદાહરણ:
Python
સ્મરણ સૂત્ર: "Instance Self, Class Cls, Static કંઈ નહીં"
પ્રશ્ન 4(બ OR) [4 ગુણ]
string ડેટા ટાઈપની કોઈ પણ 4 મેથડ સમજાવો.
જવાબ:
String મેથડ્સ ટેબલ:
| મેથડ | Syntax | વર્ણન |
|---|---|---|
| startswith() | str.startswith('pre') | Substring થી શરૂ થાય છે કે ચેક કરો |
| endswith() | str.endswith('suf') | Substring થી અંત થાય છે કે ચેક કરો |
| isdigit() | str.isdigit() | બધા digits છે કે ચેક કરો |
| count() | str.count('sub') | Substring ની occurrences ગિનો |
કોડ ઉદાહરણ:
Python
સ્મરણ સૂત્ર: "Start End Digit Count"
પ્રશ્ન 4(ક OR) [7 ગુણ]
રિકર્સીવ ફંક્શનની મદદથી આપેલ નંબરનો ફેક્ટોરીયલ શોધવા માટેનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
કોડ:
Python
Recursion Flow:
goat
મુખ્ય મુદ્દાઓ:
- Base case: Recursion બંધ કરે છે (n=0 અથવા n=1)
- Recursive case: Function પોતાને call કરે છે
- Error handling: Negative input માટે ચેક કરો
સ્મરણ સૂત્ર: "Base બંધ, Recursive Call, Error ચેક"
પ્રશ્ન 5(અ) [3 ગુણ]
સિંગલ ઇન્હેરિટન્સ બતાવવા માટેનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
કોડ:
Python
સ્મરણ સૂત્ર: "Parent Child Inherit Override"
પ્રશ્ન 5(બ) [4 ગુણ]
પાયથન ક્લાસમાં કન્સ્ટ્રક્ટરનું મહત્વ સમજાવો.
જવાબ:
કન્સ્ટ્રક્ટરનું મહત્વ:
| પાસું | વર્ણન |
|---|---|
| ઇનિશિયલાઇઝેશન | ઓબ્જેક્ટ બનાવવામાં આવે ત્યારે આપોઆપ call થાય છે |
| સેટઅપ | Instance variables ને values સાથે initialize કરે છે |
| મેમરી | Object attributes માટે memory allocate કરે છે |
| વેલિડેશન | Creation દરમિયાન input parameters validate કરે છે |
કન્સ્ટ્રક્ટરના પ્રકારો:
Python
મુખ્ય ફાયદાઓ:
- આપોઆપ execution: Manual call કરવાની જરૂર નથી
- ઓબ્જેક્ટ state: યોગ્ય initialization ensure કરે છે
- કોડ પુનઃઉપયોગ: એક જગ્યાએ common setup code
સ્મરણ સૂત્ર: "Initialize Setup Memory Validate"
પ્રશ્ન 5(ક) [7 ગુણ]
ઇન્હેરિટન્સ દ્વારા થતું મેથડ ઓવરરાઇડિંગ બતાવવા માટેનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
કોડ:
Python
મેથડ ઓવરરાઇડિંગ ડાયાગ્રામ:
goat
મુખ્ય મુદ્દાઓ:
- સમાન મેથડ નામ: Parent અને child classes માં
- અલગ implementation: Child class specific logic આપે છે
- Runtime નિર્ણય: Object type આધારે યોગ્ય method call થાય છે
- Super() ઉપયોગ: Parent class method ને access કરવા માટે
સ્મરણ સૂત્ર: "સમાન નામ અલગ તર્ક Runtime નિર્ણય"
પ્રશ્ન 5(અ OR) [3 ગુણ]
પાયથનમાં ડેટા એન્કેપ્સ્યુલેશનનો ખ્યાલ સમજાવો.
જવાબ:
ડેટા એન્કેપ્સ્યુલેશન:
| પાસું | વર્ણન |
|---|---|
| વ્યાખ્યા | Data અને methods ને એકસાથે બાંધવું |
| એક્સેસ કન્ટ્રોલ | Internal data ને direct access પર પ્રતિબંધ |
| ડેટા છુપાવવું | Internal implementation બહારથી છુપાવવું |
| ઇન્ટરફેસ | Methods દ્વારા controlled access પ્રદાન કરવું |
અમલીકરણ:
Python
સ્મરણ સૂત્ર: "બાંધો ડેટા છુપાવો ઇન્ટરફેસ"
પ્રશ્ન 5(બ OR) [4 ગુણ]
પાયથનમાં એબ્સ્ટ્રેક્ટ ક્લાસનો ખ્યાલ સમજાવો.
જવાબ:
એબ્સ્ટ્રેક્ટ ક્લાસ:
| કન્સેપ્ટ | વર્ણન |
|---|---|
| વ્યાખ્યા | સીધા instantiate ન થઈ શકતો ક્લાસ |
| એબ્સ્ટ્રેક્ટ મેથડ્સ | Declared પણ implemented નથી |
| અમલીકરણ | Subclasses એ abstract methods implement કરવા જોઈએ |
| હેતુ | Related classes માટે common interface વ્યાખ્યાયિત કરવો |
ABC વડે અમલીકરણ:
Python
મુખ્ય વિશેષતાઓ:
- Instantiate ન થઈ શકે: Abstract class objects બનાવી શકાતા નથી
- અમલીકરણ દબાણ: Subclasses એ abstract methods implement કરવા જોઈએ
- કોમન ઇન્ટરફેસ: સુસંગત method signatures ensure કરે છે
સ્મરણ સૂત્ર: "Instantiate ન થાય અમલીકરણ દબાણ કોમન ઇન્ટરફેસ"
પ્રશ્ન 5(ક OR) [7 ગુણ]
મલ્ટિપલ ઇન્હેરિટન્સ બતાવવા માટેનો પાયથન પ્રોગ્રામ લખો.
જવાબ:
કોડ:
Python
મલ્ટિપલ ઇન્હેરિટન્સ ડાયાગ્રામ:
goat
મુખ્ય મુદ્દાઓ:
- અનેક પેરેન્ટ્સ: Child બંને Father અને Mother થી inherit કરે છે
- મેથડ રિઝોલ્યુશન ઓર્ડર (MRO): કયો method call થશે તે નક્કી કરે છે
- કન્સ્ટ્રક્ટર કોલ્સ: Parent constructors ને સ્પષ્ટપણે call કરવા
- ડાયમંડ પ્રોબ્લેમ: Python MRO વડે handle કરે છે
આઉટપુટ:
Father constructor called
Mother constructor called
Child constructor called
Family Details:
Father: John
Mother: Mary
Child: Alice
Method Resolution:
Father works as Engineer
સ્મરણ સૂત્ર: "અનેક પેરેન્ટ્સ MRO કન્સ્ટ્રક્ટર ડાયમંડ"