0% found this document useful (0 votes)
57 views209 pages

Advanced Python Material PDF

الوثيقة تشرح ماهية الفئات في برمجة بايثون. تعرض كيفية تعريف الفئات وخصائصها وطرقها. كما توضح أنواع المتغيرات المسموح بها داخل الفئات.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views209 pages

Advanced Python Material PDF

الوثيقة تشرح ماهية الفئات في برمجة بايثون. تعرض كيفية تعريف الفئات وخصائصها وطرقها. كما توضح أنواع المتغيرات المسموح بها داخل الفئات.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 209

‫‪Machine Translated by Google‬‬

‫ﺑ ﺲ‬ ‫ُ‬
‫أوو‬
‫اﻟﺠﺰء ‪- 1‬‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪1‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺒﻘ ﺔ‪:‬‬
‫ﻣﺎ ﻫ ﻲ اﻟﻄ‬

‫ﺒﺎﻋ ﺔ زرﻗﺎء ‪ ،‬و ﻫ ﻲ ﻟﻴ ﺴ ﺖﺳﻮى ﻓﺌ ﺔ‪.‬‬


‫ﺟﺎ أو ﺧﻄ ﺔ أو ﻃ‬
‫ﺒﻨﺎ ﻧﻤﻮذ ً‬
‫ﺜﻮن ﻛﻞ ﺷ ﻲء ﻫﻮ ﻛﺎﺋﻦ‪ .‬ﻹﻧﺸﺎء ﻛﺎﺋﻨﺎ ت ‪ ،‬ﻃﻠ‬
‫ﺑﺎﻳ‬‫ﻓﻲ‬

‫ﺜﻴﻞ ﺧﺼﺎﺋﺺ )ﺳﻤﺎ ت( وأﻓﻌﺎل )ﺳﻠﻮك(‬


‫ﺘﻤ‬‫ﺑ ﺔ ﻓﺌ ﺔ ﻟ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﻫﺪف‪.‬‬

‫ﺘﻐﻴﺮا ت‬
‫ﺑﺎﻟﻤ‬‫ﺜﻴﻞ اﻟﺨﺼﺎﺋﺺ‬
‫ﻳﻤﻜﻦﺗﻤ‬
‫ﺑﺎﻟﻄﺮق ‪.‬‬‫ﺜﻴﻞ اﻹﺟﺮاءا ت‬
‫ﻳﻤﻜﻦﺗﻤ‬

‫ﺘﻐﻴﺮا ت واﻟﻄﺮق‪.‬‬
‫ﺘﻮي اﻟﻔﺌ ﺔ ﻋﲆ ﻛﻞ ﻣﻦ اﻟﻤ‬
‫ﺛﻢﺗﺤ‬‫وﻣﻦ‬

‫ﻛﻴﻒﺗﺤﺪد ﻓﺌ ﺔ؟‬
‫ﺘﺨﺪام اﻟﻜﻠﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ ﻟﻠﻔﺼﻞ‪.‬‬
‫ﺑﺎﺳ‬‫ﻳﻤﻜﻨﻨﺎﺗﺤﺪﻳﺪ ﻓﺌ ﺔ‬

‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪:‬‬


‫ﻓﺌ ﺔ اﻻﺳﻢ‪:‬‬
‫""‬ ‫""‬
‫ﺘ ﺔ واﻟﻤﺤﻠﻴ ﺔ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ ‪ ،‬اﻟﻤ‬
‫ﺛﻴﻖ‪ :‬ﻣ‬
‫ﺘﻮ‬‫ﺘﻐﻴﺮا تﺳﻠ ﺴﻠ ﺔ اﻟ‬
‫ﻣ‬

‫ﺘ ﺔ ‪ ،‬ﻃﺮق اﻟﻔﺼﻞ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺜﻴﻞ ‪ ،‬اﻟﻄﺮق اﻟ‬
‫اﻟﻄﺮق‪ :‬ﻃﺮق اﻟﻤ‬

‫ﺘﻴﻦ‬
‫ﺘﺨﺪام اﻟﻄﺮﻳﻘ‬
‫ﺑﺎﺳ‬
‫ﺋﻤﺎ‪.‬ﻳﻤﻜﻨﻨﺎ اﻟﺤﺼﻮل ﻋﲆﺳﻠ ﺴﻠ ﺔ ‪doc‬‬ ‫ﺛﺎﺋﻖ وﺻ ًﻔﺎ ﻟﻠﻔﺌ ﺔ‪ .‬ﺿﻤﻦﺳﻠ ﺴﻠ ﺔ ‪doc‬ﻟﻠﻔﺌ ﺔ اﺧ‬
‫ﺘﻴﺎرﻳ ﺔ دا ً‬ ‫ﺜﻞﺳﻠ ﺴﻠ ﺔ اﻟﻮ‬
‫ﺗﻤ‬
‫ﺘﻴﻦ‪.‬‬
‫ﺘﺎﻟﻴ‬
‫اﻟ‬

‫ﺒﺎﻋ ﺔ )__‪(classname .__ doc‬‬


‫)‪1‬ﻃ‬
‫)‪2‬ﻣ ﺴﺎﻋﺪة )‪(classname‬‬

‫ﺜﺎل‪:‬‬
‫ﻣ‬

‫ﺒﻊ )اﻟﻄﺎﻟ ﺐ ‪__.‬‬


‫)‪1‬ﻃﺎﻟ ﺐ اﻟﻔﺼﻞ ‪2) 3) :‬اﻃ‬
‫'' ''‬
‫ﺘﻨﺪ )‪_) 4‬اﻟﻤ ﺴﺎﻋﺪة )اﻟﻄﺎﻟ ﺐ(‬
‫ﺴ ""‬
‫ﺑﺔ‬‫اﻟﻤ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻄﻠﻮ‬
‫ﻫﺬا ﺻﻒ اﻟﻄﺎﻟ ﺐ ﻣﻊ اﻟ‬

‫ﺘﻐﻴﺮا ت‪.‬‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺑﺎﺳ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺜﻴﻞ اﻟ‬
‫ﺜﻮنﻳﻤﻜﻨﻨﺎﺗﻤ‬
‫ﺑﺎﻳ‬‫ﺿﻤﻦ ﻓﺌ ﺔ‬

‫ﺑﻬﺎ‪.‬‬‫ﺘﻐﻴﺮا ت ﻣ ﺴﻤﻮح‬
‫ﻫﻨﺎك ‪3‬أﻧﻮاع ﻣﻦ اﻟﻤ‬

‫ﺘﻮى اﻟﻜﺎﺋﻦ(‬
‫ﺘﻐﻴﺮا ت ﻣ ﺴ‬
‫ﺜﻴﻞ )ﻣ‬
‫ﺘﻐﻴﺮا ت اﻟﻤ‬
‫)‪1‬ﻣ‬
‫ﺘﻮى اﻟﻔﺌ ﺔ(‬
‫ﺘﻐﻴﺮا ت ﻣ ﺴ‬
‫ﺘ ﺔ )ﻣ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫)‪2‬اﻟﻤ‬
‫ﺘﻮى اﻟﻄﺮﻳﻘ ﺔ(‬
‫ﺘﻐﻴﺮا ت ﻣ ﺴ‬
‫ﺘﻐﻴﺮا ت اﻟﻤﺤﻠﻴ ﺔ )ﻣ‬
‫)‪3‬اﻟﻤ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪2‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻬﺎ‬‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟﻄﺮق اﻟﻤ ﺴﻤﻮح‬


‫ﺘﺨﺪام اﻟﻄﺮق‪ .‬ﻓﻴﻤﺎﻳﻠ ﻲ أﻧﻮاع ﻣﺨ‬
‫ﺑﺎﺳ‬‫ﺜﻴﻞ اﻟﻌﻤﻠﻴﺎ ت‬
‫ﺿﻤﻦ ﻓﺌ ﺔ ‪Python ،‬ﻳﻤﻜﻨﻨﺎﺗﻤ‬

‫ﺜﻴﻞ‬
‫)‪1‬ﻃﺮق اﻟﻤ‬
‫)‪2‬ﻃﺮق اﻟﻔﺼﻞ‬
‫ﺘﺔ‬
‫ﺑ‬‫ﺜﺎ‬
‫)‪3‬اﻟﻄﺮق اﻟ‬

‫ﺜﺎل ﻟﻠﻔﺼﻞ‪:‬‬
‫ﻣ‬

‫)‪1‬ﻃﺎﻟ ﺐ ﻓﺌ ﺔ ‪2) :‬‬


‫ﺑﻮاﺳﻄ ﺔ ‪durga‬ﻟـ ‪self.marks = 80 7) 8) def‬‬‫ﺗﻢﺗﻄﻮﻳﺮه‬
‫'' ''‬
‫)‪__init __ (self): 4) self.name = 'durga' 5) self.age = 40 6‬‬
‫ﺗ ﻲ(‪9) 10) 11) :‬‬
‫‪python demo '' 3) def‬ﺣﺪﻳ ﺚ )ذا‬

‫)‪print ("My Marks are:"، self.marks‬‬


‫)‪self.name) print ("My Age is:"، self.age‬‬
‫‪print ("Hello I am :"،‬‬

‫ﻣﺎ ﻫﻮ اﻟﻜﺎﺋﻦ‪:‬‬
‫ﺒﻘ ﺔ ﻣﺎ ﻫﻮ إﻻ ﻛﺎﺋﻦ‪.‬ﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء أي ﻋﺪد ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻟﻠﻔﺼﻞ‪.‬‬
‫إن اﻟﻮﺟﻮد اﻟﻤﺎدي ﻟﻠﻄ‬

‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻹﻧﺸﺎء ﻛﺎﺋﻦ‪Referencevariable = classname () :‬‬

‫ﺜﺎل‪s = Student () :‬‬


‫ﻣ‬

‫ﺘﻐﻴﺮ اﻟﻤﺮﺟﻌ ﻲ؟‬


‫ﻣﺎ ﻫﻮ اﻟﻤ‬
‫ﺘﻐﻴﺮ اﻟﻤﺮﺟﻌ ﻲ‪.‬‬
‫ﺘﺨﺪاﻣﻪ ﻟﻺﺷﺎرة إﱃ اﻟﻜﺎﺋﻦﻳ ﺴﻤﻰ اﻟﻤ‬
‫ﺘﻐﻴﺮ اﻟﺬيﻳﻤﻜﻦ اﺳ‬
‫اﻟﻤ‬
‫ﺘﻐﻴﺮ اﻟﻤﺮﺟﻌ ﻲ ‪،‬ﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ ﺧﺼﺎﺋﺺ وأﺳﺎﻟﻴ ﺐ اﻟﻜﺎﺋﻦ‪.‬‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺑﺎﺳ‬

‫ﺑﺮﻧﺎﻣﺞ ‪Python‬ﻹﻧﺸﺎء ﻓﺼﻞ دراﺳ ﻲ ﻟﻠﻄﻼ ب وإﻧﺸﺎء ﻛﺎﺋﻦ ﻟﻪ‪.‬‬‫ﺘﺐ‬


‫ﺒﺮﻧﺎﻣﺞ‪ :‬اﻛ‬
‫اﻟ‬
‫ﺑﻄﺮﻳﻘ ﺔ )( ‪talk‬ﻟﻌﺮضﺗﻔﺎﺻﻴﻞ اﻟﻄﺎﻟ ﺐ‬‫ﺗﺼﻞ‬
‫ا‬

‫‪class Student: 2) 3) def __init __ (self، name، rollno،‬‬


‫)‪1‬اﻟﻌﻼﻣﺎ ت(‪4) 5) 6) 7) :‬‬

‫= ‪self.name‬اﻻﺳﻢ =‬

‫‪= rollno self.marks‬‬

‫‪self.rollno‬اﻟﻌﻼﻣﺎ ت‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪3‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫= ‪8) def talk (self): 9) 10) 11) 12) 13) s1‬‬


‫)‪101،80)self.rollno‬‬
‫‪14) s1.talkprint‬‬
‫)"دورﺟﺎ"‪() ،‬‬ ‫)‪ are:"، self.marks‬اﻟﻄﺎﻟ ﺐ‬
‫‪("My Marks‬‬
‫‪My Name is:"، self.name) print ("My Rollno is:"،‬‬
‫‪print ("Hello‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫‪D: \ durgaclasses> py test.py‬‬
‫ﺒﺎ اﺳﻤ ﻲ‪ :‬دورﺟﺎ‬
‫ﻣﺮﺣ‬
‫ﺑ ﻲ ﻫﻮ‪101 :‬‬‫روﻟﻨﻮ اﻟﺨﺎص‬
‫ﺗ ﻲ ﻫ ﻲ‪80 :‬‬
‫ﻋﻼﻣﺎ‬

‫ﺗ ﻲ‪:‬‬
‫ﺘﻐﻴﺮ اﻟﺬا‬
‫اﻟﻤ‬
‫ﺜﻞ ﻫﺬه اﻟﻜﻠﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ‬
‫ﺋﻤﺎ إﱃ اﻟﻜﺎﺋﻦ اﻟﺤﺎﻟ ﻲ )ﻣ‬
‫ﺘﺮاﺿ ﻲ اﻟﺬيﻳﺸﻴﺮ دا ً‬
‫ﺘﻐﻴﺮ اﻻﻓ‬
‫‪ • self‬ﻫﻮ اﻟﻤ‬
‫ﻓ ﻲ ﺟﺎﻓﺎ(‬
‫ﺜﻴﻞ ﻟﻠﻜﺎﺋﻦ‪.‬‬
‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ وﻃﺮق اﻟﻤ‬
‫ﺘﺨﺪام اﻟﺬا تﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ ﻣ‬
‫ﺑﺎﺳ‬
‫•‬

‫ﻣﻠﺤﻮﻇ ﺔ‪:‬‬
‫اﻟﻤﻨﺸ ﺊ ‪def __init __ (self):‬‬
‫)‪1‬ﻳﺠ ﺐ أنﺗﻜﻮن ‪self‬اﻟﻤﻌﻠﻤ ﺔ اﻷوﱃ داﺧﻞ ُ‬

‫ﺜﻴﻞ‬
‫)‪2‬ﻳﺠ ﺐ أنﺗﻜﻮن ‪self‬اﻟﻤﻌﻠﻤ ﺔ اﻷوﱃ داﺧﻞ ﻃﺮق اﻟﻤ‬
‫ﺗﺤﺪ ث ﻣﻮاﻃﻨﻪ )اﻟﺬا ت(‪:‬‬

‫ﻣﻔﻬﻮم اﻟﻤﻨﺸ ﺊ‪:‬‬


‫ﺜﻮن‪.‬‬
‫ﺑﻴ‬‫ﻣﻨﺸ ﺊ ﻃﺮﻳﻘ ﺔ ﺧﺎﺻ ﺔ ﻓ ﻲ‬

‫ﺗ ًﻴﺎ(‬
‫اﻟﻤﻨﺸ ﺊ __ ‪)__init‬ذا‬
‫ﻳﺠ ﺐ أنﻳﻜﻮن اﺳﻢ ُ‬
‫اﻟﻤﻨﺸ ﺊﺗﻠﻘﺎﺋ ًﻴﺎ ﻓ ﻲ وﻗ ﺖ إﻧﺸﺎء اﻟﻜﺎﺋﻦ‪.‬‬
‫ﺘﻢﺗﻨﻔﻴﺬ ُ‬
‫ﺳﻴ‬

‫ﺘﻬﺎ‪.‬‬
‫ﺗﻬﻴﺌ‬
‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ و‬
‫ﺘﺼﺮﻳﺢ ﻋﻦ ﻣ‬
‫ﺋﻴ ﺴ ﻲ ﻟﻠﻤﻨﺸ ﺊ ﻫﻮ اﻟ‬
‫اﻟﻐﺮض اﻟﺮ‬

‫ﺘﻢ إﺧﺮاجُﻣﻨﺸ ﺊ ﻛﻞ ﻛﺎﺋﻦ ﻣﺮة واﺣﺪة ﻓﻘﻂ‪.‬‬


‫ﺳﻴ‬

‫ﺗ ًﻴﺎ(‬
‫ﻟﻠﻤﻨﺸ ﺊ أنﻳﺄﺧﺬ ﺣﺠ ﺔ واﺣﺪة ﻋﲆ اﻷﻗﻞ )ﻋﲆ اﻷﻗﻞ ذا‬
‫ﻳﻤﻜﻦ ُ‬
‫ﺑﺬﻟﻚ‬‫ﺜﻮن‬
‫ﺑﻴ‬‫ﺘﻴﺎري وإذا ﻟﻢ ﻧﻮﻓﺮ أيُﻣﻨﺸ ﺊ ‪ ،‬ﻓ ﺴﻴﻘﻮم‬
‫اﻟﻤﻨﺸ ﺊ اﺧ‬
‫ُ‬
‫ﺘﺮاﺿ ﻲ‪.‬‬
‫اﻟﻤﻨﺸ ﺊ اﻻﻓ‬
‫ﺗﻮﻓﺮ ُ‬

‫ﺜﺎل‪:‬‬
‫ﻣ‬

‫= ‪= name 3) self.rollno = rollno 4) self.marks‬‬


‫‪def __init __ (self، name، rollno، mark): 2) self.name‬‬
‫)‪1‬ﻋﻼﻣﺎ ت‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪4‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫اﻟﻤﻨﺸ ﺊ ﻣﺮة واﺣﺪة ﻓﻘﻂ ﻟﻜﻞ ﻛﺎﺋﻦ‪:‬‬


‫ﺑﺮﻧﺎﻣﺞ ﺷﻴﻄﺎﻧﻴ ﺔ ُ‬‫ﺘﻢﺗﻨﻔﻴﺬ‬
‫ﺳﻴ‬

‫ﺒﺎر اﻟﺼﻨﻒ ‪def m1 (self): 7) print ("Method :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫)‪(self): 4) print ("Constructor exeuction ...") 5) 6‬‬
‫ﺒﺎر = ‪t2‬‬
‫ﺘ‬‫ﺘﻨﻔﻴﺬي ‪8 ) 9) t1 = ("...‬اﺧ‬
‫__ ‪2) 3) def __init‬اﻟ‬
‫ﺒﺎر )( ‪() 12) t1.m1‬‬
‫ﺘ‬‫ﺒﺎر = ‪() 11) t3‬اﺧ‬
‫ﺘ‬‫)‪() 10‬اﺧ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫اﻟﻤﻨﺸ ﺊ ‪...‬‬
‫ﺗﻨﻔﻴﺬ ُ‬
‫اﻟﻤﻨﺸ ﺊ ‪...‬‬
‫ﺗﻨﻔﻴﺬ ُ‬
‫اﻟﻤﻨﺸ ﺊ ‪...‬‬
‫ﺗﻨﻔﻴﺬ ُ‬
‫ﺘﻨﻔﻴﺬ ‪...‬‬
‫ﻃﺮﻳﻘ ﺔ اﻟ‬

‫ﺑﺮﻧﺎﻣﺞ‪:‬‬

‫)‪1‬ﻓﺌ ﺔ اﻟﻄﺎﻟ ﺐ‪2) 3) "" " :‬‬

‫ﺑ ﺔ ‪= z 8) 9) def display (self): 10) print ("Student Name: {} \ nRollno: {} \ n‬‬


‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻄﻠﻮ‬
‫ﻫﺬه ﻓﺌ ﺔ اﻟﻄﺎﻟ ﺐ ﻣﻊ اﻟ‬
‫‪'' 4) def __init __ (self، x، y، z): 5) self.name = x 6) self.rollno = y 7) self.marks‬اﻟﻌﻼﻣﺎ ت‪format (self.name، self.rollno، self :‬‬
‫‪{}".‬‬

‫)‪.marks)) 11‬‬

‫= ‪12) s1‬ﻃﺎﻟ ﺐ )"دورﺟﺎ"‪s1.display () 14) s2 = ،‬‬


‫)‪101،80) 13‬ﻃﺎﻟ ﺐ )"ﻣﺸﻤ ﺲ"‪15) s2.display () ،‬‬
‫)‪102،100‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫اﺳﻢ اﻟﻄﺎﻟ ﺐ‪ :‬دورﺟﺎ‬
‫روﻟﻨﻮ‪101 :‬‬
‫ﻋﻼﻣﺎ ت‪80 :‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪5‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫اﺳﻢ اﻟﻄﺎﻟ ﺐ‪ :‬ﺻﻨ ﻲ‬


‫روﻟﻨﻮ‪102 :‬‬
‫اﻟﻌﻼﻣﺎ ت‪100 :‬‬

‫ﺑﻴﻦ اﻟﻄﺮق واﻟﻤﻨﺸﺌﺎ ت‬‫ﺘﻼﻓﺎ ت‬


‫اﻻﺧ‬
‫ﺒﻨﺎء‬
‫ﻃﺮﻳﻘ ﺔ اﻟ‬
‫)‪1‬ﻳﻤﻜﻦ أنﻳﻜﻮن اﺳﻢ اﻟﻄﺮﻳﻘ ﺔ أي اﺳﻢ‬ ‫ﺋﻤﺎ __‪__init‬‬
‫اﻟﻤﻨﺸ ﺊ دا ً‬
‫)‪1‬ﻳﺠ ﺐ أنﻳﻜﻮن اﺳﻢ ُ‬

‫ﺘﺪﻋﺎء ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ‬


‫ﺑﺎﺳ‬‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﻄﺮﻳﻘ ﺔ إذا ﻗﻤﻨﺎ‬
‫)‪2‬ﺳﻴ‬ ‫اﻟﻤﻨﺸ ﺊﺗﻠﻘﺎﺋ ًﻴﺎ ﻓ ﻲ وﻗ ﺖ إﻧﺸﺎء اﻟﻜﺎﺋﻦ‪.‬‬
‫ﺘﻢﺗﻨﻔﻴﺬ ُ‬
‫)‪2‬ﺳﻴ‬

‫ﻓﻘﻂأي رﻗﻢ‬
‫ﺳﻠﻮ ب‬
‫ﻨﺸ ﺊ‬
‫اﻟﻤاﻷ‬
‫ﺘﺪﻋﺎء‬
‫ُ‬ ‫ﺗﻨﻔﻴﺬ‬
‫ﻳﻤﻜﻦ اﺳ‬
‫ﺘﻢ‬
‫)‪3‬ﻟﻜﻞ ﻛﺎﺋﻦ ‪،‬ﺳﻴ‬
‫اﻟﻤﺮا ت‪.‬‬
‫ﻣﻦواﺣﺪة‬
‫ﻣﺮة‬

‫ﺘﻬﺎ‬
‫ﺗﻬﻴﺌ‬
‫ﺜﻴﻞ و‬
‫ﺘﻐﻴﺮا ت اﻟﻤ‬
‫ﻷﻋﻤﺎل ﻣ‬
‫اﻹﻋﻼن ﻋﻦ‬ ‫ﺑ ﺔﻋﻠﻴﻨﺎ‬
‫ﻣﻨﻄﻖ ا‬ ‫ﺘﻌﻴﻦ‬
‫ﺘﺎ‬ ‫ﻨﺸ ﺊ ‪،‬ﻳ‬
‫ﻳﻤﻜﻨﻨﺎ ﻛ‬ ‫اﻟﻤ‬
‫داﺧﻞ ُ‬
‫اﻟﺪاﺧﻠﻴ ﺔ‬ ‫)‪4‬‬
‫ﻳﻘ ﺔ‬
‫)‪4‬اﻟﻄﺮ‬

‫ﺘﻐﻴﺮا ت‪:‬‬
‫أﻧﻮاع اﻟﻤ‬

‫ﺜﻮن ‪3.‬‬
‫ﺑﺎﻳ‬‫ﺘﻐﻴﺮا ت داﺧﻞ ﻓﺌ ﺔ‬
‫ﺑﺄﻧﻮاع اﻟﻤ‬‫ُﺴﻤﺢ‬
‫ﻳ‬

‫ﺘﻮى اﻟﻜﺎﺋﻦ(‬
‫ﺘﻐﻴﺮا ت ﻣ ﺴ‬
‫ﺜﻴﻞ )ﻣ‬
‫ﺘﻐﻴﺮا ت اﻟﻤ‬
‫)‪1‬ﻣ‬
‫ﺘﻮى اﻟﻔﺌ ﺔ(‬
‫ﺘﻐﻴﺮا ت ﻣ ﺴ‬
‫ﺘ ﺔ )ﻣ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫)‪2‬اﻟﻤ‬
‫ﺘﻮى اﻟﻄﺮﻳﻘ ﺔ(‬
‫ﺘﻐﻴﺮا ت ﻣ ﺴ‬
‫ﺘﻐﻴﺮا ت اﻟﻤﺤﻠﻴ ﺔ )ﻣ‬
‫)‪3‬اﻟﻤ‬

‫ﺜﻴﻞ‪:‬‬
‫ﺘﻐﻴﺮا ت اﻟﻤ‬
‫)‪1‬ﻣ‬
‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ‪.‬‬
‫ﺘﻐﻴﺮا تﻳ ﺴﻤﻰ ﻣ‬
‫ﺘﻐﻴﺮ ﻣﻦ ﻛﺎﺋﻦ إﱃ ﻛﺎﺋﻦ ‪ ،‬ﻓﺈن ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻟﻤ‬
‫ﺘﻠﻔ ﺖ ﻗﻴﻤ ﺔ اﻟﻤ‬
‫•إذا اﺧ‬

‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ ﻟﻜﻞ ﻛﺎﺋﻦ‪.‬‬


‫ﺘﻢ إﻧﺸﺎء ﻧ ﺴﺨ ﺔ ﻣﻨﻔﺼﻠ ﺔ ﻣﻦ ﻣ‬
‫•ﺳﻴ‬

‫ﺜﻴﻞ‪:‬‬
‫ﺘﻐﻴﺮا ت اﻟﻤ‬
‫ﺣﻴ ﺚﻳﻤﻜﻨﻨﺎ اﻹﻋﻼن ﻋﻦ ﻣ‬
‫ﺗﻲ‬
‫ﺘﻐﻴﺮ اﻟﺬا‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺑﺎﺳ‬‫)‪1‬ﻣﻨﺸ ﺊ داﺧﻠ ﻲ‬
‫ﺗﻲ‬
‫ﺘﻐﻴﺮ اﻟﺬا‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺑﺎﺳ‬‫ﺜﻴﻞ اﻟﺪاﺧﻠ ﻲ‬
‫)‪2‬ﻃﺮﻳﻘ ﺔ اﻟﻤ‬
‫ﺘﻐﻴﺮ ﻣﺮﺟﻊ اﻟﻜﺎﺋﻦ‬
‫ﺘﺨﺪام ﻣ‬
‫ﺑﺎﺳ‬‫)‪3‬ﺧﺎرج اﻟﻔﺌ ﺔ‬

‫ﺗ ﻲ‪:‬‬
‫ﺘﻐﻴﺮ اﻟﺬا‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺑﺎﺳ‬‫)‪1‬ﻣﻨﺸ ﺊ داﺧﻠ ﻲ‬
‫ﺘﻐﻴﺮا تﺗﻠﻘﺎﺋ ًﻴﺎ‬
‫ﺘﻢ إﺿﺎﻓ ﺔ ﻫﺬه اﻟﻤ‬
‫ﺘ‬‫ﺑﻤﺠﺮد إﻧﺸﺎء اﻟﻜﺎﺋﻦ ‪،‬ﺳ‬‫ﺗﻴ ﺔ‪.‬‬
‫ﺘﺨﺪام اﻟﻜﻠﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ اﻟﺬا‬
‫ﺑﺎﺳ‬‫اﻟﻤﻨﺸ ﺊ‬
‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ داﺧﻞ ُ‬
‫ﻳﻤﻜﻨﻨﺎ اﻹﻋﻼن ﻋﻦ ﻣ‬
‫إﱃ اﻟﻜﺎﺋﻦ‪.‬‬

‫)‪1‬ﻣﻮﻇﻒ اﻟﻔﺌ ﺔ ‪self.ename = 'Durga' :‬‬


‫)‪__init __ (self): 4) self.eno = 100 5‬‬
‫‪2) 3) def‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪6‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫‪self.esal‬‬
‫اﻟﻤﻮﻇﻒ )‪() 9‬‬ ‫‪ 6) =7)10000‬ﻫـ =‬
‫)‪8‬‬
‫ﺜﺎل ‪ ،‬دﻳﻜ ﺖ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒﺎﻋ ﺔ )ﻋﲆﺳ‬
‫ﻃ‬
‫)_‬

‫اﻹﺧﺮاج‪{'eno': 100، 'ename': 'Durga'، 'esal': 10000} :‬‬

‫ﺗ ﻲ‪:‬‬
‫ﺘﻐﻴﺮ اﻟﺬا‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺑﺎﺳ‬‫ﺜﻴﻞ اﻟﺪاﺧﻠ ﻲ‬
‫)‪2‬ﻃﺮﻳﻘ ﺔ اﻟﻤ‬
‫ﺘﻢ‬
‫ﺜﻴﻞ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺘﻐﻴﺮ ﺣﺎﻟ ﺔ داﺧﻞ ﻃﺮﻳﻘ ﺔ اﻟﻤ‬
‫ﺗ ﻲ‪ .‬إذاﺗﻢ اﻹﻋﻼن ﻋﻦ أي ﻣ‬
‫ﺘﻐﻴﺮ اﻟﺬا‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺑﺎﺳ‬‫ﺜﻴﻞ‬
‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ داﺧﻞ ﻃﺮﻳﻘ ﺔ اﻟﻤ‬ ‫ﻳﻤﻜﻨﻨﺎ أ ً‬
‫ﻳﻀﺎ إﻋﻼن ﻣ‬
‫ﺑﻤﺠﺮد أن ﻧ ﺴﻤ ﻲ ﻃﺮﻳﻘ ﺔﺗﺎه‪.‬‬‫ﺘﻐﻴﺮ اﻟﺤﺎﻟ ﺔ ﻫﺬا‬
‫إﺿﺎﻓ ﺔ ﻣ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪12) print (t .__ict__) :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫)( ‪= 30 9) 10) t = Test () 11) t.m1‬‬
‫‪= 20 6) 7) def m1 (self): 8) self.c‬‬
‫)‪__ (self): 4) self.a2)= 3‬‬
‫‪10def‬‬
‫‪5) self.b‬‬
‫‪__init‬‬

‫اﻹﺧﺮاج‪{'a': 10، 'b': 20، 'c': 30} :‬‬

‫ﺘﻐﻴﺮ ﻣﺮﺟﻊ اﻟﻜﺎﺋﻦ‪:‬‬


‫ﺘﺨﺪام ﻣ‬
‫ﺑﺎﺳ‬‫)‪3‬ﺧﺎرج اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ‬
‫ﺘﻐﻴﺮا ت ﺣﺎﻟ ﺔ ﺧﺎرج ﻓﺌ ﺔ إﱃ ﻛﺎﺋﻦ ﻣﻌﻴﻦ‪.‬‬ ‫ﻳﻤﻜﻨﻨﺎ أ ً‬
‫ﻳﻀﺎ إﺿﺎﻓ ﺔ ﻣ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪12) print (t .__ict__) :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫‪t = Test () 10) t.m1 () 11) td = 40‬‬
‫)‪def m1 (self): 7) self.c = 30 8) 9‬‬
‫)‪__init __ (self): 4) self.a =2‬‬
‫‪103)5)def‬‬
‫)‪6‬‬
‫اﻟﻨﻔ ﺲ ب ‪= 20‬‬

‫اﻹﺧﺮاج }‪{'a': 10، 'b': 20، 'c': 30، 'd': 40‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪7‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻴﻞ‪:‬‬
‫ﺘﻐﻴﺮا ت اﻟﻤ‬
‫ﻛﻴﻔﻴ ﺔ اﻟﻮﺻﻮل إﱃ ﻣ‬
‫ﺘﺨﺪام ﻣﺮﺟﻊ اﻟﻜﺎﺋﻦ‪.‬‬
‫ﺑﺎﺳ‬‫ﺗ ﻲ وﺧﺎرج اﻟﻔﺌ ﺔ‬
‫ﺘﻐﻴﺮ اﻟﺬا‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺑﺎﺳ‬‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ ﻓ ﻲ اﻟﻔﺌ ﺔ‬
‫ﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ ﻣ‬

‫ﺒﺎر اﻟﺼﻨﻒ ‪9) 10) t = :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫)‪print (self.a) 8) print (self. .b‬‬
‫)‪= 20 6) def display (self): 7‬‬
‫‪(self):‬‬
‫ﺒﺎر )‪tb‬‬
‫)‪4‬‬
‫ﺘ‬‫اﻻﺧ‬
‫‪self.a‬‬
‫‪2) 3)=def‬‬
‫)‪10 5‬‬
‫‪__init‬‬
‫‪self.b‬‬
‫__‬
‫‪11) t.display () 12) print (ta،‬‬
‫)(‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪10‬‬
‫‪20‬‬
‫‪10 20‬‬

‫ﺜﻴﻞ ﻣﻦ اﻟﻜﺎﺋﻦ‪:‬‬
‫ﺘﻐﻴﺮ ﻣ‬
‫ﻛﻴﻔﻴ ﺔ ﺣﺬف ﻣ‬
‫ﺘﺎﻟ ﻲ‬
‫ﺘﻐﻴﺮ اﻟﺤﺎﻟ ﺔ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫)‪1‬داﺧﻞ اﻟﻔﺼﻞﻳﻤﻜﻨﻨﺎ ﺣﺬف ﻣ‬
‫‪del self.variableName‬‬

‫ﺘﺎﻟ ﻲ ‪objectreference.variableName‬‬
‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫)‪2‬ﻣﻦ ﺧﺎرج اﻟﻔﺼﻞﻳﻤﻜﻨﻨﺎ ﺣﺬف ﻣ‬
‫‪del‬‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪t = Test () 11) :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫)‪6) 7) def m1 (self): 8) 9) 10‬‬
‫‪3) self.a‬‬
‫ﺒﺎﻋ ﺔ‬
‫)‪2‬ﻃ‬
‫‪= 10‬‬
‫‪def4)__init‬‬
‫‪self.b__=(self):‬‬
‫)‪20 5‬‬
‫‪14)t.m1‬‬
‫)( ‪del‬‬
‫)‪tc13‬‬
‫‪15)print‬‬
‫)__‪print(t(t.__ict‬‬
‫)__‪.__ict‬‬
‫ﺗ ﻲ‪.‬‬
‫)__‪=.__dict‬ذا‬
‫‪(t‬‬ ‫ج ‪30‬‬ ‫)‪12‬‬
‫د ‪= 40‬‬

‫دﻳﻞ اﻟﻨﻔ ﺲ د‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪8‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫}'أ'‪ '10 ، :‬ب'‪'20 ، :‬ج'‪'30 ، :‬د'‪40} :‬‬

‫}'أ'‪ '10 ، :‬ب'‪'20 ، :‬ج'‪30} :‬‬

‫}"أ"‪ "10 ، :‬ب"‪20} :‬‬

‫ﺘ ﻲﺗﻢ ﺣﺬﻓﻬﺎ ﻣﻦ ﻛﺎﺋﻦ واﺣﺪ ﻣﻦ اﻟﻜﺎﺋﻨﺎ ت اﻷﺧﺮى‪.‬‬


‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ اﻟ‬
‫ﺘﻢ ﺣﺬف ﻣ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻟﻦﻳ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪12) print (t2 .__ict__) :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬

‫)__‪10) del t1.a 11) print (t1 .__ict‬‬

‫)‪6) 7‬‬
‫)‪3) 8‬‬
‫‪self.a‬‬
‫‪t1 ==Test‬‬
‫)‪10 4‬‬
‫)‪() 9‬‬
‫‪self.b‬‬
‫‪t2 ==Test‬‬
‫)‪20 5‬‬
‫)(‬

‫‪2) def __init __ (self):‬‬


‫ﺗ ﻲ‪.‬‬
‫ج ‪= 30‬ذا‬

‫د ‪= 40‬‬

‫ﺘﺎج |‬
‫اﻧ‬

‫}' ب'‪'20 ، :‬ج'‪'30 ، :‬د'‪40} :‬‬

‫}'أ'‪ '10 ، :‬ب'‪'20 ، :‬ج'‪'30 ، :‬د'‪40} :‬‬

‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ‬
‫ﺒﻘﻴ ﺔ ‪،‬ﻷﻧﻨﺎ ﻟﻜﻞ ﻛﺎﺋﻦ ﻧ ﺴﺨ ﺔ ﻣﻨﻔﺼﻠ ﺔ ﻣﻦ ﻣ‬
‫ﺘ‬‫ﺘﻐﻴﻴﺮا ت ﻋﲆ اﻟﻜﺎﺋﻨﺎ ت اﻟﻤ‬
‫ﺜﻴﻞ ﻟﻜﺎﺋﻦ واﺣﺪ ‪ ،‬ﻓﻠﻦﺗﻨﻌﻜ ﺲ ﻫﺬه اﻟ‬
‫ﺘﻐﻴﺮا ت اﻟﻤ‬
‫ﺘﻐﻴﻴﺮ ﻗﻴﻢ ﻣ‬
‫ﺑ‬‫إذا ﻗﻤﻨﺎ‬

‫ﺘﺎﺣ ﺔ‪.‬‬
‫اﻟﻤ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪print ('t2:'، t2.a، t2.b) :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬

‫)‪() 10) print ('t1:'، t1.a، t1.b) 11‬‬

‫‪self.b‬‬
‫‪= 888‬‬
‫‪= 20‬‬
‫)‪8)5‬‬
‫‪t1.b‬‬
‫‪6) t1‬‬
‫‪= 999‬‬
‫‪= Test‬‬
‫‪9) t2‬‬
‫)‪() 7‬‬
‫‪= Test‬‬
‫‪t1.a‬‬

‫)‪def __init __ (self): 3) self.a = 10 2‬‬


‫)‪4‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪t1: 888999‬‬
‫ر ‪2: 10 20‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪9‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘ ﺔ‪:‬‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫)‪2‬اﻟﻤ‬
‫ﺒﺎﺷﺮة وﻟﻜﻦ ﺧﺎرج‬
‫ﺘﻐﻴﺮا تﻳﺠ ﺐ أن ﻧﻌﻠﻦ ﻋﻨﻪ ﻓ ﻲ اﻟﻔﺼﻞ ﻣ‬
‫ﺜﻞ ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻟﻤ‬
‫ﺘﻠﻒ ﻣﻦ ﻛﺎﺋﻦ إﱃ ﻛﺎﺋﻦ ‪ ،‬ﻓﺈن ﻣ‬
‫ﺘﻐﻴﺮ ﻻﺗﺨ‬
‫إذا ﻛﺎﻧ ﺖ ﻗﻴﻤ ﺔ اﻟﻤ‬
‫ﺘ ﺔ‪.‬‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﺘﻐﻴﺮا ت اﻟﻤ‬
‫اﻷﺳﺎﻟﻴ ﺐ‪.‬ﺗ ﺴﻤﻰ ﻫﺬه اﻷﻧﻮاع ﻣﻦ اﻟﻤ‬

‫ﺑﻮاﺳﻄ ﺔ ﺟﻤﻴﻊ اﻟﻜﺎﺋﻨﺎ ت‬‫ﺘﻬﺎ‬


‫ﺑ ﺖ وﻣﺸﺎرﻛ‬
‫ﺜﺎ‬
‫ﺘﻐﻴﺮ اﻟ‬
‫ﺘﻢ إﻧﺸﺎء ﻧ ﺴﺨ ﺔ واﺣﺪة ﻓﻘﻂ ﻣﻦ اﻟﻤ‬
‫ﺒ ﺔ ﻟﻠﻔﺌ ﺔ اﻹﺟﻤﺎﻟﻴ ﺔ ‪،‬ﺳﻴ‬
‫ﺑﺎﻟﻨ ﺴ‬
‫ﻣﻦﺗﻠﻚ اﻟﻔﺌ ﺔ‪.‬‬

‫ﺘﺨﺪام اﺳﻢ اﻟﻔﺌ ﺔ‪.‬‬


‫ﺑﺎﺳ‬‫ﺘ ﺔ إﻣﺎ ﻋﻦ ﻃﺮﻳﻖ اﺳﻢ اﻟﻔﺌ ﺔ أو ﻋﻦ ﻃﺮﻳﻖ ﻣﺮﺟﻊ اﻟﻜﺎﺋﻦ‪ .‬ﻟﻜﻦﻳﻮﺻﻰ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ اﻟﻤ‬

‫ﺑ ﺖ‪:‬‬
‫ﺛﺎ‬‫ﺘﻐﻴﺮ‬
‫ﺑﻞ ﻣ‬
‫ﺜﻴﻞ ﻣﻘﺎ‬
‫ﺘﻐﻴﺮ ﻣ‬
‫ﻣ‬

‫ﺘﻜﻮن ﻧ ﺴﺨ ﺔ ﻣﻨﻔﺼﻠ ﺔ‬
‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ ﻟﻜﻞ ﻛﺎﺋﻦ ‪،‬ﺳ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓ ﻲ ﺣﺎﻟ ﺔ ﻣ‬
‫ﺑﻮاﺳﻄ ﺔ ﻛﻞ ﻛﺎﺋﻦ ﻣﻦﺗﻠﻚ اﻟﻔﺌ ﺔ‪.‬‬‫ﺘﻬﺎ‬
‫ﺘﻢ إﻧﺸﺎء ﻧ ﺴﺨ ﺔ واﺣﺪة ﻓﻘﻂ وﻣﺸﺎرﻛ‬
‫ﺘ ﺔ ﻟﻠﻔﺌ ﺔ اﻹﺟﻤﺎﻟﻴ ﺔ ‪،‬ﺳﻴ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﺗﻢ إﻧﺸﺎؤه ‪ ،‬وﻟﻜﻦ ﻓ ﻲ ﺣﺎﻟ ﺔ اﻟﻤ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪('t2:'، t2.x، t2.y) :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫‪8) print ('t1:'، t1.x، t1.y) 9) print‬‬
‫)( ‪5) 6) t1 = Test () 7) t2 = Test‬‬
‫‪def __init __ (self): 4)2)self.y‬‬
‫‪x = 10‬‬‫‪= 20‬‬
‫)‪3‬‬

‫)‪t1.y) 13) print ('t2:'، t2.x، t2.y‬‬


‫‪t1.y = 999 12) print ('t1:'، t1.x،‬‬
‫)‪10) Test.x = 888 11‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ر ‪1: 10 20‬‬
‫ر ‪2: 10 20‬‬
‫‪t1: 888999‬‬
‫ﺗ ﻲ ‪2: 888 20‬‬

‫ﺘ ﺔ‪:‬‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﺘﻠﻔ ﺔ ﻟﻺﻋﻼن ﻋﻦ اﻟﻤ‬
‫أﻣﺎﻛﻦ ﻣﺨ‬
‫ﺒﺎﺷﺮة وﻟﻜﻦ ﻣﻦ ﺧﺎرج أي ﻃﺮﻳﻘ ﺔ‬
‫ﺘﺼﺮﻳﺢ داﺧﻞ اﻟﻔﺼﻞ ﻣ‬
‫ﺑﺸﻜﻞ ﻋﺎمﻳﻤﻜﻨﻨﺎ اﻟ‬
‫)‪1‬‬
‫ﺘﺨﺪام اﺳﻢ اﻟﻔﺌ ﺔ‬
‫ﺑﺎﺳ‬‫)‪2‬ﻣﻨﺸ ﺊ داﺧﻠ ﻲ‬
‫ﺘﺨﺪام اﺳﻢ اﻟﻔﺌ ﺔ‬
‫ﺑﺎﺳ‬‫ﺜﻴﻞ‬
‫)‪3‬داﺧﻞ أﺳﻠﻮ ب اﻟﻤ‬
‫ﺘﻐﻴﺮ ‪cls‬‬
‫ﺘﺨﺪام اﺳﻢ اﻟﻔﺌ ﺔ أو ﻣ‬
‫ﺑﺎﺳ‬
‫)‪4‬داﺧﻞ ‪classmethod‬‬
‫ﺘﺨﺪام اﺳﻢ اﻟﻔﺌ ﺔ‬
‫ﺑﺎﺳ‬‫ﺑ ﺖ اﻟﺪاﺧﻠ ﻲ‬
‫ﺜﺎ‬
‫)‪5‬اﻷﺳﻠﻮ ب اﻟ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪10‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﻌﺮﻳﻒ‬
‫ﺒﺎر اﻟﻔﺌ ﺔ ‪2) :‬أ )‪= 10 3‬‬
‫ﺘ‬‫)‪1‬اﺧ‬
‫ﺗ ﻲ(‪:‬‬
‫__ ‪)__init‬ذا‬

‫‪Test.b = 20 5) def m1‬‬


‫)‪4‬‬
‫ﺗ ﻲ(‪6) :‬‬
‫)ذا‬
‫)‪9) cls.d1 = 40 10‬‬

‫‪7) classmethod 8) def m2 (cls):‬‬


‫‪Test.c = 30‬‬

‫)‪12) def m3 (): 13‬‬

‫‪Test.d2 = 400 11) staticmethod‬‬

‫)__‪print (Test .__ict‬‬

‫)‪(Test .__ict__) 17) t.m1 () 18‬‬


‫‪15) t = Test () 16) print‬‬
‫)__‪= 50 14) print (Test .__ict‬‬
‫‪Test.e‬‬

‫ﺒﺎﻋ ﺔ‬
‫)‪19) Test.m2 () 20‬ﻃ‬
‫)__‪(Test .__ict‬‬
‫ﺒﻊ‬
‫)‪21) Test.m3 () 22‬اﻃ‬
‫)__‪(Test .__ict‬‬
‫ﺒﻊ‬
‫)‪23) Test.f = 60 24‬اﻃ‬
‫)__‪(Test .__ict‬‬

‫ﺘ ﺔ‪:‬‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﻛﻴﻔﻴ ﺔ اﻟﻮﺻﻮل إﱃ اﻟﻤ‬
‫ﺘﺨﺪام إﻣﺎ ‪self‬أو ‪classname‬‬
‫ﺑﺎﺳ‬‫اﻟﻤﻨﺸ ﺊ‪:‬‬
‫)‪1‬داﺧﻞ ُ‬
‫ﺘﺨﺪام إﻣﺎ ‪self‬أو ‪classname‬‬
‫ﺑﺎﺳ‬‫ﺜﻴﻞ‪:‬‬
‫)‪2‬داﺧﻞ أﺳﻠﻮ ب اﻟﻤ‬
‫ﺘﻐﻴﺮ ‪cls‬أو اﺳﻢ اﻟﻔﺌ ﺔ‬
‫ﺘﺨﺪام ﻣ‬
‫ﺑﺎﺳ‬‫)‪3‬ﻃﺮﻳﻘ ﺔ داﺧﻞ اﻟﺼﻨﻒ‪:‬‬
‫ﺘﺨﺪام ‪classname‬‬
‫ﺑﺎﺳ‬‫ﺑ ﺖ اﻟﺪاﺧﻠ ﻲ‪:‬‬
‫ﺜﺎ‬
‫)‪4‬اﻷﺳﻠﻮ ب اﻟ‬
‫ﺘﺨﺪام إﻣﺎ ﻣﺮﺟﻊ اﻟﻜﺎﺋﻦ أو اﺳﻢ اﻟﻔﺌ ﺔ‬
‫ﺑﺎﺳ‬‫)‪5‬ﻣﻦ ﺧﺎرج اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ‪:‬‬

‫ﺗﻌﺮﻳﻒ‬
‫ﺒﺎر اﻟﻔﺌ ﺔ ‪2) :‬أ )‪= 10 3‬‬
‫ﺘ‬‫)‪1‬اﺧ‬
‫ﺒﺎﻋ ﺔ )‪(self.a) 5‬‬
‫ﺗ ﻲ(‪4) :‬ﻃ‬
‫__ ‪)__init‬ذا‬
‫ﺗ ﻲ(‪:‬‬
‫ﺒﺎر أ( ‪)6) def m1‬ذا‬
‫ﺘ‬‫ﺒﺎﻋ ﺔ )اﺧ‬
‫ﻃ‬
‫)‪(cls.a)10‬‬
‫‪12)def‬‬
‫‪print‬‬
‫)‪m2(Test.a‬‬ ‫ﺒﺎﻋ ﺔ‬
‫)‪(cls): 11‬‬ ‫)‪7‬ﻃ‬
‫‪print‬‬
‫‪8) print (Test.a) 9) classmethod‬‬
‫)‪(self.a‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪11‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫)( ‪() 20) t .m2 () 21) t.m3‬‬


‫‪18) print (ta) 19) t.m1‬‬
‫‪=():Test‬‬
‫‪15) ()print‬‬
‫‪17) print‬‬ ‫)‪(Test.a‬‬
‫)‪(Test.a‬‬ ‫‪16) t‬‬
‫‪staticmethod 14) def m3‬‬
‫)‪13‬‬

‫ﺑ ﺖ‪:‬‬
‫ﺜﺎ‬
‫ﺘﻐﻴﺮ اﻟ‬
‫ﺣﻴ ﺚﻳﻤﻜﻨﻨﺎﺗﻌﺪﻳﻞ ﻗﻴﻤ ﺔ اﻟﻤ‬
‫ﺘﺨﺪام ‪classname.‬‬
‫ﺑﺎﺳ‬‫ﺘﻌﺪﻳﻞ‬
‫ﻓ ﻲ أي ﻣﻜﺎنﺳﻮاء ﻓ ﻲ اﻟﻔﺼﻞ أو ﺧﺎرج اﻟﻔﺼﻞ ‪،‬ﻳﻤﻜﻨﻨﺎ اﻟ‬
‫ﺘﻐﻴﺮ ‪cls.‬‬
‫ﺘﺨﺪام ﻣ‬
‫ﺑﺎﺳ‬‫وﻟﻜﻦ داﺧﻞ ﻃﺮﻳﻘ ﺔ اﻟﺼﻨﻒ ‪،‬‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪def m2 (): 8) :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫)‪= 888 6) staticmethod 7‬‬
‫‪4) def m1 (cls): 5) cls.a‬‬
‫‪2) a = 777 3) classmethod‬‬

‫) ‪Test.a = 9999‬‬
‫ﺒﺎﻋ ﺔ )‪(Test.a‬‬
‫ﻃ‬
‫ﺒﺎﻋ ﺔ‬
‫)‪10) Test.m1 () 11‬ﻃ‬
‫)‪(Test.a‬‬
‫ﺒﺎﻋ ﺔ‬
‫)‪12) Test.m2 () 13‬ﻃ‬
‫)‪(Test.a‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪777‬‬
‫‪888‬‬
‫‪999‬‬

‫*****‬

‫ﺘﻐﻴﺮ ﻣﺮﺟﻌ ﻲ ﻟﻠﻜﺎﺋﻦ‪:‬‬


‫ﺗ ﻲ أو ﻣ‬
‫ﺘﺨﺪام إﻣﺎ ذا‬
‫ﺑﺎﺳ‬‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﺘﻐﻴﺮ اﻟ‬
‫ﺘﻐﻴﻴﺮ ﻗﻴﻤ ﺔ اﻟﻤ‬
‫ﺑ‬‫إذا ﻗﻤﻨﺎ‬

‫ﺑﻬﺬا اﻻﺳﻢ‬‫ﺘﻐﻴﺮ ﺣﺎﻟ ﺔ ﺟﺪﻳﺪ‬


‫ﺑ ﺖ ‪ ،‬ﻓﻘﻂ ﻣ‬
‫ﺜﺎ‬
‫ﺘﻐﻴﺮ اﻟ‬
‫ﺘﻐﻴﺮ ﻗﻴﻤ ﺔ اﻟﻤ‬
‫ﺗ ﻲ أو ﻛﺎﺋﻦ ‪ ،‬ﻓﻠﻦﺗ‬
‫ﺘﻐﻴﺮ ﻣﺮﺟﻌ ﻲ ذا‬
‫ﺘﺨﺪام إﻣﺎ ﻣ‬
‫ﺑﺎﺳ‬‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﺘﻐﻴﺮ اﻟ‬
‫ﺘﻐﻴﻴﺮ ﻗﻴﻤ ﺔ اﻟﻤ‬
‫ﺑ‬‫إذا ﻗﻤﻨﺎ‬
‫ﺘﻪ إﱃ ﻫﺬا اﻟﻜﺎﺋﻦ اﻟﻤﺤﺪد‪.‬‬
‫ﺘﻢ إﺿﺎﻓ‬
‫ﺳﻴ‬

‫ﺗ ﻲ(‪4) self.a = 888 :‬‬


‫ﺒﺎر اﻟﻔﺌ ﺔ ‪2) :‬أ ‪)= 10 3) def m1‬ذا‬
‫ﺘ‬‫)‪1‬اﺧ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪12‬‬ ‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

(Test.a) 8) print (t1.a)


() 6) t1.m1 () 7) print
5) t1 = Test

| ‫ﺘﺎج‬
‫اﻧ‬
10
888

('t2:'، t2.x، t2.y) : ‫ﺒﺎر اﻟﻔﺌ ﺔ‬


‫ﺘ‬‫اﺧ‬1)
print ('t1:'، t1. x، t1.y) 13) print
10) t1.x = 888 11) t1.y = 999 12)
7) t2t1.y) 9) print
= Test ('t2:'،('t1:'،
() 8) print t2.x، t1.x،
t2.y)
4) self.y = 20 5) 6) t1 = Test ()
2) x = 10 3) def __init __ (self):

| ‫ﺘﺎج‬
‫اﻧ‬
1: 10 20 ‫ر‬
2: 10 20 ‫ر‬
t1: 888999
2: 10 20 ‫ر‬

‫ﺗﻌﺮﻳﻒ‬
= 10 3) ‫أ‬2) : ‫ﺒﺎر اﻟﻔﺌ ﺔ‬
‫ﺘ‬‫اﺧ‬1)
self.b = 20 5) t1 = :(‫ﺗ ﻲ‬
‫__)ذا‬init __
() ‫ﺒﺎر‬
‫ﺘ‬‫ )(اﺧ‬6) t2 = ‫ﺒﺎر‬
‫ﺘ‬‫اﺧ‬4)

(t1.a، t1.b) 10) print (t2.a، t2.b)


= 888 8) t1.b = 999 9) print
7) Test.a

| ‫ﺘﺎج‬
‫اﻧ‬
888999
888 20

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

13
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

__ ‫ﺗﻌﺮﻳﻒ‬
= 10 3) ‫أ‬2) : ‫ﺒﺎر اﻟﻔﺌ ﺔ‬
‫ﺘ‬‫اﺧ‬1)
self.b = 20 5) def m1 :(‫ﺗ ﻲ‬
‫__)ذا‬init
t1.b) 13) print (t2.a، t2.b) :(‫ﺗ ﻲ‬
‫)ذا‬4)
Test
= ()
99911)8)t1.m1
9 ) t1 ()= 12)
Testprint
() 10)(t1.a،
t2 =
6) self.a = 888 7) self.b

| ‫ﺘﺎج‬
‫اﻧ‬
888999
10 20

3) def __init __ ‫أ‬2) : ‫ﺒﺎر اﻟﻔﺌ ﺔ‬


‫ﺘ‬‫اﺧ‬1)
= 999 9) 10) t1 = :(‫ﺗ ﻲ‬
‫ =)ذا‬10
m1 (cls): 7) cls.a = 888 8) cls.b
‫ﺒﺎر‬
=‫ﺘ‬
‫اﺧ‬
20() 5)
11)classmethod
t2 = ‫ﺒﺎر‬
‫ﺘ‬‫اﺧ‬4) 6)
self.b
def
t1.b) 14) ‫ﺒﺎﻋ ﺔ‬
‫ )(ﻃ‬12) t1.m1 () 13)
‫ﺒﺎﻋ ﺔ‬
‫(ﻃ‬t2.a، t2.b) 15) ‫ﺒﺎﻋ ﺔ‬
‫(ﻃ‬t1.a،
(Test.a، Test.b)

| ‫ﺘﺎج‬
‫اﻧ‬
888 20
888 20
888999

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

14
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

:‫ﺘ ﺔ ﻟﻠﻔﺼﻞ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﻛﻴﻔﻴ ﺔ ﺣﺬف اﻟﻤ‬
‫ﺘﺎﻟﻴ ﺔ‬
‫ﺘﺨﺪام اﻟﺼﻴﻐ ﺔ اﻟ‬
‫ﺑﺎﺳ‬‫ﺘ ﺔ ﻣﻦ أي ﻣﻜﺎن‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﻳﻤﻜﻨﻨﺎ ﺣﺬف اﻟﻤ‬1)
del classname.variablename

cls ‫ﺘﻐﻴﺮ‬
‫ﺘﺨﺪام ﻣ‬ ً ‫ﻳﻤﻜﻨﻨﺎ أ‬classmethod ‫وﻟﻜﻦ داﺧﻞ‬2)
‫ﻳﻀﺎ اﺳ‬
del cls.variablename

(Test .__ict__) ‫أ‬2) : ‫ﺒﺎر اﻟﺼﻨﻒ‬


‫ﺘ‬‫اﺧ‬1)
5) del cls.a 6) Test.m1 () 7) print
3) classmethod 4) def m1 (cls):
= 10

:‫ﺜﺎل‬
‫ﻣ‬

‫ﺗﻌﺮﻳﻒ‬
= 10 3) ‫أ‬2) : ‫ﺒﺎر اﻟﻔﺌ ﺔ‬
‫ﺘ‬‫اﺧ‬1)
4) :(‫ﺗ ﻲ‬
‫__)ذا‬init __

14) def m3 (): 15)


‫ﺴﺖ‬
12) del Test.c 13) ‫دﻳﻞﺗ‬
staticmethod
10) def m2 (cls): 11) cls.d = 40
Test.c
7) 8) del Test.b = 30
9) classmethod
Test.b = 20 5) 6) def m1 (self):

print (Test .__ict__)

(Test 18)
.__ict__)
t = Test
20) ()t.m1
19) ()
print
21)
Test.d 17) print (Test .__ict__)
Test.e = 50 16) del

‫ﺒﻊ‬
‫اﻃ‬22) Test.m2 () 23)
(Test .__ict__)
‫ﺒﻊ‬
‫اﻃ‬24) Test.m3 () 25)
(Test .__ict__)
_ ‫ﺒﺎر‬
‫ﺘ‬‫ﺒﻊ )اﺧ‬
‫اﻃ‬26) Test.f = 60 27)
_) ‫دﻳﻜ ﺖ‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

15
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺒﻊ‬
‫)‪28) del Test.e 29‬اﻃ‬
‫)__‪(Test .__ict‬‬

‫****ﻣﻠﺤﻮﻇ ﺔ‪:‬‬
‫ﺘ ﺔ ‪ ،‬ﻟﻜﻦ ﻻﻳﻤﻜﻨﻨﺎﺗﻌﺪﻳﻠﻬﺎ أو ﺣﺬﻓﻬﺎ‪.‬‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﺘﻐﻴﺮ ﻣﺮﺟﻊ اﻟﻜﺎﺋﻦ ‪ /‬اﻟﺬا ت ‪،‬ﻳﻤﻜﻨﻨﺎ ﻗﺮاءة اﻟﻤ‬
‫ﺘﺨﺪام ﻣ‬
‫ﺑﺎﺳ‬

‫ﺘﻐﻴﺮ ﺣﺎﻟ ﺔ ﺟﺪﻳﺪ إﱃ ﻫﺬا اﻟﻜﺎﺋﻦ اﻟﻤﺤﺪد‪.‬‬


‫ﺘﻢ إﺿﺎﻓ ﺔ ﻣ‬
‫ﺘﻌﺪﻳﻞ ‪ ،‬ﻓ ﺴﻴ‬
‫إذا ﻛﻨﺎ ﻧﺤﺎول اﻟ‬

‫‪t1.a = 70‬‬

‫إذا ﻛﻨﺎ ﻧﺤﺎول اﻟﺤﺬف ‪ ،‬ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ ﺧﻄﺄ‪.‬‬

‫ﺜﺎل‪:‬‬
‫ﻣ‬

‫ﺒﺎر ‪a‬‬
‫ﺘ‬‫ﺒﺎر اﻟﻔﺌ ﺔ ‪2) :‬أ = ‪= 10 3) 4) t1‬اﺧ‬
‫ﺘ‬‫)‪1‬اﺧ‬
‫‪() 5) del t1.a ===> AttributeError:‬‬

‫ﺘﻐﻴﺮ ‪cls.‬‬
‫ﺘﺨﺪام ‪classname‬أو ﻣ‬
‫ﺑﺎﺳ‬‫ﺘ ﺔ إﻻ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﻻﻳﻤﻜﻨﻨﺎﺗﻌﺪﻳﻞ أو ﺣﺬف اﻟﻤ‬

‫ﺘﻴﺮاد اﻟﻨﻈﺎم )‪2‬ﻓﺌ ﺔ اﻟﻌﻤﻼء‪3) :‬‬


‫)‪1‬اﺳ‬

‫'' ''‬ ‫""‬


‫ﻓﺌ ﺔ اﻟﻌﻤﻴﻞ ﻣﻊ اﻟﻌﻤﻠﻴﺎ ت اﻟﻤﺼﺮﻓﻴ ﺔ ‪name 7) self.balance = ..‬‬
‫= ‪5) def __init __ (self، name، Balance = 0.0): 6) self.name‬‬
‫'‪4) bankname = 'DURGABANK‬اﻟﺮﺻﻴﺪ )‪8‬إﻳﺪاع )‪def (self، amt ): 9) 10‬‬
‫)‪19‬‬
‫‪13)name‬‬
‫)‪14) 15)= 16‬‬
‫‪input‬‬
‫ﺐ)‪17‬‬
‫)‪18‬‬
‫ﺳﺤ‬‫‪print‬‬
‫)‪self.balance‬‬
‫‪('Welcome‬‬‫‪11)to'،‬‬
‫ﻳﺪاع‪،":‬‬
‫)‪Customer.bankname‬‬
‫ﺑﻌﺪ اﻹ‬‫ﺒﺎﻋ ﺔ )"اﻟﺮﺻﻴﺪ‬
‫ﻃ‬
‫‪input‬‬
‫)‪(name‬‬
‫‪(' Choose‬‬
‫ﺳﻤﻚ‪21) (':‬‬
‫)'أدﺧﻞ ا‪your‬‬
‫‪option:‬‬‫‪def') (self،‬‬
‫ﺒﻊ‬
‫‪True:‬اﻃ‬
‫)‪amt):22‬‬
‫ﺑﻴﻨﻤﺎ)‪12‬‬
‫>‪if amt‬‬
‫‪20) cself.balance:‬‬
‫‪= Customer‬‬
‫= ‪('d-Deposit \ nw-Withdraw \ ne-exit ') 23) option‬‬
‫ﺗ ﻲ ‪+ amt‬‬
‫ﺘﻮازن اﻟﺬا‬
‫ﺗ ﻲ =اﻟ‬
‫ﺘﻮازن اﻟﺬا‬
‫اﻟ‬

‫ﺒﺎﻋ ﺔ )"أﻣﻮال ﻏﻴﺮ ﻛﺎﻓﻴ ﺔ ‪ ..‬ﻻﻳﻤﻜﻦﺗﻨﻔﻴﺬ ﻫﺬه اﻟﻌﻤﻠﻴ ﺔ"( ‪self.balance = self.balance-amt‬‬
‫ﻃ‬
‫)( ‪sys.exit‬‬

‫ﺑﻌﺪ اﻟ ﺴﺤ ﺐ‪self.balance) ، ":‬‬‫‪")print‬اﻟﺮﺻﻴﺪ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪16‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺒﻠﻎ‪27) ((':‬‬
‫)‪24‬إذا ﻛﺎن اﻟﺨﻴﺎر '‪== 'd‬أو اﻟﺨﻴﺎر ‪)== 'D': 25) amt = float‬اﻹدﺧﺎل )'أدﺧﻞ اﻟﻤ‬

‫)'أدﺧﻞ‬
‫)اﻹدﺧﺎل)‪() 33‬‬
‫ﺒﺎﻋ ﺔ‬
‫==ﻃ‬‫‪== 'E':‬‬
‫)‪'W':31‬‬
‫اﻟﺨﻴﺎر)‪28‬‬
‫= ‪amt‬‬ ‫‪float‬‬
‫‪elif‬أو‬ ‫اﻟﺨﻴﺎر==‬ ‫‪elif‬أو‬
‫ﺧﻴﺎر '‪'e‬‬ ‫==)‪29‬‬ ‫)‪26‬ﺧﻴﺎر '‪'w‬‬
‫‪c.withdraw‬‬ ‫‪c.deposit‬‬
‫)‪(amt‬‬ ‫)‪(amt‬‬
‫ﺒﻠﻎ‪30) ((':‬‬
‫اﻟﻤ‬

‫ﺘﻴﺎر ﺧﻴﺎر‬
‫ﺒﻊ )"ﺧﻴﺎر ﻏﻴﺮ ﺻﺎﻟﺢ ‪ ..‬اﻟﺮﺟﺎء اﺧ‬
‫‪('Thanks for Banking') 32) sys.exit‬وإﻻ‪34) :‬اﻃ‬
‫ﺻﺎﻟﺢ"(‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬

‫د‪\ durga_classes> py test.py :‬‬


‫ﺑﺎﻧﻚ‬
‫ﺑﻜﻢ ﻓ ﻲ دورﺟﺎ‬‫ﺒﺎ‬
‫ﻣﺮﺣ‬

‫أدﺧﻞ اﺳﻤﻚ‪ :‬دورﺟﺎ‬

‫د‪ -‬اﻹﻳﺪاع‬
‫ث‪-‬ﺳﺤ ﺐ‬

‫ﺘﺮوﻧ ﻲ‬
‫اﻟﻤﺨﺮج اﻹﻟﻜ‬

‫ﺘﺮ ﺧﻴﺎرك‪ :‬د‬


‫اﺧ‬
‫ﺒﻠﻎ‪10000 :‬‬
‫أدﺧﻞ اﻟﻤ‬

‫ﺑﻌﺪ اﻹﻳﺪاع‪10000.0 :‬‬‫اﻟﺮﺻﻴﺪ‬

‫د‪ -‬اﻹﻳﺪاع‬
‫ث‪-‬ﺳﺤ ﺐ‬

‫ﺘﺮوﻧ ﻲ‬
‫اﻟﻤﺨﺮج اﻹﻟﻜ‬

‫ﺘﺮ ﺧﻴﺎرك‪ :‬د‬


‫اﺧ‬
‫ﺒﻠﻎ‪20000 :‬‬
‫أدﺧﻞ اﻟﻤ‬

‫ﺑﻌﺪ اﻹﻳﺪاع‪30000.0 :‬‬‫اﻟﺮﺻﻴﺪ‬

‫د‪ -‬اﻹﻳﺪاع‬
‫ث‪-‬ﺳﺤ ﺐ‬

‫ﺘﺮوﻧ ﻲ‬
‫اﻟﻤﺨﺮج اﻹﻟﻜ‬

‫ﺘﺮ ﺧﻴﺎرك‪w :‬‬


‫اﺧ‬
‫ﺒﻠﻎ‪2000 :‬‬
‫أدﺧﻞ اﻟﻤ‬

‫ﺑﻌﺪ اﻟ ﺴﺤ ﺐ‪28000.0 :‬‬‫اﻟﺮﺻﻴﺪ‬

‫د‪ -‬اﻹﻳﺪاع‬
‫ث‪-‬ﺳﺤ ﺐ‬

‫ﺘﺮوﻧ ﻲ‬
‫اﻟﻤﺨﺮج اﻹﻟﻜ‬

‫ﺘﺮ ﺧﻴﺎرك‪r :‬‬


‫اﺧ‬

‫ﺘﻴﺎر ﺧﻴﺎر ﺻﺎﻟﺢ‬


‫ﺧﻴﺎر ﻏﻴﺮ ﺻﺎﻟﺢ ‪ ..‬اﻟﺮﺟﺎء اﺧ‬

‫د‪ -‬اﻹﻳﺪاع‬
‫ث‪-‬ﺳﺤ ﺐ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪17‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺮوﻧ ﻲ‬
‫اﻟﻤﺨﺮج اﻹﻟﻜ‬

‫ﺘﺮ ﺧﻴﺎرك‪e :‬‬


‫اﺧ‬
‫ﺷﻜﺮا ﻋﲆ اﻟﺨﺪﻣﺎ ت اﻟﻤﺼﺮﻓﻴ ﺔ‬

‫ﺘﻐﻴﺮا ت اﻟﻤﺤﻠﻴ ﺔ‪:‬‬


‫)‪3‬اﻟﻤ‬
‫ﺒﺎﺷﺮة ‪ ،‬وﻳ ﺴﻤﻰ ﻫﺬا اﻟﻨﻮع ﻣﻦ‬
‫ﺘﻐﻴﺮا ت داﺧﻞ ﻃﺮﻳﻘ ﺔ ﻣ‬
‫ﺒﺮﻣﺞ ‪،‬ﻳﻤﻜﻨﻨﺎ أن ﻧﻌﻠﻦ ﻋﻦ اﻟﻤ‬
‫ﺘ ﺔ ﻟﻠﻤ‬
‫ﺒﺎ ت اﻟﻤﺆﻗ‬
‫ﺘﻄﻠ‬
‫ﺒﻴ ﺔ اﻟﻤ‬
‫ﺘﻠ‬‫ﺑﻌﺾ اﻷﺣﻴﺎن ﻟ‬‫ﻓﻲ‬
‫ﺘ ﺔ‪.‬‬
‫ﺘﻐﻴﺮا ت اﻟﻤﺆﻗ‬
‫ﺘﻐﻴﺮا ت اﻟﻤﺤﻠﻴ ﺔ أو اﻟﻤ‬
‫ﺘﻐﻴﺮا ت اﻟﻤ‬
‫اﻟﻤ‬

‫ﺘﻤﺎل اﻟﻄﺮﻳﻘ ﺔ‪.‬‬


‫ﺑﻤﺠﺮد اﻛ‬‫ﺗﻼﻓﻬﺎ‬
‫ﺘﻐﻴﺮا ت اﻟﻤﺤﻠﻴ ﺔ ﻓ ﻲ وﻗ ﺖﺗﻨﻔﻴﺬ اﻟﻄﺮﻳﻘ ﺔ وإ‬
‫ﺘﻢ إﻧﺸﺎء اﻟﻤ‬
‫ﺳﻴ‬

‫ﺘﻐﻴﺮا ت اﻟﻤﺤﻠﻴ ﺔ ﻟﻠﻄﺮﻳﻘ ﺔ ﻣﻦ ﺧﺎرج اﻟﻄﺮﻳﻘ ﺔ‪.‬‬


‫ﻻﻳﻤﻜﻦ اﻟﻮﺻﻮل إﱃ اﻟﻤ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪10) t.m2 () :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫)( ‪8) t = Test () 9) t .m1‬‬
‫‪6) b = 2000=7)1000‬‬
‫)‪ (b‬أ‪print‬‬
‫‪(a) (self):‬‬
‫‪m1‬‬ ‫)‪5) def 3‬‬
‫‪m2‬‬‫‪4)(self):‬‬
‫‪print‬‬
‫‪2) def‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪1000‬‬
‫‪2000‬‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪m2 (self): 6) b = 2000 7) print (a) #NameError: name 'a' :‬‬
‫ﺘ‬‫)‪1‬اﺧ‬
‫ﺘﻢﺗﻌﺮﻳﻔﻪ )( ‪11) t.m2‬‬
‫‪2) def m1 (self): 3) a = 1000 4) print (a) 5) def‬ﻟﻢﻳ‬
‫)( ‪8) print (b) 9) t = Test () 10) t.m1‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪18‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫أﻧﻮاع اﻟﻄﺮق‪:‬‬
‫ﺜﻮن ﻣﻦ اﻟﻔﺌ ﺔ ‪3‬‬
‫ﺑﺎﻳ‬‫ﺑﺄﻧﻮاع ﻣﻦ اﻟﻄﺮق داﺧﻞ‬‫ُﺴﻤﺢ‬
‫ﻳ‬

‫ﺜﻴﻞ‬
‫)‪1‬ﻃﺮق اﻟﻤ‬
‫)‪2‬ﻃﺮق اﻟﻔﺼﻞ‬
‫ﺘﺔ‬
‫ﺑ‬‫ﺜﺎ‬
‫)‪3‬اﻟﻄﺮق اﻟ‬

‫ﺜﻴﻞ‪:‬‬
‫)‪1‬ﻃﺮق اﻟﻤ‬
‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ ‪ ،‬ﻓﻬﺬا اﻟﻨﻮع ﻣﻦ‬
‫ﺘﺨﺪم ﻣ‬
‫ﺗﻨﻔﻴﺬ اﻷﺳﻠﻮ ب اﻟﺪاﺧﻠ ﻲ إذا ﻛﻨﺎ ﻧ ﺴ‬
‫ﺜﻴﻞ‪.‬‬
‫ﺗ ﺴﻤﻰ اﻷﺳﺎﻟﻴ ﺐ أﺳﺎﻟﻴ ﺐ اﻟﻤ‬

‫ﺗ ﻲ(‪:‬‬
‫ﺗ ﻲ‪)def m1 .‬ذا‬
‫ﺘﻐﻴﺮ اﻟﺬا‬
‫ﺜﻴﻞ ‪ ،‬ﻋﻠﻴﻨﺎﺗﻤﺮﻳﺮ اﻟﻤ‬
‫ﺘﺼﺮﻳﺢ ﻋﻦ ﻃﺮﻳﻘ ﺔ اﻟﻤ‬
‫داﺧﻞ اﻟ‬

‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ‪.‬‬


‫ﺗ ﻲ ‪،‬ﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ ﻣ‬
‫ﺘﻐﻴﺮ اﻟﺬا‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻟﻤ‬
‫ﺑﺎﺳ‬

‫ﺗ ﻲ وﻣﻦ ﺧﺎرج‬
‫ﺘﻐﻴﺮ اﻟﺬا‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺑﺎﺳ‬‫ﺜﻴﻞ‬
‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ اﻟﻤ‬
‫داﺧﻞ اﻟﻔﺼﻞﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﺨﺪام ﻣﺮﺟﻊ اﻟﻜﺎﺋﻦ‪.‬‬
‫ﺑﺎﺳ‬‫ﺘﺪﻋﺎؤ ﻫﺎ‬
‫ﺘ ﻲﻳﻤﻜﻨﻨﺎ اﺳ‬
‫اﻟﻔﺌ ﺔ اﻟ‬

‫‪1) class Student: 2) def __init __ (self، name،‬اﻟﻌﻼﻣﺎ ت(‪= :‬‬


‫‪3) self.name = name 4) self.marks‬اﻟﻌﻼﻣﺎ ت )‪5‬ﻋﺮض )‪7‬‬
‫ﻋﻼﻣﺎ ت‬
‫‪= 60:‬‬
‫ﻲ‪، ':‬‬
‫ﺗﻚ ﻫ)‪10‬‬
‫ﺗﻴ ﺔ<‬
‫ﻋﻼﻣﺎ‬
‫ﺒﻊ ت'( اﻟﺬا‬
‫اﻟﻌﻼﻣﺎ‬
‫‪(self):‬ﺖ‪def‬اﻃ‬
‫)‪9‬إذا ﻛﺎﻧ‬
‫ﺔ(‪6) :‬‬
‫‪print‬‬
‫ﺗﻴ‬
‫‪)('Hi'،‬ذا‬
‫‪self.name‬ﺔ ‪def‬‬
‫ﺗﻴ ﺔ( )‪8‬درﺟ‬
‫ذا‬
‫)‬
‫‪== 50:12‬‬
‫ت< )) ‪35:14‬‬
‫ﺗﻴ ﺔ<‬
‫اﻟﻌﻼﻣﺎ‬
‫‪elif‬اﻟﺬا‬
‫‪ elif‬ت)‪11‬‬
‫ﻋﻼﻣﺎ‬‫‪self.‬‬
‫ﻷوﱃ'( )‪13‬‬
‫ﺜﺎﻧﻴ ﺔ'(‬
‫اﻟﺪرﺟﺔﺔاﻟا‬
‫ﻋﲆاﻟﺪرﺟ‬
‫ﺖﻋﲆ‬
‫ﺣﺼﻠﺖ‬
‫)'ﺣﺼﻠ‬
‫ﺒﻊ '(‬
‫اﻃ‬
‫ﺒﻊ )"ﻟﻘﺪ ﻓﺸﻠ ﺖ" (‬
‫ﺜ ﺔ'( )‪15‬وإﻻ‪16) :‬اﻃ‬
‫ﺜﺎﻟ‬
‫ﺒﻊ '(ﺣﺼﻠ ﺖ ﻋﲆ اﻟﺪرﺟ ﺔ اﻟ‬
‫اﻃ‬
‫)'أدﺧﻞ‪(n):‬‬
‫اﻟﻨﻄﺎق )‪19‬‬ ‫=ﻲ‬
‫)اﻹدﺧﺎل‬ ‫‪i int‬ﻓ‬
‫)‪18‬ﻟـ‬ ‫اﻟﻄﻼ ب‪((':‬‬
‫اﻟﻌﻼﻣﺎ ت‬ ‫ﻋﺪد )‪20‬‬ ‫)'أدﺧﻞ‬
‫ﺳﻢ‪(':‬‬ ‫‪17) n‬‬
‫)'أدﺧﻞ اﻻ‬ ‫‪= int =(input‬‬
‫اﻹدﺧﺎل‬ ‫اﻻﺳﻢ‬
‫اﻟﻄﺎﻟ ﺐ )اﻻﺳﻢ ‪ ،‬اﻟﻌﻼﻣﺎ ت( )‪() 23) s.grade () 24‬‬
‫))' )(‬ ‫)‪21‬‬
‫ﺒﺎﻋ ﺔ‬ ‫‪s =s.display‬‬
‫)‪22‬ﻃ‬ ‫اﻟﻌﻼﻣﺎ ت‪:‬‬

‫‪Ouput:‬‬
‫د‪\ durga_classes> py test.py :‬‬
‫أدﺧﻞ ﻋﺪد اﻟﻄﻼ ب‪2 :‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪19‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫أدﺧﻞ اﻻﺳﻢ‪ :‬دورﺟﺎ‬


‫أدﺧﻞ اﻟﻌﻼﻣﺎ ت‪90 :‬‬

‫ﺒﺎ دورﺟﺎ‬
‫ﻣﺮﺣ‬
‫ﺗﻚ ﻫ ﻲ‪90 :‬‬
‫ﻋﻼﻣﺎ‬

‫ﻟﻘﺪ ﺣﺼﻠ ﺖ ﻋﲆ اﻟﺪرﺟ ﺔ اﻷوﱃ‬

‫أدﺧﻞ اﻻﺳﻢ‪ :‬راﻓ ﻲ‬

‫أدﺧﻞ اﻟﻌﻼﻣﺎ ت‪12 :‬‬

‫ﺒﺎ راﻓ ﻲ‬
‫ﻣﺮﺣ‬

‫ﺗﻚ ﻫ ﻲ‪12 :‬‬


‫ﻋﻼﻣﺎ‬

‫أﻧ ﺖ ﻓﺎﺷﻞ‬

‫ﻃﺮق ‪Setter‬و ‪Getter:‬‬


‫ﺘﺨﺪام ﻃﺮق ‪getter‬و ‪setter.‬‬
‫ﺑﺎﺳ‬‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ واﻟﺤﺼﻮل ﻋﻠﻴﻬﺎ‬
‫ﻳﻤﻜﻨﻨﺎﺗﻌﻴﻴﻦ ﻗﻴﻢ ﻣ‬

‫ﻃﺮﻳﻘ ﺔ اﻟﻮاﺿﻊ‪:‬‬
‫ﺑﺎﺳﻢ ﻃﺮق اﻟﻄﻔﺮا ت‪.‬‬ ‫ُﻌﺮف ﻃﺮق اﻟﻮاﺿﻊ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ‪.‬ﺗ‬
‫ﺘﻌﻴﻴﻦ اﻟﻘﻴﻢ إﱃ ﻣ‬
‫ﺘﺨﺪام ﻃﺮق ‪setter‬ﻟ‬
‫ﻳﻤﻜﻦ اﺳ‬

‫ﺘﻐﻴﺮ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪def setVariable (self، variable): self.variable = :‬ﻣ‬

‫ﺜﺎل‪def setName (self، name): self.name = name :‬‬


‫ﻣ‬

‫ﺑﺎﺳﻢ ﻃﺮق اﻟﻮﺻﻮل‪.‬‬ ‫ُﻌﺮف ﻃﺮق ‪Getter‬أ ً‬


‫ﻳﻀﺎ‬ ‫ﺘﻐﻴﺮا ت اﻟﺤﺎﻟ ﺔ‪.‬ﺗ‬
‫ﺘﺨﺪام ﻃﺮق ‪Getter‬ﻟﻠﺤﺼﻮل ﻋﲆ ﻗﻴﻢ ﻣ‬
‫ﻃﺮﻳﻘ ﺔ ‪Getter:‬ﻳﻤﻜﻦ اﺳ‬

‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪def getVariable (self): :‬‬

‫ﺘﻐﻴﺮ‬
‫ﺗﻴ ﺔ ﻣ‬
‫اﻟﻌﻮدة اﻟﺬا‬

‫ﺜﺎل‪def getName (self): return self.name :‬‬


‫ﻣ‬

‫ﺗ ﻲ ‪ ،‬اﻻﺳﻢ(‪:‬‬
‫‪)1) class Student: 2) def setName‬ذا‬

‫)‪3) self.name = name 4‬‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪20‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫‪def getMarks (self): 12) return self.marks 13 ) 14) n = int (input‬‬

‫ب‪15) ((':‬‬
‫اﻟﻄﻼ )‪7) 8‬‬
‫‪def setMarks‬‬
‫)‪')5‬أدﺧﻞ ﻋﺪد‬
‫‪(self،‬‬
‫‪defmarks):‬‬
‫‪getName‬‬‫‪9) (self):‬‬
‫‪self.marks‬‬
‫‪6) return‬‬
‫‪= Mark‬‬
‫‪self.name‬‬
‫)‪10) 11‬‬

‫ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق ‪() 17) name = input ('Enter Name:') 18) s .setName‬‬

‫‪)(n): 16) s = Student‬اﻻﺳﻢ( )‪19‬اﻟﻌﻼﻣﺎ ت ‪s.getName ()) 23) print ('Your‬‬

‫))'‪(input ('Enter Marks:‬‬


‫)‪20‬ﺔ )(‬
‫ﺒﺎﻋ‬‫‪s.setMarks‬ﻃ‬
‫‪'، s.getMarks‬‬
‫)‪(Marks‬‬
‫)‪()) 24)21‬‬
‫)‪22‬ﻫ ﻲ‪:‬‬
‫‪ print‬ت‬
‫‪('Hi'،‬اﻟﻌﻼﻣﺎ‬
‫‪= int‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬

‫د‪\ python_classes> py test.py :‬‬


‫أدﺧﻞ ﻋﺪد اﻟﻄﻼ ب‪2 :‬‬

‫أدﺧﻞ اﻻﺳﻢ‪ :‬دورﺟﺎ‬


‫أدﺧﻞ اﻟﻌﻼﻣﺎ ت‪100 :‬‬

‫ﺒﺎ دورﺟﺎ‬
‫ﻣﺮﺣ‬
‫ﺗﻚ ﻫ ﻲ‪100 :‬‬
‫ﻋﻼﻣﺎ‬

‫أدﺧﻞ اﻻﺳﻢ‪ :‬راﻓ ﻲ‬

‫أدﺧﻞ اﻟﻌﻼﻣﺎ ت‪80 :‬‬

‫ﺒﺎ راﻓ ﻲ‬
‫ﻣﺮﺣ‬

‫ﺗﻚ ﻫ ﻲ‪80 :‬‬


‫ﻋﻼﻣﺎ‬

‫)‪2‬ﻃﺮق اﻟﻔﺼﻞ‪:‬‬
‫ﺘ ﺔ( ‪ ،‬ﻓﺈن ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻷﺳﺎﻟﻴ ﺐﻳﺠ ﺐ أن ﻧﻌﻠﻦ ﻋﻨﻪ ﻛﻄﺮﻳﻘ ﺔ ﺻﻨﻔﻴ ﺔ‪.‬‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﺘﻐﻴﺮا ت اﻟﺼﻨﻒ )اﻟﻤ‬
‫ﺘﺨﺪم ﻓﻘﻂ ﻣ‬
‫ﺗﻨﻔﻴﺬ اﻷﺳﻠﻮ ب اﻟﺪاﺧﻠ ﻲ إذا ﻛﻨﺎ ﻧ ﺴ‬

‫ﺘﻐﻴﺮ ‪cls‬ﻓ ﻲ وﻗ ﺖ اﻹﻋﻼن‬


‫ﺒ ﺔ ﻟﻄﺮﻳﻘ ﺔ اﻟﻔﺌ ﺔ ‪،‬ﻳﺠ ﺐﺗﻮﻓﻴﺮ ﻣ‬
‫ﺑﺎﻟﻨ ﺴ‬
‫‪decorator.‬‬ ‫ﺘﺨﺪام‪dohtemssalc‬‬
‫ﺑﺎﺳ‬‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ‬‫ﺘﺼﺮﻳﺢ ﻋﻦ ﻃﺮﻳﻘ ﺔ اﻟﺼﻨﻒ‬
‫ﻳﻤﻜﻨﻨﺎ اﻟ‬

‫ﺘﻐﻴﺮ ﻣﺮﺟﻊ اﻟﻜﺎﺋﻦ‪.‬‬


‫ﺘﺨﺪام اﺳﻢ اﻟﻔﺌ ﺔ أو ﻣ‬
‫ﺑﺎﺳ‬
‫ﺘﺪﻋﺎء ‪classmethod‬‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪21‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫)‪1‬ﻓﺌ ﺔ اﻟﺤﻴﻮان‪(cls، name): 5) :‬‬


‫‪= 4 3) classmethod 4) def walk‬‬
‫‪2) lEgs‬‬

‫ﺗﻨ ﺴﻴﻖ )اﻻﺳﻢ ‪cls.lEgs)) ،‬‬


‫ﺒﺎﻋ ﺔ }{"(ﻳﻤﺸ ﻲ ﻣﻊ ‪{} lEgs ...".‬‬
‫ﻃ‬
‫‪")6) Animal.walk‬ﻛﻠ ﺐ"(‬
‫)'‪7) Animal.walk ('Cat‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫ﻛﻠ ﺐﻳﻤﺸ ﻲ ب ‪4‬أرﻃﺎل ‪...‬‬
‫ﻗﻄ ﺔﺗﻤﺸ ﻲ ب ‪4‬أرﻃﺎل ‪...‬‬

‫ﺘ ﻲﺗﻢ إﻧﺸﺎؤ ﻫﺎ ﻟﻠﻔﺼﻞ‪:‬‬


‫ﺒﻊ ﻋﺪد اﻟﻜﺎﺋﻨﺎ ت اﻟ‬
‫ﺘ‬‫ﺘ‬‫ﺑﺮﻧﺎﻣﺞ ﻟ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪2) :‬اﻟﻌﺪ __ ‪= 0 3) def __init‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫ﺗ ﻲ(‪4) :‬‬
‫)ذا‬

‫)( ‪8) 9) t1 = Test () 10) t2 = Test‬‬

‫)‪classmethod 6) def noOfObjects (cls): 7‬‬


‫)‪Test.count = Test.count + 1 5‬‬
‫ﺒﺎر‪cls.count) ، ":‬‬
‫ﺘ‬‫ﺘ ﻲﺗﻢ إﻧﺸﺎؤ ﻫﺎ ﻟﻔﺌ ﺔ اﻻﺧ‬
‫"( ‪print‬ﻋﺪد اﻟﻌﻨﺎﺻﺮ اﻟ‬

‫)( ‪t3 = Test () 13) t4 = Test () 14) t5 = Test‬‬


‫)‪11) Test.noOfObjects () 12‬‬

‫)( ‪15) Test.noOfObjects‬‬

‫ﺘ ﺔ‪:‬‬
‫ﺑ‬‫ﺜﺎ‬
‫)‪3‬اﻟﻄﺮق اﻟ‬
‫ﺑﺸﻜﻞ ﻋﺎم ‪ ،‬ﻫﺬه اﻟﻄﺮق ﻫ ﻲ ﻃﺮق اﻟﻤﻨﻔﻌ ﺔ اﻟﻌﺎﻣ ﺔ‪.‬‬
‫ﺘﻐﻴﺮا ت ﻓﺌ ﺔ‪.‬‬
‫ﺜﻴﻞ أو ﻣ‬
‫ﺘﺨﺪم أي ﻣ‬
‫داﺧﻞ ﻫﺬه اﻟﻄﺮق ‪ ،‬ﻟﻦ ﻧ ﺴ‬
‫ﺗﻴ ﺔ أو ‪cls‬ﻓ ﻲ وﻗ ﺖ اﻹﻋﻼن‪.‬‬
‫ﻫﻨﺎ ﻟﻦ ﻧﻘﺪم اﻟﺤﺠﺞ اﻟﺬا‬
‫ﺘﺨﺪام‪decorator dohtemcitats‬‬
‫ﺑﺎﺳ‬‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ‬‫ﺘﺔ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﺼﺮﻳﺢ ﻋﻦ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬
‫ﻳﻤﻜﻨﻨﺎ اﻟ‬
‫ﺘﺨﺪام اﺳﻢ اﻟﻔﺌ ﺔ أو ﻣﺮﺟﻊ اﻟﻜﺎﺋﻦ‬
‫ﺑﺎﺳ‬‫ﺘﺔ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ اﻷﺳﺎﻟﻴ ﺐ اﻟ‬

‫)‪1) class DurgaMath: 2) 3) staticmethod 4) def add (x، y): 5) print ('The Sum:'، x + y) 6‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪22‬‬ ‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫)‪def product (x، y): 9) 10) 11) staticmethod 12‬‬


‫ﺘﻮﺳﻂ )‪(x + y) / 2) 13) 14‬‬
‫)‪7) staticmethod 8‬ﻣ‬
‫‪def‬‬
‫ص(‬ ‫‪(x،‬‬
‫‪* y):‬‬
‫‪print‬س‬ ‫‪('The‬‬
‫‪(" average:'،‬اﻟﻤﻨ‬
‫ﺘﺞ‪، ":‬‬ ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬

‫)‪15) DurgaMath.add (10،20‬‬


‫)‪16) DurgaMath.product (10،20‬‬
‫)‪17) DurgaMath.average (10،20‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫اﻟﻤﺠﻤﻮع‪30 :‬‬
‫ﺘﺞ‪200 :‬‬
‫اﻟﻤﻨ‬

‫ﺘﻮﺳﻂ‪15.0 :‬‬
‫اﻟﻤ‬

‫ﻣﻠﺤﻮﻇ ﺔ‪:‬‬

‫ﺘﺔ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘ ﺔ ﻓﻘﻂ ‪ ،‬وﻳﻤﻜﻨﻨﺎ ذﻟﻚ داﺧﻞ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺜﻴﻞ واﻟﻄﺮق اﻟ‬
‫ﺘﺨﺪام ﻃﺮق اﻟﻤ‬
‫ﺑﺸﻜﻞ ﻋﺎم ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫•‬
‫ﺘﺨﺪام اﺳﻢ اﻟﻔﺌ ﺔ‪.‬‬
‫ﺑﺎﺳ‬‫ﺘﻮى اﻟﻔﺌ ﺔ‬
‫ﺘﻐﻴﺮا ت ﻣ ﺴ‬
‫اﻟﻮﺻﻮل إﱃ ﻣ‬
‫ﺜﻮن‪.‬‬
‫ﺒﺎﻳ‬
‫ﺘﺨﺪاﻣﺎ ﻓ ﻲ ﻟﻐ ﺔ اﻟ‬
‫ً‬ ‫ﺜﺮ اﺳ‬
‫ﺘﺼﻨﻴﻒ ﻫ ﻲ اﻷﺳﺎﻟﻴ ﺐ اﻷﻛ‬
‫ﺒﺮ ﻃﺮق اﻟ‬
‫ﺘ‬‫ﺗﻌ‬
‫•‬

‫ﺗﻤﺮﻳﺮ أﻋﻀﺎء ﻓﺼﻞ دراﺳ ﻲ إﱃ ﻓﺼﻞ آﺧﺮ‪:‬‬


‫ﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ أﻋﻀﺎء ﻓﺼﻞ واﺣﺪ داﺧﻞ ﻓﺼﻞ آﺧﺮ‪.‬‬

‫)‪display (self): 7) print ('Employee Number:'، self.eno) 8‬‬


‫‪2) def __init __ (self، eno، ename، esal): 3) 4) 5) 6) def‬‬
‫‪= ename‬‬
‫)‪self.ename‬‬ ‫ﺳﻢ‪self.esal‬‬
‫اﻟﻤﻮﻇﻒ‪9) ،':‬‬ ‫‪esal‬ا =‬
‫ﺒﺎﻋ ﺔ '(‬
‫‪1) class Employee:‬ﻃ‬
‫ﺗﻌﺪﻳﻞ =‬‫‪self.eno‬‬
‫)‪11‬‬ ‫ﺒﺎر=اﻟﻔﺌ ﺔ ‪:‬‬
‫‪eno‬‬
‫ﺘ‬ ‫‪self.ename‬‬
‫)‪self.esal‬اﺧ‬ ‫ﺗ ﺐ اﻟﻤﻮﻇﻒ‪10) ،':‬‬
‫ﺒﺎﻋ ﺔ '(را‬
‫ﻃ‬
‫‪12) emp.esal = emp.esal + 10000 13 ) emp.display () 14) e‬‬
‫‪def (emp):‬اﻟﻤﻮﻇﻒ ‪"(100،‬دورﺟﺎ"‪10000) 15) ،‬‬

‫‪ )Test.modify‬ﻫـ(‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪23‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫رﻗﻢ اﻟﻤﻮﻇﻒ‪100 :‬‬
‫اﺳﻢ اﻟﻤﻮﻇﻒ‪ :‬دورﺟﺎ‬
‫ﺗ ﺐ اﻟﻤﻮﻇﻒ‪20000 :‬‬
‫را‬

‫ﺒﺎر‪.‬‬
‫ﺘ‬‫ﺘﺎﺣﻮن ﻟﻔﺌ ﺔ اﻻﺧ‬
‫ﺒﻴﻖ أﻋﻼه ‪ ،‬أﻋﻀﺎء ﻓﺌ ﺔ اﻟﻤﻮﻇﻒ ﻣ‬
‫ﺘﻄ‬‫ﻓ ﻲ اﻟ‬

‫ﺒﻘﺎ ت اﻟﺪاﺧﻠﻴ ﺔ‬
‫اﻟﻄ‬
‫ﺑﺎﻟﻔﺌﺎ ت اﻟﺪاﺧﻠﻴ ﺔ‪.‬‬‫ﺑﻌﺾ اﻷﺣﻴﺎنﻳﻤﻜﻨﻨﺎ اﻹﻋﻼن ﻋﻦ ﻓﺌ ﺔ داﺧﻞ ﻓﺌ ﺔ أﺧﺮى ‪،‬ﻳ ﺴﻤﻰ ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻟﻔﺌﺎ ت‬‫ﻓﻲ‬

‫ﺑﺪون وﺟﻮد ﻧﻮع واﺣﺪ ﻣﻦ اﻟﻌﻨﺎﺻﺮ إذا ﻟﻢﺗﻜﻦ ﻫﻨﺎك ﻓﺮﺻ ﺔ ﻟﻮﺟﻮد ﻧﻮع آﺧﺮ ﻣﻦ اﻟﻜﺎﺋﻨﺎ ت ‪،‬‬
‫ﺛﻢﻳﺠ ﺐ أن ﻧﺬ ﻫ ﺐ ﻟﻠﻔﺼﻮل اﻟﺪاﺧﻠﻴ ﺔ‪.‬‬

‫ﺛﻢﻳﺠ ﺐ أنﺗﻜﻮن ﻓﺌ ﺔ اﻟﻤﺤﺮك ﺟﺰءًا ﻣﻦ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‪.‬‬‫ﺑﺪون ﻛﺎﺋﻦ اﻟ ﺴﻴﺎرة اﻟﻤﻮﺟﻮد ﻻﺗﻮﺟﺪ ﻓﺮﺻ ﺔ ﻟﻮﺟﻮد ﻛﺎﺋﻦ اﻟﻤﺤﺮك‪ .‬وﻣﻦ‬‫ﺜﺎل‪:‬‬
‫ﻣ‬

‫ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‪:‬‬
‫‪.....‬‬

‫ﻓﺌ ﺔ اﻟﻤﺤﺮك‪:‬‬
‫‪......‬‬

‫ﺑﺪون ﻛﺎﺋﻦ ﺟﺎﻣﻌ ﻲ ﻣﻮﺟﻮد ‪ ،‬ﻻﺗﻮﺟﺪ ﻓﺮﺻ ﺔ ﻟﻮﺟﻮد ﻛﺎﺋﻦ ﻗ ﺴﻢ ﻣﻮﺟﻮد‬‫ﺜﺎل‪:‬‬


‫ﻣ‬

‫ﻓﺌ ﺔ اﻟﺠﺎﻣﻌ ﺔ‪:‬‬


‫‪.....‬‬

‫ﻗ ﺴﻢ اﻟﻔﺼﻞ‪:‬‬
‫‪......‬‬

‫ﺛﻢﻳﺠ ﺐ أنﻳﻜﻮن اﻟﺮأس ﺟﺰءًا ﻣﻦ اﻹﻧ ﺴﺎن‪.‬‬‫ﺑﺪون وﺟﻮد اﻹﻧ ﺴﺎن ﻻﺗﻮﺟﺪ ﻓﺮﺻ ﺔ ﻟﻮﺟﻮد اﻟﺮأس‪ .‬وﻣﻦ‬‫ﺜﺎل‪:‬‬
‫ﻣ‬

‫ﻓﺌ ﺔ اﻹﻧ ﺴﺎن‪:‬‬


‫ﺋﻴ ﺲ اﻟﻔﺼﻞ‪:‬‬
‫ر‬

‫ﺑﺪون ﻛﺎﺋﻦ ﻓﺌ ﺔ ﺧﺎرﺟ ﻲ ﻻﺗﻮﺟﺪ ﻓﺮﺻ ﺔ ﻟﻮﺟﻮد ﻛﺎﺋﻦ ﻓﺌ ﺔ داﺧﻠ ﻲ‪.‬‬‫ﻣﻼﺣﻈ ﺔ‪:‬‬
‫ﺑﻜﺎﺋﻦ اﻟﻔﺌ ﺔ اﻟﺨﺎرﺟﻴ ﺔ‪.‬‬‫ﺋﻤﺎ‬
‫ﺒﻂ ﻛﺎﺋﻦ اﻟﻔﺌ ﺔ اﻟﺪاﺧﻠﻴ ﺔ دا ً‬
‫ﺗ‬‫ﺛﻢﻳﺮ‬‫وﻣﻦ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪24‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒ ﻲ ‪-1:‬‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫‪Inner: 5) def __init __ (self): 6) print ("inter class object‬‬


‫‪(self): 3) print ("external class object create") 4) class‬‬
‫‪m1‬‬ ‫‪(self):‬‬
‫)‪() 11‬‬ ‫‪i.m18)()print‬‬ ‫إﻧﺸﺎء"(‬
‫اﻟﺨﺎرﺟ ﻲ‬ ‫ﺔ"( )‪9) o =1‬‬
‫‪class‬‬
‫‪ Outer:‬ﻟﻠﻔﺌ‬
‫)‪ 2‬اﻟﺪاﺧﻠﻴ ﺔ‬ ‫‪def‬‬
‫ﻳﻘ ﺔ‬ ‫‪__init‬‬
‫)"اﻟﻄﺮ‬ ‫__‬
‫‪7) def‬‬
‫‪() 10) i = o.Inner‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺒﻘ ﺔ اﻟﺨﺎرﺟﻴ ﺔ‬
‫إﻧﺸﺎء ﻛﺎﺋﻦ اﻟﻄ‬
‫ﺒﻘ ﺔ اﻟﺪاﺧﻠﻴ ﺔ‬‫إﻧﺸﺎء ﻛﺎﺋﻦ اﻟﻄ‬
‫ﺒﻘ ﺔ اﻟﺪاﺧﻠﻴ ﺔ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻄ‬

‫ﺒﻘ ﺔ اﻟﺪاﺧﻠﻴ ﺔ‬
‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ اﻟﻄ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓﻴﻤﺎﻳﻠ ﻲ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺼﻴﻎ اﻟﻤﻤﻜﻨ ﺔ ﻻﺳ‬

‫)‪ 1‬س =اﻟﺨﺎرﺟ ﻲ )(‬


‫أﻧﺎ = س اﻟﺪاﺧﻠﻴ ﺔ )(‬
‫)( ‪i.m1‬‬

‫)‪2‬أﻧﺎ =ﺧﺎرﺟ ﻲ ‪().‬داﺧﻠ ﻲ )(‬


‫)( ‪i.m1‬‬

‫)‪3‬اﻟﺨﺎرﺟ ﻲ ‪().‬اﻟﺪاﺧﻠ ﻲ ‪().‬م )( ‪1‬‬

‫ﺒ ﻲ ‪-2:‬‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫)‪(self): 6) 7) 8) 9) 10 ) 11) 12) 13‬‬


‫‪= self.Dob () 5) def display‬‬
‫‪self.name‬‬
‫‪Person:‬‬ ‫'‪= 'durga‬‬
‫‪2) def‬‬ ‫‪__init __4)(self):‬‬
‫‪self.db‬‬
‫)‪3‬‬
‫‪1) class‬‬

‫‪(self): self.dd = 10 self.mm = 5‬‬


‫__ ‪self.name) class Dob: def __init‬‬
‫‪print ('Name:'،‬‬

‫= ‪self.yy‬ﻋﺮض ‪def‬‬
‫ﺗ ﻲ(‪:‬‬
‫‪)1947‬ذا‬
‫ﺗﻨ ﺴﻴﻖ ))‪(self.dd، self.mm، self.yy‬‬
‫ﺒﺎﻋ ﺔ ‪('Dob = {} / {} / {}'.‬‬
‫ﻃ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪25‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

‫اﻟﺸﺨﺺ‬14) p =
17) x.display ()
() 16) x = p.db
() 15) p.display

| ‫ﺘﺎج‬
‫اﻧ‬
‫ دورﺟﺎ‬:‫اﻻﺳﻢ‬
= 10/5/1947 ‫دو ب‬

-3: ‫ﺒ ﻲ‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬
.‫ﺒﻘﺎ ت اﻟﺪاﺧﻠﻴ ﺔ‬
‫داﺧﻞ اﻟﻔﺼﻞﻳﻤﻜﻨﻨﺎ أن ﻧﻌﻠﻦ ﻋﻦ أي ﻋﺪد ﻣﻦ اﻟﻄ‬

= self.Brain () 7) def :‫ﻓﺌ ﺔ اﻹﻧ ﺴﺎن‬1)


self.head = self.Head () 6) self.brain
__ (self): 4) self.name = 'Sunny' 5)
(self):
13) 16)
14) print ‫ﻋﺮض‬2)15)
class Brain: 3) def think
__init
(self):
talk 8)
(self):
9) 10)
12)
class
print
Head:
('Talking
11) def
...')
19) h. ()‫ﺴﺎن‬
21)‫اﻹﻧ‬
h.brain.think
17) 18) h = ('...
() ‫اﻟﻌﺮض‬
‫ﺘﻔﻜﻴﺮ‬
‫)'اﻟ‬
()
() 20) h.head.talk
print ("Hello .." ، self.name)

| ‫ﺘﺎج‬
‫اﻧ‬
‫ ﻣﺸﻤ ﺲ‬.. ‫ﺒﺎ‬
‫ﻣﺮﺣ‬
...‫ﺘﺤﺪ ث‬
‫ﺗ‬
... ‫ﺘﻔﻜﻴﺮ‬
‫اﻟ‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

26
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺟﻤﻊ اﻟﻘﻤﺎﻣ ﺔ‬
‫ﺛﻨﺎء إﻧﺸﺎء ﻛﺎﺋﻦ ‪ ،‬وﻟﻜﻨﻪ‬
‫ﺜﻴ ﺮًا أ‬
‫ﺒﺮﻣﺞ ﻛ‬
‫ﺘﻢ اﻟﻤ‬ ‫ً‬
‫وﻋﺎدة ﻣﺎﻳﻬ‬ ‫ﺒﺮﻣﺞ ﻣ ﺴﺆوﻻ ً ﻋﻦ ﻛﻞ ﻣﻦ إﻧﺸﺎء اﻟﻜﺎﺋﻨﺎ ت و‬
‫ﺗﺪﻣﻴﺮ ﻫﺎ ‪،‬‬ ‫ﺜﻞ ‪C ++ ،‬ﻳﻜﻮن اﻟﻤ‬
‫ﻓ ﻲ اﻟﻠﻐﺎ ت اﻟﻘﺪﻳﻤ ﺔ ﻣ‬

‫ﺑﺄﺷﻴﺎء ﻋﺪﻳﻤ ﺔ اﻟﻔﺎﺋﺪة ﻣﻤﺎﻳﺆدي إﱃ ﻣﺸﺎﻛﻞ ﻓ ﻲ اﻟﺬاﻛﺮة‬‫ﺒ ﺐ ‪nEglectance ،‬ﻳﻤﻜﻦ ﻣﻞء اﻟﺬاﻛﺮة اﻹﺟﻤﺎﻟﻴ ﺔ‬
‫ﺑﺴ‬‫ﺘﺨﻠﺺ ﻣﻦﺗﺪﻣﻴﺮ اﻟﻜﺎﺋﻨﺎ ت ﻋﺪﻳﻤ ﺔ اﻟﻔﺎﺋﺪة‪.‬‬
‫ﻳ‬
‫ﺒﻴﻖ اﻟﻜﻠ ﻲ ﻣﻊ ﺧﻄﺄ ﻧﻔﺎد اﻟﺬاﻛﺮة‪.‬‬
‫ﺘﻄ‬‫وﺳﻮفﻳﻨﺨﻔﺾ اﻟ‬

‫ﺜﻮن ﻣﻊ ﻣﺸﺎﻛﻞ اﻟﺬاﻛﺮة‬


‫ﺑﺎﻳ‬‫ﺑﺮﻧﺎﻣﺞ‬‫ﺘﺪﻣﻴﺮ اﻷﺷﻴﺎء ﻏﻴﺮ اﻟﻤﻔﻴﺪة ‪،‬ﻷن ﻓﺮﺻ ﺔ ﻓﺸﻞ‬
‫ﺋﻤﺎ ﻓ ﻲ اﻟﺨﻠﻔﻴ ﺔ ﻟ‬
‫ﺑﻌﺾ اﻟﻤ ﺴﺎﻋﺪ اﻟﺬيﻳﻌﻤﻞ دا ً‬‫ﺜﻮن ‪ ،‬ﻟﺪﻳﻨﺎ‬
‫ﺑﺎﻳ‬‫ﻟﻜﻦ ﻓ ﻲ‬

‫أﻗﻞ ﺟﺪًا‪ .‬ﻫﺬا اﻟﻤ ﺴﺎﻋﺪ ﻟﻴ ﺲﺳﻮى ﺟﺎﻣﻊ اﻟﻘﻤﺎﻣ ﺔ‪.‬‬

‫ﺋﻴ ﺴ ﻲ ﻟﻤﺠﻤﻊ اﻟﻘﻤﺎﻣ ﺔ ﻫﻮﺗﺪﻣﻴﺮ اﻷﺷﻴﺎء ﻋﺪﻳﻤ ﺔ اﻟﻔﺎﺋﺪة‪.‬‬


‫ﺛﻢ ﻓﺈن اﻟﻬﺪف اﻟﺮ‬‫وﻣﻦ‬

‫ﺘﻐﻴﺮ ﻣﺮﺟﻌ ﻲ ‪ ،‬ﻓﺈن ﻫﺬا اﻟﻜﺎﺋﻦ ﻣﺆ ﻫﻞ ﻟﻠﻘﻤﺎﻣ ﺔ‬


‫ﺘﻮي ﻋﲆ أي ﻣ‬
‫إذا ﻛﺎن اﻟﻜﺎﺋﻦ ﻻﻳﺤ‬
‫ﻣﺠﻤﻮﻋ ﺔ‪.‬‬

‫ﺑﺮﻧﺎﻣﺠﻨﺎ‪:‬‬‫ﺗﻌﻄﻴﻞ ﺟﺎﻣﻊ اﻟﻘﻤﺎﻣ ﺔ ﻓ ﻲ‬


‫ﻛﻴﻔﻴ ﺔﺗﻤﻜﻴﻦ و‬

‫ﺘﺎﻟﻴ ﺔ ﻟﻮﺣﺪة ‪gc.‬‬


‫ﺘﺨﺪام اﻟﻮﻇﺎﺋﻒ اﻟ‬
‫ﺗﻨﺎ‪ .‬ﻓ ﻲ ﻫﺬا اﻟ ﺴﻴﺎق ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﺎ‬
‫ﺘﻄﻠ‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻣ‬‫ﺘﺮاﺿ ًﻴﺎ ‪ ،‬وﻟﻜﻦﻳﻤﻜﻨﻨﺎﺗﻌﻄﻴﻠﻬﺎ‬
‫ﺘﻢﺗﻤﻜﻴﻦ أداةﺗﺠﻤﻴﻊ ‪Gargbage‬اﻓ‬
‫ﻳ‬

‫)( ‪1) gc.isenabled‬إرﺟﺎع ﺻﺤﻴﺢ إذاﺗﻢﺗﻤﻜﻴﻦ ‪GC‬‬

‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ‬
‫ﺘﻌﻄﻴﻞ ‪GC‬‬
‫)( ‪2) gc.disable‬ﻟ‬

‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ‬
‫ﺘﻤﻜﻴﻦ ‪GC‬‬
‫)( ‪3) gc.enable‬ﻟ‬

‫ﺘﻴﺮاد ))( ‪6) print (gc.isenabled‬‬


‫)‪1‬اﺳ‬
‫)( ‪(gc.isenabled ()) 5) gc.enable‬‬

‫‪()) 3) gc.disable () 4) print‬‬


‫‪gc 2) print (gc.isenabled‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺣﻘﻴﻘ ﻲ‬
‫ﺧﻄﺄ ﺷﻨﻴﻊ‬

‫ﺣﻘﻴﻘ ﻲ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪27‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻤﺪﻣﺮا ت‪:‬‬
‫ﺘﺪﻣﻴﺮ ﻃﺮﻳﻘ ﺔ ﺧﺎﺻ ﺔ وﻳﺠ ﺐ أنﻳﻜﻮن اﻻﺳﻢ __‪__del‬‬
‫اﻟ‬

‫ﺘﺪﻣﻴﺮ‬
‫ﺘﺪﻋﺎء أداة اﻟ‬
‫ﺑﺎﺳ‬‫ﺋﻤﺎ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Garbage Collector‬دا ً‬‫ﺒﻞﺗﺪﻣﻴﺮ ﻛﺎﺋﻦ ‪،‬ﻳﻘﻮم‬
‫ﻗ‬
‫ﺛﻴﻖ ‪ ،‬إﻟﺦ(‪.‬‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻮ‬
‫ﺗﺼﺎل ﻗﺎﻋﺪة اﻟ‬
‫ﺜﻞ ا‬
‫ﺘﻨﻈﻴﻒ )أﻧﺸﻄ ﺔ إﻟﻐﺎءﺗﺨﺼﻴﺺ اﻟﻤﻮارد ﻣ‬
‫أﻧﺸﻄ ﺔ اﻟ‬

‫ﺘﺪﻣﻴﺮ‬
‫ﺑﺎﻟ‬‫ﺗﻠﻘﺎﺋ ًﻴﺎ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Garbage Collector‬‬‫ﺘﺪﻣﻴﺮ ‪،‬ﻳﻘﻮم‬
‫ﺘﻤﺎلﺗﻨﻔﻴﺬ اﻟ‬
‫ﺑﻤﺠﺮد اﻛ‬
‫ﻫﺬا اﻟﻜﺎﺋﻦ‪.‬‬

‫ﺘﻨﻈﻴﻒ‪.‬‬
‫ﺑﺄﻧﺸﻄ ﺔ اﻟ‬‫ﺘﺪﻣﻴﺮ ﻟﻴ ﺴ ﺖﺗﺪﻣﻴﺮ اﻷﺷﻴﺎء وإﻧﻤﺎ ﻫ ﻲ ﻓﻘﻂ اﻟﻘﻴﺎم‬
‫ﻣﻠﺤﻮﻇ ﺔ‪ :‬وﻇﻴﻔ ﺔ اﻟ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪Initialization ...") 5) def __del __ (self): 6) print ("Fulfilling Last Wish :‬‬
‫ﺘ‬‫ﺘﻴﺮاد )‪2‬اﺧ‬
‫)‪1‬وﻗ ﺖ اﻻﺳ‬
‫ﺒﺎر = ‪() 9) t1‬ﻻ ﺷ ﻲء )"‬
‫ﺘ‬‫ﺘﻨﻈﻴﻒ ‪") 7) 8) t1 = ...‬اﺧ‬
‫‪3) def __init __ (self): 4) print ("Object‬وأداء أﻧﺸﻄ ﺔ اﻟ‬
‫‪10) time.sleep (5) 11) print (" End of application‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺗﻬﻴﺌ ﺔ اﻟﻜﺎﺋﻦ ‪...‬‬
‫ﺘﻨﻈﻴﻒ ‪...‬‬
‫ﺒﺎ ت وأداء أﻧﺸﻄ ﺔ اﻟ‬
‫ﺑﺂﺧﺮ اﻟﺮﻏ‬‫اﻟﻮﻓﺎء‬
‫ﺒﻴﻖ‬
‫ﺘﻄ‬‫ﻧﻬﺎﻳ ﺔ اﻟ‬

‫ﺜﺎل ‪ ،‬إذا ﻛﺎن اﻟﻌﺪد اﻟﻤﺮﺟﻌ ﻲ ﺻﻔ ﺮًا ‪،‬‬ ‫ﺘﻐﻴﺮ ﻣﺮﺟﻌ ﻲ ‪ ،‬ﻓﺈﻧﻪﻳﻜﻮن ﻣﺆ ﻫ ﻼ ً ﻟـ ‪GC‬ﻓﻘﻂ‪ .‬ﻋﲆﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬ ‫ﺘﻮي ﻋﲆ أي ﻣ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬إذا ﻛﺎن اﻟﻜﺎﺋﻦ ﻻﻳﺤ‬
‫ﺬﻳﻜﻮن اﻟﻌﻨﺼﺮ اﻟﻮﺣﻴﺪ اﻟﻤﺆ ﻫﻞ ﻟﻠﺤﺼﻮل ﻋﲆ ‪GC.‬‬
‫ﻓﻌﻨﺪﺋ ٍ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪print ("Destructor Execution ...") 7 ) 8) t1 = :‬‬


‫ﺘ‬‫ﺘﻴﺮاد )‪2‬اﺧ‬
‫)‪1‬وﻗ ﺖ اﻻﺳ‬
‫)‪__ (self): 4) print ("Constructor Execution ...") 5) def __del __ (self): 6‬‬
‫ﺒﺎر ‪t2 = t1 10) t3 = t2 11) del t1 12) time.sleep (5) 13) print‬‬
‫ﺘ‬‫‪3) def __init‬اﺧ‬
‫ﺑﻌﺪ ﺣﺬف ‪t1") 14) del t2‬‬‫ﺗﻼﻓﻪ‬
‫ﺘﻢ إ‬
‫)‪")() 9‬اﻟﻜﺎﺋﻦ ﻟﻢﻳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪28‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻌﺪ ﺣﺬف ‪")t2") 17) print‬أﻧﺎ‬‫ﺘﻰ‬


‫ﺑﻌﺪ ﺣ‬‫ﺗﻼﻓﻪ‬
‫ﺘﻢ إ‬
‫‪")15) time.sleep (5) 16) print‬اﻟﻜﺎﺋﻦ ﻟﻢﻳ‬
‫ﺘﻐﻴﺮ ﻣﺮﺟﻌ ﻲ ‪18) del t3 ("...‬‬
‫أﺣﺎول ﺣﺬف آﺧﺮ ﻣ‬

‫ﺜﺎل‪:‬‬
‫ﻣ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪application") :‬‬‫ﺘ‬‫ﺘﻴﺮاد )‪2‬اﺧ‬ ‫)‪1‬وﻗ ﺖ اﻻﺳ‬


‫‪list 10) time.sleep (5) 11) print ("End of‬‬
‫‪7 ) 8) list = [Test ()، Test ()، Test ()] 9) del‬‬
‫‪(self): 6) printExecution‬‬
‫‪("Constructor‬‬ ‫‪("Destructor‬‬ ‫‪Execution‬‬
‫)‪...") 5‬‬ ‫)"‪def __del...‬‬
‫__‬
‫‪3) def __init __ (self): 4) print‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫اﻟﻤﻨﺸ ﺊ ‪...‬‬
‫ﺗﻨﻔﻴﺬ ُ‬
‫اﻟﻤﻨﺸ ﺊ ‪...‬‬
‫ﺗﻨﻔﻴﺬ ُ‬
‫اﻟﻤﻨﺸ ﺊ ‪...‬‬
‫ﺗﻨﻔﻴﺬ ُ‬
‫ﺗﻨﻔﻴﺬ اﻟﻤﺪﻣﺮ ‪...‬‬
‫ﺗﻨﻔﻴﺬ اﻟﻤﺪﻣﺮ ‪...‬‬
‫ﺗﻨﻔﻴﺬ اﻟﻤﺪﻣﺮ ‪...‬‬

‫ﺒﻴﻖ‬
‫ﺘﻄ‬‫ﻧﻬﺎﻳ ﺔ اﻟ‬

‫ﺜﻮر ﻋﲆ ﻋﺪد ﻣﺮاﺟﻊ ﻛﺎﺋﻦ‪:‬‬


‫ﻛﻴﻔﻴ ﺔ اﻟﻌ‬
‫ﺘﻮي وﺣﺪة ‪sys‬ﻋﲆ داﻟ ﺔ )( ‪getrefcount‬ﻟﻬﺬا اﻟﻐﺮض‪)sys.getrefcount .‬ﻣﺮﺟﻊ اﻟﻜﺎﺋﻦ(‬
‫ﺗﺤ‬

‫ﺘﻴﺮاد )‪sys 2) class Test: 3‬‬ ‫)‪1‬اﺳ‬


‫ﺘﻴﺎز ))‪(sys.getrefcount (t1‬‬ ‫اﺟ‬
‫‪t1 6) t3 = t1 7) t4 = t1 8) print‬‬
‫= ‪4) t1 = Test () 5) t2‬‬

‫اﻹﺧﺮاج ‪5‬‬

‫ﺘﺮاﺿ ﻲ واﺣﺪ‪.‬‬
‫ﺘﻐﻴﺮ ﻣﺮﺟﻌ ﻲ اﻓ‬
‫ﺑﻤ‬‫ﺘﻔﻆ ‪Python‬داﺧﻠ ًﻴﺎ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻟﻜﻞ ﻛﺎﺋﻦ ‪،‬ﺗﺤ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪29‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺲ‬ ‫ُ‬
‫أوو‬
‫اﻟﺠﺰء ‪2‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪30‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺟﺪول أﻋﻤﺎل‬

‫اﻟﻤﻴﺮا ث _‬
‫ﻟﻪ ﻋﻼﻗ ﺔ‬
‫‪ IS-A‬اﻟﻌﻼﻗ ﺔ‬
‫ﺑﻞ ‪HAS-A‬‬
‫ﻋﻼﻗ ﺔ ‪IS-A‬ﻣﻘﺎ‬
‫ﺘﺠﻤﻴﻊ‬
‫ﺑﻞ اﻟ‬
‫ﺘﺮﻛﻴ ﺐ ﻣﻘﺎ‬
‫اﻟ‬

‫أﻧﻮاع اﻟﻤﻴﺮا ث‬
‫ﺛ ﺔ واﺣﺪة‬
‫ورا‬
‫ﺘﻮﻳﺎ ت‬
‫ﺘﻌﺪدة اﻟﻤ ﺴ‬
‫ﺛﺔ ﻣ‬
‫•اﻟﻮرا‬
‫•اﻟﻤﻴﺮا ث اﻟﻬﺮﻣ ﻲ‬

‫ﺗﻌﺪد اﻟﻤﻴﺮا ث‬
‫ﺛ ﺔ اﻟﻬﺠﻴﻨ ﺔ‬
‫•اﻟﻮرا‬
‫ﺛ ﺔ اﻟﺪورﻳ ﺔ‬
‫•اﻟﻮرا‬

‫أﻣﺮ ﻗﺮار اﻷﺳﻠﻮ ب )‪(MRO‬‬


‫ﻃﺮﻳﻘ ﺔ )(ﻓﺎﺋﻘ ﺔ‬

‫ﺘﺨﺪام أﻋﻀﺎء ﻓﺼﻞ واﺣﺪ داﺧﻞ ﻓﺼﻞ آﺧﺮ‪:‬‬


‫اﺳ‬
‫ﺘﺎﻟﻴ ﺔ‬
‫ﺘﺨﺪام اﻟﻄﺮق اﻟ‬
‫ﺑﺎﺳ‬‫ﺘﺨﺪام أﻋﻀﺎء ﻓﺼﻞ دراﺳ ﻲ داﺧﻞ ﻓﺼﻞ آﺧﺮ‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬

‫ﺘﺮﻛﻴ ﺐ )ﻋﻼﻗ ﺔ ﻟﻬﺎ‪A) -‬‬


‫)‪1‬ﺣ ﺴ ﺐ اﻟ‬
‫ﺑﺎﻟﻤﻴﺮا ث )ﻋﻼﻗ ﺔ )‪IS-A‬‬
‫)‪2‬‬

‫ﺘﺮﻛﻴ ﺐ )ﻋﻼﻗ ﺔ ﻟﻬﺎ‪A): -‬‬


‫)‪1‬ﺣ ﺴ ﺐ اﻟ‬
‫ﺘﺨﺪام اﺳﻢ اﻟﻔﺼﻞ أو ﻋﻦ ﻃﺮﻳﻖ إﻧﺸﺎء ﻛﺎﺋﻦﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ أﻋﻀﺎء ﻣﻦ ﻓﺌ ﺔ واﺣﺪة داﺧﻞ ﻓﺌ ﺔ أﺧﺮى ﻟﻴ ﺲﺳﻮىﺗﻜﻮﻳﻦ )ﻋﻼﻗ ﺔ ‪Has-A).‬‬
‫ﺑﺎﺳ‬
‫•‬

‫ﺘﺨﺪام اﻟﻜﻮد‪.‬‬
‫ﺑﻠﻴ ﺔ إﻋﺎدة اﺳ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻌﻼﻗ ﺔ ‪ Has-A‬ﻫ ﻲ ﻗﺎ‬
‫اﻟﻤﻴﺰة اﻟﺮ‬

‫ﺒ ﻲ ‪-1:‬‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫)‪1‬ﻓﺌ ﺔ اﻟﻤﺤﺮك‪2) :‬أ __ ‪3) def __init‬‬


‫ﺗ ﻲ(‪self.b = 20 5) def m1 :‬‬
‫‪)= 10‬ذا‬
‫ﺗ ﻲ(‪:‬‬
‫)‪)4‬ذا‬

‫‪31‬‬
‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

("‫ﺑﺎﻟﻤﺤﺮك‬
11) print ('Car using Engine ‫اﻟﺨﺎﺻ ﺔ‬
Class ‫)"اﻟﻮﻇﺎﺋﻒ‬
Functional') 12)print
:‫ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‬6) 7)
‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬8) def __init __ (self): 9) self.engine = Engine () 10) def m2 (self):
= ‫ج‬m1 () 15) .‫ﺗ ﻲ‬
‫ﻣﺤﺮك ذا‬14) (‫ ب‬.‫ﺗ ﻲ‬
‫ﺒﺎﻋ ﺔ )ﻣﺤﺮك ذا‬
‫ﻃ‬13) (‫ اﻟﻤﺤﺮك أ‬.‫ﺗ ﻲ‬
‫)ذا‬
2 () ‫ )(ﺳﻢ‬16) ‫ﺳﻴﺎرة‬

:‫ﺘﺎج‬
‫اﻧ‬
‫ﺘﺨﺪم وﻇﻴﻔ ﺔ ﻓﺌ ﺔ اﻟﻤﺤﺮك‬
‫ﺘ ﻲﺗ ﺴ‬
‫اﻟ ﺴﻴﺎرة اﻟ‬
10
20
‫ﺑﺎﻟﻤﺤﺮك‬‫اﻟﻮﻇﺎﺋﻒ اﻟﺨﺎﺻ ﺔ‬

-2: ‫ﺒ ﻲ‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

color): 3) 4) 5) 6) def getinfo (self): 7) :‫ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‬1)


2) def __init __ (self، name، model،
self.name = name self.model = model self.color = color

(self.name ، self.model ، self.c ‫ﺗﻨ ﺴﻴﻖ‬


{}". : ‫ }{واﻟﻠﻮن‬:‫ }{اﻟﻄﺮاز‬، :‫اﺳﻢ اﻟ ﺴﻴﺎرة‬print ("
olor))
(self): 15) print ("Employee Name:"، self.ename) 16 )
(self، ename، eno، car): 11) 12) 13) 14) def empinfo
‫ﺒﺎﻋ ﺔ "(رﻗﻢ‬
‫ﻃ‬8) 9) class Employee: 10) def __init __
ename
(":‫ﺳﻴﺎرة اﻟﻤﻮﻇﻒ‬ self.eno‫ﺒﺎﻋ ﺔ‬
‫)"ﻣﻌﻠﻮﻣﺎ ت‬ = eno
‫ﻃ‬self.eno) 17) ، ":‫اﻟﻤﻮﻇﻒ‬
() 19) c = Carself.ename =
("Innova"، "2.5V"، "Gray ") 20) e =
10000، c) 21)
‫اﻟ ﺴﻴﺎرة‬e.empinfo
‫اﻟﻤﻮﻇﻒ )( اﻟ ﺴﻴﺎرة اﻟﺬا‬18) self.car.getinfo
= ‫ﺗﻴ ﺔ‬

('Durga'،

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

32
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫اﺳﻢ اﻟﻤﻮﻇﻒ‪ :‬دورﺟﺎ‬
‫رﻗﻢ اﻟﻤﻮﻇﻒ‪10000 :‬‬
‫ﻣﻌﻠﻮﻣﺎ تﺳﻴﺎرة اﻟﻤﻮﻇﻒ‪:‬‬
‫اﺳﻢ اﻟ ﺴﻴﺎرة‪ :‬إﻳﻨﻮﻓﺎ ‪ ،‬اﻟﻤﻮدﻳﻞ‪2.5 :‬ﻓﻮﻟ ﺖ ‪ ،‬واﻟﻠﻮن‪ :‬رﻣﺎدي‬

‫ﺛﻢﻳﻤﻜﻦ ﻟﻔﺌ ﺔ اﻟﻤﻮﻇﻒ اﻟﻮﺻﻮل إﱃ ﺟﻤﻴﻊ أﻋﻀﺎء ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‪.‬‬‫ﻓ ﻲ ﻓﺌ ﺔ اﻟﻤﻮﻇﻒ أﻋﻼه ‪،‬ﻳﻤﻜﻦ ﻟﻤﺮﺟﻊ ‪Has-A Car‬وﻣﻦ‬

‫ﺒ ﻲ ‪-3:‬‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫)‪1‬اﻟﻔﺌ ﺔ "( ‪4) self.b = 20 5) def m1 (self): 6) print‬‬


‫‪X: 2) a = 10 3) def __init __ (self):‬ﻃﺮﻳﻘ ﺔ ‪m1‬ﻣﻦ ﻓﺌ ﺔ‬
‫)‪X") 7‬‬

‫ﺗ ﻲ(‪print :‬‬
‫)‪8‬اﻟﻔﺌ ﺔ __ ‪)Y: 9) c = 30 10) def __init‬ذا‬
‫)‪")11) self.d = 40 12) def m2 (self): 13‬ﻃﺮﻳﻘ ﺔ ‪m2‬‬
‫ﻣﻦ ﻓﺌ ﺔ )‪Y") 14‬‬

‫‪(x1.b) 19) x1.m1 () 20) print (Yc) 21) print (self.‬‬


‫ﻣﻦ‬
‫‪m3m3‬‬
‫‪(self):‬‬
‫ﻃﺮﻳﻘ ﺔ‬
‫)‪16‬‬
‫)‪22‬‬
‫‪x1self.m2‬‬
‫)‪= X () 17‬‬
‫)‪() 23‬‬
‫‪print‬‬
‫‪print‬‬
‫)‪(x1.a‬‬
‫د( "(‬
‫)‪18‬‬‫‪15)print‬‬
‫‪def‬‬
‫ﻓﺌ ﺔ )( ‪Y") 24) y1 = Y () 25) y1.m3‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫‪10‬‬
‫‪20‬‬
‫ﻃﺮﻳﻘ ﺔ ‪m1‬ﻣﻦ ﻓﺌ ﺔ ‪X‬‬
‫‪30‬‬
‫‪40‬‬
‫ﻃﺮﻳﻘ ﺔ ‪m2‬ﻣﻦ ﺻﻨﻒ‬
‫ﻃﺮﻳﻘ ﺔ ‪m3‬ﻣﻦ ﺻﻨﻒ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪33‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺎﻟﻤﻴﺮا ث )ﻋﻼﻗ ﺔ ‪IS-A):‬‬


‫)‪2‬‬
‫ﺛﻢ‬‫ﺘﻬﺎ‪ .‬وﻣﻦ‬
‫ﺑ‬‫ﺘﺎ‬
‫ﺘﺎﺣ ﺔ ﻟﻠﻔﺌﺎ ت اﻟﻔﺮﻋﻴ ﺔ وﻻﻳﻠﺰﻣﻨﺎ إﻋﺎدة ﻛ‬
‫ﺘﺮاﺿ ﻲ اﻟﻤ‬
‫ﺑﺸﻜﻞ اﻓ‬‫ﺘﻮﻓﺮة ﻓ ﻲ اﻟﻔﺌ ﺔ اﻷﺻﻠﻴ ﺔ‬
‫ﺘﻐﻴﺮا ت واﻟﻄﺮق واﻟﻤﻨﺸﺂ ت اﻟﻤ‬
‫ﻣﺎ ﻫ ﻲ اﻟﻤ‬
‫ﺒﻌﺾ اﻟﻮﻇﺎﺋﻒ اﻹﺿﺎﻓﻴ ﺔ‪.‬‬
‫ﺑ‬‫ﺘﺨﺪام اﻟﻜﻮد وﻳﻤﻜﻨﻨﺎﺗﻮﺳﻴﻊ اﻟﻮﻇﺎﺋﻒ اﻟﺤﺎﻟﻴ ﺔ‬
‫ﺑﻠﻴ ﺔ إﻋﺎدة اﺳ‬
‫ﺛ ﺔ ﻫ ﻲ ﻗﺎ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﻮرا‬
‫ﻓﺈن اﻟﻤﻴﺰة اﻟﺮ‬

‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪class childclass (parentclass) :‬‬

‫)‪1‬اﻟﻔﺌ ﺔ )‪static method') 13) 14) class C (P): 15‬‬


‫‪10) staticmethod 11) def m3 (): 12) print ('Parent‬‬
‫)'‪8) def m2 (cls): 9) print ('Parent class method‬‬
‫‪6)3)print‬‬
‫‪def __init‬‬
‫‪('Parent‬‬
‫‪__ (self):‬‬
‫‪example‬‬‫‪4) self.b‬‬
‫)'‪method‬‬
‫)‪= 10 5‬‬
‫‪7) def‬‬
‫‪classmethod‬‬
‫‪m1 (self):‬‬
‫ﺘﻴﺎز )( ‪20) c.m1 () 21) c.m2 () 22) c.m3‬‬
‫‪P: 2) a = 10‬اﺟ‬
‫)‪16 ) 17) c = C () 18) print (ca) 19) print (cb‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫‪10‬‬
‫‪10‬‬
‫ﺜﻴﻞ اﻷﺻﻞ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻤ‬
‫ﻃﺮﻳﻘ ﺔ ﻓﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ‬
‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﻃﺮﻳﻘ ﺔ اﻷﺻﻞ اﻟ‬

‫)‪1‬اﻟﻔﺌ ﺔ ‪P: 10‬ﻃﺮق )‪2) 3‬اﻟﻔﺌ ﺔ‬


‫‪C (P): 4) 5‬ﻃﺮق‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪34‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺔ ﻫﺬه اﻟﻄﺮق )‪(Code Reusability‬‬


‫ﺘﺎ‬
‫ﺑﺈﻋﺎدة ﻛ‬‫ﺒﻴﻦ‬
‫ﺘﺎﺣ ﺔﺗﻠﻘﺎﺋ ًﻴﺎ ﻟﻠﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ وﻟ ﺴﻨﺎ ﻣﻄﺎﻟ‬
‫ﺘﻮي ﻓﺌ ﺔ ‪Parent‬ﻋﲆ ‪10‬ﻃﺮق و ﻫﺬه اﻟﻄﺮق ﻣ‬
‫ﺜﺎل أﻋﻼه ‪،‬ﺗﺤ‬
‫ﻓ ﻲ اﻟﻤ‬

‫ﺘﻮي ﻓﺌ ﺔ اﻷﻃﻔﺎل ﻋﲆ ‪15‬ﻃﺮﻳﻘ ﺔ‪.‬‬


‫ﺛﻢﺗﺤ‬‫وﻣﻦ‬

‫ﺘﺮاﺿ ًﻴﺎ ﻟﻠﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ ﻣﻦ ﺧﻼل اﻟﻤﻴﺮا ث‪.‬‬


‫ﺘﺎح اﻓ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻣﺎ ﻫﻮ أي ﻋﻀﻮ ﻣﻮﺟﻮد ﻓ ﻲ ﻓﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ ﻣ‬

‫)‪1‬اﻟﻔﺌ ﺔ )‪m2 (self): 6) print ("child class method") 7 ) 8‬‬

‫‪3) print ("Parent class method") 4) class C (P): 5) def‬‬

‫‪P: 2) def m1 (self):‬ج =ج )‪ 9‬؛ )(ﺳﻢ )‪1 () 10‬ﺳﻢ )( ‪2‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﻃﺮﻳﻘ ﺔ ﻓﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ‬

‫ﻃﺮﻳﻘ ﺔ ﻓﺌ ﺔ اﻟﻄﻔﻞ‬

‫ﺋﻴ ﺴ ﻲ وﻃﺮق‬
‫ﺘﺪﻋﺎء ﻛﻞ ﻣﻦ ﻃﺮق اﻟﻔﺼﻞ اﻟﺮ‬
‫ﺘﺎﻟ ﻲ ﻓ ﻲ ﻣﺮﺟﻊ ﻓﺌ ﺔ اﻟﻄﻔﻞ ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺑﺎﻟ‬
‫ﺘﺎﺣ ﺔﺗﻠﻘﺎﺋ ًﻴﺎ ﻟﻠﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ ‪ ،‬و‬
‫ﻣﺎ ﻫ ﻲ اﻟﻄﺮق اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻓﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ ﻣ‬

‫اﻟﻔﺼﻞ اﻟﻔﺮﻋ ﻲ‪.‬‬

‫ﺛﻠ ﺔ أﻳﻀﺎ‬
‫ﺘﻐﻴﺮا ت ﻣﻤﺎ‬
‫ﻣ‬

‫)‪1‬اﻟﻔﺌ ﺔ )‪11) c1 = C () 12) print (c1.a، c1.b، c1.c، c1.d‬‬

‫)‪8) super ( ) .__ init __ () ===> Line-1 9) self.d = 30 10‬‬

‫‪= 20 5) class C (P): 6) c = 30 7) def __init __ (self):‬‬

‫‪P: 2) a = 10 3) def __init __ (self): 4) self.b‬‬

‫ﺘﺎح ﻟﻠﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ‪.‬‬


‫ﺘﻐﻴﺮ ‪b‬ﻏﻴﺮ ﻣ‬
‫إذا ﻋﻠﻘﻨﺎ ﻋﲆ اﻟ ﺴﻄﺮ ‪1 ،‬ﻓﺈن اﻟﻤ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪35‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒ ﻲ ﻟﻠﻤﻴﺮا ث‪:‬‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫)‪1‬ﻓﺌ ﺔ اﻟﺸﺨﺺ‪)2) def __init __ :‬اﻟﺬا ت ‪ ،‬اﻻﺳﻢ ‪ ،‬اﻟﻌﻤﺮ(‪Biryani and Drink Beer' ' ) 7) 8) :‬‬
‫‪3) self.name = name 4) self.age = age 5) def eatndrink (self): 6) print ('Eat‬ﻓﺌ ﺔ اﻟﻤﻮﻇﻒ‬
‫)‪)eno ، esal): 11‬اﻻﺳﻢ ‪،‬‬
‫‪10) self.eno‬‬
‫__‪super () .‬‬
‫‪= eno‬‬
‫)‪init 12‬‬
‫‪__ ،self.‬‬
‫‪esal‬اﻟﻌﻤﺮ‬
‫ﺳﻢ ‪،‬‬‫‪esal‬اﻻ=‬
‫)‪ 13‬ت ‪،‬‬
‫)‪)14‬اﻟﺬا‬
‫‪9) def‬‬
‫‪def__init‬‬
‫‪work__(self):‬‬
‫)اﻟﺸﺨﺺ(‪:‬‬
‫اﻟﻌﻤﺮ(‬

‫‪("Employee‬‬ ‫‪Age:"،‬‬
‫‪20) print‬‬ ‫)‪self .age‬‬
‫اﻟﻤﻮﻇﻒ‪":‬‬ ‫‪19) def‬‬
‫)‪16‬رﻗﻢ‬ ‫‪print‬‬ ‫ﺒﺮدة"( "(‬
‫‪empinfo‬‬ ‫ﺒﻴﺮة اﻟﻤ‬
‫‪(self):‬‬ ‫‪ print‬ب اﻟ‬
‫)‪17‬‬ ‫ﺜﻞ ﺷﺮ‬ ‫ﺗﻤﺎﻣﺎ ﻣ‬‫ﺳﻬﻞ ﺟﺪًا‬
‫‪("Employee‬‬
‫ً‬ ‫‪15) print‬‬
‫‪Name:"،‬‬ ‫)‪("Coding18‬‬
‫)‪self.name‬‬ ‫‪Python‬‬
‫‪print‬‬
‫ﺗ ﺐ اﻟﻤﻮﻇﻒ ‪self.esal) 21) 22) e = ":‬اﻟﻤﻮﻇﻒ )( ‪23 ) e.eatndrink () 24) e.work () 25) e.empinfo‬‬
‫)‪")self.eno‬را‬
‫)‪('Durga'، 48، 100، 10000‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﺒﻴﺮة‬
‫ﺒﺮﻳﺎﻧ ﻲ واﺷﺮ ب اﻟ‬
‫أﻛﻞ اﻟ‬
‫ﺜﻠﺠ ﺔ‬
‫ﺒﻴﺮة اﻟﻤ‬ ‫ﻳﻌﺪﺗﺮﻣﻴﺰ ‪Python‬أﻣ ﺮًاﺳﻬ ﻼ ً ﻟﻠﻐﺎﻳ ﺔ ﻣ‬
‫ﺜﻞ ﺷﺮ ب اﻟ‬
‫اﺳﻢ اﻟﻤﻮﻇﻒ‪ :‬دورﺟﺎ‬
‫ﻋﻤﺮ اﻟﻤﻮﻇﻒ‪48 :‬‬
‫رﻗﻢ اﻟﻤﻮﻇﻒ‪100 :‬‬
‫ﺗ ﺐ اﻟﻤﻮﻇﻒ‪10000 :‬‬
‫را‬

‫ﺑﻞ ‪HAS-A:‬‬
‫ﻋﻼﻗ ﺔ ‪IS-A‬ﻣﻘﺎ‬
‫ﺑﺬﻟﻚ‬‫ﺒﻌﺾ اﻟﻮﻇﺎﺋﻒ اﻹﺿﺎﻓﻴ ﺔ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﻘﻮم‬
‫ﺑ‬‫•إذا أردﻧﺎﺗﻮﺳﻴﻊ اﻟﻮﻇﺎﺋﻒ اﻟﺤﺎﻟﻴ ﺔ‬
‫ﻳﺠ ﺐ أنﺗﺬ ﻫ ﺐ ﻟﻌﻼﻗ ﺔ ‪IS-A.‬‬
‫ﺘﺎر ﻋﻼﻗ ﺔ ‪HAS-A.‬‬
‫ﺘﺨﺪام اﻟﻮﻇﺎﺋﻒ اﻟﺤﺎﻟﻴ ﺔ ‪ ،‬ﻓﻌﻠﻴﻨﺎ أن ﻧﺨ‬
‫ﺘﻤﺪﻳﺪ وﻋﻠﻴﻨﺎ ﻓﻘﻂ اﺳ‬
‫•إذا ﻟﻢ ﻧﺮﻏ ﺐ ﻓ ﻲ اﻟ‬

‫ﺘﺨﺪم اﻟ ﺴﻴﺎرة ﻓﻘﻂ‬


‫ﺜﺎل‪:‬ﺗﻮﺳﻊ ﻓﺌ ﺔ اﻟﻤﻮﻇﻒ وﻇﺎﺋﻒ ﻓﺌ ﺔ اﻟﺸﺨﺺ وﻟﻜﻦ ﻓﺌ ﺔ اﻟﻤﻮﻇﻒﺗ ﺴ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫•ﻋﲆﺳ‬
‫ﺘﺪ‬
‫وﻇﻴﻔ ﺔ وﻟﻜﻦ ﻻﺗﻤ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪36‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

‫ﺷﺨﺺ‬

‫ﻫﻮ‬

‫أ‬HAS -
‫ﻣﻮﻇﻒ‬ ‫ﺳﻴﺎرة‬

color): 3) 4) 5) 6) def getinfo (self): 7) :‫ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‬1)


2) def __init __ (self، name، model،
= ‫اﺳﻢ‬self.name =

‫ﻧﻤﻮذج‬self.model

self.color = color

(self.name، self.model، ‫ﺗﻨ ﺴﻴﻖ‬


{}". :‫ \ }{اﻟﻠﻮن‬n \ t :‫ \ }{اﻟﻄﺮاز‬n \ t :‫اﺳﻢ اﻟ ﺴﻴﺎرة‬print ("\ t
self.color))
('Eat Biryani and Drink) Beer ') 15) 16) :(‫ اﻟﻌﻤﺮ‬، ‫ اﻻﺳﻢ‬، ‫)اﻟﻨﻔ ﺲ‬10) def __init __ :‫ﻓﺌ ﺔ اﻟﺸﺨﺺ‬8) 9)
‫ﻓﺌ ﺔ اﻟﻤﻮﻇﻒ‬11) self.name = name 12) self.age = Age 13) def eatndrink (self): 14) print
، ‫)اﻻﺳﻢ‬18) super () .__ init __ :(‫اﻟ ﺴﻴﺎرة‬eno ، esal ، ، ‫ اﻟﻌﻤﺮ‬، ‫ اﻻﺳﻢ‬، ‫)اﻟﺬا ت‬17) def __init __ :(‫)اﻟﺸﺨﺺ‬
28)
19)print
self.eno
(" :‫اﻟﻤﻮﻇﻒ‬
= eno 20)
‫اﺳﻢ‬self.esal
24) def empinfo
= esal 21)
(self):
22) def
25)work
print (self):
(" ("‫ﺒﺮدة‬
23)
‫اﻟﻤ‬print
‫ﺒﻴﺮة‬
‫"( اﻟ‬Coding
‫ﺜﻞ ﺷﺮ ب‬‫ ﻣ‬Python
‫ﺗﻤﺎﻣﺎ‬
ً ‫اﻟﻌﻤﺮ(ﺟﺪًا‬
‫ﺳﻬﻞ‬
self.name)
("Innova"، 26) print
"2.5V"، (" Employee
"Gray") Age: "، self.age)
33) e = (":‫اﻟﻤﻮﻇﻒ‬ 27) print
‫)"ﻣﻌﻠﻮﻣﺎ تﺳﻴﺎرة‬ (" Employee
"، self.esal) 29) Number: "،
print :‫ﺗ ﺐ‬ self.eno)
‫اﻟﻤﻮﻇﻒ را‬ "،
34) e.eatndrink () (‫'(ج‬Durga'، 48،100 ، 10000، ‫اﻟﻤﻮﻇﻒ‬30) self.car.getinfo () 31) 32) c = Car

‫ﺗﻴ ﺔ =اﻟ ﺴﻴﺎرة‬


‫اﻟ ﺴﻴﺎرة اﻟﺬا‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

37
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫)( ‪36) e.empinfo‬‬


‫)( ‪35) e.work‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﺒﻴﺮة‬
‫ﺒﺮﻳﺎﻧ ﻲ واﺷﺮ ب اﻟ‬
‫أﻛﻞ اﻟ‬
‫ﺜﻠﺠ ﺔ‬
‫ﺒﻴﺮة اﻟﻤ‬ ‫ﻳﻌﺪﺗﺮﻣﻴﺰ ‪Python‬أﻣ ﺮًاﺳﻬ ﻼ ً ﻟﻠﻐﺎﻳ ﺔ ﻣ‬
‫ﺜﻞ ﺷﺮ ب اﻟ‬
‫اﺳﻢ اﻟﻤﻮﻇﻒ‪ :‬دورﺟﺎ‬
‫ﻋﻤﺮ اﻟﻤﻮﻇﻒ‪48 :‬‬
‫رﻗﻢ اﻟﻤﻮﻇﻒ‪100 :‬‬
‫ﺗ ﺐ اﻟﻤﻮﻇﻒ‪10000 :‬‬
‫را‬
‫ﻣﻌﻠﻮﻣﺎ تﺳﻴﺎرة اﻟﻤﻮﻇﻒ‪:‬‬
‫اﺳﻢ اﻟ ﺴﻴﺎرة‪ :‬إﻳﻨﻮﻓﺎ‬

‫اﻟﻤﻮدﻳﻞ‪2.5 :‬ﻓﻮﻟ ﺖ‬

‫اﻟﻠﻮن‪ :‬رﻣﺎدي‬

‫ﺘﺨﺪم وﻇﺎﺋﻒ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة ﻓﻘﻂ‪.‬‬


‫ﺜﺎل أﻋﻼه ‪،‬ﺗﻮﺳﻊ ﻓﺌ ﺔ اﻟﻤﻮﻇﻒ وﻇﺎﺋﻒ ﻓﺌ ﺔ اﻟﺸﺨﺺ وﻟﻜﻨﻬﺎﺗ ﺴ‬
‫ﻓ ﻲ اﻟﻤ‬

‫ﺘﺠﻤﻴﻊ‪:‬‬
‫ﺑﻞ اﻟ‬
‫ﺘﺮﻛﻴ ﺐ ﻣﻘﺎ‬
‫اﻟ‬

‫ﺒﻴﺮ‪:‬‬
‫ﺗﻌ‬
‫ﺒﺎط اﻟﻘﻮي‬
‫ﺗ‬‫ﺑﻘﻮة وأن ﻫﺬا اﻻر‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﻮاة ﻣﺮ‬
‫ﺘﻮي ﻣﻮﺟﻮد ‪ ،‬ﻓﺈن اﻟﺤﺎوﻳ ﺔ واﻟﻜﺎﺋﻨﺎ ت اﻟﻤﺤ‬
‫ﺑﺪون ﻛﺎﺋﻦ اﻟﺤﺎوﻳ ﺔ اﻟﻤﻮﺟﻮد إذا ﻟﻢﺗﻜﻦ ﻫﻨﺎك ﻓﺮﺻ ﺔ ﻟﻮﺟﻮد ﻛﺎﺋﻦ ﻣﺤ‬
‫ﻟﻴ ﺲﺳﻮىﺗﻜﻮﻳﻦ‪.‬‬

‫ﺒﻂ ﻛﺎﺋﻨﺎ ت اﻟﺠﺎﻣﻌ ﺔ‬


‫ﺗ‬‫ﺛﻢﺗﺮ‬‫ﺑﺪون وﺟﻮد ﻛﺎﺋﻦ ﺟﺎﻣﻌ ﻲ ﻻﺗﻮﺟﺪ ﻓﺮﺻ ﺔ ﻟﻮﺟﻮد ﻛﺎﺋﻦ ﻗ ﺴﻢ ﻣﻮﺟﻮد‪ .‬وﻣﻦ‬
‫ﺘﻮي اﻟﺠﺎﻣﻌ ﺔ ﻋﲆ ﻋﺪة أﻗ ﺴﺎم و‬
‫ﺜﺎل‪:‬ﺗﺤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﻜﻮﻳﻦ‪.‬‬
‫ﺒﺎط اﻟﻘﻮي ﻟﻴ ﺲﺳﻮى اﻟ‬
‫ﺗ‬‫ﺛﻴ ًﻘﺎ و ﻫﺬا اﻻر‬
‫ﺒﺎﻃﺎ و‬
‫ﺗ ً‬‫واﻟﻘ ﺴﻢ ار‬

‫ﻛﺎﺋﻦ اﻟﻘ ﺴﻢ‬


‫)ﻛﺎﺋﻦ ﻣﻀﻤﻦ(‬

‫ﻛﺎﺋﻦ اﻟﺠﺎﻣﻌ ﺔ‬
‫)ﻛﺎﺋﻦ اﻟﺤﺎوﻳ ﺔ(‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪38‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﺠﻤﻴﻊ‪:‬‬
‫ﺒﺎط‬
‫ﺗ‬‫ﺑﺸﻜﻞ ﺿﻌﻴﻒ وأن ﻫﺬا اﻻر‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﻮاة ﻣﺮ‬
‫ﺘﻮي ﻣﻮﺟﻮد ‪ ،‬ﻓﺈن اﻟﺤﺎوﻳ ﺔ واﻟﻜﺎﺋﻨﺎ ت اﻟﻤﺤ‬
‫ﺑﺪون ﻛﺎﺋﻦ ﺣﺎوﻳ ﺔ ﻣﻮﺟﻮد إذا ﻛﺎﻧ ﺖ ﻫﻨﺎك ﻓﺮﺻ ﺔ ﻟﻮﺟﻮد ﻛﺎﺋﻦ ﻣﺤ‬
‫اﻟﻀﻌﻴﻒ ﻟﻴ ﺲﺳﻮىﺗﺠﻤﻴﻊ‪.‬‬

‫ﺒﺮوﻓﻴ ﺴﻮر‬
‫ﺛﻢ ﻓﺈن ﻛﺎﺋﻨﺎ ت اﻟﻘ ﺴﻢ واﻟ‬‫ﺘﺎذ ﻣﻮﺟﻮد‪ .‬وﻣﻦ‬
‫ﺑﺪون اﻟﻘ ﺴﻢ اﻟﺤﺎﻟ ﻲ ‪ ،‬ﻗﺪﺗﻜﻮن ﻫﻨﺎك ﻓﺮﺻ ﺔﻷﺳ‬‫ﺗﺬة‪.‬‬
‫ﺘﻮي اﻟﻘ ﺴﻢ ﻋﲆ ﻋﺪة أﺳﺎ‬
‫ﺜﺎل‪:‬ﻳﺤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺠﻤﻴﻊ‪.‬‬
‫ﺑﺸﻜﻞ ﺿﻌﻴﻒ ‪ ،‬و ﻫﺬا ﻟﻴ ﺲﺳﻮى اﻟ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﻣﺮ‬

‫‪x‬‬
‫‪x‬‬
‫‪:‬‬ ‫‪:‬‬
‫‪:‬‬ ‫‪:‬‬ ‫ﻛﺎﺋﻦ اﻷﺳ‬
‫ﺘﺎذ‬

‫‪:‬‬
‫)ﻛﺎﺋﻦ ﻣﻀﻤﻦ(‬

‫‪:‬‬
‫‪x‬‬

‫ﻛﺎﺋﻦ اﻟﻘ ﺴﻢ‬


‫)ﻛﺎﺋﻦ اﻟﺤﺎوﻳ ﺔ(‬

‫ﺘﺮﻣﻴﺰ‪:‬‬
‫ﺜﺎل اﻟ‬
‫ﻣ‬

‫)‪6) s = Student ('Durga') 7‬‬


‫)‪5) print (Student.collegeName‬‬
‫‪(self، name): 4) self.name = name‬‬
‫‪1) class‬‬
‫'‪= 'DURGASOFT‬‬
‫)‪Student: 2)3‬‬‫‪collegeName‬‬
‫__ ‪def __init‬‬
‫ﺒﺎﻋ ﺔ )‪(s.name‬‬ ‫ﻃ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫دورﺟﺎﺳﻮﻓ ﺖ‬

‫دورﺟﺎ‬

‫ﺑﻘﻮة و ﻫﻮ ﻟﻴ ﺲﺳﻮىﺗﻜﻮﻳﻦ‪.‬‬‫ﺒﻄﺎن‬
‫ﺗ‬‫ﺛﻢ ﻓﺈن ﻛﺎﺋﻦ اﻟﻄﺎﻟ ﺐ واﺳﻤﻪ ﻣﺮ‬‫ﺑﺪون ﻛﺎﺋﻦ اﻟﻄﺎﻟ ﺐ اﻟﻤﻮﺟﻮد ﻻﺗﻮﺟﺪ ﻓﺮﺻ ﺔ ﻟﻮﺟﻮد اﺳﻤﻪ‪ .‬وﻣﻦ‬‫ﺜﺎل أﻋﻼه‬
‫ﻓ ﻲ اﻟﻤ‬

‫ﺒﺎﻃﺎ ﺿﻌﻴ ًﻔﺎ‬


‫ﺗ ً‬‫ﺒﻄﺎن ار‬
‫ﺗ‬‫ﺛﻢ ﻓﺈن ﻛﺎﺋﻦ اﻟﻄﺎﻟ ﺐ واﺳﻢ اﻟﻜﻠﻴ ﺔ ﻣﺮ‬‫ﺑﺪون ﻛﺎﺋﻦ اﻟﻄﺎﻟ ﺐ اﻟﺤﺎﻟ ﻲ ‪ ،‬ﻗﺪﺗﻜﻮن ﻫﻨﺎك ﻓﺮﺻ ﺔ ﻟﻮﺟﻮد ‪collegeName‬اﻟﺤﺎﻟ ﻲ‪ .‬وﻣﻦ‬‫وﻟﻜﻦ‬
‫و ﻫﻮ ﻟﻴ ﺲﺳﻮىﺗﺠﻤﻴﻊ‪.‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬


‫اﻟ‬

‫‪39‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﻤ ﺔ‪:‬‬
‫ﺧﺎ‬
‫ﺘﺠﻤﻴﻊ‪.‬‬
‫ﺘ ﺔ واﻟﻜﺎﺋﻦ ﻫ ﻲ اﻟ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﺑﻴﻦ اﻟﻤ‬‫ﺘﺮﻛﻴ ﺐ ﺣﻴ ﺚﺗﻜﻮن اﻟﻌﻼﻗ ﺔ‬
‫ﺜﻴﻠﻪ ﻫ ﻲ اﻟ‬
‫ﺘﻐﻴﺮا ت ﻣ‬
‫ﺑﻴﻦ اﻟﻜﺎﺋﻦ وﻣ‬‫ﺋﻤﺎ ﻣﺎﺗﻜﻮن اﻟﻌﻼﻗ ﺔ‬
‫دا ً‬

‫ﺘﻢﺗﻨﻔﻴﺬ‬
‫ﺘﻮي ﻋﲆُﻣﻨﺸ ﺊ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺘﻢﺗﻨﻔﻴﺬُﻣﻨﺸ ﺊ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ‪ .‬إذا ﻛﺎﻧ ﺖ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ ﻻﺗﺤ‬
‫ﺑﺈﻧﺸﺎء ﻛﺎﺋﻦ ﻓﺌ ﺔ ﻓﺮﻋﻴ ﺔ ‪،‬ﺳﻴ‬‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﺘﻢ إﻧﺸﺎء اﻟﻜﺎﺋﻦ اﻷﺻﻞ‪.‬‬
‫ُﻣﻨﺸ ﺊ اﻟﻔﺌ ﺔ اﻷﺻﻞ ‪ ،‬وﻟﻜﻦ ﻟﻦﻳ‬

‫)‪1‬اﻟﻔﺌ ﺔ ))‪c = C () 7) print (id (c‬‬


‫)‪(self)) 4) class C (P): 5) pass 6‬‬
‫‪def __init __ (self): 3) print‬‬
‫‪P:(id‬‬
‫)‪2‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫‪6207088‬‬
‫‪6207088‬‬

‫)‪1‬ﻓﺌ ﺔ اﻟﺸﺨﺺ‪)2) def __init __ :‬اﻟﺬا ت ‪ ،‬اﻻﺳﻢ ‪ ،‬اﻟﻌﻤﺮ(‪name 4) self.age = age 5) class Student (Person): 6) def __init __ :‬‬
‫= ‪)3) self.name‬اﻟﺬا ت ‪ ،‬اﻻﺳﻢ ‪ ،‬اﻟﻌﻤﺮ ‪rollno ، ،‬اﻟﻌﻼﻣﺎ ت(‪)7) super () .__ init __ :‬اﻻﺳﻢ ‪ ،‬اﻟﻌﻤﺮ( )‪9) 10) def __str __ (self): 11‬‬
‫ﺗﻨ ﺴﻴﻖ ‪(self.name، self.age، sel‬‬
‫‪8) self.rollno = rollno‬إرﺟﺎع ‪'Name = {} \ nAge = {} \ nRollno = {} \ n‬اﻟﻌﻼﻣﺎ ت ‪= {} '.‬‬

‫ﻋﻼﻣﺎ ت = ‪self.marks‬ﻋﻼﻣﺎ ت‬

‫)‪f.rollno، self.marks) 12) s1 = Student ('durga'، 48،101،90) 13) print (s1‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫اﻻﺳﻢ =دورﺟﺎ‬
‫اﻟﻌﻤﺮ ‪= 48‬‬
‫‪Rollno = 101‬‬
‫ﻋﻼﻣﺎ ت ‪= 90‬‬

‫ﺑﺈﻧﺸﺎء ﻛﺎﺋﻦ ﻓﺌ ﺔ ﻓﺮﻋ ﻲ ‪،‬ﺗﻢﺗﻨﻔﻴﺬ ﻛﻞ ﻣﻦُﻣﻨﺸﺌ ﻲ اﻟﻔﺌ ﺔ اﻷ ب واﻷمﻷداءﺗﻬﻴﺌ ﺔ اﻟﻜﺎﺋﻦ اﻟﻔﺮﻋ ﻲ‪.‬‬‫ﺜﺎل أﻋﻼه ‪ ،‬ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓ ﻲ اﻟﻤ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬


‫اﻟ‬

‫‪40‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫أﻧﻮاع اﻹر ث‪:‬‬

‫)‪1‬اﻟﻤﻴﺮا ث اﻟﻮﺣﻴﺪ‪:‬‬
‫ﺑﺎﺳﻢ اﻟﻤﻴﺮا ث اﻟﻔﺮدي‪.‬‬‫ﺛ ﺔ اﻟﺨﺼﺎﺋﺺ ﻣﻦ ﻓﺌ ﺔ إﱃ ﻓﺌ ﺔ أﺧﺮى‬
‫ُﻌﺮف ﻣﻔﻬﻮم ورا‬
‫ﻳ‬

‫)‪1‬اﻟﻔﺌ ﺔ )‪print ("Child Method") 7) c = C () 8‬‬


‫)‪Method") 4) class C (P): 5) def m2 (self): 6‬‬
‫‪P: 2) def m1 (self): 3) print ("Parent‬ﺳﻢ )‪() 9‬‬
‫‪1‬ﺳﻢ )( ‪2‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻮاﻟﺪﻳﻦ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻄﻔﻞ‬

‫ص‬

‫اﻟﻤﻴﺮا ث اﻟﻮاﺣﺪ‬

‫ج‬

‫ﺘﻮﻳﺎ ت‪:‬‬
‫ﺘﻌﺪدة اﻟﻤ ﺴ‬
‫ﺛﺔ ﻣ‬
‫)‪2‬اﻟﻮرا‬
‫ﺘﻮﻳﺎ ت‪.‬‬
‫ﺘﻌﺪدة اﻟﻤ ﺴ‬
‫ﺛﺔ ﻣ‬
‫ﺑﺎﺳﻢ اﻟﻮرا‬‫ﺑﻤﻔﻬﻮم واﺣﺪﺗﻠﻮ اﻵﺧﺮ‬‫ﺘﻌﺪدة إﱃ ﻓﺌ ﺔ واﺣﺪة‬
‫ﺛ ﺔ اﻟﺨﺼﺎﺋﺺ ﻣﻦ ﻓﺌﺎ ت ﻣ‬
‫ُﻌﺮف ﻣﻔﻬﻮم ورا‬
‫ﻳ‬

‫)‪1‬اﻟﻔﺌ ﺔ )"‪m3 (self): 9) print ("Sub Child Method‬‬


‫‪6) print ("Child Method") 7) class CC (C): 8) def‬‬
‫‪("Parent Method") 4) class‬‬
‫‪P: 2) C‬‬ ‫‪(P):m1‬‬
‫‪def‬‬ ‫‪5) (self):‬‬
‫‪def m2‬‬ ‫‪3)(self):‬‬
‫‪print‬‬

‫)‪10‬ج )( ‪= CC‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪41‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫)( ‪() 13) c.m3‬‬


‫‪() 12) c.m2‬‬
‫‪11) c.m1‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻮاﻟﺪﻳﻦ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻄﻔﻞ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻄﻔﻞ اﻟﻔﺮﻋﻴ ﺔ‬

‫ص‬

‫ج‬ ‫ﺘﻮﻳﺎ ت‬
‫ﺘﻌﺪدة اﻟﻤ ﺴ‬
‫ﺛﺔ ﻣ‬
‫اﻟﻮرا‬

‫ﻧ ﺴﺨ ﺔ‬

‫)‪3‬اﻟﻤﻴﺮا ث اﻟﻬﺮﻣ ﻲ‪:‬‬


‫ﺛ ﺔ اﻟﻬﺮﻣﻴ ﺔ‬
‫ﺑﺎﻟﻮرا‬‫ﺘﻮى‬
‫ﺘﻌﺪدة ﻣﻮﺟﻮدة ﻓ ﻲ ﻧﻔ ﺲ اﻟﻤ ﺴ‬
‫ﺛ ﺔ اﻟﺨﺼﺎﺋﺺ ﻣﻦ ﻓﺌ ﺔ واﺣﺪة إﱃ ﻓﺌﺎ ت ﻣ‬
‫ُﻌﺮف ﻣﻔﻬﻮم ورا‬
‫ﻳ‬

‫ص‬

‫‪C1‬‬ ‫‪C2‬‬

‫اﻟﻬﺮﻣﻴ ﺔ‬
‫ﻣﻴﺮا ث‬

‫)‪1‬اﻟﻔﺌ ﺔ ‪("Parent Method") 4) class C1 (P):‬‬


‫‪P: 2) def m1 (self): 3) print‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪42‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
Machine Translated by Google

() 13) c2 = C2 () 14) c2.m1 () 15) c2.m3 ()


10)
m3 c1 = C19)()print
(self): 11 ) c1.m1 () 12)
("Child2 c1.m2
Method")
("Child1 Method") 7) class C2 (P): 8) def
5) def m2 (self): 6) print

:‫ﺘﺎج‬
‫اﻧ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻮاﻟﺪﻳﻦ‬
1 ‫ﻃﺮﻳﻘ ﺔ اﻟﻄﻔﻞ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻮاﻟﺪﻳﻦ‬
Child2 ‫ﻃﺮﻳﻘ ﺔ‬

:‫ﺗﻌﺪد اﻟﻤﻴﺮا ث‬
4)
.‫ﺘﻌﺪد‬
‫ﺑﺎﺳﻢ اﻟﻤﻴﺮا ث اﻟﻤ‬‫ﺘﻌﺪدة إﱃ ﻓﺌ ﺔ واﺣﺪة ﻓ ﻲ وﻗ ﺖ واﺣﺪ‬
‫ﺛ ﺔ اﻟﺨﺼﺎﺋﺺ ﻣﻦ ﻓﺌﺎ ت ﻣ‬
‫ُﻌﺮف ﻣﻔﻬﻮم ورا‬
‫ﻳ‬

P1 P2

‫ج‬

‫ﻋﺪﻳﺪ‬
‫ﻣﻴﺮا ث‬

m3 (self): 9) print ("Child2 Method") ‫ﻓﺌ ﺔ‬1)


Method") 7) class C (P1) ، P2): 8) def
P2:
(self): 3)5) def ("Parent1
print m2 (self): 6) print ("Parent2
Method") 4) class
P1: 2) def m1

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

43
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫)( ‪() 13) c.m3‬‬


‫‪() 12) c.m2‬‬
‫‪C () 11) c.m1‬‬
‫= ‪10) c‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﻃﺮﻳﻘ ﺔ ‪Parent1‬‬
‫ﻃﺮﻳﻘ ﺔ ‪Parent2‬‬
‫ﻃﺮﻳﻘ ﺔ ‪Child2‬‬

‫ﺑﺎء ﻓ ﻲ إﻋﻼن اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ‪.‬‬


‫ﺗﻴ ﺐ ﻓﺌﺎ ت اﻵ‬
‫ﺒﺎرﺗﺮ‬
‫ﺘ‬‫ﺋﻤﺎ ﻓ ﻲ اﻻﻋ‬
‫ﺘﺄﺧﺬ ‪Python‬دا ً‬
‫ﺘﻴﻦ اﻷم ‪ ،‬ﻓ ﺴ‬
‫إذاﺗﻢﺗﻮرﻳ ﺚ ﻧﻔ ﺲ اﻟﻄﺮﻳﻘ ﺔ ﻣﻦ ﻛﻼ اﻟﻔﺌ‬

‫ﺘﻢ اﻟﻨﻈﺮ ﻓ ﻲ ﻃﺮﻳﻘ ﺔ ‪P1‬‬


‫‪C (P1 ، P2):‬ﺳﻴ‬ ‫اﻟﻔﺌ ﺔ‬
‫ﺘﻢ اﻟﻨﻈﺮ ﻓ ﻲ ﻃﺮﻳﻘ ﺔ ‪P2‬‬
‫اﻟﻔﺌ ﺔ ‪C (P2 ، P1):‬ﺳﻴ‬

‫)‪1‬ﻓﺌ ﺔ )( ‪9) print ("Child Method") 10) c = C‬‬


‫‪Method") 7) class C (P1) ، P2): 8) def m2 (self):‬‬
‫‪class‬‬
‫‪def‬‬ ‫‪m1P2:‬‬ ‫‪5) def‬‬
‫‪(self):‬‬ ‫‪m1 (self):‬‬
‫‪3) print‬‬ ‫‪6) print‬‬
‫‪("Parent1‬‬ ‫‪("Parent2‬‬
‫)"‪Method‬‬ ‫)‪4‬‬
‫)‪P1: 2‬‬

‫)‪11‬ﺳﻢ )‪1 () 12‬ﺳﻢ )( ‪2‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﻃﺮﻳﻘ ﺔ ‪Parent1‬‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻄﻔﻞ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪44‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺛ ﺔ اﻟﻬﺠﻴﻨ ﺔ‪:‬‬
‫)‪5‬اﻟﻮرا‬
‫ﺛ ﺔ اﻟﻬﺠﻴﻨ ﺔ‪.‬‬
‫ﺑﺎﺳﻢ اﻟﻮرا‬‫ﺘ ﺴﻠ ﺴﻞ اﻟﻬﺮﻣ ﻲ‬
‫ﺘﻌﺪد واﻟ‬
‫ﺘﻮﻳﺎ ت واﻟﻤ‬
‫ﺘﻌﺪد اﻟﻤ ﺴ‬
‫ﺑﻴﻦ اﻟﻤﻴﺮا ث اﻟﻔﺮدي واﻟﻤ‬‫ُﻌﺮف اﻟﺠﻤﻊ‬
‫ﻳ‬

‫أ‬ ‫ب‬ ‫ج‬

‫د‬

‫ه‬

‫‪F‬‬

‫ﺟﻲ‬ ‫ح‬

‫)‪6‬اﻟﻤﻴﺮا ث اﻟﺪوري‪:‬‬
‫ﺒﻊ ﻓﻬﻮ ﻏﻴﺮ ﻣﻄﻠﻮ ب‬
‫ﺑﺎﻟﻄ‬‫ﺜﻮن اﻟﻤﻴﺮا ث اﻟﺪوري‬
‫ﺑﺎﻳ‬‫ﺑﻄﺮﻳﻘ ﺔ دورﻳ ﺔ اﺳﻢ اﻟﻤﻴﺮا ث اﻟﺪوري ‪ ،‬وﻟﻦﻳﺪﻋﻢ‬‫ﺛ ﺔ اﻟﺨﺼﺎﺋﺺ ﻣﻦ ﻓﺌ ﺔ إﱃ ﻓﺌ ﺔ أﺧﺮى‬
‫ُﻄﻠﻖ ﻋﲆ ﻣﻔﻬﻮم ورا‬
‫ﻳ‬

‫ﺣ ًﻘﺎ‪.‬‬

‫ﺘﻴﺎز‬
‫ﺜﺎل ‪- 1:‬اﻟﻔﺌ ﺔ أ )أ(‪ :‬اﺟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ّف‬
‫‪NameError:‬اﻻﺳﻢ "‪"A‬ﻏﻴﺮ ﻣﻌ ﺮ‬

‫أ‬

‫ﺜﺎل ‪- 2:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺘﻴﺎز‬
‫)‪1‬اﻟﻔﺌ ﺔ أ ) ب(‪2) :‬اﺟ‬

‫)‪3‬اﻟﻔﺌ ﺔ ب )أ(‪4) :‬‬

‫ﻳﻤﺮ‬

‫ﺘﻢﺗﻌﺮﻳﻒ اﻻﺳﻢ " ب"‬


‫ﺧﻄﺄ ﻓ ﻲ اﻻﺳﻢ‪ :‬ﻟﻢﻳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫‪45‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫أ‬

‫ب‬

‫ﺗﻴ ﺐ ﻗﺮار اﻟﻄﺮﻳﻘ ﺔ ‪(MRO):‬‬


‫ﺗﺮ‬
‫ﺑﻨﺎ ًء ﻋﲆ ‪MRO‬‬‫ﺘﻢﺗﺤﺪﻳﺪ أﻣﺮ ﺣﻞ اﻟﻄﺮﻳﻘ ﺔ‬
‫ﺛ ﺔ اﻟﻬﺠﻴﻨ ﺔ ‪،‬ﻳ‬
‫•ﻓ ﻲ اﻟﻮرا‬

‫اﻟﺨﻮارزﻣﻴ ﺔ‪.‬‬

‫ﺑﺎﺳﻢ ﺧﻮارزﻣﻴ ﺔ ‪C3.‬‬ ‫ُﻌﺮف ﻫﺬه اﻟﺨﻮارزﻣﻴ ﺔ أ ً‬


‫ﻳﻀﺎ‬ ‫ﺗ‬
‫•‬

‫ﺑﻴﺪروﻧ ﻲ ﻫﺬه اﻟﺨﻮارزﻣﻴ ﺔ‪.‬‬‫ﺘﺮح ﺻﺎﻣﻮﻳﻞ‬


‫•اﻗ‬

‫ﺜﺮ ﻣﻦ اﻟﻮاﻟﺪ اﻷﻳﻤﻦ‪.‬‬


‫ﺒﺮ ﻣﻦ اﻷ ب‪• .‬اﻟﻮاﻟﺪﻳﻦ اﻷﻳ ﺴﺮﺳﻴﺤﺼﻼن ﻋﲆ أوﻟﻮﻳ ﺔ أﻛ‬ ‫ﺒﻊ ‪)DLR‬اﻟﻌﻤﻖ ً‬
‫أوﻻ ﻣﻦ اﻟﻴ ﺴﺎر إﱃ اﻟﻴﻤﻴﻦ( أي اﻟﻄﻔﻞﺳﻴﺤﺼﻞ ﻋﲆ أوﻟﻮﻳ ﺔ أﻛ‬ ‫ﺘ‬‫•ﻳ‬

‫‪• MRO (X) = X +‬دﻣﺞ ‪(MRO (P1) ، MRO (P2) ، ... ،‬ﻗﺎﺋﻤ ﺔ اﻟﻮاﻟﺪﻳﻦ(‬

‫ﺑﻞ اﻟﻤﺼﻄﻠﺤﺎ ت اﻟﺨﻠﻔﻴ ﺔ‪:‬‬


‫ﻋﻨﺼﺮ اﻟﺮأس ﻣﻘﺎ‬
‫ﺘﺮض أن ‪ C1 ، C2 ، C3 ، ...‬ﻫ ﻲ ﻓﺌﺎ ت‪.‬‬
‫•اﻓ‬
‫•ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪C1C2C3C4C5 .... :‬‬

‫ﺑ ﺔ ذﻳﻞ‪.‬‬
‫ﺜﺎ‬
‫ﺑﻤ‬‫ﺒﻘ ﻲ‬
‫ﺘ‬‫ﺒﺮ اﻟﻤ‬
‫ﺘ‬‫ﺋﻴ ﺴ ًﻴﺎ وﻳﻌ‬
‫ﺒﺮ ‪C1‬ﻋﻨﺼ ﺮًا ر‬
‫ﺘ‬‫•ﻳﻌ‬

‫ﻛﻴﻒﺗﺠﺪ دﻣﺞ‪:‬‬
‫•ﺧﺬ رأس اﻟﻘﺎﺋﻤ ﺔ اﻷوﱃ‬

‫ﺘﻪ ﻣﻦ اﻟﻘﻮاﺋﻢ ﻓ ﻲ اﻟﺪﻣﺞ‪.‬‬


‫ﺘﻴﺠ ﺔ وإزاﻟ‬
‫ﺑﺈﺿﺎﻓ ﺔ ﻫﺬا اﻟﺮأس إﱃ اﻟﻨ‬‫•إذا ﻟﻢﻳﻜﻦ اﻟﺮأس ﻓ ﻲ اﻟﺠﺰء اﻟﺨﻠﻔ ﻲ ﻣﻦ أي ﻗﺎﺋﻤ ﺔ أﺧﺮى ‪ ،‬ﻓﻘﻢ‬

‫•إذا ﻛﺎن اﻟﺮأس ﻣﻮﺟﻮدًا ﻓ ﻲ اﻟﺠﺰء اﻟﺨﻠﻔ ﻲ ﻣﻦ أي ﻗﺎﺋﻤ ﺔ أﺧﺮى ‪ ،‬ﻓﻔﻜﺮ ﻓ ﻲ ﻋﻨﺼﺮ اﻟﺮأس‬

‫ﺑﻌ ﺔ ﻧﻔ ﺲ اﻟﻌﻤﻠﻴ ﺔ‪.‬‬


‫ﺘﺎ‬
‫ﺘﺎﻟﻴ ﺔ وﻣ‬
‫ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ اﻟ‬

‫ﺘﺨﺪام وﻇﻴﻔ ﺔ ‪mro ().‬‬


‫ﺑﺎﺳ‬‫ﺜﻮر ﻋﲆ ‪MRO‬ﻣﻦ أي ﻓﺌ ﺔ‬
‫ﻣﻼﺣﻈ ﺔ‪:‬ﻳﻤﻜﻨﻨﺎ اﻟﻌ‬
‫ﺒﺎﻋ ﺔ ))( ‪(ClassName.mro‬‬
‫ﻃ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪46‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

:‫ﻷﻣﺮ ﺣﻞ اﻟﻄﺮﻳﻘ ﺔ‬-1 ‫ﺒ ﻲ‬


‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫أ‬

‫ج‬
‫ب‬

‫د‬

‫ ﻛﺎﺋﻦ‬، ‫ﻣﺮو )أ( =أ‬


‫ ﻛﺎﺋﻦ‬، ‫ أ‬، ‫ﻣﺮو ) ب( = ب‬
‫ ﻛﺎﺋﻦ‬، ‫ أ‬، ‫ﻣﺮو )ج( =ج‬
‫ ﻛﺎﺋﻦ‬، ‫ أ‬، ‫ ج‬، ‫ ب‬، ‫ﻣﺮو )د( =د‬

test.py

(D.mro ()) ‫ﺒﺎﻋ ﺔ‬


‫(ﻃ‬A.mro ()) 6) ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬5) ‫ﺘﻴﺎز‬
‫اﺟ‬D (B ، C): ‫اﻟﻔﺌ ﺔ‬4) ‫ﺘﻴﺎز‬
‫اﺟ‬C (A): ‫اﻟﻔﺌ ﺔ‬3) ‫ﺘﻴﺎز‬
‫اﺟ‬B (A): ‫اﻟﻔﺌ ﺔ‬2) ‫ﺘﻴﺎز‬
‫اﺟ‬A: ‫اﻟﻔﺌ ﺔ‬1)
(B .mro ()) 7) print (C.mro ()) 8) print

:‫ﺘﺎج‬
‫اﻧ‬
[<class '__main __. A'>، <class 'object'>]
[<class '__main __. B'>، <class '__main __. A'>، <class 'object'>]
[<class '__main __. C'>، <class '__main __. A'>، <class 'object'>]
[<class '__main __. D'> ، <class '__main __. B'> ، <class '__main __. C'> ، <class '__main __. A'> ، <class 'object'>]

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

47
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺒ ﻲ ‪-2‬ﻷﻣﺮ ﺣﻞ اﻟﻄﺮﻳﻘ ﺔ‪:‬‬


‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫ﻫﺪف‬

‫ج‬
‫أ‬ ‫ب‬

‫‪X‬‬ ‫ص‬

‫ﻣﺮو )أ( =أ ‪ ،‬ﻛﺎﺋﻦ‬ ‫ص‬

‫ﻣﺮو ) ب( = ب ‪ ،‬ﻛﺎﺋﻦ‬
‫ﺑﻪ‬‫ﻣﺮو )ج( =ج ‪ ،‬ﻣﻔﻌﻮل‬
‫‪mro (X) = X ، A ، B ،‬ﻛﺎﺋﻦ‬
‫‪mro (Y) = Y ، B ، C ،‬ﻛﺎﺋﻦ‬
‫‪mro (P) = P ، X ، A ، Y ، B ، C ،‬ﻛﺎﺋﻦ‬

‫ﺘﺨﺪام ﺧﻮارزﻣﻴ ﺔ ‪C3:‬‬


‫ﺑﺎﺳ‬
‫إﻳﺠﺎد )‪mro (P‬‬

‫اﻟﺼﻴﻐ ﺔ‪MRO (X) = X + :‬دﻣﺞ ‪(MRO (P1) ، MRO (P2) ، ... ،‬ﻗﺎﺋﻤ ﺔ اﻟﻮاﻟﺪﻳﻦ(‬
‫‪mro (p) = P +‬دﻣﺞ )‪(mro (X) ، mro (Y) ، mro (C) ، XYC‬‬
‫‪= P +‬دﻣﺞ )‪(XABO، YBCO، CO، XYC‬‬
‫‪= P + X +‬دﻣﺞ )‪(ABO، YBCO، CO، YC‬‬
‫‪= P + X + A +‬دﻣﺞ )‪(BO، YBCO، CO، YC‬‬
‫‪= P + X + A + Y +‬دﻣﺞ )‪(BO ، BCO ، CO ، C‬‬
‫‪= P + X + A + Y + B +‬دﻣﺞ )‪(O ، CO ، CO ، C‬‬
‫‪= P + X + A + Y + B + C +‬دﻣﺞ )‪(O ، O ، O‬‬
‫‪=P+X+A+Y+B+C+O‬‬

‫‪test.py‬‬

‫ﺘﻴﺎز )‪2‬اﻟﻔﺌ ﺔ ‪B:‬‬


‫)‪1‬اﻟﻔﺌ ﺔ ‪A:‬اﺟ‬
‫ﺗﻤﺮﻳﺮ )‪4‬اﻟﻔﺌ ﺔ‬
‫ﺘﻴﺎز )‪3‬اﻟﻔﺌ ﺔ ‪C:‬‬
‫اﺟ‬
‫ﺘﻴﺎز )‪5‬اﻟﻔﺌ ﺔ ‪C):‬‬
‫‪X (A ، B):‬اﺟ‬
‫ﺘﻴﺎز )‪6‬اﻟﻔﺌ ﺔ ‪P (X ، Y ،‬‬
‫‪Y (B ،‬اﺟ‬
‫‪:( (C‬ﻳﻤﺮ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪48‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
Machine Translated by Google

(P.mro ()) # PXAYBCO ‫ﺒﺎﻋ ﺔ‬ ‫ﻃ‬7)


(Y.mro ()) # YBCO 10) print
(X.mro ()) # XABO 9) print
(A.mro ()) # AO 8) print

:‫ﺘﺎج‬
‫اﻧ‬
[<class '__main __. A'>، <class 'object'>]
[<class '__main __. X'> ، <class '__main __. A'> ، <class '__main __. B'> ، <class 'object'>]
[<class '__main __. Y'> ، <class '__main __. B'> ، <class '__main __. C'> ، <class 'object'>]
<class '__main __. X'> ، <class '__main __. A'> ، <class '__main __. Y'> ، <class '__main __. B'> ،
[<class '__main __. P'> ،
<class '__main __. C'>، <class 'object'>]

test.py

def m1 (self): 18) print (' ‫اﻟﻔﺌ ﺔ‬1)


Method') 16) class P (X، Y، C): 17)
def m1 (self):
Method') 13) 15) print
class Y (B،('YC):
class
14)
def m1 (self): 12) print ('X class
Method') 10) class X (A، B): 11)
def
('B m1 Method')
class (self): 9) print ('C C
7) class class
: 8)
class B: 5) def m1 (self): 6) print
3) print ('A class Method') 4)
() ‫ ﻓﺌ ﺔ‬P‫ﻳﻘ ﺔ‬
')‫ﻃﺮ‬ A:p2)=def
19) P () m1
20) (self):
p.m1

P ‫ ﻃﺮﻳﻘ ﺔ ﻓﺌ ﺔ‬:‫اﻹﺧﺮاج‬

‫إذا‬MRO. ‫وﻓ ًﻘﺎ ﻟـ‬X ‫ﺒﺎر ﻃﺮﻳﻘ ﺔ اﻟﻔﺌ ﺔ‬


‫ﺘ‬‫ﺘﻢ اﻋ‬
‫ﻓ ﺴﻴ‬m1 () ، ‫ﻋﲆ ﻃﺮﻳﻘ ﺔ‬P ‫ﺘﻮي اﻟﻔﺌ ﺔ‬
‫إذا ﻟﻢﺗﺤ‬P m1 (). ‫ﺘﻢ اﻟﻨﻈﺮ ﻓ ﻲ ﻃﺮﻳﻘ ﺔ اﻟﻔﺌ ﺔ‬
‫ﺳﻴ‬، ‫ﺜﺎل أﻋﻼه‬
‫ﻓ ﻲ اﻟﻤ‬
.‫ﺘﻤﺮ ﻫﺬه اﻟﻌﻤﻠﻴ ﺔ‬
‫ﺘﺴ‬‫ﺘﻢ اﻟﻨﻈﺮ ﻓ ﻲ ﻃﺮﻳﻘ ﺔ اﻟﻔﺌ ﺔ وﺳ‬
‫ﻓ ﺴﻴ‬X ، ‫ﺘﻮي اﻟﻔﺌ ﺔ‬
‫ﻟﻢﺗﺤ‬

PXAYBCO :‫ﺘﺎﻟ ﻲ‬
‫ﺗﻴ ﺐ اﻟ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺣﻞ اﻷﺳﻠﻮ ب‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

49
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺒ ﻲ ‪-3‬ﻷﻣﺮ ﺣﻞ اﻟﻄﺮﻳﻘ ﺔ‪:‬‬


‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫ﻫﺪف‬

‫د‬ ‫ه‬ ‫‪F‬‬

‫ب‬
‫ج‬

‫أ‬

‫ﺑﻪ‬‫ﻣﺮو )س( =ﻣﻔﻌﻮل‬


‫ﻣﺮو )د( =د ‪ ،‬ﻛﺎﺋﻦ‬
‫‪mro (E) = E ،‬ﻛﺎﺋﻦ‬
‫ﻣﺮو ‪(F) = F ،‬ﻛﺎﺋﻦ‬
‫ﻣﺮو ) ب( = ب ‪ ،‬د ‪ ،‬ﻫـ ‪ ،‬ﻛﺎﺋﻦ‬
‫‪mro (C) = C ، D ، F ،‬ﻛﺎﺋﻦ‬
‫‪mro (A) = A +‬دﻣﺞ )‪(mro (B) ، mro (C) ، BC‬‬
‫‪= A +‬دﻣﺞ )‪(BDEO ، CDFO ، BC‬‬
‫‪= A + B +‬دﻣﺞ )‪(DEO ، CDFO ، C‬‬
‫‪= A + B + C +‬دﻣﺞ )‪(DEO ، DFO‬‬
‫‪= A + B + C + D +‬دﻣﺞ )‪(EO ، FO‬‬
‫‪= A + B + C + D + E +‬دﻣﺞ )‪(O ، FO‬‬
‫‪= A + B + C + D + E + F +‬دﻣﺞ )‪(O ، O‬‬
‫‪=A+B+C+D+E+F+O‬‬

‫‪test.py‬‬

‫ﺘﻴﺎز )‪2‬اﻟﻔﺌ ﺔ‬
‫)‪1‬اﻟﻔﺌ ﺔ ‪D:‬اﺟ‬
‫ﺘﻴﺎز‬
‫ﺘﻴﺎز )‪3‬اﻟﻔﺌ ﺔ ‪F:‬اﺟ‬
‫‪E:‬اﺟ‬
‫ﺘﻴﺎز‬
‫)‪4‬اﻟﻔﺌ ﺔ ‪B (D ، E):‬اﺟ‬
‫ﺘﻴﺎز‬
‫)‪5‬اﻟﻔﺌ ﺔ ‪C (D ، F):‬اﺟ‬
‫ﺘﻴﺎز‬
‫)‪6‬اﻟﻔﺌ ﺔ ‪A (B ، C):‬اﺟ‬
‫ﺒﺎﻋ ﺔ )‪(D.mro ()) 8‬‬
‫)‪7‬ﻃ‬
‫ﺒﺎﻋ ﺔ ))( ‪(B.mro‬‬
‫ﻃ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪50‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

print (A.mro ()) ‫ﺒﺎﻋ ﺔ‬


‫ﻃ‬9)
(C.mro ()) 10)

:‫ﺘﺎج‬
‫اﻧ‬
[<class '__main __. D'>، <class 'object'>]
[<class '__main __. B'> ، <class '__main __. D'> ، <class '__main __. E'> ، <class 'object'>]
[<class '__main __. C'> ، <class '__main __. D'> ، <class '__main __. F'> ، <class 'object'>]
'__main __. A'> ، <class '__main __. B'> ، <class '__main __. C'> ، <class '__main __. D'> ، <class '__main __. E'> ،
[<class
<class '__main __. F'>، <class 'object'>]

:‫اﻟﻄﺮﻳﻘ ﺔ اﻟﻔﺎﺋﻘ ﺔ‬
.‫ﺘﻐﻴﺮا ت واﻟﻄﺮق ﻣﻦ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ‬
‫ﺒﻘ ﺔ اﻟﻔﺎﺋﻘ ﺔ واﻟﻤ‬
‫ﺘﺪﻋﺎءُﻣﻨﺸﺌﺎ ت اﻟﻄ‬
‫ ﻫ ﻲ ﻃﺮﻳﻘ ﺔ ﻣﻀﻤﻨ ﺔ ﻣﻔﻴﺪة ﻻﺳ‬super ()

(): ‫ﺑﺮ‬
‫ﻟﻠ ﺴﻮ‬-1 ‫ﺒ ﻲ‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

self.age = age 5) def display (self): 6) 7) 8) 9) class Student


2) def __init __ (self، name، age): 3) self.name = name 4)
__init __
19)(self،
(‫اﻟﻌﻤﺮ‬name،
،‫)اﻻﺳﻢ‬age،
11) super
rollno،() .__
:(‫اﻟﺸﺨﺺ‬
init __ ):(‫ت‬
1) class
‫اﻟﻌﻼﻣﺎ‬Person:
10) def
print ('Roll
13) No:'،
14) 15) defself.rollno) 18) print
display (self): ('Marks:'،
16) super self.marks)
(). display () 17)
12) self.rollno = rollno
self.name) print ('Age:'، self.age)
print ('Name:'،

‫ﻋﻼﻣﺎ ت‬self.marks = ‫ﻋﻼﻣﺎ ت‬

22،101،90) 21) s1.display () ، '‫اﻟﻄﺎﻟ ﺐ )'دورﺟﺎ‬20) s1 =

:‫ﺘﺎج‬
‫اﻧ‬
‫ دورﺟﺎ‬:‫اﻻﺳﻢ‬
22 :‫اﻟﻌﻤﺮ‬
101 :‫رﻗﻢ اﻟﻠﻔ ﺔ‬

90 :‫ﻋﻼﻣﺎ ت‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

51
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

() ‫ﺘﺪﻋﺎءُﻣﻨﺸ ﺊ اﻟﺼﻨﻒ اﻷﺻﻞ وﻃﺮﻳﻘ ﺔ اﻟﻌﺮض‬


‫ﻻﺳ‬super () ‫ﺘﺨﺪم ﻃﺮﻳﻘ ﺔ‬
‫ ﻧ ﺴ‬، ‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه‬
‫ﻓ ﻲ اﻟ‬

Super (): ‫ﻟـ‬-2 ‫ﺒ ﻲ‬


‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

17) self.b = 999 18) 19) 20) 21) 22) 23) 24) c = C () ‫اﻟﻔﺌ ﺔ‬1)
13) 14) class C (P): 15) a = 888 16) def __init __ (self):
11) def m3 (): 12) print ('Parent static method')
(cls):
('Parent
9) print
example
('Parent
method')
class method')
7) classmethod
10) staticmethod
8) def m2
def __init __ (self): 4) self.b = 10 5) def m1 (self): 6) print
P: 2) a = 10 3)

(). m2 () super (). m3 ()


a) super (). m1 () super
init __ () print (super ().
super () .__

:‫ﺘﺎج‬
‫اﻧ‬
10
‫ﺜﻴﻞ اﻷﺻﻞ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻤ‬
‫ﻃﺮﻳﻘ ﺔ ﻓﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ‬
‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﻃﺮﻳﻘ ﺔ اﻷﺻﻞ اﻟ‬

.‫ﺑﺎء‬
‫ﺑﺎﻟﻌﺪﻳﺪ ﻣﻦ أﻋﻀﺎء ﻓﺌ ﺔ اﻵ‬‫ﺗﺼﺎل‬
‫ﻟﻼ‬super () ‫ﺘﺨﺪم‬
‫ ﻧ ﺴ‬، ‫ﺜﺎل أﻋﻼه‬
‫ﻓ ﻲ اﻟﻤ‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

52
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺑﺮ ﻣﻌﻴﻨ ﺔ‪:‬‬


‫ﺑﻔﺌ ﺔﺳﻮ‬‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ ﺧﺎﺻ ﺔ‬
‫ﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺘﺎﻟﻴ ﺔ‬
‫ﺘﺨﺪام اﻷﺳﺎﻟﻴ ﺐ اﻟ‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬

‫ﺗ ﻲ(‪ .‬م )( ‪1‬‬


‫ﺑﺮ )د ‪ ،‬ذا‬
‫)‪1‬ﺳﻮ‬
‫ﺒﻘ ﺔ اﻟﻔﺎﺋﻘ ﺔ ﻟـ ‪D.‬‬
‫ﺘﺪﻋ ﻲ ﻃﺮﻳﻘ ﺔ )( ‪m1‬ﻟﻠﻄ‬
‫ﺳﻮفﺗ ﺴ‬

‫ﺗ ﻲ(‬
‫‪)2) A.m1‬ذا‬
‫ﺘﺪﻋ ﻲ ﻃﺮﻳﻘ ﺔ )( ‪A class m1‬‬
‫ﺳﻮفﺗ ﺴ‬

‫)'‪Method‬‬
‫‪6) print‬‬
‫‪4)('B‬‬
‫‪class‬‬
‫‪class‬‬
‫‪B (A):‬‬
‫)'‪Method‬‬
‫‪5) def 7‬‬
‫‪m1‬‬‫‪(self):‬ﺔ )‬
‫)‪1‬اﻟﻔﺌ‬
‫‪A: 2) def m1 (self): 3) print ('A class‬اﻟﻔﺌ ﺔ‬
‫‪(self):‬‬ ‫‪12) print‬‬
‫)'‪Method‬‬ ‫‪('D class‬‬
‫‪10) class‬‬ ‫'‪Method‬‬
‫‪D (C):‬‬ ‫‪11) def) m1‬‬
‫)‪13‬‬
‫‪C (B): 8) def m1 (self): 9) print ('C class‬‬
‫ﺗ ﻲ(‪15) :‬‬
‫اﻟﻔﺌ ﺔ ‪)E (D): 14) def m1‬ذا‬

‫ﺗ ﻲ( )( ‪e = E () 18) e.m1‬‬
‫‪)A.m1‬ذا‬
‫)‪16) 17‬‬

‫اﻟﻤﺨﺮﺟﺎ ت‪ :‬ﻃﺮﻳﻘ ﺔ ﺻﻨﻔﻴ ﺔ‬

‫ﺑﺮ ‪():‬‬
‫ﺘﻠﻔ ﺔ ﺣﻮلﺳﻮ‬
‫ﻧﻘﺎط ﻣﻬﻤ ﺔ ﻣﺨ‬
‫ﺘﺨﺪام‬
‫ﺘﺨﺪام ‪super () ،‬إﻟﺰاﻣ ﻲﻳﺠ ﺐ ﻋﻠﻴﻨﺎ اﺳ‬
‫ﺑﺎﺳ‬‫ﺜﻴﻞ اﻟﻔﺌ ﺔ اﻷﺻﻠﻴ ﺔ‬
‫ﺘﻐﻴﺮا ت ﻣ‬
‫ﺑﺎﻟﻮﺻﻮل إﱃ ﻣ‬‫ُﺴﻤﺢ ﻟﻨﺎ‬
‫اﻟﺤﺎﻟ ﺔ ‪1:‬ﻣﻦ ﻓﺌ ﺔ اﻷﻃﻔﺎل ‪ ،‬ﻻﻳ‬
‫اﻟﺬا ت ﻓﻘﻂ‪.‬‬
‫ﺘﺨﺪام ‪super ().‬‬
‫ﺑﺎﺳ‬‫ﺘ ﺔ ﻟﻠﻔﺌ ﺔ اﻷﺻﻞ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﻟﻜﻦﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ اﻟﻤ‬

‫)‪1‬اﻟﻔﺌ ﺔ ‪C (P): 7) def m1 (self):‬‬


‫‪(self): 4) self.b = 20 5) 6) class‬‬
‫__ ‪P: 2) a = 10 3) def __init‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪53‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

(). b) (self.b)
print #invalid#valid
11) c 10)
= C print
() 12) (super
c.m1 ()
8) print (super (). a) #valid 9)

:‫ﺘﺎج‬
‫اﻧ‬
10
20
"b" ‫"ﻟﻴ ﺲ ﻟﻪﺳﻤ ﺔ‬super" ‫اﻟﻜﺎﺋﻦ‬AttributeError:

‫ﺘ ﺔ وﻃﺮﻳﻘ ﺔ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺜﻴﻞ اﻟﻔﺌ ﺔ اﻷﺻﻞ واﻟﻄﺮﻳﻘ ﺔ اﻟ‬
‫ﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ ﻃﺮﻳﻘ ﺔ ﻣ‬، ‫ﺜﻴﻞ‬
‫ﻣﻦُﻣﻨﺸ ﺊ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ وﻃﺮﻳﻘ ﺔ اﻟﻤ‬2: ‫اﻟﺤﺎﻟ ﺔ‬
super () ‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫اﻟﻔﺌ ﺔ‬

() 23) super (). m2 () 24) super (). m3 () ‫اﻟﻔﺌ ﺔ‬1)


(self): 21) super () .__ init __ () 22) super (). m1
super
15) (). m2 () 18)
super super
.__ init __ ()().16)
m3super
() 19) ().
20) def
m1 () m1
17)
12) 13) class C (P): 14) def __init __ (self) :
10) def ('Parent
print m3 (): 11) print
class ('Parent9)
method') static method')
staticmethod
method') 6) classmethod 7) def m2 (cls ): 8)
4) def m1 (self): 5) print ('Parent example
__init __ (self): 3) print ('Parent Constructor')
P: 2) def

1 () ‫ =ﺳﻢ‬C () 27) ‫ج‬25) 26)

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

54
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫اﻟﻤﻨﺸ ﺊ اﻷﺻﻞ‬

‫ﺜﻴﻞ اﻷﺻﻞ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻤ‬

‫ﻃﺮﻳﻘ ﺔ ﻓﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ‬

‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﻃﺮﻳﻘ ﺔ اﻷﺻﻞ اﻟ‬

‫اﻟﻤﻨﺸ ﺊ اﻷﺻﻞ‬

‫ﺜﻴﻞ اﻷﺻﻞ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻤ‬

‫ﻃﺮﻳﻘ ﺔ ﻓﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ‬

‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﻃﺮﻳﻘ ﺔ اﻷﺻﻞ اﻟ‬

‫ﺑﺸﻜﻞ‬
‫ﺘﺨﺪام )( ‪super‬‬
‫ﺑﺎﺳ‬‫ﺜﻴﻞ اﻟﻔﺌ ﺔ اﻷﺻﻠﻴ ﺔ واﻟﻤﻨﺸﺌﺎ ت‬
‫اﻟﺤﺎﻟ ﺔ ‪3:‬ﻣﻦ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ ‪ ،‬ﻃﺮﻳﻘ ﺔ اﻟﻔﺌ ﺔ ﻻﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ ﻃﺮق ﻣ‬
‫ﺘ ﺔ وﻃﺮق ﻓﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ‪.‬‬
‫ﺑ‬‫ﺛﺎ‬‫ﺒﺎﺷﺮ(‪ .‬وﻟﻜﻦﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ ﻃﺮق‬
‫ﺑﺸﻜﻞ ﻏﻴﺮ ﻣ‬‫ﺒﺎﺷﺮ )وﻟﻜﻦ ﻣﻤﻜﻦ‬
‫ﻣ‬

‫)‪1‬اﻟﻔﺌ ﺔ >‪15) def m1 (cls): 16) #super () .__ init __ () ---‬‬

‫‪static method') 12) 13) class C (P): 14) classmethod‬‬

‫)'‪method‬‬ ‫‪9) staticmethod‬‬


‫‪6) classmethod‬‬ ‫)‪7) def 10‬‬
‫‪m2 def‬‬
‫‪(cls m3‬‬
‫‪): 8)():‬‬ ‫‪11) print‬‬
‫‪print‬‬ ‫‪('Parent‬‬
‫‪('Parent‬‬ ‫‪class‬‬

‫)'‪4) def m1 (self): 5) print ('Parent example method‬‬

‫)(ﻏﻴﺮ‬
‫‪m2‬‬ ‫)‪P:19‬‬
‫‪2) def‬‬ ‫‪__init‬‬
‫‪super‬‬ ‫__ ‪().‬‬ ‫‪(self):‬‬
‫ﺻﺎﻟﺤ ﺔ‬ ‫)‪3‬ﻏﻴﺮ‬
‫)‪17‬‬‫‪print‬‬ ‫‪('Parent‬‬
‫‪#super‬‬ ‫)'‪Constructor‬‬
‫‪(). m1‬‬ ‫ﺻﺎﻟﺤ ﺔ >‪() ---‬‬

‫‪18) super ().‬م )‪3 () 20‬‬

‫)‪21‬م )( ‪1‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﻃﺮﻳﻘ ﺔ ﻓﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ‬

‫ﺑﺖ‬
‫ﺜﺎ‬
‫ﻃﺮﻳﻘ ﺔ اﻷﺻﻞ اﻟ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪55‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

:‫واﻟﻤﻨﺸﺌﻴﻦ‬
ُ ‫ﺑﺎء‬‫ﺜﻴﻞ ﻓﺌ ﺔ اﻵ‬
‫ﺘﺪﻋﺎء ﻃﺮق ﻣ‬
‫ ﻛﻴﻔﻴ ﺔ اﺳ‬، ‫ﻣﻦ ﻃﺮﻳﻘ ﺔ اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ ﻟﻔﺌ ﺔ اﻟﻄﻔﻞ‬

cls) .__ init __ (cls) 12) super (B، cls) .m1 (cls) 13) ‫اﻟﻔﺌ ﺔ‬1)
B (A): 9) classmethod 10 ) def m2 (cls): 11) super (B،
m1 (self): 6) print ('Parent example
("‫ ﺊ اﻷﺻﻞ‬method') 7) 8) class
‫)"اﻟﻤﻨﺸ‬print
A: 2) def __init __ (self): 3) 4) 5) def

14) B.m2 ()

:‫ﺘﺎج‬
‫اﻧ‬
‫اﻟﻤﻨﺸ ﺊ اﻷﺻﻞ‬

‫ﺜﻴﻞ اﻷﺻﻞ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻤ‬

(‫ﺘﺨﺪاﻣﻬﺎ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﺧﺎﺻ ﺔﻳﻤﻜﻨﻨﺎ اﺳ‬‫ﺑﺸﻜﻞ ﻋﺎم )وﻟﻜﻦ‬
super () ‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ُﺴﻤﺢ ﻟﻨﺎ‬
‫ ﻻﻳ‬، ‫ﺘ ﺔ ﻟﻔﺌ ﺔ اﻷﻃﻔﺎل‬
‫ﺑ‬‫ﺜﺎ‬
‫ﻓ ﻲ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬4: ‫اﻟﺤﺎﻟ ﺔ‬

staticmethod 15) def m1 (): 16) super (). m1 () -> ‫اﻟﻔﺌ ﺔ‬1)
11) print ('Parent static method') 12) 13) class C (P): 14)
('Parent class method')
method') 9) staticmethod
6) classmethod 7) def m2 10)
(cls def
): 8)m3 ():
print
Constructor') 4) def m1 (self): 5) print ('Parent example
() --->
‫ﺻﺎﻟﺢ‬ ‫ﺻﺎﻟﺢﻏﻴﺮ‬ ‫ﻏﻴﺮ‬P: 2)
18) super (). def
m3 __init
() ---> __ (self):
‫ﺻﺎﻟﺢ‬ 3) print
‫ﻏﻴﺮ‬17) super('Parent
(). m2
19)

1 () ‫م‬20)

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

56 - 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺸﻐﻴﻞ‪super (): :‬ﻻﺗﻮﺟﺪ وﺳﻴﻄﺎ ت‬


‫ﺧﻄﺄ وﻗ ﺖ اﻟ‬

‫ﺑ ﺖ ﻟﻔﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ ﻣﻦ ﻓﺌ ﺔ اﻷﻃﻔﺎل ‪Static‬‬


‫ﺜﺎ‬
‫ﺘﺪﻋﺎء اﻷﺳﻠﻮ ب اﻟ‬
‫ﻛﻴﻔﻴ ﺔ اﺳ‬

‫ﺘﺨﺪام ‪super ():‬‬


‫ﺑﺎﺳ‬‫اﻟﻄﺮﻳﻘ ﺔ‬

‫ﺒﺎﻋ ﺔ‬
‫)‪1‬اﻟﻔﺌ ﺔ أ‪2) 3) staticmethod 4) def m1 (): 5) :‬ﻃ‬
‫ﺘ ﺔ"( )‪6) 7‬اﻟﻔﺌ ﺔ ) ‪9) def m2 (): 10‬‬
‫ﺑ‬‫ﺜﺎ‬
‫)"اﻟﻄﺮﻳﻘ ﺔ اﻷﺻﻠﻴ ﺔ اﻟ‬
‫ﺑﺮ ) ب ‪ ،‬ب(‪ .‬م )‪1 () 11‬‬
‫‪B (A): 8) staticmethod‬ﺳﻮ‬

‫)( ‪12) B.m2‬‬

‫ﺑﺖ‬
‫ﺜﺎ‬
‫اﻹﺧﺮاج‪ :‬اﻟﻄﺮﻳﻘ ﺔ اﻷﺻﻞ اﻟ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪57‬‬ ‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺲ‬ ‫ُ‬
‫أوو‬
‫اﻟﺠﺰء ‪- 3‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪58‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺗﻌﺪد اﻷﺷﻜﺎل‬
‫ﺗﻌﻨ ﻲ اﻷﺷﻜﺎل‪.‬‬
‫ﺜﻴﺮ‪Morphs .‬‬
‫ﺑﻮﻟ ﻲﻳﻌﻨ ﻲ اﻟﻜ‬
‫ﺗﻌﺪد اﻷﺷﻜﺎلﻳﻌﻨ ﻲ "اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺷﻜﺎل"‪.‬‬

‫ﺜﺎل ﻋﲆﺗﻌﺪد اﻷﺷﻜﺎل‪ .‬أﻣﺎم واﻟﺪﻳﻚﺳﻴﻜﻮن ﻟﺪﻳﻚ ﻧﻮع واﺣﺪ ﻣﻦ اﻟ ﺴﻠﻮك وﻣﻊ اﻷﺻﺪﻗﺎء ﻧﻮع آﺧﺮ ﻣﻦ اﻟ ﺴﻠﻮك ‪ ،‬ﺷﺨﺺ‬
‫ﺜﺎل ‪1:‬ﻧﻔ ﺴﻚ ﻫﻮ أﻓﻀﻞ ﻣ‬
‫ﻣ‬
‫ﺘﻠﻔ ﺔ ‪ ،‬و ﻫﺬا ﻟﻴ ﺲﺳﻮىﺗﻌﺪد اﻷﺷﻜﺎل‪.‬‬
‫ﺘﻠﻔ ﺔ ﻓ ﻲ أﻣﺎﻛﻦ ﻣﺨ‬
‫واﺣﺪ وﻟﻜﻦﺳﻠﻮﻛﻴﺎ ت ﻣﺨ‬

‫ﺑﻴ ﺔ‬
‫ﺘﺸﻐﻴﻞ ‪Eg2: +‬ﻳﻌﻤﻞ ﻛ ﺴﻠ ﺴﻠ ﺔ وإﺿﺎﻓ ﺔ ﺣ ﺴﺎ‬
‫ﻋﺎﻣﻞ اﻟ‬

‫*‬
‫ﺘﻜﺮار‬
‫ﻋﺎﻣﻞﻳﻌﻤﻞ ﻛﻌﺎﻣﻞ اﻟﻀﺮ ب واﻟ‬
‫‪Eg3:‬‬

‫ﺗﺠﺎوز(‬
‫ﺘﻠﻔ ﺔ ﻓ ﻲ ﻓﺼﻮل اﻟﻮاﻟﺪﻳﻦ واﻟﻔﺼﻮل اﻟﻔﺮﻋﻴ ﺔ‪) .‬‬
‫ﺒﻴﻘﺎ ت ﻣﺨ‬
‫ﺜﺎل ‪4:‬ﻧﻔ ﺲ اﻟﻄﺮﻳﻘ ﺔ ﻣﻊﺗﻄ‬
‫ﻣ‬

‫ﺘﺎﻟﻴ ﺔ ﻣﻬﻤ ﺔ‬
‫ﺑﻌ ﺔ اﻟ‬
‫ﺘﻌﺪد اﻷﺷﻜﺎل ‪ ،‬ﻓﺈن اﻟﻤﻮﺿﻮﻋﺎ ت اﻷر‬
‫ﺑ‬‫ﺘﻌﻠﻖ‬
‫ﻓﻴﻤﺎﻳ‬

‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﺒﻄ ﺔ ﻓ ﻲ‬
‫ﺒﺎﻋ ﺔ اﻟ‬
‫)‪1‬ﻓﻠ ﺴﻔ ﺔ ﻃ‬

‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ‬
‫)‪2‬اﻟ‬
‫)‪1‬اﻟﺤﻤﻮﻟ ﺔ اﻟﺰاﺋﺪة ﻋﲆ اﻟﻤﺸﻐﻞ‬
‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ‬
‫)‪2‬ﻃﺮﻳﻘ ﺔ اﻟ‬
‫)‪3‬اﻟﺤﻤﻮﻟ ﺔ اﻟﺰاﺋﺪة ﻟﻠﻤﻨﺸ ﺊ‬

‫ﺗﺠﺎوز‬
‫)‪3‬‬
‫)‪1‬ﻃﺮﻳﻘ ﺔﺗﺠﺎوز‬
‫ﺗﺠﺎوز اﻟﻤﻨﺸ ﺊ‬
‫)‪2‬‬

‫ﺜﻮن‪:‬‬
‫ﺑﺎﻳ‬‫ﺒﻂ ﻓ ﻲ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫)‪1‬ﻓﻠ ﺴﻔ ﺔ ﻛ‬
‫ﺛﻢ‬‫ﺒﺎر اﻟﻨﻮعﺗﻠﻘﺎﺋ ًﻴﺎ‪ .‬وﻣﻦ‬
‫ﺘ‬‫ﺘﻢ اﻋ‬
‫ﺘﺸﻐﻴﻞ ‪،‬ﺳﻴ‬
‫ﺑﻨﺎ ًء ﻋﲆ اﻟﻘﻴﻤ ﺔ اﻟﻤﻘﺪﻣ ﺔ ﻓ ﻲ وﻗ ﺖ اﻟ‬‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ‪.‬‬‫ﺜﻮن ﻻﻳﻤﻜﻨﻨﺎﺗﺤﺪﻳﺪ اﻟﻨﻮع‬
‫ﺑﺎﻳ‬‫ﻓﻲ‬
‫ﺒﻮﻋ ﺔ دﻳﻨﺎﻣﻴﻜ ًﻴﺎ‪.‬‬
‫ﺑﺮﻣﺠ ﺔ ﻣﻄ‬‫ﺜﻮن ﻟﻐ ﺔ‬
‫ﺑﺎﻳ‬‫ﺒﺮ‬
‫ﺘ‬‫ﺗﻌ‬

‫‪def f1 (obj):‬‬
‫)( ‪obj.talk‬‬

‫ﺛﻢ ﻛﻴﻒﻳﻤﻜﻨﻨﺎﺗﺤﺪﻳﺪ اﻟﻨﻮع؟‬‫ﺘﺸﻐﻴﻞﻳﻤﻜﻨﻨﺎﺗﻤﺮﻳﺮ أي ﻧﻮع‪.‬‬


‫ﺒﺪاﻳ ﺔ‪ .‬ﻓ ﻲ وﻗ ﺖ اﻟ‬
‫ﻣﺎ ﻫﻮ ﻧﻮع اﻟﻬﺪف؟ ﻻﻳﻤﻜﻨﻨﺎ أن ﻧﻘﺮر ﻓ ﻲ اﻟ‬

‫ﺒﻄ ﺔ‬
‫ﺒﺎﻋ ﺔ اﻟ‬
‫ﺑﻔﻠ ﺴﻔ ﺔ ﻃ‬‫ﺒﺪأ‪ .‬و ﻫﺬا ﻣﺎﻳ ﺴﻤﻰ‬
‫ﺜﻮن ﻫﺬا اﻟﻤ‬
‫ﺑﺎﻳ‬‫ﺒﻊ‬
‫ﺘ‬‫ﺑﻄ ﺔ"‪.‬ﺗ‬‫ﺒﻄ ﺔ ‪،‬ﻳﺠ ﺐ أنﻳﻜﻮن‬
‫ﺜﻞ اﻟ‬
‫ﺘﺤﺪ ث ﻣ‬
‫ﺒﻄ ﺔ وﻳ‬
‫ﺜﻞ اﻟ‬
‫ﺘﺸﻐﻴﻞ ‪ ،‬إذا ﻛﺎن "ﻳ ﺴﻴﺮ ﻣ‬
‫ﻓ ﻲ وﻗ ﺖ اﻟ‬
‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬‫ﻓﻲ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪59‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

() ، Cat () ، Dog () ، Goat ()] 21)


18) obj.talk () 19) 20) l = [Duck
Myaah
14) def..')talk
15)(self):
16) 17)print
def ('Myaah
f1 (obj):
Moew ..') 11) 12) 13) class Goat:
10) def talk (self): print ('Moew
def talk (self): 7) 8) 9) class Cat:
Quack ("Bow
..') 3) 4)
Bow5) class Dog:
..") ‫ﺒﺎﻋ ﺔ‬‫ﻃ‬ 6)
2) def talk (self): print ('Quack ..
in l: 22) f1 (obj) ‫ﻟـ‬1) class Duck:
obj

:‫ﺘﺎج‬
‫اﻧ‬
.. ‫ دﺟﺎل‬.. ‫دﺟﺎل‬
.. ‫ﻣﻮ ﻣﻮ‬
..‫اﻟﻘﻮس اﻟﻘﻮس‬

.. ‫ﻣﻴ ﺔ ﻣﻴ ﺔ‬

AttributeError. ‫ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ‬talk () ، ‫ﺘﻮي ﻋﲆ ﻃﺮﻳﻘ ﺔ‬


‫ﻻﻳﺤ‬obj ‫اﻟﻤﺸﻜﻠ ﺔ ﻓ ﻲ ﻫﺬا اﻟﻨﻬﺞ ﻫ ﻲ أﻧﻪ إذا ﻛﺎن‬

10) 11) d = Duck () 12) f1 (d) 13)


') 8) def f1 (obj): 9) obj.talk ()
defQuack
bark (self): 7) class
..') 4) 5) print Dog:
('Bow6)
..
talk (self): 3) print ('Quack ..
1) class Duck: 2) def

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

60
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

‫د =اﻟﻜﻠ ﺐ‬14)
(‫ )()د‬15) f1

:‫ﺘﺎج‬
‫اﻧ‬
\ durga_classes> py test.py :‫د‬
.. ‫ دﺟﺎل‬.. ‫دﺟﺎل‬
:(‫)أﺣﺪ ث ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة‬Traceback
<module> ‫ﻓ ﻲ‬22 ، ‫"اﻟ ﺴﻄﺮ‬test.py" ، ‫ﻣﻠﻒ‬
(‫)د‬1 ‫و‬
f1 ‫ﻓ ﻲ‬13 ، ‫"اﻟ ﺴﻄﺮ‬test.py" ، ‫ﻣﻠﻒ‬
obj.talk ()
"talk" ‫اﻟﻜﺎﺋﻦ "اﻟﻜﻠ ﺐ" ﻟﻴ ﺲ ﻟﻪﺳﻤ ﺔ‬AttributeError:

hasattr (). ‫ﺘﺨﺪام داﻟ ﺔ‬


‫ﺑﺎﺳ‬‫ﻟﻜﻦﻳﻤﻜﻨﻨﺎ ﺣﻞ ﻫﺬه اﻟﻤﺸﻜﻠ ﺔ‬

‫ﺘﻐﻴﺮ‬
‫ﻳﻤﻜﻦ أنﺗﻜﻮن اﻟ ﺴﻤ ﺔ اﺳﻢ اﻟﻄﺮﻳﻘ ﺔ أو اﺳﻢ اﻟﻤ‬hasattr (obj، 'attributename')

hasattr (): ‫ﺑﻮﻇﻴﻔ ﺔ‬‫ﺒﻲ‬


‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

18) 19) d = Duck () 20) f1 (d) 21) 22) h =


elif hasattr (obj، 'bark') : 17) obj.bark ()
ifbark
hasattr (obj،
(self): 11)'talk'):
12) 13)15)
defobj.talk () 14)
f1 (obj): 16)
def talk (self): 7) 8) 9) class Dog: 10) def
('Quack .. Quack ..') 4) 5) class Human: 6)
1) class Duck: 2) def talk (self): 3) print
f1 ‫ )(اﻟﻜﻠ ﺐ‬23)
("...f1
‫ﺒﺎ‬ (h) ‫ﺒﺎ‬
‫ﻣﺮﺣ‬ 24) 25)‫ﺒﺎﻋ ﺔ‬
‫)"ﻣﺮﺣ‬ d‫ﻃ‬
= ‫اﻹﻧ ﺴﺎن‬
(‫ )()د‬26)

("Bow Bow ..") ‫ﺒﺎﻋ ﺔ‬


‫ﻃ‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

61
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫)‪27‬ﻣﻴﺎ ﻣﻴ ﺔ ﻣﻴ ﺔ ‪...‬‬

‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ‬
‫)‪2‬اﻟ‬
‫ﺘﻠﻔ ﺔ‪.‬‬
‫ﺘﺨﺪام ﻧﻔ ﺲ اﻟﻤﺸﻐﻞ أو اﻷﺳﺎﻟﻴ ﺐﻷﻏﺮاض ﻣﺨ‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬

‫ﺗ ﺴﻠ ﺴﻞ اﻟ ﺴﻠ ﺴﻠ ﺔ‬
‫ﺑ ﻲو‬
‫ﺘﺸﻐﻴﻞ ‪1: +‬ﻟﻠﺠﻤﻊ اﻟﺤ ﺴﺎ‬
‫ﺘﺨﺪام ﻋﺎﻣﻞ اﻟ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻦ اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫‪print (10 + 20) # 30‬‬
‫‪print ('durga' + 'soft') #‬دورﺟﺎﺳﻮﻓ ﺖ‬

‫ﺗﻜﺮار اﻟ ﺴﻠ ﺴﻠ ﺔ‪.‬‬
‫ﺘﺸﻐﻴﻞﻷﻏﺮاض اﻟﻀﺮ ب و‬
‫ﺘﺨﺪام ﻋﺎﻣﻞ اﻟ‬
‫ﺜﺎل * ‪2:‬ﻳﻤﻜﻦ اﺳ‬
‫ﻣ‬
‫ﺒﺎﻋ ﺔ ‪(10 * 20) # 200‬‬
‫ﻃ‬
‫‪print ('durga' * 3) #durgadurgadurga‬‬

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻹﻳﺪاع )(ﻟﻺﻳﺪاع اﻟﻨﻘﺪي أو اﻟﺸﻴﻚ أو اﻟﻴﻮم‬


‫ﺜﺎل ‪3:‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﻣ‬
‫إﻳﺪاع ﻧﻘﺪي(‬
‫إﻳﺪاع )ﺷﻴﻚ(‬
‫إﻳﺪاع )ﻳﻮم(‬

‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ‬
‫ﻫﻨﺎك ‪3‬أﻧﻮاع ﻣﻦ اﻟ‬
‫)‪1‬اﻟﺤﻤﻮﻟ ﺔ اﻟﺰاﺋﺪة ﻋﲆ اﻟﻤﺸﻐﻞ‬
‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ‬
‫)‪2‬ﻃﺮﻳﻘ ﺔ اﻟ‬
‫)‪3‬اﻟﺤﻤﻮﻟ ﺔ اﻟﺰاﺋﺪة ﻟﻠﻤﻨﺸ ﺊ‬

‫)‪1‬اﻟﺤﻤﻮﻟ ﺔ اﻟﺰاﺋﺪة ﻟﻠﻤﺸﻐﻞ‪:‬‬


‫ﺘﺸﻐﻴﻞ‬
‫ﺘ ﻲ ﻟﻴ ﺴ ﺖﺳﻮى ﻋﺎﻣﻞ اﻟ‬
‫ﺘﻌﺪدة ‪ ،‬واﻟ‬
‫ﺘﺨﺪام ﻧﻔ ﺲ اﻟﻤﺸﻐﻞﻷﻏﺮاض ﻣ‬
‫•ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫اﻟﺰاﺋﺪ‪.‬‬
‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ ﻋﲆ اﻟﻤﺸﻐﻞ‪.‬‬
‫ﺗﺪﻋﻢ ‪Python‬اﻟ‬
‫•‬

‫ﺗ ﺴﻠ ﺴﻞ اﻟ ﺴﻠ ﺴﻠ ﺔ‬
‫ﺑ ﻲو‬
‫ﺘﺸﻐﻴﻞ ‪1: +‬ﻟﻠﺠﻤﻊ اﻟﺤ ﺴﺎ‬
‫ﺘﺨﺪام ﻋﺎﻣﻞ اﻟ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻦ اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫‪print (10 + 20) # 30‬‬
‫‪print ('durga' + 'soft') #‬دورﺟﺎﺳﻮﻓ ﺖ‬

‫ﺗﻜﺮار اﻟ ﺴﻠ ﺴﻠ ﺔ‪.‬‬
‫ﺘﺸﻐﻴﻞﻷﻏﺮاض اﻟﻀﺮ ب و‬
‫ﺘﺨﺪام ﻋﺎﻣﻞ اﻟ‬
‫ﺜﺎل * ‪2:‬ﻳﻤﻜﻦ اﺳ‬
‫ﻣ‬
‫ﺒﺎﻋ ﺔ ‪(10 * 20) # 200‬‬
‫ﻃ‬
‫‪print ('durga' * 3) #durgadurgadurga‬‬

‫ﺘﺨﺪام ‪+‬ﻋﺎﻣﻞﺗﺸﻐﻴﻞ ﻟﻜﺎﺋﻨﺎ ت اﻟﻔﺼﻞ ﻟﺪﻳﻨﺎ‪:‬‬


‫ﺒ ﻲ ﻻﺳ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫ﺘﺎ ب اﻟﻔﺼﻞ ‪pages): 3) self.pages = :‬‬


‫)‪1‬ﻛ‬
‫‪ 2) def __init __ (self،‬ﺻﻔﺤﺎ ت = ‪4) 5) b1‬‬
‫ﺘﺎ ب )‪(100‬‬
‫ﻛ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪62‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎ ب )‪7‬‬‫)‪ 6‬ب = ‪2‬ﻛ‬


‫ﺒﺎﻋ ﺔ ) ب ‪ 1 +‬ب )‪2‬‬
‫)‪(200‬ﻃ‬

‫د‪\ durga_classes> py test.py :‬‬


‫‪)Traceback‬أﺣﺪ ث ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬
‫ﻣﻠﻒ ‪"test.py" ،‬اﻟ ﺴﻄﺮ ‪7 ،‬ﻓ ﻲ >‪<module‬‬
‫ﺒﺎﻋ ﺔ ) ب ‪ 1 +‬ب )‪2‬‬
‫ﻃ‬
‫‪TypeError:‬ﻧﻮع )أﻧﻮاع( اﻟﻤﻌﺎﻣﻞ ﻏﻴﺮ اﻟﻤﺪﻋﻮم ﻟـ "‪+: "Book‬و "‪"Book‬‬

‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ‬
‫ﺜﺎل ‪،‬ﺗﺪﻋﻢ ‪Python‬اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬ ‫ﺘﺎ ب أ ً‬
‫ﻳﻀﺎ‪ .‬ﻋﲆﺳ‬ ‫ﺘﺸﻐﻴﻞ ﻟﻠﻌﻤﻞ ﻣﻊ ﻛﺎﺋﻨﺎ ت اﻟﻜ‬
‫ﺘﺤﻤﻴﻞ ‪+‬ﻋﺎﻣﻞ اﻟ‬
‫ﻳﻤﻜﻨﻨﺎ زﻳﺎدة اﻟ‬
‫ﻋﲆ اﻟﻤﺸﻐﻞ‪.‬‬
‫ﺘﺎﺣ ﺔ‪ .‬ﻟﺰﻳﺎدةﺗﺤﻤﻴﻞ أي ﻋﺎﻣﻞ ﻋﻠﻴﻨﺎ‬
‫ﻟﻜﻞ ﻋﺎﻣﻞ ﻃﺮق اﻟ ﺴﺤﺮ اﻟﻤ‬
‫ﺗﺠﺎوزﺗﻠﻚ اﻟﻄﺮﻳﻘ ﺔ ﻓ ﻲ ﺻﻔﻨﺎ‪.‬‬

‫ﺗ ﺴﻤﻰ ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ اﻟﻄﺮﻳﻘ ﺔ اﻟ ﺴﺤﺮﻳ ﺔ ﻟﻤﺸﻐﻞ ‪+.‬ﻋﻠﻴﻨﺎﺗﺠﺎوز ﻫﺬه‬


‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ ‪__add __ () ،‬و‬
‫ﺑﺎﺳ‬‫ﺘﺸﻐﻴﻞ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻋﺎﻣﻞ اﻟ‬
‫داﺧﻠ ًﻴﺎ ‪+‬ﻳ‬
‫اﻟﻄﺮﻳﻘ ﺔ ﻓ ﻲ ﺻﻔﻨﺎ‪.‬‬

‫ﺘﺎ ب ﻟﺪﻳﻨﺎ‪:‬‬
‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ ‪+‬اﻟﻤﺸﻐﻞ ﻟﻜﺎﺋﻨﺎ ت ﻓﺌ ﺔ اﻟﻜ‬
‫ﺒ ﻲ ﻟﻠ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫ﺘﺎ ب اﻟﻔﺼﻞ ‪__init __ (self، pages): 3) self.pages = :‬‬


‫)‪1‬ﻛ‬
‫‪ 2) def‬ﺻﻔﺤﺎ ت = ‪self.pages + other.pages 7) 8) b1‬‬
‫)‪+(100‬‬ ‫اﻟﺼﻔﺤﺎب )‪9‬‬
‫ت‪ ، ':‬ب‬ ‫ﺘﺎ‬
‫ﻋﺪد )‪4‬ﻛ‬
‫‪5) def‬‬ ‫‪__add‬‬
‫إﺟﻤﺎﻟ ﻲ‬ ‫__ﺔ '(‬
‫ﺒﺎﻋ‬‫‪(self،‬‬
‫)‪(200‬ﻃ‬ ‫‪other):‬‬
‫)‪ 6‬ب )‪10‬‬
‫ﺘﺎ‬‫‪return‬ﻛ‬
‫ب =‪2‬‬
‫‪ 1‬ب )‪2‬‬

‫اﻟﻤﺨﺮﺟﺎ ت‪ :‬اﻟﻌﺪد اﻹﺟﻤﺎﻟ ﻲ ﻟﻠﺼﻔﺤﺎ ت‪300 :‬‬

‫ﺑﻠ ﺔ‪.‬‬
‫ﻓﻴﻤﺎﻳﻠ ﻲ ﻗﺎﺋﻤ ﺔ اﻟﻌﻮاﻣﻞ واﻟﻄﺮق اﻟ ﺴﺤﺮﻳ ﺔ اﻟﻤﻘﺎ‬

‫= ‪= 12) //‬‬ ‫ﻛﺎﺋﻦ ‪ __.‬إﺿﺎﻓ ﺔ __)اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬


‫‪* = 11) /‬‬ ‫اﻟﻜﺎﺋﻦ‪_ .‬اﻟﻔﺮﻋﻴ ﺔ __)اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫*‬
‫)‪= 9) - = 10‬‬ ‫ﻛﺎﺋﻦ ‪)mul __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫‪6)٪ 7) 8) +‬‬ ‫اﻟﻜﺎﺋﻦ ‪)div __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫‪3) 4) / 5) //‬‬ ‫اﻟﻜﺎﺋﻦ ‪)floordiv __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫‪1) + 2) -‬‬ ‫اﻟﻜﺎﺋﻦ ‪)mod __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫**‬ ‫اﻟﻜﺎﺋﻦ ‪ __.‬اﻷﺳﺮى __)اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫ﻛﺎﺋﻦ ‪)iadd __ __.‬ﻧﻔ ﺴﻴ ﺔ ‪ ،‬أﺧﺮى(‬
‫اﻟﻜﺎﺋﻦ ‪)isub __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫ﻛﺎﺋﻦ ‪)imul __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫اﻟﻜﺎﺋﻦ ‪)idiv __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫اﻟﻜﺎﺋﻦ ‪)ifloordiv __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬
‫‪63‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫= !)‪19) == 20‬‬ ‫اﻟﻜﺎﺋﻦ ‪)imod __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬


‫= >)‪17)> 18‬‬ ‫اﻟﻜﺎﺋﻦ ‪)ipow __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫=< )‪15) <16‬‬ ‫اﻟﻜﺎﺋﻦ‪)_ lt __ .‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫= ** )‪= 14‬‬ ‫اﻟﻜﺎﺋﻦ ‪)le __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫‪13)٪‬‬ ‫اﻟﻜﺎﺋﻦ ‪)gt __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬
‫اﻟﻜﺎﺋﻦ ‪)ge __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬وﻏﻴﺮ ذﻟﻚ(‬
‫ﻛﺎﺋﻦ ‪ __.‬ﻣﻜﺎﻓ ﺊ __)ﻧﻔ ﺴﻴ ﺔ ‪ ،‬أﺧﺮى(‬
‫اﻟﻜﺎﺋﻦ ‪)ne __ __.‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‬

‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ< و =<ﻋﻮاﻣﻞﺗﺸﻐﻴﻞ ﻛﺎﺋﻨﺎ ت ﻓﺼﻞ اﻟﻄﻼ ب‪:‬‬


‫اﻟ‬

‫ﺗﻌﺮﻳﻒ __ ‪)__init‬اﻟﺬا ت ‪ ،‬اﻻﺳﻢ ‪،‬‬


‫)‪1‬ﻓﺌ ﺔ اﻟﻄﺎﻟ ﺐ‪2) :‬‬
‫ﺗﻴ ﺔ =اﻟﻌﻼﻣﺎ ت __ ‪def __gt‬‬
‫اﻟﻌﻼﻣﺎ ت(‪3) 4) :‬اﻟﻌﻼﻣﺎ ت اﻟﺬا‬
‫ﺳﻢ)‪)6‬اﻟﺬا ت ‪ ،‬أﺧﺮى(‪s2) :‬‬
‫‪def‬اﻻ)‪7‬‬
‫‪self.name‬‬
‫)‪)5‬اﻟﻨﻔ ﺲ ‪ ،‬أﺧﺮى(‪__le __= :‬‬
‫)‪14‬‬
‫‪s2 print‬‬
‫=<"(‪= "، s1‬‬
‫)‪s1s2‬‬
‫)‪<s216‬‬
‫‪= "،print‬‬
‫)‪s1 <s2‬‬
‫>‪(" s1‬‬
‫‪15)=print‬‬
‫‪s2 = "،‬‬
‫‪(" s1‬‬
‫=<>‪s1‬‬
‫=‬
‫)‪("Ravi"، 200) 13) print ("s1> s2 = "، s1> s2‬‬
‫‪other.marks‬‬
‫‪11) s1 = Student ("Durga"،‬‬ ‫‪s2‬ﺔ<)‪100) 12‬‬
‫ﺗﻴ‬
‫ﺬا‬
‫‪ Student‬اﻟ=‬
‫إرﺟﺎع اﻟﻌﻼﻣﺎ ت‬

‫)‪8) 9) 10) print ("10> 20 ="، 10> 20‬‬


‫ﺗﻴ ﺔ ‪<= other.marks‬‬
‫إرﺟﺎع اﻟﻌﻼﻣﺎ ت اﻟﺬا‬

‫ﺘﺎج |‬
‫اﻧ‬
‫= ‪10> 20‬ﺧﻄﺄ‬
‫= ‪s1> s2‬ﺧﻄﺄ‬
‫= ‪ s1 <s2‬ﺻﺤﻴﺢ‬

‫= ‪ s1 <= s2‬ﺻﺤﻴﺢ‬

‫= ‪s1> = s2‬ﺧﻄﺄ‬

‫ﺑﺮﻧﺎﻣﺞ ﻟﺰﻳﺎدةﺗﺤﻤﻴﻞ ﻣﺸﻐﻞ اﻟﻀﺮ ب ﻟﻠﻌﻤﻞ ﻋﲆ ﻛﺎﺋﻨﺎ ت اﻟﻤﻮﻇﻒ‪:‬‬

‫ﺗﻌﺮﻳﻒ __ ‪)__init‬اﻟﺬا ت ‪ ،‬اﻻﺳﻢ ‪،‬‬


‫)‪1‬ﻓﺌ ﺔ اﻟﻤﻮﻇﻒ‪2) :‬‬
‫ﺗﺐ‬
‫ﺗ ﺐ(‪3) self.name = :‬اﻻﺳﻢ = ‪4) self.salary‬اﻟﺮا‬
‫اﻟﺮا‬
‫‪5) def __mul __ (self ،7)other):‬إرﺟﺎع * ‪self.salary‬‬
‫أﺧﺮى‪ .‬أﻳﺎم‬
‫)‪6‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪64‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫= ‪days): 10) self.name = name 11) 12) 13) e‬‬


‫‪8) class TimeSheet: 9) def __init __ (self، name،‬‬
‫‪500) 14) te=*TimeSheet‬‬
‫ﺬا اﻟﺸﻬﺮ‪t) ، ":‬‬
‫‪('Durga'،‬‬
‫ﺗﺐ ﻫ‬‫)‪(" 25‬را‬
‫ﺒﺎﻋ ﺔ‬
‫)‪15‬‬
‫‪('Durga'،‬ﻃ‬
‫اﻟﻤﻮﻇﻒ‬
‫= ‪self.days‬أﻳﺎم‬

‫ﺗ ﺐ ﻫﺬا اﻟﺸﻬﺮ‪12500 :‬‬


‫اﻟﻤﺨﺮﺟﺎ ت‪ :‬اﻟﺮا‬

‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ‪:‬‬
‫)‪2‬ﻃﺮﻳﻘ ﺔ اﻟ‬
‫ﺑﺸﻜﻞ زاﺋﺪ‪.‬‬‫ﺒﺎرة ﻋﻦ ﻃﺮق ﻣﺤﻤﻠ ﺔ‬ ‫ﺘﻠ ًﻔﺎ ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت ‪ ،‬ﻓ‬
‫ُﻴﻘﺎل إن ﻫﺬه اﻟﻄﺮق ﻋ‬ ‫ﺘﺎن ﻟﻬﻤﺎ ﻧﻔ ﺲ اﻻﺳﻢ وﻟﻜﻦ ﻧﻮﻋً ﺎ ﻣﺨ‬
‫•إذا ﻛﺎﻧ ﺖ ﻫﻨﺎك ﻃﺮﻳﻘ‬

‫ﺜﺎل‪m1 (int a) :‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫م ‪)1‬ﻣﺰدوج د(‬

‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ‪.‬‬
‫•ﻟﻜﻦ ﻓ ﻲ ﻃﺮﻳﻘ ﺔ ‪Python ،‬ﻻﻳﻤﻜﻦ اﻟ‬

‫ﺋﻤﺎ ﻓ ﻲ اﻟﻄﺮﻳﻘ ﺔ اﻷﺧﻴﺮة ﻓﻘﻂ‪.‬‬


‫ﺘﻨﻈﺮ ‪Python‬دا ً‬
‫ﺘﻠﻒ ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت ‪ ،‬ﻓ ﺴ‬
‫ﺑﻨﻔ ﺲ اﻻﺳﻢ وﻋﺪد ﻣﺨ‬‫ﺘﻌﺪدة‬
‫•إذا ﻛﻨﺎ ﻧﺤﺎول اﻹﻋﻼن ﻋﻦ ﻃﺮق ﻣ‬

‫ﺒ ﻲ‪:‬‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪('one-arg method') 6) def m1 :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫‪arg method') 4) def m1 (self، a): 5) print‬‬
‫ب(‪:‬‬ ‫)‪(10‬أ ‪،‬‬
‫‪t.m1‬‬ ‫)‪ 12‬ﺲ ‪،‬‬
‫‪ t.m1‬اﻟﻨﻔ‬
‫‪)2) def‬‬ ‫‪m1 (self):‬‬
‫)‪(10،20‬‬ ‫ﺒﺎر‬
‫ﺘ‬ ‫)‪3)7‬‬
‫اﻻﺧ‬ ‫‪print‬‬
‫‪8) 9)('no-‬‬
‫=‪t‬‬
‫‪() 10) # t.m1 () 11) #‬‬

‫ﺛﻨﺎﺋﻴ ﺔ اﻟﺤﺠﺞ"(‬‫ﺒﺎﻋ ﺔ )"ﻃﺮﻳﻘ ﺔ‬


‫ﻃ‬

‫ﺛﻨﺎﺋﻴ ﺔ اﻟﺤﺠﺞ‬‫اﻹﺧﺮاج‪ :‬ﻃﺮﻳﻘ ﺔ‬

‫ﺜﻮن ﻓﻘﻂ ﻓ ﻲ اﻟﻄﺮﻳﻘ ﺔ اﻷﺧﻴﺮة‪.‬‬


‫ﺑﻴ‬‫ﺘﻨﻈﺮ‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪،‬ﺳ‬
‫ﻓ ﻲ اﻟ‬

‫ﺜﻮن‪:‬‬
‫ﺑﺎﻳ‬‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ ﻓ ﻲ‬
‫ﺒﺎ ت ﻃﺮﻳﻘ ﺔ اﻟ‬
‫ﺘﻄﻠ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻣ‬
‫ﻛﻴﻒﻳﻤﻜﻨﻨﺎ اﻟ‬
‫ﺘﻐﻴﺮ ﻣﻦ أﺳﺎﻟﻴ ﺐ‬
‫ﺘﺮاﺿﻴ ﺔ أو ﻣﻊ ﻋﺪد ﻣ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻮﺳﻴﻄﺎ ت اﻻﻓ‬
‫ﺑ ﺔ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎ اﻟ‬
‫ﺘﻐﻴﺮ ﻣﻦ اﻟﻮﺳﺎﺋﻂ ﻣﻄﻠﻮ‬
‫ﻓ ﻲ ﻣﻌﻈﻢ اﻷﺣﻴﺎن ‪ ،‬إذا ﻛﺎﻧ ﺖ اﻟﻄﺮﻳﻘ ﺔ ﻣﻊ ﻋﺪد ﻣ‬
‫اﻟﻮﺳﻴﻄﺎ ت‪.‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫‪65‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺮاﺿﻴ ﺔ‪:‬‬
‫ﺑﺎﻟﺤﺠﺞ اﻻﻓ‬‫ﺒﻲ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫ﺒﺎر اﻟﺼﻨﻒ ‪print ('The Sum of 3 Numbers:'، a + b + c) 5) elif a ! = :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬

‫ﺑﻼ‪6) :‬‬
‫ﺑﻼ و ب! =‬
‫)‪2) def sum (self، a = None، b = None، c = None): 3) 4‬‬
‫ﺛﻼ ث'(‬‫ﺘﻴﻦ أو‬
‫ُﺮﺟﻰﺗﻘﺪﻳﻢ وﺳﻴﻄ‬ ‫ﺑﻼ‪7):‬آﺧﺮ‪8) :‬ﻃ‬
‫ﺒﺎﻋ ﺔ )'ﻳ‬ ‫‪= +‬ب(‬
‫ﺑﻼ‪ ،‬أو ج!‬‫ﺑﻼ و ب! =‬
‫رﻗﻤﻴﻦ‪':‬‬ ‫ﻛﺎن أ! =‬
‫ﻣﺠﻤﻮع‬ ‫ﺒﺎﻋ ﺔإذا '(‬
‫ﻃ‬
‫ﺒﺎر )‪() 10) t.sum (10،20) 11) t.sum (10،20،30) 12) t.sum (10‬‬
‫ﺘ‬‫= ‪9) t‬اﺧ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﻣﺠﻤﻮع ﻋﺪدﻳﻦ‪30 :‬‬
‫ﻣﺠﻤﻮع ‪3‬أﻋﺪاد‪60 :‬‬

‫ﺛﻼ ث ﺣﺠﺞ‬‫ﺘﻴﻦ أو‬


‫ﻳﺮﺟﻰﺗﻘﺪﻳﻢ ﺣﺠ‬

‫ﺘﻐﻴﺮ ﻣﻦ اﻟﺤﺠﺞ‪:‬‬
‫ﺒ ﻲ ﻣﻊ ﻋﺪد ﻣ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪t.sum () :‬‬ ‫ﺘ‬ ‫)‪1‬اﺧ‬


‫)‪11) t.sum (10) 12‬‬
‫‪Test‬‬
‫)‪10‬‬‫‪() t.sum‬‬
‫‪9) t.sum‬‬ ‫)‪(10،20،30‬‬
‫) ‪(10،20‬‬
‫‪(self،‬‬
‫)‪for x*ina):a:3‬‬‫‪5)total‬‬
‫)‪6) 7) =8)0t4‬‬
‫=‬
‫)‪2‬‬
‫ﺒﺎﻋ ﺔ‬‫‪def‬اﻟﻄ‬ ‫= ‪sum‬‬
‫اﻟﻤﺠﻤﻮع ‪+ x‬‬ ‫اﻟﻤﺠﻤﻮع‬

‫"(اﻟﻤﺠﻤﻮع‪ ، ":‬اﻹﺟﻤﺎﻟ ﻲ(‬

‫)‪3‬اﻟﺤﻤﻮﻟ ﺔ اﻟﺰاﺋﺪة ﻟﻠﻤﻨﺸ ﺊ‪:‬‬


‫ﺘﺤﻤﻴﻞ اﻟﺰاﺋﺪ ﻟﻠﻤﻨﺸ ﺊ ﻏﻴﺮ ﻣﻤﻜﻦ ﻓ ﻲ ‪Python.‬‬
‫اﻟ‬

‫ﺒﺎر اﻟﻤﻨﺸ ﺊ اﻷﺧﻴﺮ‪.‬‬


‫ﺘ‬‫ﺘﻢ اﻋ‬
‫إذا ﺣﺪدﻧﺎ ﻋﺪة ﻣﻨﺸﺌﺎ ت ‪ ،‬ﻓ ﺴﻴ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪__init __ (self): 3) 4) :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬

‫‪2) def‬‬
‫ﺒﺎﻋ ﺔ )"‪("No-Arg Constructor‬‬
‫ﻃ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪66‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫= ‪constructor') 10) # t1 = Test () 11) # t1‬‬


‫)‪__init __ (self، a، b): 9‬‬ ‫‪print‬‬
‫أرﺟﻞ"(‬ ‫‪('Two-‬واﺣﺪ‬
‫‪ُ Arg‬‬
‫)"ﻣﻨﺸ ﺊ‬ ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬
‫‪5) def __init __ (self، a): 6) 7) 8) def‬‬
‫ﺒﺎر )‪(10،20‬‬
‫ﺘ‬‫ﺒﺎر = ‪(10) 12) t1‬اﺧ‬
‫ﺘ‬‫اﺧ‬

‫ﺛﻨﺎﺋ ﻲ اﻷرﺟﻞ‬‫اﻹﺧﺮاج‪ُ:‬ﻣﻨﺸ ﺊ‬

‫ﺘﻮﻓﺮﺳﻮى ‪Two-Arg Constructor.‬‬


‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪ ،‬ﻻﻳ‬
‫•ﻓ ﻲ اﻟ‬

‫ﺘﺮاﺿﻴ ﺔ و‬
‫ﺑﺤﺠﺞ اﻓ‬‫اﻟﻤﻨﺸ ﺊ‬
‫ﺗﻨﺎ ‪،‬ﻳﻤﻜﻨﻨﺎ أن ﻧﻌﻠﻦ ﻋﻦ ُ‬
‫ﺒﺎ‬
‫ﺘﻄﻠ‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻣ‬‫•وﻟﻜﻦ‬
‫ﺘﻐﻴﺮ ﻣﻦ اﻟﺤﺠﺞ‪.‬‬
‫ﻋﺪد ﻣ‬

‫ﺘﺮاﺿﻴ ﺔ‪:‬‬
‫اﻟﻤﻨﺸ ﺊ ﻣﻊ اﻟﻮﺳﻴﻄﺎ ت اﻻﻓ‬
‫ُ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪with 0 | 1 | 2 | 3 number ofuments') 4) 5) t1 = :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫‪__init __ (self، a = None، b = None، c = None): 3) print ('Constructor‬‬
‫ﺒﺎر‬
‫ﺘ‬‫ﺒﺎر = ‪(10،20) 8) t4‬اﺧ‬
‫ﺘ‬‫ﺒﺎر = ‪(10) 7) t3‬اﺧ‬
‫ﺘ‬‫ﺒﺎر = ‪() 6) t2‬اﺧ‬
‫ﺘ‬‫‪2) def‬اﺧ‬
‫)‪(10،20،30‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ُﻣﻨﺸ ﺊ ﻣﻊ ﻋﺪد ‪0 | 1 | 2 | 3‬ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت‬
‫ُﻣﻨﺸ ﺊ ﻣﻊ ﻋﺪد ‪0 | 1 | 2 | 3‬ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت‬
‫ُﻣﻨﺸ ﺊ ﻣﻊ ﻋﺪد ‪0 | 1 | 2 | 3‬ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت‬
‫ُﻣﻨﺸ ﺊ ﻣﻊ ﻋﺪد ‪0 | 1 | 2 | 3‬ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت‬

‫ﺘﻐﻴﺮ ﻣﻦ اﻟﺤﺠﺞ‪:‬‬
‫اﻟﻤﻨﺸ ﺊ ﻣﻊ ﻋﺪد ﻣ‬
‫ُ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪(10،20،30) 9) t5 = :‬‬‫ﺘ‬‫)‪1‬اﺧ‬


‫‪7) t3 = Test (10،20) 8) t4 = Test‬‬
‫)‪4) 5) t1 = Test () 6) t2 = Test (10‬‬ ‫ﺘﻐﻴﺮ ﻣﻦ اﻟﻮﺳﺎﺋﻂ"(‬
‫)"ﻣﻨﺸ ﺊ ﻣﻊ ﻋﺪد ﻣ‬
‫‪ُ print‬‬
‫)‪2) def __init __ (self، * a): 3‬‬
‫ﺒﺎر )‪(10،20،30،40،50،60‬‬ ‫ﺘ‬‫اﺧ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪67‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﺘﻐﻴﺮ ﻣﻦ اﻟﻮﺳﺎﺋﻂ‬
‫ﻣﻨﺸ ﺊ ﻣﻊ ﻋﺪد ﻣ‬
‫ﺘﻐﻴﺮ ﻣﻦ اﻟﻮﺳﺎﺋﻂ‬
‫ﻣﻨﺸ ﺊ ﻣﻊ ﻋﺪد ﻣ‬
‫ﺘﻐﻴﺮ ﻣﻦ اﻟﻮﺳﺎﺋﻂ‬
‫ﻣﻨﺸ ﺊ ﻣﻊ ﻋﺪد ﻣ‬
‫ﺘﻐﻴﺮ ﻣﻦ اﻟﻮﺳﺎﺋﻂ‬
‫ﻣﻨﺸ ﺊ ﻣﻊ ﻋﺪد ﻣ‬
‫ﺘﻐﻴﺮ ﻣﻦ اﻟﻮﺳﺎﺋﻂ‬
‫ﻣﻨﺸ ﺊ ﻣﻊ ﻋﺪد ﻣ‬

‫ﺗﺠﺎوز‬
‫)‪3‬‬

‫ﺘﺠﺎوز‬
‫أﺳﻠﻮ ب اﻟ‬
‫ﺘﺮاﺿ ًﻴﺎ ﻟﻠﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ ﻣﻦ ﺧﻼل اﻟﻤﻴﺮا ث‪ .‬إذا ﻟﻢﺗﻜﻦ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ راﺿﻴ ﺔ ﻋﻦ‬
‫ﺣﺎ اﻓ‬
‫ﺘﺎ ً‬
‫ﺘﺎح ﻣﻦ أي وﻗ ﺖ ﻣﻀﻰ اﻷﻋﻀﺎء ﻓ ﻲ ﻓﺌ ﺔ اﻷﺻﻞ ﻣ‬
‫ﻣﺎ ﻫﻮ ﻣ‬
‫ﺘﺠﺎوز‪.‬‬
‫ﺗﻬﺎ‪ .‬ﻫﺬا اﻟﻤﻔﻬﻮمﻳ ﺴﻤﻰ اﻟ‬
‫ﺒﺎ‬
‫ﺘﻄﻠ‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻣ‬‫ﺑﺈﻋﺎدةﺗﻌﺮﻳﻒﺗﻠﻚ اﻟﻄﺮﻳﻘ ﺔ ﻓ ﻲ اﻟﻔﺼﻞ اﻟﻔﺮﻋ ﻲ‬‫ُﻴ ﺴﻤﺢ ﻟﻠﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ‬
‫ﺋﻴ ﺴ ﻲ ‪ ،‬ﻓ‬
‫ﺒﻴﻖ اﻟﻔﺼﻞ اﻟﺮ‬
‫ﺗﻄ‬

‫ﺒﻖ ﻟﻜﻞ ﻣﻦ اﻟﻄﺮق واﻟﻤﻨﺸﺌﺎ ت‪.‬‬


‫ﺒ ﺔ اﻟﻤﻄ‬
‫ﻣﻔﻬﻮم اﻟﻐﻠ‬

‫ﺘﺠﺎوز اﻟﻄﺮﻳﻘ ﺔ‪:‬‬


‫ﺒ ﻲﻟ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫)‪1‬ﻓﺌ ﺔ ‪P: 2) def‬ﺧﺎﺻﻴ ﺔ ‪() 12) c.marry ():‬‬


‫‪Kaif') 9) 10) c = C () 11) c.property‬‬
‫‪5)7)print‬‬
‫‪def marry‬‬ ‫‪(self): 8) print‬‬
‫)'‪('Appalamma‬‬ ‫‪('Katrina‬‬
‫‪6) class‬‬ ‫‪C (P) :‬‬
‫‪+ Cash + Power') 4) def marry (self):‬‬
‫‪(self): 3) print ('Gold + Land‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ذ ﻫ ﺐ ‪+‬أرض ‪+‬ﻧﻘﺪ ‪+‬ﻗﻮة‬

‫ﺗﺮﻳﻨﺎ ﻛﻴﻒ‬
‫ﻛﺎ‬

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ ‪super ().‬‬


‫ﺑﺎﺳ‬ ‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ ﻓﺌ ﺔ اﻷﺻﻞ أ ً‬
‫ﻳﻀﺎ‬ ‫ﻣﻦ ﻃﺮﻳﻘ ﺔﺗﺠﺎوز ﻓﺌ ﺔ اﻟﻄﻔﻞ ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬

‫ﺒﺎﻋ ﺔ‬
‫)‪1‬ﻓﺌ ﺔ )‪P: 2‬ﺧﺎﺻﻴ ﺔ )‪def (self): 3‬ﻃ‬
‫)'‪('Gold + Land + Cash + Power‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪68‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫)( ‪c = C () 12) c.property () 13) c.marry‬‬


‫‪marry‬‬
‫)‪C (P):() 7‬‬
‫‪9) def‬‬
‫‪print‬‬ ‫‪('Katrina‬‬
‫‪marry‬‬ ‫)'‪Kaif‬‬
‫‪(self):‬‬ ‫)‪10) 11‬‬
‫‪8) super‬‬ ‫‪().‬‬
‫‪(self): 5) print ('Appalamma') 6) class‬‬
‫‪4) def marry‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ذ ﻫ ﺐ ‪+‬أرض ‪+‬ﻧﻘﺪ ‪+‬ﻗﻮة‬

‫ﺑﺎﻻﻣﺎ‬
‫أ‬
‫ﺗﺮﻳﻨﺎ ﻛﻴﻒ‬
‫ﻛﺎ‬

‫ﺘﺠﺎوز اﻟﻤﻨﺸ ﺊ‪:‬‬


‫ﺒ ﻲﻟ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫)‪1‬اﻟﻔﺌ ﺔ )( ‪__ (self): 7) 8) 9) c = C‬‬


‫‪3) 4) 5) class C (P): 6) def __init‬‬
‫‪P: 2) def __init‬‬
‫‪print__("Parent‬‬
‫)"‪(self): Constructor‬‬

‫ﺒﺎﻋ ﺔ )"‪("Child Constructor‬‬


‫ﻃ‬

‫اﻹﺧﺮاج‪ :‬ﻣﻨﺸ ﺊ اﻟﻄﻔﻞ‬


‫ﺘﻢﺗﻨﻔﻴﺬُﻣﻨﺸ ﺊ اﻟﻔﺌ ﺔ اﻷﺻﻞ‬
‫ﺘﻮي ﻋﲆُﻣﻨﺸ ﺊ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺜﺎل أﻋﻼه ‪ ،‬إذا ﻛﺎﻧ ﺖ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ ﻻﺗﺤ‬
‫ﻓ ﻲ اﻟﻤ‬

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ ‪super ().‬‬


‫ﺑﺎﺳ‬‫ﺘﺪﻋﺎءُﻣﻨﺸ ﺊ اﻟﺼﻨﻒ اﻷﺻﻞ‬
‫ﻣﻦُﻣ ﺼﻨﱢﻊ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔﻳﻤﻜﻨﻨﺎ اﺳ‬

‫ﺘﺨﺪام ‪super ():‬‬


‫ﺑﺎﺳ‬
‫ﺑـ ‪Parent Class Constructor‬‬‫ﺗﺼﺎل‬
‫ﺒ ﻲ ﻟﻼ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫)‪(Person): 7) def __init __ (self، name، age، eno، esal ): 8‬‬


‫‪name، age): 3) self.name = name 4) 5) 6) class Employee‬‬
‫ﺑﺮ __‪() .‬اﻟﺤﺮف اﻷول __‬
‫‪1) class Person: 2) def __init‬ﺳﻮ‬
‫واﻟﻌﻤﺮ(‬
‫‪__ (self،‬‬
‫)اﻻﺳﻢ‬
‫ﺗ ﻲ =اﻟﻌﻤﺮ‬
‫اﻟﻌﻤﺮ اﻟﺬا‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫‪69‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

self.eno'،=self.eno)
Number: eno 16) ‫ﻋﺮض‬9) 10) 11) 12)
self.esal
('Employee = esal
Age:'، self.age) 15) print ('Employee
13) print ('Employee Name:'، self.name) 14) print
self.esal) 17) 18) e1 = :‫ﺗ ﺐ اﻟﻤﻮﻇﻒ‬
‫ﺒﻊ '(را‬
‫اﻃ‬def (self):
48،872425،26000)
39،872426،36000)19)
21)e1.display
e2.display() ()20) e2 = ('‫اﻟﻤﻮﻇﻒ‬
‫اﻟﻤﻮﻇﻒ‬ Durga،'،
('Sunny'،

| ‫ﺘﺎج‬
‫اﻧ‬
‫ دورﺟﺎ‬:‫اﺳﻢ اﻟﻤﻮﻇﻒ‬
48 :‫ﻋﻤﺮ اﻟﻤﻮﻇﻒ‬
٨٧٢٤٢٥ :‫رﻗﻢ اﻟﻤﻮﻇﻒ‬
26000 :‫ﺗ ﺐ اﻟﻤﻮﻇﻒ‬
‫را‬

‫ ﺻﻨ ﻲ‬:‫اﺳﻢ اﻟﻤﻮﻇﻒ‬
39 :‫ﻋﻤﺮ اﻟﻤﻮﻇﻒ‬
٨٧٢٤٢٦ :‫رﻗﻢ اﻟﻤﻮﻇﻒ‬
36000 :‫ﺗ ﺐ اﻟﻤﻮﻇﻒ‬
‫را‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

70
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺑ ﺲ‬ ‫ُ‬
‫أوو‬
‫اﻟﺠﺰء ‪- 4‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪71‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺟﺪول أﻋﻤﺎل‬

‫)‪1‬ﻃﺮﻳﻘ ﺔ ﻣﺠﺮدة‬
‫)‪2‬ﻓﺌ ﺔ اﻟﻤﻠﺨﺺ‬
‫)‪3‬اﻟﻮاﺟﻬ ﺔ‬
‫)‪4‬اﻷﻋﻀﺎء اﻟﻌﺎم واﻟﺨﺎص واﻟﻤﺤﻤ ﻲ‬
‫)( __ ‪5) __str‬اﻟﻄﺮﻳﻘ ﺔ‬
‫ﺘﻴﻦ )( ‪str‬و )( ‪repr‬‬ ‫ﺑﻴﻦ اﻟﺪاﻟ‬‫)‪6‬اﻟﻔﺮق‬
‫ﺒﻴﻖ اﻟﺨﺪﻣﺎ ت اﻟﻤﺼﺮﻓﻴ ﺔ اﻟﺼﻐﻴﺮة‬
‫ﺗﻄ‬‫)‪7‬‬

‫ﻃﺮﻳﻘ ﺔ ﻣﺠﺮدة‪:‬‬
‫ﺑﺎﻷﺳﺎﻟﻴ ﺐ اﻟﻤﺠﺮدة ‪ ،‬واﻟﻄﺮﻳﻘ ﺔ اﻟﻤﺠﺮدة‬‫ﺑﺈﻣﻜﺎﻧﻨﺎ اﻹﻋﻼن ﻋﻦ ﻃﺮﻳﻘ ﺔ‪.‬ﺗ ﺴﻤﻰ ﻫﺬه اﻷﻧﻮاع ﻣﻦ اﻷﺳﺎﻟﻴ ﺐ‬ ‫ﺑﻌﺾ اﻷﺣﻴﺎن ﻻ ﻧﻌﺮف ﺷﻴ ًﺌﺎ ﻋﻦ اﻟ‬
‫ﺘﻨﻔﻴﺬ ‪ ،‬ﻻﻳﺰال‬ ‫•ﻓ ﻲ‬
‫ﻟﻬﺎﺗﺼﺮﻳﺢ ﻓﻘﻂ وﻟﻜﻦ ﻟﻴ ﺲﺗﻨﻔﻴ ً‬
‫ﺬا‪.‬‬

‫ﺘﺨﺪام‪decorator as dohtemtcartsba‬‬
‫ﺑﺎﺳ‬‫ﺜﻮنﻳﻤﻜﻨﻨﺎ أن ﻧﻌﻠﻦ ﻋﻦ ﻃﺮﻳﻘ ﺔ ﻣﺠﺮدة‬
‫ﺑﻴ‬‫•ﻓ ﻲ‬
‫ﺒﻊ‪.‬‬
‫ﺘ‬‫ﻳ‬

‫_ ‪abstractmethod‬‬

‫ﺗ ﻲ(‪:‬ﺗﻤﺮﻳﺮ‬
‫‪)• def m1‬ذا‬

‫ﺛﻢﻳﺠ ﺐ ﻋﻠﻴﻨﺎ إﻟﺰاﻣ ﻲ‬‫‪•abstractmethod decorator‬ﻣﻮﺟﻮد ﻓ ﻲ وﺣﺪة ‪abc.‬وﻣﻦ‬


‫ﺘﻴﺮاد وﺣﺪة ‪abc ،‬وإﻻ ﻓﺈﻧﻨﺎﺳﻮفﺗﺤﺼﻞ ﻋﲆ ﺧﻄﺄ‪.‬‬
‫اﺳ‬
‫‪• abc‬وﺣﺪة ﻓﺌ ﺔ أﺳﺎﺳﻴ ﺔ ﻣﺠﺮدة‬

‫ﺒﺎر اﻟﺼﻨﻒ ‪def m1 (self): 4) :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬
‫)‪2) abstractmethod 3‬‬

‫ﻳﻤﺮ‬

‫‪NameError:‬اﻻﺳﻢ "‪"abstractmethod‬ﻏﻴﺮ ﻣﺤﺪد‬

‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫*‬
‫)‪1‬ﻣﻦ )‪4) def m1 (self): 5‬‬
‫‪2) class Test: 3) abstractmethod‬‬
‫‪abc import‬‬

‫ﻳﻤﺮ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪72‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫*‬
‫)‪1‬ﻣﻦ ‪3) abstractmethod 4) def‬‬
‫‪abc import 2) class Fruit:‬اﻟﺬوق‬
‫)‪(self): 5‬‬

‫ﻳﻤﺮ‬

‫ﺘﻨﻔﻴﺬ ﻟﻠﻄﺮق اﻟﻤﺠﺮدة ﻟﻠﻔﺌ ﺔ اﻷﺻﻠﻴ ﺔ‪.‬‬


‫ﺒﺮ اﻟﻔﺼﻮل اﻟﻔﺮﻋﻴ ﺔ ﻣ ﺴﺆوﻟ ﺔ ﻋﻦﺗﻮﻓﻴﺮ اﻟ‬
‫ﺘ‬‫ﺗﻌ‬

‫ﻓﺌ ﺔ اﻟﻤﻠﺨﺺ‪:‬‬
‫ﺘﻘﺎق ﻛﻞ ﻓﺌ ﺔ ﻣﺠﺮدة ﻓ ﻲ‬
‫ﺋ ﻲ ﻓﺌﺎ ت ﻣﺠﺮدة‪.‬ﻳﺠ ﺐ اﺷ‬
‫ﺘﻨﻔﻴﺬ اﻟﺠﺰ‬
‫ُﻄﻠﻖ ﻋﲆ ﻫﺬا اﻟﻨﻮع ﻣﻦ ﻓﺌﺎ ت اﻟ‬
‫ﺘﻤﻞﺗﻨﻔﻴﺬ ﻓﺌ ﺔ ﻣﺎ ‪،‬ﻳ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن ﻻﻳﻜ‬‫ﻓﻲ‬
‫‪Python‬ﻣﻦ ﻓﺌ ﺔ ‪ABC‬اﻟﻤﻮﺟﻮدة ﻓ ﻲ وﺣﺪة ‪abc.‬‬

‫ﺣﺎﻟ ﺔ ‪1:‬‬

‫*‬
‫)‪1‬ﻣﻦ )( ‪pass 4) 5) t = Test‬‬
‫)‪import 2) class Test: 3‬‬
‫‪abc‬‬

‫ﺘﻮي ﻋﲆ أي ﻃﺮﻳﻘ ﺔ ﻣﺠﺮدة‪.‬‬


‫ﺒﺎر ‪b'z ،‬و ﻫ ﻲ ﻓﺌ ﺔ ﻣﺤﺪدة وﻻﺗﺤ‬
‫ﺘ‬‫ﻓ ﻲ اﻟﻜﻮد أﻋﻼه ‪،‬ﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ ﻟﻔﺌ ﺔ اﻻﺧ‬

‫اﻟﺤﺎﻟ ﺔ ‪2:‬‬

‫*‬
‫)‪1‬ﻣﻦ )( ‪pass 4) 5) t = Test‬‬
‫)‪2) class Test (ABC): 3‬‬
‫‪abc import‬‬

‫ﺘﻮي ‪b'z‬ﻋﲆ أي ﻃﺮﻳﻘ ﺔ ﻣﺠﺮدة‪.‬‬


‫ﺘﻖ ﻣﻦ ﻓﺌ ﺔ ‪ABC ،‬ﻻﻳﺤ‬
‫ﺘﻰ أﻧﻪ ﻣﺸ‬
‫ﻓ ﻲ اﻟﻜﻮد أﻋﻼهﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ ‪ ،‬ﺣ‬

‫اﻟﺤﺎﻟ ﺔ ‪3:‬‬

‫*‬
‫)‪1‬ﻣﻦ )‪4) def m1 (self): 5‬‬
‫‪Test (ABC): 3) abstractmethod‬‬
‫‪abc import 2) class‬‬

‫ﻳﻤﺮ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪73‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎر‬
‫ﺘ‬‫)‪6) 7‬ر =اﺧ‬
‫)(‬

‫ﺘﺨﺪام أﺳﺎﻟﻴ ﺐ ﻣﺠﺮدة ‪m1‬‬


‫ﺑﺎﺳ‬‫ﺒﺎر ﻓﺌ ﺔ ﻣﺠﺮدة‬
‫ﺘ‬‫ﺜﻴﻞ اﺧ‬
‫‪TypeError:‬ﻻﻳﻤﻜﻦ إﻧﺸﺎء ﻣ‬

‫اﻟﺤﺎﻟ ﺔ ‪4:‬‬

‫*‬
‫)‪1‬ﻣﻦ )( ‪5) pass 6) 7) t = Test‬‬
‫‪abstractmethod 4) def m1 (self):‬‬
‫)‪abc import 2) class Test: 3‬‬

‫ﺘﻮﺳﻴﻊ ﻓﺌ ﺔ ‪ABC.‬‬
‫ﺑ‬‫ﺘﻮي ﻋﲆ ﻃﺮﻳﻘ ﺔ ﻣﺠﺮدة ‪b'z‬ﻧﺤﻦ ﻻ ﻧﻘﻮم‬
‫ﺘﻰ ﻓﺌ ﺔﺗﺤ‬
‫ﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ ﺣ‬

‫اﻟﺤﺎﻟ ﺔ ‪5:‬‬

‫*‬
‫)‪1‬ﻣﻦ )( ‪6) 7) t = Test () 8) t.m1‬‬
‫)'‪4) def m1 (self): 5) print ('Hello‬‬
‫‪2) class Test: 3) abstractmethod‬‬
‫‪abc import‬‬

‫ﺒﺎ‬
‫اﻹﺧﺮاج‪ :‬ﻣﺮﺣ ً‬

‫ﺜﻴﻞ ﻣﻤﻜﻨًﺎ‪.‬‬
‫ﺘﻮﺳﻴﻊ ﻓﺌ ﺔ ‪ABC ،‬ﻓﻠﻦﻳﻜﻮن إﻧﺸﺎء ﻣ‬
‫ﺑ‬‫ﺘﻮى اﻟﻔﺼﻞ ﻋﲆ ﻃﺮﻳﻘ ﺔ ﻣﺠﺮدة واﺣﺪة ﻋﲆ اﻷﻗﻞ وإذا ﻛﻨﺎ ﻧﻘﻮم‬
‫اﻟﺨﻼﺻ ﺔ‪ :‬إذا اﺣ‬

‫ﺜﻴﻞ أﺳﻠﻮ ب ﻣﺠﺮدة ﻏﻴﺮ ﻣﻤﻜﻦ"‬


‫"ﻓﺌ ﺔ ﻣﺠﺮدة ﻣﻊ إﻧﺸﺎء ﻣ‬

‫ﺜﻴﻞ ﻓﺌ ﺔ اﻟﻄﻔﻞ‪ .‬إذا ﻟﻢ ﻧﻨﺸ ﺊ ﻛﺎﺋﻦ ﻓﺌ ﺔ ﻓﺮﻋﻴ ﺔ ﻓﻠﻦ‬


‫ﻳﺠ ﺐﺗﻨﻔﻴﺬ اﻷﺳﺎﻟﻴ ﺐ اﻟﻤﺠﺮدة ﻟﻔﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ ﻓ ﻲ اﻟﻔﺼﻮل اﻟﻔﺮﻋﻴ ﺔ‪ .‬ﺧﻼف ذﻟﻚ ﻻﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻣ‬
‫ﻧﺤﺼﻞ ﻋﻠﻴﻪ‬
‫أي ﺧﻄﺄ‪.‬‬

‫ﺣﺎﻟ ﺔ ‪1:‬‬

‫*‬
‫)‪1‬ﻣﻦ ‪(ABC): 3) abstractmethod‬‬
‫‪abc import 2) class Vehicle‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪74‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺗ ﻲ(‪5) 6) :‬‬
‫‪)4) def noofwheels‬ذا‬
‫ﻳﻤﺮ‬

‫ﺒ ﺔ(‪:‬ﺗﻤﺮ‬
‫)‪7‬ﺣﺎﻓﻼ ت ﻓﺌ ﺔ )ﻣﺮﻛ‬

‫إﻧﻪ ﺻﺎﻟﺢﻷﻧﻨﺎ ﻻ ﻧﻨﺸ ﺊ ﻛﺎﺋﻦ ﻓﺌ ﺔ ﻓﺮﻋﻴ ﺔ‪.‬‬

‫اﻟﺤﺎﻟ ﺔ ‪2:‬‬
‫*‬
‫)‪1‬ﻣﻦ )( ‪(Vehicle): pass 8) b = Bus‬‬
‫‪noofwheels (self): 5) 6) 7) class Bus‬‬
‫‪(ABC): 3) abstractmethod 4) def‬‬
‫‪abc import 2) class Vehicle‬‬
‫ﻳﻤﺮ‬

‫ﺜﻴﻞ ﻓﺌ ﺔ ﻣﺠﺮدة ‪Bus‬ﻣﻊ ‪noofwheels‬اﻷﺳﺎﻟﻴ ﺐ اﻟﻤﺠﺮدة‬


‫‪TypeError:‬ﻻﻳﻤﻜﻦ إﻧﺸﺎء ﻣ‬

‫ﺑﻬﺎ ‪ ،‬ﻓﺈن اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔﺗﻜﻮن أ ً‬


‫ﻳﻀﺎ ﻣﺠﺮدة وﻻﻳﻤﻜﻦ إﻧﺸﺎء‬ ‫ﺘﺠﺎوز اﻟﻄﺮﻳﻘ ﺔ اﻟﻤﺠﺮدة اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻮﺳﻴﻊ ﻓﺌ ﺔ ‪abstract‬وﻟﻢ ﻧ‬
‫ﺑ‬‫ﻣﻼﺣﻈ ﺔ‪ :‬إذا ﻗﻤﻨﺎ‬
‫ﺜﻴﻞ ﻟﻬﺎ‪.‬‬
‫ﻣ‬

‫*‬
‫)‪1‬ﻣﻦ ) ‪noofwheels (self): 9) 10) 11‬‬
‫‪5) 6) 7) class Bus (Vehicle): 8) def‬‬
‫‪4) def noofwheels (self):‬‬
‫‪Vehicle (ABC): 3) abstractmethod‬‬
‫ﺒ ﺔ(‪:‬‬
‫اﻟﻔﺌ ﺔ ‪)Auto‬ﻣﺮﻛ‬
‫‪abc import 2) class‬ﻳﻤﺮ‬
‫‪() 18) print (a.noofwheels ()) # 3‬‬
‫‪(b.noofwheels ()) # 7 16) 17) a = Auto‬‬
‫‪13) return 3 14) b = Bus () 15) print‬‬
‫اﻟﻌﻮدة ‪7‬‬
‫‪12) def‬‬ ‫‪noofwheels (self):‬‬

‫ﺘﻮي ﻓﺌ ﺔ اﻟﻤﻠﺨﺺ ﻋﲆ ﻛﻞ ﻣﻦ اﻟﻄﺮق اﻟﻤﺠﺮدة وﻏﻴﺮ اﻟﻤﺠﺮدة أ ً‬


‫ﻳﻀﺎ‪.‬‬ ‫ﻣﻼﺣﻈ ﺔ‪:‬ﻳﻤﻜﻦ أنﺗﺤ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪75‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

:‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫واﺟﻬﺎ ت ﻓ ﻲ‬
.‫ﺒﺮ واﺟﻬ ﺔ‬
‫ﺘ‬‫ ﻓﺈن ﻫﺬا اﻟﻨﻮع ﻣﻦ ﻓﺌ ﺔ اﻟﻤﻠﺨﺺﻳﻌ‬، ‫ﺘﻮ ت ﻓﺌ ﺔ ﻣﺠﺮدة ﻋﲆ ﻃﺮق ﻣﺠﺮدة ﻓﻘﻂ‬
‫ إذا اﺣ‬، ‫ﺑﺸﻜﻞ ﻋﺎم‬

*
(ABC): 3) abstractmethod 4) def connect (self): pass 5) ‫ﻣﻦ‬1)
abc import 2) class DBInterface

connect (self): 11) print ('Connecting to Oracle Database ...') 12) def
7) def disconnect (self): pass 8) 9) class Oracle (DBInterface): 10) def
22) classname = globals () [dbname] 23) x = ‫ﻓﺼﻞ‬6) abstractmethod
Sybase Database ...') 20) 21) dbname = input ('Enter Database Name:')
Database ...') 18 ) def disconnect (self): 19) print ('Disconnecting to
(DBInterface): 16) def connect
13) print ('Disconnecting (self):Database
to Oracle 17) print ...')
('Connecting to Sybase
14) 15) class
() 24) x.connect () 25) x.disconnect () ‫ (اﺳﻢ اﻟﻔﺌ ﺔ‬self):

\ durga_classes> py test.py :‫د‬


Oracle :‫ﺒﻴﺎﻧﺎ ت‬
‫أدﺧﻞ اﺳﻢ ﻗﺎﻋﺪة اﻟ‬

Oracle ... ‫ﺑﻴﺎﻧﺎ ت‬‫ﺑﻘﺎﻋﺪة‬‫ﺗﺼﺎل‬


‫ﺟﺎري اﻻ‬
Oracle ... ‫ﺑﻴﺎﻧﺎ ت‬‫ﺑﻘﺎﻋﺪة‬‫ﺗﺼﺎل‬
‫ﺟﺎري ﻗﻄﻊ اﻻ‬

\ durga_classes> py test.py :‫د‬


Sybase :‫ﺒﻴﺎﻧﺎ ت‬
‫أدﺧﻞ اﺳﻢ ﻗﺎﻋﺪة اﻟ‬
Sybase ... ‫ﺑﻴﺎﻧﺎ ت‬‫ﺑﻘﺎﻋﺪة‬‫ﺗﺼﺎل‬
‫ﺟﺎري اﻻ‬
Sybase ... ‫ﺑﻴﺎﻧﺎ ت‬‫ﺑﻘﺎﻋﺪة‬‫ﺗﺼﺎل‬
‫ﺟﺎري ﻗﻄﻊ اﻻ‬

.‫ﺗﻌﻴﺪ اﺳﻢ اﻟﻔﺌ ﺔ‬


‫'إﱃ اﺳﻢ ﻓﺌ ﺔ و‬str' ‫ﺗﺤﻮل اﻟ ﺴﻠ ﺴﻠ ﺔ‬
globals () [str] ‫ اﻟﺪاﻟ ﺔ اﻟﻤﻀﻤﻨ ﺔ‬:‫ﻣﻼﺣﻈ ﺔ‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

76
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

‫ﻗﺮاءة اﺳﻢ اﻟﻔﺼﻞ ﻣﻦ اﻟﻤﻠﻒ‬-2: ‫ﺒ ﻲ‬


‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

config.txt
‫ﺑ ﺴﻮن‬
‫إ‬

test.py

*
(ABC): 3) abstractmethod 4) def printit (self، text): pass 5) ‫ﻣﻦ‬1)
abc import 2) class Printer

printit (self، text): 11) print ('Printing from EPSON Printer ...') 12)
7) def disconnect (self): pass 8) 9) class EPSON (Printer): 10) def
13) def disconnect (self): 14) print (‫ﺒﺎﻋ ﺔ )ﻧﺺ‬
‫ﻃ‬6) abstractmethod
HP (Printer): 17) def printit (self، text): 18) print ‫ﺒﺎﻋ ﺔ ﻋﲆ‬
‫ﺗﻢ اﻟﻄ‬
")
HP ...") 19) ‫ﺑﻌ ﺔ‬
‫ﺒﺎﻋ ﺔ ﻣﻦ ﻃﺎ‬
‫) "اﻟﻄ‬EPSON Printer ...") 15) 16) class
() ‫ﻋﲆ‬
28) ‫ﺔ‬x.printit
‫ﺒﺎﻋ‬
‫ﺘﻤﻠ'(ﺖ اﻟﻄ‬
‫)"اﻛﻛـ‬ ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬21) '،'
("config.txt :(‫ﻲ‬r ‫ﺗ‬
')‫ﺘﺢ)ذا‬
‫ﺗﺼﺎل‬
‫اﻻﻣﻊ ﻓ‬
HP‫ﻗﻄﻊ‬ 20)
...") 22)(‫)ﻧﺺ‬
23) ‫ﺒﺎﻋ ﺔ‬
‫ﺑﻌ‬ ‫ﻃ‬
‫ﻃﺎ‬
() 25) 26)() classname
x.disconnect .. .‫ﺘﻬﺎ‬ ‫ﻳﺠ=ﺐ ﻃ‬
‫ﺒﺎﻋ‬ globals ‫ﺬه)(اﻟ‬
‫ﺒﻴﺎﻧﺎ ت‬ [pname] 27) x ==classname
‫ ﻫ‬f: 24) pname f.readline
') 29)

:‫ﺘﺎج‬
‫اﻧ‬
EPSON ... ‫ﺑﻌ ﺔ‬
‫ﺒﺎﻋ ﺔ ﻣﻦ ﻃﺎ‬
‫اﻟﻄ‬
... ‫ﺒﻴﺎﻧﺎ ت‬
‫ﺒﺎﻋ ﺔ ﻫﺬه اﻟ‬
‫ﻳﺠ ﺐ ﻃ‬
EPSON ... ‫ﺑﻌ ﺔ‬
‫ﺒﺎﻋ ﺔ ﻋﲆ ﻃﺎ‬
‫ﺘﻤﻠ ﺖ اﻟﻄ‬
‫اﻛ‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

77
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﻓﺌ ﺔ ‪Concreate vs Abstract Class vs Inteface:‬‬


‫ﺒﺎ ت‬
‫ﺘﻄﻠ‬
‫ﺘﻨﻔﻴﺬ ﻓﻘﻂ ﻓﻠﺪﻳﻨﺎ ﻣ‬
‫)‪1‬إذا ﻟﻢ ﻧﻜﻦ ﻧﻌﺮف أي ﺷ ﻲء ﻋﻦ اﻟ‬
‫ﺛﻢﻳﺠ ﺐ أن ﻧﺬ ﻫ ﺐ ﻟﻠﻮاﺟﻬ ﺔ‪.‬‬
‫ﺒﺪأ‬
‫ﺑﺸﻜﻞ ﻛﺎﻣﻞ ﻓﻌﻠﻴﻨﺎ أن ﻧ‬‫ﺘﻨﻔﻴﺬ وﻟﻜﻦ ﻟﻴ ﺲ‬
‫ﺘﺤﺪ ث ﻋﻦ اﻟ‬
‫)‪2‬إذا ﻛﻨﺎ ﻧ‬
‫ﺋ ًﻴﺎ(‪.‬‬
‫ﺒﻘ ﺔ ﺟﺰ‬
‫ﻓﺌ ﺔ ﻣﺠﺮدة‪) .‬ﻓﺌ ﺔ ﻣﻄ‬
‫ﺘﻘﺪﻳﻢ اﻟﺨﺪﻣ ﺔ إذن‬
‫ﺑﺸﻜﻞ ﻛﺎﻣﻞ وﺟﺎ ﻫﺰ ﻟ‬‫ﺘﻨﻔﻴﺬ‬
‫ﺘﺤﺪ ث ﻋﻦ اﻟ‬
‫)‪3‬إذا ﻛﻨﺎ ﻧ‬
‫ﻳﺠ ﺐ أن ﻧﺬ ﻫ ﺐ إﱃ ﻓﺌ ﺔ ﻣﻠﻤﻮﺳ ﺔ‪.‬‬

‫*‬
‫ﺘﻴﺮاد ‪pass 7) abstractmethod 8) def m3 (self) :‬‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪4) def m1 (self): pass 5) abstractmethod 6) def m2 (self):‬‬
‫‪2) class CollegeAutomation (ABC): 3) abstractmethod‬‬
‫ﺘﻴﺎز ‪10) def m1 (self): 11) print ('m1 method‬‬
‫‪abc‬اﺟ‬
‫ﺗﻨﻔﻴﺬ'( ‪('m2 method‬‬
‫‪9) class AbsCls (CollegeAutomation):‬‬
‫ﺗﻨﻔﻴﺬ'( )‪14) 15‬ﻓﺌ ﺔ )( ‪ .m3‬ج )‪() 22‬‬
‫‪12) def m2 (self): 13) print‬‬
‫‪18) 19) c = ConcreteCls () 20) c.m1 () 21) c.m2‬‬
‫)'‪def m3 (self): 17) print ('m3 method implemnentation‬‬
‫)‪ConcreteCls (AbsCls): 16‬‬

‫اﻟ ﺴﻤﺎ ت اﻟﻌﺎﻣ ﺔ واﻟﻤﺤﻤﻴ ﺔ واﻟﺨﺎﺻ ﺔ‪:‬‬


‫ﺘﺮاﺿ ﻲ ‪،‬ﺗﻜﻮن ﻛﻞﺳﻤ ﺔ ﻋﺎﻣ ﺔ‪.‬ﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل ﻣﻦ أي ﻣﻜﺎنﺳﻮاء داﺧﻞ اﻟﻔﺼﻞ أو ﻣﻦ ﺧﺎرج اﻟﻔﺼﻞ‪.‬‬
‫ﺑﺸﻜﻞ اﻓ‬

‫ﺜﺎل‪ :‬اﻻﺳﻢ ="دورﺟﺎ"‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﻳﻤﻜﻦ اﻟﻮﺻﻮل إﱃ اﻟ ﺴﻤﺎ ت اﻟﻤﺤﻤﻴ ﺔ داﺧﻞ اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ ﻓ ﻲ أي ﻣﻜﺎن وﻟﻜﻦ ﻣﻦ ﺧﺎرج اﻟﻔﺼﻞ ﻓﻘﻂ ﻓ ﻲ اﻟﻔﺼﻮل اﻟﻔﺮﻋﻴ ﺔ‪.‬ﻳﻤﻜﻨﻨﺎﺗﺤﺪﻳﺪﺳﻤ ﺔ ﻋﲆ‬
‫ﺑﺎﻟﺮﻣﺰ‪.‬‬‫ﺒﻘ ﺔ‬
‫ﺘﻬﻴﺌ ﺔ اﻟﻤ ﺴ‬ ‫_‬
‫أﻧﻬﺎ ﻣﺤﻤﻴ ﺔ ﻋﻦ ﻃﺮﻳﻖ اﻟ‬

‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪_variablename = :‬اﻟﻘﻴﻤ ﺔ‬

‫ﺜﺎل‪_name = 'durga' :‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬


‫اﻟ‬

‫‪78‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻞ ﻫ ﻲ ﻣﺠﺮد اﺻﻄﻼح وﻓ ﻲ اﻟﻮاﻗﻊ ﻻﺗﻮﺟﺪ ﺻﻔﺎ ت ﻣﺤﻤﻴ ﺔ‪.‬‬

‫ﺑﺸﻜﻞ‬‫ﺘﻐﻴﺮ ﺧﺎص‬
‫ﻳﻤﻜﻦ اﻟﻮﺻﻮل إﱃ اﻟ ﺴﻤﺎ ت اﻟﺨﺎﺻ ﺔ ﻓﻘﻂ داﺧﻞ ‪class.ie‬ﻣﻦ ﺧﺎرج اﻟﻔﺼﻞ اﻟﺬي ﻻﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﻟﻴﻪ‪.‬ﻳﻤﻜﻨﻨﺎ أن ﻧﻌﻠﻦ أن اﻟﻤ‬
‫ﺑﺮﻣﺰﻳﻦ ﺷﺮﻃ ﺔﺳﻔﻠﻴ ﺔ‪.‬‬‫ﺑﺎدﺋ ﺔ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺻﺮﻳﺢ ﻋﻦ ﻃﺮﻳﻖ ﻛ‬

‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪__variablename = :‬اﻟﻘﻴﻤ ﺔ‬

‫ﺜﺎل‪__name = 'durga' :‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫)‪(Test._y) 14) print (Test .__ z‬‬


‫‪12) print (Test.x) 13) print‬‬
‫)( ‪9) 10) t = Test () 11) t.m1‬‬
‫)‪(Test._y) 8) print (Test. __z‬‬
‫‪6) print (Test.x) 7) print‬‬
‫‪4) __z‬‬ ‫‪= 30‬‬
‫‪Test:‬‬ ‫‪2) x5)=def‬‬ ‫‪m1_y(self):‬‬
‫)‪10 3‬‬ ‫‪= 20‬‬
‫‪1) class‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫‪10‬‬
‫‪20‬‬
‫‪30‬‬
‫‪10‬‬
‫‪20‬‬
‫‪)Traceback‬أﺣﺪ ث ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬
‫ﻣﻠﻒ ‪"test.py" ،‬اﻟ ﺴﻄﺮ ‪14 ،‬ﻓ ﻲ >‪<module‬‬
‫ﺒﺎر ‪z) __.‬‬
‫ﺘ‬‫ﺒﺎﻋ ﺔ )اﺧ‬
‫ﻃ‬
‫ﺒﺎر" ﻟﻴ ﺲ ﻟﻪﺳﻤ ﺔ "‪"__z‬‬
‫ﺘ‬‫‪AttributeError:‬ﻧﻮع اﻟﻜﺎﺋﻦ "اﺧ‬

‫ﺘﻐﻴﺮا ت اﻟﺨﺎﺻ ﺔ ﻣﻦ ﺧﺎرج اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ‪:‬‬


‫ﻛﻴﻔﻴ ﺔ اﻟﻮﺻﻮل إﱃ اﻟﻤ‬

‫ﺒﺎﺷﺮة ﻣﻦ ﺧﺎرج اﻟﻔﺼﻞ‪.‬‬


‫ﺘﻐﻴﺮا ت اﻟﺨﺎﺻ ﺔ ﻣ‬
‫ﻻﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ اﻟﻤ‬
‫‪object._classname__variablename‬‬
‫ﺘﺎﻟ ﻲ‬
‫ﺒﺎﺷﺮ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫ﺑﺸﻜﻞ ﻏﻴﺮ ﻣ‬ ‫ﻣﺮﺟﻊ‬
‫ﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل‬‫ﻟﻜﻦ‬

‫ﺒﺎر اﻟﻔﺌ ﺔ ‪2) def __init __ (self): 3) self .__ x = 10 4) :‬‬


‫ﺘ‬‫)‪1‬اﺧ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪79‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫‪5) t = Test () 6) print (t._Test__x) # 10‬‬

‫ﻃﺮﻳﻘ ﺔ ‪__str __ ():‬‬


‫ﺘﺎﻟ ﻲ‬
‫ﺘﻨ ﺴﻴﻖ اﻟ‬
‫ﺑﺎﻟ‬‫ﺑﺈرﺟﺎعﺳﻠ ﺴﻠ ﺔ‬‫ﺘ ﻲﺗﻘﻮم‬
‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ )( __ ‪__str‬واﻟ‬
‫ﺘﻢ اﺳ‬
‫ﺒﺎﻋ ﺔ أي ﻣﺮﺟﻊ ﻛﺎﺋﻦ داﺧﻠ ًﻴﺎ ‪،‬ﺳﻴ‬
‫ﺑﻄ‬‫•ﻓ ﻲ أي وﻗ ﺖ ﻧﻘﻮم ﻓﻴﻪ‬
‫>‪<__ main __. classname object at 0x022144B0‬‬

‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﺠﺎوز ﻃﺮﻳﻘ ﺔ ‪__str __ ().‬‬


‫ﺜﻴﻞﺳﻠ ﺴﻠ ﺔ ذي ﻣﻌﻨﻰ ‪،‬ﻳ‬
‫•ﻹرﺟﺎعﺗﻤ‬

‫)‪= Student ('Ravi'، 102) 11) print (s1) 12) print (s2‬‬
‫‪(self): 7) 8) 9) s1 = Student ('Durga'، 101) 10) s2‬‬
‫‪rollno):‬‬
‫‪1) class‬‬
‫‪3) self.name‬‬
‫)‪Student: 2‬‬
‫‪= name‬‬
‫‪def __init‬‬
‫‪4) 5)__6)(self،‬‬
‫‪def __str‬‬
‫‪name،‬‬
‫__‬
‫‪self.rollno = rollno‬‬

‫إرﺟﺎع )‪'This is Student with Name: {} and Rollno: {}'. format (self.name، self.rollno‬‬

‫اﻹﺧﺮاج دونﺗﺠﺎوز ‪str ():‬‬


‫‪<__ main __.‬ﻛﺎﺋﻦ اﻟﻄﺎﻟ ﺐ ﻋﻨﺪ >‪0x022144B0‬‬
‫‪<__ main __.‬ﻛﺎﺋﻦ اﻟﻄﺎﻟ ﺐ ﻋﻨﺪ >‪0x022144D0‬‬

‫ﺘﺠﺎوز ‪():‬‬
‫اﻹﺧﺮاج ﻣﻊ اﻟ‬
‫ﺑﺎﻻﺳﻢ‪ :‬دورﺟﺎ وروﻟﻨﻮ‪101 :‬‬‫ﻫﺬا ﻃﺎﻟ ﺐ‬
‫ﺑﺎﻻﺳﻢ‪ :‬راﻓ ﻲ وروﻟﻨﻮ‪102 :‬‬‫ﻫﺬا ﻃﺎﻟ ﺐ‬

‫ﺑﻴﻦ )( ‪str‬و )( ‪repr‬‬‫اﻟﻔﺮق‬


‫أو‬

‫ﺑﻴﻦ )( __ ‪__str‬و )( __ ‪__repr‬‬‫اﻟﻔﺮق‬


‫ﺘﺎﻟ ﻲ ﻓﺈن وﻇﻴﻔ ﺔ ﻛﻠﻴﻬﻤﺎ ﻫ ﻲ ﻧﻔ ﺴﻬﺎ‪.‬‬
‫ﺑﺎﻟ‬
‫ﺘﺪﻋ ﻲ )( ‪• str‬داﺧﻠ ًﻴﺎ وﻇﻴﻔ ﺔ )( __ ‪__str‬و‬
‫ﺗﺴ‬

‫ﺘﺎﻟ ﻲ وﻇﻴﻔ ﺔ ﻛﻼ ﻫﻤﺎ‬


‫ﺑﺎﻟ‬
‫ﺘﺪﻋ ﻲ )( ‪repr‬داﺧﻠ ًﻴﺎ وﻇﻴﻔ ﺔ )( __ ‪__repr‬و‬
‫ﺜﻞ ‪،‬ﻳ ﺴ‬
‫ﺑﺎﻟﻤ‬
‫•و‬
‫ﻧﻔ ﺲ‪.‬‬

‫ﺒﺎﻋ ﺔ‪.‬‬
‫ﺜﻴﻞ ﺟﻴﺪ ﻟﻠﻄ‬
‫ﺘﻮي ﻋﲆ ﻛﺎﺋﻦﺗﻤ‬
‫ﺗﻌﻴﺪﺳﻠ ﺴﻠ ﺔﺗﺤ‬
‫)( ‪• str‬‬

‫ﺘﻴﺠ ﺔ إﱃ اﻟﻜﺎﺋﻦ اﻷﺻﻠ ﻲ‪.‬‬


‫ﺋﻴ ﺴ ﻲ ﻣﻦ )( ‪ str‬ﻫﻮﺳﻬﻮﻟ ﺔ اﻟﻘﺮاءة ‪ ،‬وﻗﺪ ﻻﻳﻜﻮن ﻣﻦ اﻟﻤﻤﻜﻦﺗﺤﻮﻳﻞﺳﻠ ﺴﻠ ﺔ اﻟﻨ‬
‫•اﻟﻐﺮض اﻟﺮ‬

‫‪80‬‬
‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎرﻳﺦ واﻟﻮﻗ ﺖ ‪.‬‬


‫ﺘﺎرﻳﺦ واﻟﻮﻗ ﺖ ) ‪2‬اﻟﻴﻮم =اﻟ‬
‫ﺘﻴﺮاد اﻟ‬
‫) ‪1‬اﺳ‬

‫‪D: \ durgaclasses> py test.py‬‬


‫‪2018-05-18 22: 48: 19.890888‬‬

‫‪)Traceback‬أﺣﺪ ث ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬


‫ﻣﻠﻒ ‪"test.py" ،‬اﻟ ﺴﻄﺮ ‪5 ،‬ﻓ ﻲ >‪<module‬‬
‫‪d = Eval (s) #converting str‬ﻛﺎﺋﻦ إﱃﺗﺎرﻳﺦ ووﻗ ﺖ‬
‫ﻣﻠﻒ ‪"<string>" ،‬اﻟ ﺴﻄﺮ اﻷول‬
‫‪2018-05-18 22: 48: 19.890888‬‬
‫^‬

‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪ :‬رﻣﺰ ﻣﻤﻴﺰ ﻏﻴﺮ ﺻﺎﻟﺢ‬‫ﺧﻄﺄ ﻓ ﻲ‬

‫ﺒﺎﻋ ﺔ ﻟﻠﻜﺎﺋﻦ‪.‬‬
‫ﺑﻞ ﻟﻠﻄ‬
‫ﺜﻴﻞ ﻗﺎ‬
‫ﺘﻮي ﻋﲆﺗﻤ‬
‫ﻟﻜﻦ )( ‪repr‬ﻳﻌﻴﺪﺳﻠ ﺴﻠ ﺔﺗﺤ‬
‫ﺘ ﻲ ﻗﺪ ﻻﺗﻜﻮن ﻣﻤﻜﻨ ﺔ ﻓ ﻲ داﻟ ﺔ ‪().‬‬
‫ﺘﺨﺪام وﻇﻴﻔ ﺔ ‪Eval () ،‬واﻟ‬
‫ﺑﺎﺳ‬‫ﺘﻴﺠ ﺔ إﱃ ﻛﺎﺋﻦ أﺻﻠ ﻲ‬
‫ﺋﻴ ﺴ ﻲ ﻣﻦ )( ‪ repr‬ﻫﻮ واﺿﺢ‪.‬ﻳﻤﻜﻨﻨﺎﺗﺤﻮﻳﻞﺳﻠ ﺴﻠ ﺔ اﻟﻨ‬
‫اﻟﻬﺪف اﻟﺮ‬
‫‪str‬‬

‫ﺘﺎرﻳﺦ واﻟﻮﻗ ﺖ )‪2‬اﻟﻴﻮم ) ‪(s) #converting str object to datetime 6‬‬


‫ﺘﻴﺮاد اﻟ‬
‫)‪1‬اﺳ‬
‫‪repr (today) #converting datetime object to str 4) print (s) 5) d = Eval‬‬
‫ﺒﺎﻋ ﺔ )د(‬
‫= ‪= datetime.datetime.now () 3) s‬ﻃ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫)‪datetime.datetime (2018، 5، 18، 22، 51، 10، 875838‬‬
‫‪2018-05-18 22: 51: 10.875838‬‬

‫ﺑﺪﻻ ﻣﻦ )( ‪str‬‬
‫ﺘﺨﺪام )( ‪repr‬‬
‫ﺑﺎﺳ‬‫ﻣﻼﺣﻈ ﺔ‪:‬ﻳﻮﺻﻰ‬

‫ﺒﻴﻖ ﻣﺼﺮﻓ ﻲ‬
‫ﻣﺸﺮوع ﺻﻐﻴﺮ‪:‬ﺗﻄ‬

‫)‪1‬ﺣ ﺴﺎ ب اﻟﻔﺌ ﺔ ‪5) 6) 7) def Deposit (self، amount): 8) self.balance + = :‬‬


‫)‪__init __ (self، name، Balance، min_balance): 3) self.name = name 4‬‬
‫ﺒﻠﻎ(‪:‬‬
‫ﺗ ﻲ ‪ ،‬اﻟﻤ‬
‫ﺒﻠﻎ )‪9) 10‬ﺳﺤ ﺐ ﻧﻘﺎط )ذا‬
‫‪2) def‬اﻟﻤ‬
‫ﺗ ﻲ ‪= min_balance‬‬
‫ﺘﻮازن اﻟﺬا‬
‫= ‪self.balance‬اﻟ‬

‫‪min_balance‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫‪81‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

18) 19) class Current if(Account):


self.balance-20) def __init
amount> __ (self، name)
= self.min_balance:

printStatement (self): :‫آﺧﺮ‬


17)‫ﺒﻠﻎ‬
print ("Account
‫ﻣ‬self.balance -= Balance:"، self.balance)
27) super () .__ init __ :(‫ اﻟﺮﺻﻴﺪ‬، ‫اﻻﺳﻢ‬11) 12) 13) 14) 15) 16) def
class Savings (Account): 26) def‫__ﻏﻴﺮ‬init
("‫ﻛﺎﻓﻴ ﺔ‬ ‫ أﻣﻮال‬،__ (self،
‫ﺬرة‬ name،
‫ﺒﺎﻋ ﺔ )"ﻣﻌ‬
‫ﻃ‬ Balance):
() 35 ) c. ، ‫ اﻟﺮﺻﻴﺪ‬، ‫)اﻻﺳﻢ‬21) 22) def __str __ (self): 23) 24) 25)
10000) 32) print (c) 33) c.deposit (5000) 34) c.printStatement
41) =print
0) 28) def
(c2) 42__str __ (self): 29)
) c2.withdraw 30) 31)43)
(27000) c =‫ﺐ‬
Savings ("Durga"،
‫ﺳﺤ‬min_balance
(c) 38) 39) c2 = Current ('Ravi'، 20000) 40) c2.deposit (6000)
(c2) ‫ﺒﺎﻋ ﺔ‬
‫(ﻃ‬16000) 36) c.withdraw (15000) 37) print

= 1000) ‫ﺘﻮازن‬
‫ اﻟﺤﺪ اﻷدﻧﻰ ﻟﻠ‬، ‫ اﻟﺮﺻﻴﺪ‬، ‫)اﻻﺳﻢ‬super () .__ init __

(self.name ، self.balance) ‫ﺗﻨ ﺴﻴﻖ‬


{}". : ‫ﺑﺎﻟﺮﺻﻴﺪ‬
"{} ‫إرﺟﺎع اﻟﺤ ﺴﺎ ب اﻟﺠﺎري ﻟـ‬

(self.name ، self.balance) ‫ﺗﻨ ﺴﻴﻖ‬


{}". : ‫ﺑﺮﺻﻴﺪ‬
"{} ‫ﺘﻮﻓﻴﺮ‬
‫إرﺟﺎع ﺣ ﺴﺎ ب اﻟ‬

:‫ﺘﺎج‬
‫اﻧ‬
D: \ durgaclasses> py test.py
10000 :‫ﺑﺮﺻﻴﺪ‬‫ﺣ ﺴﺎ بﺗﻮﻓﻴﺮ دورﺟﺎ‬
15000 :‫رﺻﻴﺪ اﻟﺤ ﺴﺎ ب‬

‫ أﻣﻮال ﻏﻴﺮ ﻛﺎﻓﻴ ﺔ‬، ‫ﻋﺬرا‬

0 :‫ﺑﺮﺻﻴﺪ‬‫ﺣ ﺴﺎ بﺗﻮﻓﻴﺮ دورﺟﺎ‬


26000 :‫ﺑﺮﺻﻴﺪ‬‫ﺣ ﺴﺎ ب راﻓ ﻲ اﻟﺠﺎري‬

-1000 :‫ﺑﺮﺻﻴﺪ‬‫ﺣ ﺴﺎ ب راﻓ ﻲ اﻟﺠﺎري‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

82
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫اﺳ‬
‫ﻣﻌﺎﻟﺠ ﺔ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪83‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺮﻣﺠ ﺔ‪.‬‬‫ﻳﻮﺟﺪ ﻧﻮﻋﺎن ﻣﻦ اﻷﺧﻄﺎء ﻓ ﻲ أي ﻟﻐ ﺔ‬

‫)‪1‬أﺧﻄﺎء ﻧﺤﻮﻳ ﺔ‬
‫ﺘﺸﻐﻴﻞ‬
‫)‪2‬أﺧﻄﺎء وﻗ ﺖ اﻟ‬

‫)‪1‬أﺧﻄﺎء ﻧﺤﻮﻳ ﺔ‪:‬‬


‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪.‬‬‫ﺑﺄﺧﻄﺎء‬‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‬‫ﺒﺐ‬
‫ﺑﺴ‬‫ﺘ ﻲﺗﺤﺪ ث‬
‫ﺗ ﺴﻤﻰ اﻷﺧﻄﺎء اﻟ‬

‫ﺜﺎل ‪ 1: ،‬س ‪= 10‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺒﺎﻋ ﺔ‬
‫إذا ﻛﺎﻧ ﺖ ‪x == 10‬ﻃ‬

‫ﺒﺎ"(‬
‫)"ﻣﺮﺣ ً‬

‫ﺑﻨﺎء ﺟﻤﻠ ﺔ ﻏﻴﺮ ﺻﺎﻟﺢ‬‫ﺧﻄﺄ ﻗﻮاﻋﺪي‪:‬‬

‫ﺒﺎ"‬
‫ﺒﺎﻋ ﺔ "ﻣﺮﺣ ً‬
‫ﺜﺎل ‪2:‬ﻃ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺒﺎﻋ ﺔ"‬
‫ﺘﺪﻋﺎء "ﻃ‬
‫ﺘﺮﻛﻴ ﺐ‪ :‬أﻗﻮاس ﻣﻔﻘﻮدة ﻓ ﻲ اﺳ‬
‫ﺧﻄﺄ ﻓ ﻲ اﻟ‬

‫ﺒﺮﻧﺎﻣﺞ ﻓﻘﻂ‪.‬‬
‫ﺒﺪأﺗﻨﻔﻴﺬ اﻟ‬
‫ﺑﻤﺠﺮدﺗﺼﺤﻴﺢ ﺟﻤﻴﻊ اﻷﺧﻄﺎء اﻟﻨﺤﻮﻳ ﺔ ‪،‬ﺳﻴ‬‫ﺒﺮﻣﺞ ﻣ ﺴﺆول ﻋﻦﺗﺼﺤﻴﺢ ﻫﺬه اﻷﺧﻄﺎء اﻟﻨﺤﻮﻳ ﺔ‪.‬‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬اﻟﻤ‬

‫ﺘﺸﻐﻴﻞ‪:‬‬
‫)‪2‬أﺧﻄﺎء وﻗ ﺖ اﻟ‬
‫ﺒﺮﻣﺠ ﺔ أو ﻣﺸﺎﻛﻞ اﻟﺬاﻛﺮة وﻣﺎ‬
‫ﺘﺨﺪم اﻟﻨﻬﺎﺋ ﻲ أو ﻣﻨﻄﻖ اﻟ‬
‫ﺒ ﺐ إدﺧﺎل اﻟﻤ ﺴ‬
‫ﺑﺴ‬‫ﺒﺮﻧﺎﻣﺞ إذا ﺣﺪ ث ﺧﻄﺄ ﻣﺎ‬
‫ﺛﻨﺎءﺗﻨﻔﻴﺬ اﻟ‬
‫ﺜﻨﺎءا ت‪• .‬أ‬
‫ﺘ‬‫ﺑﺎﺳﻢ اﻻﺳ‬ ‫ُﻌﺮف أ ً‬
‫ﻳﻀﺎ‬ ‫ﺗ‬
‫•‬

‫ﺘﺸﻐﻴﻞ‪.‬‬
‫إﱃ ذﻟﻚ ‪ ،‬ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ أﺧﻄﺎء وﻗ ﺖ اﻟ‬

‫)‪1) print (10/0‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ ‪2) print (10 / "ten") TypeError :‬ﻧﻮع )أﻧﻮاع( اﻟﻤﻌﺎﻣﻞ ﻏﻴﺮ‬ ‫ﺜﺎل‪ZeroDivisionError: :‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫اﻟﻤﺪﻋﻮم ﻟـ ‪'int' :/‬و '‪'str‬‬

‫)‪3) x = int (input ("Enter Number:")) print (x‬‬

‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﺮﻗﻢ‪ :‬ﻋﺸﺮة ‪ValueError:‬ﺣﺮﻓﻴ ﺔ ﻏﻴﺮ‬


‫ﺻﺎﻟﺤ ﺔ ﻟـ )( ‪int‬ﻣﻊ اﻷﺳﺎس '‪10: 'ten‬‬

‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‬‫ﺘﺸﻐﻴﻞ وﻟﻜﻦ ﻟﻴ ﺲﻷﺧﻄﺎء‬


‫ﺜﻨﺎءا ت ﻋﲆ أﺧﻄﺎء وﻗ ﺖ اﻟ‬
‫ﺘ‬‫ﺒﻖ ﻣﻔﻬﻮم ﻣﻌﺎﻟﺠ ﺔ اﻻﺳ‬
‫ﻣﻼﺣﻈ ﺔ‪:‬ﻳﻨﻄ‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪84‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎء؟‬
‫ﺘ‬‫ﻣﺎ ﻫﻮ اﻻﺳ‬
‫ﺜﻨﺎء‪.‬‬
‫ﺘ‬‫ﺒﺮﻧﺎﻣﺞ اﺳ‬
‫ﺒﻴﻌ ﻲ ﻟﻠ‬
‫ﺘﺪﻓﻖ اﻟﻄ‬
‫ﺘﻮﻗﻊ اﻟﺬيﻳﺰﻋﺞ اﻟ‬
‫ﻳ ﺴﻤﻰ اﻟﺤﺪ ث ﻏﻴﺮ اﻟﻤﺮﻏﻮ ب ﻓﻴﻪ وﻏﻴﺮ اﻟﻤ‬

‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫‪• ZeroDivisionError‬‬

‫‪• TypeError‬‬
‫•ﺧﻄﺄ اﻟﻘﻴﻤ ﺔ‬

‫‪• FileNotFoundError‬‬

‫‪• EOFError‬‬

‫‪• SleepingError‬‬

‫‪• TyrePuncturedError‬‬

‫ﺜﺎل ‪،‬ﻳﺠ ﺐ أﻻ ﻧﺤﺠ ﺐ ﻣﻮاردﻧﺎ‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒﺮﻧﺎﻣﺞ )ﻋﲆﺳ‬
‫ﺜﻨﺎءا ت ﻫﻮ اﻹﻧﻬﺎء اﻟﺮﺷﻴﻖ ﻟﻠ‬
‫ﺘ‬‫ﺋﻴ ﺴ ﻲ ﻣﻦ ﻣﻌﺎﻟﺠ ﺔ اﻻﺳ‬
‫ﺜﻨﺎءا ت‪ .‬اﻟﻬﺪف اﻟﺮ‬
‫ﺘ‬‫ﺑﻤﻌﺎﻟﺠ ﺔ اﻻﺳ‬‫ﺑﺸﺪة‬‫ﻳﻮﺻﻰ‬
‫ﺗﻨﺎ أي ﺷ ﻲء(‬
‫وﻳﺠ ﺐ أﻻﻳﻔﻮ‬

‫ﺒﻴﻌ ﻲ‪.‬‬
‫ﺑﺸﻜﻞ ﻃ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺑﻘﻴ ﺔ اﻟ‬‫ﺑﺪﻳﻠ ﺔ ﻟﻤﻮاﺻﻠ ﺔ‬‫ﺜﻨﺎء‪ .‬ﻋﻠﻴﻨﺎﺗﺤﺪﻳﺪ ﻃﺮﻳﻘ ﺔ‬
‫ﺘ‬‫ﺜﻨﺎءا ت ﻻﺗﻌﻨ ﻲ إﺻﻼح اﻻﺳ‬
‫ﺘ‬‫ﻣﻌﺎﻟﺠ ﺔ اﻻﺳ‬

‫ﺣﺎ ‪،‬‬
‫ﺘﺎ ً‬
‫ﺘﺸﻐﻴﻞ إذا ﻟﻢﻳﻜﻦ ﻣﻠﻒ ‪London‬ﻣ‬
‫ﺑﻌﻴﺪ ﻣﺤﺪد ﻓ ﻲ ﻟﻨﺪن‪ .‬ﻓ ﻲ وﻗ ﺖ اﻟ‬‫ﺒﻴﺎﻧﺎ ت ﻣﻦ ﻣﻠﻒ‬
‫ﺒﺮﻣﺠ ﺔ ﻟﺪﻳﻨﺎ ﻫ ﻲ ﻗﺮاءة اﻟ‬
‫ﺒﺎ ت اﻟ‬
‫ﺘﻄﻠ‬
‫ﺜﺎل‪ :‬ﻣ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺒﺪﻳﻞ ﻟﻴ ﺴ ﺖ‬
‫ﺒﻴﻌ ﻲ‪ .‬ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ﻓ ﻲﺗﻌﺮﻳﻒ اﻟ‬
‫ﺑﺸﻜﻞ ﻃ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺑﻘﻴ ﺔ اﻟ‬‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﻮﻓﻴﺮ ﻣﻠﻒ ﻣﺤﻠ ﻲ ﻟﻤﻮاﺻﻠ ﺔ‬
‫ﺒﻴﻌ ﻲ‪.‬ﻳ‬
‫ﺑﺸﻜﻞ ﻏﻴﺮ ﻃ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﻓﻼﻳﺠ ﺐ إﻧﻬﺎء اﻟ‬
‫ﺜﻨﺎﺋﻴ ﺔ‪.‬‬
‫ﺘ‬‫ﺳﻮى ﻣﻌﺎﻟﺠ ﺔ اﺳ‬

‫ﻳﺤﺎول‪:‬‬
‫ﺑﻌﻴﺪ ﻣﺤﺪد ﻓ ﻲ ﻟﻨﺪن‪.‬‬‫ﺒﻴﺎﻧﺎ ت ﻣﻦ ﻣﻠﻒ‬
‫اﻗﺮأ اﻟ‬
‫ﺜﻨﺎء ‪FileNotFoundError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﻴﻌ ﻲ‬
‫ﺑﺸﻜﻞ ﻃ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺑﻘﻴ ﺔ اﻟ‬‫ﺑﻊ‬
‫ﺗﺎ‬
‫ﺘﺨﺪم اﻟﻤﻠﻒ اﻟﻤﺤﻠ ﻲ و‬
‫اﺳ‬

‫ﺜﻨﺎء؟‬
‫ﺘ‬‫س‪ :‬ﻣﺎ ﻫﻮ اﻻﺳ‬
‫ﺜﻨﺎءا ت؟‬
‫ﺘ‬‫س‪ :‬ﻣﺎ ﻫﻮ اﻟﻐﺮض ﻣﻦ ﻣﻌﺎﻟﺠ ﺔ اﻻﺳ‬
‫ﺜﻨﺎءا ت؟‬
‫ﺘ‬‫س‪ :‬ﻣﺎ ﻣﻌﻨﻰ ﻣﻌﺎﻟﺠ ﺔ اﻻﺳ‬

‫ﺜﻮن‪:‬‬
‫ﺑﺎﻳ‬‫ﺘﺮاﺿ ﻲ ﻓ ﻲ‬
‫ﺜﻨﺎءا ت اﻻﻓ‬
‫ﺘ‬‫ﺗ ﺴﻠﻴﻢ اﻻﺳ‬
‫ﺑﻞ‬
‫ﺜﻨﺎء اﻟﻤﻘﺎ‬
‫ﺘ‬‫ﺜﻮن ﻫﻮ ﻛﺎﺋﻦ‪ .‬ﻟﻜﻞ ﻧﻮع اﻻﺳ‬
‫ﺑﺎﻳ‬‫ﺜﻨﺎء ﻓ ﻲ‬
‫ﺘ‬‫•ﻛﻞ اﺳ‬
‫ﺘﻮﻓﺮة‪.‬‬
‫اﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ ﻣ‬

‫ﺣﺎ ‪ ،‬ﻓﺈن ‪Python‬‬


‫ﺘﺎ ً‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻜﻮد ﻣ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﻣﻌﺎﻟﺠ ﺔ اﻟﻜﻮد‪ .‬إذا ﻟﻢﻳﻜﻦ اﻟ‬
‫ﺘ‬‫ﺑﻞ وﺳ‬
‫ﺜﻨﺎء اﻟﻤﻘﺎ‬
‫ﺘ‬‫ﺘﻨﺸ ﺊ ‪PVM‬ﻛﺎﺋﻦ اﻻﺳ‬
‫ﺜﻨﺎء ‪،‬ﺳ‬
‫ﺘ‬‫•ﻓ ﻲ ﺣﺎﻟ ﺔ ﺣﺪو ث اﺳ‬

‫ﺘﺤﻜﻢ‪.‬‬
‫ﺑﻠ ﺔ إﱃ وﺣﺪة اﻟ‬
‫ﺜﻨﺎء اﻟﻤﻘﺎ‬
‫ﺘ‬‫ﺒﻊ ﻣﻌﻠﻮﻣﺎ ت اﻻﺳ‬
‫ﺒﻴﻌ ﻲ وﻳﻄ‬
‫ﺑﺸﻜﻞ ﻏﻴﺮ ﻃ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺑﺈﻧﻬﺎء اﻟ‬‫ﺘﺮﺟﻢ اﻟﻔﻮري‬
‫ﻳﻘﻮم اﻟﻤ‬

‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺑﺎﻗ ﻲ اﻟ‬‫ﺘﻢﺗﻨﻔﻴﺬ‬
‫•ﻟﻦﻳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫‪85‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎﻋ ﺔ )‪2‬‬
‫)‪1‬ﻃ‬
‫ﺒﺎﻋ ﺔ )‪3‬‬ ‫)"‪("Hello‬ﻃ‬
‫ﺒﺎﻋ ﺔ )"‪("Hi‬‬
‫)‪(10/0‬ﻃ‬

‫‪Python_classes> py test.py Hello Traceback‬‬


‫\ ‪)D:‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪ :‬ﻣﻠﻒ ‪"test.py" ،‬اﻟ ﺴﻄﺮ ‪2 ،‬‬

‫ﺒﺎﻋ ﺔ )‪<module> (10/0‬‬


‫ﻓ ﻲﻃ‬

‫‪ZeroDivisionError:‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ‬

‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺘ ﺴﻠ ﺴﻞ اﻟﻬﺮﻣ ﻲ ﻻﺳ‬
‫اﻟ‬
‫‪BaseException‬‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫اﺳ‬ ‫‪SystemExit‬‬ ‫اﻟﻤﻮﻟﺪ‬ ‫ﺗﻴﺢ اﻟﻤﻘﺎﻃﻌ ﺔ‬
‫ﻟﻮﺣ ﺔ اﻟﻤﻔﺎ‬

‫ﻳﺼﻒ‬ ‫ﻋﻠﻢ اﻟﺤ ﺴﺎ ب‬ ‫‪EOF‬‬ ‫اﺳﻢ‬ ‫ﺑﺤ ﺚ ﻋﻦ‬


‫ا‬ ‫ﺘﺸﻐﻴﻞ‬
‫ﻧﻈﺎم اﻟ‬
‫ﺘﺐ‬
‫ﻳﻜ‬ ‫ﻗﻴﻤ ﺔ‬
‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬

‫ﺗﻘ ﺴﻴﻢ اﻟﺼﻔﺮي‬ ‫ِس‬


‫ِﻬﺮ‬
‫ﻓ‬ ‫ﺜﻮر ﻋﲆ اﻟﻤﻠﻒ‬
‫ﺘﻢ اﻟﻌ‬
‫ﻟﻢﻳ‬

‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬

‫اﻟﻨﻘﻄ ﺔ اﻟﻌﺎﺋﻤ ﺔ‬ ‫ﺘﺎح‬


‫ﻣﻔ‬ ‫ﺗﻮﻗﻒ‬
‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬

‫ﺗﺠﺎوز‬ ‫إذن‬
‫ﺧﻄﺄ‬ ‫ﺧﻄﺄ‬

‫ﻧﻔﺬ اﻟﻮﻗ ﺖ‬
‫ﺧﻄﺄ‬
‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺜﻨﺎءا ت ﻫ ﻲ ﻓﺌﺎ ت ﻓﺮﻋﻴ ﺔ ﻣﻦ ‪BaseException.ie‬ﻛﻞ ﻓﺌ ﺔ اﺳ‬
‫ﺘ‬‫ﺜﻮن ﻫﻮ ﻓﺌ ﺔ‪• .‬ﺟﻤﻴﻊ ﻓﺌﺎ ت اﻻﺳ‬
‫ﺑﺎﻳ‬‫ﺜﻨﺎء ﻓ ﻲ‬
‫ﺘ‬‫•ﻛﻞ اﺳ‬

‫ﺘ ﺴﻠ ﺴﻞ ‪Python Exception.‬‬
‫ﺛﻢ ‪،‬ﻳﻌﻤﻞ ‪BaseException‬ﻛﺠﺬر ﻟ‬‫ﺒﺎﺷﺮ‪ .‬وﻣﻦ‬
‫ﺒﺎﺷﺮ أو ﻏﻴﺮ ﻣ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺘﺪ ‪BaseException‬إﻣﺎ‬
‫ﻳﻤ‬

‫ﺘﺮﻛﻴﺰ ﻋﲆ ‪Exception‬وﻃﻔﻠﻪ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ اﻟ‬
‫ﺒﺮﻣﺠﻴﻦ ﻓ ﻲ ﻣﻌﻈﻢ اﻷﺣﻴﺎن ‪،‬ﻳ‬
‫•ﻟﻜﻮﻧﻨﺎ ﻣ‬
‫ﺒﻘﺎ ت‪.‬‬
‫اﻟﻄ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪86‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﺨﺪام اﻟﻤﺤﺎوﻟ ﺔ‬
‫ﺑﺎﺳ‬‫ﺜﻨﺎءا ت اﻟﻤﺨﺼﺼ ﺔ‬
‫ﺘ‬‫ﻣﻌﺎﻟﺠ ﺔ اﻻﺳ‬
‫ﺜﻨﺎءا ت‪.‬‬
‫ﺘ‬‫ﺑﻤﻌﺎﻟﺠ ﺔ اﻻﺳ‬‫ﺑﺸﺪة‬‫•ﻳﻮﺻﻰ‬
‫ﺘﻠ ﺔ ‪try.‬رﻣﺰ اﻟﻤﻨﺎوﻟ ﺔ‬
‫ﺑﺎﻟﻤﺨﺎﻃﺮ داﺧﻞ ﻛ‬‫ﺑﺮﻣﺠﻴ ﺔ ﻣﺤﻔﻮﻓ ﺔ‬‫ﺘﻌﺎﻣﻞ ﻣﻊﺗﻌﻠﻴﻤﺎ ت‬
‫ﺑﺎﻟﻤﺨﺎﻃﺮ وﻋﻠﻴﻨﺎ أن ﻧ‬ ‫ً‬
‫ﻣﺤﻔﻮﻓﺎ‬ ‫ﺜﻨﺎء رﻣ ًﺰا‬
‫ﺘ‬‫ﺜﻴﺮ اﻻﺳ‬
‫ُﻄﻠﻖ ﻋﲆ اﻟﻜﻮد اﻟﺬي ﻗﺪﻳ‬
‫•ﻳ‬
‫ﺘﻠ ﺔ‪.‬‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻞ اﻟﺬيﻳﺠ ﺐ أن ﻧﺄﺧﺬه ﻓ ﻲ اﻟﺪاﺧﻞ‬
‫اﻟﻤﻘﺎ‬
‫ﻳﺤﺎول‪:‬‬

‫ﺑﺎﻟﻤﺨﺎﻃﺮ‬‫رﻣﺰ ﻣﺤﻔﻮف‬

‫ﺜﻨﺎء ‪XXX:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺑﺪﻳﻞ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ رﻣﺰ ‪ /‬رﻣﺰ‬
‫اﻟ‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﺪون ﻣﺤﺎوﻟ ﺔ‬

‫ﺒﺎﻋ ﺔ )‪("stmt-1") 2‬‬


‫)‪1‬ﻃ‬
‫ﺒﺎﻋ ﺔ‬
‫ﺒﺎﻋ ﺔ )‪(10/0) 3‬ﻃ‬
‫ﻃ‬
‫)"‪("stmt-3‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪stmt-1‬‬
‫‪ZeroDivisionError:‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ‬
‫ﺒﻴﻌ ﻲ ‪ /‬إﻧﻬﺎء ﻏﻴﺮ رﺷﻴﻖ‬
‫إﻧﻬﺎء ﻏﻴﺮ ﻃ‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﻣﻊ اﻟﻤﺤﺎوﻟ ﺔ‬

‫)‪1) print ("stmt-1") 2‬ﺟﺮ ب‪3) 4) :‬‬


‫ﺜﻨﺎء )"‪("stmt-3‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪print (10/0‬‬
‫‪5) print‬‬
‫‪ZeroDivisionError:‬‬
‫‪(10/2) 6) print‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪stmt-1‬‬
‫‪5.0 stmt-3‬إﻧﻬﺎء ﻋﺎدي ‪ /‬إﻧﻬﺎء ﻟﻄﻴﻒ‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﺪﻓﻖ ﻓ ﻲ اﻟﻤﺤﺎوﻟ ﺔ‬
‫ﺘﺤﻜﻢ ﻓ ﻲ اﻟ‬
‫اﻟ‬
‫ﻳﺤﺎول‪:‬‬
‫‪stmt-1‬‬
‫‪stmt-2‬‬
‫‪stmt-3‬‬
‫ﺜﻨﺎء ‪XXX:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪stmt-4‬‬
‫‪stmt-5‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪87‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪1:‬إذا ﻟﻢﻳﻜﻦ ﻫﻨﺎك اﺳ‬
‫‪1 ، 2 ، 3 ، 5‬واﻹﻧﻬﺎء اﻟﻌﺎدي‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺘﻠ ﺔ اﻟﻤ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻠﻬﺎ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-2‬وﻣﺎﻳﻘﺎ‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪2:‬إذا أ‬
‫‪1،4،5‬اﻹﻧﻬﺎء اﻟﻌﺎدي‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺘﻠ ﺔ ﻏﻴﺮ ﻣ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻠ ﺔ‬
‫ﺘﻠ ﺔ اﻟﻤﻘﺎ‬
‫ﺜﻨﺎء ﻋﻨﺪ ‪stmt-2‬وﻛﺎﻧ ﺖ اﻟﻜ‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪3:‬إذا ﻇﻬﺮ اﺳ‬
‫ﺒﻴﻌ ﻲ‬
‫‪1 ،‬إﻧﻬﺎء ﻏﻴﺮ ﻃ‬

‫ﺒﻴﻌ ﻲ‪.‬‬
‫ﺋﻤﺎ إﻧﻬﺎء ﻏﻴﺮ ﻃ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-4‬أو ‪stmt-5 ،‬ﻓﻬﺬاﻳﻌﻨ ﻲ دا ً‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪4:‬إذا ﻇﻬﺮ اﺳ‬

‫ﺘﺎﺟﺎ ت‪:‬‬
‫ﺘﻨ‬‫اﻻﺳ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ‬
‫ﺛﻢﻳ‬‫ﺜﻨﺎء‪ .‬وﻣﻦ‬
‫ﺘ‬‫ﺘﻠ ﺔ ‪try‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻨﺎﺗﻌﺎﻣﻠﻨﺎ ﻣﻊ ﻫﺬا اﻻﺳ‬
‫ﺑﻘﻴ ﺔ ﻛ‬‫ﺘﻢﺗﻨﻔﻴﺬ‬
‫ﺜﻨﺎء ﻓ ﻲ أي ﻣﻜﺎن ‪ ،‬ﻓﻠﻦﻳ‬
‫ﺘ‬‫ﺘﻠ ﺔ ‪try‬ﻓ ﻲ ﺣﺎﻟ ﺔ ﻇﻬﻮر اﺳ‬
‫)‪1‬داﺧﻞ ﻛ‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ أﻗﻞ ﻣﺎﻳﻤﻜﻦ‪.‬‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ وﻳﺠ ﺐ أنﻳﻜﻮن ﻃﻮل ﻛ‬
‫ﺑﺎﻟﻤﺨﺎﻃﺮ ﻓﻘﻂ داﺧﻞ ﻛ‬ ‫ً‬
‫ﻣﺤﻔﻮﻓﺎ‬ ‫أن ﻧﺄﺧﺬ رﻣ ًﺰا‬

‫ﺘﻞ أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺜﻨﺎءا ت ﻓ ﻲ اﻟﺪاﺧﻞ‬
‫ﺘ‬‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ ‪ ،‬ﻗﺪﺗﻜﻮن ﻫﻨﺎك ﻓﺮﺻ ﺔ ﻟﺮﻓﻊ اﻻﺳ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ﻛ‬
‫)‪2‬‬

‫ﺋﻤﺎ‬
‫ﺜﻨﺎ ًء ‪ ،‬ﻓﻬ ﻲ دا ً‬
‫ﺘ‬‫ﺘﻠ ﺔ ‪try‬اﺳ‬
‫ﺒﺎرة ﻟﻴ ﺴ ﺖ ﺟﺰءًا ﻣﻦ ﻛ‬
‫ﺛﺎر ت أي ﻋ‬
‫)‪3‬إذا أ‬
‫ﺒﻴﻌ ﻲ‪.‬‬
‫إﻧﻬﺎء ﻏﻴﺮ ﻃ‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺒﺎﻋ ﺔ ﻣﻌﻠﻮﻣﺎ ت اﻻﺳ‬
‫ﻛﻴﻔﻴ ﺔ ﻃ‬
‫ﻳﺤﺎول‪:‬‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺜﻨﺎء ‪ZeroDivisionError‬ﻛـ ‪")msg: 3) print‬اﺳ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪1) print (10/0) 2‬‬
‫ﺜﺎر ووﺻﻔﻪ ﻫﻮ‪msg) ،":‬‬
‫ُﻣ‬

‫ﺗﺞ ووﺻﻔﻪ ﻫﻮ ‪ :‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ‬


‫ﺜﻨﺎء اﻟﻨﺎ‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫أ‬

‫ﺘﻞ‪:‬‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻌﺪدة‬
‫ﺘﻞ اﻟﻤ‬
‫ﺟﺮ ب ﻣﻊ اﻟﻜ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ‬
‫ﺘ ﻲﻳ‬
‫ﺘﻠ ﺔ اﻟ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺜﻨﺎءا ت ﻣﻨﻔﺼﻠ ﺔ‬
‫ﺘ‬‫ﺜﻨﺎء ‪ ،‬ﻟﺬﻟﻚ ﻓﻠﻜﻞ ﻧﻮع ﻣﻦ أﻧﻮاع اﻻﺳ‬
‫ﺘ‬‫ﺜﻨﺎء إﱃ اﺳ‬
‫ﺘ‬‫ﺜﻨﺎء ﻣﻦ اﺳ‬
‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺳ‬
‫ﺘﻨﻮع ﻃﺮﻳﻘ ﺔ اﻟ‬
‫ﺗ‬
‫ﺘﺨﺪاﻣﻪ‪.‬‬
‫ﺑﺎﺳ‬‫ﺜﻨﺎء أﻣﺮ ﻣﻤﻜﻦ وﻳﻮﺻﻰ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻌﺪدة‬
‫ﺘﻞ ﻣ‬
‫ﺜﺎل ‪ ،‬ﺣﺎول ﻣﻊ ﻛ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺗﻮﻓﻴﺮ ﻫﺎ‪ .‬ﻋﲆﺳ‬

‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﻳﺤﺎول‪:‬‬
‫‪-------‬‬
‫‪-------‬‬
‫‪-------‬‬

‫ﺜﻨﺎء ‪ZeroDivisionError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺑﺪﻳﻠ ﺔ‬‫ﺑﻴ ﺔ‬
‫إﺟﺮاء ﻋﻤﻠﻴﺎ ت ﺣ ﺴﺎ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪88‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎء ‪FileNotFoundError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﻌﻴﺪ‬
‫ﺑﺪﻻ ﻣﻦ اﻟﻤﻠﻒ اﻟ‬‫ﺘﺨﺪام اﻟﻤﻠﻒ اﻟﻤﺤﻠ ﻲ‬
‫اﺳ‬

‫ﺑﻘ ﺔ‪.‬‬
‫ﺜﻨﺎء اﻟﻤﻄﺎ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ‬
‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﻜ‬
‫ﺑﺎرز ‪،‬ﺳﻴ‬‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﻨﺎ ًء ﻋﲆ اﺳ‬‫ﺬ‬
‫ﺘﺎﺣ ﺔ ‪ ،‬ﻓﺤﻴﻨﺌ ٍ‬
‫ﺜﻨﺎء اﻟﻤ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻞ‬
‫إذا ﺣﺎوﻟ ﺖ ﻣﻊ ﻋﺪة ﻛ‬

‫)‪1‬ﺟﺮ ب‪(input ("Enter Second Number: ")) 4) print (x / y) 5) :‬‬


‫ﺜﻨﺎء )‪7‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪2) x = int (input ("Enter First Number: ")) 3) y = int‬‬
‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)"‪ZeroDivisionError: 6 ) print ("Can't Divide with Zero‬‬
‫)"‪ValueError: 8) print ("please provide int value only‬‬

‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﺮﻗﻢ‬


‫اﻷول‪10 :‬‬
‫ﺜﺎﻧ ﻲ‪2 :‬‬
‫أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬

‫‪5.0‬‬

‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﺮﻗﻢ‬


‫ﺜﺎﻧ ﻲ‪0 :‬‬
‫اﻷول‪10 :‬أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬

‫ﻻﻳﻤﻜﻦ اﻟﻘ ﺴﻤ ﺔ ﻋﲆ اﻟﺼﻔﺮ‬

‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﺮﻗﻢ‬


‫ﺜﺎﻧ ﻲ‪ :‬ﻋﺸﺮة‬
‫اﻷول‪10 :‬أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬

‫ﻳﺮﺟﻰﺗﻘﺪﻳﻢ ﻗﻴﻤ ﺔ ‪int‬ﻓﻘﻂ‬

‫ﺋﻤﺎ ﻣﻦ أﻋﲆ‬
‫ﺒﺎر دا ً‬
‫ﺘ‬‫ﺜﻮن ﻓ ﻲ اﻻﻋ‬
‫ﺑﺎﻳ‬‫ﺘﺮﺟﻢ‬
‫ﺘﻞ ﻣﻬﻢ‪.‬ﺳﻴﺄﺧﺬ ﻣ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻞ‬
‫ﺗﻴ ﺐ ﻫﺬه اﻟﻜ‬
‫ﺘﺎﺣ ﺔ ‪ ،‬ﻓﺈنﺗﺮ‬
‫ﺜﻨﺎء اﻟﻤ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻌﺪدة‬
‫ﺘﻞ اﻟﻤ‬
‫إذا ﺣﺎوﻟ ﺖ ﻣﻊ اﻟﻜ‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺪدة‪.‬‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻖ‬
‫ﺘﻄﺎ‬
‫ﺘﻢ اﻟ‬
‫ﺘﻰﻳ‬
‫إﱃ أﺳﻔﻞ ﺣ‬

‫)‪1‬ﺟﺮ ب‪(input ("Enter Second Number: ")) 4) print (x / y) 5) :‬‬


‫ﺜﻨﺎء )‪7‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪2) x = int (input ("Enter First Number: ")) 3) y = int‬‬
‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)"‪ArithmeticError: 6 ) print ("ArithmeticError‬‬
‫)"‪ZeroDivisionError: 8) print ("ZeroDivisionError‬‬

‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﺮﻗﻢ اﻷول‪10 :‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪89‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﺎﻧ ﻲ‪0 :‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬

‫ﺑﻲ‬
‫ﺧﻄﺄ ﺣ ﺴﺎ‬

‫ﺘﻌﺪدة‪:‬‬
‫ﺜﻨﺎءا ت ﻣ‬
‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﺳ‬
‫ﺘ ﻲﻳﻤﻜﻨﻬﺎ اﻟ‬
‫ﺘﻠ ﺔ اﻟ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫واﺣﺪ‬
‫ﺜﻨﺎءا ت‪.‬‬
‫ﺘ‬‫ﺘﻠﻔ ﺔ ﻣﻦ اﻻﺳ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻋﺪة أﻧﻮاع ﻣﺨ‬
‫ﺘ ﻲﻳﻤﻜﻨﻬﺎ اﻟ‬
‫ﺜﻨﺎء اﻟ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ واﺣﺪة‬
‫ﺑﺔ ﻛ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻨﻨﺎ ﻛ‬

‫ﺜﻨﺎء ‪3 ، ..):‬أو‬
‫ﺘ‬‫ﺜﻨﺎء ‪2 ،‬اﺳ‬
‫ﺘ‬‫ﺜﻨﺎء ‪1 ،‬اﺳ‬
‫ﺘ‬‫ﺜﻨﺎء )اﺳ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺜﻨﺎء )‪3 ، ..‬ﻛﺮﺳﺎﻟ ﺔ‪:‬‬
‫ﺘ‬‫ﺜﻨﺎء ‪2 ،‬اﺳ‬
‫ﺘ‬‫ﺜﻨﺎء ‪1 ،‬اﺳ‬
‫ﺘ‬‫ﺜﻨﺎء )اﺳ‬
‫ﺘ‬‫ﺑﺎﺳ‬

‫ﺜﻨﺎءا ت داﺧﻠ ًﻴﺎ ﻋﲆ أﻧﻬﺎ ‪tuple.‬‬


‫ﺘ‬‫ﺒﺮ ﻫﺬه اﻟﻤﺠﻤﻮﻋ ﺔ ﻣﻦ اﻻﺳ‬
‫ﺘ‬‫ﺗﻌ‬
‫اﻷﻗﻮاس إﻟﺰاﻣﻴ ﺔ و‬

‫)‪1‬ﺟﺮ ب‪("Enter First Number: ")) 3) y = int (input ("Enter Second Number: ")) 4) print (x / y) 5) :‬‬
‫ﺒﺎﻋ ﺔ )"اﻟﺮﺟﺎءﺗﻘﺪﻳﻢ أرﻗﺎم‬
‫ﺜﻨﺎء )‪(ZeroDivisionError ، ValueError‬ﻛـ )‪msg: 6‬ﻃ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪2) x = int (input‬‬
‫ﺻﺎﻟﺤ ﺔ ﻓﻘﻂ واﻟﻤﺸﻜﻠ ﺔ ﻫ ﻲ‪" ، msg) :‬‬

‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﺮﻗﻢ اﻷول‪10 :‬‬

‫ﺜﺎﻧ ﻲ‪0 :‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬

‫اﻟﺮﺟﺎءﺗﻘﺪﻳﻢ أرﻗﺎم ﺻﺎﻟﺤ ﺔ ﻓﻘﻂ واﻟﻤﺸﻜﻠ ﺔ ﻫ ﻲ ‪ :‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ‬

‫ﺜﺎﻧ ﻲ‪ :‬ﻋﺸﺮة اﻟﺮﺟﺎءﺗﻘﺪﻳﻢ أرﻗﺎم ﺻﺎﻟﺤ ﺔ ﻓﻘﻂ واﻟﻤﺸﻜﻠ ﺔ ﻫ ﻲ‪ :‬ﺣﺮﻓﻴ ﺔ ﻏﻴﺮ ﺻﺎﻟﺤ ﺔ‬
‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﺮﻗﻢ اﻷول‪10 :‬أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬
‫ﻟـ )( ‪int‬ﻣﻊ ‪ b‬ﻫ ﻲ '‪10: 'ten‬‬

‫ﺜﻨﺎء اﻟﺤﻈﺮ‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﺮاﺿ ﻲ‬
‫اﻻﻓ‬
‫ﺜﻨﺎءا ت‪.‬‬
‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ أي ﻧﻮع ﻣﻦ اﻻﺳ‬
‫ﺘﺮاﺿﻴ ﺔ ﻟﻠ‬
‫ﺜﻨﺎء اﻻﻓ‬
‫ﺘ‬‫ﺘﻠ ﺔ اﻻﺳ‬
‫ﺘﺨﺪام ﻛ‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﺎﻋ ﺔ رﺳﺎﺋﻞ اﻟﺨﻄﺄ اﻟﻌﺎدﻳ ﺔ‪.‬‬
‫ﺘﻠ ﺔ ‪،‬ﻳﻤﻜﻨﻨﺎ ﻃ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﺮاﺿ ﻲ‬
‫ﺑﺸﻜﻞ اﻓ‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪:‬‬

‫ﺻﻴﺎﻏﺎ ت‬

‫)‪1‬ﺟﺮ ب‪")) 3) y = int (input ("Enter Second Number: ")) 4) print (x / y) 5) :‬‬
‫ﺜﻨﺎء ‪6 ) print ("ZeroDivisionError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪2) x = int (input ("Enter First Number:‬‬
‫ﺜﻨﺎء‪Plz :‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﺮاﺿ ﻲ‬
‫ﺜﻨﺎء‪")8) print :‬اﻓ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺑﺼﻔﺮ"( )‪7‬‬‫‪ZeroDivisionError:‬ﻻﻳﻤﻜﻦ اﻟﻘ ﺴﻤ ﺔ‬
‫ً‬
‫إدﺧﺎﻻ ﺻﺎﻟﺤًﺎ ﻓﻘﻂ"(‬ ‫ﺗﻮﻓﺮ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪90‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫‪D: \ Python_classes> py test.py‬أدﺧﻞ‬


‫ﺜﺎﻧ ﻲ‪0 :‬‬
‫اﻟﺮﻗﻢ اﻷول‪10 :‬أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬

‫‪ZeroDivisionError:‬ﻻﻳﻤﻜﻦ اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ‬

‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﺮﻗﻢ اﻷول‪10 :‬‬

‫ﺜﺎﻧ ﻲ‪ :‬ﻋﺸﺮة‬
‫أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬

‫ﺗﻮﻓﻴﺮ ﻣﺪﺧﻼ ت ﺻﺎﻟﺤ ﺔ ﻓﻘﻂ‬


‫ﺜﻨﺎء‪Plz :‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﺮاﺿ ﻲ‬
‫اﻻﻓ‬

‫ﺜﻨﺎء اﻟﺤﻈﺮ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﺮاﺿ ﻲ‬
‫ﺘﺎﺣ ﺔ ‪ ،‬ﻓﻴﺠ ﺐ أنﻳﻜﻮن اﻟﻮﺿﻊ اﻻﻓ‬
‫ﺜﻨﺎء اﻟﻤ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻞ‬
‫***ﻣﻼﺣﻈ ﺔ‪ :‬إذا ﺣﺎوﻟ ﺖ ﻣﻊ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻜ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪.‬‬‫أﺧﻴ ﺮًا ‪ ،‬وإﻻ ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ ﺧﻄﺄ ﻓ ﻲ‬

‫ﺜﻨﺎء‪5) :‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪1‬ﺟﺮ ب‪print (10/0) 2) 3) :‬‬
‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺳ‬
‫ﺑﺎ)‪6‬‬
‫‪print‬‬
‫‪4) print‬‬
‫)"‪("ZeroDivisionError‬‬
‫)"‪("Default except‬‬
‫‪ZeroDivisionError:‬‬

‫ﺜﻨﺎء‪':‬ﻳﺠ ﺐ أنﻳﻜﻮن اﻷﺧﻴﺮ‬


‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺘﺮاﺿ ﻲ '‬
‫‪SyntaxError:‬اﻻﻓ‬

‫ﺘﻞ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻨﻮﻋ ﺔ ﻣﻦ اﻟﻤﺠﻤﻮﻋﺎ ت اﻟﻤﻤﻜﻨ ﺔ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓﻴﻤﺎﻳﻠ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﻣ‬
‫ﺜﻨﺎء ‪ZeroDivisionError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪1‬‬
‫ﺜﻨﺎء ‪ZeroDivisionError‬ﻛـ ‪msg:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪2‬‬
‫ﺜﻨﺎء ‪(ZeroDivisionError، ValueError):‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪3‬‬
‫ﺜﻨﺎء )‪(ZeroDivisionError، ValueError‬ﻛـ ‪msg:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪4‬‬
‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪5‬‬

‫أﺧﻴ ﺮًا ﺣﻈﺮ‪:‬‬


‫ﺘﻨﻔﻴﺬ‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔﻷﻧﻪ ﻻﻳﻮﺟﺪ ﺿﺎﻣﻦ ﻟ‬
‫ﺘﻨﻈﻴﻒ )ﻛﻮد إﻟﻐﺎءﺗﺨﺼﻴﺺ اﻟﻤﻮرد أو ﻛﻮدﺗﺤﺮﻳﺮ اﻟﻤﻮرد( داﺧﻞ ﻛ‬
‫ﺑﺎﻟﺤﻔﺎظ ﻋﲆ ﻛﻮد اﻟ‬‫ﻻﻳﻮﺻﻰ‬
‫ﺋﻤﺎ‪.‬‬
‫ﺘﻠ ﺔ ‪try‬دا ً‬
‫ﻛﻞ ﺟﻤﻠ ﺔ داﺧﻞ ﻛ‬

‫ﺘﻠ ﺔ ‪،‬ﻷﻧﻪ إذا ﻛﺎن ﻫﻨﺎك‬


‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﺎﻟﺪاﺧﻞ‬‫ﺘﻨﻈﻴﻒ‬
‫ﺑﺎﻟﺤﻔﺎظ ﻋﲆ ﻛﻮد اﻟ‬‫ﻻﻳﻮﺻﻰ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ‪.‬‬
‫ﺘﻠ ﺔ ﻟﻦﻳ‬
‫ﺜﻨﺎء ﻛ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺛﻢ‬‫ﺜﻨﺎء‬
‫ﺘ‬‫ﻟﻴ ﺴ ﺖ اﺳ‬

‫ﺛﻴﺮ أم ﻻ وﻣﺎ إذا ﻛﺎن‬


‫ﺜﻨﺎء ﻗﺪ أ‬
‫ﺘ‬‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻤﺎ إذا ﻛﺎن اﻻﺳ‬‫ﺋﻤﺎ‬ ‫ﺒﻨﺎ ﻣﻜﺎﻧًﺎ ﻣﺎ ﻟﻠﺤﻔﺎظ ﻋﲆ رﻣﺰ اﻟ‬
‫ﺘﻨﻈﻴﻒ اﻟﺬيﻳﺠ ﺐﺗﻨﻔﻴﺬه دا ً‬ ‫ﺛﻢ ﻓﻘﺪ ﻃﻠ‬‫وﻣﻦ‬
‫ﺘﻠ ﺔ أﺧﻴ ﺮًا‪.‬‬
‫ﺜﻞ ﻫﺬا اﻟﻨﻮع ﻣﻦ أﻓﻀﻞ اﻷﻣﺎﻛﻦ ﻟﻴ ﺲﺳﻮى ﻛ‬
‫ﺘﻌﺎﻣﻞ ﻣﻌﻪ أم ﻻ‪ .‬ﻣ‬
‫ﺜﻨﺎءﺗﻢ اﻟ‬
‫ﺘ‬‫اﻻﺳ‬

‫ﺘﻨﻈﻴﻒ‪.‬‬
‫ﺘﻠ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ ﻫﻮ اﻟﺤﻔﺎظ ﻋﲆ رﻣﺰ اﻟ‬
‫ﺋﻴ ﺴ ﻲ ﻣﻦ اﻟﻜ‬
‫ﺛﻢ ﻓﺈن اﻟﻐﺮض اﻟﺮ‬‫وﻣﻦ‬

‫ﻳﺤﺎول‪:‬‬

‫ﺑﺎﻟﻤﺨﺎﻃﺮ‬‫رﻣﺰ ﻣﺤﻔﻮف‬

‫ﺜﻨ ﻲ‪:‬‬
‫ﺘ‬‫ﻳﺴ‬
‫رﻣﺰ اﻟﻤﻨﺎوﻟ ﺔ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪91‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫أﺧﻴﺮاً‪:‬‬
‫ﺘﻨﻈﻴﻒ‬
‫ﻛﻮد اﻟ‬

‫ﺜﻨﺎء أم ﻻ‪.‬‬
‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺳ‬
‫ﺜﻨﺎء أم ﻻ وﺳﻮاءﺗﻢ اﻟ‬
‫ﺘ‬‫ﺋﻤﺎﺳﻮاءﺗﻢ رﻓﻊ اﻻﺳ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ دا ً‬
‫ﺘﻠ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ ﻫﻮ أﻧﻪﺳﻴ‬
‫ﺗﺨﺼﺺ اﻟﻜ‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪1:‬إذا ﻟﻢﻳﻜﻦ ﻫﻨﺎك اﺳ‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"( )‪3‬‬


‫)‪1‬ﺟﺮ ب‪2) :‬ﻃ‬
‫ﺜﻨﺎء"(‬
‫ﺘا"(‬
‫ﺳﺮً‬‫ﺑﺎ‬
‫ﺒﺎﻋﺔﺔ )"‬
‫)"أﺧﻴ‬ ‫)‪4‬ﻃﻃ‬
‫ﺒﺎﻋ‬ ‫ﺜﻨﺎء‪6) :‬‬ ‫ﺘ‬‫ﺳ‬
‫أﺧﻴ ًﺮا‪:‬‬ ‫ﺑﺎ)‪5‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺣﺎول ﻓ ﻲ‬

‫اﻟﻨﻬﺎﻳ ﺔ‬

‫ﺘﻌﺎﻣﻞ ﻣﻌﻪ‬
‫ﺜﻨﺎء وﻟﻜﻦﺗﻢ اﻟ‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪-2:‬إذاﺗﻢ ﻃﺮح اﺳ‬

‫ﺒﺎﻋ ﺔ )‪4‬‬
‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"( )‪3‬ﻃ‬
‫)‪1‬ﺟﺮ ب‪2) :‬ﻃ‬
‫ﺒﺎﻋ ﺔ‬
‫‪ZeroDivision:‬ﻃ‬
‫ﺒﺎﻋ ﺔ )"أﺧﻴ ﺮًا"(‬ ‫ﺧﻄﺄا‪5) :‬‬
‫)‪7‬ﻃ‬ ‫ﺜﻨﺎءأﺧﻴ ﺮً‬
‫ﺘ )‪6‬‬ ‫ﺑﺎﺳ‬ ‫)‪(10/0‬‬
‫ﺜﻨﺎء"(‬‫ﺘ‬‫ﺑﺎﺳ‬‫)"‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺣﺎول إﻻ ﻓ ﻲ‬
‫اﻟﻨﻬﺎﻳ ﺔ‬

‫ﺘﻌﺎﻣﻞ ﻣﻌﻪ‬
‫ﺘﻢ اﻟ‬
‫ﺜﻨﺎء وﻟﻜﻦ ﻟﻢﻳ‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪3:‬إذاﺗﻢ ﻃﺮح اﺳ‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"( )‪3‬‬


‫)‪1‬ﺟﺮ ب‪2) :‬ﻃ‬
‫ﺧﻄﺄ)‪6‬‬ ‫ﺜﻨﺎء‬
‫ﺜﻨﺎء"(‬‫ﺘ‬
‫ﺘ‬
‫ﺳ‬‫ﺳ‬ ‫ﺑﺎ‬
‫)‪")(10/0‬‬
‫ﺑﺎ‬ ‫ﺒﺎﻋ ﺔ‬ ‫ﺳﻢ‪4) :‬‬
‫)‪5‬ﻃ‬ ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬
‫اﻻ‬
‫ﺒﺎﻋ ﺔ )"أﺧﻴ ﺮًا"(‬
‫أﺧﻴ ﺮًا‪7) :‬ﻃ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪92‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺣﺎول ﻓ ﻲ اﻟﻨﻬﺎﻳ ﺔ‬

‫ﺒﻴﻌ ﻲ(‬
‫‪ZeroDivisionError:‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ )إﻧﻬﺎء ﻏﻴﺮ ﻃ‬

‫ﺘﺨﺪم اﻟﺪاﻟ ﺔ ‪os._exit (0).‬‬


‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﺤﻈﺮ اﻟﻨﻬﺎﺋ ﻲ ‪ ،‬أي ﻋﻨﺪﻣﺎ ﻧ ﺴ‬
‫***ﻣﻼﺣﻈ ﺔ‪ :‬ﻫﻨﺎك ﻣﻮﻗﻒ واﺣﺪ ﻓﻘﻂ ﺣﻴ ﺚ ﻟﻦﻳ‬

‫ﺘﻢﺗﻨﻔﻴﺬ أﺧﻴ ﺮًا‪.‬‬


‫ﺑﺎﻟﺬا ت ﻟﻦﻳ‬‫ﺘﻢ إﻏﻼق ‪Python Virtual Machine‬ﻧﻔ ﺴﻬﺎ ‪ ،‬وﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ‬
‫ﺘﺨﺪم اﻟﺪاﻟ ﺔ ‪os._exit (0) ،‬ﻓ ﺴﻴ‬
‫ﻋﻨﺪﻣﺎ ﻧ ﺴ‬

‫ﺒﺎﻋ ﺔ‬
‫ﺘﻮرد )‪2‬ﺣﺎول‪3) :‬ﻃ‬
‫ﺗﺴ‬‫)‪1‬‬
‫)"ﺟﺮ ب"( )‪4) os._exit (0) 5‬‬
‫ﺒﺎﻋﺔﺔ‬
‫ﺒﺎﻋ‬
‫)‪8‬ﻃﻃ‬
‫ﺳﻢ‪:‬ا‪6) :‬‬
‫اﻻأﺧﻴ ًﺮ‬
‫ﺧﻄﺄ )‪7‬‬ ‫ﺜﻨﺎء‬
‫ﺜﻨﺎء"(‬‫ﺘ‬‫ﺘ‬
‫ﺳ‬‫ﺳ‬‫ﺑﺎ‬
‫ﺑﺎ‬
‫)"‬
‫)"أﺧﻴ ﺮًا"(‬

‫اﻹﺧﺮاج‪ :‬ﺣﺎول‬

‫ﻣﻠﺤﻮﻇ ﺔ‪:‬‬

‫)‪os._exit (0‬‬
‫ﺜﻞ ‪0‬رﻣﺰ اﻟﺤﺎﻟ ﺔ وﻳﺸﻴﺮ إﱃ اﻹﻧﻬﺎء اﻟﻌﺎدي‬
‫ﺣﻴ ﺚﻳﻤ‬
‫ﻫﻨﺎك اﻟﻌﺪﻳﺪ ﻣﻦ رﻣﻮز اﻟﺤﺎﻟ ﺔ اﻟﻤﻤﻜﻨ ﺔ‪.‬‬

‫ﺜﻨﺎء اﻟﻨﻬﺎﻳ ﺔ‪:‬‬


‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﺪﻓﻖ ﻓ ﻲ اﻟﻤﺤﺎوﻟ ﺔ‬
‫ﺘﺤﻜﻢ ﻓ ﻲ اﻟ‬
‫اﻟ‬
‫ﻳﺤﺎول‪:‬‬
‫‪stmt-1‬‬
‫‪stmt-2‬‬
‫‪stmt-3‬‬

‫ﺜﻨ ﻲ‪:‬‬
‫ﺘ‬‫ﻳﺴ‬
‫‪stmt-4‬‬

‫أﺧﻴﺮاً‪:‬‬
‫‪stmt-5‬‬
‫‪stmt-6‬‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪1:‬إذا ﻟﻢﻳﻜﻦ ﻫﻨﺎك اﺳ‬
‫‪1،2،3،5،6‬اﻹﻧﻬﺎء اﻟﻌﺎدي‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ‬
‫ﺜﻨﺎء ﻛ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻘ ﺔ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt2‬واﻟﻤﻄﺎ‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪2:‬إذا أ‬
‫‪1،4،5،6‬اﻹﻧﻬﺎء اﻟﻌﺎدي‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪93‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺑﻠ ﺔ ﻏﻴﺮ ﻣ‬
‫ﺜﻨﺎء اﻟﻤﻘﺎ‬
‫ﺘ‬‫ﺘﻠ ﺔ اﻻﺳ‬
‫ﺜﻨﺎء ﻋﻨﺪ ‪stmt2‬ﻟﻜﻦ ﻛ‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪3:‬ﻓ ﻲ ﺣﺎﻟ ﺔ ﻇﻬﻮر اﺳ‬
‫ﺒﻴﻌ ﻲ‬
‫‪1،5‬إﻧﻬﺎء ﻏﻴﺮ ﻃ‬

‫ﺘﻠ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ‪.‬‬


‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﻜ‬
‫ﺒﻞ أنﻳ‬
‫ﺒﻴﻌ ﻲ وﻟﻜﻦ ﻗ‬
‫ﺋﻤﺎ إﻧﻬﺎء ﻏﻴﺮ ﻃ‬
‫ﺜﻨﺎء ﻋﻨﺪ ‪stmt4 ،‬ﻓ ﺴﻴﻜﻮن دا ً‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪4:‬إذاﺗﻢ ﻃﺮح اﺳ‬

‫ﺒﻴﻌ ﻲ‬
‫ﺋﻤﺎ إﻧﻬﺎء ﻏﻴﺮ ﻃ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-5‬أو ‪stmt-6 ،‬ﻓﻬﻮ دا ً‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪5:‬إذا أ‬

‫ﺘﺪاﺧﻠ ﺔ‪:‬‬
‫ﺜﻨﺎء اﻟﻨﻬﺎﻳ ﺔ اﻟﻤ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻞ اﻟﻤﺤﺎوﻟ ﺔ‬
‫ﻛ‬
‫ﺜﻨﺎء ‪block‬أو أﺧﻴ ﺮًا‪.‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻞ ‪try-except-finally‬داﺧﻞ ‪try‬أو‬
‫ﻳﻤﻜﻨﻨﺎ أﺧﺬ اﻟﻜ‬

‫ﻳﺤﺎول‪:‬‬
‫‪----------‬‬
‫‪----------‬‬
‫‪----------‬‬
‫ﻳﺤﺎول‪:‬‬
‫‪-------------‬‬
‫‪--------------‬‬
‫‪--------------‬‬
‫ﺜﻨ ﻲ‪:‬‬
‫ﺘ‬‫ﻳﺴ‬
‫‪--------------‬‬
‫‪--------------‬‬
‫‪--------------‬‬
‫‪------------‬‬
‫ﺜﻨ ﻲ‪:‬‬
‫ﺘ‬‫ﻳﺴ‬
‫‪-----------‬‬
‫‪-----------‬‬
‫‪-----------‬‬

‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ أﺧﺬ ﻫﺎ‬


‫ﺘ ﻲﻳ‬
‫ﺑﺎﻟﻤﺨﺎﻃﺮ اﻟ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻤﺤﻔﻮﻓ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺜﻴﺮ ﻣﻦ اﻟ‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ اﻟﺨﺎرﺟﻴ ﺔ واﻟﻜ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ أﺧﺬه داﺧﻞ ﻛ‬
‫ﺑﺎﻟﻤﺨﺎﻃﺮﻳ‬‫رﻣﺰ ﻋﺎم ﻣﺤﻔﻮف‬
‫ﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‪ .‬إذا‬
‫ﺘﻠ ﺔ ﻫ ﻲ اﻟﻤ ﺴﺆوﻟ ﺔ ﻋﻦ اﻟ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ اﻟﺪاﺧﻠﻴ ﺔ‬
‫ﺜﻨﺎء ‪ ،‬ﻓﺈن اﻟﻜ‬
‫ﺘ‬‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ اﻟﺪاﺧﻠﻴ ﺔ إذاﺗﻢ رﻓﻊ اﺳ‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ اﻟﺪاﺧﻠﻴ ﺔ‪ .‬داﺧﻞ ﻛ‬
‫داﺧﻞ ﻛ‬
‫ﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‪.‬‬
‫ﺘﻠ ﺔ ﻫ ﻲ اﻟﻤ ﺴﺆوﻟ ﺔ ﻋﻦ اﻟ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ اﻟﺨﺎرﺟﻴ ﺔ‬
‫ﺘﻌﺎﻣﻞ ‪ ،‬ﻓﺈن اﻟﻜ‬
‫ﻛﺎن ﻏﻴﺮ ﻗﺎدر ﻋﲆ اﻟ‬

‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ اﻟﺨﺎرﺟﻴ ﺔ"( )‪3‬ﺟﺮ ب‪:‬‬


‫ﺒﺎﻋ ﺔ )"ﻛ‬
‫)‪1‬ﺟﺮ ب‪2) :‬ﻃ‬
‫ﺒﺎﻋ ﺔ )‪(10/0) 5) 6‬‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ اﻟﺪاﺧﻠﻴ ﺔ"( ﻃ‬
‫ﺒﺎﻋ ﺔ )"ﻛ‬
‫)‪4‬ﻃ‬
‫)"اﻟﺠﺰء‬
‫)"اﻟﺠﺰء‬ ‫ﻃﺔ‬
‫ﺒﺎﻋ ﺔ‬‫ﺒﺎﻋ‬
‫‪ZeroDivisionError:‬ﻃ)‪9‬‬
‫ﺘﻠ ﺔ" ( )‪8‬أﺧﻴ ﺮًا‪:‬‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫)‪7‬‬
‫ﺑﺎﺳ‬‫ﺜﻨﺎء‬‫ﺘ‬‫ﺑﺎﺳ‬
‫اﻟﺪاﺧﻠ ﻲ‬
‫اﻟﺪاﺧﻠ ﻲ أﺧﻴ ًﺮا"(‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪94‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺒﺎﻋ ﺔ )"اﻟﺠﺰء اﻟﺨﺎرﺟ ﻲ‬
‫ﺜﻨﺎء‪11) :‬ﻃ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪10‬‬
‫ﺘﻠ ﺔ اﻟﺨﺎرﺟﻴ ﺔ‬
‫ﺒﺎﻋ ﺔ )"اﻟﻜ‬
‫ﺘﻠ ﺔ"( )‪12‬أﺧﻴ ﺮًا‪13) :‬ﻃ‬
‫اﻟﻜ‬
‫اﻟﻨﻬﺎﺋﻴ ﺔ"(‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ اﻟﺨﺎرﺟﻴ ﺔ‬
‫ﻛ‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ اﻟﺪاﺧﻠﻴ ﺔ‬
‫ﻛ‬
‫ﺘﻠ ﺔ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫اﻟﺪاﺧﻠﻴ ﺔ‬
‫ﺘﻠ ﺔ‬
‫ﺘﻠ ﺔ اﻟﺪاﺧﻠﻴ ﺔ أﺧﻴ ًﺮا اﻟﻜ‬
‫اﻟﻜ‬
‫اﻟﺨﺎرﺟﻴ ﺔ أﺧﻴ ﺮًا‬

‫ﺜﻨﺎء اﻟﻨﻬﺎﻳ ﺔ‪:‬‬


‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﺪاﺧﻠ ﺔ‬
‫ﺘﺪﻓﻖ ﻓ ﻲ اﻟﻤﺤﺎوﻟ ﺔ اﻟﻤ‬
‫ﺘﺤﻜﻢ ﻓ ﻲ اﻟ‬
‫اﻟ‬
‫ﻳﺤﺎول‪:‬‬
‫‪stmt-1‬‬
‫‪stmt-2‬‬
‫‪stmt-3‬‬

‫ﻳﺤﺎول‪:‬‬
‫‪stmt-4‬‬
‫‪stmt-5‬‬
‫‪stmt-6‬‬

‫ﺜﻨﺎء ‪X:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪stmt-7‬‬

‫أﺧﻴﺮاً‪:‬‬
‫‪stmt-8‬‬
‫‪stmt-9‬‬

‫ﺜﻨﺎء ص‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬

‫‪stmt-10‬‬

‫أﺧﻴﺮاً‪:‬‬
‫‪stmt-11‬‬
‫‪stmt-12‬‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪1:‬إذا ﻟﻢﻳﻜﻦ ﻫﻨﺎك اﺳ‬
‫‪1،2،3،4،5،6،8،9،11،12‬اﻹﻧﻬﺎء اﻟﻌﺎدي‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻘ ﺔ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-2‬واﻟﻤﻄﺎ‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪2:‬إذا أ‬
‫‪1،10،11،12‬اﻹﻧﻬﺎء اﻟﻌﺎدي‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺑﻠ ﺔ ﻏﻴﺮ ﻣ‬
‫ﺜﻨﺎء اﻟﻤﻘﺎ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ‬
‫ﺜﻨﺎء ﻋﻨﺪ ‪stmt-2‬وﻛ‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪3:‬إذاﺗﻢ رﻓﻊ اﺳ‬
‫ﺒﻴﻌ ﻲ‬
‫‪1،11 ،‬إﻧﻬﺎء ﻏﻴﺮ ﻃ‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺘﻠ ﺔ اﻟﻤ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺜﻨﺎء ﻋﻨﺪ ‪stmt-5‬وداﺧﻠ ﻲ‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪4:‬إذاﺗﻢ رﻓﻊ اﺳ‬
‫‪1،2،3،4،7،8،9،11،12‬اﻹﻧﻬﺎء اﻟﻌﺎدي‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪95‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺘﻠ ﺔ اﻟﻤ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻘ ﺔ وﻟﻜﻦ ﺧﺎرﺟﻴ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺘﻠ ﺔ ﻏﻴﺮ ﻣ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺜﻨﺎء ﻋﻨﺪ ‪stmt-5‬وداﺧﻠ ﻲ‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪5:‬إذاﺗﻢ رﻓﻊ اﺳ‬
‫‪1،2،3،4،8،10،11،12 ،‬اﻹﻧﻬﺎء اﻟﻌﺎدي‬

‫ﺘﻞ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻞ اﻟﺪاﺧﻠﻴ ﺔ واﻟﺨﺎرﺟﻴ ﺔ‬
‫ﺑﻘ ﺔ اﻟﻜ‬
‫ﺘﻢ ﻣﻄﺎ‬
‫ﺜﻨﺎء ﻋﻨﺪ ‪stmt-5‬وﻟﻢﺗ‬
‫ﺘ‬‫اﻟﺤﺎﻟ ﺔ ‪6:‬ﻓ ﻲ ﺣﺎﻟ ﺔ ﻇﻬﻮر اﺳ‬
‫ﺒﻴﻌ ﻲ‬
‫‪1،2،3،4،8،11 ،‬إﻧﻬﺎء ﻏﻴﺮ ﻃ‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺘﻠ ﺔ اﻟﻤ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻠﻬﺎ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-7‬وﻣﺎﻳﻘﺎ‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪7:‬إذا أ‬
‫‪1،2،3 ،. ،. ،. ، 8،10،11،12 ،‬اﻹﻧﻬﺎء اﻟﻌﺎدي‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺘﻠ ﺔ ﻏﻴﺮ ﻣ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻠﻬﺎ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-7‬وﻣﺎﻳﻘﺎ‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪8:‬إذا أ‬
‫ﺒﻴﻌ ﻲ‬
‫‪1،2،3 ،. ،. ،. ، 8،11 ،‬إﻧﻬﺎء ﻏﻴﺮ ﻃ‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺘﻠ ﺔ اﻟﻤ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻠﻬﺎ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-8‬وﻣﺎﻳﻘﺎ‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪9:‬إذا أ‬
‫‪1،2،3 ،. ،. ،. ،. ، 10،11،12‬اﻹﻧﻬﺎء اﻟﻌﺎدي‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺘﻠ ﺔ ﻏﻴﺮ ﻣ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻠﻬﺎ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-8‬وﻣﺎﻳﻘﺎ‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪10:‬إذا أ‬
‫ﺒﻴﻌ ﻲ‬
‫‪1،2،3 ،. ،. ،. ،. ، 11 ،‬إﻧﻬﺎء ﻏﻴﺮ ﻃ‬

‫ﺑﻘ ﺔ ‪1،2،3 ،. ،. ،. ،. ، 8،10،11،12 ،‬إﻧﻬﺎء ﻋﺎدي‬


‫ﺘﻠ ﺔ اﻟﻤﻄﺎ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻠﻬﺎ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-9‬وﻣﺎﻳﻘﺎ‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪11:‬إذا أ‬

‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺘﻠ ﺔ ﻏﻴﺮ ﻣ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻠﻬﺎ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-9‬وﻣﺎﻳﻘﺎ‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪12:‬إذا أ‬
‫ﺒﻴﻌ ﻲ‬
‫‪1،2،3 ،. ،. ،. ،. ، 8،11 ،‬إﻧﻬﺎء ﻏﻴﺮ ﻃ‬

‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﺤﻈﺮ اﻟﻨﻬﺎﺋ ﻲ ‪(stmt-11).‬‬


‫ﺒﻴﻌ ﻲ ‪،‬ﺳﻴ‬
‫ﺒﻞ إﻧﻬﺎء ﻏﻴﺮ ﻃ‬
‫ﺒﻴﻌ ﻲ وﻟﻜﻦ ﻗ‬
‫ﺋﻤﺎ إﻧﻬﺎء ﻏﻴﺮ ﻃ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-10 ،‬ﻓﻬﻮ دا ً‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪13:‬إذا أ‬

‫ﺒﻴﻌ ﻲ‪.‬‬
‫ﺋﻤﺎ إﻧﻬﺎء ﻏﻴﺮ ﻃ‬
‫ﺜﻨﺎء ﻓ ﻲ ‪stmt-11‬أو ‪stmt-12 ،‬ﻓﻬﻮ دا ً‬
‫ﺘ‬‫ﺛﻴﺮ اﺳ‬
‫اﻟﺤﺎﻟ ﺔ ‪14:‬إذا أ‬

‫ﺒﺎري ﻓ ﻲ اﻟﻨﻬﺎﻳ ﺔ‪.‬‬


‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﺤﻈﺮ اﻹﺟ‬
‫ﺘﻠ ﺔ ‪try ،‬ﻓ ﺴﻴ‬
‫ﺘﺤﻜﻢ ﻓ ﻲ ﻛ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬إذاﺗﻢ إدﺧﺎل ﻋﻨﺼﺮ اﻟ‬
‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﺤﻈﺮ ﻓ ﻲ اﻟﻨﻬﺎﻳ ﺔ‪.‬‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ ‪ ،‬ﻓﻠﻦﻳ‬
‫ﺘﺤﻜﻢ ﻓ ﻲ ﻛ‬
‫ﺘﻢ إدﺧﺎل ﻋﻨﺼﺮ اﻟ‬
‫إذا ﻟﻢﻳ‬

‫ﺜﻨﺎء‪-‬أﺧﻴ ﺮًا‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﺨﺪام اﻟﻤﺤﺎوﻟ ﺔ‬
‫ﺑﺎﺳ‬‫آﺧﺮ ﺣﻈﺮ‬
‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫ﺘﻠ ﺔ ‪else‬إذا وﻓﻘﻂ ﻓ ﻲ ﺣﺎﻟ ﺔ ﻋﺪم وﺟﻮد اﺳ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻛ‬
‫ﺘﻞ ‪try-except-final block.‬ﺳﻴ‬
‫ﺘﺨﺪام ‪else‬ﻣﻊ ﻛ‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﻠ ﺔ ‪try.‬‬
‫داﺧﻞ ﻛ‬

‫ﻳﺤﺎول‪:‬‬

‫ﺘﻢﺗﻨﻔﻴﺬه إذا ﻛﺎن ﻫﻨﺎك‬


‫ﺜﻨﺎء‪:‬ﺳﻴ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﺎﻟﻤﺨﺎﻃﺮ‬‫رﻣﺰ ﻣﺤﻔﻮف‬
‫ﺜﻨﺎء داﺧﻞ اﻟﻤﺤﺎوﻟ ﺔ‬
‫ﺘ‬‫اﺳ‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪96‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫آﺧﺮ‪:‬‬

‫ﺜﻨﺎء داﺧﻞ اﻟﻤﺤﺎوﻟ ﺔ‬


‫ﺘ‬‫ﺘﻢﺗﻨﻔﻴﺬه إذا ﻟﻢﻳﻜﻦ ﻫﻨﺎك اﺳ‬
‫ﺳﻴ‬
‫أﺧﻴﺮاً‪:‬‬
‫ﺘﻪ‬
‫ﺘﻪ أو ﻋﺪم ﻣﻌﺎﻟﺠ‬
‫ﺜﻨﺎء أو ﻋﺪم رﻓﻌﻪ وﻣﻌﺎﻟﺠ‬
‫ﺘ‬‫ﺘﻢﺗﻨﻔﻴﺬهﺳﻮاءﺗﻢ رﻓﻊ اﻻﺳ‬
‫ﺳﻴ‬

‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬


‫ﻃ‬
‫)‪(10/0‬‬ ‫ﺒﺎﻋ ﺔ ‪1‬‬
‫ﻃ‬
‫ﺜﻨ ﻲ‪:‬‬
‫ﺘ‬‫ﻳﺴ‬
‫ﺜﻨﺎء"(‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬
‫آﺧﺮ‪:‬‬

‫ﺒﺎﻋ ﺔ )"آﺧﺮ"(‬
‫ﻃ‬
‫أﺧﻴﺮاً‪:‬‬
‫ﺒﺎﻋ ﺔ )"أﺧﻴ ﺮًا"(‬
‫ﻃ‬

‫ﺜﻨﺎء داﺧﻞ اﻟﻤﺤﺎوﻟ ﺔ‪.‬‬


‫ﺘ‬‫ﺘﻠ ﺔ وإﻻ ﻓﻠﻦﻳﻜﻮن ﻫﻨﺎك اﺳ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻛ‬
‫ﺘﻌﻠﻴﻖ ﻋﲆ اﻟ ﺴﻄﺮ ‪1 ،‬ﻓ ﺴﻴ‬
‫ﺑﺎﻟ‬‫إذا ﻗﻤﻨﺎ‬
‫ﺗﺞ‪:‬‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔﻳﻜﻮن اﻟﻨﺎ‬
‫ﻳﺤﺎول‬

‫آﺧﺮ‬
‫أﺧﻴﺮا ً‬

‫ﺗﺞ‪:‬‬
‫ﺘﻠ ﺔ ‪try.‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔﻳﻜﻮن اﻟﻨﺎ‬
‫ﺜﻨﺎء داﺧﻞ ﻛ‬
‫ﺘ‬‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﺤﻈﺮ وإﻻ ﻓ ﺴﻴﻜﻮن ﻫﻨﺎك اﺳ‬
‫ﺘﻌﻠﻴﻖ ﻋﲆ اﻟ ﺴﻄﺮ اﻷول ‪ ،‬ﻓﻠﻦﻳ‬
‫ﺑﺎﻟ‬‫إذا ﻟﻢ ﻧﻘﻢ‬

‫ﻳﺤﺎول‬

‫ﺜﻨ ﻲ‬
‫ﺘ‬‫ﻳﺴ‬
‫أﺧﻴﺮا ً‬

‫ﺘﻠﻔ ﺔ ﻣﻤﻜﻨ ﺔ ﻣﻦ ‪try-except-else-finally:‬‬


‫ﻣﺠﻤﻮﻋﺎ ت ﻣﺨ‬
‫ﺑ ﺔ ‪try block.‬‬
‫ﺘﺎ‬
‫ﺜﻨﺎء أو ﻓ ﻲ اﻟﻨﻬﺎﻳ ﺔ ﻻﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﺘ‬‫ﺘ ﺐ ﻣﺎ ﻋﺪا أو ‪block.ie‬ﻓ ﻲ اﻟﻨﻬﺎﻳ ﺔ دون اﺳ‬
‫ﺘﻠ ﺔ ‪try ،‬ﻳﺠ ﺐ أن ﻧﻜ‬
‫ﺘﺐ ﻛ‬
‫)‪1‬ﻋﻨﺪﻣﺎ ﻧﻜ‬

‫ﺑﺪون ﻣﺤﺎوﻟ ﺔ ﻫﻮ داﺋﻤﺎ ﻏﻴﺮ ﺻﺎﻟﺢ‪.‬‬‫ﺘﻠ ﺔ ‪try.‬أي ﻣﺎ ﻋﺪا‬


‫ﺘﺐ ﻛ‬
‫ﺘﻠ ﺔ ‪،‬ﻳﺠ ﺐ أن ﻧﻜ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘ ﺐ ﻓﻴﻪ‬
‫)‪2‬ﻓ ﻲ أي وﻗ ﺖ ﻧﻜ‬

‫ﺘﻠ ﺔ ‪try.‬أي أﺧﻴﺮا دون ﻣﺤﺎوﻟ ﺔ ﻫﻮ داﺋﻤﺎ ﻏﻴﺮ ﺻﺎﻟﺢ‪.‬‬


‫ﺘﺐ ﻛ‬
‫ﺑﺸﻜﻞ ﻧﻬﺎﺋ ﻲ ‪،‬ﻳﺠ ﺐ أن ﻧﻜ‬‫ﺘﺐ‬
‫)‪3‬ﻋﻨﺪﻣﺎ ﻧﻜ‬

‫ﺘﻞ‬
‫ﺑ ﺔ ﻋﺪة ﻛ‬
‫ﺘﺎ‬
‫ﺜﻨﺎء ﻧﻔ ﺲ اﻟﻤﺤﺎوﻟ ﺔ ‪ ،‬ﻟﻜﻦ ﻻﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻌﺪدة‬
‫ﺘﻞ ﻣ‬
‫ﺑﺔ ﻛ‬
‫ﺘﺎ‬
‫)‪4‬ﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﺘﻞ ﻟﻨﻔ ﺲ اﻟﻤﺤﺎوﻟ ﺔ‬
‫أﺧﻴ ﺮًا ﻛ‬
‫ﺘﻠ ﺔ‪ .‬أي‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ إﻟﺰاﻣﻴ ﺔ‬
‫ﺘﻠ ﺔ أﺧﺮىﻳﺠ ﺐ أنﺗﻜﻮن ﻫﻨﺎك ﻛ‬
‫ﺘ ﺐ ﻓﻴﻪ ﻛ‬
‫)‪5‬ﻓ ﻲ أي وﻗ ﺖ ﻧﻜ‬
‫ﺘﻠ ﺔ أﺧﺮى‪.‬‬
‫ﺑﺔ ﻛ‬
‫ﺘﺎ‬
‫ﺑﺪون إﻻ ﻻﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﺗﻴ ﺐ ﻣﺤﺎوﻟ ﺔ ﻣﺎ ﻋﺪا آﺧﺮ أﺧﻴ ﺮًا‪.‬‬
‫)‪6‬ﻣﻦ اﻟﻤﻬﻢﺗﺮ‬
‫ﺋﻤﺎﺗﺪاﺧﻞ ﻣﺤﺎوﻟ ﺔ ﻣﺎ‬
‫ﺜﺎل ‪ ،‬ﻣﻦ اﻟﻤﻤﻜﻦ دا ً‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻞ‪ .‬ﻋﲆﺳ‬
‫ﺜﻨﺎء ‪else ، ،‬وأﺧﻴ ﺮًا اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪7‬ﻳﻤﻜﻨﻨﺎﺗﺤﺪﻳﺪ ‪try-except-else-‬أﺧﻴ ﺮًا داﺧﻞ ‪try ،‬‬
‫ﻋﺪا ‪ ،‬آﺧﺮ ‪ ،‬أﺧﻴ ًﺮا‪.‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪97‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﻳﺤﺎول‪:‬‬
‫‪1‬‬
‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬
‫ﻃ‬
‫ﺒﺎ"(‬
‫ﺒﺎﻋ ﺔ )"ﻣﺮﺣ ً‬
‫ﺜﻨﺎء‪ :‬ﻃ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪2‬‬

‫آﺧﺮ‪:‬‬
‫‪3‬‬
‫ﺒﺎ"(‬
‫ﺒﺎﻋ ﺔ )"ﻣﺮﺣ ً‬
‫ﻃ‬
‫ﺒﺎ"(‬
‫ﺒﺎﻋ ﺔ )"ﻣﺮﺣ ً‬
‫أﺧﻴ ﺮًا‪ :‬ﻃ‬
‫‪4‬‬

‫ﻳﺤﺎول‪:‬‬

‫)"‪print ("try‬‬
‫‪5‬‬
‫ﺜﻨﺎء‪print ("except") :‬‬
‫ﺘ‬‫ﺑﺎﺳ‬

‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬


‫ﻃ‬
‫‪6‬‬
‫ﺒﺎﻋ ﺔ )"أﺧﻴ ًﺮا"(‬
‫أﺧﻴ ًﺮا‪ :‬ﻃ‬

‫ﻳﺤﺎول‪:‬‬

‫)"‪print ("try‬‬
‫ﺜﻨﺎء‪print ("except") :‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪7‬‬

‫آﺧﺮ‪:‬‬

‫ﺒﺎﻋ ﺔ )"آﺧﺮ"(‬
‫ﻃ‬
‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬


‫ﻃ‬
‫‪8‬‬
‫آﺧﺮ‪:‬‬

‫ﺒﺎﻋ ﺔ )"آﺧﺮ"(‬
‫ﻃ‬
‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬


‫ﻃ‬
‫آﺧﺮ‪:‬‬
‫‪9‬‬
‫ﺒﺎﻋ ﺔ )"آﺧﺮ"( أﺧﻴ ﺮًا‪:‬‬
‫ﻃ‬
‫ﺒﺎﻋ ﺔ )"أﺧﻴ ﺮًا"(‬
‫ﻃ‬

‫ﻳﺤﺎول‪:‬‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)"‪print ("try‬‬
‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)"‪XXX: print ("except-1‬‬
‫‪10‬‬
‫)"‪YYY: print ("except-2‬‬

‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬‫ﻃ‬


‫‪11‬‬
‫ﺜﻨ ﻲ ‪:‬‬‫ﺘ‬‫ﻳﺴ‬
‫ﺜﻨﺎء )"‪-1‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪98‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫آﺧﺮ‪:‬‬

‫ﺒﺎﻋ ﺔ )"آﺧﺮ"(‬
‫ﻃ‬
‫آﺧﺮ‪:‬‬

‫ﺒﺎﻋ ﺔ )"آﺧﺮ"(‬
‫ﻃ‬
‫ﻳﺤﺎول‪:‬‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)"‪print ("try‬‬
‫ﺒﺎﻋ ﺔ‬
‫)"‪print ("except-1‬أﺧﻴ ﺮًا‪ :‬ﻃ‬
‫ﺒﺎﻋ ﺔ )"أﺧﻴ ﺮًا"(‬
‫)"أﺧﻴ ﺮًا"( أﺧﻴ ﺮًا‪ :‬ﻃ‬
‫‪12‬‬

‫ﻳﺤﺎول‪:‬‬

‫)"‪print ("Hello‬‬
‫‪13‬‬ ‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)"‪print ("try‬‬
‫)"‪print ("except‬‬

‫ﻳﺤﺎول‪:‬‬

‫)"‪print ("try‬‬
‫ﺜﻨﺎء‪print ("Hello") :‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪14‬‬ ‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)"‪print ("except‬‬
‫)"‪print ("except‬‬

‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬


‫ﻃ‬
‫ﺜﻨﺎء"(‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﺜﻨﺎء‪ :‬ﻃ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪15‬‬ ‫ﺒﺎﻋ ﺔ‬
‫ﺒﺎ"( أﺧﻴ ﺮًا‪ :‬ﻃ‬
‫ﺒﺎﻋ ﺔ )"ﻣﺮﺣ ً‬
‫ﻃ‬
‫)"أﺧﻴ ًﺮا"(‬

‫ﻳﺤﺎول‪:‬‬

‫)"‪print ("try‬‬
‫ﺜﻨﺎء‪print ("Hello") :‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪16‬‬ ‫)"‪print ("except‬وإﻻ‪:‬‬

‫ﺒﺎﻋ ﺔ )"آﺧﺮ"(‬
‫ﻃ‬
‫ﻳﺤﺎول‪:‬‬

‫)"‪print ("try‬‬
‫ﺜﻨﺎء‪print ("except") :‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪17‬‬

‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬


‫ﻃ‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪99‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎء"(‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﺜﻨﺎء‪ :‬ﻃ‬
‫ﺘ‬‫ﺑﺎﺳ‬

‫ﻳﺤﺎول‪:‬‬

‫)"‪print ("try‬‬
‫ﺜﻨﺎء‪print ("except") :‬‬
‫ﺘ‬‫ﺑﺎﺳ‬

‫‪18‬‬
‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬


‫ﻃ‬
‫ﺒﺎﻋ ﺔ )"أﺧﻴ ﺮًا"(‬
‫أﺧﻴ ﺮًا‪ :‬ﻃ‬

‫ﻳﺤﺎول‪:‬‬

‫)"‪print ("try‬‬
‫ﺜﻨﺎء‪print ("except") :‬‬
‫ﺘ‬‫ﺑﺎﺳ‬

‫‪19‬‬
‫إذا ﻛﺎن ‪10> 20:‬‬

‫ﺒﺎﻋ ﺔ )"إذا"(‬
‫ﻃ‬
‫آﺧﺮ‪:‬‬

‫ﺒﺎﻋ ﺔ )"آﺧﺮ"(‬
‫ﻃ‬
‫ﻳﺤﺎول‪:‬‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)"‪print ("try") try: print ("inner try‬‬
‫ﺒﺎﻋ ﺔ‬
‫)"‪print ("inner except block‬أﺧﻴ ﺮًا‪ :‬ﻃ‬
‫)"اﻟﺠﺰء اﻟﺪاﺧﻠ ﻲ أﺧﻴ ﺮًا"(‬

‫‪20‬‬

‫ﺜﻨﺎء"(‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﺜﻨﺎء‪ :‬ﻃ‬
‫ﺘ‬‫ﺑﺎﺳ‬

‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬


‫ﻃ‬

‫ﺜﻨﺎء"( ﺣﺎول‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﺜﻨﺎء‪ :‬ﻃ‬
‫ﺘ‬‫ﺑﺎﺳ‬

‫‪21‬‬
‫ﺒﺎﻋ ﺔ‬
‫ﺜﻨﺎء‪ :‬ﻃ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺒﺎﻋ ﺔ )"ﻣﺤﺎوﻟ ﺔ داﺧﻠﻴ ﺔ"(‬
‫ﻃ‬
‫ﺘﻠ ﺔ‬
‫ﺒﺎﻋ ﺔ )"ﻛ‬
‫ﺘﻠ ﺔ"( أﺧﻴ ًﺮا‪ :‬ﻃ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫)"داﺧﻠ ﻲ‬
‫داﺧﻠﻴ ﺔ أﺧﻴ ﺮًا"(‬

‫ﻳﺤﺎول‪:‬‬

‫ﺜﻨﺎء‪print ("except") :‬‬


‫ﺘ‬‫ﺑﺎﺳ‬
‫)"‪print ("try‬‬
‫‪22‬‬ ‫أﺧﻴ ﺮًا‪:‬‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪100‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﻳﺤﺎول‪:‬‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺒﺎﻋ ﺔ )"ﻣﺤﺎوﻟ ﺔ داﺧﻠﻴ ﺔ"(‬
‫ﻃ‬
‫ﺒﺎﻋ ﺔ‬
‫ﺘﻠ ﺔ"( أﺧﻴ ﺮًا‪ :‬ﻃ‬
‫ﺜﻨﺎء اﻟﻜ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺒﺎﻋ ﺔ )"داﺧﻠ ﻲ‬
‫ﻃ‬
‫ﺘﻠ ﺔ داﺧﻠﻴ ﺔ أﺧﻴ ﺮًا"(‬
‫)"ﻛ‬

‫ﻳﺤﺎول‪:‬‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)"‪print ("try‬‬
‫)"‪print ("except‬‬

‫‪23‬‬
‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬


‫ﻃ‬
‫آﺧﺮ‪:‬‬

‫ﺒﺎﻋ ﺔ )"آﺧﺮ"(‬
‫ﻃ‬

‫ﻳﺤﺎول‪:‬‬

‫ﺒﻊ )"ﺟﺮ ب"(‬


‫اﻃ‬
‫ﺟﺮ ب‪:‬‬
‫‪24‬‬
‫ﺒﺎﻋ ﺔ )"ﻣﺤﺎوﻟ ﺔ داﺧﻠﻴ ﺔ"(‬
‫ﻃ‬
‫ﺜﻨﺎء"(‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﺜﻨﺎء‪ :‬ﻃ‬
‫ﺘ‬‫ﺑﺎﺳ‬

‫ﻳﺤﺎول‪:‬‬

‫ﺒﺎﻋ ﺔ )"ﺟﺮ ب"(‬


‫ﻃ‬
‫آﺧﺮ‪:‬‬

‫ﺜﻨﺎء‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺒﺎﻋ ﺔ )"آﺧﺮ"(‬
‫ﻃ‬
‫‪25‬‬
‫ﺒﺎﻋ ﺔ‬
‫ﺜﻨﺎء"( أﺧﻴ ًﺮا‪ :‬ﻃ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬
‫)"أﺧﻴ ﺮًا"(‬

‫ﺜﻨﺎءا ت‪:‬‬
‫ﺘ‬‫أﻧﻮاع اﻻﺳ‬
‫ﺜﻨﺎءا ت اﻟﻤﻤﻜﻨ ﺔ‪.‬‬
‫ﺘ‬‫ﺜﻮن ﻫﻨﺎك ﻧﻮﻋﺎن ﻣﻦ اﻻﺳ‬
‫ﺑﺎﻳ‬‫ﻓﻲ‬
‫ﺒ ًﻘﺎ‬
‫ﺜﻨﺎءا ت ﻣﺤﺪدة ﻣ ﺴ‬
‫ﺘ‬‫)‪1‬اﺳ‬
‫ﺘﺨﺪم‬
‫ﺘ ﻲﻳﺤﺪد ﻫﺎ اﻟﻤ ﺴ‬
‫ﺜﻨﺎءا ت اﻟ‬
‫ﺘ‬‫)‪2‬اﻻﺳ‬

‫ﺒ ًﻘﺎ‪:‬‬
‫ﺜﻨﺎءا ت ﻣﺤﺪدة ﻣ ﺴ‬
‫ﺘ‬‫)‪1‬اﺳ‬
‫ﺑﻮاﺳﻄ ﺔ ﺟﻬﺎز ‪Python‬اﻟﻈﺎ ﻫﺮي ﻋﻨﺪﻣﺎﻳﻜﻮن ﻣﻠﻒ‬‫ﺘﻢ رﻓﻌﻬﺎﺗﻠﻘﺎﺋ ًﻴﺎ‬
‫ﺘ ﻲﻳ‬
‫ﺜﻨﺎءا ت اﻟ‬
‫ﺘ‬‫ﺜﻨﺎءا ت اﻟﺪاﺧﻠﻴ ﺔ‪ .‬اﻻﺳ‬
‫ﺘ‬‫ﺑﺎﺳﻢ اﻻﺳ‬ ‫ُﻌﺮف أ ً‬
‫ﻳﻀﺎ‬ ‫ﺗ‬
‫•‬

‫ﺒ ًﻘﺎ‪.‬‬
‫ﺜﻨﺎءا ت ﻣﺤﺪدة ﻣ ﺴ‬
‫ﺘ‬‫ﻳ ﺴﻤﻰ ﺣﺪ ث ﻣﻌﻴﻦﻳﺤﺪ ث اﺳ‬

‫ﺒﺎﻋ ﺔ )‪(10/0‬‬
‫ﺗﻠﻘﺎﺋ ًﻴﺎ ‪ZeroDivisionError.‬ﻃ‬
‫ﺘﺮﻓﻊ ‪Python‬‬
‫ﺜﺎل ‪1:‬ﻋﻨﺪﻣﺎ ﻧﺤﺎولﺗﻨﻔﻴﺬ اﻟﻘ ﺴﻤ ﺔ ﻋﲆ اﻟﺼﻔﺮ ‪،‬ﺳ‬
‫ﻣ‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪101‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺮﻓﻊ‬
‫ﺜﺎل ‪2:‬ﻋﻨﺪﻣﺎ ﻧﺤﺎولﺗﺤﻮﻳﻞ ﻗﻴﻤ ﺔ اﻹدﺧﺎل إﱃ ﻧﻮع ‪int‬وإذا ﻛﺎﻧ ﺖ ﻗﻴﻤ ﺔ اﻹدﺧﺎل ﻟﻴ ﺴ ﺖ ﻗﻴﻤ ﺔ ‪int ،‬ﻓﺈن ‪Python‬ﺳ‬
‫ﻣ‬
‫ﺗﻠﻘﺎﺋ ًﻴﺎ‬
‫‪ValueError‬‬
‫)"‪x = int ("ten‬‬ ‫‪ValueError‬‬

‫ﺘﺨﺪم‪:‬‬
‫ﺜﻨﺎءا ت ﻣﻦﺗﺤﺪﻳﺪ اﻟﻤ ﺴ‬
‫ﺘ‬‫)‪2‬اﺳ‬
‫ﺒﺮﻧﺎﻣﺠﻴ ﺔ‬
‫ﺜﻨﺎءا ت اﻟ‬
‫ﺘ‬‫ﺜﻨﺎءا ت اﻟﻤﺨﺼﺼ ﺔ أو اﻻﺳ‬
‫ﺘ‬‫ﺑﺎﺳﻢ اﻻﺳ‬ ‫ُﻌﺮف أ ً‬
‫ﻳﻀﺎ‬ ‫ﺗ‬
‫•‬
‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫ﺜﻨﺎءا ت اﻻﺳ‬
‫ﺘ‬‫ُﻄﻠﻖ ﻋﲆ ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻻﺳ‬
‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ ﻟﻺﺷﺎرة إﱃ ﺣﺪو ث ﺧﻄﺄ ﻣﺎ ‪،‬ﻳ‬‫ﺜﻨﺎءا ت ورﻓﻌﻬﺎ‬
‫ﺘ‬‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﺤﺪﻳﺪ اﻻﺳ‬
‫ﺑﻌﺾ اﻟﻮﻗ ﺖ ‪،‬ﻳ‬‫•ﻓ ﻲ‬
‫ﺘﺨﺪم أو اﻟﻤﺨﺼﺼ ﺔ‬
‫ﺑﻮاﺳﻄ ﺔ اﻟﻤ ﺴ‬‫اﻟﻤﺤﺪدة‬
‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫اﺳ‬
‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ﺗﻨﺎ‬
‫ﺒﺎ‬
‫ﺘﻄﻠ‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻣ‬‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ‬‫ﺛﻢ ﻋﻠﻴﻨﺎ أن ﻧﺮﻓﻊ‬‫ﺜﻨﺎءا ت وﻟﻴ ﺲ ﻟﺪى ‪Python‬أي ﻓﻜﺮة ﻋﻨﻬﺎ‪ .‬وﻣﻦ‬
‫ﺘ‬‫ﺒﺮﻣﺞ ﻣ ﺴﺆول ﻋﻦﺗﺤﺪﻳﺪ ﻫﺬه اﻻﺳ‬
‫•اﻟﻤ‬
‫ﻛﻠﻤ ﺔ "رﻓﻊ"‪.‬‬

‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫‪InSufficientFundsException‬‬
‫‪InvalidInputException‬‬
‫‪TooYoungException‬‬
‫‪TooOldException‬‬

‫ﺜﻨﺎءا ت اﻟﻤﺨﺼﺼ ﺔ ورﻓﻌﻬﺎ‪:‬‬


‫ﺘ‬‫ﻛﻴﻔﻴ ﺔﺗﺤﺪﻳﺪ اﻻﺳ‬
‫ﺒﺎﺷﺮ‪.‬‬
‫ﺒﺎﺷﺮ أو ﻏﻴﺮ ﻣ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺜﻨﺎء ﻓ ﻲ ‪ Python‬ﻫﻮ ﻓﺌ ﺔﺗﻮﺳﻊ ﻓﺌ ﺔ ‪Exception‬إﻣﺎ‬
‫ﺘ‬‫ﻛﻞ اﺳ‬

‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪:‬‬


‫ﺒ ًﻘﺎ(‪:‬‬
‫ﺜﻨﺎء اﻟﻤﺤﺪد ﻣ ﺴ‬
‫ﺘ‬‫اﺳﻢ ﻓﺌ ﺔ اﻟﻔﺌ ﺔ )اﺳﻢ ﻓﺌ ﺔ اﻻﺳ‬
‫‪def __init __ (self، arg):‬‬
‫‪self.msg = arg‬‬

‫ﺜﻨﺎء(‪arg): 3) self.msg = arg :‬‬


‫ﺘ‬‫)‪1‬ﻓﺌ ﺔ ‪)TooYoungException‬اﺳ‬
‫‪2) def __init __ (self،‬‬

‫‪ TooYoungException‬ﻫﻮ اﺳﻢ ﺻﻨﻔﻨﺎ و ﻫﻮ ﻓﺌ ﺔ ﻓﺮﻋﻴ ﺔ ﻣﻦ ‪Exception‬‬

‫ﺘﺎﻟ ﻲ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫ﺘﺨﺪام رﻓﻊ اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﺑﺎﺳ‬‫ﺜﻨﺎء‬
‫ﺘ‬‫ﻳﻤﻜﻨﻨﺎ رﻓﻊ اﺳ‬
‫رﻓﻊ )"‪TooYoungException ("message‬‬

‫ﺜﻨﺎء(‪TooOldException :‬‬
‫ﺘ‬‫)‪1‬ﻓﺌ ﺔ ‪)TooYoungException‬اﺳ‬
‫‪def __init __ (self، arg): 3) self.msg = arg 4) 5) class‬‬
‫ﺜﻨﺎء(‪__init __ (self، arg): 7) self.msg = arg 8) :‬‬
‫ﺘ‬‫ﺳ‬
‫)‪6‬‬ ‫)‪)2‬ا‬
‫‪def‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪102‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻌﺾ اﻟﻮﻗ ﺖ‬‫ﺘﻈﺮ‬


‫)‪9‬اﻟﻌﻤﺮ ‪)= int‬اﻹدﺧﺎل )"أدﺧﻞ اﻟﻌﻤﺮ‪10) ((":‬إذا ﻛﺎن اﻟﻌﻤﺮ< ) ‪60:11‬ارﻓﻊ ‪")TooYoungException‬ﻣﻦ ﻓﻀﻠﻚ اﻧ‬
‫ﺒﺎ !!!"(‬
‫ﺑﻖ ﻗﺮﻳ ً‬
‫ﺘﺤﺼﻞ ﻋﲆ أﻓﻀﻞﺗﻄﺎ‬
‫ﺳ‬

‫ﺑﺎﻟﻔﻌﻞﺳﻦ اﻟﺰواج ‪...‬‬‫ﺜﻨﺎء "( ‪TooOldException‬ﻟﻘﺪﺗﺠﺎوز ﻋﻤﺮك‬


‫ﺘ‬‫)‪12‬ﻋﻤﺮ ‪elif‬أﻗﻞ ﻣﻦ ) ‪18:13‬رﻓﻊ اﺳ‬

‫ﺘﺮوﻧ ﻲ !!! )"‬


‫ﺒﺮﻳﺪ اﻹﻟﻜ‬
‫ﺒﺮ اﻟ‬
‫ﺒﺎ ﻋ‬
‫ﺒﺎراة ﻗﺮﻳ ً‬
‫ﺘﺤﺼﻞ ﻋﲆﺗﻔﺎﺻﻴﻞ اﻟﻤ‬
‫ﺒﻊ "(ﺳ‬
‫اﻟﺰواج )‪") 14‬وإﻻ‪15) :‬اﻃ‬

‫ﺘﺤﺼﻞ ﻋﲆ‬
‫ﺑﻌﺾ اﻟﻮﻗ ﺖ وﺳ‬‫ﺘﻈﺮ‬
‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﻌﻤﺮ‪90 __main __. TooYoungException: :‬ﻣﻦ ﻓﻀﻠﻚ اﻧ‬
‫ﺒﺎ !!!‬
‫ﺑﻖ ﻗﺮﻳ ً‬
‫أﻓﻀﻞﺗﻄﺎ‬

‫ﺑﺎﻟﻔﻌﻞﺳﻦ اﻟﺰواج ‪ ...‬ﻻﺗﻮﺟﺪ ﻓﺮﺻ ﺔ ﻟﻠﺰواج‬‫ﺜﻨﺎء ﺟﺪًا‪:‬ﺗﺠﺎوز ﻋﻤﺮك‬


‫ﺘ‬‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﻌﻤﺮ‪12 __main __. :‬اﺳ‬

‫ﺘﺮوﻧ ﻲ !!!‬
‫ﺒﺮﻳﺪ اﻹﻟﻜ‬
‫ﺒﺮ اﻟ‬
‫ﺒﺎ ﻋ‬
‫ﺒﺎراة ﻗﺮﻳ ً‬
‫ﺘﺤﺼﻞ ﻋﲆﺗﻔﺎﺻﻴﻞ اﻟﻤ‬
‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﻟﻌﻤﺮ‪27 :‬ﺳ‬

‫ﺒ ًﻘﺎ‬
‫ﺜﻨﺎءا ت اﻟﻤﺤﺪدة ﻣ ﺴ‬
‫ﺘ‬‫ﺜﻨﺎءا ت اﻟﻤﺨﺼﺼ ﺔ وﻟﻜﻦ ﻟﻴ ﺲ ﻟﻼﺳ‬
‫ﺘ‬‫ﺋﻴ ﺴﻴ ﺔ ﻫ ﻲ اﻷﻧ ﺴ ﺐ ﻟﻼﺳ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬زﻳﺎدة اﻟﻜﻠﻤﺎ ت اﻟﺮ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪103‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﻣﻠﻒ‬
‫ﻣﻌﺎﻟﺠ ﺔ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪104‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺸﻜﻞ داﺋﻢ ﻣﻦ أﺟﻞ‬‫ﺗﻨﺎ‬


‫ﺑﻴﺎﻧﺎ‬‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﺨﺰﻳﻦ‬
‫ﺒﺮﻣﺠ ﺔ ‪،‬ﻳ‬
‫ﺒﺎ ت اﻟ‬
‫ﺘﻄﻠ‬
‫•ﻛﺠﺰء ﻣﻦ ﻣ‬
‫ﺒﻠ ﻲ‪ .‬ﻟﻬﺬا اﻟﻤﻄﻠ ﺐﻳﺠ ﺐ أن ﻧﺬ ﻫ ﺐ ﻟﻠﻤﻠﻔﺎ ت‪.‬‬
‫ﺘﻘ‬‫اﻟﻐﺮض اﻟﻤ ﺴ‬

‫ﺗﻨﺎ‪.‬‬
‫ﺑﻴﺎﻧﺎ‬‫ﺘﺨﺰﻳﻦ‬
‫ﺗﻌﺪ اﻟﻤﻠﻔﺎ ت ﻣﻨﺎﻃﻖﺗﺨﺰﻳﻦ داﺋﻤ ﺔ ﺷﺎﺋﻌ ﺔ ﺟﺪًا ﻟ‬
‫•‬

‫أﻧﻮاع اﻟﻤﻠﻔﺎ ت‪:‬‬


‫ﻫﻨﺎك ﻧﻮﻋﺎن ﻣﻦ اﻟﻤﻠﻔﺎ ت‬

‫)‪1‬ﻣﻠﻔﺎ ت ﻧﺼﻴ ﺔ‪:‬‬


‫ﺑﻴﺎﻧﺎ ت اﻟﺸﺨﺼﻴ ﺔ‬‫ﺘﺨﺰﻳﻦ‬
‫ﺘﺨﺪام اﻟﻤﻠﻔﺎ ت اﻟﻨﺼﻴ ﺔ ﻟ‬
‫ﻋﺎدةﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺜﺎل‪abc.txt :‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺜﻨﺎﺋﻴ ﺔ‪:‬‬
‫)‪2‬اﻟﻤﻠﻔﺎ ت اﻟ‬
‫ﺜﻞ اﻟﺼﻮر وﻣﻠﻔﺎ ت اﻟﻔﻴﺪﻳﻮ وﻣﻠﻔﺎ ت اﻟﺼﻮ ت وﻣﺎ إﱃ‬
‫ﺜﻨﺎﺋﻴ ﺔ ﻣ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﺨﺰﻳﻦ اﻟ‬
‫ﺜﻨﺎﺋﻴ ﺔ ﻟ‬
‫ﺘﺨﺪام اﻟﻤﻠﻔﺎ ت اﻟ‬
‫ﻋﺎدةﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ذﻟﻚ ‪...‬‬

‫ﺘﺢ ﻣﻠﻒ‪:‬‬
‫ﻓ‬
‫ﺜﻮن اﻟﺪاﺧﻠﻴ ﺔ )( ‪open‬‬
‫ﺑﺎﻳ‬‫ﺘﺨﺪام داﻟ ﺔ‬ ‫ﺑ ﺔ( ﻋﲆ اﻟﻤﻠﻒ ‪،‬ﻳﺠ ﺐ أوﻻ ً ﻓ‬
‫ﺘﺢ ﻫﺬا اﻟﻤﻠﻒ ‪ ،‬ﻟﺬﻟﻚﻳﺠ ﺐ اﺳ‬ ‫ﺘﺎ‬
‫ﺜﻞ اﻟﻘﺮاءة أو اﻟﻜ‬
‫ﺒﻞ إﺟﺮاء أي ﻋﻤﻠﻴ ﺔ )ﻣ‬
‫•ﻗ‬

‫ﺜﻞ اﻟﻐﺮض ﻣﻦ‬


‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﺤﺪﻳﺪ اﻟﻮﺿﻊ اﻟﺬيﻳﻤ‬
‫ﺘﺢ ‪،‬ﻳ‬
‫•وﻟﻜﻦ ﻓ ﻲ وﻗ ﺖ اﻟﻔ‬
‫ﺘﺢ اﻟﻤﻠﻒ‪.‬‬
‫ﻓ‬

‫‪)f = open‬اﺳﻢ اﻟﻤﻠﻒ ‪ ،‬اﻟﻮﺿﻊ(‬

‫ﺜﻮن ﻫ ﻲ‬
‫ﺑﺎﻳ‬‫ﺑﻬﺎ ﻓ ﻲ‬‫اﻷوﺿﺎع اﻟﻤ ﺴﻤﻮح‬

‫ﺑﺪاﻳ ﺔ اﻟﻤﻠﻒ ‪ ،‬وإذا ﻟﻢﻳﻜﻦ اﻟﻤﻠﻒ اﻟﻤﺤﺪد ﻣﻮﺟﻮدًا ‪ ،‬ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ‬‫ﺘﻢ وﺿﻊ ﻣﺆﺷﺮ اﻟﻤﻠﻒ ﻓ ﻲ‬
‫ﺘﺢ ﻣﻠﻒ ﻣﻮﺟﻮد ﻟﻌﻤﻠﻴ ﺔ اﻟﻘﺮاءة‪.‬ﻳ‬
‫ﻓ‬ ‫)‪ 1‬ص‬
‫ﺘﺮاﺿ ﻲ‪.‬‬
‫‪FileNotFoundError ،‬و ﻫﺬا ﻫﻮ اﻟﻮﺿﻊ اﻻﻓ‬

‫ﺑﺎﻟﻔﻌﻞ ‪،‬‬‫ﺣﺎ‬
‫ﺘﺎ ً‬
‫ﺘﻢﺗﺠﺎوزه‪ .‬إذا ﻟﻢﻳﻜﻦ اﻟﻤﻠﻒ اﻟﻤﺤﺪد ﻣ‬
‫ﺒﻴﺎﻧﺎ ت ‪ ،‬ﻓ ﺴﻴ‬
‫ﺑﻌﺾ اﻟ‬‫ﺑﺎﻟﻔﻌﻞ ﻋﲆ‬‫ﺘﻮي‬
‫ﺑ ﺔ‪ .‬إذا ﻛﺎن اﻟﻤﻠﻒﻳﺤ‬
‫ﺘﺎ‬
‫ﺘﺢ ﻣﻠﻒ ﻣﻮﺟﻮد ﻟﻌﻤﻠﻴ ﺔ اﻟﻜ‬
‫)‪2‬ﻓ‬
‫ﺑﺈﻧﺸﺎء ﻫﺬا اﻟﻤﻠﻒ‪.‬‬‫ﻓ ﺴﻴﻘﻮم ﻫﺬا اﻟﻮﺿﻊ‬

‫ﺑﺈﻧﺸﺎء ﻣﻠﻒ‬‫ﺑﺎﻟﻔﻌﻞ ‪ ،‬ﻓ ﺴﻴﻘﻮم ﻫﺬا اﻟﻮﺿﻊ‬‫ﺣﺎ‬


‫ﺘﺎ ً‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻮﺟﻮدة ‪ ،‬إذا ﻟﻢﻳﻜﻦ اﻟﻤﻠﻒ اﻟﻤﺤﺪد ﻣ‬
‫ﺘﺠﺎوز اﻟ‬
‫ﺘﺢ ﻣﻠﻒ ﻣﻮﺟﻮد ﻹﻟﺤﺎق اﻟﻌﻤﻠﻴ ﺔ‪ .‬ﻟﻦﻳ‬
‫ﻓ‬ ‫)‪3‬أ‬
‫ﺟﺪﻳﺪ‪.‬‬

‫ﺑﺪاﻳ ﺔ اﻟﻤﻠﻒ‪.‬‬‫ﺘﻢ وﺿﻊ ﻣﺆﺷﺮ اﻟﻤﻠﻒ ﻓ ﻲ‬


‫ﺑﻘ ﺔ ﻓ ﻲ اﻟﻤﻠﻒ ‪ ،‬ﺣﻴ ﺚﻳ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ ﺴﺎ‬
‫ﺘﻢ ﺣﺬف اﻟ‬
‫ﺘﻬﺎ ﻓ ﻲ اﻟﻤﻠﻒ‪ .‬ﻟﻦﻳ‬
‫ﺑ‬‫ﺘﺎ‬
‫ﺒﻴﺎﻧﺎ ت وﻛ‬
‫‪4) r +‬ﻟﻘﺮاءة اﻟ‬

‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻮﺟﻮدة‪.‬‬
‫ﺘﺠﺎوز اﻟ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬ﺳﻮفﻳ‬
‫ﺑ ﺔ وﻗﺮاءة اﻟ‬
‫ﺘﺎ‬
‫‪5) w +‬ﻟﻜ‬

‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻮﺟﻮدة‪.‬‬
‫ﺘﺠﺎوز اﻟ‬
‫ﺒﻴﺎﻧﺎ ت ﻣﻦ اﻟﻤﻠﻒ‪ .‬ﻟﻦﺗ‬
‫‪6) a +‬ﻹﻟﺤﺎق وﻗﺮاءة اﻟ‬

‫ﺑﺎﻟﻔﻌﻞ ‪ ،‬ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ ‪FileExistsError.‬‬‫ﺑ ﺔ‪ .‬إذا ﻛﺎن اﻟﻤﻠﻒ ﻣﻮﺟﻮدًا‬


‫ﺘﺎ‬
‫ﺘﺢ ﻣﻠﻒ ﻓ ﻲ وﺿﻊ اﻹﻧﺸﺎء اﻟﺤﺼﺮي ﻟﻌﻤﻠﻴ ﺔ اﻟﻜ‬
‫‪7) x‬ﻟﻔ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬


‫اﻟ‬

‫‪105‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎﺋﻴ ﺔ‪.‬‬
‫ﺜﻞ اﻟﻤﻠﻔﺎ ت اﻟ‬
‫ﺑـ ‪"b" ،‬ﻓﻬﺬهﺗﻤ‬‫ﺒﻴﻖ ﻋﲆ اﻟﻤﻠﻔﺎ ت اﻟﻨﺼﻴ ﺔ‪ .‬إذا ﻛﺎﻧ ﺖ اﻷوﺿﺎع اﻟﻤﺬﻛﻮرة أﻋﻼه ﻣﻠﺤﻘ ﺔ‬
‫ﺘﻄ‬‫ﺑﻠ ﺔ ﻟﻠ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﺟﻤﻴﻊ اﻷوﺿﺎع اﻟﻤﺬﻛﻮرة أﻋﻼه ﻗﺎ‬

‫ﺜﺎل‪rb ، wb ، ab ، r + b ، w + b ، a + b ، xb :‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫)"‪f = open ("abc.txt"، "w‬‬


‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺘﺢ ﻣﻠﻒ ‪abc.txt‬ﻟﻜ‬
‫ﺑﻔ‬‫ﻧﻘﻮم‬

‫إﻏﻼق ﻣﻠﻒ‪:‬‬
‫ﺑﺈﻏﻼق اﻟﻤﻠﻒ‪.‬‬‫ﺑﺸﺪة‬‫ﺗﻨﺎ ﻋﲆ اﻟﻤﻠﻒ ‪،‬ﻳﻮﺻﻰ‬
‫ﺘﻬﺎء ﻣﻦ ﻋﻤﻠﻴﺎ‬
‫ﺑﻌﺪ اﻻﻧ‬

‫ﺘﺨﺪام داﻟ ﺔ ‪close ().‬‬


‫ﻟﻬﺬا ﻋﻠﻴﻨﺎ اﺳ‬

‫)( ‪f.close‬‬

‫ﺘﻠﻔ ﺔ ﻟﻜﺎﺋﻦ اﻟﻤﻠﻒ‪:‬‬


‫اﻟﺨﺼﺎﺋﺺ اﻟﻤﺨ‬
‫ﺘﺨﺪام ﺧﺼﺎﺋﺼﻪ‪.‬‬
‫ﺑﺎﺳ‬‫ﺑﻬﺬا اﻟﻤﻠﻒ‬‫ﺘﻌﻠﻘ ﺔ‬
‫ﺘﻠﻔ ﺔ ﻣ‬
‫ﺘﺢ ﻣﻠﻒ وﺣﺼﻠﻨﺎ ﻋﲆ ﻛﺎﺋﻦ ﻣﻠﻒ ‪،‬ﻳﻤﻜﻨﻨﺎ اﻟﺤﺼﻮل ﻋﲆﺗﻔﺎﺻﻴﻞ ﻣﺨ‬
‫ﺑﻤﺠﺮد ﻓ‬

‫ﺘﻮح‬
‫اﺳﻢ اﻟﻤﻠﻒ اﻟﻤﻔ‬ ‫•اﺳﻢ‬

‫ﺘﺢ اﻟﻤﻠﻒ‬
‫ﺘﻢ ﻓﻴﻪ ﻓ‬
‫اﻟﻮﺿﻊ اﻟﺬيﻳ‬ ‫•اﻟﻮﺿﻊ‬
‫•ﻣﻐﻠﻖ إرﺟﺎع اﻟﻘﻴﻤ ﺔ اﻟﻤﻨﻄﻘﻴ ﺔﺗﺸﻴﺮ إﱃ أن اﻟﻤﻠﻒ ﻣﻐﻠﻖ أم ﻻ‬

‫ﺑ ﻼ ً ﻟﻠﻘﺮاءة أم ﻻ‬
‫ﺗﺸﻴﺮ اﻟﻘﻴﻤ ﺔ اﻟﻤﻨﻄﻘﻴ ﺔ ‪Retruns‬إﱃ ﻣﺎ إذا ﻛﺎن اﻟﻤﻠﻒ ﻗﺎ‬
‫ﺑﻞ ﻟﻠﻘﺮاءة )(‬
‫•ﻗﺎ‬

‫ﺑ ﺔ أم ﻻ‪.‬‬‫ﺑ ﻼ ً ﻟﻠﻜ‬
‫ﺘﺎ‬ ‫)( ‪• writable‬إرﺟﺎع اﻟﻘﻴﻤ ﺔ اﻟﻤﻨﻄﻘﻴ ﺔﺗﺸﻴﺮ إﱃ ﻣﺎ إذا ﻛﺎن اﻟﻤﻠﻒ ﻗﺎ‬

‫‪1) f = open ("abc.txt"، 'w') 2) print ("File Name: "، f.name) 3) print ("File Mode: "، f.mode) 4) print ("Is‬ﻳﻤﻜﻦ ﻗﺮاءة اﻟﻤﻠﻒ‪7) f.close () 8) :‬‬

‫ﺒﺎﻋ ﺔ )" ﻫﻞ اﻟﻤﻠﻒ ﻣﻐﻠﻖ‪" ، f.closed) :‬‬


‫)‪"، f.readable ()) 5) print (" Is File Writable: "، f.writable ()) 6) print (" Is File Closed: "، f.closed‬ﻃ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪D: \ Python_classes> py test.py‬اﺳﻢ اﻟﻤﻠﻒ‪:‬‬
‫‪abc.txt‬‬

‫وﺿﻊ اﻟﻤﻠﻒ‪w :‬‬

‫ﺑﻞ ﻟﻠﻘﺮاءة‪ :‬ﺧﻄﺄ‬


‫ﻫﻞ اﻟﻤﻠﻒ ﻗﺎ‬

‫ﺑ ﺔ‪ :‬ﺻﺤﻴﺢ‬
‫ﺘﺎ‬
‫ﺑﻞ ﻟﻠﻜ‬
‫ﻫﻞ اﻟﻤﻠﻒ ﻗﺎ‬

‫ﻫﻞ اﻟﻤﻠﻒ ﻣﻐﻠﻖ‪ :‬ﺧﻄﺄ‬

‫ﻫﻞ اﻟﻤﻠﻒ ﻣﻐﻠﻖ‪ :‬ﺻﺤﻴﺢ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪106‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴﺎﻧﺎ ت إﱃ ﻣﻠﻔﺎ ت ﻧﺼﻴ ﺔ‪:‬‬


‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﻛ‬
‫ﺘﻴﻦ‪.‬‬
‫ﺘﺎﻟﻴ‬
‫ﺘﻴﻦ اﻟ‬
‫ﺘﺨﺪام اﻟﻄﺮﻳﻘ‬
‫ﺑﺎﺳ‬‫ﺑﻴﺎﻧﺎ ت اﻷﺣﺮف إﱃ اﻟﻤﻠﻔﺎ ت اﻟﻨﺼﻴ ﺔ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﺘ ﺐ )‪(str‬‬
‫)‪1‬اﻛ‬
‫‪)2) Writelines‬ﻗﺎﺋﻤ ﺔ اﻷﺳﻄﺮ(‬

‫)‪\ n") 3) f.write ("Software \ n") 4) f.write ("Solutions \ n ") 5‬‬


‫ﺒﻴﺎﻧﺎ ت‬
‫ﺒﺎﻋ ﺔ "(اﻟ‬
‫‪1) f = open ("abcd.txt"، 'w') 2) f.write ("Durga‬ﻃ‬
‫ﺑﻨﺠﺎح )( ‪") 6) f.close‬‬‫ﺑ ﺔ إﱃ اﻟﻤﻠﻒ‬
‫ﺘﻮ‬‫اﻟﻤﻜ‬

‫‪abcd.txt:‬‬
‫دورﺟﺎ‬
‫ﺑﺮﻣﺠ ﺔ‬
‫ﺣﻠﻮل‬

‫ﺑﺪﻻ ً ﻣﻦﺗﺠﺎوز ﻣﺎ إذا ﻛﻨﺎ ﻧﺮﻳﺪ‬‫ﺒﺮﻧﺎﻣﺞ‪.‬‬


‫ﺘﺸﻐﻴﻞ اﻟ‬
‫ﺑ‬‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻤﻠﻒ ﻓ ﻲ ﻛﻞ ﻣﺮة إذا ﻗﻤﻨﺎ‬
‫ﺘﻢﺗﺠﺎوز اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪،‬ﺳﻴ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓ ﻲ اﻟ‬
‫ﺘﺎﻟ ﻲ‪.‬‬
‫ﺘﺢ اﻟﻤﻠﻒ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫ﻋﻤﻠﻴ ﺔ اﻹﻟﺤﺎق ‪،‬ﻳﺠ ﺐ أن ﻧﻔ‬

‫‪"f = open ("abcd.txt"،‬أ"(‬


‫ﺜﺎل ‪2:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫)‪\ n"، "bunny \ n"، "vinny \ n"، "chinny"] 3) f.writelines (list ) 4‬‬
‫ﺒﺎﻋ ﺔ )"ﻗﺎﺋﻤ ﺔ اﻷﺳﻄﺮ‬
‫‪1) f = open ("abcd.txt"، 'w') 2) list = ["sunny‬ﻃ‬
‫ﺑﻨﺠﺎح"( )( ‪5) f.close‬‬‫ﺑ ﺔ إﱃ اﻟﻤﻠﻒ‬
‫ﺘﻮ‬‫اﻟﻤﻜ‬

‫‪abcd.txt:‬‬
‫ﻣﺸﻤ ﺲ‬
‫اﻻرﻧ ﺐ‬
‫ﻓﻴﻨ ﻲ‬
‫ذﻗﻦ‬

‫ﺒﻴﺎﻧﺎ ت اﻹﺟﻤﺎﻟﻴ ﺔ ﻓ ﻲﺳﻄﺮ‬


‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺑ ﺔ ‪() ،‬ﻳﺠ ﺐ ﻋﻠﻴﻨﺎﺗﻮﻓﻴﺮ ﻓﺎﺻﻞﺳﻄﺮ ‪(\ n) ،‬وإﻻﻳﺠ ﺐ ﻛ‬
‫ﺘﺎ‬
‫ﺘﺨﺪام ﻃﺮق اﻟﻜ‬
‫ﺑﺎﺳ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺛﻨﺎء ﻛ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬أ‬
‫واﺣﺪ‪.‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪107‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻴﺎﻧﺎ ت اﻷﺣﺮف ﻣﻦ ﻣﻠﻔﺎ ت ﻧﺼﻴ ﺔ‪:‬‬‫ﻗﺮاءة‬


‫ﺘﺎﻟﻴ ﺔ‪.‬‬
‫ﺘﺨﺪام ﻃﺮق اﻟﻘﺮاءة اﻟ‬
‫ﺑﺎﺳ‬‫ﺑﻴﺎﻧﺎ ت اﻷﺣﺮف ﻣﻦ ﻣﻠﻒ ﻧﺼ ﻲ‬‫ﻳﻤﻜﻨﻨﺎ ﻗﺮاءة‬

‫ﺒﻴﺎﻧﺎ ت اﻹﺟﻤﺎﻟﻴ ﺔ ﻣﻦ اﻟﻤﻠﻒ‬


‫)(ﻟﻘﺮاءة اﻟ‬ ‫•ﻗﺮاءة‬
‫ﻟﻘﺮاءة اﻷﺣﺮف '‪'n‬ﻣﻦ اﻟﻤﻠﻒ‬ ‫•ﻗﺮاءة )اﺳﻢ(‬
‫)( ‪• readline‬ﻟﻘﺮاءةﺳﻄﺮ واﺣﺪ ﻓﻘﻂ‬
‫)( ‪• readlines‬ﻟﻘﺮاءة ﻛﻞ اﻟ ﺴﻄﻮر ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬

‫ﺒﻴﺎﻧﺎ ت اﻹﺟﻤﺎﻟﻴ ﺔ ﻣﻦ اﻟﻤﻠﻒ‬


‫ﺜﺎل ‪1:‬ﻟﻘﺮاءة اﻟ‬
‫ﻣ‬

‫)‪1) f = open ("abc.txt"، 'r') 2‬‬


‫ﺒﺎﻋ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت )‪= f.read () 3‬ﻃ‬
‫اﻟ‬
‫ﺑﻴﺎﻧﺎ ت( )( ‪4) f.close‬‬
‫)‬

‫ﺘﺎج |‬
‫اﻧ‬
‫اﻻرﻧ ﺐ‬
‫اﻟﻤﺸﻤ ﺲ‬
‫‪chinny‬‬
‫ﻓﻴﻨ ﻲ‬

‫ﺜﺎل ‪2:‬ﻟﻘﺮاءة أول ‪10‬أﺣﺮف ﻓﻘﻂ‪:‬‬


‫ﻣ‬

‫)‪1) f = open ("abc.txt"، 'r') 2‬‬


‫ﺒﺎﻋ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت )‪= f.read (10) 3‬ﻃ‬
‫اﻟ‬
‫ﺑﻴﺎﻧﺎ ت( )( ‪4) f.close‬‬
‫)‬

‫ﺘﺎج |‬
‫اﻧ‬
‫اﻷرﻧ ﺐ‬
‫اﻟﻤﺸﻤ ﺲ‬

‫ﺑ ﺴﻄﺮ‪:‬‬‫ﺒﻴﺎﻧﺎ تﺳﻄ ﺮًا‬


‫ﺜﺎل ‪3:‬ﻟﻘﺮاءة اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫‪= f.readline () 5) print (line2) ،‬‬


‫‪3) print (line1، end = ") 4) line2‬‬
‫)( ‪'r') 2) line1 = f.readline‬‬
‫‪1) f = open ("abc.txt"،‬اﻟﻨﻬﺎﻳ ﺔ )(‬
‫‪print (line3، end =") 8) f.close‬‬
‫)‪= ") 6) line3 = f.readline () 7‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪108‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺻﻨ ﻲ‬
‫اﻻرﻧ ﺐ‬
‫‪chinny‬‬

‫ﺜﺎل ‪4:‬ﻟﻘﺮاءة ﺟﻤﻴﻊ اﻷﺳﻄﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫)‪1) f = open ("abc.txt"، 'r') 2‬‬


‫اﻷﺳﻄﺮ )‪= f.readlines () 3‬ﻟﻠﺨﻂ ﻓ ﻲ‬
‫ﺒﺎﻋ ﺔ )ﺳﻄﺮ ‪ ،‬ﻧﻬﺎﻳ ﺔ )(‬
‫اﻟ ﺴﻄﻮر ‪4) :‬ﻃ‬
‫‪= ") 5) f.close‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫اﻻرﻧ ﺐ‬
‫اﻟﻤﺸﻤ ﺲ‬
‫‪chinny‬‬
‫ﻓﻴﻨ ﻲ‬

‫ﺜﺎل ‪5:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺒﺎﻋ ﺔ )‪3‬‬
‫)‪1) f = open ("abc.txt"، "r") 2‬ﻃ‬
‫ﺒﺎﻋ ﺔ‬
‫ﺒﺎﻋ ﺔ )‪(f.readline ()) 4‬ﻃ‬
‫))‪(f.read (3‬ﻃ‬
‫ﺒﻘﻴ ﺔ"(‬
‫ﺘ‬‫ﺒﻴﺎﻧﺎ ت اﻟﻤ‬
‫ﺒﺎﻋ ﺔ )"اﻟ‬
‫)‪(f.read (4)) 5‬ﻃ‬
‫ﺒﺎﻋ ﺔ ))( ‪(f.read‬‬
‫)‪6‬ﻃ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺷﻤ ﺲ‬

‫ﻧﻴﻮﻳﻮرك‬

‫ﻛﻌﻜ ﺔ‬

‫ﺒﻘﻴ ﺔ‬
‫ﺘ‬‫ﺒﻴﺎﻧﺎ ت اﻟﻤ‬
‫اﻟ‬
‫ذ ‪chinny‬‬
‫ﻓﻴﻨ ﻲ‬

‫ﺒﻴﺎن‪:‬‬
‫ﻣﻊ اﻟ‬
‫ﺘﻠ ﺔ‪.‬‬
‫ﺒﺎرا تﺗﺸﻐﻴﻞ اﻟﻤﻠﻒ داﺧﻞ ﻛ‬
‫ﺘﺠﻤﻴﻊ ﻋ‬
‫ﺘﺨﺪاﻣﻬﺎ ﻟ‬
‫ﺘﺢ ﻣﻠﻒ ‪ ،‬وﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺛﻨﺎء ﻓ‬
‫ﺘﺨﺪامﺗﻌﻠﻴﻤ ﺔ ‪with‬أ‬
‫•ﻳﻤﻜﻦ اﺳ‬

‫ﺑﺈﻏﻼق‬‫ﺒﻴﻦ‬ ‫ﺜﻨﺎءا ت أ ً‬
‫ﻳﻀﺎ ‪ ،‬وﻟ ﺴﻨﺎ ﻣﻄﺎﻟ‬ ‫ﺘ‬‫ﺘﻰ ﻓ ﻲ ﺣﺎﻟ ﺔ اﻻﺳ‬
‫ﺘﻜﻤﺎل ﺟﻤﻴﻊ اﻟﻌﻤﻠﻴﺎ تﺗﻠﻘﺎﺋ ًﻴﺎ ﺣ‬
‫ﺑﻌﺪ اﺳ‬‫ﺑﺈﻏﻼق اﻟﻤﻠﻒ ‪،‬‬‫ﺘﻢ‬
‫•ﻣﻴﺰة ‪ with statement‬ﻫ ﻲ أﻧﻪﺳﻴﻬ‬
‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ‪.‬‬‫اﻟﻤﻠﻒ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪109‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻞ )‪Closed: "، f.closed‬‬


‫ﺘﺢ )"‪("abc.txt"، "w‬ﻣ‬
‫ﺑﻔ‬‫)‪1‬‬
‫‪(" Is File Closed: "، f.closed) 6) print (" Is File‬‬
‫‪\ n") 4) f.write ("Solutions \ n ") 5) print‬‬
‫‪f: 2) f.write ("Durga \ n") 3) f.write ("Software‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﻫﻞ اﻟﻤﻠﻒ ﻣﻐﻠﻖ‪ :‬ﺧﻄﺄ‬

‫ﻫﻞ اﻟﻤﻠﻒ ﻣﻐﻠﻖ‪ :‬ﺻﺤﻴﺢ‬

‫ﺒﺎر ‪():‬‬
‫ﺘﻤﺎس )(وإﺧ‬
‫ﻃﺮق اﻟ‬

‫ﺒﺮ)(‪:‬‬
‫ﻳﺨ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪tell‬ﻹرﺟﺎع اﻟﻤﻮﺿﻊ اﻟﺤﺎﻟ ﻲ ﻟﻠﻤﺆﺷﺮ )ﻣﺆﺷﺮ اﻟﻤﻠﻒ( ﻣﻦ‬
‫•ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﺎر ﻣﻮﺿﻊ اﻟﻤﺆﺷﺮ اﻟﺤﺎﻟ ﻲ[‬
‫ﺑﺪاﻳ ﺔ اﻟﻤﻠﻒ‪ ] .‬ﻫﻞﻳﻤﻜﻨﻚ إﺧ‬
‫ﺜﻞ ﻓﻬﺮس اﻟ ﺴﻠ ﺴﻠ ﺔ‪.‬‬
‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫•ﻣﻮﺿﻊ )ﻓﻬﺮس( اﻟﺤﺮف اﻷول ﻓ ﻲ اﻟﻤﻠﻔﺎ ت ﻫﻮ ﺻﻔﺮ‬

‫)‪1) f = open ("abc.txt"، "r") 2‬‬


‫ﺒﺎﻋ ﺔ )‪(2)) 4‬‬
‫ﺒﺎﻋ ﺔ )‪(f.tell ()) 3‬ﻃ‬
‫ﻃ‬
‫ﺒﺎﻋ ﺔ ))(‬
‫ﺒﺎﻋ ﺔ )‪(f.tell ()) 5‬ﻃ‬
‫‪(f.read‬ﻃ‬
‫‪(f.read (3)) 6) print (f.tell‬‬

‫‪abc.txt:‬‬
‫ﻣﺸﻤ ﺲ‬
‫اﻻرﻧ ﺐ‬
‫ذﻗﻦ‬
‫ﻓﻴﻨ ﻲ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫‪0‬‬
‫ﺳﻮ‬
‫‪2‬‬

‫‪nny‬‬
‫‪5‬‬

‫ﻳﻄﻠ ﺐ)(‪:‬‬
‫ﺘﺤﺮﻳﻚ اﻟﻤﺆﺷﺮ )ﻣﺆﺷﺮ اﻟﻤﻠﻒ( إﱃ اﻟﻤﻮﻗﻊ اﻟﻤﺤﺪد‪.‬‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )‪() (See‬ﻟ‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﺤ ﺚ ﻋﻦ اﻟﻤﺆﺷﺮ إﱃ ﻣﻮﻗﻊ ﻣﻌﻴﻦ[‬
‫] ﻫﻞﻳﻤﻜﻨﻚ ﻣﻦ ﻓﻀﻠﻚ اﻟ‬
‫ﺜﻞ ﻋﺪد اﻟﻤﻮاﺿﻊ‬
‫)‪f.seek (offset، fromwhere‬ﻳﻤ‬ ‫‪offset‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪110‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻬﺎ ﻟـ ‪2‬‬‫اﻟﻘﻴﻢ اﻟﻤ ﺴﻤﻮح‬ ‫اﻟ ﺴﻤ ﺔ )ﻣﻦ أﻳﻦ(‬


‫ﺜﺎﻧ ﻲ‬
‫ﺘﺼﺎر اﻟ‬
‫اﺧ‬

‫ﺘﺮاﺿﻴ ﺔ(‬
‫ﺑﺪاﻳ ﺔ اﻟﻤﻠﻒ )اﻟﻘﻴﻤ ﺔ اﻻﻓ‬‫‪0‬ﻣﻦ‬
‫‪1‬ﻣﻦ اﻟﻮﺿﻊ اﻟﺤﺎﻟ ﻲ‬

‫‪2‬ﻣﻦ ﻧﻬﺎﻳ ﺔ اﻟﻤﻠﻒ‬

‫ﺜﻼ ث ﻟﻜﻦ ‪Python 3‬ﻳﺪﻋﻢ اﻟﺼﻔﺮ ﻓﻘﻂ‪.‬‬


‫ﻣﻼﺣﻈ ﺔ‪:‬ﻳﺪﻋﻢ ‪Python 2‬ﺟﻤﻴﻊ اﻟﻘﻴﻢ اﻟ‬

‫ﺒﻴﺎﻧﺎ ت ="ﻛﻞ اﻟﻄﻼ ب ‪STUPIDS" 2) f = open ("abc.txt"، "w") 3) f.write‬‬


‫)‪1‬اﻟ‬

‫ﺘﺢ )"‪("abc.txt"، "r +‬ﻛـ ‪f.seek (17) 9) print ("The Current‬‬


‫ﺒﻴﺎﻧﺎ ت( )‪4‬ﻣﻊ اﻟﻔ‬
‫)اﻟ‬

‫)‪f.read () 6) print (text) 7) print ("The Current Cursor Position: "، f.tell ()) 8‬‬

‫= ‪f: 5) text‬ﻣﻮﺿﻊ اﻟﻤﺆﺷﺮ‪() 13) print (" Data After Modification: ") 14) :‬‬

‫ﺒﺎﻋ ﺔ‬
‫‪"، f.tell ()) 10) f.write (" GEMS !!! ") 11) f.seek (0) 12) text = f.read‬ﻃ‬
‫)ﻧﺺ(‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺒﻴﺎء‬
‫ﺟﻤﻴﻊ اﻟﻄﻼ ب أﻏ‬

‫وﺿﻊ اﻟﻤﺆﺷﺮ اﻟﺤﺎﻟ ﻲ‪24 :‬‬

‫ﺘﻌﺪﻳﻞ‪ :‬ﺟﻤﻴﻊ‬
‫ﺑﻌﺪ اﻟ‬‫ﺒﻴﺎﻧﺎ ت‬
‫وﺿﻊ اﻟﻤﺆﺷﺮ اﻟﺤﺎﻟ ﻲ‪17 :‬اﻟ‬

‫اﻟﻄﻼ ب ﻫﻢ !!! ‪GEMS‬‬

‫ﺘﺤﻘﻖ ﻣﻦ وﺟﻮد ﻣﻠﻒ ﻣﻌﻴﻦ أم ﻻ؟‬


‫ﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺑﻨﺎ‪.‬‬‫ﺗﺮ اﻟﺨﺎص‬
‫ﺒﻴﻮ‬
‫ﺘﺸﻐﻴﻞ ﻟﻠﺤﺼﻮل ﻋﲆ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل اﻟﻤﻠﻔﺎ ت اﻟﻤﻮﺟﻮدة ﻋﲆ ﺟﻬﺎز اﻟﻜﻤ‬
‫ﺒ ﺔ ﻧﻈﺎم اﻟ‬
‫ﺘ‬‫ﺘﺨﺪام ﻣﻜ‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬

‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن ﻣﻠﻒ ﻣﻌﻴﻦ ﻣﻮﺟﻮدًا‬


‫ﺘﻮي ﻋﲆ وﻇﻴﻔ ﺔ )( ‪isFile‬ﻟﻠ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﺸﻐﻴﻞ ﻋﲆ وﺣﺪة ﻣ ﺴﺎر ﻓﺮﻋﻴ ﺔ ‪ ،‬واﻟ‬
‫ﺘﻮي اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ ﻟﻨﻈﺎم اﻟ‬
‫ﺗﺤ‬
‫أم ﻻ؟‬
‫)‪os.path.isfile (fname‬‬

‫ﺘﻮاه؟‬
‫ﺒﺎﻋ ﺔ ﻣﺤ‬
‫ﺑﻄ‬‫ﺣﺎ ‪ ،‬ﻓﻘﻢ‬
‫ﺘﺎ ً‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن اﻟﻤﻠﻒ اﻟﻤﺤﺪد ﻣﻮﺟﻮدًا أم ﻻ‪ .‬إذا ﻛﺎن ﻣ‬
‫ﺑﺮﻧﺎﻣﺠًﺎ ﻟﻠ‬‫ﺘﺐ‬
‫س( اﻛ‬

‫ﺘﺸﻐﻴﻞ ‪sys 2) fname = ،‬إدﺧﺎل )"أدﺧﻞ‬


‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫)‪1‬اﺳ‬
‫اﺳﻢ اﻟﻤﻠﻒ‪") 3) :‬إذا ﻛﺎن )‪os.path.isfile (fname): 4‬‬
‫ﺘﺢ )‪"r") 6‬‬
‫ﺒﺎﻋ ﺔ )"اﻟﻤﻠﻒ ﻣﻮﺟﻮد‪fname) 5) f = ، ":‬ﻓ‬
‫ﻃ‬
‫‪(fname ،‬وإﻻ‪:‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪111‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎﻋ ﺔ "(‬
‫ﺑﻴﺎﻧﺎﻃ ت(‬
‫)‪fname‬‬ ‫‪8)=sys.exit‬‬
‫ﺒﺎﻋ ﺔ )‬
‫ﻃ‬ ‫)‪f.read ()(0‬‬
‫)‪11‬‬‫ﻣﻮﺟﻮد‪، ":‬ت )‪9‬‬
‫ﻏﻴﺮ)‪10‬اﻟ‬
‫ﺒﻴﺎﻧﺎ‬ ‫)"اﻟﻤﻠﻒ‬
‫ﻫﻮ‪(":‬‬ ‫ﺒﺎﻋ ﺔاﻟﻤﻠﻒ‬
‫ﻣﺤﻃ‬
‫ﺘﻮى‬ ‫)‪7‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﺳﻢ اﻟﻤﻠﻒ‪durga.txt :‬اﻟﻤﻠﻒ ﻏﻴﺮ‬

‫ﻣﻮﺟﻮد ‪durga.txt D: \ Python_classes> py test.py :‬أدﺧﻞ اﺳﻢ اﻟﻤﻠﻒ‪:‬‬

‫‪abc.txt‬‬

‫ﺘﻮى اﻟﻤﻠﻒ‬
‫اﻟﻤﻠﻒ ﻣﻮﺟﻮد‪abc.txt :‬ﻣﺤ‬

‫ﻫﻮ‪:‬‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﻣﻠﺤﻮﻇ ﺔ‪:‬‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺑﺎﻗ ﻲ اﻟ‬‫ﺑﺪونﺗﻨﻔﻴﺬ‬‫)‪sys.exit (0‬ﻟﻠﺨﺮوج ﻣﻦ اﻟﻨﻈﺎم‬

‫ﺘﺮاﺿﻴ ﺔ‪.‬‬
‫ﺗﻌﻨ ﻲ اﻹﻧﻬﺎء اﻟﻌﺎدي و ﻫ ﻲ اﻟﻘﻴﻤ ﺔ اﻻﻓ‬
‫ﺜﻞ اﻟﻮﺳﻴﻄ ﺔ رﻣﺰ اﻟﺤﺎﻟ ﺔ‪0 .‬‬
‫ﺗﻤ‬

‫ﺒﺎﻋ ﺔ ﻋﺪد اﻷﺳﻄﺮ واﻟﻜﻠﻤﺎ ت واﻷﺣﺮف‬


‫ﺑﺮﻧﺎﻣﺞ ﻟﻄ‬‫س(‬
‫ﻣﻮﺟﻮد ﻓ ﻲ اﻟﻤﻠﻒ اﻟﻤﺤﺪد؟‬

‫ﺘﺸﻐﻴﻞ ‪sys 2) fname = ،‬اﻹدﺧﺎل )"أدﺧﻞ اﺳﻢ اﻟﻤﻠﻒ‪") 3) :‬‬


‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫)‪1‬اﺳ‬

‫ﺒﺎﻋ ﺔ )"اﻟﻤﻠﻒ ﻣﻮﺟﻮد‪fname) 5) f = ، ":‬‬


‫إذا ﻛﺎن )‪os.path.isfile (fname): 4‬ﻃ‬

‫ﺒﺎﻋ ﺔ )"اﻟﻤﻠﻒ ﻏﻴﺮ ﻣﻮﺟﻮد‪= ccount = 0 10) ،":‬‬


‫ﺘﺢ )‪(fname ، "r") 6) else: 7‬ﻃ‬
‫ﻓ‬

‫)‪lcount‬‬
‫‪wcount‬‬‫‪16)=print‬‬
‫‪wcount‬‬‫‪len‬ﻓ‪+‬ﻲ "(‬
‫ﺴﻄﺮ‬ ‫)‪fname‬ﻟﻠ‬
‫)‪(Words‬‬ ‫‪8)print‬‬
‫)‪15‬‬ ‫‪sys.exit‬‬ ‫‪(0) Number‬‬
‫‪("The‬‬ ‫‪9) lcountof‬‬
‫‪= wcount‬‬
‫‪Lines:"،‬‬

‫)‪lcount + 1 12) ccount = ccount + len (line) 13) Words = line.split () 14‬‬

‫= ‪f: 11) lcount‬ﻋﺪد اﻟﻜﻠﻤﺎ ت‪wcount) ،":‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫‪112‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫)‪17) print ("The Number of Characters:"، ccount‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﺳﻢ‬
‫اﻟﻤﻠﻒ‪durga.txt :‬اﻟﻤﻠﻒ ﻏﻴﺮ ﻣﻮﺟﻮد ‪durga.txt :‬‬

‫‪D: \ Python_classes> py test.py‬أدﺧﻞ اﺳﻢ‬


‫اﻟﻤﻠﻒ‪abc.txt :‬‬
‫اﻟﻤﻠﻒ ﻣﻮﺟﻮد‪abc.txt :‬ﻋﺪد اﻷﺳﻄﺮ‪6 :‬‬
‫ﻋﺪد اﻟﻜﻠﻤﺎ ت‪24 :‬‬

‫ﻋﺪد اﻷﺣﺮف‪149 :‬‬

‫‪abc.txt‬‬
‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺟﻤﻴﻊ اﻟﻄﻼ ب ﻫﻢ ﻣﻦ اﻷﺣﺠﺎر اﻟﻜﺮﻳﻤ ﺔ !!!‬

‫ﺜﻨﺎﺋﻴ ﺔ‪:‬‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﻣﻌﺎﻟﺠ ﺔ اﻟ‬
‫ﺗﻴ ﺔ وﻣﺎ إﱃ ذﻟﻚ‪.‬‬
‫ﺜﻞ اﻟﺼﻮر وﻣﻠﻔﺎ ت اﻟﻔﻴﺪﻳﻮ واﻟﻤﻠﻔﺎ ت اﻟﺼﻮ‬
‫ﺜﻨﺎﺋﻴ ﺔ ﻣ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﻣﻦ اﻟﺸﺎﺋﻊ ﺟﺪًا ﻗﺮاءة أو ﻛ‬

‫ﺑ ﺔ إﱃ ﻣﻠﻒ ﺻﻮرة ﺟﺪﻳﺪ؟‬


‫ﺘﺎ‬
‫ﺑﺮﻧﺎﻣﺞ ﻟﻘﺮاءة ﻣﻠﻒ اﻟﺼﻮرة واﻟﻜ‬‫س(‬

‫ﺑﺎﻳ ﺖ ‪() 4) f2.write‬‬


‫)‪1) f1 = open ("rossum.jpg"، "rb") 2) f2 = open ("newpic.jpg"، "wb") 3‬‬
‫ﺑﺎﻻﺳﻢ‪newpic.jpg") :‬‬‫ﺘﻮﻓﺮة‬
‫ﺒﺎﻋ ﺔ "(اﻟﺼﻮرة اﻟﺠﺪﻳﺪة ﻣ‬
‫ﺑﺎﻳ ﺖ( ) ‪5‬ﻃ‬
‫‪)= f1.read‬‬

‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻣﻠﻔﺎ ت ‪CSV:‬‬


‫اﻟ‬
‫ﺑﻔﻮاﺻﻞ‬‫‪ CSV‬ﻗﻴﻢ ﻣﻔﺼﻮﻟ ﺔ‬

‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻣﻠﻔﺎ ت ‪csv.‬‬


‫ﺒﻴﺎﻧﺎ ت‪.‬ﻳﻮﻓﺮ ‪Python‬وﺣﺪة ‪csv‬ﻟﻠ‬
‫ﺑ ﺔ وﻗﺮاءة ﻣﻠﻔﺎ ت ‪wrt csv‬ﻟﻠ‬
‫ﺘﺎ‬
‫ﺒﺮﻣﺠ ﺔ ‪ ،‬ﻣﻦ اﻟﺸﺎﺋﻊ ﺟﺪًا ﻛ‬
‫ﻛﺠﺰء ﻣﻦ اﻟ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪113‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴﺎﻧﺎ ت إﱃ ﻣﻠﻒ ‪CSV:‬‬


‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﻛ‬
‫ﺗ ﺐ "(‬
‫ﺘﺢ )'' = ‪("emp.csv"، "w"، newline‬ﻛـ ‪f: 3) w = csv.writer (f) #‬إرﺟﺎع ﻛﺎﺋﻦ ﻛﺎ‬
‫ﺑﻔ‬‫ﺘﻴﺮاد )‪csv 2‬‬
‫)‪1‬اﺳ‬

‫‪csv 4) w.writerow ([" ENO "،" ENAME "،" ESAL "،" EADDR "]) 5) n = int‬إدﺧﺎل ﻋﺪد اﻟﻤﻮﻇﻔﻴﻦ‪")) 6) :‬‬

‫اﻟﻤﻮﻇﻒ‪(" :‬‬
‫‪esal،‬‬ ‫ﺳﻢ )]‪eaddr‬‬
‫أدﺧﻞ ا)‪12‬‬ ‫ﻋﻨﻮان )‪") 8‬‬
‫اﻟﻤﻮﻇﻒ‪:‬‬ ‫‪ename‬‬ ‫‪= input‬‬
‫أدﺧﻞ‬ ‫"( )‪") 10‬‬ ‫اﻟﻤﻮﻇﻒ‪:‬‬
‫‪eaddr‬‬ ‫"( رﻗﻢ‬
‫‪= input‬‬ ‫أدﺧﻞ‬ ‫‪(n): 7) eno‬‬
‫اﻟﻤﻮﻇﻒ‪:‬‬ ‫ﺗﺐ‬ ‫أدﺧﻞ=را‬
‫‪input‬‬ ‫‪(" esal‬‬
‫)‪") 9‬‬ ‫اﻟﻨﻄﺎق‬ ‫ﻟـ ‪i‬ﻓ ﻲ‬
‫‪= input‬‬

‫ﺑﻨﺠﺎح"(‬
‫ﺑﻴﺎﻧﺎ ت اﻟﻤﻮﻇﻔﻴﻦ اﻹﺟﻤﺎﻟﻴ ﺔ إﱃ ﻣﻠﻒ ‪csv‬‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺗﻤ ﺖ ﻛ‬
‫ﺒﺎﻋ ﺔ )"‬
‫‪") 11) w.writerow ([eno، ename،‬ﻃ‬

‫ﺑﺪوﻧﻬﺎ‬
‫ﺘﺨﺪامﺳﻤ ﺔ اﻟ ﺴﻄﺮ اﻟﺠﺪﻳﺪ و‬
‫ﺑﺎﺳ‬‫ﺘﻼف‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻻﺣﻆ اﻻﺧ‬

‫ﻣﻊ )'' = ‪open ("emp.csv"، "w"، newline‬ﻛـ ‪f:‬‬

‫ﺜﻞ ‪f:‬‬
‫ﻣﻊ )"‪open ("emp.csv"، "w‬ﻣ‬

‫ﺒﻴﺎﻧﺎ ت‪ .‬ﻟﻤﻨﻊ ﻫﺬه اﻷﺳﻄﺮ اﻟﻔﺎرﻏ ﺔ ‪ ،‬ﻓﺈنﺳﻤ ﺔ اﻟ ﺴﻄﺮ اﻟﺠﺪﻳﺪ‬


‫ﺑﻴﻦ اﻟ‬
‫ﺘﻢﺗﻀﻤﻴﻦ اﻷﺳﻄﺮ اﻟﻔﺎرﻏ ﺔ ﻓ ﻲ ﻣﻠﻒ ‪csv‬‬
‫ﺘﺨﺪمﺳﻤ ﺔ اﻟ ﺴﻄﺮ اﻟﺠﺪﻳﺪ ‪ ،‬ﻓ ﺴﻴ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬إذا ﻟﻢ ﻧ ﺴ‬

‫ﺘﺨﺪامﺳﻤ ﺔﺳﻄﺮ ﺟﺪﻳﺪ‪.‬‬


‫ﺑﺎﺳ‬‫ﺒﻴﻦ‬
‫ﺑ ﺔ ﻓ ﻲ ‪Python-3 ،‬وﻟﻜﻦ ﻓ ﻲ ‪Python-2‬ﻓﻘﻂﻳﻤﻜﻨﻨﺎﺗﺤﺪﻳﺪ اﻟﻮﺿﻊ ﻛـ '‪'wb‬وﻟ ﺴﻨﺎ ﻣﻄﺎﻟ‬
‫ﻣﻄﻠﻮ‬

‫ﺒﻴﺎﻧﺎ ت ﻣﻦ ﻣﻠﻒ ‪CSV:‬‬


‫ﻗﺮاءة اﻟ‬
‫ﺘﻴﺮاد )‪object 4) data = list (r) 5) #print (data) 6‬‬
‫)‪1‬اﺳ‬
‫‪'r') 3) r = csv.reader (f) #returns csv reader‬‬
‫ﺒ ﺔ إﱃ اﻟ ﺴﻄﺮ ﻓ ﻲ‬
‫ﺑﺎﻟﻨ ﺴ‬
‫‪csv 2) f = open ("emp.csv"،‬‬
‫ﺒﺎﻋ ﺔ ‪(word ، "\ t" ،‬اﻟﻨﻬﺎﻳ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت‪7) :‬ﻟﻠﻜﻠﻤ ﺔ ﻓ ﻲ اﻟ ﺴﻄﺮ‪8) :‬ﻃ‬
‫اﻟ‬
‫ﺒﺎﻋ ﺔ )(‬
‫)‪= '') 9‬ﻃ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪D: \ Python_classes> py test.py‬‬

‫‪ENO ENAME ESAL EADDR‬‬

‫‪100‬دورﺟﺎ ‪ 1000‬ﻫﻴﺪ‬
‫ﺒﺎي‬
‫‪200‬ﺳﺎﺷﻴﻦ ‪2000‬ﻣﻮﻣ‬

‫‪300‬دوﻧ ﻲ ‪3000‬راﻧﺸ ﻲ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪114‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺿﻐﻂ اﻟﻤﻠﻔﺎ ت وﻓﻚ ﺿﻐﻄﻬﺎ‪:‬‬


‫ﻣﻦ اﻟﺸﺎﺋﻊ ﺟﺪًا ﺿﻐﻂ اﻟﻤﻠﻔﺎ ت وﻓﻚ ﺿﻐﻄﻬﺎ‪.‬‬

‫ﺋﻴ ﺴﻴ ﺔ ﻫ ﻲ‪:‬‬
‫اﻟﻤﺰاﻳﺎ اﻟﺮ‬
‫ﺘﺨﺪام اﻟﺬاﻛﺮة‬
‫ﺘﺤ ﺴﻴﻦ اﺳ‬
‫)‪1‬ﻟ‬
‫)‪2‬ﻳﻤﻜﻨﻨﺎﺗﻘﻠﻴﻞ وﻗ ﺖ اﻟﻨﻘﻞ‬
‫)‪3‬ﻳﻤﻜﻨﻨﺎﺗﺤ ﺴﻴﻦ اﻷداء‪.‬‬

‫ﺘﻮي ‪Python‬ﻋﲆ ﻣﻠﻒ ﻣﻀﻐﻮط واﺣﺪ ﻣﺪﻣﺞ‪.‬‬


‫ﺗﺤ‬‫ﻹﺟﺮاء ﻋﻤﻠﻴﺎ ت ‪zip‬و ‪unzip ،‬‬
‫ﺘﻮي ﻫﺬه اﻟﻮﺣﺪة ﻋﲆ ﻓﺌ ﺔ‪ZipFile :‬‬
‫ﺗﺤ‬

‫ﻹﻧﺸﺎء ﻣﻠﻒ ﻣﻀﻐﻮط‪:‬‬


‫ﺑﺈﻧﺸﺎء ﻣﻠﻒ ﻣﻀﻐﻮط‪.‬‬‫ﺑ ﺖ أﻧﻨﺎ ﻧﻘﻮم‬
‫ﺜﺎ‬
‫ﺜﻞ ﻫﺬا اﻟ‬
‫ﺑ ﺖ‪.‬ﻳﻤ‬
‫ﺜﺎ‬
‫ﺑﺎﺳﻢ ﻣﻠﻒ ‪zip ،‬ووﺿﻊ ‪ZIP_DEFLATED‬اﻟ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ ﻓﺌ ﺔ ‪ZipFile‬‬
‫ﻳ‬

‫)"‪f = ZipFile ("files.zip"، "w"، "ZIP_DEFLATED‬‬

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ ‪write ().‬‬


‫ﺑﺎﺳ‬‫ﺑﻤﺠﺮد إﻧﺸﺎء ﻛﺎﺋﻦ ‪ZipFile ،‬ﻳﻤﻜﻨﻨﺎ إﺿﺎﻓ ﺔ ﻣﻠﻔﺎ ت‬

‫‪)f.write‬اﺳﻢ اﻟﻤﻠﻒ(‬

‫*‬
‫ﺘﻴﺮاد ﻣﻠﻒ )‪5) f .write ("file3.txt") 6) f.close () 7‬‬
‫)‪1‬ﻣﻦ اﺳ‬
‫)"‪ZIP_DEFLATED) 3) f.write ("file1.txt") 4) f.write ("file2.txt‬‬
‫ﺗﻢ إﻧﺸﺎء ﻣﻠﻒ ‪files.zip‬‬
‫ﺒﺎﻋ ﺔ )"‬
‫‪zip 2) f = ZipFile ("files.zip"، 'w'،‬ﻃ‬
‫ﺑﻨﺠﺎح"(‬

‫ﻹﺟﺮاء ﻋﻤﻠﻴ ﺔ ﻓﻚ اﻟﻀﻐﻂ‪:‬‬


‫ﺘﺎﻟ ﻲ‬
‫ﻋﻠﻴﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ ‪ZipFile‬ﻋﲆ اﻟﻨﺤﻮ اﻟ‬

‫)‪f = ZipFile ("files.zip" ، "r" ، ZIP_STORED‬‬

‫ﺘﺤﺪﻳﺪ ﻫﺎ‪.‬‬
‫ﺑ‬‫ﺒﻴﻦ‬
‫ﺘﺎﻟ ﻲ ﻟ ﺴﻨﺎ ﻣﻄﺎﻟ‬
‫ﺑﺎﻟ‬
‫ﺘﺮاﺿﻴ ﺔ و‬
‫ﺜﻞ ‪ZIP_STORED‬ﻋﻤﻠﻴ ﺔ ﻓﻚ اﻟﻀﻐﻂ‪ .‬ﻫﺬه ﻫ ﻲ اﻟﻘﻴﻤ ﺔ اﻻﻓ‬
‫ﻳﻤ‬

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ‬
‫ﺑﺎﺳ‬‫ﺑﻤﺠﺮد إﻧﺸﺎء ﻛﺎﺋﻦ ‪ZipFile‬ﻟﻌﻤﻠﻴ ﺔ ﻓﻚ اﻟﻀﻐﻂ ‪،‬ﻳﻤﻜﻨﻨﺎ اﻟﺤﺼﻮل ﻋﲆ ﺟﻤﻴﻊ أﺳﻤﺎء اﻟﻤﻠﻔﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻫﺬا اﻟﻤﻠﻒ اﻟﻤﻀﻐﻮط‬
‫‪namelist ().‬‬

‫أﺳﻤﺎء )( ‪= f.namelist‬‬

‫*‬
‫ﺘﻴﺮاد ﻣﻠﻒ )‪zip 2) f = ZipFile ("files.zip"، 'r'، ZIP_STORED) 3 ) names = f.namelist () 4‬ﻟﻼﺳﻢ ﻓ ﻲ اﻷﺳﻤﺎء‪name) 5 ) :‬‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪print ( "File Name: "،‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪115‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮى ﻫﺬا اﻟﻤﻠﻒ ﻫﻮ‪()) print () (":‬‬‫‪6)print‬‬


‫ﻣﺤ‬ ‫"( )‪7) 8‬‬
‫)‪9‬‬
‫‪f1 = open (name، 'r') print (f1.read‬‬

‫اﻟﻌﻤﻞ ﻣﻊ اﻟﺪﻻﺋﻞ‪:‬‬
‫ﺜﻞ‬
‫ﻣﻦ اﻟﺸﺎﺋﻊ ﺟﺪًا إﺟﺮاء ﻋﻤﻠﻴﺎ تﻷدﻟ ﺔ ﻣ‬
‫)‪1‬ﻟﻤﻌﺮﻓ ﺔ دﻟﻴﻞ اﻟﻌﻤﻞ اﻟﺤﺎﻟ ﻲ‬
‫)‪2‬ﻹﻧﺸﺎء دﻟﻴﻞ ﺟﺪﻳﺪ‬
‫)‪3‬ﻹزاﻟ ﺔ دﻟﻴﻞ ﻣﻮﺟﻮد‬
‫)‪4‬ﻹﻋﺎدةﺗ ﺴﻤﻴ ﺔ دﻟﻴﻞ‬
‫ﺘﻮﻳﺎ ت اﻟﺪﻟﻴﻞ‬
‫)‪5‬ﻟ ﺴﺮد ﻣﺤ‬
‫إﻟﺦ‪...‬‬

‫ﺘﻮي ﻋﲆ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻮﻇﺎﺋﻒ ﻹﺟﺮاء اﻟﻌﻤﻠﻴﺎ ت‬


‫ﺛﻨﺎﻳﺎه ﻋﻮاﻣﻞ ‪ ،‬واﻟﺬيﻳﺤ‬‫ﺘﻨﻔﻴﺬ ﻫﺬه اﻟﻌﻤﻠﻴﺎ ت ‪،‬ﺗﻮﻓﺮ ‪Python‬ﻧﻈﺎمﺗﺸﻐﻴﻞ وﺣﺪةﻳﺤﻤﻞ ﻓ ﻲ‬
‫ﻟ‬
‫ﺑﺎﻟﺪﻟﻴﻞ‪.‬‬‫ﺘﻌﻠﻘ ﺔ‬
‫اﻟﻤ‬

‫س )‪1‬ﻟﻤﻌﺮﻓ ﺔ دﻟﻴﻞ اﻟﻌﻤﻞ اﻟﺤﺎﻟ ﻲ‬


‫ﺘﺸﻐﻴﻞ‬
‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫اﺳ‬

‫)( ‪cwd = os.getcwd‬‬


‫ﺒﺎﻋ ﺔ )"دﻟﻴﻞ اﻟﻌﻤﻞ اﻟﺤﺎﻟ ﻲ‪cwd) ، ":‬‬
‫ﻃ‬

‫)‪Q2‬ﻹﻧﺸﺎء دﻟﻴﻞ ﻓﺮﻋ ﻲ ﻓ ﻲ دﻟﻴﻞ اﻟﻌﻤﻞ اﻟﺤﺎﻟ ﻲ‬


‫ﺘﺸﻐﻴﻞ‬
‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫اﺳ‬

‫)"‪os.mkdir ("mysub‬‬
‫ﺒﺎﻋ ﺔ )"دﻟﻴﻞ ‪mysub‬اﻟﺬيﺗﻢ إﻧﺸﺎؤه ﻓ ﻲ )"‪cwd‬‬
‫ﻃ‬

‫س )‪3‬ﻹﻧﺸﺎء دﻟﻴﻞ ﻓﺮﻋ ﻲ ﻓ ﻲ دﻟﻴﻞ ‪mysub‬‬


‫‪cwd‬‬

‫‪| -Mysub‬‬
‫‪| -Mysub2‬‬

‫ﺘﺸﻐﻴﻞ‬
‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫اﺳ‬

‫)"‪os.mkdir ("mysub / mysub2‬‬


‫ﺗﻢ إﻧﺸﺎء ‪mysub2‬داﺧﻞ )"‪mysub‬‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬

‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ ‪cwd.‬‬‫ﺘﺮض أن ‪mysub‬ﻣﻮﺟﻮد‬


‫ﻣﻼﺣﻈ ﺔ‪ :‬اﻓ‬

‫ﺜﻞ ‪sub1‬ﻓ ﻲ ذﻟﻚ ‪sub2‬ﻓ ﻲ ذﻟﻚ‬


‫ﺘﻌﺪدة ﻣ‬
‫)‪Q4‬ﻹﻧﺸﺎء أدﻟ ﺔ ﻣ‬
‫‪sub3‬‬
‫ﺘﺸﻐﻴﻞ‬
‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫اﺳ‬

‫)"‪os.makedirs ("sub1 / sub2 / sub3‬‬


‫ﺘ ﻲﺗﻢ إﻧﺸﺎؤ ﻫﺎ"(‬
‫‪print ("sub1‬وﻓ ﻲ ذﻟﻚ ‪sub2‬وﻓ ﻲﺗﻠﻚ اﻟﺪﻻﺋﻞ اﻟﻔﺮﻋﻴ ﺔ ‪3‬اﻟ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪116‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫س )‪5‬ﻹزاﻟ ﺔ دﻟﻴﻞ‬
‫ﺘﺸﻐﻴﻞ‬
‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫اﺳ‬

‫)"‪os.rmdir ("mysub / mysub2‬‬


‫ﺗﻢ ﺣﺬف دﻟﻴﻞ )"‪mysub2‬‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬

‫ﺘﻌﺪدة ﻓ ﻲ اﻟﻤ ﺴﺎر‬


‫)‪Q6‬ﻹزاﻟ ﺔ أدﻟ ﺔ ﻣ‬
‫ﺘﺸﻐﻴﻞ‬
‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫اﺳ‬

‫)"‪os.removedirs ("sub1 / sub2 / sub3‬‬


‫ﺛ ﺔ ‪sub1‬و ‪sub2‬و )"‪sub3‬‬
‫ﺜﻼ‬‫ﺗﻤ ﺖ إزاﻟ ﺔ ﺟﻤﻴﻊ اﻟﺪﻻﺋﻞ اﻟ‬
‫‪")print‬‬

‫س )‪7‬ﻹﻋﺎدةﺗ ﺴﻤﻴ ﺔ دﻟﻴﻞ‬


‫ﺘﺸﻐﻴﻞ‬
‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫اﺳ‬

‫)"‪os.rename ("mysub"، "newdir‬‬


‫ﺗﻤ ﺖ إﻋﺎدةﺗ ﺴﻤﻴ ﺔ دﻟﻴﻞ ‪mysub‬إﱃ )"‪newdir‬‬
‫‪")print‬‬

‫ﺘﻮﻳﺎ ت اﻟﺪﻟﻴﻞ‬
‫س )‪8‬ﻟﻤﻌﺮﻓ ﺔ ﻣﺤ‬
‫ﺘﻮﻳﺎ ت اﻟﺪﻟﻴﻞ اﻟﻔﺮﻋ ﻲ‪.‬‬
‫ﺘﻮﻳﺎ ت اﻟﺪﻟﻴﻞ اﻟﻤﺤﺪد‪ .‬ﻟﻦﻳﻌﺮض ﻣﺤ‬
‫ﺗﻮﻓﺮ وﺣﺪة )( ‪OS Module listdir‬ﻟ ﺴﺮد ﻣﺤ‬

‫ﺘﺸﻐﻴﻞ ))"‪2) print (os.listdir (".‬‬


‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫)‪1‬اﺳ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫]' __‪'module1.py' ، 'myl og.txt' ، 'newdir' ، 'newpic. jpg '، ' pack1 '، ' rossum.jpg '، ' test.py '، ' __pycache‬‬
‫‪'com'، 'demo.py'، 'durgamath.py'، 'emp.csv'، 'file1.txt' ، 'file2.txt' ، 'file3.txt' ، 'files.zip' ، 'log.txt' ،‬‬
‫‪D: \ Python_classes> py test.py ['abc.py'، 'abc.txt'، 'abcd.txt'،‬‬

‫ﺘﻮﻳﺎ ت‬
‫ﺘﻮﻳﺎ ت دﻟﻴﻞ اﻟﻌﻤﻞ اﻟﺤﺎﻟ ﻲ وﻟﻜﻦ ﻟﻴ ﺲ ﻣﺤ‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ﻣﺤ‬
‫•ﻳﻌﺮض اﻟ‬
‫اﻟﺪﻻﺋﻞ اﻟﻔﺮﻋﻴ ﺔ‪.‬‬

‫ﺒﺤ ﺚ ﻋﻨﻪ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻷدﻟ ﺔ اﻟﻔﺮﻋﻴ ﺔ ‪ ،‬ﻓﻌﻠﻴﻨﺎ اﻟ‬‫ﺘﻮﻳﺎ ت دﻟﻴﻞ‬
‫•إذا أردﻧﺎ ﻣﺤ‬
‫اﻟﻤﺸ ﻲ )(وﻇﻴﻔ ﺔ‪.‬‬

‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻷدﻟ ﺔ اﻟﻔﺮﻋﻴ ﺔ‬‫ﺘﻮﻳﺎ ت اﻟﺪﻟﻴﻞ‬


‫س )‪9‬ﻟﻤﻌﺮﻓ ﺔ ﻣﺤ‬
‫ﺘﺨﺪام وﻇﻴﻔ ﺔ )( ‪walk‬‬
‫•ﻋﻠﻴﻨﺎ اﺳ‬

‫ﺘﻮﻳﺎ ت ذﻟﻚ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﻣﻌﺮﻓ ﺔ ﺟﻤﻴﻊ ﻣﺤ‬
‫ﺘﻰ ﻧ‬
‫•] ﻫﻞﻳﻤﻜﻨﻚ اﻟﺪﺧﻮل ﻓ ﻲ اﻟﺪﻟﻴﻞ ﺣ‬
‫اﻟﺪﻟﻴﻞ[‬

‫ﺑﺈرﺟﺎع ﻛﺎﺋﻦ ‪Iterator‬اﻟﺬيﻳﻤﻜﻦ ﻋﺮض‬‫ﺗﻘﻮم‬


‫)‪• os.walk (path، topdown = True، onerror = None، followlinks = False‬‬

‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪for‬‬


‫ﺑﺎﺳ‬‫ﺗﻪ‬
‫ﺘﻮﻳﺎ‬
‫ﻣﺤ‬

‫ﻣ ﺴﺎر اﻟﺪﻟﻴﻞ‪cwd .‬ﻳﻌﻨ ﻲ‪.‬‬ ‫•اﻟﻤ ﺴﺎر‬

‫•ﻣﻦ أﻋﲆ إﱃ أﺳﻔﻞ = ﺻﺤﻴﺢ ﺳﺎﻓﺮ ﻣﻦ أﻋﲆ إﱃ أﺳﻔﻞ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪117‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘ ﻲﻳﺠ ﺐﺗﻨﻔﻴﺬ ﻫﺎ‪.‬‬


‫ﺘﺸﺎف اﻟﺨﻄﺄ ‪ ،‬اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫•ﻋﻨﺪ اﻟﺨﻄﺄ =ﻻ ﺷ ﻲء ﻋﻨﺪ اﻛ‬

‫ﺑﻂ رﻣﺰﻳ ﺔ‬
‫ﺑﺮوا‬‫‪• followlinks = True‬ﻟﺰﻳﺎرة اﻟﺪﻻﺋﻞ اﻟﻤﺸﺎر إﻟﻴﻬﺎ‬

‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻷدﻟ ﺔ اﻟﻔﺮﻋﻴ ﺔ‪:‬‬‫ﺘﻮﻳﺎ ت دﻟﻴﻞ اﻟﻌﻤﻞ اﻟﺤﺎﻟ ﻲ‬


‫ﺜﺎل‪ :‬ﻟﻌﺮض ﻛﺎﻓ ﺔ ﻣﺤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺘﺸﻐﻴﻞ )‪2‬ﻟـ ‪dirpath‬و ‪dirnames‬و ‪filenames‬ﻓ ﻲ )‪4) 5) 6‬‬


‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫)‪1‬اﺳ‬
‫)‪os.walk ('.'): 3) print ("Current Directory Path:"، dirpath‬‬

‫ﺒﺎﻋ ﺔ )"اﻟﺪﻻﺋﻞ‪ ، ":‬أﺳﻤﺎء اﻟﻤ ﺴﺎرا ت(‬


‫ﻃ‬
‫ﺒﺎﻋ ﺔ )"اﻟﻤﻠﻔﺎ ت‪ ، ":‬أﺳﻤﺎء اﻟﻤﻠﻔﺎ ت(‬
‫ﻃ‬
‫ﺒﺎﻋ ﺔ )(‬
‫ﻃ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﻣ ﺴﺎر اﻟﺪﻟﻴﻞ اﻟﺤﺎﻟ ﻲ‪.:‬‬
‫اﻟﺪﻻﺋﻞ‪['com'، 'newdir'، 'pack1'، '__pycache__'] :‬‬
‫اﻟﻤﻠﻔﺎ ت‪['abc.txt'، 'abcd.txt'، 'demo.py'، 'durgamath.py'، 'emp.csv'، 'file1.txt'، 'file2.txt'، 'file3. :‬‬
‫]' ‪txt '، ' files.zip '، ' log.txt '، ' module1.py '، ' mylog.txt '، ' newpic.jpg '، ' rossum.jpg '، ' test.py‬‬

‫ﻣ ﺴﺎر اﻟﺪﻟﻴﻞ اﻟﺤﺎﻟ ﻲ‪\ com .:‬اﻟﺪﻻﺋﻞ‪'__pycache__'] :‬‬


‫‪['durgasoft'،‬‬
‫اﻟﻤﻠﻔﺎ ت‪['module1.py'، '__init__.py'] :‬‬
‫‪...‬‬

‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﻮﻓﻴﺮ اﺳﻢ اﻟﺪﻟﻴﻞ ﻫﺬا ﻛﻮﺳﻴﻄ ﺔ ‪to walk () function.‬‬


‫ﺘﻮﻳﺎ ت دﻟﻴﻞ ﻣﻌﻴﻦ ‪،‬ﻳ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻟﻌﺮض ﻣﺤ‬

‫‪")os.walk‬اﺳﻢ اﻟﺪﻟﻴﻞ"(‬

‫ﺑﻴﻦ وﻇﺎﺋﻒ )( ‪listdir‬و ؟)( ‪walk‬‬‫س( ﻣﺎ اﻟﻔﺮق‬


‫ﺘﻮﻳﺎ ت اﻟﺪﻟﻴﻞ اﻟﻔﺮﻋ ﻲ‪ .‬وﻟﻜﻦ ﻓ ﻲ ﺣﺎﻟ ﺔ وﻇﻴﻔ ﺔ ‪walk () ،‬ﺳﻨﺤﺼﻞ ﻋﲆ‬
‫ﺘﻮﻳﺎ ت اﻟﺪﻟﻴﻞ اﻟﻤﺤﺪد وﻟﻜﻦ ﻟﻴ ﺲ ﻣﺤ‬
‫ﻓ ﻲ ﺣﺎﻟ ﺔ ‪listdir () ،‬ﺳﻨﺤﺼﻞ ﻋﲆ ﻣﺤ‬
‫ﺑﻪ أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺘﻮﻳﺎ ت اﻟﺪﻟﻴﻞ اﻟﻤﺤﺪد واﻷدﻟ ﺔ اﻟﻔﺮﻋﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﻣﺤ‬

‫ﺑﺮﻧﺎﻣﺞ ‪Python:‬‬‫ﺑﺮاﻣﺞ أﺧﺮى ﻣﻦ‬‫ﺗﺸﻐﻴﻞ‬


‫ﺒﺮاﻣﺞ واﻷواﻣﺮ‪.‬‬
‫ﺘﺸﻐﻴﻞ اﻟ‬
‫ﺘﻮي وﺣﺪة ‪OS Module‬ﻋﲆ وﻇﻴﻔ ﺔ )( ‪system‬ﻟ‬
‫ﺗﺤ‬
‫ﺒﻂ ﻧﻔ ﺲ وﻇﻴﻔ ﺔ )( ‪system‬ﻓ ﻲ ﻟﻐ ﺔ ‪C.‬‬
‫ﺑﺎﻟﻀ‬‫إﻧﻬﺎ‬

‫‪")os.system‬ﺳﻠ ﺴﻠ ﺔ أواﻣﺮ"(‬
‫ﺘﻢﺗﻨﻔﻴﺬه ﻣﻦ ‪DOS.‬‬
‫اﻟﺤﺠ ﺔ ﻫ ﻲ أي أﻣﺮﻳ‬

‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺘﺸﻐﻴﻞ‬
‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫اﺳ‬

‫)"‪os.system ("dir * .py‬‬


‫)"‪os.system ("py abc.py‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪118‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﻛﻴﻔﻴ ﺔ اﻟﺤﺼﻮل ﻋﲆ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﻣﻠﻒ‪:‬‬


‫ﺘﺨﺪام وﻇﻴﻔ ﺔ‬
‫ﺑﺎﺳ‬‫ﺜﻞ اﻟﺤﺠﻢ وآﺧﺮ وﻗ ﺖﺗﻢ اﻟﻮﺻﻮل إﻟﻴﻪ وآﺧﺮ وﻗ ﺖﺗﻢﺗﻌﺪﻳﻠﻪ وﻣﺎ إﱃ ذﻟﻚ‬
‫ﻳﻤﻜﻨﻨﺎ اﻟﺤﺼﻮل ﻋﲆ إﺣﺼﺎﺋﻴﺎ ت ﻋﻦ ﻣﻠﻒ ﻣ‬
‫ﺘﺸﻐﻴﻞ‪.‬‬
‫)( ‪stat‬ﻟﻮﺣﺪة ﻧﻈﺎم اﻟ‬
‫)"‪stats = os.stat ("abc.txt‬‬

‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺘﻀﻤﻦ إﺣﺼﺎﺋﻴﺎ ت اﻟﻤﻠﻒ اﻟﻤﻌﻠﻤﺎ ت اﻟ‬
‫ﺗ‬

‫ﺑ ﺖ اﻟﺤﻤﺎﻳ ﺔ‬
‫‪1) st_mode‬‬
‫‪2) st_ino‬رﻗﻢ ‪Inode‬‬
‫)‪3‬ﺟﻬﺎز ‪st_dev‬‬
‫ﺒﺔ‬
‫ﺑﻂ اﻟﺼﻠ‬
‫‪4) st_nlink‬ﻋﺪد اﻟﺮوا‬
‫ﺑﺎﻟﻤﺎﻟﻚ‬‫ﺘﺨﺪم اﻟﺨﺎص‬
‫‪5) st_uid‬ﻣﻌﺮف اﻟﻤ ﺴ‬
‫‪6) st_gid‬ﻣﻌﺮف اﻟﻤﺠﻤﻮﻋ ﺔ اﻟﻤﺎﻟﻚ‬
‫ﺒﺎﻳ ﺖ‬
‫ﺑﺎﻟ‬‫‪7) st_size‬ﺣﺠﻢ اﻟﻤﻠﻒ‬
‫‪8) st_atime‬وﻗ ﺖ أﺣﺪ ث وﺻﻮل‬
‫ﺘﻌﺪﻳﻞ اﻷﺧﻴﺮ‬
‫‪9) st_mtime‬وﻗ ﺖ اﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻮﺻﻔﻴ ﺔ‬
‫‪10) st_ctime‬وﻗ ﺖ أﺣﺪ ثﺗﻐﻴﻴﺮ ﻓ ﻲ اﻟ‬

‫ﺘﺨﺪام وﺣﺪة‬
‫ﺑﺎﺳ‬‫ﺣﺎ‪.‬‬
‫ﺒﺎ ً‬
‫ﺛﺎﻧﻴ ﺔ ﻣﻨﺬ اﻷول ﻣﻦﻳﻨﺎﻳﺮ ‪1970 ،‬اﻟ ﺴﺎﻋ ﺔ ‪ 12:00‬ﺻ‬‫ُﺮﺟﻊ ‪st_atime‬و ‪st_mtime‬و ‪st_ctime‬اﻟﻮﻗ ﺖ ﻛﺮﻗﻢ ﻣﻠ ﻲ‬
‫ﻣﻼﺣﻈ ﺔ‪:‬ﺗ‬
‫ﺒﻂ‪.‬‬
‫ﺑﺎﻟﻀ‬‫ﺘﺎرﻳﺦ واﻟﻮﻗ ﺖ‬
‫ﺑﻊ اﻟﺰﻣﻨ ﻲ ‪() ،‬ﻳﻤﻜﻨﻨﺎ اﻟﺤﺼﻮل ﻋﲆ اﻟ‬
‫ﺘﺎرﻳﺦ واﻟﻮﻗ ﺖ ﻣﻦ وﻇﻴﻔ ﺔ اﻟﻄﺎ‬
‫اﻟ‬

‫ﺒﺎﻋ ﺔ ﻛﺎﻓ ﺔ إﺣﺼﺎﺋﻴﺎ ت ﻣﻠﻒ ‪abc.txt‬‬


‫س( ﻟﻄ‬

‫ﺒﺎﻋ ﺔ )إﺣﺼﺎﺋﻴﺎ ت(‬


‫ﺘﺸﻐﻴﻞ )‪2) stats = os.stat ("abc.txt") 3‬ﻃ‬
‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫)‪1‬اﺳ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪st_nlin k = 1 ، st_uid = 0 ، st_gid = 0 ، st_size = 22410 ، st_atime = 1505451446 ، st_mtime = 1505538999 ، st_1446‬‬
‫‪os.stat_result (st_mode = 33206 ، st_ino = 844424930132788 ، st_dev = 2657980798 ،‬‬

‫ﺒﺎﻋ ﺔ اﻟﺨﺼﺎﺋﺺ اﻟﻤﺤﺪدة‬


‫س( ﻟﻄ‬

‫ﺒﺎﻋ ﺔ "(ﺣﺠﻢ اﻟﻤﻠﻒ‬


‫ﺘﺎرﻳﺦ واﻟﻮﻗ ﺖ )‪3) stats = os.stat ("abc.txt") 4‬ﻃ‬
‫ﺘﻴﺮاد اﻟ‬
‫ﺘﺸﻐﻴﻞ )‪2‬ﻣﻦ اﺳ‬
‫ﺘﻴﺮاد ﻧﻈﺎم اﻟ‬
‫)‪1‬اﺳ‬
‫*‬
‫ﺒﺎﻋ ﺔ "(آﺧﺮ وﻗ ﺖﺗﻢ اﻟﻮﺻﻮل إﻟﻴﻪ ﻟﻠﻤﻠﻒ‪(stats.st_mtime)) ، ":‬‬
‫ﺒﺎﻳ ﺖ‪stats.st_size) 5) ،":‬ﻃ‬
‫ﺑﺎﻟ‬
‫‪(stats.st_atime)) 6) print ("File Last Modified Time:"، datetime.fromtimestamp‬‬
‫‪datetime.fromtimestamp‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪119‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺒﺎﻳ ﺖ ‪22410 :‬وﻗ ﺖ آﺧﺮ وﺻﻮل ﻟﻠﻤﻠﻒ‪10: 27: 26.599490 :‬‬
‫ﺑﺎﻟ‬‫ﺣﺠﻢ اﻟﻤﻠﻒ‬
‫‪2017-09-15‬وﻗ ﺖ آﺧﺮﺗﻌﺪﻳﻞ ﻟﻠﻤﻠﻒ‪2017-09-16 10: 46: 39.245394 :‬‬

‫ﺘﺤﻬﺎ‪:‬‬
‫ﺗﺨﻠﻴﻞ اﻷﺷﻴﺎء وﻓ‬
‫ﺑ ﺔ اﻟﺤﺎﻟ ﺔ اﻟﻜﻠﻴ ﺔ ﻟﻠﻜﺎﺋﻦ إﱃ اﻟﻤﻠﻒ وﻋﻠﻴﻨﺎ ﻗﺮاءة اﻟﻜﺎﺋﻦ اﻟﻜﻠ ﻲ ﻣﻦ اﻟﻤﻠﻒ‪.‬‬
‫ﺘﺎ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ ﻛ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﻳ‬‫•ﻓ ﻲ‬

‫ﺘﺨﻠﻴﻞ وﻋﻤﻠﻴ ﺔ‬
‫ﺑ ﺔ ﺣﺎﻟ ﺔ اﻟﻜﺎﺋﻦ إﱃ اﻟﻤﻠﻒ ﻋﻤﻠﻴ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺗ ﺴﻤﻰ ﻋﻤﻠﻴ ﺔ ﻛ‬
‫•‬
‫ﻗﺮاءة ﺣﺎﻟ ﺔ ﻛﺎﺋﻦ ﻣﻦ اﻟﻤﻠﻒﺗ ﺴﻤﻰ ‪unpickling.‬‬
‫ﺘﺨﺪام وﺣﺪة ‪pickle‬ﻣﻦ ‪Python.‬‬
‫ﺑﺎﺳ‬
‫ﺘﺨﻠﻴﻞ و ‪unpickling‬‬
‫•ﻳﻤﻜﻨﻨﺎﺗﻨﻔﻴﺬ اﻟ‬
‫ﺘﺨﻠﻴﻞ‪)pickle.dump .‬ﻛﺎﺋﻦ ‪ ،‬ﻣﻠﻒ(‬
‫ﺘﻔﺮﻳﻎ )(ﻷداء اﻟ‬
‫ﺘﻮي وﺣﺪة اﻟﻤﺨﻠﻞ ﻋﲆ وﻇﻴﻔ ﺔ اﻟ‬
‫ﺗﺤ‬
‫ﺘﻮي وﺣﺪة ‪pickle‬ﻋﲆ وﻇﻴﻔ ﺔ )( ‪load‬ﻷداء ‪)unpickling obj = pickle.load‬ﻣﻠﻒ(‬
‫ﺗﺤ‬

‫ﺗﺨﻠﻴﻞ‬

‫ﻣﺨﻠﻞ‬
‫إﻧﻮ‪100 :‬‬ ‫) ﻫـ ‪1 ،‬و(‬

‫‪ename:‬دورﺟﺎ‬
‫إﻳﺼﺎل‪10000 :‬‬
‫ﻣﺪﻳﺮ‪HYD :‬‬
‫ه‪1‬‬ ‫إﻧﻮ‪100 :‬‬

‫‪ename:‬دورﺟﺎ‬
‫إﻳﺼﺎل‪10000 :‬‬
‫ﻣﺪﻳﺮ‪HYD :‬‬

‫إﻧﻮ‪100 :‬‬ ‫‪abc.txt‬‬


‫‪ename:‬دورﺟﺎ‬ ‫ﺗﺤﻤﻴﻞ اﻟﻤﺨﻠﻞ )و(‬
‫إﻳﺼﺎل‪10000 :‬‬
‫ﻣﺪﻳﺮ‪HYD :‬‬ ‫ﺘﺸﺮ‬
‫ﻏﻴﺮ ﻣﻨ‬
‫ه‪2‬‬

‫ﺘﺨﺪام وﺣﺪة ‪pickle:‬‬


‫ﺑﺎﺳ‬‫ﺗﻬﺎ‬
‫ﺑ ﺔ ﺣﺎﻟ ﺔ اﻟﻜﺎﺋﻦ وﻗﺮاء‬
‫ﺘﺎ‬
‫ﻛ‬

‫ﺘﻴﺮاد اﻟﻤﺨﻠﻞ )‪2‬ﻓﺌ ﺔ اﻟﻤﻮﻇﻒ‪"\ t"، self.ename، "\ t"، self.esal، "\ t"، self.eaddr) 10) :‬‬
‫)‪1‬اﺳ‬
‫‪ 8) def display (self): 9) print (self.eno،‬؛ ‪ 7) self.eaddr = eaddr‬؛ ‪ 6) self.esal = esal‬؛ ‪ename‬‬
‫= ‪ 5) self.ename‬؛‪3) def __init __ (self، eno، ename، esal، eaddr): 4) self.eno = eno‬ﻣﻊ )"‬
‫‪open ("emp .dat "،" wb‬ﻛـ = ‪f: 11) e‬اﻟﻤﻮﻇﻒ )" ‪(100،" Durga "، 1000،" Hyd‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪120‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

‫ﻣﻊ‬14) 15) ("... ‫ﺘﻤﻞ‬


‫ﻣﻜ‬12) pickle.dump (e، f) 13) print ("Pickle of Employee Object
‫ﺒﺎﻋ ﺔ ﻣﻌﻠﻮﻣﺎ ت اﻟﻤﻮﻇﻒ‬
‫)"ﻃ‬f: 16) obj = pickle .load (f) 17) print ‫ﻛـ‬open ("emp.dat"، "rb")
18) obj.display () ("‫ﺘﺤﺪﻳﺪ‬
‫ﺑﻌﺪ إﻟﻐﺎء اﻟ‬

:‫ﺘﻌﺪدة ﻟﻠﻤﻮﻇﻔﻴﻦ ﻓ ﻲ اﻟﻤﻠﻒ‬


‫ﺑ ﺔ ﻛﺎﺋﻨﺎ ت ﻣ‬
‫ﺘﺎ‬
‫ﻛ‬

emp.py:

= ename ‫ ؛‬5) self.esal = esal ‫ ؛‬6) self.eaddr = eaddr ‫ ؛‬7)


eno، ename، esal، eaddr): 3) self.eno = eno‫ ؛‬4) self.ename
8) 9) :(‫ﺗ ﻲ‬
‫ﻋﺮض ﻣﻮاﻃﻨﻪ )ذا‬1) class Employee: 2) def __init __ (self،

(self.eno، "\ t"، self.ename، "\ t"، self.esal، "\ t"، self.eaddr) ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬

pick.py:

‫)"إدﺧﺎل‬emp ، pickle 2) f = open ("emp.dat"، "wb") 3) n = int ‫ﺘﻴﺮاد‬


‫اﺳ‬1)
‫()"أدﺧﻞ رﻗﻢ‬n): 5) eno = int (input ‫ﻓ ﻲ اﻟﻨﻄﺎق‬i ‫ﻟـ‬4) ((":‫ﻋﺪد اﻟﻤﻮﻇﻔﻴﻦ‬
7) 8) eaddr = input (":‫)"أدﺧﻞ اﺳﻢ اﻟﻤﻮﻇﻒ‬6) ename = input ((":‫اﻟﻤﻮﻇﻒ‬
Objects pickled Success") ‫اﻟﻤﻮﻇﻒ‬9) e = emp. (":‫)"أدﺧﻞ ﻋﻨﻮان اﻟﻤﻮﻇﻒ‬
(eno، ename، esal، eaddr) 10) pickle.dump (e، f) 11) print ("Employee

((":‫ﺗ ﺐ اﻟﻤﻮﻇﻒ‬
‫)"أدﺧﻞ را‬esal = float (input

unpick.py:

2) f = open ("emp.dat"، "rb") 3) ‫ﺘﻴﺮاد‬


‫اﺳ‬1)
4) (":‫ﺗﻔﺎﺻﻴﻞ اﻟﻤﻮﻇﻒ‬
") ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬emp ، pickle
obj = pickle.load (f ) :‫ﺣﺎول‬5) :‫ﺑﻴﻨﻤﺎ ﺻﺤﻴﺢ‬
6)

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

121
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺗﻢ إﻛﻤﺎل‬
‫ﺒﺎﻋ ﺔ "(‬
‫ﻃ‬ ‫‪EOF:‬‬
‫)‪11‬‬ ‫ﺧﻄﺄ )‪9‬‬
‫‪f.close‬‬ ‫ﺜﻨﺎءﺔ )(‬
‫ﺘ‬
‫ﺘﺮاﺣ‬‫ﺑﺎاﺳ‬‫‪7) obj.display‬‬
‫)‪10‬‬ ‫)‪() 8‬‬
‫ﺟﻤﻴﻊ اﻟﻤﻮﻇﻔﻴﻦ"(‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪122‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻌﺪد‬
‫ﻣ‬
‫ﺧﻴﻮط‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪123‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻌﺪد اﻟﻤﻬﺎم‪:‬‬
‫ﻣ‬
‫ﺗﻨﻔﻴﺬ ﻋﺪة ﻣﻬﺎم ﻓ ﻲ وﻗ ﺖ واﺣﺪ ﻫﻮ ﻣﻔﻬﻮمﺗﻌﺪد اﻟﻤﻬﺎم‪.‬‬

‫ﺘﻌﺪدة‬
‫ﻫﻨﺎك ﻧﻮﻋﺎن ﻣﻦ اﻟﻤﻬﺎم اﻟﻤ‬

‫ﺗﻌﺪد اﻟﻤﻬﺎم اﻟﻘﺎﺋﻢ ﻋﲆ اﻟﻌﻤﻠﻴﺎ ت‬


‫)‪1‬‬

‫ﺘﻌﺪد اﻟﻤﻬﺎم ﻋﲆ أﺳﺎس‬


‫)‪2‬ﻣﻮﺿﻮع ﻣ‬

‫ﺗﻌﺪد اﻟﻤﻬﺎم اﻟﻘﺎﺋﻢ ﻋﲆ اﻟﻌﻤﻠﻴﺎ ت‪:‬‬


‫)‪1‬‬
‫ﺘﻌﺪدة اﻟﻤﻬﺎم ﻗﺎﺋﻤ ﺔ ﻋﲆ اﻟﻌﻤﻠﻴﺎ ت‪.‬‬
‫ﺘﻘﻠ ﺔ ﻣﻨﻔﺼﻠ ﺔ ‪ ،‬ﻋﻤﻠﻴ ﺔ ﻣ‬
‫ُﻄﻠﻖ ﻋﲆﺗﻨﻔﻴﺬ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻬﺎم ﻓ ﻲ وﻗ ﺖ واﺣﺪ ﺣﻴ ﺚﺗﻜﻮن ﻛﻞ ﻣﻬﻤ ﺔ ﻋﻤﻠﻴ ﺔ ﻣ ﺴ‬
‫ﻳ‬

‫ﺘﻨ ﺴﻴﻖ ‪mp3‬ﻣﻦ ﻧﻔ ﺲ اﻟﻨﻈﺎم‪ .‬ﻓ ﻲ ﻧﻔ ﺲ اﻟﻮﻗ ﺖﻳﻤﻜﻨﻨﺎ‬


‫ﺑ‬‫ﺗﻴ ﺔ‬
‫ﺘﻤﺎع إﱃ اﻷﻏﺎﻧ ﻲ اﻟﺼﻮ‬
‫ﺑﺮﻧﺎﻣﺞ ‪python‬ﻓ ﻲ اﻟﻤﺤﺮر ‪،‬ﻳﻤﻜﻨﻨﺎ اﻻﺳ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺛﻨﺎء ﻛ‬
‫ﺜﺎل‪ :‬أ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺘﻌﺪدة اﻟﻤﻬﺎم ﻋﲆ أﺳﺎس اﻟﻌﻤﻠﻴ ﺔ‪.‬‬


‫ﺛﻢ ﻓﻬ ﻲ ﻣ‬‫ﺒﻌﺾ‪ .‬وﻣﻦ‬
‫ﺑﻌﻀﻬﺎ اﻟ‬‫ﺘﻘﻞ ﻋﻦ‬
‫ﺑﺸﻜﻞ ﻣ ﺴ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ ﻓ ﻲ وﻗ ﺖ واﺣﺪ و‬
‫ﺘﺮﻧ ﺖ‪ .‬ﻛﻞ ﻫﺬه اﻹﺟﺮاءا تﻳ‬
‫ﺗﻨﺰﻳﻞ ﻣﻠﻒ ﻣﻦ اﻹﻧ‬

‫ﺘﺸﻐﻴﻞ‪.‬‬
‫ﺘﻮى ﻧﻈﺎم اﻟ‬
‫ﺘﻌﺪدة ﻫﻮ اﻷﻧ ﺴ ﺐ ﻟﻤ ﺴ‬
‫ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻟﻤﻬﺎم اﻟﻤ‬

‫ﺗﻌﺪد اﻟﻤﻬﺎم ﻋﲆ أﺳﺎس اﻟﻤﻮﺿﻮع‪:‬‬


‫)‪2‬‬
‫ﺘﻌﺪدة اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ اﻟﺨﻴﻂ ‪ ،‬وﻳﻄﻠﻖ ﻋﲆ ﻛﻞ ﺟﺰء‬
‫ﺗ ﺴﻤﻰ اﻟﻤﻬﺎم اﻟﻤ‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬و‬ ‫ﺗﻨﻔﻴﺬ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻬﺎم ﻓ ﻲ وﻗ ﺖ واﺣﺪ ﺣﻴ ﺚﺗﻜﻮن ﻛﻞ ﻣﻬﻤ ﺔ ﺟﺰءًا ﻣ ﺴ ً‬
‫ﺘﻘﻼ ﻣﻦ ﻧﻔ ﺲ اﻟ‬ ‫•‬

‫ﺘﻘﻞ اﺳﻢ ‪Thread.‬‬


‫ﻣﺴ‬

‫ﺒﺮﻧﺎﻣﺠ ﻲ‪.‬‬
‫ﺘﻮى اﻟ‬
‫ﺘﻌﺪدة ﻫﻮ اﻷﻧ ﺴ ﺐ ﻋﲆ اﻟﻤ ﺴ‬
‫• ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻟﻤﻬﺎم اﻟﻤ‬

‫ﺑ ﺔ‪.‬‬
‫ﺘﺠﺎ‬
‫ﺘﻌﺪد اﻟﻤﻬﺎم ﻫ ﻲﺗﺤ ﺴﻴﻦ أداء اﻟﻨﻈﺎم ﻋﻦ ﻃﺮﻳﻖﺗﻘﻠﻴﻞ وﻗ ﺖ اﻻﺳ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟ‬
‫ﺘﻤﺪ ﻋﲆ اﻟﻌﻤﻠﻴ ﺔ أو ﻋﲆ اﻟﺨﻴﻂ ‪ ،‬ﻓﺈن اﻟﻤﻴﺰة اﻟﺮ‬
‫ﻣﻼﺣﻈ ﺔ‪:‬ﺳﻮاء ﻛﺎنﻳﻌ‬

‫ﺘﻌﺪدة ﻫ ﻲ‪:‬‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﺨﻴﻮط اﻟﻤ‬
‫ﺒﻴﻖ اﻟﻤﻬﻤ ﺔ اﻟﺮ‬
‫ﺘﻄ‬‫ﻣﺠﺎﻻ ت اﻟ‬

‫ﺘﻌﺪدة‬
‫ﺘﻨﻔﻴﺬ رﺳﻮﻣﺎ ت اﻟﻮﺳﺎﺋﻂ اﻟﻤ‬
‫)‪1‬ﻟ‬

‫ﺘﺤﺮﻛ ﺔ‬
‫ﺘﻄﻮﻳﺮ اﻟﺮﺳﻮم اﻟﻤ‬
‫)‪2‬ﻟ‬

‫ﺗﻄﻮﻳﺮ أﻟﻌﺎ ب اﻟﻔﻴﺪﻳﻮ‬


‫)‪3‬‬

‫ﺒﻴﻘﺎ ت‬
‫ﺘﻄ‬‫ﺗﻄﻮﻳﺮ ﺧﻮادم اﻟﻮﻳ ﺐ واﻟ‬
‫)‪4‬‬
‫إﻟﺦ‪...‬‬

‫ﺜﻞ ﻫﺬا اﻟﻨﻮع ﻣﻦ‬ ‫ﺑﺪﻻ ً ﻣﻦ اﻟ‬


‫ﺘﻨﻔﻴﺬ واﺣﺪًاﺗﻠﻮ اﻵﺧﺮ‪ .‬ﻓ ﻲ ﻣ‬ ‫ﺘﻨﻔﻴﺬ ﻓ ﻲ وﻗ ﺖ واﺣﺪ‬
‫ﺑﺎﻟ‬‫ﺑﺸﺪة‬‫ﺘﻘﻠ ﺔ ‪،‬ﻳﻮﺻﻰ‬
‫ﺘﻮاﻓﺮ ﻓﻴﻪ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻮﻇﺎﺋﻒ اﻟﻤ ﺴ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓ ﻲ أي وﻗ ﺖﺗ‬

‫اﻟﺤﺎﻻ ت ‪،‬ﻳﺠ ﺐ أن ﻧﺬ ﻫ ﺐ إﱃ ‪Multi Threading.‬‬

‫ﺘﻌﺪدة اﻟﺨﻴﻮط أﻣﺮﺳﻬﻞ‬


‫ﺑﺮاﻣﺞ ﻣ‬‫ﺛﻢ ﻓﺈنﺗﻄﻮﻳﺮ‬‫ﺘﻄﻮﻳﺮ اﻟﺨﻴﻮط‪ .‬وﻣﻦ‬
‫ﺘﻮﻓﻴﺮ اﻟﺪﻋﻢ ﻟ‬
‫ﺑﻂ" ﻟ‬
‫ﺘﺮا‬
‫ﺛﻨﺎﻳﺎه ﻋﻮاﻣﻞ "ﻣﺆﺷﺮا ت اﻟ‬‫ﺗﻮﻓﺮ ‪Python‬وﺣﺪة ﻧﻤﻄﻴ ﺔ واﺣﺪةﺗﺤﻤﻞ ﻓ ﻲ‬
‫•‬

‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬‫ﻟﻠﻐﺎﻳ ﺔ ﻓ ﻲ‬

‫ﺑﻂ واﺣﺪ ﻻﻳﻌﺪو أنﻳﻜﻮن‬


‫ﺘﺮاﺿ ًﻴﺎ ﻋﲆ ﻣﺆﺷﺮﺗﺮا‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬اﻓ‬‫ﺘﻮي ﻛﻞ‬
‫•ﻳﺤ‬
‫ﺋﻴ ﺴ ﻲ‪.‬‬
‫ﻣﻮﺿﻮع اﻟﺮ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪124‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻨﻔﻴﺬ اﻟﺤﺎﻟﻴ ﺔ‬
‫ﺒﺎﻋ ﺔ اﺳﻢﺳﻠ ﺴﻠ ﺔ اﻟ‬
‫ﺑﺮﻧﺎﻣﺞ ﻟﻄ‬‫س(‬

‫ﺒﺎﻋ ﺔ ))( ‪("Current Executing Thread:"، threading.current_thread (). getName‬‬


‫ﺘﻴﺮاد ﺧﻴﻮط )‪2‬ﻃ‬
‫)‪1‬اﺳ‬

‫اﻹﺧﺮاج‪:‬ﺗﻨﻔﻴﺬ اﻟﺤﺎﻟ ﻲ اﻟﻤﻮﺿﻮع‪MainThread :‬‬

‫ﺘﺪﻋﻴﻨﺎ ﻃﺮﻳﻘ ﺔ ‪() ،‬‬ ‫ُﺮﺟﻊ ﻛﺎﺋﻦﺳﻠ ﺴﻠ ﺔ اﻟ‬


‫ﺘﻨﻔﻴﺬ اﻟﺤﺎﻟ ﻲ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻜﺎﺋﻦ ‪ ،‬إذا اﺳ‬ ‫ﺘ ﻲﺗ‬
‫ﺑﻂ ﻋﲆ اﻟﻮﻇﻴﻔ ﺔ )( ‪current_thread‬اﻟ‬
‫ﺘﺮا‬
‫ﺘﻮي وﺣﺪة اﻟ‬
‫ﻣﻼﺣﻈ ﺔ‪:‬ﺗﺤ‬

‫ﺘﻨﻔﻴﺬ اﻟﺤﺎﻟ ﻲ‪.‬‬


‫‪getName‬ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ اﺳﻢﺳﻠ ﺴﻠ ﺔ اﻟ‬

‫ﺜﻮن‪:‬‬
‫ﺑﺎﻳ‬‫ﺑﻂ ﻓ ﻲ‬
‫ﻃﺮق إﻧﺸﺎء ﻣﺆﺷﺮﺗﺮا‬
‫ﺘﺨﺪام ‪3‬ﻃﺮق‬
‫ﺑﺎﺳ‬‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﺧﻴﻂ ﻓ ﻲ‬
‫ﺘﺨﺪام أي ﻓﺌ ﺔ‬
‫)‪1‬إﻧﺸﺎء ﻣﻮﺿﻮع دون اﺳ‬
‫)‪2‬إﻧﺸﺎء ﻣﻮﺿﻮع ﻋﻦ ﻃﺮﻳﻖﺗﻤﺪﻳﺪ ﻓﺌ ﺔ اﻟﻤﻮﺿﻮع‬
‫ﺑﺪونﺗﻤﺪﻳﺪ ﻓﺌ ﺔ اﻟﻤﻮﺿﻮع‬‫)‪3‬إﻧﺸﺎءﺳﻠ ﺴﻠ ﺔ رﺳﺎﺋﻞ‬

‫ﺘﺨﺪام أي ﻓﺌ ﺔ‬
‫)‪1‬إﻧﺸﺎءﺳﻠ ﺴﻠ ﺔ رﺳﺎﺋﻞ دون اﺳ‬
‫*‬
‫ﺒﺎﻋ ﺔ )‪Thread 7‬‬
‫ﺘﻴﺮاد اﻟﺨﻴﻂ )‪2‬ﻋﺮض )‪def (): 3‬ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق )‪(1،11): 4‬ﻃ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪(target = display) #creating Thread object 6) t .start () #starting of‬‬
‫‪("Child Thread") 5) t = Thread‬ﻟـ )"‪i in range (1،11): 8) print ("Main Thread‬‬

‫ﺘﻌﺪدة اﻟﺨﻴﻮط‪.‬‬
‫ﺒﺮاﻣﺞ ﻣ‬
‫ﺘﺎﻟ ﻲ ﻻﻳﻤﻜﻨﻨﺎﺗﻮﻗﻊ إﺧﺮاج دﻗﻴﻖ ﻟﻠ‬
‫ﺑﺎﻟ‬
‫ﺘﻨﻔﻴﺬ ‪ ،‬و‬
‫ﺗﻴ ﺐ اﻟ‬
‫ﺑﺮﻧﺎﻣﺠﻨﺎ ‪ ،‬ﻓﻼﻳﻤﻜﻨﻨﺎﺗﻮﻗﻊﺗﺮ‬‫ﻓ ﻲ ﺣﺎﻟ ﺔ وﺟﻮد اﻟﻌﺪﻳﺪ ﻣﻦﺳﻼﺳﻞ اﻟﺮﺳﺎﺋﻞ ﻓ ﻲ‬
‫ﺘﺸﻐﻴﻞ‪.‬‬
‫ﺘﻢﺗﺸﻐﻴﻠﻪ ﻟﻠ‬
‫ﺘﻠﻒ ﻣﻦ آﻟ ﺔ إﱃ أﺧﺮى وﻳ‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪ ،‬ﻓﻬﻮﻳﺨ‬
‫‪B'z‬ﻣﻦ ﻫﺬا ﻻﻳﻤﻜﻨﻨﺎﺗﻮﻓﻴﺮ ﻣﺨﺮﺟﺎ ت دﻗﻴﻘ ﺔ ﻟﻠ‬

‫ﺑﻨﺎ‪.‬‬‫ﺘﺨﺪاﻣﻬﺎ ﻹﻧﺸﺎءﺳﻼﺳﻞ اﻟﺮﺳﺎﺋﻞ اﻟﺨﺎﺻ ﺔ‬


‫ﺘ ﻲﻳﻤﻜﻦ اﺳ‬
‫ﺑﻂ واﻟ‬ ‫ﺒ ًﻘﺎ ﻣﻮﺟﻮدة ﻓ ﻲ وﺣﺪة ﻣﺆﺷﺮا ت اﻟ‬
‫ﺘﺮا‬ ‫ﻣﻼﺣﻈ ﺔ‪ :‬اﻟﻤﻮﺿﻮع ﻫﻮ ﻓﺌ ﺔ ﻣﺤﺪدة ﻣ ﺴ‬

‫ﺘﻮﺳﻴﻊ ﻓﺌ ﺔ اﻟﻤﻮﺿﻮع‬
‫ﺑ‬‫ﺑﻂ‬
‫)‪2‬إﻧﺸﺎء ﻣﺆﺷﺮﺗﺮا‬
‫ﺑ ﺔ‪ .‬ﻋﻨﺪﻣﺎ ﻧﻄﻠﻖ ﻋﲆ ﻃﺮﻳﻘ ﺔ ‪() ،‬‬
‫ﺘﻨﺎ اﻟﻤﻄﻠﻮ‬
‫ﺑﻮﻇﻴﻔ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﺠﺎوز ﻃﺮﻳﻘ ﺔ )( ‪run‬‬
‫ﻋﻠﻴﻨﺎ إﻧﺸﺎء ﻓﺌ ﺔ ﻓﺮﻋﻴ ﺔ ﻟﻔﺌ ﺔ اﻟﻤﻮﺿﻮع‪ .‬ﻓ ﻲﺗﻠﻚ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ ‪،‬ﻳ‬

‫ﺘﻨﺎ‪.‬‬
‫ﺗﺆدي وﻇﻴﻔ‬
‫ﺗﻠﻘﺎﺋ ًﻴﺎ و‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻃﺮﻳﻘ ﺔ )( ‪run‬‬
‫‪start‬ﺳﻴ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪125‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫*‬
‫ﺘﻴﺮاد اﻟﺨﻴﻂ )‪2‬ﻓﺌ ﺔ )‪() 7 ) t.start () 8‬‬‫)‪1‬ﻣﻦ اﺳ‬
‫‪5) print ("Child Thread-1") 6) t = MyThread‬‬
‫‪3) def run (self): 4) for i in range (10):‬‬
‫ﺒﺎﻋ ﺔ‬
‫‪MyThread‬ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق )‪(10): 9‬ﻃ‬ ‫‪(Thread):‬‬
‫)"‪("Main Thread-1‬‬

‫)‪3‬إﻧﺸﺎءﺳﻠ ﺴﻠ ﺔ اﻟﺮﺳﺎﺋﻞ دونﺗﻤﺪﻳﺪ ﻓﺌ ﺔ اﻟﻤﻮﺿﻮع‬

‫*‬
‫ﺒﺎر‪3) :‬ﻋﺮض ‪def‬‬
‫ﺘ‬‫ﺘﻴﺮاد اﻟﺨﻴﻂ )‪2‬ﻓﺌ ﺔ اﻻﺧ‬‫)‪1‬ﻣﻦ اﺳ‬
‫ﺗ ﻲ(‪4) :‬ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق )‪obj.display) 8) t.start () 9‬‬
‫)ذا‬
‫= ‪6) obj = Test () 7) t = Thread (target‬‬
‫‪i(10):‬ﻟـ )"‪Thread-2‬‬ ‫‪5) print‬‬
‫‪in range‬‬ ‫‪("Child‬‬
‫‪(10):‬‬ ‫)"‪Thread-2‬‬
‫‪10) print‬‬ ‫‪("Main‬‬

‫ﺘﻌﺪدة‬
‫ﺑﺪون ﺧﻴﻮط ﻣ‬
‫*‬
‫ﺑﺎﻷرﻗﺎم ‪7) def :‬‬
‫ﺘﻴﺮاد )‪3‬ﻣﻀﺎﻋﻔﺎ ت ‪)def‬أرﻗﺎم(‪4) :‬ﻟـ ‪n‬‬
‫ﺘﻴﺮاد اﻟﺨﻴﻂ )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫ﺑﺎﻷرﻗﺎم ‪11) :‬‬
‫ﺑﻌﺎ ت ) اﻷرﻗﺎم(‪8) :‬ﻟـ ‪n‬‬
‫)‪5) time.sleep (1) 6) print ("Double:"، 2 * n‬اﻟﻤﺮ‬
‫)‪9) time.sleep (1) 10) print ("Square:"، n * n‬اﻷرﻗﺎم )‪begintime = time.time () 13‬‬
‫ﺒﺎﻋ ﺔ "(إﺟﻤﺎﻟ ﻲ اﻟﻮﻗ ﺖ‬
‫ﺑﻌﺎ ت )أرﻗﺎم( )‪15‬ﻃ‬
‫)‪14‬ﻣﺮ‬
‫ﺒﺪء(‬
‫)أرﻗﺎم(‬
‫ﺘﻀﺎﻋﻒوﻗ ﺖ اﻟ‬
‫‪time.time‬‬
‫]‪= [1،2،3،4،5،6‬ﻳ‬
‫ﺘﻐﺮق‪() - ، ":‬‬
‫ﺴ‬‫)‪12‬‬
‫اﻟﻤ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪126‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻌﺪدة‬
‫ﻣﻊ ﺧﻴﻮط ﻣ‬

‫*‬
‫ﺑﺎﻷرﻗﺎم ‪7) def :‬‬
‫ﺘﻴﺮاد )‪3‬ﻣﻀﺎﻋﻔﺎ ت ‪)def‬أرﻗﺎم(‪4) :‬ﻟـ ‪n‬‬
‫ﺘﻴﺮاد اﻟﺨﻴﻂ )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫ﺑﺎﻷرﻗﺎم ‪:‬‬
‫ﺑﻌﺎ ت ) اﻷرﻗﺎم(‪8) :‬ﻟـ ‪n‬‬
‫)‪5) time.sleep (1) 6) print ("Double:"، 2 * n‬اﻟﻤﺮ‬
‫‪11) 12) number = [1،2،3،4،5،6] 13) Begintime = time.time () 14) t1 = Thread‬‬
‫‪t1.join‬‬
‫ﻷرﻗﺎم ‪= ((،‬‬
‫)‪() 19‬‬
‫‪)args‬ا‬
‫‪t2.join‬‬
‫)‪20‬ﻲ)(‪= ،‬‬
‫اﻟﺰوﺟ‬
‫‪print‬‬
‫)اﻟﻬﺪف =‬
‫‪(" ((،time.sleep‬‬
‫)‪)args(1‬اﻷرﻗﺎم‬
‫)‪ 10‬ت)‪= ،9‬‬
‫ﺑﻌﺎ‬‫اﻟﻤﺮ‬
‫‪print‬‬
‫)اﻟﻬﺪف =‬
‫‪("Square:"،‬‬
‫)‪15‬اﻟﺨﻴﻂ‬
‫‪n * t2‬‬
‫)‪n‬‬
‫ﺘﻐﺮق‪() - Begintime) ، ":‬‬
‫‪16) t1.start () 17) t2.start‬إﺟﻤﺎﻟ ﻲ اﻟﻮﻗ ﺖ اﻟﻤ ﺴ‬ ‫)‪() 18‬‬
‫‪time.time‬‬

‫ﺗﻌﻴﻴﻦ واﻟﺤﺼﻮل ﻋﲆ اﺳﻢﺳﻠ ﺴﻠ ﺔ اﻟﺮﺳﺎﺋﻞ‪:‬‬


‫ﺒﺮﻣﺞ‪.‬‬
‫ﺒﻞ اﻟﻤ‬
‫ﺑﻮاﺳﻄ ﺔ ‪Python‬أو اﻻﺳﻢ اﻟﻤﺨﺼﺺ اﻟﻤﻘﺪم ﻣﻦ ﻗ‬‫ﺘﺮاﺿ ﻲ اﻟﺬيﺗﻢ إﻧﺸﺎؤه‬
‫ﺜﻮن ﻟﻪ اﺳﻢ‪ .‬ﻗﺪﻳﻜﻮن اﻻﺳﻢ اﻻﻓ‬
‫ﺑﻴ‬‫ﻛﻞ ﺧﻴﻂ ﻓ ﻲ‬

‫ﺘﺎﻟﻴ ﺔ‪.‬‬
‫ﺑﻂ اﻟ‬
‫ﺘﺮا‬
‫ﺘﺨﺪام ﻃﺮق ﻓﺌ ﺔ ﻣﺆﺷﺮ اﻟ‬
‫ﺑﺎﺳ‬‫ﺗﻌﻴﻴﻨﻪ‬
‫ﻳﻤﻜﻨﻨﺎ اﻟﺤﺼﻮل ﻋﲆ اﺳﻢ اﻟﻤﻮﺿﻮع و‬
‫)( ‪t.getName‬إرﺟﺎع اﺳﻢ اﻟﻤﻮﺿﻮع‬
‫ﺑﻨﺎ‬‫ﺘﻌﻴﻴﻦ اﻻﺳﻢ اﻟﺨﺎص‬
‫)‪t.setName (newName‬ﻟ‬

‫ﺜﻴﻞ اﺳﻢ اﻟﻤﻮﺿﻮع‪.‬‬


‫ﺘﻤ‬‫ﺘﻐﻴﺮ ﺿﻤﻨ ﻲ ﻟ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻛﻞﺳﻠ ﺴﻠ ﺔ ﻟﻬﺎ "اﺳﻢ" ﻣ‬

‫*‬
‫ﺒﺎﻋ ﺔ ‪getName ()) 5) print (current_thread ().‬‬
‫ﺑﻂ )‪2‬ﻃ‬
‫ﺘﺮا‬
‫ﺘﻴﺮاد اﻟ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪(). setName ("Pawan Kalyan") 4) print (current_thread ().‬‬
‫‪(current_thread (). getName ()) 3) current_thread‬اﺳﻢ(‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺋﻴ ﺴ ﻲ‬
‫ﻣﻮﺿﻮع اﻟﺮ‬

‫ﺑﺎوان ﻛﺎﻟﻴﺎن‬
‫ﺑﺎوان ﻛﺎﻟﻴﺎن‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫‪127‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

:(‫رﻗﻢﺗﻌﺮﻳﻒ اﻟﺨﻴﻂ )ﻣﻌﺮف‬


"ident" ‫ﺘﻐﻴﺮ اﻟﻀﻤﻨ ﻲ‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺑﺎﺳ‬‫ﻳﻤﻜﻨﻨﺎ اﻟﻮﺻﻮل إﱃ ﻫﺬا اﻟﻤﻌﺮف‬.‫ﺘﻮﻓﺮ رﻗﻢﺗﻌﺮﻳﻒ ﻓﺮﻳﺪ‬
‫ﻳ‬، ‫ﻟﻜﻞ ﺧﻴﻂ داﺧﻠ ًﻴﺎ‬

*
Thread Identification Number:"، current_thread (). ident) 7) ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬def (): 3) ‫ﺒﺎر‬
‫ﺘ‬‫اﺧ‬2) ‫ﺘﻴﺮاد اﻟﺨﻴﻂ‬
‫ﻣﻦ اﺳ‬1)

، ":‫ﺒﺎﻋ ﺔ "(رﻗﻢﺗﻌﺮﻳﻒ اﻟﺨﻴﻂ اﻟﻔﺮﻋ ﻲ‬


‫"(ﻃ‬Child Thread") 4) t = Thread (target = test) 5) t.start () 6) print ("Main

t.ident)

:‫ﺘﺎج‬
‫اﻧ‬
‫ﺧﻴﻂ اﻟﻄﻔﻞ‬

2492 :‫ﺋﻴ ﺴ ﻲ‬
‫رﻗﻢﺗﻌﺮﻳﻒ اﻟﺨﻴﻂ اﻟﺮ‬

2768 :‫رﻗﻢﺗﻌﺮﻳﻒ اﻟﺨﻴﻂ اﻟﻄﻔﻞ‬

active_count ():
.‫ﺘﺸﻐﻴﻞ ﺣﺎﻟ ًﻴﺎ‬
‫ﺑﺈرﺟﺎع ﻋﺪدﺳﻼﺳﻞ اﻟﺮﺳﺎﺋﻞ اﻟﻨﺸﻄ ﺔ ﻗﻴﺪ اﻟ‬‫ﺗﻘﻮم ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‬

*
(). getName ()، "... ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬def (): 4) ‫ﻋﺮض‬3) ‫ﺘﻴﺮاد‬
‫وﻗ ﺖ اﻻﺳ‬2) ‫ﺘﻴﺮاد اﻟﺨﻴﻮط‬
‫ﻣﻦ اﺳ‬1)

Thread (target = display، name = "ChildThread1") 9) t2 = Thread ("‫ﺑﺪأ‬


(current_thread

()، "... ended") 7) print ("The Number of active Threads:"، active_count ()) 8) t1 =

10)t2.start
12) t3 = ‫ﺳﻢ‬ ()‫اﻻ‬13)
، ‫اﻟﻌﺮض‬ = ‫)اﻟﻬﺪف‬
t3.start () 14) 5) time.sleep
print (" ‫( اﻻﺳﻢ‬3) 6) print
، ‫اﻟﻌﺮض‬ (current_thread
= ‫)اﻟﻬﺪف‬ () .getName
‫" =اﻟﺨﻴﻂ‬ChildThread2")

active Threads:"، active_count ()) ،": ‫" =ﻋﺪد اﻟﺨﻴﻮط اﻟﻨﺸﻄ ﺔ‬ChildThread3") 11) t1.start ()

active_count ()) 15) time.sleep (5) 16) print ("The Number of

:‫ﺘﺎج‬
‫اﻧ‬
\ python_classes> py test.py :‫د‬
1 :‫ﻋﺪد اﻟﺨﻴﻮط اﻟﻨﺸﻄ ﺔ‬

‫ﺑﺪأ‬
ChildThread1 ...

‫ﺑﺪأ ت‬
ChildThread2 ...

‫ﺑﺪأ‬
ChildThread3 ...

4 :‫ﻋﺪد اﻟﺨﻴﻮط اﻟﻨﺸﻄ ﺔ‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

128
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

‫ﺘﻬﻰ‬
‫اﻧ‬ChildThread1 ...

‫ﺘﻬﻰ‬
‫اﻧ‬ChildThread2 ...

‫ﺘﻬﻰ‬
‫اﻧ‬ChildThread3 ...

1 :‫ﻋﺪد اﻟﺨﻴﻮط اﻟﻨﺸﻄ ﺔ‬

:‫ّد )(اﻟﻮﻇﻴﻔ ﺔ‬
‫ﻋﺪ‬
.‫ﺘﺸﻐﻴﻞ ﺣﺎﻟ ًﻴﺎ‬
‫ﺑﺠﻤﻴﻊ اﻟﻤﻮاﺿﻴﻊ اﻟﻨﺸﻄ ﺔ ﻗﻴﺪ اﻟ‬‫ﺑﺈرﺟﺎع ﻗﺎﺋﻤ ﺔ‬‫ﺗﻘﻮم ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‬

*
(). getName ()، "... ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬def (): 4) ‫ﻋﺮض‬3) ‫ﺘﻴﺮاد‬
‫وﻗ ﺖ اﻻﺳ‬2) ‫ﺘﻴﺮاد اﻟﺨﻴﻮط‬
‫ﻣﻦ اﺳ‬1)

time.sleep (3) 6) print (current_thread () .getName ()، "... ("‫ﺑﺪأ‬


(current_thread

‫" =اﻟﺨﻴﻂ‬ChildThread1") 8) t2 = ‫ اﻻﺳﻢ‬، ‫اﻟﻤﻮﺿﻮع )اﻟﻬﺪف =اﻟﻌﺮض‬7) t1 = ("‫ﺘﻬ ﺖ‬


‫اﻧ‬5)

for t in l: 15)
10)print (" ‫اﻟﻤﻮﺿﻮع‬
t1.start = "ChildThread2")
() 11) t2.start 9) t3
() 12) t3.start = ‫ﺳﻢ‬
() 13) l =‫اﻻ‬ ، ‫)اﻟﻬﺪف =اﻟﻌﺮض‬
enumerate () 14)

Name: "، t.name) : ‫ (اﺳﻢ اﻟﻤﻮﺿﻮع‬target = display، name = "ChildThread3")

16) time.sleep (5) 17) l = enumerate () 18) for t in l: 19) print (" Thread

"، t.name)

:‫ﺘﺎج‬
‫اﻧ‬

\ python_classes> py test.py :‫د‬


‫ﺑﺪأ‬
ChildThread1 ...

‫ﺑﺪأ ت‬
ChildThread2 ...

‫ﺑﺪأ‬
ChildThread3 ...

MainThread :‫اﺳﻢ اﻟﻤﻮﺿﻮع‬

ChildThread1 :‫اﺳﻢ اﻟﻤﻮﺿﻮع‬

ChildThread2 :‫اﺳﻢ اﻟﻤﻮﺿﻮع‬

ChildThread3 :‫اﺳﻢ اﻟﻤﻮﺿﻮع‬

‫ﺘﻬﻰ‬
‫اﻧ‬ChildThread1 ...

‫ﺘﻬﻰ‬
‫اﻧ‬ChildThread2 ...

‫ﺘﻬﻰ‬
‫اﻧ‬ChildThread3 ...

MainThread :‫اﺳﻢ اﻟﻤﻮﺿﻮع‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

129
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

isAlive (): ‫ﻃﺮﻳﻘ ﺔ‬


.‫ﺘﻨﻔﻴﺬ أم ﻻ‬
‫ﺑﻂ ﻻﻳﺰال ﻗﻴﺪ اﻟ‬
‫ﺘﺮا‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن ﻣﺆﺷﺮ اﻟ‬
‫ﻳ‬isAlive () ‫أﺳﻠﻮ ب‬

*
(). getName ()، "... ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬def (): 4) ‫ﻋﺮض‬3) ‫ﺘﻴﺮاد‬
‫وﻗ ﺖ اﻻﺳ‬2) ‫ﺘﻴﺮاد اﻟﺨﻴﻮط‬
‫ﻣﻦ اﺳ‬1)

time.sleep (3) 6) print (current_thread () .getName ()، "... ("‫ﺑﺪأ‬


(current_thread

‫" =اﻟﺨﻴﻂ‬ChildThread1") 8) t2 = ‫ اﻻﺳﻢ‬، ‫اﻟﻤﻮﺿﻮع )اﻟﻬﺪف =اﻟﻌﺮض‬7) t1 = ("‫ﺘﻬ ﺖ‬


‫اﻧ‬5)

t1.isAlive ()) 16)


"is Alive print (t2.name،
:"، t2.isAlive "is Alive :"،(5)
()) 14) time.sleep t2.isAlive ())(t1.name،
15) print ‫ اﻻﺳﻢ‬، ‫اﻟﻌﺮض‬
"is =Alive
‫)اﻟﻬﺪف‬
:"،

t2.start () 11) 12) print (t1.name، "is Alive :"، t1.isAlive ()) 13) print (t2.name،

= "ChildThread2") 9) t1.start ( ) 10)

:‫ﺘﺎج‬
‫اﻧ‬
\ python_classes> py test.py :‫د‬
‫ﺑﺪأ‬
ChildThread1 ...

‫ﺑﺪأ ت‬
ChildThread2 ...

‫ ﺻﺤﻴﺢ‬:‫ﺣ ﻲ‬ChildThread1

‫ ﺻﺤﻴﺢ‬:‫ﻋﲆ ﻗﻴﺪ اﻟﺤﻴﺎة‬ChildThread2

‫ﺘﻬﻰ‬
‫اﻧ‬ChildThread1 ...

‫ﺘﻬﻰ‬
‫اﻧ‬ChildThread2 ...

‫ ﺧﻄﺄ‬:‫ﺣ ﻲ‬ChildThread1

‫ ﺧﻄﺄ‬:‫ﺣ ﻲ‬ChildThread2

(): ‫ﻃﺮﻳﻘ ﺔ اﻻﻧﻀﻤﺎم‬


(). ‫ ﻓﻴﺠ ﺐ أن ﻧﺬ ﻫ ﺐ إﱃ ﻃﺮﻳﻘ ﺔ اﻻﻧﻀﻤﺎم‬، ‫ﺘﻬﺎء ﻣﻦﺳﻠ ﺴﻠ ﺔ أﺧﺮى‬
‫ﺘﻰ اﻻﻧ‬
‫ﺘﻈﺎر ﺣ‬
‫إذا أراد أﺣﺪ اﻟﺨﻴﻮط اﻻﻧ‬

*
‫ﻋﺮض‬3) ‫ﺘﻴﺮاد‬
‫وﻗ ﺖ اﻻﺳ‬2) ‫ﺘﻴﺮاد اﻟﺨﻴﻮط‬
‫ﻣﻦ اﺳ‬1)

= ‫اﻟﻤﻮﺿﻮع )اﻟﻬﺪف‬def (): 4) 5) 6) 7) 8) t =

9) t.start () (‫اﻟﻌﺮض‬

time.sleep (2) ‫ﻓ ﻲ اﻟﻨﻄﺎق‬i ‫ﺒ ﺔ ﻟـ‬


‫ﺑﺎﻟﻨ ﺴ‬

(10): print ("Seetha Thread")

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

130
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺒﺎﻋ ﺔ )"‪("Rama Thread‬‬


‫ﺑﻮاﺳﻄ ﺔ )‪Main Thread 11‬ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق )‪(10): 12‬ﻃ‬‫ﺗﻢﺗﻨﻔﻴﺬ ﻫﺬا اﻟﺨﻂ‬
‫‪10) t.join () #‬‬

‫ﺗﺞ‪:‬‬
‫ﺘﻤﻞ اﻟﺨﻴﻂ اﻟﻔﺮﻋ ﻲ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔﻳﻜﻮن اﻟﻨﺎ‬
‫ﺘﻰﻳﻜ‬
‫ﺋﻴ ﺴ ﻲ ﺣ‬
‫ﺘﻈﺮ اﻟﺨﻴﻂ اﻟﺮ‬
‫ﺜﺎل أﻋﻼه ‪ ،‬اﻧ‬
‫ﻓ ﻲ اﻟﻤ‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫ﺘﺮة اﻟﺰﻣﻨﻴ ﺔ أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ اﻻﻧﻀﻤﺎم )(ﻣﻊ اﻟﻔ‬
‫ﻣﻼﺣﻈ ﺔ‪:‬ﻳﻤﻜﻨﻨﺎ اﺳ‬

‫ﺜﻮاﻧ ﻲ(‬
‫ﺑﺎﻟ‬
‫‪t.‬اﻻﻧﻀﻤﺎم )‬
‫ﺘﻈﺮ اﻟﺨﻴﻂ ﻣﻘﺪا ًرا ﻣﺤﺪدًا ﻣﻦ اﻟﻮﻗ ﺖ ﻓﻘﻂ‪.‬‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﺳﻴﻨ‬

‫*‬
‫ﺘﻴﺮاد )‪3‬ﻋﺮض = ‪def (): 4) 5) 6) 7) 8) t‬‬‫ﺘﻴﺮاد اﻟﺨﻴﻂ )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬

‫ﺗﻢﺗﻨﻔﻴﺬ ﻫﺬا اﻟﺨﻂ‬


‫اﻟﻤﻮﺿﻮع )اﻟﻬﺪف =اﻟﻌﺮض( ‪9) t.start () 10) t.join (5) #‬‬

‫ﺒﺎﻋ ﺔ )"‪("Rama Thread‬‬


‫ﺑﻮاﺳﻄ ﺔ )‪Main Thread 11‬ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق )‪(10): 12‬ﻃ‬

‫ﺒ ﺔ ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق )‪(2‬‬


‫ﺑﺎﻟﻨ ﺴ‬
‫‪("Seetha Thread") time.sleep‬‬
‫‪(10): print‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪131‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺛﻮان ﻓﻘﻂ‪.‬‬
‫ٍ‬ ‫ﺋﻴ ﺴ ﻲ ‪5‬‬
‫ﺘﻈﺮ اﻟﺨﻴﻂ اﻟﺮ‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬اﻧ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫راﻣﺎ اﻟﻤﻮﺿﻮع‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﻣﻮﺿﻮع ‪Seetha‬‬

‫ﺑﻂ و ‪Thread‬‬
‫ﺘﺮا‬
‫ﺑﻮﺣﺪة اﻟ‬‫ﺘﻌﻠﻘ ﺔ‬
‫ﻣﻠﺨﺺ ﻟﺠﻤﻴﻊ اﻟﻄﺮق اﻟﻤ‬

‫ﺧﻴﻮط اﻟﺸﻴﻄﺎن‪:‬‬
‫ﺘ ﻲﺗﻌﻤﻞ ﻓ ﻲ اﻟﺨﻠﻔﻴ ﺔ ﺧﻴﻮط اﻟﺸﻴﻄﺎن‪.‬‬
‫ﺗ ﺴﻤﻰ اﻟﺨﻴﻮط اﻟ‬
‫•‬

‫ﺋﻴ ﺴ ﻲ ﻣﻦ ‪ Daemon Threads‬ﻫﻮﺗﻘﺪﻳﻢ اﻟﺪﻋﻢ ﻟـ ‪Non Daemon‬‬


‫•اﻟﻬﺪف اﻟﺮ‬

‫ﺋﻴ ﺴ ﻲ(‬
‫ﺜﻞ اﻟﺨﻴﻂ اﻟﺮ‬
‫اﻟﺨﻴﻮط )ﻣ‬

‫ﺜﺎل‪ :‬ﺟﺎﻣﻊ اﻟﻘﻤﺎﻣ ﺔ‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺸﻐﻴﻞ ‪Garbage‬‬
‫ﺑ‬‫ﺑﺬاﻛﺮة ﻣﻨﺨﻔﻀ ﺔ ‪،‬ﻳﻘﻮم ‪PVM‬ﻋﲆ اﻟﻔﻮر‬
‫ﺘﻢﺗﺸﻐﻴﻞ ‪Main Thread‬‬
‫•ﻋﻨﺪﻣﺎﻳ‬

‫ﺘﻌﺮضﻷي ﻣﺸﺎﻛﻞ ﻓ ﻲ اﻟﺬاﻛﺮة‪.‬‬


‫ﺑﻌ ﺔﺗﻨﻔﻴﺬه دون اﻟ‬
‫ﺘﺎ‬
‫ﺋﻴ ﺴ ﻲ ﻣ‬
‫ﺑﺤﻴ ﺚﻳﻤﻜﻦ ﻟﻠﺨﻴﻂ اﻟﺮ‬‫ﺗﻮﻓﻴﺮ ذاﻛﺮة ﺧﺎﻟﻴ ﺔ ‪،‬‬
‫ﺘﺪﻣﻴﺮ اﻷﺷﻴﺎء ﻏﻴﺮ اﻟﻤﻔﻴﺪة و‬
‫ﺘﺠﻤﻴﻊ ﻟ‬
‫أداة اﻟ‬

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪t.isDaemon‬‬


‫ﺑﺎﺳ‬‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن اﻟﺨﻴﻂ ﻫﻮ ‪Daemon‬أم ﻻ‬
‫•ﻳﻤﻜﻨﻨﺎ اﻟ‬

‫ﺒﺮﻧﺎﻣﺞ اﻟﺨﻔ ﻲ‪.‬‬


‫ﺘﺨﺪام ﺧﺎﺻﻴ ﺔ اﻟ‬
‫ﺑﺎﺳ‬‫ﺑﻂ أو‬
‫ﺘﺮا‬
‫ﻓﺌ ﺔ ﻣﺆﺷﺮ اﻟ‬

‫*‬
‫ﺒﺎﻋ ﺔ ‪print (current_thread (). daemon) #False‬‬
‫ﺑﻂ )‪2‬ﻃ‬
‫ﺘﺮا‬
‫ﺘﻴﺮاد اﻟ‬
‫)‪1‬ﻣﻦ اﺳ‬

‫)‪(current_thread (). isDaemon ()) #False 3‬‬

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪setDaemon‬ﻟﻔﺌ ﺔ ‪Thread.‬‬


‫ﺑﺎﺳ‬
‫ﺒﻴﻌ ﺔ اﻟـ ‪Daemon‬‬
‫•ﻳﻤﻜﻨﻨﺎﺗﻐﻴﻴﺮ ﻃ‬

‫‪)t.setDaemon‬ﺻﺤﻴﺢ(‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪132‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺑﺪء ﻣﻮﺿﻮع ‪ ،‬ﻧﺤﻦ‬‫ﺑﻤﺠﺮد‬


‫ﺑﺪء ‪Thread.ie‬‬‫ﺒﻞ‬
‫ﺘﺨﺪام ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ﻗ‬
‫•وﻟﻜﻦﻳﻤﻜﻨﻨﺎ اﺳ‬

‫ﺒﺮﻧﺎﻣﺞ اﻟﺨﻔ ﻲ ‪ ،‬وإﻻ ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ ‪• RuntimeException:‬ﻻﻳﻤﻜﻦﺗﻌﻴﻴﻦ ﺣﺎﻟ ﺔ‬


‫ﺒﻴﻌ ﺔ اﻟ‬
‫ﻻﻳﻤﻜﻦﺗﻐﻴﻴﺮ ﻃ‬
‫ﺑﻂ اﻟﻨﺸﻂ‪.‬‬
‫ﺘﺮا‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﺨﻔ ﻲ ﻟﻤﺆﺷﺮ اﻟ‬
‫اﻟ‬

‫*‬
‫ﺒﺎﻋ ﺔ )‪(). setDaemon (True‬‬
‫ﺑﻂ )‪2‬ﻃ‬‫ﺘﺮا‬
‫ﺘﻴﺮاد اﻟ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪(current_thread (). isDaemon ()) 3) current_thread‬‬

‫ﺑﻂ اﻟﻨﺸﻂ‬
‫ﺘﺮا‬
‫ّﻴ ﺔ ﻟﻤﺆﺷﺮ اﻟ‬
‫‪RuntimeError:‬ﻻﻳﻤﻜﻦﺗﻌﻴﻴﻦ اﻟﺤﺎﻟ ﺔ اﻟﺨﻔ‬

‫ﺘﺮاﺿﻴ ﺔ‪:‬‬
‫ﺒﻴﻌ ﺔ اﻻﻓ‬
‫اﻟﻄ‬
‫ﺒﻴﻌ ﺔ اﻟﺨﻔﻴ ﺔ ﻣﻦ اﻷ ب إﱃ اﻟﻄﻔﻞ‪ .‬أي إذا ﻛﺎن‬
‫ﺘﻢﺗﻮرﻳ ﺚ اﻟﻄ‬
‫ﺒﻘﻴ ﺔ ‪،‬ﺳﻴ‬
‫ﺘ‬‫ﺒ ﺔ ﻟﻠﺨﻴﻮط اﻟﻤ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺋﻤﺎ ﻏﻴﺮ ﺧﻔ ﻲ ‪ ،‬وﻟﻜﻦ‬
‫ﺋﻴ ﺴ ﻲ دا ً‬
‫ﺑﻂ اﻟﺮ‬
‫ﺘﺮا‬
‫ﺘﺮاﺿ ًﻴﺎ ‪،‬ﻳﻜﻮن ﻣﺆﺷﺮ اﻟ‬
‫اﻓ‬
‫ﺋﻴ ﺴ ﻲ ﻟﻴ ﺲ ﺧﻔ ًﻴﺎ ‪ ،‬ﻓ ﺴﻴﻜﻮن ‪ChildThread‬‬
‫ﺑﻂ اﻟﺮ‬
‫ﺘﺮا‬ ‫ﺋﻴ ﺴ ﻲ ﻫﻮ ‪Daemon ،‬ﻓﺈن اﻟﺨﻴﻂ اﻟﻔﺮﻋ ﻲ ﻫﻮ أ ً‬
‫ﻳﻀﺎ ‪Daemon‬وإذا ﻛﺎن ﻣﺆﺷﺮ اﻟ‬ ‫ﺑﻂ اﻟﺮ‬
‫ﺘﺮا‬
‫ﻣﺆﺷﺮ اﻟ‬
‫أ ً‬
‫ﻳﻀﺎ‬
‫ﻏﻴﺮ اﻟﺸﻴﻄﺎن‪.‬‬

‫*‬
‫ﺘﻴﺮاد اﻟﺨﻴﻂ ‪False 6) t.setDaemon‬‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪(target = job) 5) print (t.isDaemon ()) #‬‬
‫‪(): 3) (t.isDaemon‬‬
‫‪print‬‬ ‫)"‪print ("Child Thread‬‬ ‫)‪4) t2‬‬
‫)ﺻﺤﻴﺢ ( ‪()) #‬‬ ‫‪= Thread‬‬
‫‪def job‬‬
‫)‪ 7‬ﺻﺤﻴﺢ‬

‫ﺒﺪاﻳ ﺔ ﻓﻘﻂ‪.‬‬
‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ اﻟ‬‫ﺑﺪأ‬‫ﺋﻤﺎ ﻏﻴﺮ ﺧﻔ ﻲ وﻻﻳﻤﻜﻨﻨﺎﺗﻐﻴﻴﺮ ‪Daemon Nature‬ﻷﻧﻪ‬
‫ﺋﻴ ﺴ ﻲ دا ً‬
‫ﻣﻠﺤﻮﻇ ﺔ‪ :‬اﻟﺨﻴﻂ اﻟﺮ‬

‫ﺘﻢ إﻧﻬﺎء ﺟﻤﻴﻊﺳﻼﺳﻞ ﻋﻤﻠﻴﺎ ت ‪Daemon.‬‬


‫ﻋﻨﺪ إﻧﻬﺎء آﺧﺮﺳﻠ ﺴﻠ ﺔ رﺳﺎﺋﻞ ﻏﻴﺮ ﺧﺎﺿﻌ ﺔ ﻟﻠﺨﺪﻣ ﺔﺗﻠﻘﺎﺋ ًﻴﺎ ‪،‬ﺳﻴ‬

‫*‬
‫ﺘﻴﺮاد )‪3‬ﻣﻬﻤ ﺔ )‪(): 4‬‬
‫ﺘﻴﺮاد اﻟﺨﻴﻂ )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫ﺒﺎﻋ ﺔ ‪(2) 7) 8) t = Thread‬‬
‫‪def‬ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق )‪(10): 5‬ﻃ‬
‫‪)("Lazy Thread") 6) time.sleep‬اﻟﻬﺪف =اﻟﻤﻬﻤ ﺔ(‬
‫)‪time.sleep (5‬‬
‫‪t.setDaemon‬‬ ‫‪12) print‬‬
‫)‪(True‬‬ ‫‪===>("End‬‬
‫)‪Line-1Of10‬‬
‫‪Main‬‬ ‫)"‪Thread‬‬
‫‪t.start‬‬ ‫)‪() 11‬‬
‫‪9) #‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪133‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻰ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻛﻼ ﻫﻤﺎ ﺣ‬
‫ﺘﺎﻟ ﻲﺳﻴ‬
‫ﺑﺎﻟ‬
‫ﺋﻴ ﺴ ﻲ واﻟﺨﻴﻮط اﻟﻔﺮﻋﻴ ﺔ ﻏﻴﺮ ﺷﻴﻄﺎن ‪ ،‬و‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪ ،‬إذا ﻋﻠﻘﻨﺎ ﻋﲆ اﻟ ﺴﻄﺮ اﻷول ‪ ،‬ﻓ ﺴﻴﻜﻮن ﻛﻞ ﻣﻦ اﻟﺨﻴﻂ اﻟﺮ‬
‫ﻓ ﻲ اﻟ‬
‫ﺘﻤﺎﻟﻬﻤﺎ‪.‬‬
‫اﻛ‬
‫ﺗﺞ‪:‬‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔﻳﻜﻮن اﻟﻨﺎ‬

‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺋﻴ ﺴ ﻲ‬
‫ﻧﻬﺎﻳ ﺔ اﻟﺨﻴﻂ اﻟﺮ‬

‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺧﻴﻂ ﻛ ﺴﻮل‬

‫ﺛﻢ ﻋﻨﺪ‬‫ﺛﺎ ت اﻟﻔﺮﻋﻴ ﺔ ﻫ ﻲ اﻟﺨﻴﻂ اﻟﺨﻔ ﻲ‪ .‬وﻣﻦ‬


‫ﺋﻴ ﺴﻴ ﺔﺗﻜﻮن ﻏﻴﺮ ﺧﻔﻴ ﺔ وأنﺳﻠ ﺴﻠ ﺔ اﻟﻤﺤﺎد‬
‫ﺛﺎ ت اﻟﺮ‬
‫إذا ﻟﻢ ﻧﻜﻦ ﻧﻌﻠﻖ ﻋﲆ اﻟ ﺴﻄﺮ ‪1 ،‬ﻓﺈنﺳﻠ ﺴﻠ ﺔ اﻟﻤﺤﺎد‬
‫ﺑﻂ اﻟﻔﺮﻋ ﻲ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ اﻹﺧﺮاج ﻫﻮ‬
‫ﺘﺮا‬
‫ﺘﻢ إﻧﻬﺎء ﻣﺆﺷﺮ اﻟ‬
‫ﺗﻠﻘﺎﺋ ًﻴﺎ ‪،‬ﺳﻴ‬
‫إﻧﻬﺎء ‪MainThread‬‬

‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺧﻴﻂ ﻛ ﺴﻮل‬
‫ﺋﻴ ﺴ ﻲ‬
‫ﻧﻬﺎﻳ ﺔ اﻟﺨﻴﻂ اﻟﺮ‬

‫ﺘﺰاﻣﻦ‪:‬‬
‫اﻟ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫إذاﺗﻢﺗﻨﻔﻴﺬ اﻟﻌﺪﻳﺪ ﻣﻦﺳﻼﺳﻞ اﻟﺮﺳﺎﺋﻞ ﻓ ﻲ وﻗ ﺖ واﺣﺪ ‪ ،‬ﻓﻘﺪﺗﻜﻮن ﻫﻨﺎك ﻓﺮﺻ ﺔ ﻟﺤﺪو ث ﻣﺸﺎﻛﻞ ﻋﺪمﺗﻨﺎﺳﻖ اﻟ‬

‫*‬
‫ﺘﻌﺮﻳﻒ‬
‫ﺒ ﺔ اﻟ‬
‫ﺘﻴﺮاد )‪3‬رﻏ‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫ﺒﺎﻋ ﺔ ‪("Good Evening:" ،‬‬
‫)اﻻﺳﻢ(‪4) :‬ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق ‪(10):‬ﻃ‬
‫اﻟﻨﻬﺎﻳ ﺔ )( ‪args = ("Yuvraj"،)) 10) t1.start ( ) 11) t2.start‬‬
‫‪args‬‬
‫)‪(2) 6‬‬ ‫))‪= ("Dhoni"،‬‬
‫‪7) print‬‬ ‫‪9) t1‬‬
‫)‪(name) 8‬‬ ‫‪t2 = Thread (target = wish،‬‬
‫‪= ") 5) time.sleep‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﻣ ﺴﺎء اﻟﺨﻴﺮ‪ :‬ﻣ ﺴﺎء اﻟﺨﻴﺮﻳﻮﻓﺮاج‬
‫دوﻧ ﻲ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪134‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﻣ ﺴﺎء اﻟﺨﻴﺮ‪ :‬ﻣ ﺴﺎء اﻟﺨﻴﺮﻳﻮﻓﺮاج‬


‫دوﻧ ﻲ‬
‫‪....‬‬

‫ﺘﺰاﻣﻨ ﺔ )(‬
‫ﺒﺔ ﻣ‬
‫ﺘﻈﻢ ‪b'z‬ﻛﻼ اﻟﺨﻴﻮطﻳﻨﻔﺬان رﻏ‬
‫•ﻧﺤﺼﻞ ﻋﲆ إﺧﺮاج ﻏﻴﺮ ﻣﻨ‬
‫وﻇﻴﻔ ﺔ‪.‬‬

‫ﺘﻐﻠ ﺐ ﻋﻠﻴﻬﺎ‬
‫ﺘﻤﻜﻦ ﻣﻦ اﻟ‬
‫ﺘﻰ ﻧ‬
‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﺨﻴﻮط واﺣﺪةﺗﻠﻮ اﻷﺧﺮى ﺣ‬
‫ﺘﺰاﻣﻦ ‪،‬ﺳﻴ‬
‫ﺘﺰاﻣﻦ‪• .‬ﻓ ﻲ ﺣﺎﻟ ﺔ اﻟ‬
‫ﺘﻐﻠ ﺐ ﻋﲆ ﻫﺬه اﻟﻤﺸﻜﻠ ﺔﻳﺠ ﺐ أن ﻧﺬ ﻫ ﺐ إﱃ اﻟ‬
‫•ﻟﻠ‬

‫ﺘﺰاﻣﻦﻳﻌﻨ ﻲ ﻓ ﻲ وﻗ ﺖ واﺣﺪ ﻣﻮﺿﻮع واﺣﺪ ﻓﻘﻂ‬


‫ﺒﻴﺎﻧﺎ ت‪• .‬اﻟ‬
‫ﻣﺸﺎﻛﻞ ﻋﺪمﺗﻨﺎﺳﻖ اﻟ‬

‫ﺘﺰاﻣﻦ ﻫ ﻲ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠ‬
‫ﺒﻴﻖ اﻟﺮ‬
‫ﺘﻄ‬‫ﻣﺠﺎﻻ ت اﻟ‬
‫ﺘﺮﻧ ﺖ‬
‫ﺒﺮ اﻹﻧ‬
‫)‪1‬ﻧﻈﺎم اﻟﺤﺠﺰ ﻋ‬
‫ﺘﺮﻛ ﺔ‬
‫ﺑﺎ ت اﻟﻤﺸ‬
‫ﺗﺤﻮﻳﻞ اﻷﻣﻮال ﻣﻦ اﻟﺤ ﺴﺎ‬
‫)‪2‬‬
‫إﻟﺦ‬

‫ﺘﺨﺪام ﻣﺎﻳﻠ ﻲ‬
‫ﺑﺎﺳ‬‫ﻓ ﻲ ‪Python ،‬ﻳﻤﻜﻨﻨﺎﺗﻨﻔﻴﺬ اﻟﻤﺰاﻣﻨ ﺔ‬
‫)‪1‬ﻗﻔﻞ‬
‫‪2) RLock‬‬
‫)‪3‬ﺳﻴﻤﺎﻓﻮر‬

‫ﺘﺨﺪام ﻣﻔﻬﻮم اﻟﻘﻔﻞ‪:‬‬


‫ﺑﺎﺳ‬‫ﺘﺰاﻣﻦ‬
‫اﻟ‬
‫ﺑﻂ‬
‫ﺘﺮا‬
‫ﺘ ﻲﻳﻮﻓﺮ ﻫﺎ اﻟ‬
‫•اﻷﻗﻔﺎل ﻫ ﻲ آﻟﻴ ﺔ اﻟﻤﺰاﻣﻨ ﺔ اﻷﺳﺎﺳﻴ ﺔ اﻟ‬
‫وﺣﺪة‪.‬‬

‫•ﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ ‪Lock‬ﻛﻤﺎﻳﻠ ﻲ )( ‪l = Lock‬‬

‫ﺘﺤﺮﻳﺮ اﻟﻘﻔﻞ‪) .‬ﻋﲆ ﻏﺮار‬


‫ﺑ‬‫ﺘﻰﻳﻘﻮم اﻟﺨﻴﻂ‬
‫ﺘﻈﺮ ﺣ‬
‫ﺑﺨﻴﻂ واﺣﺪ ﻓﻘﻂ ﻓ ﻲ ﻛﻞ ﻣﺮة ‪ ،‬وإذاﺗﻄﻠ ﺐ أي ﺧﻴﻂ آﺧﺮ ﻧﻔ ﺲ اﻟﻘﻔﻞ ﻓﺈﻧﻪﺳﻴﻨ‬‫ﺒﻴ ﺖ ﻛﺎﺋﻦ اﻟﻘﻔﻞ‬
‫ﺜ‬‫•ﻳﻤﻜﻦﺗ‬
‫ﺗﻒ اﻟﻌﺎﻣ ﺔ وﻣﺎ إﱃ ذﻟﻚ(‬
‫ﺑﻴﻨ ﺔ اﻟﻬﺎ‬
‫ﺘﺮﻛ ﺔ وﻛﺎ‬
‫ﻏﺮف اﻟﻐ ﺴﻴﻞ اﻟﻤﺸ‬

‫ﺘ ﺴﺎ ب )( ‪() l.acquire‬‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻻﻛ‬
‫ﺑﺎﺳ‬‫•ﻳﻤﻜﻦ ﻟﻠﺨﻴﻂ اﻟﺤﺼﻮل ﻋﲆ اﻟﻘﻔﻞ‬

‫ﺘﺨﺪام اﻹﺻﺪار )(اﻟﻄﺮﻳﻘ ﺔ )( ‪l.release‬‬


‫ﺑﺎﺳ‬‫ﺑﻂﺗﺤﺮﻳﺮ اﻟﻘﻔﻞ‬
‫ﺘﺮا‬
‫•ﻳﻤﻜﻦ ﻟﻤﺆﺷﺮ اﻟ‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﻟﻔﻌﻞ ‪ ،‬وإﻻﺳﻨﺤﺼﻞ ﻋﲆ اﺳ‬‫ﺘﻮي اﻟﺨﻴﻂ ﻋﲆ اﻟﻘﻔﻞ‬
‫ﺘﺪﻋﺎء اﻹﺻﺪار ‪() ،‬ﻳﺠ ﺐ أنﻳﻜﻮن اﻟﺨﻴﻂ اﻹﻟﺰاﻣ ﻲ ﻫﻮ ﻣﺎﻟﻚ ﻫﺬا اﻟﻘﻔﻞ‪.‬ﻳﺠ ﺐ أنﻳﺤ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻻﺳ‬

‫ﺘﺸﻐﻴﻞﻳﻘﻮل‬
‫وﻗ ﺖ اﻟ‬
‫ﺘﺸﻐﻴﻞ‪ :‬ﺣﺮر ﻗﻔﻞ ﻏﻴﺮ ﻣﻘﻔﻞ‪.‬‬
‫ﺧﻄﺄ وﻗ ﺖ اﻟ‬

‫*‬
‫)( ‪() 3) # l.acquire‬‬ ‫ﺘﻴﺮاد اﻟﺨﻴﻮط = ‪2) l‬ﻗﻔﻞ )( ‪1 4) l.release‬‬
‫)‪1‬ﻣﻦ اﺳ‬

‫اﻟﻤﺆﻣ ﻦ‬
‫ﱠ‬ ‫إذا ﻛﻨﺎ ﻧﻌﻠﻖ ﻋﲆ اﻟ ﺴﻄﺮ ‪1 ،‬ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ ‪RuntimeError:‬ﺣﺮر اﻟﻘﻔﻞ ﻏﻴﺮ‬

‫*‬
‫ﺘﻴﺮاد‬
‫ﺘﻴﺮاد ﺧﻴﻮط )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪135‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫= ‪(target = wish، args = ("Yuvraj"،)) 14) t3‬‬


‫‪= wish، args = ("Dhoni"،)) 13) t2 = Thread‬‬
‫)‪10‬‬
‫‪endl.release‬‬ ‫)‪() 11‬‬
‫‪= ") 8) time‬‬ ‫‪12) t1‬‬
‫‪.sleep‬‬ ‫)‪(2)= 9‬‬
‫‪Thread‬‬ ‫‪(target‬‬
‫)‪print (name‬‬
‫‪l for‬‬ ‫‪i in range‬‬
‫‪= Lock‬‬ ‫‪(10):‬‬
‫‪() 4) def‬‬ ‫‪wish‬‬‫‪7) (name):‬‬
‫‪print ("Good‬‬ ‫‪Evening:"،‬‬
‫‪5) l.acquire‬‬ ‫)‪() 6‬‬
‫)‪t2.start () 17‬‬ ‫‪t3.start‬‬
‫‪args‬‬ ‫ﺒ ﺔ ‪() ،‬‬
‫)‪15‬اﻟﺮﻏ‬
‫))‪= ("Kohli"،‬‬ ‫)اﻟﻬﺪف =‬ ‫اﻟﺨﻴﻂ‬
‫‪t1.start‬‬ ‫)‪3‬‬
‫)‪() 16‬‬

‫ﺘﻈﻢ‪.‬‬
‫ﺘﺎﻟ ﻲﺳﻨﺤﺼﻞ ﻋﲆ إﺧﺮاج ﻣﻨ‬
‫ﺑﺎﻟ‬
‫ﺘﻨﻔﻴﺬ ﻃﺮﻳﻘ ﺔ ‪wish () ،‬و‬
‫ﺑ‬‫ﺑﺨﻴﻂ واﺣﺪ ﻓﻘﻂ‬‫ُﺴﻤﺢ‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪ ،‬ﻓ ﻲ ﻛﻞ ﻣﺮة ‪،‬ﻳ‬
‫ﻓ ﻲ اﻟ‬

‫ﺒ ﺴﻴﻂ‪:‬‬
‫ﻣﺸﻜﻠ ﺔ اﻟﻘﻔﻞ اﻟ‬
‫ﺘﻰ أن‬
‫ﺘﻢ ﺣﻈﺮه ‪ ،‬ﺣ‬
‫ﺑﺎﻟﺨﻴﻂ اﻟﺬيﻳﺤﻤﻞ ﻫﺬا اﻟﻘﻔﻞ ﺣﺎﻟ ًﻴﺎ ‪ ،‬ﻓﺈذاﺗﻢﺗﻌﻠﻴﻖ اﻟﻘﻔﻞ وﻣﺤﺎوﻟ ﺔ أي ﺧﻴﻂ ﻟﻠﺤﺼﻮل ﻋﲆ اﻟﻘﻔﻞ ‪ ،‬ﻓ ﺴﻴ‬‫ﺘﻢ ﻛﺎﺋﻦ اﻟﻘﻔﻞ اﻟﻘﻴﺎﺳ ﻲ‬
‫ﻻﻳﻬ‬
‫ﺑﺎﻟﻔﻌﻞ‪.‬‬‫ﻧﻔ ﺲ اﻟﺨﻴﻂﻳﺤﻤﻞ ﻫﺬا اﻟﻘﻔﻞ‬

‫*‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط ‪2) l = Lock () 3) print ("Main Thread‬ﻳﺤﺎول اﻟﺤﺼﻮل ﻋﲆ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪Lock") 4) l.acquire () 5) print ("Main Thread‬ﻳﺤﺎول اﻟﺤﺼﻮل ﻋﲆ ‪Again") 6) l.‬‬
‫ﺘ ﺴ ﺐ)(‬
‫‪Lock‬ﻳﻜ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫ﺋﻴ ﺴ ﻲﻳﺤﺎول اﻟﺤﺼﻮل ﻋﲆ اﻟﻘﻔﻞ‬
‫اﻟﻤﻮﺿﻮع اﻟﺮ‬
‫ﺋﻴ ﺴ ﻲﻳﺤﺎول اﻟﺤﺼﻮل ﻋﲆ ‪Lock‬ﻣﺮة أﺧﺮى‬
‫اﻟﻤﻮﺿﻮع اﻟﺮ‬
‫‪-‬‬

‫ﺛﺎﻧﻴ ﺔ‪.‬‬‫ﺋﻴ ﺴ ﻲ ‪b'z‬اﻟﺬيﻳﺤﺎول اﻟﺤﺼﻮل ﻋﲆ اﻟﻘﻔﻞ ﻣﺮة‬


‫ﺘﻢ ﺣﻈﺮ اﻟﺨﻴﻂ اﻟﺮ‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪،‬ﺳﻴ‬
‫ﻓ ﻲ اﻟ‬

‫ﺘﺨﺪام ‪ ctrl + break.‬ﻫﻨﺎ ﻟﻦﻳﻌﻤﻞ ‪ctrl + C.‬‬


‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ اﺳ‬
‫ﺑﻂ اﻟﺤﻈﺮ ﻣﻦ ﻣﻮﺟﻪ أواﻣﺮ ‪windows ،‬ﻳ‬
‫ﺘﻞ ﻣﺆﺷﺮﺗﺮا‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻟﻘ‬

‫ﺗﻜﺮا ًرا ‪ ،‬ﻣﻤﺎ ﻗﺪ‬


‫ﺑﻂ اﻟﺤﺼﻮل ﻋﲆ ﻧﻔ ﺲ اﻟﻘﻔﻞ ﻣﺮا ًرا و‬
‫ﺘﺮا‬
‫ﺘﺪاﺧﻞ إﱃ اﻟﻤﻮارد ‪ ،‬ﻓﻘﺪﻳﺤﺎول ﻣﺆﺷﺮ اﻟ‬
‫ﺘﻜﺮرة أو وﺻﻮل ﻣ‬
‫ﺘﺪﻋ ﻲ وﻇﺎﺋﻒ ﻣ‬
‫ﺑﻂﻳ ﺴ‬
‫ﺘﺮا‬
‫إذا ﻛﺎن ﻣﺆﺷﺮ اﻟ‬
‫ﺑﻨﺎ‪.‬‬‫ﺑﻂ اﻟﺨﺎص‬
‫ﺘﺮا‬
‫ﻳﺤﻈﺮ ﻣﺆﺷﺮ اﻟ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬


‫اﻟ‬

‫‪136‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻨﻔﻴﺬ اﻟﻮﻇﺎﺋﻒ اﻟﻌﻮدﻳ ﺔ‪.‬‬


‫ﺘﻘﻠﻴﺪﻳ ﺔ ﻟﻦﺗﻌﻤﻞ ﻟ‬
‫ﺛﻢ ﻓﺈن آﻟﻴ ﺔ اﻟﻘﻔﻞ اﻟ‬‫وﻣﻦ‬

‫ﺘﻐﻠ ﺐ ﻋﲆ ﻫﺬه اﻟﻤﺸﻜﻠ ﺔ ‪،‬ﻳﺠ ﺐ أن ﻧﺬ ﻫ ﺐ إﱃ ‪RLock (Reentrant Lock). Reentrant‬ﻳﻌﻨ ﻲ أن اﻟﺨﻴﻂﻳﻤﻜﻨﻪ اﻟﺤﺼﻮل ﻋﲆ ﻧﻔ ﺲ اﻟﻘﻔﻞ ﻣﺮا ًرا‬
‫ﻟﻠ‬
‫ﺘﻢ ﺣﻈﺮ اﻟﺨﻴﻂ ﻓﻘﻂ‪.‬‬
‫ﺑﻮاﺳﻄ ﺔ ﺧﻴﻮط أﺧﺮى ‪ ،‬ﻓ ﺴﻴ‬‫ﺗﻜﺮا ًرا ‪ ،‬إذاﺗﻢﺗﻌﻠﻴﻖ اﻟﻘﻔﻞ‬
‫و‬

‫ﺑﺎﻟﻤﺎﻟﻚ وﻟﻜﻦ ﻟﻴ ﺲ ﻟﻠﻤﻮاﺿﻴﻊ اﻷﺧﺮى‪.‬‬‫ﺑﻂ اﻟﺨﺎص‬


‫ﺘﺮا‬
‫ﺘﺎﺣ ﺔ ﻓﻘﻂ ﻟﻤﺆﺷﺮ اﻟ‬
‫ﻣﻴﺰة ‪Reentrant‬ﻣ‬

‫*‬
‫ﺋﻴ ﺴ ﻲﻳﺤﺎول اﻟﺤﺼﻮل‬
‫ﺒﺎﻋ ﺔ )"اﻟﺨﻴﻂ اﻟﺮ‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط )‪2) l = RLock () 3‬ﻃ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫ﺋﻴ ﺴ ﻲﻳﺤﺎول اﻟﺤﺼﻮل ﻋﲆ ‪6) l.‬‬
‫ﺒﺎﻋ ﺔ )"اﻟﺨﻴﻂ اﻟﺮ‬
‫ﻋﲆ )‪Lock") 4) l.acquire () 5‬ﻃ‬
‫ﺘ ﺴ ﺐ)(‬
‫)"‪Lock Again‬ﻳﻜ‬

‫ﺋﻴ ﺴ ﻲ ‪،‬ﻳﻤﻜﻦ ﻟﺨﻴﻂ ‪b'z‬اﻟﺤﺼﻮل ﻋﲆ اﻟﻘﻔﻞ أي ﻋﺪد ﻣﻦ اﻟﻤﺮا ت‪.‬‬


‫ﺘﻢ ﻗﻔﻞ اﻟﺨﻴﻂ اﻟﺮ‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬ﻟﻦﻳ‬

‫ﺜﺎل ‪،‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺎﺣ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺘ ﺴﺎ ب )(إﻃﻼق إﻟﺰاﻣ ﻲ ﻟﻠﻤﻜﺎﻟﻤ ﺔ )(ﻣ‬
‫ﺘﺎﻟ ﻲﻳﺠ ﺐ أنﺗﻜﻮن ﻛﻞ ﻣﻜﺎﻟﻤ ﺔ اﻛ‬
‫ﺑﺎﻟ‬
‫ﺘﻮى اﻟﻌﻮدﻳ ﺔ و‬
‫ﺒﻊ ﻣ ﺴ‬
‫ﺘ‬‫ﺘ‬‫ﺑ‬‫ﻳﻘﻮم ‪ RLock‬ﻫﺬا‬
‫ﺘﻢﺗﺤﺮﻳﺮ اﻟﻘﻔﻞ ﻓﻘﻂ‪.‬‬
‫ﺛﻢﻳ‬
‫ﺘﺤﺮﻳﺮ )(‬
‫ﺘﺤﻮاذ )(وﻣﻜﺎﻟﻤﺎ ت اﻟ‬
‫ﺑﻘ ﺔ ﻋﺪد ﻣﻜﺎﻟﻤﺎ ت اﻻﺳ‬
‫ﻳﺠ ﺐ ﻣﻄﺎ‬

‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫)( ‪l = RLock‬‬
‫)( ‪l.acquire‬‬
‫)( ‪l.acquire‬‬
‫)( ‪l.release‬‬
‫)( ‪l.release‬‬

‫ﺘﻢﺗﺤﺮﻳﺮ اﻟﻘﻔﻞ ﻓﻘﻂ‪.‬‬


‫ﺗﻴﻦ )(ﺳﻴ‬
‫ﺑﻌﺪ ﻣﻜﺎﻟﻤﺎ ت اﻹﺻﺪار ﻣﺮ‬

‫ﻣﻠﺤﻮﻇ ﺔ‪:‬‬

‫)‪1‬ﻳﻤﻜﻦ ﻓﻘﻂ ﻟﻤﺎﻟﻚ اﻟﺨﻴﻂ اﻟﺤﺼﻮل ﻋﲆ اﻟﻘﻔﻞ ﻋﺪة ﻣﺮا ت‬


‫ﺘﺤﺮﻳﺮ ‪().‬‬
‫ﺘﺤﻮاذ )(وﻣﻜﺎﻟﻤﺎ ت اﻟ‬
‫ﺑﻘ ﺔ ﻋﺪد ﻣﻜﺎﻟﻤﺎ ت اﻻﺳ‬
‫)‪2‬ﻳﺠ ﺐ ﻣﻄﺎ‬

‫ﺘﺨﺪام ‪RLock:‬‬
‫ﺑﺎﺳ‬‫ﺘﺰاﻣﻦ‬
‫ﺒ ﻲ ﻟﻠ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬
‫*‬
‫ﺘﻴﺮاد‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫ﺘﻌﺮﻳﻒ )‪() 6‬‬
‫)‪3) l = RLock () 4‬ﻋﺎﻣﻞ اﻟ‬
‫‪(n): 5) l.acquire‬إذا ﻛﺎن )‪n == 0: 7‬‬

‫ﺘﻴﺠ ﺔ ‪= 1‬‬
‫اﻟﻨ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪137‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫‪t1‬‬
‫‪def‬‬
‫اﻟﻌﺎﻣﻞ =‬
‫ﺘﻴﺠ‪"،‬ﺔ إرﺟﺎع‬
‫ﻫﻮ‪:‬‬
‫)‪(n-1‬ﻧ‬
‫)‪(n): 14‬‬
‫‪10) print‬‬
‫‪l.release‬‬
‫‪("The‬‬
‫)‪() 11‬‬
‫‪Factorial‬‬
‫‪=of"،‬ﻋﺎﻣﻠ ﻲ‬
‫ﺘﻴﺠ ﺔ‪n *n،‬‬
‫ﺋﺞ "‬
‫ﺘﺎاﻟﻨ‬
‫‪else:‬اﻟﻨ)‪8‬‬
‫)‪12) 13‬‬
‫)‪9‬‬
‫‪args = args‬اﻟﺨﻴﻂ )اﻟﻬﺪف =‬
‫)‪(5،)) 17‬‬
‫‪= (9t2‬‬
‫)‪،))=18‬‬
‫ﺋﺞ ‪،‬‬
‫‪t1.start‬‬
‫ﺘﺎ‬‫)اﻟﻬﺪف =اﻟﻨ‬
‫اﻟﺨﻴﻂ )‪() 19‬‬
‫‪t2.start‬‬
‫)‪(n))()15‬‬
‫ﺋﺞ ‪،‬‬
‫)‪16‬‬
‫ﺘﺎ‬‫اﻟﻨ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﻣﻀﺮو ب اﻟﻌﺪد ‪ 5‬ﻫﻮ‪120 :‬‬
‫ﻣﻀﺮو ب اﻟﻌﺪد ‪ 9‬ﻫﻮ‪362880 :‬‬

‫ﺘﻢ ﺣﻈﺮ اﻟﺨﻴﻂ‪.‬‬ ‫ﺑﺪﻻ ً ﻣﻦ ‪RLock‬إذا اﺳ‬


‫ﺘﺨﺪﻣﻨﺎ ﻗﻔﻞ ﻋﺎدي ‪ ،‬ﻓ ﺴﻴ‬ ‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه‬
‫ﻓ ﻲ اﻟ‬

‫ﺑﻴﻦ اﻟﻘﻔﻞ و ‪RLock‬‬‫اﻟﻔﺮق‬


‫ﻗﻔﻞ‬ ‫‪RLock‬‬

‫ﺑﻂ واﺣﺪ ﻓﻘﻂ‬


‫)‪1‬ﻳﻤﻜﻦ اﻟﺤﺼﻮل ﻋﲆ ﻛﺎﺋﻦ اﻟﻘﻔﻞ ﻣﻦ ﺧﻼل ﻣﺆﺷﺮﺗﺮا‬ ‫ﺑﻂ واﺣﺪ ﻓﻘﻂ ﻓ ﻲ‬
‫)‪1‬ﻳﻤﻜﻦ اﻟﺤﺼﻮل ﻋﲆ ﻛﺎﺋﻦ ‪RLock‬ﻣﻦ ﺧﻼل ﻣﺆﺷﺮﺗﺮا‬
‫ﺑﻂ اﻟﻤﺎﻟﻚ ﻻﻳﻤﻜﻦ أ ً‬
‫ﻳﻀﺎ اﻟﺤﺼﻮل ﻋﻠﻴﻪ ﻋﺪة‬ ‫ﺘﻰ ﻣﺆﺷﺮﺗﺮا‬
‫ﻓ ﻲ ﻛﻞ ﻣﺮة‪ .‬ﺣ‬ ‫ﻛﻞ ﻣﺮة ‪ ،‬وﻟﻜﻦﻳﻤﻜﻦ اﻟﺤﺼﻮل ﻋﲆ ﻛﺎﺋﻦ اﻟﻘﻔﻞ ﻧﻔ ﺴﻪ ﻋﺪة ﻣﺮا ت‪.‬‬

‫ﻣﺮا ت‪.‬‬

‫ﺘﺪاﺧﻠ ﺔ‪.‬‬
‫ﺘﻨﻔﻴﺬ اﻟﻮﻇﺎﺋﻒ اﻟﻌﻮدﻳ ﺔ وﻣﻜﺎﻟﻤﺎ ت اﻟﻮﺻﻮل اﻟﻤ‬
‫)‪2‬ﻏﻴﺮ ﻣﻨﺎﺳ ﺐ ﻟ‬ ‫ﺘﺪاﺧﻠ ﺔ‪.‬‬
‫ﺘﻨﻔﻴﺬ اﻟﻮﻇﺎﺋﻒ اﻟﻌﻮدﻳ ﺔ وﻣﻜﺎﻟﻤﺎ ت اﻟﻮﺻﻮل اﻟﻤ‬
‫)‪2‬اﻷﻧ ﺴ ﺐ ﻟ‬

‫ﺘﻜﺮار‬
‫ﺑﻂ اﻟﻤﺎﻟﻚ واﻟ‬
‫ﺑ ﺴﻠ ﺴﻠ ﺔﺗﺮا‬‫ﺑﺪًا‬
‫ﺘﻢ أ‬
‫اﻟﻤﺆﻣ ﻦ وﻟﻦﻳﻬ‬
‫ﻏﻴﺮأو ﻏﻴﺮ ﱠ‬
‫ﻣﺆﻣﻨًﺎ‬
‫ﺑﺎﻟﻘﻔﻞ أو‬
‫ﻓﻘﻂإذا ﻛﺎن‬
‫ﺑﻤﺎ‬
‫‪RLock‬‬
‫ﻋﻨﺼﺮ ‪Lock‬‬
‫ﺘﻢ ﻛﺎﺋﻦ‬
‫)‪3‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﺳﻴﻬ‬
‫ﺘﻮى اﻟﻌﻮدﻳ ﺔ‪.‬‬
‫ﺑﻂ اﻟﻤﺎﻟﻚ ‪ ،‬وﻣ ﺴ‬
‫ﻣﺆﻣﻦ وﻣﻌﻠﻮﻣﺎ ت ﻣﺆﺷﺮﺗﺮا‬

‫ﺘﻮى‪.‬‬
‫ﻣﺴ‬

‫ﺘﺨﺪامﺳﻴﻤﺎﻓﻮر‪:‬‬
‫ﺑﺎﺳ‬‫ﺘﺰاﻣﻦ‬
‫اﻟ‬
‫ﺑﻂ واﺣﺪ ﻓﻘﻂ‪.‬‬
‫ﺘﻨﻔﻴﺬ ﻣﺆﺷﺮﺗﺮا‬
‫ﺑ‬‫ُﺴﻤﺢ‬
‫ﻓ ﻲ ﺣﺎﻟ ﺔ ‪Lock‬و ‪RLock ،‬ﻓ ﻲ ﻛﻞ ﻣﺮةﻳ‬

‫ﺑﺎﻟﻮﺻﻮل‬‫ُﺴﻤﺢ ﻓﻴﻪ ﻟـ ‪10‬أﻋﻀﺎء‬


‫ﺜﻞ ﻓ ﻲ اﻟﻮﻗ ﺖ اﻟﺬيﻳ‬
‫ﺑﺎﻟﻮﺻﻮل )ﻣ‬‫ﺒﻨﺎ ﻓ ﻲ وﻗ ﺖ ﻣﺎﻳ ﺴﻤﺢ ﻟﻌﺪد ﻣﻌﻴﻦ ﻣﻦﺳﻼﺳﻞ اﻟﺮﺳﺎﺋﻞ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﻳﻜﻮن ﻣﻄﻠ‬‫ﻓﻲ‬
‫ﺘﺨﺪام ‪Lock‬وﻣﻔﺎ ﻫﻴﻢ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻫﺬا اﻟﻤﻄﻠ ﺐ ﻻﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﻜ ﺔ وﻣﺎ إﱃ ذﻟﻚ(‪ .‬ﻟﻠ‬
‫ﺗﺼﺎل اﻟﺸ‬
‫ﺑﺎﻟﻮﺻﻮل إﱃ ا‬‫ُﺴﻤﺢ ﻟـ ‪4‬أﻋﻀﺎء‬
‫ﺒﻴﺎﻧﺎ ت ‪،‬ﻳ‬
‫إﱃ ﺧﺎدم ﻗﺎﻋﺪة اﻟ‬
‫‪RLock‬وﻳﺠ ﺐ أن ﻧﺬ ﻫ ﺐ ﻟﻤﻔﻬﻮم ‪Semaphore.‬‬

‫ﺑﺸﻜﻞ ﻣﺤﺪود‬‫ﺘﺮﻛ ﺔ‬
‫ﺘﺨﺪام ‪Semaphore‬ﻟﻠﺤﺪ ﻣﻦ اﻟﻮﺻﻮل إﱃ اﻟﻤﻮارد اﻟﻤﺸ‬
‫ﻳﻤﻜﻦ اﺳ‬
‫ﺳﻌ ﺔ‪.‬‬

‫ﺘﻘﺪﻣ ﺔ‪.‬‬
‫ﻫ ﻲ آﻟﻴ ﺔﺗﺰاﻣﻦ ﻣ‬ ‫‪Semaphore‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪138‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎﻟ ﻲ )‪s = Semaphore (counter‬‬


‫ﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ ‪Semaphore‬ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫ﺘﺮاﺿﻴ ﺔ ﻟﻠﻌﺪاد ﻫ ﻲ ‪1.‬‬
‫ﺑﺎﻟﻮﺻﻮل إﻟﻴﻬﺎ ﻓ ﻲ وﻗ ﺖ واﺣﺪ‪ .‬اﻟﻘﻴﻤ ﺔ اﻻﻓ‬‫ﺜﻞ اﻟﻌﺪاد اﻟﺤﺪ اﻷﻗﺼﻰ ﻟﻌﺪد اﻟﺨﻴﻮط اﻟﻤ ﺴﻤﻮح‬
‫ﻫﻨﺎﻳﻤ‬

‫ﺘﻜﻮن ﻗﻴﻤ ﺔ اﻟﻌﺪاد‬


‫ﺘﺤﻮاذ ‪() ،‬ﺳ‬
‫ﻋﻨﺪﻣﺎﻳﻨﻔﺬ اﻟﺨﻴﻂ ﻃﺮﻳﻘ ﺔ اﻻﺳ‬
‫ﺑﻤﻘﺪار ‪1.‬‬‫ﺘﻢ زﻳﺎدة ﻗﻴﻤ ﺔ اﻟﻌﺪاد‬
‫ﺘ‬‫ﺑﻂ ﻃﺮﻳﻘ ﺔ اﻹﻃﻼق ‪() ،‬ﻓ ﺴ‬
‫ﺘﺮا‬
‫ﺑﻤﻘﺪار ‪1‬وإذا ﻧﻔﺬ ﻣﺆﺷﺮ اﻟ‬‫ﺗﻢﺗﻘﻠﻴﻠﻪ‬

‫ﺘ ﺴﺎ ب )(وﻟﻜﻞ إﺻﺪار )(‬


‫ﺘﺪﻋﺎء ﻟﻜﻞ ﻋﻤﻠﻴ ﺔ اﻛ‬
‫ﺘﻨﺨﻔﺾ ﻗﻴﻤ ﺔ ﻋﺪاد اﻻﺳ‬
‫ﺜﺎل ‪،‬ﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺪﻋﺎء‪.‬‬
‫ﺘﻢ زﻳﺎدة ﻗﻴﻤ ﺔ ﻋﺪاد اﻻﺳ‬
‫ﺳﻴ‬

‫ﺣﺎﻟ ﺔ ‪ -1:‬ق =ﺳﻴﻤﺎﻓﻮر )(‬


‫ﺒﻂ ﻧﻔ ﺲ ﻣﻔﻬﻮم اﻟﻘﻔﻞ‪.‬‬
‫ﺑﺎﻟﻀ‬‫ﺑﻂ واﺣﺪ ﻓﻘﻂ‪ .‬إﻧﻪ‬
‫ﺑﺎﻟﻮﺻﻮل إﱃ ﻣﺆﺷﺮﺗﺮا‬‫ُﺴﻤﺢ‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﺗﻜﻮن ﻗﻴﻤ ﺔ اﻟﻌﺪاد ‪1‬وﻓ ﻲ ﻛﻞ ﻣﺮةﻳ‬

‫اﻟﺤﺎﻟ ﺔ = ‪2: s‬ﺳﻴﻤﺎﻓﻮر )‪(3‬‬


‫ﺘﻰﺗﺤﺮﻳﺮ اﻹﺷﺎرة‪.‬‬
‫ﺒﻘﻴ ﺔ ﺣ‬
‫ﺘ‬‫ﺘﻈﺮ اﻟﺨﻴﻮط اﻟﻤ‬
‫ﺑﻮاﺳﻄ ﺔ ‪3‬ﺧﻴﻮط ﻓ ﻲ وﻗ ﺖ واﺣﺪ‪.‬ﻳﺠ ﺐ أنﺗﻨ‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﻳﻤﻜﻦ اﻟﻮﺻﻮل إﱃ ﻛﺎﺋﻦ ‪Semaphore‬‬

‫*‬
‫ﺘﻴﺮاد = ‪= ("Dhoni"،)) 13 ) t2‬‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪10) s.release () 11) 12) t1 = Thread (target = wish، args‬‬
‫)‪Evening: "، end =") 8) time.sleep (2) 9) print (name‬‬
‫‪5) s.acquire () 6) for i in range (10): 7) print ("Good‬‬
‫)اﻟﻬﺪف‪== ،‬‬
‫اﻟﺨﻴﻂ =اﻟﺮﻏ‬
‫ﺒﺔ‬ ‫اﻟﺨﻴﻂ‪3) s‬‬
‫)اﻟﻬﺪف‬ ‫‪= Semaphore‬‬ ‫‪(2) 4) def‬‬
‫"‪args = ("Yuvraj‬‬ ‫‪wish‬‬
‫)‪،)) 14‬‬ ‫‪t3 =(name):‬‬
‫ﺒﺔ ‪،‬‬
‫اﻟﺮﻏ‬
‫)‪16) t5()=20‬‬
‫‪t3.start‬‬ ‫‪ t4.‬ﺔ ‪،‬‬
‫ﺒ‬‫ﺒ ﺔ=‪،‬اﻟﺮﻏ‬
‫)اﻟﻬﺪف‬ ‫‪args‬اﻟﺨﻴﻂ‬
‫)اﻟﻬﺪف =اﻟﺮﻏ‬ ‫‪=args‬اﻟﺨﻴﻂ‬
‫"‪("Kohli‬‬ ‫‪،)) 15) t4‬‬
‫))‪= ( "Rohit"،‬‬
‫ﺑﺪأ )(‬
‫)( )‪args = ("Pandya" ،)) 17) t1.start () 18‬ا‬
‫‪t2.start‬‬ ‫)‪() 19‬‬
‫‪21) t5.start‬‬

‫ﺘﻨﻔﻴﺬ وﻇﻴﻔ ﺔ ‪wish ().‬‬


‫ﺑ‬‫ُﺴﻤﺢ ﻟﺨﻴﻮط ‪2‬‬
‫ﺛﻢﻳ‬‫ﺑﺎﻟﻮﺻﻮل إﱃ اﻟ ﺴﻴﻤﺎﻓﻮر وﻣﻦ‬‫ُﺴﻤﺢ ﻟـ ‪2‬ﺧﻴﻮط‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ﻓ ﻲ وﻗ ﺖ واﺣﺪ ‪،‬ﻳ‬
‫ﻓ ﻲ اﻟ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪139‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﻳﺤﺪ ﻫﺎﺳﻴﻤﺎﻓﻮر‪:‬‬
‫ﺘﺠﺎوز ﻋﺪد ﻣﻜﺎﻟﻤﺎ ت‬
‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ اﻹﻃﻼق )(أي ﻋﺪد ﻣﻦ اﻟﻤﺮا ت إﱃ ﻋﺪاد اﻟﺰﻳﺎدة‪.‬ﻳﻤﻜﻦ أنﻳ‬
‫ﺑﺎﺳ‬‫اﻹﺷﺎرة اﻟﻌﺎدﻳ ﺔ ﻫ ﻲ إﺷﺎرة ﻏﻴﺮ ﻣﺤﺪودةﺗ ﺴﻤﺢ ﻟﻨﺎ‬
‫ﺘﺤﻮاذ )(أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫اﻹﺻﺪار )(ﻋﺪد ﻣﻜﺎﻟﻤﺎ ت اﻻﺳ‬

‫*‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط ‪8) s.release () 9‬‬
‫)‪1‬ﻣﻦ اﺳ‬
‫)( ‪() 6) s.release () 7) s.release‬‬
‫‪() 4) s.acquire () 5) s.release‬‬
‫‪2) s = Semaphore (2) 3) s.acquire‬‬
‫ﺒﺎﻋ ﺔ )"‪("End‬‬
‫ﻃ‬

‫ﺘﺪﻋﺎء اﻹﺻﺪار )(أي ﻋﺪد ﻣﻦ اﻟﻤﺮا ت‪.‬‬


‫إﻧﻪ ﺻﺎﻟﺢﻷﻧﻪ ﻓ ﻲ اﻹﺷﺎرة اﻟﻌﺎدﻳ ﺔﻳﻤﻜﻨﻨﺎ اﺳ‬

‫ﺘﺤﻮاذ ‪() ،‬‬


‫ﺘﺠﺎوز ﻋﺪد ﻣﻜﺎﻟﻤﺎ ت اﻻﺳ‬
‫ﺜﻨﺎء أن ﻋﺪد ﻣﻜﺎﻟﻤﺎ ت اﻹﺻﺪار )(ﻳﺠ ﺐ أﻻﻳ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺜﻞ ‪Semaphore‬‬
‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫ﻫﻮ ﻧﻔ ﺴﻪ‬ ‫‪BounedSemaphore‬‬
‫وإﻻﺳﻨﺤﺼﻞ‬
‫ﺗﻢ إﺻﺪار اﻹﺷﺎرة ﻋﺪة ﻣﺮا ت‬
‫‪ValueError:‬‬

‫*‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط ‪() 8) s.release () 9‬‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪5) s.release () 6) s.release () 7) s.release‬‬
‫)( ‪(2) 3) s.acquire () 4) s.acquire‬‬
‫ﺒﺎﻋ ﺔ )"‪("End‬‬
‫‪2) s = BoundedSemaphore‬ﻃ‬

‫ﺗﻢ إﺻﺪار اﻹﺷﺎرة ﻋﺪة ﻣﺮا ت‬


‫‪ValueError:‬‬
‫ﺘﺤﻮاذ )(ﻓ ﻲ ‪BoundedSemaphore.‬‬
‫ﺘﺠﺎوز ﻋﺪد ﻣﻜﺎﻟﻤﺎ ت اﻹﺻﺪار )(ﻋﺪد ﻣﻜﺎﻟﻤﺎ ت اﻻﺳ‬
‫إﻧﻪ ﻏﻴﺮ ﺻﺎﻟﺢ ‪b'z‬ﻳﺠ ﺐ أﻻﻳ‬

‫ﺘﺨﺪام ‪BoundedSemaphore‬ﻋﲆ ‪Semaphore‬اﻟﻌﺎدي‪.‬‬


‫ﺑﺎﺳ‬‫ﺒ ﺴﻴﻄ ﺔ ‪،‬ﻳﻮﺻﻰ‬
‫ﺒﺮﻣﺠ ﺔ اﻟ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻟﻤﻨﻊ أﺧﻄﺎء اﻟ‬

‫ﺑﻴﻦ ﻟﻮك وﺳﻴﻤﺎﻓﻮر‪:‬‬‫اﻟﻔﺮق‬


‫ﺑﻂ واﺣﺪ ﻓﻘﻂ ‪ ،‬وﻟﻜﻦﻳﻤﻜﻦ اﻟﺤﺼﻮل ﻋﲆ ﻛﺎﺋﻦ ‪Semaphore‬‬
‫ﻓ ﻲ وﻗ ﺖ واﺣﺪ ‪،‬ﻳﻤﻜﻦ اﻟﺤﺼﻮل ﻋﲆ ﻛﺎﺋﻦ ‪Lock‬ﻣﻦ ﺧﻼل ﻣﺆﺷﺮﺗﺮا‬
‫ﺑﻮاﺳﻄ ﺔ ﻗﻴﻤ ﺔ اﻟﻌﺪاد‪.‬‬‫ﺑﻂ اﻟﻤﺤﺪدة‬
‫ﺘﺮا‬
‫ﺑ ﺖ ﻣﻦ ﻣﺆﺷﺮا ت اﻟ‬
‫ﺛﺎ‬‫ﺑﻮاﺳﻄ ﺔ ﻋﺪد‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪140‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺗﻤ ﺔ‪:‬‬
‫ﺧﺎ‬
‫ﺘﻈﺎر اﻟﺨﻴﻮط وﺧﻠﻖ‬
‫ﺋﻴ ﺴ ﻲ ﻟﻠﻤﺰاﻣﻨ ﺔ ﻫﻮ زﻳﺎدة وﻗ ﺖ اﻧ‬
‫ﺒﻴﺎﻧﺎ ت ‪ ،‬وﻟﻜﻦ اﻟﻌﻴ ﺐ اﻟﺮ‬
‫ﺘﻐﻠ ﺐ ﻋﲆ ﻣﺸﺎﻛﻞ ﻋﺪمﺗﻨﺎﺳﻖ اﻟ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﻤﺰاﻣﻨ ﺔ ﻫ ﻲ أﻧﻪﻳﻤﻜﻨﻨﺎ اﻟ‬
‫اﻟﻤﻴﺰة اﻟﺮ‬
‫ﺘﺰاﻣﻦ‪.‬‬
‫ﺘﺨﺪام اﻟ‬
‫ﺑﺎﺳ‬‫ﺛﻢ إذا ﻟﻢﻳﻜﻦ ﻫﻨﺎك ﺷﺮط ﻣﺤﺪد ﻓﻼﻳﻮﺻﻰ‬‫ﻣﺸﺎﻛﻞ ﻓ ﻲ اﻷداء‪ .‬وﻣﻦ‬

‫ﺑﻴﻦ اﻟﺨﻴﻂ‪:‬‬‫ﺘﻮاﺻﻞ‬
‫اﻟ‬
‫ﺑﺔ‬
‫ﺒﺮﻣﺠ ﺔ ‪،‬ﺗﻜﻮن اﻟﺨﻴﻮط ﻣﻄﻠﻮ‬
‫ﺒﺎ ت اﻟ‬
‫ﺘﻄﻠ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن ﻛﺠﺰء ﻣﻦ ﻣ‬‫ﻓﻲ‬
‫ﺑﻴﻦ اﻟﻤﻮاﺿﻴﻊ‪.‬‬‫ﺗﺼﺎل‬
‫ﺑﻌﺾ‪ .‬ﻫﺬا اﻟﻤﻔﻬﻮم ﻟﻴ ﺲﺳﻮى ا‬‫ﺗﻮاﺻﻠﻮا ﻣﻊ‬

‫ﺑﺎﻟﻌﻨﺼﺮ‬‫ﺘﻬﻠﻚ ﻹﺧﻄﺎره‬
‫ﺑﻂ اﻟﻤ ﺴ‬
‫ِﺞ ﻣﻊ ﻣﺆﺷﺮﺗﺮا‬
‫ﺘ‬
‫اﻟﻤﻨ‬
‫ﺑﻂ ُ‬‫ﺘﻮاﺻﻞ ﻣﺆﺷﺮﺗﺮا‬
‫ﺘﺎج اﻟﻌﻨﺎﺻﺮ ‪،‬ﻳﺠ ﺐ أنﻳ‬
‫ﺑﻌﺪ إﻧ‬‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﻬﻠﻚ ﻫﺬا اﻟﻌﻨﺼﺮ اﻟﺠﺪﻳﺪ‪.‬‬
‫ﺘﻬﻠﻚ أنﺗ ﺴ‬
‫ﺑﻴﺎﻧﺎ ت اﻟﻤ ﺴ‬‫ﺛﻢﻳﻤﻜﻦ ﻟ ﺴﻠ ﺴﻠ ﺔ‬‫اﻟﺠﺪﻳﺪ ‪،‬‬
‫ﺘﺎﻟﻴ ﺔ‬
‫ﺘﺨﺪام اﻟﻄﺮق اﻟ‬
‫ﺑﺎﺳ‬‫ﺑﻴﻦ اﻟﻤﻮاﺿﻴﻊ‬‫ﺗﺼﺎل‬
‫ﻓ ﻲ ‪Python ،‬ﻳﻤﻜﻨﻨﺎﺗﻨﻔﻴﺬ اﻻ‬
‫)‪1‬ﺣﺪ ث‬
‫)‪2‬اﻟﺸﺮط‬
‫ﺘﻈﺎر‬
‫)‪3‬ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫إﻟﺦ‬

‫ﺘﺨﺪام ﻛﺎﺋﻨﺎ ت اﻷﺣﺪا ث‪:‬‬


‫ﺑﺎﺳ‬
‫‪Inter Thread Communication‬‬
‫ﺘﻈﺮه اﻟﺨﻴﻮط اﻷﺧﺮى‪.‬‬
‫ﺗﻨ‬‫ﺑﻴﻦ اﻟﺨﻴﻮط‪.‬ﻳﺸﻴﺮ أﺣﺪ اﻟﺨﻴﻮط إﱃ ﺣﺪ ث و‬‫ﺗﺼﺎل‬
‫ﺑ ﺴﻂ آﻟﻴ ﺔ ا‬
‫ﻛﺎﺋﻦ اﻟﺤﺪ ث ﻫﻮ أ‬

‫ﺘﺎﻟ ﻲ ‪...‬‬
‫ﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ ﺣﺪ ث ﻋﲆ اﻟﻨﺤﻮ اﻟ‬

‫ﺑﻂ ‪() tnevE.‬‬


‫ﺘﺮا‬
‫اﻟﺤﺪ ث =ﻣﺆﺷﺮ اﻟ‬
‫ﻳﺪﻳﺮ اﻟﺤﺪ ث ﻋﻼﻣ ﺔ داﺧﻠﻴ ﺔﻳﻤﻜﻨﻬﺎﺗﻌﻴﻴﻦ )(أو ﻣ ﺴﺢ )(‬
‫ﺘﻢﺗﻌﻴﻴﻦ اﻟﺤﺪ ث‪.‬‬
‫ﺘﻰﻳ‬
‫ﺘﻈﺮ اﻟﻤﻮاﺿﻴﻊ ﺣ‬
‫ﻳﻤﻜﻦ أنﺗﻨ‬

‫ﻃﺮق ﻓﺌ ﺔ اﻟﺤﺪ ث‪:‬‬


‫ﺜﻞ إﺷﺎرة ﺧﻀﺮاء ﻟﻠﺠﻤﻴﻊ‬
‫ﺗﻤ‬‫ﺒﺢ ﻗﻴﻤ ﺔ اﻟﻌﻠﻢ اﻟﺪاﺧﻠ ﻲ ﺻﺤﻴﺤ ﺔ و‬
‫ﺘﺼ‬‫)( ‪1) set‬ﺳ‬
‫ﺘﻈﺎر‪.‬‬
‫ﺧﻴﻮط اﻻﻧ‬
‫ﺘﻈﺮة‪.‬‬
‫ﺜﻞ إﺷﺎرة ‪RED‬ﻟﺠﻤﻴﻊﺳﻼﺳﻞ اﻟﺮﺳﺎﺋﻞ اﻟﻤﻨ‬
‫ﺗﻤ‬‫ﺒﺢ ﻗﻴﻤ ﺔ اﻟﻌﻠﻢ اﻟﺪاﺧﻠ ﻲ ‪False‬و‬
‫ﺘﺼ‬‫)( ‪2) clear‬ﺳ‬

‫ﺘﺨﺪام ﻫﺬه اﻟﻄﺮﻳﻘ ﺔﺳﻮاءﺗﻢﺗﻌﻴﻴﻦ اﻟﺤﺪ ث أم ﻻ‬


‫)( ‪3) isSet‬ﻳﻤﻜﻦ اﺳ‬
‫ﺘﻢﺗﻌﻴﻴﻦ اﻟﺤﺪ ث‬
‫ﺘﻰﻳ‬
‫ﺘﻈﺮ اﻟﻤﻮﺿﻮع ﺣ‬
‫ﺛﻮان( ﻳﻤﻜﻦ أنﻳﻨ‬
‫ﺘﻈﺮ )‬
‫ﺘﻈﺮ | )(اﻧ‬
‫)‪4‬اﻧ‬

‫ﻛﻮد ﻣﺰﻳﻒ‪:‬‬
‫اﻟﺤﺪ ث )( ‪= threading.Event‬‬
‫ﺘﻢﺗﻌﻴﻴﻦ اﻟﺤﺪ ث‬
‫ﺘﻰﻳ‬
‫ﺘﻈﺮ ﺣ‬
‫‪#consumer thread‬ﻳﺠ ﺐ أنﺗﻨ‬

‫)( ‪event.wait‬‬
‫ﺘﺞﻳﻤﻜﻦﺗﻌﻴﻴﻦ أو ﻣ ﺴﺢ اﻟﺤﺪ ث‬
‫‪#‬اﻟﻤﻨ‬
‫)( ‪event.set‬‬
‫)( ‪event.clear‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪141‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒ ﻲ ‪-1:‬‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫*‬
‫ﺘﺎج‬
‫ﺒﺎﻋ ﺔ )"ﻋﻨﺎﺻﺮ إﻧ‬
‫ﺘﺞ )‪def (): time.sleep (5) 4‬ﻃ‬
‫ﺘﻴﺮاد )‪3‬اﻟﻤﻨ‬
‫ﺘﻴﺮاد اﻟﺨﻴﻂ )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫ِﺞ ﻋﻦ ﻃﺮﻳﻖﺗﻌﻴﻴﻦ اﻟﺤﺪ ث"( ‪("Consumer thread‬‬
‫ﺘ‬
‫اﻟﻤﻨ‬
‫ﺑﻂ ُ‬‫ﺒﺎﻋ ﺔ )"إﺷﻌﺎر ﻣﺆﺷﺮﺗﺮا‬
‫ِﺞ‪5) (":‬ﻃ‬
‫ﺘ‬
‫اﻟﻤﻨ‬
‫ﺧﻴﻂ ُ‬
‫‪(): 9) print ("Consumer thread is waiting for update") 10) event.wait () 11) print‬‬
‫)‪16‬‬
‫‪t1 =t1.start‬‬
‫)‪=() 17‬اﻟﺤﺪ ث‬
‫اﻟﺤﺪ ث‬
‫‪t2.start‬‬
‫)‪12) 13‬‬
‫ﺘﻬﻠﻚ( )(‬
‫ﺘﻬﻠﻜ ﺔ"(‬
‫ﺴﺴ‬‫اﻟﻤاﻟﻤ‬
‫واﻟﻌﻨﺎﺻﺮ =‬
‫اﻟﺨﻴﻂ )اﻟﻬﺪف‬
‫ﻟﻺﻋﻼم‬‫)‪15‬‬
‫)‪6) 7‬‬
‫‪t2 event.set‬‬
‫ﺘﺞ( =‬‫)اﻟﻬﺪف)( =اﻟﻤﻨ‬
‫اﻟﺨﻴﻂ ‪8) def‬‬
‫‪customer‬‬
‫)‪() 14‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﺘﺤﺪﻳ ﺚ‬
‫ﺘﻈﺮ اﻟ‬
‫ﺘﻬﻠﻚﻳﻨ‬
‫ﻣﻮﺿﻮع اﻟﻤ ﺴ‬
‫ﺘﺠ ﺔ‬
‫ﺒﻨﻮد اﻟﻤﻨ‬
‫ﺘﺞ اﻟﺨﻴﻂ اﻟ‬
‫اﻟﻤﻨ‬
‫ﺘﺞﻳﻌﻄ ﻲ إﺧﻄﺎرا ﻣﻦ ﺧﻼلﺗﺤﺪﻳﺪ اﻟﺤﺪ ث‬
‫ﻣﻮﺿﻮع اﻟﻤﻨ‬
‫ﺘﻬﻠﻜ ﺔ‬
‫ﺘﻬﻠﻚ إﺷﻌﺎ ًرا وﻋﻨﺎﺻﺮ ﻣ ﺴ‬
‫ﺗﻠﻘﻰ ﻣﻮﺿﻮع اﻟﻤ ﺴ‬

‫ﺒ ﻲ ‪-2:‬‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫*‬
‫ﺘﻴﺮاد ‪True: 14) print ("Drivers waiting for‬‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪RED Signal") 10) event.clear () 11) def driver (): 12) num = 0 13) while‬‬
‫‪Signal") 7) event.set () 8) time.sleep (20) 9) print ("Traffic Police Giving‬‬
‫‪(): 4) while True: 5) time.sleep (10) 6) print ("Traffic Police Giving GREEN‬‬
‫‪") 15) event.wait‬إﺷﺎرة اﻟﻤﺮور‬ ‫)‪() 16‬‬
‫‪event.isSet‬‬ ‫‪print‬‬
‫"( )"‬
‫ﺑﻴﻨﻤﺎ ‪():‬‬ ‫ﺧﻀﺮاء)‪17‬‬
‫ﺘﺤﺮك‬‫إﺷﺎرة‬ ‫ﻟﻠﻤﺮﻛ)‪3‬‬
‫ﺒﺎ ت اﻟ‬ ‫ﻳﻤﻜﻦ ‪def‬‬
‫‪trafficpolice‬‬
‫ﺧﻀﺮاء ‪...‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪142‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫اﻟﺤﺪ ث = ‪t1‬‬
‫)‪(2) =21‬‬
‫‪ print‬ث‬
‫)‪22‬اﻟﺤﺪ‬
‫اﻹﺷﺎرة"(‬
‫ﺘﻈﺎر" (‬
‫ﺒﻮر‬
‫"ﻋاﻻﻧ‬
‫ﺋﻘﻴﻦ‬
‫‪num‬‬
‫ﻋﲆ ‪،‬اﻟ ﺴﺎ‬
‫ﺴﻴﺎرة‪، ":‬‬
‫ﺘﻌﻴﻦ‬ ‫‪...‬ﻳاﻟ‬
‫ﺣﻤﺮاءرﻗﻢ‬
‫‪18) num‬‬
‫)"إﺷﺎرة=اﻟﻤﺮور‬
‫‪num +‬‬ ‫)‪20‬‬
‫)‪1 19‬‬
‫‪time.sleep‬‬
‫"( ‪print‬‬

‫)‪() 25‬اﻟﺨﻴﻂ )اﻟﻬﺪف =ﺷﺮﻃ ﺔ اﻟﻤﺮور( = ‪24) t2‬اﻟﺨﻴﻂ )اﻟﻬﺪف =اﻟ ﺴﺎﺋﻖ( )( ‪t1.start () 26) t2.start‬‬
‫)‪23‬‬

‫ﺑﻤﺠﺮد أن‬
‫ﺘﻰﻳﻌﻄ ﻲ إﺷﺎرة ﺧﻀﺮاء ‪ ،‬و‬
‫ﺘﻌﻴﻴﻦ ‪event.ie‬ﺣ‬
‫ﺑ‬‫ﺑﻂ ﺷﺮﻃ ﺔ اﻟﻤﺮور‬
‫ﺘﻰﻳﻘﻮم ﻣﺆﺷﺮﺗﺮا‬
‫ﺘﻈﺮ ﺣ‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪،‬ﻳﺠ ﺐ أنﻳﻨ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ اﻟ‬‫ﻓ ﻲ ﺧﻴﻂ‬
‫ﺑﻤﺠﺮد ﻣ ﺴﺢ ﺧﻴﻂ ﺷﺮﻃ ﺔ اﻟﻤﺮور ﻟﻠﺤﺪ ث )ﻳﻌﻄ ﻲ إﺷﺎرة‬‫ﺒﻮر اﻹﺷﺎرة‪.‬‬
‫ﺒﺎ ت ﻋ‬
‫ﺑﻂ ﺷﺮﻃ ﺔ اﻟﻤﺮور اﻟﺤﺪ ث )ﻳﻌﻄ ﻲ إﺷﺎرة ﺧﻀﺮاء( ‪،‬ﻳﻤﻜﻦ ﻟﻠﻤﺮﻛ‬
‫ﻳﺤﺪد ﻣﺆﺷﺮﺗﺮا‬
‫ﺑﻂ اﻟ ﺴﺎﺋﻖ‪.‬‬
‫ﺘﻈﺮ ﻣﺆﺷﺮﺗﺮا‬
‫ﺣﻤﺮاء( ‪،‬ﻳﺠ ﺐ أنﻳﻨ‬

‫ﺘﺨﺪام ﻛﺎﺋﻦ اﻟﺸﺮط‪:‬‬


‫ﺑﺎﺳ‬
‫‪Inter Thread Communication‬‬
‫ﺘﺪاﺧﻠ ﺔ‬
‫ﺗﻘﺪﻣﺎ ﻣﻦ ﻛﺎﺋﻦ اﻟﺤﺪ ث ﻟﻠﺨﻴﻮط اﻟﻤ‬
‫ً‬ ‫ﺜﺮ‬
‫اﻟﺸﺮط ﻫﻮ اﻹﺻﺪار اﻷﻛ‬

‫ﺘﻈﺮ اﻟﺨﻴﻮط ﻫﺬا اﻟﺸﺮط وﻳﻤﻜﻦ إﺧﻄﺎر‬


‫ﺘﻬﻠﻚ‪.‬ﻳﻤﻜﻦ أنﺗﻨ‬
‫ﺘﺎج ﻋﻨﺼﺮ أو ﻋﻨﺼﺮ ﻣ ﺴ‬
‫ﺜﻞ إﻧ‬
‫ﺒﻴﻖ ﻣ‬
‫ﺘﻄ‬‫ﺜﻞ اﻟﺸﺮط ﻧﻮﻋً ﺎ ﻣﻦﺗﻐﻴﻴﺮ اﻟﺤﺎﻟ ﺔ ﻓ ﻲ اﻟ‬
‫ﺗﺼﺎل‪:‬ﻳﻤ‬
‫اﻻ‬

‫ﺑﻂ آﺧﺮ‪.‬‬
‫ﺑﻮاﺳﻄ ﺔ ﻣﺆﺷﺮﺗﺮا‬‫ﺘﻢ إﺧﻄﺎره‬
‫ﺘﻰﻳ‬
‫ﺘﻈﺎر ﺣ‬
‫ﺑﺎﻻﻧ‬‫ﺑﻂ‬
‫ﺘﺮا‬
‫ﺜﺮ ﻣﻦ ﻣﺆﺷﺮا ت اﻟ‬
‫ﺑﻤﺠﺮد ﺣﺪو ث اﻟﺸﺮط‪.‬ﻳ ﺴﻤﺢ ﻛﺎﺋﻦ اﻟﺸﺮط ﻟﻮاﺣﺪ أو أﻛ‬‫ﺳﻼﺳﻞ اﻟﺮﺳﺎﺋﻞ‬

‫ﺑﻘﻔﻞ ‪(ReentrantLock).‬‬‫ﺋﻤﺎ‬
‫ﺒﻂ اﻟﺸﺮط دا ً‬
‫ﺗ‬‫ﻳﺮ‬

‫ﺑﻠ ﺔ‬
‫ﺘﺪﻋ ﻲ اﻟﻄﺮق اﻟﻤﻘﺎ‬
‫ﺗﺴ‬‫ﺘﻴﻦ )(و )( ‪release‬‬
‫ﺘ ﺴ ﺐ اﻟﺸﺮط ﻃﺮﻳﻘ‬
‫ﻳﻜ‬
‫ﺒﻂ‪.‬‬
‫ﺗ‬‫ﻣﻦ اﻟﻘﻔﻞ اﻟﻤﺮ‬

‫ﺘﺎﻟ ﻲ اﻟﺸﺮط )( ‪= threading.Condition‬‬


‫ﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ اﻟﺸﺮط ﻋﲆ اﻟﻨﺤﻮ اﻟ‬

‫ﻃﺮق اﻟﺸﺮط‪:‬‬

‫ﺘﻬﻼﻛﻬﺎ‬
‫ﺘﺎج اﻟﻌﻨﺎﺻﺮ أو اﺳ‬
‫ﺒﻞ إﻧ‬
‫)(ﻟﻠﺤﺼﻮل ﻋﲆ ﻛﺎﺋﻦ اﻟﺸﺮط ﻗ‬ ‫)‪1‬اﻟﺤﺼﻮل ﻋﲆ‬

‫ﻣﻮﺿﻮع اﻟﺤﺼﻮل ﻋﲆ ﻗﻔﻞ داﺧﻠ ﻲ‪.‬‬

‫ﺘﻬﻼك اﻟﻌﻨﺎﺻﺮ‪ .‬أي ﻣﻮﺿﻮع‬


‫ﺘﺎج أو اﺳ‬
‫ﺑﻌﺪ إﻧ‬‫ﺘﺤﺮﻳﺮ ﻛﺎﺋﻦ اﻟﺸﺮط‬
‫)‪2‬إﻃﻼق )(ﻟ‬
‫ﻳﻄﻠﻖ اﻟﻘﻔﻞ اﻟﺪاﺧﻠ ﻲ‬

‫ﺘﻬﺎء اﻟﻮﻗ ﺖ‬
‫ﺘﻼم اﻹﺧﻄﺎر أو اﻧ‬
‫ﺘﻰ اﺳ‬
‫ﺘﻈﺎر ﺣ‬
‫ﻟﻼﻧ‬ ‫ﺘﻈﺮ )وﻗ ﺖ(‬
‫ﺘﻈﺮ | )(اﻧ‬
‫)‪3‬اﻧ‬

‫ﺘﻈﺎر واﺣﺪ‬
‫ﺑﻠﻎ )(ﻹﻋﻄﺎء إﺷﻌﺎر ﻟﺨﻴﻂ اﻧ‬
‫)‪4‬أ‬

‫ﺘﻈﺮة‬
‫)( ‪5) notifyAll‬ﻹﻋﻄﺎء إﺷﻌﺎر ﻟﺠﻤﻴﻊ اﻟﻤﻮاﺿﻴﻊ اﻟﻤﻨ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪143‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫دراﺳ ﺔ اﻟﺤﺎﻟ ﺔ‪:‬‬


‫ﺘﻬﻠﻜﻴﻦ‪.‬‬
‫ﺘﺎج اﻟﻌﻨﺼﺮ ﻟﻠﻤﻮرد وإﺧﻄﺎر اﻟﻤ ﺴ‬
‫ﺒﻞ إﻧ‬
‫ﺘﺎج إﱃ اﻟﺤﺼﻮل ﻋﲆ اﻟﺤﺎﻟ ﺔ ﻗ‬
‫ﺘﺎج ﺧﻴﻂ اﻹﻧ‬
‫ﻳﺤ‬

‫ﺘﺞ اﻟﻤﻮﺿﻮع‬
‫‪#‬اﻟﻤﻨ‬

‫‪...‬إﻧﺸﺎء ﻋﻨﺼﺮ ‪..‬‬


‫)( ‪condition.acquire‬‬
‫‪...‬إﺿﺎﻓ ﺔ ﻋﻨﺼﺮ إﱃ اﻟﻤﻮرد ‪...‬‬

‫‪condition.notify () #‬إﺷﺎرة إﱃﺗﻮﻓﺮ ﻋﻨﺼﺮ ﺟﺪﻳﺪ ))( ‪(notifyAll‬‬


‫)( ‪condition.release‬‬

‫ﺘﻬﻼك اﻟﻌﻨﺎﺻﺮ ﻣﻦ‬


‫ﺛﻢﻳﻤﻜﻨﻪ اﺳ‬‫ﺘﻬﻠﻚ ﻋﲆ اﻟﺸﺮط وﻣﻦ‬
‫ﻳﺠ ﺐ أنﻳﺤﺼﻞ اﻟﻤ ﺴ‬
‫اﻟﻤﻮارد‬

‫ﺘﻬﻠﻚ‬
‫‪#‬ﻣﻮﺿﻮع اﻟﻤ ﺴ‬

‫)( ‪condition.acquire‬‬
‫ﺘﻈﺎر )(‬
‫ﺣﺎﻟ ﺔ اﻻﻧ‬
‫ﺒﻨﺪ‬
‫ﺘﻬﻠﻚ اﻟ‬
‫ﺗﺴ‬

‫)( ‪condition.release‬‬

‫ﺒ ﻲ ‪-1:‬‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫*‬
‫ﺘﻈﺎر‬
‫ﺘﻬﻠﻚ ﻓ ﻲ اﻧ‬
‫ﺒﺎﻋ ﺔ )"اﻟﻤ ﺴ‬
‫ﺘﻬﻼك )‪(c): 3) c.acquire () 4‬اﻟﻄ‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط ‪2) def‬اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫ﺘﻬﻠﻚ اﻟﻌﻨﺼﺮ )‪") 7‬ج‪ .‬اﻹﺻﺪار = ‪17) t1‬‬
‫ﺘﻬﻠﻚ إﺷﻌﺎ ًرا واﺳ‬
‫ﺗﻠﻘﻰ اﻟﻤ ﺴ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﺘﻈﺮ )‪() 6‬اﻟﻄ‬
‫ﺘﺤﺪﻳ ﺚ"( ‪5) c.‬اﻧ‬
‫اﻟ‬
‫‪print‬‬
‫‪("()Producer‬اﻟﺨﻴﻂ‬ ‫‪Im Notification‬‬
‫‪8) 9) def product‬‬ ‫‪") 13) c. notify‬‬
‫‪(c): 10) c.acquire‬‬ ‫‪() 11)()print‬‬
‫‪14) c.release‬‬ ‫)‪() 15‬‬
‫‪(" Producer‬‬ ‫‪16) c = Condition‬‬
‫‪Producer‬‬ ‫)(‬
‫)‪Items ") 12‬‬
‫ﺘﺎج ‪19) t1.start () 20) t2.start () ،‬‬
‫ﺘﻬﻼك ‪args = (c ،)) 18) t2 = ،‬اﻟﺨﻴﻂ )اﻟﻬﺪف =اﻹﻧ‬
‫)اﻟﻬﺪف =اﻻﺳ‬
‫))‪args = (c ،‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪144‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺘﺤﺪﻳ ﺚ‬
‫ﺘﻈﺮ اﻟ‬
‫ﺘﻬﻠﻚﻳﻨ‬
‫اﻟﻤ ﺴ‬
‫ﺘﺠﻴﻦ‬
‫ﺘﺠ ﺔ ﻟﻠﻤﻨ‬
‫ﺘﺠﺎ ت اﻟﻤﻨ‬
‫اﻟﻤﻨ‬
‫ﺘﺞﻳﻌﻄ ﻲ اﻹﺧﻄﺎر‬
‫اﻟﻤﻨ‬
‫ﺘﻬﻠﻚ اﻟﻌﻨﺼﺮ‬
‫ﺘﻬﻠﻚ إﺷﻌﺎ ًرا واﺳ‬
‫ﺗﻠﻘﻰ اﻟﻤ ﺴ‬

‫ﺒ ﻲ ‪-2:‬‬
‫ﺘﺠﺮﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫اﻟ‬

‫*‬
‫ﺘﻴﺮاد ﻋﺸﻮاﺋ ﻲ )‪4‬اﻟﻌﻨﺎﺻﺮ ) ‪9‬‬
‫ﺘﻴﺮاد )‪3‬اﺳ‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫)‪(c): 6) while True: 7) c.acquire () 8) item = random.randint (1،100‬‬
‫ﺘﺞ ‪ ، ":‬اﻟﻌﻨﺼﺮ( ‪11) print ("Producer‬‬
‫ﺘﺞ اﻟﻤﻨ‬
‫ﺒﺎﻋ ﺔ )"اﻟﻤﻨ‬
‫‪= [] 5) def product‬ﻃ‬
‫ﺒﻠﻎ اﻹﺧﻄﺎر"( ‪time.sleep ( 5) 15) 16) def‬‬
‫)‪10) items.append (item‬اﻟﺬيﻳ‬
‫ﺑﻴﻨﻤﺎ ﺻﺤﻴﺢ‪:‬‬
‫ﺘﻬﻼك )‪(c): 17‬‬
‫)‪12) c.notify () 13) c.release () 14‬اﻻﺳ‬
‫‪("Consumer waiting for update") 20) c.wait () 21) print ("Consumer‬‬
‫‪(target‬‬ ‫‪= consume،‬‬
‫‪c.release‬‬ ‫))‪args = (c،‬‬
‫‪() 23) time.sleep‬‬ ‫)‪(5)27‬‬
‫)‪24)t225‬‬
‫ﺘﻬﻠﻚ‪= c‬‬‫‪18) c.acquire‬اﺳ‬
‫‪= Condition‬‬ ‫)‪() 26) t1() =19‬‬ ‫‪print‬‬
‫‪Thread‬‬
‫ﺘﺎج ‪t1.start () 29) t2.start () ،‬‬
‫‪item "، items.pop‬اﻟﺨﻴﻂ )اﻟﻬﺪف =اﻹﻧ‬
‫))‪args = (c،‬‬
‫)‪()) 28‬‬
‫)‪22‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺘﺤﺪﻳ ﺚ‬
‫ﺘﻈﺮ اﻟ‬
‫ﺘﻬﻠﻚﻳﻨ‬
‫اﻟﻤ ﺴ‬
‫ﺘﺞ‪49 :‬‬
‫ﺘﺞ اﻟﻤﻨ‬
‫اﻟﻤﻨ‬
‫ﺘﺞﻳﻌﻄ ﻲ اﻹﺧﻄﺎر‬ ‫اﻟﻤﻨ‬
‫ﺒﻨﺪ ‪49‬‬
‫ﺘﻬﻠﻚ اﻟ‬‫ﺘﻬﻠﻚ اﻟﻤ ﺴ‬‫اﺳ‬
‫‪.....‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪145‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻈﺎر )(ﻋﲆ ﻛﺎﺋﻦ اﻟﺸﺮط‪.‬‬


‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ اﻻﻧ‬
‫ﺘﺎﻟ ﻲ ﻓﻬﻮ ﻣ ﺴﺆول ﻋﻦ اﺳ‬
‫ﺑﺎﻟ‬
‫ﺘﺤﺪﻳ ﺚ ‪ ،‬و‬
‫ﺘﻬﻠﻚ اﻟ‬
‫ﺑﻂ اﻟﻤ ﺴ‬
‫ﺘﻮﻗﻊ ﻣﺆﺷﺮﺗﺮا‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪،‬ﻳ‬
‫ﻓ ﻲ اﻟ‬

‫ﺘﺪﻋﺎء )( ‪notify‬أو )( ‪notifyAll‬ﻋﲆ ﻛﺎﺋﻦ اﻟﺸﺮط‪.‬‬


‫ﺘﺎﻟ ﻲ ﻓﻬﻮ ﻣ ﺴﺆول ﻋﻦ اﺳ‬
‫ﺑﺎﻟ‬
‫ﺘﺤﺪﻳ ﺚ ‪ ،‬و‬
‫ﺑﺈﺟﺮاء اﻟ‬‫ِﺞ‬
‫ﺘ‬
‫اﻟﻤﻨ‬
‫ﺑﻂ ُ‬‫ﻳﻘﻮم ﻣﺆﺷﺮﺗﺮا‬

‫ﺘﻈﺎر‪:‬‬
‫ﺘﺨﺪام ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺑﺎﺳ‬
‫‪Inter Tread Communication‬‬
‫ﺑﻴﻦ اﻟﻤﻮاﺿﻴﻊ و‬‫ﺗﺼﺎل‬
‫ﺴﻨ ﺔ ﻟﻼ‬
‫ﺜﺮ آﻟﻴ ﺔ ﻣﺤّ‬
‫ﺘﻈﺎر ﻫﻮ أﻛ‬
‫ﻣﻔﻬﻮم ﻗﻮاﺋﻢ اﻻﻧ‬
‫ﺑﻴﻦ اﻟﻤﻮاﺿﻴﻊ‪.‬‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺒﺎدل اﻟ‬
‫ﺘ‬‫ﻟ‬

‫ﺛﻢ ﻛﻠﻤﺎ ﻛﻨﺎ ﻛﺬﻟﻚ‬‫ﺑﻪ ﻗﻔﻞ ‪ ،‬وﻣﻦ‬‫ﺘﻈﺎر داﺧﻠ ًﻴﺎ ﻋﲆ ﺷﺮط و ﻫﺬا اﻟﺸﺮط‬
‫ﺘﻮي ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺗﺤ‬
‫ﺑﺸﺄن اﻟﻤﺰاﻣﻨ ﺔ‪.‬‬‫ﺘﻈﺎر ‪ ،‬ﻻ داﻋ ﻲ ﻟﻠﻘﻠﻖ‬
‫ﺘﺨﺪام ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺑﺎﺳ‬

‫ﺘﻈﺎر‬
‫ﺘﻴﺮاد وﺣﺪة ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺘﻈﺎر اﺳ‬ ‫ﺘﻈﺎر أوﻻ ً ‪ ،‬ﻓﻴﺠ ﺐ ﻋﻠﻴﻨﺎ اﺳ‬
‫ﺘﻴﺮاد ﻗﺎﺋﻤ ﺔ اﻧ‬ ‫ﺘﺨﺪام ﻗﻮاﺋﻢ اﻻﻧ‬
‫إذا أردﻧﺎ اﺳ‬
‫ﺘﻈﺎر ﻛﻤﺎﻳﻠ ﻲ‪q = queue.Queue () :‬‬
‫ﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬

‫ﺘﻈﺎر‪:‬‬
‫ﻃﺮق ﻣﻬﻤ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺘﻈﺎر‪.‬‬
‫)‪ 1‬ﺿﻊ ‪ ():‬ﺿﻊ ﻋﻨﺼ ﺮًا ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺗﻪ‪.‬‬
‫ﺘﻈﺎر وإﻋﺎد‬
‫‪2) get ():‬إزاﻟ ﺔ ﻋﻨﺼﺮ ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬

‫ﺒﻞ إدﺧﺎل‬
‫ﺘﻮي ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ﻋﲆ ﻣﻨﻄﻖ ﻟﻠﺤﺼﻮل ﻋﲆ اﻟﻘﻔﻞ ﻗ‬
‫ﺘﻈﺎر‪ .‬داﺧﻠ ًﻴﺎ ‪،‬ﺗﺤ‬
‫ﺒﻴﺎﻧﺎ ت ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺘﺨﺪم ‪Producer Thread‬ﻃﺮﻳﻘ ﺔ )( ‪put‬ﻹدراج اﻟ‬
‫ﻳﺴ‬
‫ﺘﻢﺗﺤﺮﻳﺮهﺗﻠﻘﺎﺋ ًﻴﺎ‪.‬‬
‫ﺒﻴﺎﻧﺎ تﺳﻴ‬
‫ﺑﻌﺪ إدﺧﺎل ﻗﻔﻞ اﻟ‬‫ﺘﻈﺎر‪.‬‬
‫ﺒﻴﺎﻧﺎ ت ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫اﻟ‬

‫ِﺞ ﻓ ﻲ‬
‫ﺘ‬
‫اﻟﻤﻨ‬
‫ﺑﻂ ُ‬‫ﺘﻢ إدﺧﺎل ﻣﺆﺷﺮﺗﺮا‬
‫ﺘﻠﺌ ﺔ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺘﻈﺎر ﻣﻤ‬
‫ﺘﻠﺌ ﺔ أم ﻻ ‪ ،‬وإذا ﻛﺎﻧ ﺖ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺘﻈﺎر ﻣﻤ‬ ‫ﺘﺤﻘﻖ أﺳﻠﻮ ب )( ‪put‬أ ً‬
‫ﻳﻀﺎ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬ ‫ﻳ‬
‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ )( ‪wait‬داﺧﻠ ًﻴﺎ‪.‬‬
‫ﺘﻈﺎر ﻋﻦ ﻃﺮﻳﻖ اﺳ‬
‫ﺣﺎﻟ ﺔ اﻻﻧ‬

‫ﺘﻮي ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ﻋﲆ ﻣﻨﻄﻖ ﻟﻠﺤﺼﻮل ﻋﲆ‬


‫ﺘﻈﺎر واﻟﺤﺼﻮل ﻋﻠﻴﻬﺎ‪ .‬داﺧﻠ ًﻴﺎ ‪،‬ﺗﺤ‬
‫ﺒﻴﺎﻧﺎ ت ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺘﺨﺪم ‪Consumer Thread‬ﻃﺮﻳﻘ ﺔ )( ‪get‬ﻹزاﻟ ﺔ اﻟ‬
‫ﻳﺴ‬
‫ﺘﻢﺗﺤﺮﻳﺮ اﻟﻘﻔﻞﺗﻠﻘﺎﺋ ًﻴﺎ‪.‬‬
‫ﺘﻤﺎل اﻹزاﻟ ﺔ ‪،‬ﺳﻴ‬
‫ﺑﻤﺠﺮد اﻛ‬‫ﺘﻈﺎر‪.‬‬
‫ﺒﻴﺎﻧﺎ ت ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺒﻞ إزاﻟ ﺔ اﻟ‬
‫اﻟﻘﻔﻞ ﻗ‬

‫ﺑﻤﺠﺮدﺗﺤﺪﻳ ﺚ ﻗﺎﺋﻤ ﺔ‬‫ﺘﻈﺎر )(داﺧﻠ ًﻴﺎ‪.‬‬


‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ اﻻﻧ‬
‫ﺘﻈﺎر ﻋﻦ ﻃﺮﻳﻖ اﺳ‬
‫ﺘﻬﻠﻚ ﻓ ﻲ ﺣﺎﻟ ﺔ اﻻﻧ‬
‫ﺑﻂ اﻟﻤ ﺴ‬
‫ﺘﻢ إدﺧﺎل ﻣﺆﺷﺮﺗﺮا‬
‫ﺘﻈﺎر ﻓﺎرﻏ ﺔ ‪ ،‬ﻓ ﺴﻴ‬
‫إذا ﻛﺎﻧ ﺖ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺘﻢ إﺧﻄﺎرﺳﻠ ﺴﻠ ﺔ اﻟﺮﺳﺎﺋﻞﺗﻠﻘﺎﺋ ًﻴﺎ‪.‬‬
‫ﺒﻴﺎﻧﺎ ت ‪،‬ﺳﻴ‬
‫ﺑﺎﻟ‬‫ﺘﻈﺎر‬
‫اﻻﻧ‬

‫ﺒ ﺔ ﻟﻨﺎ و ﻫ ﻲ ﻣﻴﺰة ﻋﻈﻴﻤ ﺔ‪.‬‬


‫ﺑﺎﻟﻨ ﺴ‬‫ﺑﺎﻟﻘﻔﻞ‬‫ﺘﻢ‬
‫ﺑﻮرﺗﻬ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬وﺣﺪة اﻟﻄﺎ‬

‫*‬
‫ﺘﻴﺮاد ﻋﺸﻮاﺋ ﻲ )‪4‬ﻗﺎﺋﻤ ﺔ‬
‫ﺘﻴﺮاد )‪3‬اﺳ‬
‫ﺘﻴﺮاد ﺧﻴﻮط اﻟﻤﻌﺎﻟﺠ ﺔ )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫ﺑﻴﻨﻤﺎ ‪(1،100) 8) print‬‬
‫ﺘﻴﺮاد )‪5) def product (q): 6‬‬
‫ﺘﻈﺎر اﻻﺳ‬
‫اﻧ‬
‫ﺒﻨﺪ( ‪9) q.put‬‬
‫ﺘﺞ ‪ ، ":‬اﻟ‬
‫ﺘﺞ اﻟﻤﻨ‬
‫‪")True: 7) item = random.randint‬اﻟﻤﻨ‬
‫)ﻋﻨﺼﺮ(‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪146‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻴﻨﻤﺎ‬
‫‪(q):‬‬ ‫أﻗﻞاﺳ)‪13‬‬
‫ﺘﻬﻠﻚ‬ ‫ﺘﻬﻼك‬
‫ﺘﻬﻠﻚ‬ ‫)‪11‬اﺳ‬
‫)"اﻟﻤ ﺴ‬ ‫‪time.sleep‬‬
‫ﺒﺎﻋ ﺔ‬ ‫)‪(5) 12‬‬
‫ﺘﺤﺪﻳ ﺚ"( )‪15‬ﻃ‬ ‫ﺘﺞ"(‬
‫ﺘﻈﺮ اﻟ‬ ‫ﺴ اﻟﻤﻨ‬
‫ﺘﻬﻠﻚﻳﻨ‬ ‫ﺑﺈﻋﻄﺎء‬
‫)"إﺧﻄﺎر )"اﻟﻤ‬
‫ﺒﺎﻋ ﺔ‬
‫)‪14‬ﻃ‬‫ﺒﺎﻋ ﺔ‬‫)‪10‬ﻃ‬
‫ﺻﺤﻴﺢ‪:‬‬
‫ﺘﺎج ‪،‬‬ ‫اﻟﺨﻴﻂ )‪() 19‬‬
‫)اﻟﻬﺪف =اﻹﻧ‬ ‫‪t1 = Thread‬‬
‫‪"، q.get (target‬‬ ‫‪= consume،‬‬
‫‪()) 16) time.sleep‬‬ ‫‪(5)args‬‬ ‫))‪= (q،‬‬
‫)‪17) 18‬‬ ‫)‪q =20‬‬ ‫اﻟﻌﻨﺼﺮ‪t2 = :‬‬
‫‪queue.Queue‬‬
‫)( ‪args = (q ،)) 21) t1.start () 22) t2.start‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺘﺤﺪﻳ ﺚ‬
‫ﺘﻈﺮ اﻟ‬
‫ﺘﻬﻠﻚﻳﻨ‬
‫اﻟﻤ ﺴ‬
‫ﺘﺞ‪58 :‬‬
‫ﺘﺞ اﻟﻤﻨ‬
‫اﻟﻤﻨ‬
‫ﺘﺞﻳﻌﻄ ﻲ اﻹﺧﻄﺎر‬
‫اﻟﻤﻨ‬
‫ﺘﻬﻠﻚ ﻓ ﻲ اﻟﺼﻨﻒ‪58 :‬‬
‫ﺘﻬﻠﻚ اﻟﻤ ﺴ‬
‫اﻟﻤ ﺴ‬

‫ﺘﻈﺎر‪:‬‬
‫أﻧﻮاع ﻗﻮاﺋﻢ اﻻﻧ‬
‫ﺘﻈﺎر‪.‬‬
‫ﻳﺪﻋﻢ ‪Python 3‬أﻧﻮاع ﻣﻦ ﻗﻮاﺋﻢ اﻻﻧ‬

‫ﺘﻈﺎر ‪FIFO:‬‬
‫)‪1‬ﻗﺎﺋﻤ ﺔ اﻧ‬
‫ﺘﻈﺎر‪.‬‬
‫= ‪q‬ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺘﺨﺮج اﻟﻌﻨﺎﺻﺮ ‪(FIFO-First In First Out).‬‬
‫ﺗﻴ ﺐﺳ‬
‫ﺘﺮ‬‫ﺑﻨﻔ ﺲ اﻟ‬
‫ﺘﻈﺎر ‪ ،‬و‬
‫ﺗﻴ ﺐ ﻧﻀﻊ اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫ﺘﺮاﺿ ﻲ‪ .‬ﻓ ﻲ أيﺗﺮ‬
‫ﻫﺬا ﻫﻮ اﻟ ﺴﻠﻮك اﻻﻓ‬

‫ﺘﻈﺎر )‪(15) 7‬‬


‫ﺘﻴﺮاد ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫)‪1‬اﺳ‬
‫‪(5) 5) q.put (20) 6) q.put‬‬
‫‪() 3) q.put (10) 4) q.put‬‬
‫ﺑﻴﻨﻤﺎ‬
‫‪2) q = queue.Queue‬‬
‫ﻟﻴ ﺲ ‪(): 8) print (q.get () ،‬‬
‫‪q .empty‬اﻟﻨﻬﺎﻳ ﺔ ) " =‬

‫اﻟﺨﺮج‪10 5 20 15 :‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪147‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻈﺎر ‪LIFO:‬‬
‫)‪2‬ﻗﺎﺋﻤ ﺔ اﻧ‬
‫ﺗﻴ ﺐ ﻋﻜ ﺴ ﻲ ﻟﻺدراج )آﺧﺮ ﻣﺎﻳﺮد أوﻻ ًﻳﺨﺮج(‬
‫ﺘﺮ‬‫ﺑ‬‫ﺘﻢ اﻹزاﻟ ﺔ‬
‫ﺘ‬‫ﺳ‬

‫ﺘﻈﺎر )‪(15) 7‬‬


‫ﺘﻴﺮاد ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫)‪1‬اﺳ‬
‫‪(5) 5) q.put (20) 6) q.put‬‬
‫‪() 3) q.put (10) 4) q.put‬‬
‫ﺑﻴﻨﻤﺎ‬
‫‪2) q = queue.LifoQueue‬‬
‫ﻟﻴ ﺲ ‪(): 8) print (q.get () ،‬‬
‫‪q .empty‬اﻟﻨﻬﺎﻳ ﺔ ) " =‬

‫اﻟﺨﺮج‪15 20 5 10 :‬‬

‫ﺘﻈﺎر اﻷوﻟﻮﻳ ﺔ‪:‬‬


‫)‪3‬ﻗﺎﺋﻤ ﺔ اﻧ‬
‫ﺗﻴ ﺐ اﻷوﻟﻮﻳ ﺔ‪.‬‬
‫ﺑﻌﺾﺗﺮ‬‫ﺑﻨﺎ ًء ﻋﲆ‬‫ﺘﻢ إدراج اﻟﻌﻨﺎﺻﺮ‬
‫ﺳﻴ‬

‫ﺘﻈﺎر )‪(15) 7‬‬


‫ﺘﻴﺮاد ﻗﺎﺋﻤ ﺔ اﻻﻧ‬
‫)‪1‬اﺳ‬
‫‪q.put (5) 5) q.put (20) 6) q.put‬‬
‫)‪() 3) q.put (10) 4‬‬
‫‪2) q = queue.PriorityQueue‬‬
‫ﺑﻴﻨﻤﺎ ﻟﻴ ﺲ ‪(): 8) print (q.get () ،‬‬
‫‪q .empty‬اﻟﻨﻬﺎﻳ ﺔ ) " =‬

‫اﻟﺨﺮج‪5 10 15 20 :‬‬

‫ﺗﻨﺎ ﻓ ﻲ ﺷﻜﻞ ‪tuple.‬‬


‫ﺑﻴﺎﻧﺎ‬‫ﺒﻴﺎﻧﺎ ت ﻏﻴﺮ رﻗﻤﻴ ﺔ ‪ ،‬ﻓﻌﻠﻴﻨﺎﺗﻘﺪﻳﻢ‬
‫ﺜﺎل ‪2:‬إذا ﻛﺎﻧ ﺖ اﻟ‬
‫ﻣ‬
‫)س ‪ ،‬ص( س ﻫ ﻲ اﻷوﻟﻮﻳ ﺔ‬

‫‪ y‬ﻫﻮ ﻋﻨﺼﺮﻧﺎ‬

‫ﺘﻈﺎر )‪"DDD")) 7‬‬ ‫ﺘﻴﺮاد ﻗﺎﺋﻤ ﺔ اﻻﻧ‬


‫)‪1‬اﺳ‬
‫‪q.put ((2، "BBB")) 6) q.put ((4،‬‬
‫)‪"AAA")) 4) q.put ((3، "CCC")) 5‬‬
‫‪() 3) q.put ((1،‬‬
‫‪2) q = queue.PriorityQueue‬‬
‫ﺑﻴﻨﻤﺎ ﻟﻴ ﺲ ) " = ‪(q.get () [1]، end‬‬
‫‪q.empty (): 8) print‬‬

‫اﻹﺧﺮاج‪AAA BBB CCC DDD :‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪148‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪام اﻷﻗﻔﺎل‪:‬‬
‫ﺒﺮﻣﺠ ﺔ اﻟﺠﻴﺪة ﻣﻊ اﺳ‬
‫ﻣﻤﺎرﺳﺎ ت اﻟ‬

‫ﺣﺎﻟ ﺔ ‪1:‬‬
‫ﺘﻢ رﻓﻌﻪ وﺳﻮاء‬
‫ﺜﻨﺎء أم ﻟﻢﻳ‬
‫ﺘ‬‫ﺋﻤﺎﺳﻮاءﺗﻢ رﻓﻊ اﻻﺳ‬
‫ﺘﻢﺗﺤﺮﻳﺮه دا ً‬
‫ﺘﻠ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ‪ .‬اﻟﻤﻴﺰة ﻫ ﻲ أن اﻟﻘﻔﻞﺳﻴ‬
‫ﺑ ﺔ ﻛﻮدﺗﺤﺮﻳﺮ اﻷﻗﻔﺎل داﺧﻞ اﻟﻜ‬
‫ﺘﺎ‬
‫ﺑﻜ‬‫ﺑﺸﺪة‬‫ﻳﻮﺻﻰ‬
‫ﺘﻌﺎﻣﻞ ﻣﻌﻪ أم ﻻ‪.‬‬
‫ﺗﻢ اﻟ‬

‫ل =ﺧﻴﻮط‪ .‬ﻗﻔﻞ )(‬


‫)( ‪l.acquire‬‬
‫ﻳﺤﺎول‪:‬‬

‫ﺑﺔ‬
‫إﺟﺮاء اﻟﻌﻤﻠﻴﺎ ت اﻵﻣﻨ ﺔ اﻟﻤﻄﻠﻮ‬
‫أﺧﻴﺮاً‪:‬‬
‫)( ‪l.release‬‬

‫ﺒ ﻲ‪:‬‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬
‫*‬
‫ﺘﻴﺮاد )‪(name): 5) l.acquire () 6‬‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫‪3) l = Lock () 4) def wish‬ﺣﺎول‪7) :‬ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق "( ‪(10): 8) print‬‬
‫ﺒﺎﻋ ﺔ )اﻻﺳﻢ( )‪11‬‬
‫ﻣ ﺴﺎء اﻟﺨﻴﺮ ‪"، :‬اﻟﻨﻬﺎﻳ ﺔ )‪=") 9‬وﻗ ﺖ اﻟﻨﻮم )‪(2) 10‬ﻃ‬
‫ﺒ ﺔ ‪ ،‬أرﻏ ﺲ = ‪t2‬‬
‫أﺧﻴ ﺮًا‪12) :‬اﻹﺻﺪار = ‪() 13) 14) t1‬اﻟﺨﻴﻂ )اﻟﻬﺪف =اﻟﺮﻏ‬
‫"‪= ("Yuvraj‬‬
‫))‪( ) 18) ،‬‬ ‫)‪16) t3()=19‬‬
‫‪t2.start‬‬ ‫ﺒﺔ ‪،‬‬‫)اﻟﻬﺪف =اﻟﺮﻏ‬
‫‪t3.start‬‬ ‫اﻟﺨﻴﻂ‬
‫)اﻟﻬﺪف= =اﻟﺮﻏ‬
‫ﺒ ﺔ ‪() ،‬‬ ‫))‪( "Dhoni"،‬‬ ‫)‪15‬‬
‫‪args‬اﻟﺨﻴﻂ‬
‫‪args = ("Kohli" ،)) 17) t1.start‬‬

‫اﻟﺤﺎﻟ ﺔ ‪2:‬‬
‫ﺘﺤﻜﻢ‬
‫ﺑﻤﺠﺮد وﺻﻮل ﻋﻨﺼﺮ اﻟ‬‫ﺘﻢﺗﺤﺮﻳﺮهﺗﻠﻘﺎﺋ ًﻴﺎ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟـ ‪ with statement‬ﻫ ﻲ أن اﻟﻘﻔﻞﺳﻴ‬
‫ﺒﻴﺎن‪ .‬اﻟﻤﻴﺰة اﻟﺮ‬
‫ﺘﺨﺪام اﻟ‬
‫ﺑﺎﺳ‬‫ﺑﺎﻟﺤﺼﻮل ﻋﲆ اﻟﻘﻔﻞ‬‫ﺑﺸﺪة‬‫•ﻳﻮﺻﻰ‬
‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ‪.‬‬‫ﺑﺎﻹﻓﺮاج‬‫ﺒﻴﻦ‬
‫ﺘﻠ ﺔ وﻟ ﺴﻨﺎ ﻣﻄﺎﻟ‬
‫إﱃ ﻧﻬﺎﻳ ﺔ اﻟﻜ‬

‫ﺑﻴﺎن ﻟﻠﻤﻠﻔﺎ ت‪.‬‬‫ﺘﺨﺪام ﻣﻊ‬


‫ﺒﻂ ﻧﻔ ﺲ اﺳ‬
‫ﺑﺎﻟﻀ‬‫• ﻫﺬا ﻫﻮ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪149‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﺎل ﻋﻦ ﻣﻠﻒ‪:‬‬
‫ﻣ‬
‫ﺜﻞ ‪f:‬‬
‫ﻣﻊ )"‪open ("demo.txt"، "w‬ﻣ‬
‫ﺒﺎ ‪("...‬‬
‫‪")f.write‬ﻣﺮﺣ ً‬

‫ﺜﺎل ﻋﲆ اﻟﻘﻔﻞ‪:‬‬
‫ﻣ‬
‫ﻗﻔﻞ =ﺧﻴﻮط‪.‬‬
‫ﻣﻊ ﻗﻔﻞ‪:‬‬

‫ﺑﺔ‬
‫إﺟﺮاء اﻟﻌﻤﻠﻴﺎ ت اﻵﻣﻨ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﺘﻢﺗﺤﺮﻳﺮ اﻟﻘﻔﻞﺗﻠﻘﺎﺋ ًﻴﺎ‬
‫ﺳﻴ‬

‫ﺒ ﻲ‪:‬‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫*‬
‫ﺘﻴﺮاد )‪3‬اﻟﻘﻔﻞ =اﻟﻘﻔﻞ )‪4‬‬
‫ﺘﻴﺮاد اﻟﺨﻴﻮط )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬ﻣﻦ اﺳ‬
‫ﺘﻌﺮﻳﻒ )اﻻﺳﻢ(‪5) :‬ﻣﻊ اﻟﻘﻔﻞ‪6) :‬ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق )‪7‬‬
‫ﺒ ﺔ اﻟ‬
‫)(رﻏ‬
‫ﺒﺎﻋ ﺔ ‪("Good Evening:" ،‬اﻟﻨﻬﺎﻳ ﺔ = ‪12) t3‬‬
‫‪(10):‬ﻃ‬
‫))‪11) t2 = Thread (target = wish، args = ( "Yuvraj"،‬‬
‫))‪10) t1 = Thread (target = wish، args = ("Dhoni"،‬‬
‫)اﻟﻬﺪف =‬ ‫)‪= ()'')14‬اﻟﺨﻴﻂ‬
‫‪13) t1.start‬‬ ‫‪8) time.sleep‬‬ ‫‪(2) t3.start‬‬
‫)‪t2.start () 15‬‬ ‫)‪9) print ()(name‬‬
‫ﺒﺔ ‪،‬‬
‫اﻟﺮﻏ‬
‫))‪args = ("Kohli"،‬‬

‫ﺒﻴﺎن ﻟﻠﺤﺼﻮل ﻋﲆﺗﺄﻣﻴﻦ‬


‫ﺘﺨﺪام ﻣﻊ اﻟ‬
‫س( ﻣﺎ ﻫ ﻲ ﻣﻴﺰة اﺳ‬
‫ﺧﻴﻮط؟‬
‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ‪.‬‬‫ﺑﺎﻹﻓﺮاج ﻋﻨﻪ‬‫ﺒﻴﻦ‬
‫ﺘﻠ ﺔ وﻟ ﺴﻨﺎ ﻣﻄﺎﻟ‬
‫ﺘﺤﻜﻢ إﱃ ﻧﻬﺎﻳ ﺔ اﻟﻜ‬
‫ﺑﻤﺠﺮد وﺻﻮل ﻋﻨﺼﺮ اﻟ‬‫ﺘﻢﺗﺤﺮﻳﺮ اﻟﻘﻔﻞﺗﻠﻘﺎﺋ ًﻴﺎ‬
‫ﺳﻴ‬

‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺒﺎرة ﻓ ﻲ ‪multithreading‬ﻟﻠﺤﺎﻻ ت اﻟ‬
‫ﺘﺨﺪاﻣﻬﺎ ﻣﻊ اﻟﻌ‬
‫ﻣﻼﺣﻈ ﺔ‪:‬ﻳﻤﻜﻨﻨﺎ اﺳ‬

‫)‪1‬ﻗﻔﻞ‬
‫‪2) RLock‬‬
‫)‪3‬ﺳﻴﻤﺎﻓﻮر‬
‫)‪4‬اﻟﺸﺮط‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫‪150‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻮن‬
‫ﺑﺎﻳ‬
‫ﺒﻴﺎﻧﺎ ت‬
‫ﻗﺎﻋﺪة اﻟ‬
‫ﺑﺮﻣﺠ ﺔ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪151‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺰﻳﻦ‬
‫ﻣﻨﺎﻃﻖ اﻟ‬
‫ﺗﻴﺮ وﻣﻌﻠﻮﻣﺎ ت اﻟﻤﻜﺎﻟﻤﺎ ت وﻣﺎ إﱃ ذﻟﻚ‪.‬‬
‫ﺜﻞ ﻣﻌﻠﻮﻣﺎ ت اﻟﻌﻤﻼء وﻣﻌﻠﻮﻣﺎ ت اﻟﻔﻮا‬
‫ﺗﻨﺎ ﻣ‬
‫ﺑﻴﺎﻧﺎ‬‫ﺒﻨﺎﺗﺨﺰﻳﻦ‬
‫ﺗﻨﺎ ‪ ،‬ﻓﻘﺪ ﻃﻠ‬
‫ﺒﻴﻘﺎ‬
‫ﻛﺠﺰء ﻣﻦﺗﻄ‬

‫ﺘﺨﺰﻳﻦ‪.‬‬
‫ﺒﻨﺎ ﻣﻨﺎﻃﻖﺗﺨﺰﻳﻦ‪ .‬ﻫﻨﺎك ﻧﻮﻋﺎن ﻣﻦ ﻣﻨﺎﻃﻖ اﻟ‬
‫ﺒﻴﺎﻧﺎ ت ‪ ،‬ﻃﻠ‬
‫ﺘﺨﺰﻳﻦ ﻫﺬه اﻟ‬
‫ﻟ‬

‫ﺘﺔ‬
‫ﺘﺨﺰﻳﻦ اﻟﻤﺆﻗ‬
‫)‪1‬ﻣﻨﺎﻃﻖ اﻟ‬
‫ﺘﺨﺰﻳﻦ اﻟﺪاﺋﻤ ﺔ‬
‫)‪2‬ﻣﻨﺎﻃﻖ اﻟ‬

‫ﺘ ﺔ‪:‬‬
‫ﺘﺨﺰﻳﻦ اﻟﻤﺆﻗ‬
‫)‪1‬ﻣﻨﺎﻃﻖ اﻟ‬
‫ﺘًﺎ‪.‬‬
‫ﺒﻴﺎﻧﺎ ت ﻣﺆﻗ‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟ‬
‫• ﻫﺬه ﻫ ﻲ ﻣﻨﺎﻃﻖ اﻟﺬاﻛﺮة ﺣﻴ ﺚﺳﻴ‬
‫ﺜﻞ ‪List‬و ‪Tuple‬و ‪Dictionary.‬‬
‫ﺜﺎل‪ :‬ﻛﺎﺋﻨﺎ ت ‪Python‬ﻣ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺘﻔﻘﺪ اﻟ‬
‫ﺘﻢﺗﺪﻣﻴﺮ ﻫﺬه اﻟﻜﺎﺋﻨﺎ تﺗﻠﻘﺎﺋ ًﻴﺎ وﺳ‬
‫ﺗﻨﻔﻴﺬه ‪،‬ﺳﻴ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬‬‫ﺑﻤﺠﺮد أنﻳﻜﻤﻞ‬
‫•‬

‫ﺑﺸﻜﻞ داﺋﻢ‪.‬‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺘ ﺔ‪ .‬ﻫﻨﺎﻳﻤﻜﻨﻨﺎﺗﺨﺰﻳﻦ اﻟ‬
‫ﺑ‬‫ﺜﺎ‬
‫ﺘﺨﺰﻳﻦ اﻟ‬
‫ﺑﺎﺳﻢ ﻣﻨﺎﻃﻖ اﻟ‬ ‫ُﻌﺮف أ ً‬
‫ﻳﻀﺎ‬ ‫ﺗ‬
‫ﺘﺨﺰﻳﻦ اﻟﺪاﺋﻤ ﺔ‪• :‬‬
‫)‪2‬ﻣﻨﺎﻃﻖ اﻟ‬

‫ﺒﻴﺎﻧﺎ ت اﻟﻀﺨﻤ ﺔ وﻣﺎ إﱃ ذﻟﻚ‬


‫ﺗﻘﻨﻴﺎ ت اﻟ‬
‫ﺒﻴﺎﻧﺎ ت و‬
‫ﺘﻮدﻋﺎ ت اﻟ‬
‫ﺒﻴﺎﻧﺎ ت وﻣ ﺴ‬
‫ﺜﺎل‪ :‬أﻧﻈﻤ ﺔ اﻟﻤﻠﻔﺎ ت وﻗﻮاﻋﺪ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫أﻧﻈﻤ ﺔ اﻟﻤﻠﻔﺎ ت‪:‬‬


‫ﺘﺨﺰﻳﻦ ﻛﻤﻴ ﺔ أﻗﻞ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬
‫ﺘﺸﻐﻴﻞ اﻟﻤﺤﻠ ﻲ‪ .‬أﻧﻈﻤ ﺔ اﻟﻤﻠﻔﺎ ت ﻫ ﻲ اﻷﻧ ﺴ ﺐ ﻟ‬
‫ﺑﻮاﺳﻄ ﺔ ﻧﻈﺎم اﻟ‬‫ﻳﻤﻜﻦﺗﻮﻓﻴﺮ أﻧﻈﻤ ﺔ اﻟﻤﻠﻔﺎ ت‬

‫ﻣﺤﺪدا ت‪:‬‬
‫)‪1‬ﻻﻳﻤﻜﻨﻨﺎﺗﺨﺰﻳﻦ ﻛﻤﻴ ﺔ ﺿﺨﻤ ﺔ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬
‫ﺒﺢ اﻟﻌﻤﻠﻴﺎ ت ﻣﻌﻘﺪة ﻟﻠﻐﺎﻳ ﺔ‪.‬‬
‫ﺘﺼ‬‫ﺘﺎﻟ ﻲﺳ‬
‫ﺑﺎﻟ‬
‫ﺘﻌﻼم و‬
‫)‪2‬ﻻﻳﻮﺟﺪ دﻋﻢ ﻟﻠﻐ ﺔ اﻻﺳ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫)‪3‬ﻻﻳﻮﺟﺪ أﻣﺎن ﻟﻠ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺛﻢ ﻗﺪﺗﻜﻮن ﻫﻨﺎك ﻓﺮﺻ ﺔ ﻟﻤﺸﺎﻛﻞ ﻋﺪمﺗﻨﺎﺳﻖ اﻟ‬‫ﺒﻴﺎﻧﺎ ت‪ .‬وﻣﻦ‬
‫)‪4‬ﻻﺗﻮﺟﺪ آﻟﻴ ﺔ ﻟﻤﻨﻊﺗﻜﺮار اﻟ‬

‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺘﻐﻠ ﺐ ﻋﲆ ﻣﺸﺎﻛﻞ أﻧﻈﻤ ﺔ اﻟﻤﻠﻔﺎ ت اﻟﻤﺬﻛﻮرة أﻋﻼه ‪،‬ﻳﺠ ﺐ أن ﻧﺬ ﻫ ﺐ إﱃ ﻗﻮاﻋﺪ اﻟ‬
‫ﻟﻠ‬

‫ﺑﻴﺎﻧﺎ ت‪:‬‬‫ﻗﻮاﻋﺪ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫)‪1‬ﻳﻤﻜﻨﻨﺎﺗﺨﺰﻳﻦ ﻛﻤﻴ ﺔ ﻫﺎﺋﻠ ﺔ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻓ ﻲ ﻗﻮاﻋﺪ اﻟ‬
‫ﺑﺎﻟﻐ ﺔ‪.‬‬‫ﺑ ﺴﻬﻮﻟ ﺔ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺘﺎﻟ ﻲﻳﻤﻜﻨﻨﺎ إﺟﺮاء ﻋﻤﻠﻴﺎ ت ﻗﺎﻋﺪة اﻟ‬
‫ﺑﺎﻟ‬
‫ﺑﻴﺎﻧﺎ ت و‬‫ﺘﺎح ﻟﻜﻞ ﻗﺎﻋﺪة‬
‫ﺘﻌﻼم ﻣ‬
‫)‪2‬دﻋﻢ ﻟﻐ ﺔ اﻻﺳ‬

‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺘﻢﺗﺄﻣﻴﻦ اﻟ‬
‫ﺛﻢﻳ‬‫ﺑﻴﻦ‪ .‬وﻣﻦ‬
‫ﺒﺎرﻳﻴﻦ ﻣﻄﻠﻮ‬
‫ﺘﺨﺪم و ‪pwd‬اﻹﺟ‬
‫ﺒﻴﺎﻧﺎ ت ‪،‬ﻳﺠ ﺐ أنﻳﻜﻮن اﺳﻢ اﻟﻤ ﺴ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻗﺎﻋﺪة اﻟ‬
‫)‪3‬ﻟﻠﻮﺻﻮل إﱃ اﻟ‬

‫ﺒﻴﺎﻧﺎ تﺗﻘﻨﻴﺎ ت‬
‫ﺒﻊ ﻣ ﺴﺆول ﻗﺎﻋﺪة اﻟ‬
‫ﺘ‬‫ﺒﻴﺎﻧﺎ ت ‪،‬ﻳ‬
‫ﺛﻨﺎءﺗﻄﻮﻳﺮ ﻣﺨﻄﻄﺎ ت ﺟﺪول ﻗﺎﻋﺪة اﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﺪاﺧﻠﻴ ﺔ ﻓ ﻲ ﺷﻜﻞ ﺟﺪاول‪ .‬أ‬
‫ﺑﻴﺎﻧﺎ ت ﻗﺎﻋﺪة اﻟ‬‫ﺘﻢﺗﺨﺰﻳﻦ‬
‫)‪4‬ﺳﻴ‬
‫ﺛﻢ ﻻﺗﻮﺟﺪ‬‫ﺒﻴﺎﻧﺎ ت‪ .‬وﻣﻦ‬
‫ﺘ ﻲﺗﻤﻨﻊﺗﻜﺮار اﻟ‬
‫ﺘﺎح اﻷﺳﺎﺳ ﻲ وﻣﺎ إﱃ ذﻟﻚ واﻟ‬
‫ﺗﻴﺢ اﻟﻔﺮﻳﺪة وﻗﻴﻮد اﻟﻤﻔ‬
‫ﺜﻞ ﻗﻴﻮد اﻟﻤﻔﺎ‬
‫ﺘﻠﻔ ﺔ ﻣ‬
‫ﺘﻠﻔ ﺔ وﻳﻤﻜﻨﻪﺗﻨﻔﻴﺬ ﻗﻴﻮد ﻣﺨ‬
‫ﺗ ﺴﻮﻳ ﺔ ﻣﺨ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﻓﺮﺻ ﺔ ﻟﻤﺸﺎﻛﻞ ﻋﺪمﺗﻨﺎﺳﻖ اﻟ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪152‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴﺎﻧﺎ ت‪:‬‬
‫ﺣﺪود ﻗﻮاﻋﺪ اﻟ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺑﺎﻳ ﺖ ﻣﻦ اﻟ‬
‫ﺜﻞﺗﻴﺮا‬
‫ﺒﻴﺎﻧﺎ ت ﻋﲆ ﻛﻤﻴ ﺔ ﺿﺨﻤ ﺔ ﺟﺪًا ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻣ‬
‫ﺘﻮي ﻗﺎﻋﺪة اﻟ‬
‫)‪1‬ﻻﻳﻤﻜﻦ أنﺗﺤ‬
‫ﺒﻪ‬
‫ﺒﻴﺎﻧﺎ ت ﺷ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻌﻼﺋﻘﻴ ﺔ( وﻻﻳﻤﻜﻨﻬﺎﺗﻘﺪﻳﻢ اﻟﺪﻋﻢ ﻟﻠ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﺠﺪوﻟﻴ ﺔ أو اﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻬﻴﻜﻠ ﺔ )اﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﺪﻋﻢ ﻓﻘﻂ ﻟﻠ‬
‫)‪2‬ﻳﻤﻜﻦ أنﺗﻮﻓﺮ ﻗﺎﻋﺪة اﻟ‬
‫ﺜﻞ ﻣﻠﻔﺎ ت اﻟﻔﻴﺪﻳﻮ وﻣﻠﻔﺎ ت اﻟﺼﻮ ت واﻟﺼﻮر وﻣﺎ إﱃ ذﻟﻚ(‬
‫ﺒﻴﺎﻧﺎ ت ﻏﻴﺮ اﻟﻤﻨﻈﻤ ﺔ )ﻣ‬
‫ﺜﻞ ﻣﻠﻔﺎ ت )‪XML‬واﻟ‬
‫اﻟﻤﻨﻈﻤ ﺔ )ﻣ‬

‫ﺒﻴﺎﻧﺎ ت وﻣﺎ إﱃ‬


‫ﺘﻮدﻋﺎ ت اﻟ‬
‫ﺒﻴﺮة وﻣ ﺴ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻜ‬
‫ﺜﻞﺗﻘﻨﻴﺎ ت اﻟ‬
‫ﺘﻘﺪﻣ ﺔ ﻣ‬
‫ﺘﺨﺰﻳﻦ اﻟﻤ‬
‫ﺘﻘﻞ إﱃ اﻟﻤﺰﻳﺪ ﻣﻦ ﻣﻨﺎﻃﻖ اﻟ‬
‫ﺘﻐﻠ ﺐ ﻋﲆ ﻫﺬه اﻟﻤﺸﻜﻼ ت ‪،‬ﻳﺠ ﺐ أن ﻧﻨ‬
‫ﻟﻠ‬
‫ذﻟﻚ‪.‬‬

‫ﺜﻮن‪:‬‬
‫ﺑﺎﻳ‬‫ﺑﻴﺎﻧﺎ ت‬‫ﺑﺮﻣﺠ ﺔ ﻗﺎﻋﺪة‬
‫ﺑـ‬‫ﺗﺼﺎل‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ اﻻ‬
‫ﺒﺮﻣﺠ ﺔ ‪،‬ﻳ‬
‫ﺒﺎ ت اﻟ‬
‫ﺘﻄﻠ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن ﻛﺠﺰء ﻣﻦ ﻣ‬‫•ﻓ ﻲ‬
‫ﺘﻴﺎر‬
‫ﺒﻴﺎﻧﺎ ت واﺧ‬
‫ﺒﻴﺎﻧﺎ ت وﺣﺬف اﻟ‬
‫ﺗﺤﺪﻳ ﺚ اﻟ‬
‫ﺒﻴﺎﻧﺎ ت و‬
‫ﺜﻞ إﻧﺸﺎء اﻟﺠﺪاول وإدﺧﺎل اﻟ‬
‫ﺒﻴﺎﻧﺎ ت وﻋﻠﻴﻨﺎ إﺟﺮاء اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻌﻤﻠﻴﺎ ت ﻣ‬
‫ﻗﺎﻋﺪة اﻟ‬
‫ﺒﻴﺎﻧﺎ ت وﻣﺎ إﱃ ذﻟﻚ‪.‬‬
‫اﻟ‬
‫ﺘﺨﺪام ‪Python‬ﻹرﺳﺎﻟﻬﺎ‬
‫ﺒﻴﺎﻧﺎ ت وﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﺤﺪ ث إﱃ ﻗﺎﻋﺪة اﻟ‬
‫ﺘﺨﺪام ﻟﻐ ﺔ ‪SQL‬ﻟﻠ‬
‫•ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫أواﻣﺮ ‪SQL‬ﻟﻘﺎﻋﺪة اﻟ‬

‫ﺜﻞ ‪Oracle‬و ‪MySql‬و ‪SqlServer‬و‬


‫ﺒﻴﺎﻧﺎ ت ﻣ‬
‫ﺛﻨﺎﻳﺎه ﻋﻮاﻣﻞ ﻟﻠﻌﺪﻳﺪ ﻣﻦ ﻗﻮاﻋﺪ اﻟ‬‫دﻋﻤﺎﻳﺤﻤﻞ ﻓ ﻲ‬
‫ﺗﻮﻓﺮ ‪ً Python‬‬
‫•‬
‫‪GadFly‬و ‪sqlite‬وﻣﺎ إﱃ ذﻟﻚ‪.‬‬
‫ﺑﻴﺎﻧﺎ ت‪.‬‬‫•ﻟﺪى ‪Python‬وﺣﺪة ﻣﻨﻔﺼﻠ ﺔ ﻟﻜﻞ ﻗﺎﻋﺪة‬

‫ﺑﻴﺎﻧﺎ ت ‪Oracle‬‬‫ﺘﻮاﺻﻞ ﻣﻊ ﻗﺎﻋﺪة‬


‫ﺜﺎل‪ :‬وﺣﺪة ‪cx_Oralce‬ﻟﻠ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﻮاﺻﻞ ﻣﻊ ‪Microsoft Sql Server‬‬
‫وﺣﺪة ‪pymssql‬ﻟﻠ‬

‫ﺜﻮن‪:‬‬
‫ﺑﺎﻳ‬‫ﺑﻴﺎﻧﺎ ت‬‫ﺒﺮﻣﺠ ﺔ ﻗﺎﻋﺪة‬
‫اﻟﺨﻄﻮا ت اﻟﻘﻴﺎﺳﻴ ﺔ ﻟ‬
‫ﺑﻴﺎﻧﺎ ت ﻣﺤﺪدة‬‫ﺘﻴﺮاد وﺣﺪة ﻗﺎﻋﺪة‬
‫)‪1‬اﺳ‬

‫ﺘﻴﺮاد ‪cx_Oracle‬‬
‫ﺜﺎل‪ :‬اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬وﻗﺎﻋﺪة اﻟ‬‫ﺑﻴﻦ‬‫ﺗﺼﺎل‬
‫)‪2‬إﻧﺸﺎء ا‬
‫ﺘﺨﺪام وﻇﻴﻔ ﺔ )( ‪connect‬ﻟﻠﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ‪.‬‬
‫ﺑﺎﺳ‬‫ﺗﺼﺎل ﻫﺬا‬
‫ﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ اﻻ‬
‫ﺒﻴﺎﻧﺎ ت(‬
‫‪)con = cx_Oracle.connect‬ﻣﻌﻠﻮﻣﺎ ت ﻗﺎﻋﺪة اﻟ‬

‫ﺜﺎل‪con = cx_Oracle.connect ('scott / tiger @ localhost') :‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺘ ﻲ ﻟﻴ ﺴ ﺖﺳﻮى ﻛﺎﺋﻦ اﻟﻤﺆﺷﺮ‪.‬ﻳﻤﻜﻨﻨﺎ‬


‫ﺑﻌﺾ اﻟﻌﻨﺎﺻﺮ اﻟﺨﺎﺻ ﺔ ‪ ،‬واﻟ‬‫ﺘﺎﺋﺞ ‪ ،‬ﻫﻨﺎك ﺣﺎﺟ ﺔ إﱃ‬
‫ﺑﻨﺎ وﻟﻠﺤﺼﻮل ﻋﲆ اﻟﻨ‬‫ﺘﻌﻼﻣﺎ ت ‪sql‬اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻨﻔﻴﺬ اﺳ‬
‫)‪3‬ﻟ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻟﻤﺆﺷﺮ ‪().‬‬
‫ﺑﺎﺳ‬‫إﻧﺸﺎء ﻛﺎﺋﻦ اﻟﻤﺆﺷﺮ‬
‫اﻟﻤﺆﺷﺮ )( ‪= con.cursor‬‬

‫ﺘﺎﻟﻴ ﺔ‬
‫ﺘﺨﺪام اﻟﻄﺮق اﻟ‬
‫ﺘﺨﺪام ﻛﺎﺋﻦ اﻟﻤﺆﺷﺮ‪ .‬ﻟﻬﺬاﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺑﺎﺳ‬
‫ﺘﻌﻼﻣﺎ ت ‪SQL‬‬
‫ﺗﻨﻔﻴﺬ اﺳ‬
‫)‪4‬‬

‫ﺘﻌﻼم ‪SQL‬ﻣﻔﺮد‬
‫ﺘﻨﻔﻴﺬ اﺳ‬
‫)‪(sqlquery‬ﻟ‬ ‫ﺗﻨﻔﻴﺬ‬

‫ﺑﻨﺼﻒ‬‫ﺘﻌﻼﻣﺎ ت ‪SQL‬ﻣﻔﺼﻮﻟ ﺔ‬
‫ﺘﻨﻔﻴﺬﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﺳ‬
‫)‪ executescript (sqlqueries‬ﻟ‬
‫اﻟﻘﻮﻟﻮن "؛"‬
‫ﺘﻌﻼم ذي ﻣﻌﻠﻤﺎ ت‪.‬‬
‫ﺘﻨﻔﻴﺬ اﺳ‬
‫)(ﻟ‬ ‫ﺗﻨﻔﻴﺬي‬

‫ﺜﺎل‪")cursor.execute :‬ﺣﺪد *ﻣﻦ اﻟﻤﻮﻇﻔﻴﻦ"(‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪153‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﺤﺪﻳ ﺚ |ﺣﺬف(‬
‫ﺘﻌﻼﻣﺎ ت ‪)DML‬إدراج |‬
‫ﺗﻨﺎ ﻓ ﻲ ﺣﺎﻟ ﺔ اﺳ‬
‫ﺒﺎ‬
‫ﺘﻄﻠ‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻣ‬‫ﺘﻐﻴﻴﺮا ت‬
‫ﺘﺮاﺟﻊ ﻋﻦ اﻟ‬
‫ﺘﺰام أو اﻟ‬
‫)‪5‬اﻻﻟ‬

‫ﺘﺔ‬
‫ﺘﻐﻴﻴﺮا ت اﻟﻤﺆﻗ‬
‫ﺘﺮاﺟﻊ ﻋﻦ ﺟﻤﻴﻊ اﻟ‬
‫)(ﻳ‬ ‫ﺒﻴﺎﻧﺎ ت‬
‫ﺘﺮاﺟﻊ ﻋﻦ ﻗﺎﻋﺪة اﻟ‬
‫ﺘﻐﻴﻴﺮا ت ﻋﲆ اﻟ‬
‫)(ﻳﺤﻔﻆ اﻟ‬ ‫ﺘﺰام‬
‫اﻻﻟ‬

‫ﺘﻌﻼﻣﺎ ت‬
‫ﺘﻴﺠ ﺔ ﻣﻦ ﻛﺎﺋﻦ اﻟﻤﺆﺷﺮ ﻓ ﻲ ﺣﺎﻟ ﺔﺗﺤﺪﻳﺪ اﻻﺳ‬
‫ﺑﺈﺣﻀﺎر اﻟﻨ‬‫)‪6‬ﻗﻢ‬
‫)( ‪fetchall‬ﻟﺠﻠ ﺐ ﻛﻞ اﻟﺼﻔﻮف وإرﺟﺎع ﻗﺎﺋﻤ ﺔ‬ ‫)( ‪fetchone‬ﻟﺠﻠ ﺐ ﺻﻒ واﺣﺪ ﻓﻘﻂ‬
‫)‪fecthmany (n‬ﻟﺠﻠ ﺐ أول ‪n‬ﻣﻦ اﻟﺼﻔﻮف‬ ‫اﻟﺼﻔﻮف‬

‫ﺜﺎل )‪() print (data‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫‪1: data = cursor.fetchone‬‬

‫ﺜﺎل )( ‪= cursor.fetchall‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺒﻴﺎﻧﺎ ت‪print (row) :‬‬
‫‪2: data‬ﻟﻠﺼﻒ ﻓ ﻲ اﻟ‬

‫)‪7‬أﻏﻠﻖ اﻟﻤﻮارد‬
‫ﺘﺨﺪام ﻃﺮق اﻹﻏﻼق )( ‪(). cursor.close () con.close‬‬
‫ﺑﺎﺳ‬‫ﺘﺤﻬﺎ‬
‫ﺗﻴ ﺐ اﻟﻌﻜ ﺴ ﻲ ﻟﻔ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺑﺈﻏﻼق اﻟﻤﻮارد‬‫ﺑﺸﺪة‬‫ﺗﻨﺎ ‪،‬ﻳﻮﺻﻰ‬
‫ﺘﻬﺎء ﻣﻦ ﻋﻤﻠﻴﺎ‬
‫ﺑﻌﺪ اﻻﻧ‬

‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬‫ﺑﻴﺎﻧﺎ ت‬‫ﺒﺮﻣﺠ ﺔ ﻗﺎﻋﺪة‬
‫ﺘﺨﺪاﻣﻬﺎ ﻟ‬
‫ﺘ ﻲﻳﻤﻜﻦ اﺳ‬
‫ﺑﺠﻤﻴﻊ اﻟﻄﺮق اﻟﻤﻬﻤ ﺔ اﻟ‬‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓﻴﻤﺎﻳﻠ ﻲ ﻗﺎﺋﻤ ﺔ‬

‫)( ‪connect‬‬ ‫)( ‪cursor‬‬

‫)( ‪executescript‬‬ ‫ﺗﻨﻔﻴﺬ‬

‫)(‬ ‫ﺘﺰام‬
‫)(اﻻﻟ‬ ‫ﺗﻨﻔﻴﺬي‬
‫)(‬

‫‪fetch‬‬ ‫ﺘﺮاﺟﻊ )( ‪close‬‬


‫اﻟ‬

‫)(‬ ‫)‪fetchmany (n‬‬

‫)( ‪fetchone‬‬ ‫‪fetchall‬‬

‫)(‬

‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺒ ﺔ ﻟﺠﻤﻴﻊ ﻗﻮاﻋﺪ اﻟ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺑﻴﺎﻧﺎ ت وﻧﻔ ﺲ اﻟﺸ ﻲء‬‫ﺑﻴﺎﻧﺎ ت إﱃ ﻗﺎﻋﺪة‬‫ﺘﻢﺗﻐﻴﻴﺮ ﻫﺬه اﻷﺳﺎﻟﻴ ﺐ ﻣﻦ ﻗﺎﻋﺪة‬
‫ﻟﻦﻳ‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪154‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻌﻤﻞ ﻣﻊ ‪Oracle Database:‬‬


‫ﺘﺮﺟﻤﻴﻦﺗﺮﺟﻤ ﺔ ﻣﻜﺎﻟﻤﺎ ت ‪Python‬إﱃ ﻣﻜﺎﻟﻤﺎ ت ﺧﺎﺻ ﺔ‬
‫ﺑﻌﺾ اﻟﻤ‬‫ُﻄﻠ ﺐ ﻣﻦ‬
‫ﺑﻴﺎﻧﺎ ت ‪،‬ﻳﺠ ﺐ أنﻳ‬‫ﺘﻮاﺻﻞ ﻣﻊ أي ﻗﺎﻋﺪة‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬إذا أردﻧﺎ اﻟ‬‫ﻣﻦ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺸﻐﻴﻞ ‪ /‬ﻣﻮﺻﻞ‪.‬‬‫ﺘﺮﺟﻢ ﻟﻴ ﺲﺳﻮى‬
‫ﺒﻴﺎﻧﺎ ت إﱃ ﻣﻜﺎﻟﻤﺎ ت ‪ Python.‬ﻫﺬا اﻟﻤ‬
‫ﺑﻘﺎﻋﺪة اﻟ‬‫ﺒﻴﺎﻧﺎ ت وﻣﻜﺎﻟﻤﺎ ت ﺧﺎﺻ ﺔ‬
‫ﺑﻘﺎﻋﺪة اﻟ‬

‫ﺑﻴﺎﻧ ﻲ‬‫رﺳﻢ‬

‫ﺘﻴﺢ اﻟﻮﺻﻮل إﱃ‬


‫ﺗ‬‫ﺘﺪاد ‪Python‬‬
‫ﺘﺸﻐﻴﻞ اﻟﻤﻄﻠﻮ ب ﻫﻮ ‪ cx_Oracle. cx_Oracle‬ﻫ ﻲ وﺣﺪة اﻣ‬
‫ﺑﺮﻧﺎﻣﺞ اﻟ‬‫ﺑﻴﺎﻧﺎ ت ‪Oracle ،‬اﺳﻢ‬‫ﺒ ﺔ ﻟﻘﺎﻋﺪة‬
‫ﺑﺎﻟﻨ ﺴ‬
‫ﺜﻞ ‪9،10،11‬و ‪12.‬‬
‫ﺑﻴﺎﻧﺎ ت ‪Oracle‬ﻣ‬‫ﺘﺨﺪاﻣﻬﺎ ﻟﻜﻞ ﻣﻦ ‪Python2‬و ‪Python3.‬ﻳﻤﻜﻨﻪ اﻟﻌﻤﻞ ﻣﻊ أي إﺻﺪار ﻣﻦ ﻗﺎﻋﺪة‬
‫‪Oracle Database ،‬وﻳﻤﻜﻦ اﺳ‬

‫ﺒﻴ ﺖ ‪cx_Oracle:‬‬
‫ﺜ‬‫ﺗ‬
‫ﺘﺎﻟ ﻲ‬
‫ﺘﻨﻔﻴﺬ اﻷﻣﺮ اﻟ‬
‫ﺑ‬‫ﻣﻦ ﻣﻮﺟﻪ اﻷواﻣﺮ اﻟﻌﺎدي )وﻟﻜﻦ ﻟﻴ ﺲ ﻣﻦ وﺣﺪةﺗﺤﻜﻢ ‪Python) ،‬ﻗﻢ‬

‫ﺒﻴ ﺖ ﻧﻘﻄ ﺔ ‪cx_Oracle‬‬


‫ﺜ‬‫ﺗ‬‫>‪D: \ python_classes‬‬

‫ﺟﻤﻊ ‪cx_Oracle‬‬
‫ﺗﺤﻤﻴﻞ )‪cx_Oracle-6.0.2-cp36-cp36m-win32.whl (100kB‬‬
‫ﺛﺎﻧﻴ ﺔ‬‫ﺑﺎﻳ ﺖ ‪/‬‬‫ﺑﺎﻳ ﺖ ‪256‬ﻛﻴﻠﻮ‬‫‪100٪ | ----------- | 102‬ﻛﻴﻠﻮ‬

‫ﺒﻴ ﺖ اﻟﺤﺰم اﻟﻤﺠﻤﻌ ﺔ‪cx-Oracle :‬‬


‫ﺜ‬‫ﺗ‬
‫ﺑﻨﺠﺎح‬
‫ﺒﻴ ﺖ ‪cx-Oracle-6.0.2‬‬
‫ﺜ‬‫ﺗﻢﺗ‬

‫ﺒﻴ ﺖ‪:‬‬
‫ﺜ‬‫ﺘ‬‫ﺒﺎر اﻟ‬
‫ﺘ‬‫ﻛﻴﻔﻴ ﺔ اﺧ‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺘﻨﻔﻴﺬ اﻷﻣﺮ اﻟ‬
‫ﺑ‬‫ﻣﻦ وﺣﺪةﺗﺤﻜﻢ ‪Python ،‬ﻗﻢ‬
‫>>>ﻣ ﺴﺎﻋﺪة )"وﺣﺪا ت"(‬

‫ﻓ ﻲ اﻹﺧﺮاجﻳﻤﻜﻨﻨﺎ أن ﻧﺮى ‪cx_Oracle‬‬


‫‪....‬‬

‫‪_sha1 _sha256 _sha3 _sha512‬‬ ‫‪nturl2path‬‬ ‫اﻟﻮﻗ ﺖ ﻫﻮ‬


‫‪csv‬‬
‫‪_pickle _pydecimal _pyio _random‬‬ ‫‪ntpath‬أرﻗﺎم‬ ‫‪tkinter‬‬
‫‪csvr‬‬
‫‪_operator _osx_support _overlapped‬‬ ‫ﻣﺸﻐﻞ ﻛﻮد‬ ‫رﻣﺰ‬
‫‪csvw‬‬
‫‪_multiprocessing crypt _opcode‬‬ ‫ﺘﺸﻐﻴﻞ‬
‫اﻟ‬ ‫رﻣﺰا‬

‫اﻷﻧﻮاع‬ ‫‪optparse‬‬ ‫ﺘﻌﻘ ﺐ‬


‫ﻳ‬
‫اﻟﻠﻌﻨﺎ ت‬ ‫ﺛﺮ‬
‫ﺒﻊ اﻷ‬
‫ﺘ‬‫ﺗ‬

‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬ ‫ﺘﺸﻐﻴﻞ‬
‫ﻧﻈﺎم اﻟ‬ ‫ﺗﺮاﻛﻴﻤﺎﻟﻮك‬

‫‪cx_Oracle‬‬ ‫ﺛﻠﻴ ﺐ ‪pdb‬‬


‫ﺑﺎ‬‫ﻣﺤﻠﻞ‬ ‫ﻳﺤﺎول‬

‫ﺗﺎرﻳﺦ ووﻗ ﺖ‬ ‫ﺘﻴﺎر ﻣﺨﻠﻞ‬


‫اﺧ‬ ‫‪tty‬‬
‫ﺒﻴﺎﻧﺎ ت‬
‫اﻟ‬ ‫‪pickletools‬‬ ‫ﺳﻠﺤﻔﺎة‬
‫ﺒﻞ‬
‫دﻳ ﺴﻴ‬ ‫اﻟ ﺴﻠﺤﻔﺎة‬
‫ﺒ ﻲ ﻋﺸﺮي‬
‫ﺗﺠﺮﻳ‬ ‫أﻧﻮاع‬

‫ﺑﺔ‬
‫ﺘﺎ‬
‫اﻟﻜ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪155‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

_socket _sqlite3 difflib ‫ﻏﻴﺮ ﻣ‬unicodedata


‫ﺘﺠﺎﻧ ﺴ ﺔ‬ ‫ﺑﻴ ﺐ‬
‫اﻷﻧﺎ‬
_sitebuiltins ‫ﺗﻴﻠﻴ ﺲ‬
‫دﻳ ﺴﻮ‬
_signal pkg_resources unpick
‫ﻣﺬ ﻫ ﺐ‬ pkgutil ‫ﺗﺤﺪﻳ ﺚ‬
_sre _ssl _stat dummy_threading platform urllib
‫ﺘﻌﺪد اﻷﺷﻜﺎل‬
‫ﻣ‬easy_install ‫ﺘﻠﻴ ﺐ‬
‫ﺑﻠﻴ ﺴ‬‫دورﻏﺎﻣﺎ ت‬
‫ش‬

uuid
.....

‫ﺘﻪ‬
‫ﺒﺎﻋ ﺔ ﻧ ﺴﺨ‬
‫وﻃ‬Oracle Database ‫ﺘﻮاﺻﻞ ﻣﻊ‬
‫ﺑﺮﻧﺎﻣﺞ ﻟﻠ‬
1) ‫ﺒﻴﻖ‬
‫ﺘﻄ‬‫اﻟ‬

@ localhost') 3) print (con.version) 4) con.close () ‫ﺘﻴﺮاد‬


‫اﺳ‬1)
cx_Oracle 2) con = cx_Oracle.connect ('scott / tiger

| ‫ﺘﺎج‬
‫اﻧ‬
D: \ python_classes> py db1.py
11.2.0.2.0

‫ﺑﺮﻧﺎﻣﺠًﺎ ﻹﻧﺸﺎء ﺟﺪول ﻣﻮﻇﻔﻴﻦ ﻓ ﻲ‬‫ﺘﺐ‬


‫اﻛ‬2) ‫ﺒﻴﻖ‬
‫ﺘﻄ‬‫اﻟ‬
‫ﺑﻴﺎﻧﺎ ت أوراﻛﻞ‬‫ﻗﺎﻋﺪة‬
(eno، ename، esal، eaddr) ‫ﻣﻮﻇﻔﻴﻦ‬

('scott / tiger @ localhost') 4) cursor = con.cursor () 5) cursor.execute :‫ﺟﺮ ب‬cx_Oracle 2) ‫ﺘﻴﺮاد‬


‫اﺳ‬1)
(eno number، ename varchar2 () 10) ، esal n ‫)"إﻧﺸﺎء ﻣﻮﻇﻔ ﻲ اﻟﺠﺪول‬3) con = cx_Oracle.connect

e: 8) ‫ﻛـ‬cx_Oracle.DatabaseError ‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
") 7) ‫ﺑﻨﺠﺎح‬‫ﺗﻢ إﻧﺸﺎء اﻟﺠﺪول‬
(" ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬umber (10،2)، eaddr varchar2 (10)) ") 6)
() :‫إذا ﻛﺎن‬13) cursor.close () 14) :‫إذا ﻛﺎن اﻟﻤﺆﺷﺮ‬12) :‫أﺧﻴ ًﺮا‬11) (‫ ﻫـ‬SQL" ، ‫) " ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ‬9) con.rollback () 10) print :‫إذا ﻛﺎن‬
15) con.close

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

156
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺑﺮﻧﺎﻣﺠًﺎ ﻹﺳﻘﺎط ﺟﺪول اﻟﻤﻮﻇﻔﻴﻦ ﻣﻨﻪ‬‫ﺘﺐ‬‫ﺒﻴﻖ )‪3‬اﻛ‬


‫ﺘﻄ‬‫اﻟ‬
‫؟‪Oracle Database‬‬

‫ﺘﻴﺮاد )‪cx_Oracle 2‬ﺟﺮ ب‪cursor.execute ("drop table staff") 6) print (" :‬‬
‫)‪1‬اﺳ‬
‫)‪cx_Oracle.connect ('scott / tiger @ localhost') 4) cursor = con.cursor () 5‬‬
‫ﺜﻞ‬
‫ﺜﻨﺎء ‪cx_Oracle.DatabaseError‬ﻣ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺑﻨﺠﺎح )‪") 7‬‬‫ﺗﻢ إﺳﻘﺎط اﻟﺠﺪول‬
‫= ‪3) con‬‬
‫)‪e: 8‬إذا ﻛﺎن‪ 9) con.rollback () 10) print (" :‬ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ ‪ sql "،‬ﻫـ( )‪11‬أﺧﻴ ﺮًا‪:‬‬
‫ﺑﺈﻏﻼق )(‬‫)‪12‬إذا ﻛﺎن اﻟﻤﺆﺷﺮ‪13) cursor.close () 14) :‬إذا ﻛﺎن‪15) :‬ﻗﻢ‬

‫ﺑﺮﻧﺎﻣﺞ ﻹدراج ﺻﻒ واﺣﺪ ﻓ ﻲ ﻣﻠﻒ‬‫ﺘﺐ‬


‫ﺒﻴﻖ )‪3‬اﻛ‬
‫ﺘﻄ‬‫اﻟ‬
‫ﺟﺪول اﻟﻤﻮﻇﻔﻴﻦ‬

‫ﺘﻴﺮاد )‪cx_Oracle 2‬ﺟﺮ ب‪('scott / tiger @ localhost') 4) cursor = con.cursor () 5) cursor.execute :‬‬
‫)‪1‬اﺳ‬
‫‪")3) con = cx_Oracle.connect‬إدراج ﻓ ﻲ ﻗﻴﻢ اﻟﻤﻮﻇﻔﻴﻦ "‪(100 ،‬دورﺟﺎ "( ‪1000، 'Hyd') ") 6) con.commit () 7) print‬‬
‫ﺜﻨﺎء ‪cx_Oracle.DatabaseError‬ﻛـ )‪e: 9‬إذا ﻛﺎن‪:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺑﻨﺠﺎح )‪") 8‬‬‫ﺗﻢ إدراج اﻟ ﺴﺠﻞ‬
‫‪"،‬‬

‫‪ ")10) con.rollback‬ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ ‪ sql" ،‬ﻫـ( )‪12‬أﺧﻴ ﺮًا‪13) :‬إذا ﻛﺎن اﻟﻤﺆﺷﺮ‪14) cursor.close () 15) :‬إذا‬
‫‪16) con.close‬‬
‫‪() 11) print‬‬
‫ﻛﺎن‪() :‬‬

‫ﺘﺎﺋﺞ ﻓﻘﻂ ﻓ ﻲ ﻗﺎﻋﺪة‬


‫ﺘﻨﻌﻜ ﺲ اﻟﻨ‬
‫ﺘﺰام ‪() ،‬ﻋﻨﺪ ﻫﺎﺳ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻻﻟ‬
‫ﺗﺤﺪﻳ ﺚ |ﺣﺬف( ‪ ،‬إﻟﺰاﻣ ﻲ ﻋﻠﻴﻨﺎ اﺳ‬
‫ﺛﻨﺎء إﺟﺮاء ﻋﻤﻠﻴﺎ ت ‪)DML‬إدراج |‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬أ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫اﻟ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪157‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

‫ﺘﻌﺪدة ﻓ ﻲ ﻣﻠﻒ‬
‫ﺑﺮﻧﺎﻣﺠًﺎ ﻹدراج ﺻﻔﻮف ﻣ‬‫ﺘﺐ‬
‫اﻛ‬4) ‫ﺒﻴﻖ‬
‫ﺘﻄ‬‫اﻟ‬
() ‫ﺘﻨﻔﻴﺬﻳ ﺔ‬
‫ﺘﺨﺪام اﻟﻄﺮﻳﻘ ﺔ اﻟ‬
‫ﺑﺎﺳ‬‫ﺟﺪول اﻟﻤﻮﻇﻔﻴﻦ‬

('scott / tiger @ localhost') 4) cursor = con.cursor () 5) sql = :‫ﺟﺮ ب‬cx_Oracle 2) ‫ﺘﻴﺮاد‬


‫اﺳ‬1)
‫(اﻟ ﺴﺠﻼ ت‬: eno،: ename ،: esal،: eaddr) " 6) ‫"أدﺧﻞ ﻓ ﻲ ﻗﻴﻢ اﻟﻤﻮﻇﻔﻴﻦ‬3) con = cx_Oracle.connect
= [(200، 'Sunny'، 2000، 'Mumbai')، 7)

(300 ، "Chinny" ، 3000 ، "Hyd") ، 8)


10) con.commit () 11) print ("Records Inserted Successfully") 12)
‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
(400، 'Bunny'، 4000، 'Hyd')] 9) cursor.executemany (sql، records)
sql" ، ‫)" ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ‬e: 13) if con: 14) con.rollback () 15) print ‫ﺜﻞ‬
‫ﻣ‬cx_Oracle.DatabaseError
20) con.close () :‫إذا ﻛﺎن‬18) cursor.close () 19) :‫إذا ﻛﺎن اﻟﻤﺆﺷﺮ‬17) :‫أﺧﻴ ﺮًا‬16) (‫ﻫـ‬

‫ﺘﻌﺪدة ﻓ ﻲ اﻟﻤﻮﻇﻔﻴﻦ‬
‫ﺑﺮﻧﺎﻣﺞ ﻹدراج ﺻﻔﻮف ﻣ‬‫ﺘﺐ‬
‫اﻛ‬5) ‫ﺒﻴﻖ‬
‫ﺘﻄ‬‫اﻟ‬
‫ﺗﻴﺢ؟‬
‫ﻃﺎوﻟ ﺔ ﻣﻊ ﻣﺪﺧﻼ ت دﻳﻨﺎﻣﻴﻜﻴ ﺔ ﻣﻦ ﻟﻮﺣ ﺔ اﻟﻤﻔﺎ‬

tiger @ localhost') 4) cursor = con.cursor () 5) while True: 6) eno = int :‫ﺣﺎول‬cx_Oracle 2) ‫ﺘﻴﺮاد‬
‫اﺳ‬1)
float :‫ ))"أدﺧﻞ اﺳﻢ اﻟﻤﻮﻇﻒ‬7) ename = input (" : ‫)"أدﺧﻞ رﻗﻢ اﻟﻤﻮﻇﻒ‬3) con = cx_Oracle.connect ('scott /
‫ )""إدراج ﻓ ﻲ‬10) sql = :‫ ))"أدﺧﻞ ﻋﻨﻮان اﻟﻤﻮﻇﻒ‬9) eaddr = input (" :‫ﺗ ﺐ اﻟﻤﻮﻇﻒ‬
‫ )")اﻹدﺧﺎل "(أدﺧﻞ را‬8) esal =
‫ﺗﻢ إدراج‬
")(٪ d، '٪ s'،٪ f، '٪ s')" 11) cursor.execute (sql٪ (eno، ename، esal، eaddr)) 12) print ‫ﻗﻴﻢ اﻟﻤﻮﻇﻔﻴﻦ‬
() 16) :"‫إذا ﻛﺎن اﻟﺨﻴﺎر =="ﻻ‬13) 14) (":[‫)" ﻫﻞﺗﺮﻳﺪ إدراجﺳﺠﻞ آﺧﺮ ]ﻧﻌﻢ |ﻻ‬option = input ( "‫ﺑﻨﺠﺎح‬‫ﺘ ﺴﺠﻴﻞ‬
‫اﻟ‬
‫ﻓﺎﺻﻞ‬15) con.commit

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬


158 - 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺜﻞ )‪e: 18‬إذا ﻛﺎن‪20) print :‬‬


‫ﺜﻨﺎء ‪cx_Oracle.DatabaseError‬ﻣ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)‪17‬‬
‫)( ‪ ")19) con.rollback‬ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ )‪sql :" ، e) 21‬أﺧﻴ ًﺮا‪22) :‬إذا ﻛﺎن‬
‫اﻟﻤﺆﺷﺮ‪23) :‬اﻟﻤﺆﺷﺮ‪ .‬أﻏﻠﻖ )‪() 24‬إذا ﻛﺎن‪25) con.close () :‬‬

‫ﺑﻪ‬‫ﺗ ﺐ اﻟﻤﻮﻇﻔﻴﻦ‬
‫ﺘﺤﺪﻳ ﺚ روا‬
‫ﺑﺮﻧﺎﻣﺞ ﻟ‬‫ﺘﺐ‬
‫ﺒﻴﻖ )‪6‬اﻛ‬
‫ﺘﻄ‬‫اﻟ‬
‫زﻳﺎدة ﻟﻤﺪى ﻣﻌﻴﻦ ﻣﻊ إدﺧﺎل دﻳﻨﺎﻣﻴﻜ ﻲ‬
‫ﺗ ﺐ أﻗﻞ ﻣﻦ ‪5000‬‬
‫ﺑﻤﻘﺪار ‪500‬را‬‫ﺗ ﺐ ﺟﻤﻴﻊ اﻟﻤﻮﻇﻔﻴﻦ‬
‫ﺜﺎل‪ :‬زﻳﺎدة روا‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺘﻴﺮاد )‪cx_Oracle 2‬ﺟﺮ ب‪4) cursor = con.cursor () 5) increment = float (input :‬‬
‫)‪1‬اﺳ‬
‫ﺗ ﺐ‪float (input ((":‬‬
‫)'‪")3) con = cx_Oracle.connect ('scott / tiger @ localhost‬أدﺧﻞ زﻳﺎدة اﻟﺮا‬
‫ﺗﺤﺪﻳ ﺚﺗﻌﻴﻴﻦ اﻟﻤﻮﻇﻔﻴﻦ ‪esal = esal +٪ f‬ﺣﻴ ﺚ‬
‫ﺗ ﺐ‪"7) sql = ((":‬‬
‫= ‪")6 ) salrange‬أدﺧﻞ ﻧﻄﺎق اﻟﺮا‬
‫ﺜﻬﺎ‬
‫‪")esal <٪ f" 8) cursor.execute (sql٪ (increment، salrange)) 9) print‬اﻟ ﺴﺠﻼ تﺗﻢﺗﺤﺪﻳ‬
‫ﺜﻞ )‪e: 12‬إذا ﻛﺎن ‪print :‬‬
‫ﺜﻨﺎء ‪cx_Oracle.DatabaseError‬ﻣ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺑﻨﺠﺎح"( )‪10) con.commit () 11‬‬
‫)‪ ")13) con.rollback () 14‬ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ ‪ sql :" ،‬ﻫـ( )‪15‬أﺧﻴ ﺮًا‪16) :‬إذا ﻛﺎن اﻟﻤﺆﺷﺮ ‪17) :‬‬

‫ﺑﺈﻏﻼق )(‬‫)‪18‬إذا ﻛﺎنﻳﺨﺪع‪19) :‬ﻗﻢ‬

‫ﺒﺮ ﻛﻤﺪﺧﻼ ت دﻳﻨﺎﻣﻴﻜﻴ ﺔ؟‬


‫ﺒﻬﻢ أﻛ‬
‫ﺗ‬‫ﺑﺮﻧﺎﻣﺠًﺎ ﻟﺤﺬف اﻟﻤﻮﻇﻔﻴﻦ اﻟﺬﻳﻦ روا‬‫ﺘﺐ‬
‫ﺒﻴﻖ )‪7‬اﻛ‬
‫ﺘﻄ‬‫اﻟ‬

‫ﺒﻬﻢ ﻋﻦ ‪5000‬‬
‫ﺗ‬‫ﺜﺎل‪ :‬ﺣﺬف ﺟﻤﻴﻊ اﻟﻤﻮﻇﻔﻴﻦ اﻟﺬﻳﻦﺗﺰﻳﺪ روا‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺘﻴﺮاد )‪cx_Oracle 2‬ﺣﺎول‪tiger @ localhost') 4) cursor = con.cursor () 5) cutoffsalary = float (input ("Enter CutOff :‬‬
‫)‪1‬اﺳ‬
‫ﺗ ﺐ‪((":‬‬
‫‪3) con = cx_Oracle.connect ('scott /‬اﻟﺮا‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪159‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

Successfully") 9) con.commit () 10) ‫"ﺣﺬف ﻣﻦ اﻟﻤﻮﻇﻔﻴﻦ ﺣﻴ ﺚ‬6) sql =


f" 7) cursor.execute (sql٪ (cutoffsalary)) 8) print ("Records Deleted
con.rollback () 13) print :‫ﻛـ ﻫـ‬cx_Oracle.DatabaseError ‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
esal>٪
:‫إذا ﻛﺎن اﻟﻤﺆﺷﺮ‬15) :‫أﺧﻴ ﺮًا‬14) (‫ ﻫـ‬sql :" ، ‫)" ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ‬11) if con: 12)
18) con.close () : ‫إذا ﻛﺎنﻳﺨﺪع‬16) cursor.close () 17)

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ‬
‫ﺑﺎﺳ‬‫ﺘﺤﺪﻳﺪ ﺟﻤﻴﻊ ﻣﻌﻠﻮﻣﺎ ت اﻟﻤﻮﻇﻔﻴﻦ‬
‫ﺑﺮﻧﺎﻣﺞ ﻟ‬‫ﺘﺐ‬
‫اﻛ‬8) ‫ﺒﻴﻖ‬
‫ﺘﻄ‬‫اﻟ‬
fetchone ()‫؟‬

4) cursor = con.cursor () 5) cursor.execute :‫ﺟﺮ ب‬cx_Oracle 2) ‫ﺘﻴﺮاد‬


‫اﺳ‬1)
‫)"ﺣﺪد *ﻣﻦ‬3) con = cx_Oracle.connect ('scott / tiger @ localhost')
(‫ﺒﺎﻋ ﺔ )ﺻﻒ‬
‫ﻃ‬8) :‫ﺑﻼ‬‫ﺑﻴﻨﻤﺎ اﻟﺼﻒ ﻟﻴ ﺲ‬
= cursor.fetchone () 7) ‫ ﺻﻒ‬6) ("‫اﻟﻤﻮﻇﻔﻴﻦ‬
11) ‫ﺜﻞ‬
‫ﻣ‬cx_Oracle.DatabaseError ‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
9) row = cursor.fetchone () 10)
:‫أﺧﻴ ًﺮا‬14) (‫ﻫـ‬18)
sql con.close
:" ، ‫ﻣﺸﻜﻠ ﺔ ﻓ ﻲ‬ ‫ﻫﻨﺎك‬
() :‫ﻛﺎن‬ ‫)"إذا‬
16)‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬12) con.rollback
cursor.close () 13 ) ‫ﻛﺎن‬
() 17) :‫اﻟﻤﺆﺷﺮ‬ :‫إذاإذاﻛﺎن‬
15)e:

()‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ ؟‬
‫ﺑﺎﺳ‬‫ﺘﺤﺪﻳﺪ ﺟﻤﻴﻊ ﻣﻌﻠﻮﻣﺎ ت اﻟﻤﻮﻇﻔﻴﻦ‬
‫ﺑﺮﻧﺎﻣﺞ ﻟ‬‫ﺘﺐ‬
‫اﻛ‬9) ‫ﺒﻴﻖ‬
‫ﺘﻄ‬‫اﻟ‬
fetchall

3) con = cx_Oracle.connect ('scott / tiger @ localhost') 4) cursor = con.cursor () :‫ﺟﺮ ب‬cx_Oracle 2) ‫ﺘﻴﺮاد‬
‫اﺳ‬1)

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

160
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺒﺎﻋ ﺔ= ‪data‬‬
‫‪cursor.fetchall‬‬
‫اﻟﺼﻒ )‪[0]) 9‬ﻃ‬ ‫اﻟﻤﻮﻇﻒ‪() ،7)":‬‬
‫اﻟﻤﻮﻇﻔﻴﻦ"(‬ ‫ﺒﻊﻣﻦ‬
‫"(رﻗﻢ‬ ‫اﻃ *‬
‫)"ﺣﺪد‬
‫ﺒﻴﺎﻧﺎ) ‪5‬ت‪8) :‬‬
‫‪cursor.execute‬‬
‫)‪6‬ﻟﻠﺼﻒ ﻓ ﻲ اﻟ‬
‫)‪[2]) 11‬‬
‫‪() 14‬‬
‫ﺻﻒ‬‫‪"،‬ﺔ )‬
‫ﺒﺎﻋ‬
‫اﻟﻤﻮﻇﻒ‪:‬‬
‫ﺐﺔ )‪() 13‬ﻃ‬
‫ﺒﺎﻋ‬
‫ﺗ‬
‫ﻃ‬
‫"(را‬
‫ﺒﺎﻋ ﺔ)]‪[3‬‬
‫)]‪[1‬ﻃ)‪12‬‬
‫اﻟﺼﻒ‬‫ﺻﻒ ‪10)"،‬‬
‫اﻟﻤﻮﻇﻒ‪:‬‬
‫ﺳﻢ‪"، :‬‬
‫ﻋﻨﻮان‬
‫)"اﻟﻤﻮﻇﻒ اﻻ‬
‫ﺒﺎﻋ ﺔ "(‬
‫ﻃ‬
‫ﻛﺎن)(‬
‫‪print‬إذا)‪17‬‬
‫ﻛﺎن‪:‬ا‪19) :‬‬
‫‪sql‬أﺧﻴ ﺮً‬
‫)‪e::"15‬إذا‬
‫ﺜﻞ )‪، e‬‬
‫‪cx_Oracle.DatabaseError‬ﻣ)‪18‬‬
‫‪ ")16) con.rollback‬ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ‬
‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺑﺈﻏﻼق )(‬‫اﻟﻤﺆﺷﺮ‪20) cursor.close () 21) :‬إذا ﻛﺎنﻳﺨﺪع‪22) :‬ﻗﻢ‬

‫ﺘﺨﺪام )( ‪fetchmany‬‬
‫ﺑﺎﺳ‬‫ﺘﺤﺪﻳﺪ ﻣﻌﻠﻮﻣﺎ ت اﻟﻤﻮﻇﻔﻴﻦ‬
‫ﺑﺮﻧﺎﻣﺞ ﻟ‬‫ﺘﺐ‬
‫ﺒﻴﻖ )‪10‬اﻛ‬
‫ﺘﻄ‬‫اﻟ‬
‫ﺘﻢﺗﻮﻓﻴﺮ اﻟﻄﺮﻳﻘ ﺔ واﻟﻌﺪد اﻟﻤﻄﻠﻮ ب ﻣﻦ اﻟﺼﻔﻮف ﻛﻤﺪﺧﻞ دﻳﻨﺎﻣﻴﻜ ﻲ؟‬
‫ﺳﻴ‬

‫ﺘﻴﺮاد )‪cx_Oracle 2‬ﺟﺮ ب‪4) cursor = con.cursor () 5) cursor.execute :‬‬


‫)‪1‬اﺳ‬
‫)'‪")3) con = cx_Oracle.connect ('scott / tiger @ localhost‬ﺣﺪد *ﻣﻦ اﻟﻤﻮﻇﻔﻴﻦ"(‬
‫ﺑ ﺔ‪7 ) data = cursor.fetchmany (n) 8) :‬‬
‫‪")6) n = int‬إدﺧﺎل "(أدﺧﻞ ﻋﺪد اﻟﺼﻔﻮف اﻟﻤﻄﻠﻮ‬
‫ﺜﻨﺎء ‪cx_Oracle.DatabaseError‬ﻛـ )‪11‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺒﻴﺎﻧﺎ ت‪9) print (row) 10) :‬‬
‫))"ﻟﻠﺼﻒ ﻓ ﻲ اﻟ‬
‫ﻳﻐﻠﻖ)( )‪sql :"، e) 14‬أﺧﻴ ﺮًا‪15) :‬إذا‬
‫ﻣﺸﻜﻠ ﺔ ﻓ ﻲ‬ ‫)‪ ")con: 12‬ﻫﻨﺎك‬
‫‪16) cursor.close‬‬ ‫‪con.rollback‬‬
‫)‪() 17‬‬ ‫‪if con: 18)()con.‬‬
‫‪13) print‬‬
‫ﻛﺎنإذااﻟﻤﺆﺷﺮ‪:‬‬
‫‪e:‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪161‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺗﺞ د‪\ python_classes> py test.py :‬أدﺧﻞ ﻋﺪد‬


‫اﻟﻨﺎ‬
‫ﺑ ﺔ‪(100، 'Durga'، 1500.0، 'Hyd') :‬‬
‫اﻟﺼﻔﻮف اﻟﻤﻄﻠﻮ‬
‫‪3‬‬

‫ﺒﺎي"(‬
‫‪"(200 ،‬ﺻﻨ ﻲ" ‪"2500.0 ، ،‬ﻣﻮﻣ‬
‫)"‪(300، "Chinny"، 3500.0، "Hyd‬‬

‫‪D: \ python_classes> py test.py‬أدﺧﻞ ﻋﺪد اﻟﺼﻔﻮف‬


‫ﺑ ﺔ‪4 (100، 'Durga'، 1500.0، 'Hyd') :‬‬
‫اﻟﻤﻄﻠﻮ‬

‫ﺒﺎي"(‬
‫‪"(200 ،‬ﺻﻨ ﻲ" ‪"2500.0 ، ،‬ﻣﻮﻣ‬
‫)"‪(300، "Chinny"، 3500.0، "Hyd‬‬
‫)'‪(400، 'Bunny'، 4500.0، 'Hyd‬‬

‫ﺑﻴﺎﻧﺎ ت ‪MySQL:‬‬‫اﻟﻌﻤﻞ ﻣﻊ ﻗﺎﻋﺪة‬


‫اﻟﻤﻮرﱢد‪Corporation Open Source and Freeware :‬‬
‫اﻹﺻﺪار اﻟﺤﺎﻟ ﻲ‪ُ5.7.19 :‬‬

‫ﺘﺨﺪم‬
‫ﺘﺮاﺿ ﻲ‪3306 :‬اﻟﻤ ﺴ‬
‫‪SUN Micro Systems / Oracle‬اﻟﻤﻨﻔﺬ اﻻﻓ‬
‫ﺘﺮاﺿ ﻲ‪ :‬اﻟﺠﺬر‬
‫اﻻﻓ‬

‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻨﻄﻘﻴ ﺔ‪.‬‬


‫ﺑﺎﺳﻢ ﻗﻮاﻋﺪ اﻟ‬ ‫ُﻌﺮف أ ً‬
‫ﻳﻀﺎ‬ ‫ﺘ ﻲﺗ‬
‫ﺑﻨﺎ ‪ ،‬واﻟ‬‫ﺒﻴﺎﻧﺎ ت اﻟﺨﺎﺻ ﺔ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓ ﻲ ‪MySQL ،‬ﻛﻞ ﻣﺎ ﻟﺪﻳﻨﺎ ﻟﻠﻌﻤﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟ‬

‫‪MySQL.‬ﻣﺨﻄﻂ اﻟﻤﻌﻠﻮﻣﺎ ت‬ ‫ﺘﻮﻓﺮة ﻓ ﻲ‬


‫ﺘﺮاﺿﻴ ﺔ ﻣ‬
‫ﺑﻴﺎﻧﺎ ت اﻓ‬‫ﻓﻴﻤﺎﻳﻠ ﻲ ‪4‬ﻗﻮاﻋﺪ‬
‫‪mysql‬‬ ‫‪Performance_schema‬‬

‫ﺒﺎر‬
‫ﺘ‬‫اﻻﺧ‬

‫ﺑﻴﺎﻧﺎ ت ﻣﻨﻄﻘﻴ ﺔ‪.‬‬‫ﺘﻮﻓﺮ ‪4‬ﻗﻮاﻋﺪ‬


‫ﺗ‬‫ﺑﻴﺎﻧﺎ ت ﻣﺎدﻳ ﺔ واﺣﺪة ﻓﻘﻂ و‬‫ﺘﻮﻓﺮ ﻗﺎﻋﺪة‬
‫ﺒﻴﺎﻧ ﻲ أﻋﻼه ‪،‬ﺗ‬
‫ﻓ ﻲ اﻟﺮﺳﻢ اﻟ‬

‫ﺘﺨﺪام ﻓ ﻲ ‪MySQL:‬‬
‫اﻷواﻣﺮ ﺷﺎﺋﻌ ﺔ اﻻﺳ‬

‫ﺒﻴﺎﻧﺎ ت ؛‬
‫ﺘﺎﺣ ﺔ >‪mysql‬إﻇﻬﺎر ﻗﻮاﻋﺪ اﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻤ‬
‫)‪1‬ﻟﻤﻌﺮﻓ ﺔ ﻗﻮاﻋﺪ اﻟ‬

‫ﺑﻨﺎ >‪mysql‬إﻧﺸﺎء ﻗﺎﻋﺪة‬‫ﺑﻴﺎﻧﺎ ت ﻣﻨﻄﻘﻴ ﺔ ﺧﺎﺻ ﺔ‬‫)‪2‬ﻹﻧﺸﺎء ﻗﺎﻋﺪة‬


‫ﺑﻴﺎﻧﺎ ت ؛ ‪durgadb‬‬

‫ﺑﻨﺎ >‪mysql‬إﺳﻘﺎط ﻗﺎﻋﺪة‬‫ﺒﻴﺎﻧﺎ ت اﻟﺨﺎﺻ ﺔ‬


‫)‪3‬ﻹﺳﻘﺎط ﻗﺎﻋﺪة اﻟ‬
‫ﺒﻴﺎﻧﺎ ت ؛ ‪durgadb‬‬
‫اﻟ‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪162‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪم ؛ ‪durgadb‬‬
‫ﺑﻴﺎﻧﺎ ت ﻣﻨﻄﻘﻴ ﺔ ﺧﺎﺻ ﺔ >‪mysql‬اﺳ‬‫ﺘﺨﺪام ﻗﺎﻋﺪة‬
‫)‪4‬ﻻﺳ‬
‫‪ OR mysql> connect‬؛ ‪durgadb‬‬

‫)‪5‬ﻹﻧﺸﺎء اﻟﺠﺪول‬
‫إﻧﺸﺎء ﻣﻮﻇﻔ ﻲ اﻟﺠﺪول ؛ ))‪(eno int (5) basic key، ename varchar (10)، esal double (10،2)، eaddr varchar (10‬‬

‫ﺒﻴﺎﻧﺎ ت‬
‫)‪6‬ﻹدﺧﺎل اﻟ‬
‫ﺗﻀﺎف إﱃ ﻗﻴﻢ اﻟﻤﻮﻇﻔﻴﻦ ‪"(100 ،‬دورﺟﺎ" ‪ "1000 ، ،‬ﻫﻴﺪرو"( ؛‬
‫ﺒﺎي"( ؛‬
‫إدراج ﻓ ﻲ ﻗﻴﻢ اﻟﻤﻮﻇﻔﻴﻦ ‪"(200 ،‬راﻓ ﻲ" ‪"2000 ، ،‬ﻣﻮﻣ‬

‫ﺒﺎس اﻟﻤﺰدوﺟ ﺔ‪.‬‬


‫ﺘ‬‫ﺘﺨﺪام ﻋﻼﻣﺎ ت اﻻﻗ‬ ‫ﺒﺎس اﻟﻤﻔﺮدة ‪،‬ﻳﻤﻜﻨﻨﺎ أ ً‬
‫ﻳﻀﺎ اﺳ‬ ‫ﺘ‬‫ﺑﺪﻻ ً ﻣﻦ ﻋﻼﻣﺎ ت اﻻﻗ‬
‫ﻓ ﻲ ‪MySQL‬‬

‫ﻣﻌﻠﻮﻣﺎ ت اﻟ ﺴﺎﺋﻖ ‪ /‬اﻟﻤﻮﺻﻞ‪:‬‬


‫ﺘﺪﻋﺎءا ت‬
‫ﺘﺪﻋﺎءا ت ‪Python‬اﻟﻤﺤﺪدة إﱃ اﺳ‬
‫ﺘﺤﻮﻳﻞ اﺳ‬
‫ﺒﺎري ﻟ‬
‫ﺘﺮﺟﻢ إﺟ‬
‫ﺑﻴﺎﻧﺎ ت ‪MySql ،‬ﻳﻠﺰم وﺟﻮد ﻣ‬‫ﺘﻮاﺻﻞ ﻣﻊ ﻗﺎﻋﺪة‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬إذا أردﻧﺎ اﻟ‬‫ﻣﻦ‬
‫ﺘﺮﺟﻢ ﻟﻴ ﺲﺳﻮىﺳﺎﺋﻖ أو ﻣﻮﺻﻞ‪.‬‬
‫ﺜﻮن‪ .‬ﻫﺬا اﻟﻤ‬
‫ﺒﻴ‬‫ﺑ‬‫ﺑﻴﺎﻧﺎ ت ‪mysql‬إﱃ ﻣﻜﺎﻟﻤﺎ ت ﺧﺎﺻ ﺔ‬‫ﺑﻘﺎﻋﺪة‬‫ﺑﻴﺎﻧﺎ ت ‪mysql‬وﻣﻜﺎﻟﻤﺎ ت ﺧﺎﺻ ﺔ‬‫ﻣﺤﺪدة ﻟﻘﺎﻋﺪة‬

‫ﺑﻴﺎﻧﺎ ت ‪mysql.‬‬‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ ﻣﻦ ﻗﺎﻋﺪة‬‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﻨﺰﻳﻞ اﻟﻤﻮﺻﻞ‬


‫ﻳ‬

‫‪https://dev.mysql.com/downloads/connector/python/2.1.html‬‬

‫ﺒﻴ ﺖ‪:‬‬
‫ﺜ‬‫ﺘ‬‫ﺘﺤﻘﻖ ﻣﻦ اﻟ‬
‫ﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺘﺨﺪام اﻟﻤ ﺴﺎﻋﺪة )"اﻟﻮﺣﺪا ت اﻟﻨﻤﻄﻴ ﺔ"(‬
‫ﻣﻦ وﺣﺪةﺗﺤﻜﻢ ‪Python ،‬ﻋﻠﻴﻨﺎ اﺳ‬
‫ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻟﻮﺣﺪا ت ‪،‬ﻳﺠ ﺐ أنﺗﻜﻮن ‪MySQL‬اﻹﻟﺰاﻣﻴ ﺔ ﻣﻮﺟﻮدة‪.‬‬

‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﻌﻴﻴﻦ ‪PATH‬و ‪PYTHONPATH‬‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓ ﻲ ﺣﺎﻟ ﺔ ‪Python3.4 ،‬ﻳ‬

‫اﻟﻤ ﺴﺎر ‪= C: \ Python34‬‬


‫‪PYTHONPATH = C: \ Python34 \ Lib \ site -packs‬‬

‫ﺒﻴﺎﻧﺎ ت واﻟﻌﺮض‬
‫ﺑﺮﻧﺎﻣﺠًﺎ ﻹﻧﺸﺎء ﺟﺪول وإدراج اﻟ‬‫ﺘﺐ‬
‫س( اﻛ‬
‫ﺑﻴﺎﻧﺎ ت ‪MySQL‬‬‫ﺘﺨﺪام ﻗﺎﻋﺪة‬
‫ﺑﺎﺳ‬‫ﺒﻴﺎﻧﺎ ت‬
‫اﻟ‬

‫ﺘﻴﺮاد )‪mysql.connector 2‬ﺣﺎول‪= mysql.connector.connect (host = 'localhost'، database = 'durgadb'، user = 'root'، p :‬‬
‫)‪1‬اﺳ‬
‫‪3) con‬‬

‫‪")assword = 'root') 4) cursor = con.cursor () 5) cursor.execute‬إﻧﺸﺎء ﻣﻮﻇﻔ ﻲ اﻟﺠﺪول ‪(5) basic key، ename varchar) (1‬‬
‫‪(eno int‬‬

‫)" ))‪0) ، esal double (10،2) ، eaddr varchar (10‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪163‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

("Table Created ...") 7) 8) sql = "insert into staff (eno، ename، esal، eaddr) VALUES (٪ s،٪ s،٪ s،٪ s)" 9)
= [(100، 'Sachin'، 1000، 'Mumbai')، 10) ‫ﺳﺠﻼ ت‬6) print

(200 ، "Dhoni" ، 2000 ، "Ranchi") ، 11)


records) 13) con.commit () 14) print ("Records Inserted Successfully ...") 15) cursor.execute
= cursor.fetchall () 17) ‫ﺒﻴﺎﻧﺎ ت‬
‫اﻟ‬16) ("‫() "ﺣﺪد *ﻣﻦ اﻟﻤﻮﻇﻔﻴﻦ‬300، 'Kohli'، 3000، 'Delhi')] 12) cursor.executemany (sql،
، ":‫ﺗ ﺐ اﻟﻤﻮﻇﻒ‬
‫ﺒﻊ "(را‬
‫ [اﻃ‬1]) 20) ‫ اﻟﺼﻒ‬، ":‫ﺒﺎﻋ ﺔ "(اﺳﻢ اﻟﻤﻮﻇﻒ‬
‫[ﻃ‬0]) 19) ‫ اﻟﺼﻒ‬، ":‫ﺒﻊ "(رﻗﻢ اﻟﻤﻮﻇﻒ‬
‫اﻃ‬18) : ‫ﺒﻴﺎﻧﺎ ت‬
‫ﻟﻠﺼﻒ ﻓ ﻲ اﻟ‬
mysql.connector. DatabaseError ‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
() 24) ‫ﺒﺎﻋ ﺔ‬
‫ )(ﻃ‬23) ‫ﺒﺎﻋ ﺔ‬
‫[ﻃ‬3]) 22) ‫ اﻟﺼﻒ‬، ":‫ﺒﺎﻋ ﺔ )"ﻋﻨﻮان اﻟﻤﻮﻇﻒ‬
‫[ﻃ‬2]) 21) ‫اﻟﺼﻒ‬
cursor.close () 31) :‫إذا ﻛﺎن اﻟﻤﺆﺷﺮ‬29) :‫أﺧﻴ ﺮًا‬sql :"، e) 28) ‫)" ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ‬e: 25) if con: 26)
32)con.rollback
con.close () ():‫ﻳﺨﺪع‬
27) print ‫ﺜﻞ‬‫ﻣ‬
‫إذا ﻛﺎن‬30)

‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻤﻮﻇﻔﻴﻦ‬


‫ﺑﺮﻧﺎﻣﺠًﺎ ﻟﻨ ﺴﺦ اﻟ‬‫ﺘﺐ‬
‫س( اﻛ‬
Oracle Database ‫ﻓ ﻲ‬MySQL ‫ﺑﻴﺎﻧﺎ ت‬‫ﺟﺪول ﻗﺎﻋﺪة‬

'localhost'، database = 'durgadb'، user = 'root'، p :‫ﺣﺎول‬cx_Oracle 3) ‫ﺘﻴﺮاد‬


‫اﺳ‬mysql.connector 2) ‫ﺘﻴﺮاد‬
‫اﺳ‬1)
4) con = mysql.connector.connect (host =

= 'root') 5) cursor = con.cursor () 6) cursor.execute


cursor.fetchall () 8) list = [] 9) ("‫)"ﺣﺪد *ﻣﻦ اﻟﻤﻮﻇﻔﻴﻦ‬assword
row [3]) 11) list.append
‫ﺜﻨﺎء‬
‫ﺘ‬ (t)
‫ﺑﺎﺳ‬
10)12)
t =: (row
‫ﺒﻴﺎﻧﺎ ت‬‫ ﻲ اﻟ‬row
[0]، ‫ﻟﻠﺼﻒ ﻓ‬
[1]،7)row
data =
[2]،
e: ‫ﻛـ‬mysql.connector.DatabaseError

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

164
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

‫إذا‬18) cursor.close () 19) :‫إذا ﻛﺎن اﻟﻤﺆﺷﺮ‬17) :‫أﺧﻴ ﺮًا‬MySql :"، e) 16) ‫)" ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ‬13) if con: 14) con.rollback () 15) print
27)
= cx_Oracle.connect
con.commit () 28) ('scott
print ("/ Records
tiger @ localhost')
Copy from24)
MySQL
cursor
Database
= con.cursor
to Oracle
() 25)Database
sql = :‫ﺣﺎول‬
‫اﻟﻤﻮﻇﻔﻴﻦ‬
20 ) con.close
‫)( ﻓ ﻲ ﻗﻴﻢ‬
‫"أدﺧﻞ‬
21) 23)
22) con
:‫ﻛﺎن‬
") ‫ﺑﻨﺠﺎح‬
(: eno، : ename،: esal،: eaddr) " 26) cursor.executemany (sql، list)

print :‫إذا ﻛﺎن‬e: 30) ‫ﺜﻞ‬


‫ﻣ‬cx_Oracle.DatabaseError ‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺑﺎﺳ‬
29)
34) :‫أﺧﻴ ﺮًا‬33) (‫ ﻫـ‬sql" ، ‫)" ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲ‬31) con.rollback () 32)
() ‫ﺑﺈﻏﻼق‬‫ﻗﻢ‬37) :‫إذا ﻛﺎنﻳﺨﺪع‬35) cursor.close () 36) :‫إذا ﻛﺎن اﻟﻤﺆﺷﺮ‬

https://dev.mysql.com/downloads/connector/python/2.1.html

(eno int (5) basic key، ename varchar (10)، esal double (10،2) ‫إﻧﺸﺎء ﻣﻮﻇﻔ ﻲ اﻟﺠﺪول‬1)
‫" ﻫﻴﺪرو"( ؛‬1000 ، ، "‫("دورﺟﺎ‬100 ، ‫ )أدﺧﻞ ﻓ ﻲ ﻗﻴﻢ اﻟﻤﻮﻇﻔﻴﻦ‬، eaddr varchar (10)) ‫ ؛‬2)
‫ﺗﻀﺎف إﱃ ﻗﻴﻢ اﻟﻤﻮﻇﻔﻴﻦ‬
4) ‫ﺒﺎي"( ؛‬
‫"ﻣﻮﻣ‬2000 ، ، "‫("راﻓ ﻲ‬200 ، ‫أدﺧﻞ ﻓ ﻲ ﻗﻴﻢ اﻟﻤﻮﻇﻔﻴﻦ‬3)
(300 ، "Shiva" ، 3000 ، "Hyd") ‫؛‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

165
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﻋﺎدي‬
‫ﺒﻴﺮا ت‬
‫ﺘﻌ‬‫اﻟ‬
‫&‬
‫ﺘﺮﻧ ﺖ‬
‫ﺒﻜ ﺔ اﻹﻧ‬
‫ﺗﺠﺮﻳﻒ ﻋﲆ ﺷ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪166‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻴﻞ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟ ﺴﻼﺳﻞ اﻟﻨﺼﻴ ﺔ وﻓ ًﻘﺎ ﻟﺸﻜﻞ ‪ /‬ﻧﻤﻂ ﻣﻌﻴﻦ‬


‫إذا أردﻧﺎﺗﻤ‬
‫ﺒﻴﺮا ت اﻟﻌﺎدﻳ ﺔ‪.‬‬
‫ﺘﻌ‬‫ﺘﻘﻞ إﱃ اﻟ‬
‫ﺛﻢ ﻋﻠﻴﻨﺎ أن ﻧﻨ‬

‫ﺘﺮاﻛﻤ ﺔ إﱃﺗﻨ ﺴﻴﻖ ‪ /‬ﻧﻤﻂ ﻣﻌﻴﻦ‪.‬‬


‫ﺜﻴﻞ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟ ﺴﻼﺳﻞ اﻟﻨﺼﻴ ﺔ اﻟﻤ‬
‫ﺘﻤ‬‫أي ‪ Regualr Expressions‬ﻫ ﻲ آﻟﻴ ﺔﺗﻌﺮﻳﻔﻴ ﺔ ﻟ‬

‫ﺗﻒ اﻟﻤﺤﻤﻮﻟ ﺔ‬
‫ﺜﻴﻞ ﺟﻤﻴﻊ أرﻗﺎم اﻟﻬﻮا‬
‫ﺘﻤ‬‫ﺒﻴﺮ ﻧﻤﻄ ﻲ ﻟ‬
‫ﺑ ﺔﺗﻌ‬
‫ﺘﺎ‬
‫ﺜﺎل ‪1:‬ﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﻣ‬

‫ﺒﺮﻳﺪ‪.‬‬
‫ﺜﻴﻞ ﺟﻤﻴﻊ ﻣﻌﺮﻓﺎ ت اﻟ‬
‫ﺘﻤ‬‫ﺒﻴﺮ ﻋﺎدي ﻟ‬
‫ﺑ ﺔﺗﻌ‬
‫ﺘﺎ‬
‫ﺜﺎل ‪2:‬ﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﻣ‬

‫ﺒﻴﺮا ت اﻟﻌﺎدﻳ ﺔ ﻫ ﻲ‬
‫ﺘﻌ‬‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠ‬
‫ﺒﻴﻖ اﻟﻤﻬﻤ ﺔ اﻟﺮ‬
‫ﺘﻄ‬‫ﻣﺠﺎﻻ ت اﻟ‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟﺼﺤ ﺔ‬
‫ﺘﺤﻘﻖ ‪ /‬ﻣﻨﻄﻖ اﻟ‬
‫ﺘﻄﻮﻳﺮ أﻃﺮ اﻟ‬
‫)‪1‬ﻟ‬
‫ﺑﻘ ﺔ اﻷﻧﻤﺎط ‪(ctrl-f‬ﻓ ﻲ ‪windows ، grep‬ﻓ ﻲ ‪UNIX ،‬إﻟﺦ(‬
‫ﺒﻴﻘﺎ ت ﻣﻄﺎ‬
‫ﺘﻄﻮﻳﺮﺗﻄ‬
‫)‪2‬ﻟ‬
‫ﺘﺮﺟﻤﻴﻦ اﻟﻔﻮرﻳﻴﻦ وﻣﺎ إﱃ ذﻟﻚ‬
‫ﺘﺮﺟﻤﻴﻦ واﻟﻤ‬
‫ﺜﻞ اﻟﻤ‬
‫ﺘﺮﺟﻤﻴﻦ ﻣ‬
‫ﺘﻄﻮﻳﺮ اﻟﻤ‬
‫)‪3‬ﻟ‬
‫ﺗﻄﻮﻳﺮ اﻟﺪواﺋﺮ اﻟﺮﻗﻤﻴ ﺔ‬
‫)‪4‬‬
‫ﺜﻞ ‪TCP / IP‬و ‪UDP‬وﻣﺎ إﱃ ذﻟﻚ‪.‬‬
‫ﺗﺼﺎل ﻣ‬
‫ﺗﻮﻛﻮﻻ ت اﻻ‬
‫ﺑﺮو‬‫ﺘﻄﻮﻳﺮ‬
‫)‪5‬ﻟ‬

‫ﺘﺨﺪام وﺣﺪة ‪python: re‬‬


‫ﺑﺎﺳ‬‫ﺒﻴﺮ اﻟﻌﺎدي‬
‫ﺘﻌ‬‫ﺘﻨﺪة إﱃ اﻟ‬
‫ﺒﻴﻘﺎ ت اﻟﻤ ﺴ‬
‫ﺘﻄ‬‫ﻳﻤﻜﻨﻨﺎﺗﻄﻮﻳﺮ اﻟ‬

‫ﺑﺎﻟﻐ ﺔ‬‫ﺑ ﺴﻬﻮﻟ ﺔ‬‫ﺒﻴﺮا ت اﻟﻌﺎدﻳ ﺔ‬


‫ﺘﻌ‬‫ﺘﺨﺪام اﻟ‬
‫ﺘﻮي ﻫﺬه اﻟﻮﺣﺪة ﻋﲆ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻮﻇﺎﺋﻒ اﻟﻤﺪﻣﺠ ﺔ ﻻﺳ‬
‫ﺗﺤ‬
‫ﺗﻨﺎ‪.‬‬
‫ﺒﻴﻘﺎ‬
‫ﺗﻄ‬

‫ﺗﺠﻤﻴﻊ )(‬
‫)‪1‬‬
‫ﺘﺮﺟﻤ ﺔ ﻧﻤﻂ إﱃ ‪RegexObject.‬‬
‫ﺘﻮي وﺣﺪة اﻹرﺟﺎع ﻋﲆ داﻟ ﺔ )( ‪compile‬ﻟ‬
‫ﺗﺤ‬
‫ﻧﻤﻂ )"‪= re.compile ("ab‬‬

‫ﺘﺸﻒ ‪():‬‬
‫)‪2‬ﻣﻜ‬
‫ﺒﺎراة‬
‫ﺑﻘ ﺔ ﻟﻜﻞ ﻣ‬
‫ﺘﺞ ﻋﻨﻪ ﻛﺎﺋﻦ ﻣﻄﺎ‬
‫إرﺟﺎع ﻛﺎﺋﻦﺗﻜﺮاريﻳﻨ‬
‫)"‪matcher = pattern.finditer ("abaababa‬‬

‫ﺘﺎﻟﻴ ﺔ‪.‬‬
‫ﺘﺪﻋﺎء اﻟﻄﺮق اﻟ‬
‫ﻓ ﻲ ﻛﺎﺋﻦ ‪Match ،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﺎراة‬
‫ﺑﺪاﻳ ﺔ اﻟﻤ‬‫)( ‪1) start‬إرﺟﺎع ﻓﻬﺮس‬
‫ﺒﺎراة‬
‫)( ‪2) end‬إرﺟﺎع ﻧﻬﺎﻳ ﺔ ‪+ 1‬ﻓﻬﺮس اﻟﻤ‬
‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫)( ‪3) group‬إرﺟﺎع اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ‬

‫)‪= 0 2) pattern = re.compile ("ab") 3) matcher = pattern.finditer ("abaababa") 4‬‬


‫ﺑﻖ ‪match.end () ، "..." ، match.group ()) 7) print (" :‬‬
‫ﺑﻘ ﺔ ﻓ ﻲ اﻟﻤﻄﺎ‬
‫‪1) import re count‬ﻟﻠﻤﻄﺎ‬
‫ﺘﻜﺮارا ت‪" ، count) :‬‬
‫‪5) count + = 1 6) print (match.start () ، "..." ،‬ﻋﺪد اﻟ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫‪0 ... 2 ...‬أ ب‬

‫‪3 ... 5 ...‬أ ب‬

‫‪...7‬أ‪ ...‬ب‪5‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪167‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻜﺮارا ت‪3 :‬‬


‫ﻋﺪد اﻟ‬

‫ﺒﺎﺷﺮة ﻛﻮﺳﻴﻄ ﺔ إﱃ داﻟ ﺔ ‪finditer ().‬‬


‫ﻣﻼﺣﻈ ﺔ‪:‬ﻳﻤﻜﻨﻨﺎﺗﻤﺮﻳﺮ اﻟﻨﻤﻂ ﻣ‬

‫ﺑﻘ ﺔ ﻓ ﻲ‬
‫ﺘﻴﺮاد )‪re 2) count = 0 3) matcher = re.finditer ("ab"، "abaababa") 4‬ﻟﻠﻤﻄﺎ‬
‫)‪1‬اﺳ‬
‫ﺑﻖ ‪print (match.start ()، ".. . "، match.end ()،" ... "، match.group ()) 7) print (" :‬‬
‫اﻟﻤﻄﺎ‬
‫ﺘﻜﺮارا ت‪"، count) :‬‬
‫)‪5) count + = 1 6‬ﻋﺪد اﻟ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫‪0 ... 2 ...‬أ ب‬

‫‪3 ... 5 ...‬أ ب‬

‫‪...‬أ‪...‬ب ‪5‬ﻋﺪد ﻣﺮا ت اﻟﻈﻬﻮر‪3 :‬‬


‫‪7‬‬

‫ﻓﺌﺎ ت اﻷﺣﺮف‪:‬‬
‫ﺒﺤ ﺚ ﻓ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﺸﺨﺼﻴﺎ ت‬
‫ﺘﺨﺪام ﻓﺌﺎ ت اﻟﺸﺨﺼﻴﺎ ت ﻟﻠ‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬

‫]‪1) [abc‬إﻣﺎ أ أو ب أو ج‬
‫ﺜﻨﺎء ‪a‬و ‪b‬و ‪c‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫]‪2) [^ abc‬‬
‫ﺑﺠﺪي ﺻﻐﻴﺮ‬
‫]‪3) [az‬أي رﻣﺰ أ‬
‫ﺒﻴﺮ‬
‫ﺑﺠﺪي ﻛ‬
‫أي رﻣﺰ أ‬ ‫)‪]4‬ﻣﻦ اﻷﻟﻒ إﱃ اﻟﻴﺎء[‬
‫ﺑﺠﺪي‬
‫]‪5) [a-zA-Z‬أي رﻣﺰ أ‬
‫]‪6) [0-9‬أي رﻗﻢ ﻣﻦ ‪0‬إﱃ ‪9‬‬
‫ﺑﺠﺪي رﻗﻤ ﻲ‬
‫]‪7) [a-zA-Z0-9‬أي ﺣﺮف أ‬
‫ﺑﺠﺪﻳ ﺔ اﻟﺮﻗﻤﻴ ﺔ )اﻷﺣﺮف اﻟﺨﺎﺻ ﺔ(‬
‫ﺜﻨﺎء اﻷﺣﺮف اﻷ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫]‪8) [^ a-zA-Z0-9‬‬

‫ﺘﻴﺮاد )‪2) matcher = re.finditer ("x"، "a7b @ k9z") 3‬‬


‫)‪1‬اﺳ‬
‫ﺒﺎﻋ ﺔ ‪(match.start () ، "......" ،‬‬
‫ﺑﻖ ‪4) :‬ﻃ‬
‫ﺑﻘ ﺔ ﻓ ﻲ اﻟﻤﻄﺎ‬
‫‪re‬ﻟﻠﻤﻄﺎ‬
‫ﺑﻖ‪ .‬ﻣﺠﻤﻮﻋ ﺔ)((‬
‫ﺗﻄﺎ‬

‫]‪x = [abc‬‬ ‫]‪x = [^ abc‬‬ ‫س ]‪= [az‬‬ ‫‪= =[^[a-‬‬


‫‪a-zA-‬‬
‫]‪zA-=Z0-9‬‬
‫س ]‪[0-9‬‬
‫]‪Z0-9‬‬
‫‪0 ......‬أ‬ ‫‪...... 7‬‬ ‫‪1‬‬ ‫‪0 ......‬أ‬ ‫‪...... 1‬‬ ‫‪7‬‬
‫‪0 ......‬أ‬
‫‪3 ......‬‬ ‫@‬
‫‪ ......2‬ب‬ ‫@ ‪3 ......‬‬ ‫‪ 2 ......‬ب‬ ‫‪5 ...... 9‬‬ ‫‪1‬‬
‫‪...... 7‬‬
‫‪4 ......‬‬ ‫ك‬ ‫‪4 ......‬‬ ‫ك‬ ‫‪ ......2‬ب‬
‫‪5 ...... 9‬‬ ‫‪ 6 ......‬ض‬ ‫‪4‬‬
‫ك ‪......‬‬
‫‪ 6 ......‬ض‬ ‫‪5 ...... 9‬‬
‫‪ 6 ......‬ض‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪168‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒ ًﻘﺎ‪:‬‬
‫ﻓﺌﺎ ت اﻷﺣﺮف اﻟﻤﺤﺪدة ﻣ ﺴ‬
‫‪1) \ s‬ﺣﺮف اﻟﻤ ﺴﺎﻓ ﺔ‬
‫ﺜﻨﺎء ﺣﺮف اﻟﻤ ﺴﺎﻓ ﺔ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫‪2) \ S‬أي ﺣﺮف‬
‫أي رﻗﻢ ﻣﻦ ‪0‬إﱃ ‪9‬‬ ‫\ )‪3‬د‬
‫‪4) \ D‬أي ﺣﺮف ﻣﺎ ﻋﺪا اﻟﺮﻗﻢ‬
‫‪5) \ w‬أي ﺣﺮف ﻛﻠﻤ ﺔ ]‪[a-zA-Z0-9‬‬
‫‪6) \ W‬أي ﺣﺮف ﻣﺎ ﻋﺪا ﺣﺮف اﻟﻜﻠﻤ ﺔ )أﺣﺮف ﺧﺎﺻ ﺔ(‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻷﺣﺮف اﻟﺨﺎﺻ ﺔ‬‫‪7).‬أي ﺷﺨﺼﻴ ﺔ‬

‫ﺑﻘ ﺔ‬
‫ﺘﻴﺮاد )‪re 2) matcher = re.finditer ("x"، "a7b k @ 9z") 3‬ﻟﻠﻤﻄﺎ‬
‫)‪1‬اﺳ‬
‫ﺑﻖ ‪. hctam 4) print (match.start ()، "......"، :‬ﻣﺠﻤﻮﻋ ﺔ)((‬
‫ﻓ ﻲ اﻟﻤﻄﺎ‬

‫س \ = ق‪:‬‬ ‫س ‪= \ S:‬‬ ‫س \ =د‪:‬‬ ‫س \ =د‪:‬‬ ‫‪\ W:‬ث‪=:‬‬


‫س \=‬
‫س‬ ‫س =‪.‬‬

‫‪3 ......‬‬ ‫‪0 ......‬أ‬ ‫‪1 ...... 7‬‬ ‫‪0 ......‬أ‬ ‫‪3‬‬
‫‪0 ......‬أ‬
‫‪......‬‬ ‫‪0 ......‬أ‬
‫‪1‬‬
‫‪...... 7‬‬ ‫‪6 ...... 9‬‬ ‫‪ 2 ......‬ب‬ ‫‪1‬‬
‫‪...... 7‬‬ ‫@ ‪5 ......‬‬ ‫‪1 ...... 7‬‬
‫‪ 2 ......‬ب‬ ‫‪3 ......‬‬ ‫‪ ......2‬ب‬ ‫‪ 2 ......‬ب‬
‫‪4 ......‬‬ ‫ك‬ ‫‪4‬‬
‫ك ‪......‬‬ ‫‪4‬‬
‫ك ‪......‬‬ ‫‪3 ......‬‬
‫@ ‪5 ......‬‬ ‫@ ‪5 ......‬‬ ‫‪6 ...... 9‬‬ ‫‪4‬‬
‫ك ‪......‬‬
‫‪6 ...... 9‬‬ ‫‪...... 7‬‬
‫ض‬ ‫‪...... 7‬‬
‫ض‬ ‫@ ‪5 ......‬‬
‫‪7 ......‬‬ ‫ض‬ ‫‪6 ...... 9‬‬
‫‪7 ......‬‬ ‫ض‬

‫ﺗﻴﺎ ت‪:‬‬
‫اﻟﻘﻨﺎ‬
‫ﺘﻬﺎ‪.‬‬
‫ﺑﻘ‬‫ﺘﻜﺮارا ت اﻟﻤﺮاد ﻣﻄﺎ‬
‫ﺘﺤﺪﻳﺪ ﻋﺪد اﻟ‬
‫ﺘﺨﺪام اﻟﻤﺤﺪدا ت اﻟﻜﻤﻴ ﺔ ﻟ‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﻂ "أ"‬
‫ﺑﺎﻟﻀ‬‫واﺣﺪ‬ ‫)‪1‬أ‬
‫)‪2‬أ ‪+‬ﻋﲆ اﻷﻗﻞ واﺣﺪ "أ"‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻟﺮﻗﻢ ﺻﻔﺮ‬
‫*أي رﻗﻢ ﻣﻦ ‪a‬‬ ‫)‪3‬أ‬
‫)‪4‬أ؟ واﺣﺪ ﻋﲆ اﻷﻗﻞ "أ" أي إﻣﺎ رﻗﻢ ﺻﻔﺮي أو رﻗﻢ واﺣﺪ‬
‫ﺒﻂ م ﻋﺪد ﻣﻦ أ‬
‫)‪5‬أ }م{ ﺑﺎﻟﻀ‬
‫}‪6) a {m، n‬اﻟﺤﺪ اﻷدﻧﻰ ﻟﻌﺪد ‪m‬ﻣﻦ ‪a's‬واﻟﺤﺪ اﻷﻗﺼﻰ ﻟﻌﺪد ‪n‬ﻟـ ‪a's.‬‬

‫ﺘﻴﺮاد )‪re 2) matcher = re.finditer ("x"، "abaabaaab") 3‬‬


‫)‪1‬اﺳ‬
‫ﺑﻖ ‪print (match.start ()، "......"، match.group ( )) :‬‬
‫ﺑﻘ ﺔ ﻓ ﻲ اﻟﻤﻄﺎ‬
‫ﻟﻠﻤﻄﺎ‬
‫)‪ 4‬س =أ ؟‪:‬‬

‫‪0 ......‬أ‬
‫س =أ‪:‬‬ ‫س =أ ‪+:‬‬ ‫س =أ ‪*:‬‬ ‫س =أ=أ ‪{3}:‬‬
‫‪{2،4}:‬‬ ‫س‬
‫‪...... 1‬‬
‫‪0 ......‬أ‬ ‫‪0 ......‬أ‬ ‫‪0 ......‬أ‬ ‫‪5 ......‬‬
‫‪2 aaa‬أأ‬
‫‪......‬‬
‫‪2 ......‬أ‬
‫‪2 ......‬أ‬ ‫‪2 ......‬أأ‬ ‫‪1 ......‬‬ ‫‪5 ...... aaa‬‬
‫‪3 ......‬أ‬
‫‪3 ......‬أ‬ ‫‪5 ...... aaa‬‬ ‫‪2 ......‬أأ‬
‫‪...... 4‬‬
‫‪5 ......‬أ‬ ‫‪...... 4‬‬
‫‪5 ......‬أ‬
‫‪6 ......‬أ‬ ‫‪5 ...... aaa‬‬
‫‪6 ......‬أ‬
‫‪7 ......‬أ‬ ‫‪8 ......‬‬
‫‪7 ......‬أ‬
‫‪9 ......‬‬
‫‪8 ......‬‬
‫‪9 ......‬‬
‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪169‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﻣﻠﺤﻮﻇ ﺔ‪:‬‬

‫ﺑـ ‪x‬أم ﻻ‪.‬‬‫ﺒﺪأ‬


‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻬﺪفﺗ‬
‫‪1) ^ x‬ﺳﻴ‬
‫ﺑـ ‪x‬أم ﻻ‪.‬‬‫ﺘﻬ ﻲ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻬﺪفﺗﻨ‬
‫‪2) x $‬ﺳﻴ‬

‫وﻇﺎﺋﻒ ﻣﻬﻤ ﺔ ﻣﻦ ‪Remodule:‬‬


‫ﺑﻖ )(‬
‫ﺗﻄﺎ‬
‫)‪1‬‬
‫ﺒﺎراة ﻛﺎﻣﻠ ﺔ )(‬
‫)‪2‬ﻣ‬
‫ﺑﺤ ﺚ )(‬
‫)‪3‬‬
‫)( ‪4) findall‬‬
‫ﺘﺸﻒ )(‬
‫)‪5‬ﻣﻜ‬
‫)‪6‬ﻓﺮﻋ ﻲ )(‬
‫)( ‪7) subn‬‬
‫)‪8‬اﻧﻘ ﺴﺎم )(‬
‫ﺗﺠﻤﻴﻊ )(‬
‫)‪9‬‬

‫ﺑﻖ ‪():‬‬
‫ﺗﻄﺎ‬
‫)‪1‬‬
‫ﺘﻬﺪﻓ ﺔ‪.‬‬
‫ﺑﺪاﻳ ﺔ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬‫ﺘﺤﻘﻖ ﻣﻦ اﻟﻨﻤﻂ اﻟﻤﺤﺪد ﻓ ﻲ‬
‫ﺑﻘ ﺔ ﻟﻠ‬
‫ﺘﺨﺪام داﻟ ﺔ اﻟﻤﻄﺎ‬
‫•ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﺎﺣ ﺔ ‪ ،‬ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ ﻛﺎﺋﻦ ‪Match ،‬وإﻻ ﻓﻠﻦ ﻧﺤﺼﻞ ﻋﲆ ‪None.‬‬
‫ﺑﻘ ﺔ ﻣ‬
‫•إذا ﻛﺎﻧ ﺖ اﻟﻤﻄﺎ‬

‫ﺘﺤﻘﻖ‪"abcabdefg") 4) if m! = None: 5) print ("Match :‬‬


‫ﻧﻤﻄﺎ ﻟﻠ‬
‫ً‬ ‫‪")1) import re 2) s = input‬أدﺧﻞ‬
‫ﺑﺪاﻳ ﺔ اﻟ ﺴﻠ ﺴﻠ ﺔ ‪End Index: "، m.end ()) 7) else: 8) print (" Match‬‬‫ﺘﺎح ﻓ ﻲ‬
‫‪") 3) m = re.match (s،‬ﻣ‬
‫ﺑﺪاﻳ ﺔ اﻟ ﺴﻠ ﺴﻠ ﺔ )"‬‫ﺘﻮﻓﺮ ﻓ ﻲ‬
‫‪") 6) print (" Start Index: "، m.start ()، " and‬ﻏﻴﺮ ﻣ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫ﺘﺤﻘﻖ ﻣﻨﻪ‪abc :‬‬
‫أدﺧﻞ اﻟﻨﻤﻂ اﻟﻤﺮاد اﻟ‬
‫ﺑﺪاﻳ ﺔ اﻟ ﺴﻠ ﺴﻠ ﺔ‬‫ﺘﺎح ﻓ ﻲ‬
‫ﺑﻖ ﻣ‬
‫ﺘﻄﺎ‬
‫اﻟ‬
‫ﺒﺪاﻳ ﺔ‪0 :‬وﻣﺆﺷﺮ اﻟﻨﻬﺎﻳ ﺔ‪3 :‬‬
‫ﻣﺆﺷﺮ اﻟ‬

‫د‪\ python_classes> py test.py :‬‬


‫ﺘﺤﻘﻖ‪bde :‬‬
‫أدﺧﻞ اﻟﻨﻤﻂ ﻟﻠ‬
‫ﺑﺪاﻳ ﺔ اﻟ ﺴﻠ ﺴﻠ ﺔ‬‫ﺘﺎح ﻓ ﻲ‬
‫ﺑﻖ ﻏﻴﺮ ﻣ‬
‫ﺘﻄﺎ‬
‫اﻟ‬

‫ﺒﺎراة ﻛﺎﻣﻠ ﺔ ‪():‬‬


‫)‪2‬ﻣ‬
‫ﺘﻬﺪﻓ ﺔ‪ .‬أي ﻛﺎﻣﻠ ﺔ‬
‫ﺑﻘ ﺔ ﻧﻤﻂ ﻣﻊ ﻛﻞ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬
‫ﺘﺨﺪام وﻇﻴﻔ ﺔ )( ‪fullmatch‬ﻟﻤﻄﺎ‬
‫•ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺑﻘ ﺔ اﻟ ﺴﻠ ﺴﻠ ﺔ وﻓ ًﻘﺎ ﻟﻠﻨﻤﻂ اﻟﻤﺤﺪد‪.‬‬
‫ﻳﺠ ﺐ ﻣﻄﺎ‬
‫ﺘﻢ ذﻟﻚ‬
‫ُﺮﺟﻊ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻛﺎﺋﻦ ‪Match‬وإﻻ ﻓ ﺴﻴ‬
‫ﺘ‬
‫ﺑﻘ ﺖ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻜﺎﻣﻠ ﺔ ‪ ،‬ﻓ ﺴ‬
‫•إذاﺗﻄﺎ‬
‫ﺑﻼ‪.‬‬‫إرﺟﺎع‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪170‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺤﻘﻖ‪") :‬‬
‫‪")1) import re 2) s = input‬أدﺧﻞ اﻟﻨﻤﻂ ﻟﻠ‬

‫‪("Full String matching") 6) else: 7) print ("Full String‬‬

‫‪= re.fullmatch (s، "ababab") 4) if m! = None: 5) print‬‬


‫ﺑﻘ ﺔ"(‬
‫ﺘﻄﺎ‬
‫‪3) m‬ﻏﻴﺮ ﻣ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫ﺘﺤﻘﻖ‪ :‬أ ب‬
‫أدﺧﻞ ﻧﻤﻂ ﻟﻠ‬
‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻜﺎﻣﻠ ﺔ ﻏﻴﺮ ﻣ‬

‫د‪\ python_classes> py test.py :‬‬


‫ﺘﺤﻘﻖ ﻣﻨﻪ‪ababab :‬‬
‫أدﺧﻞ اﻟﻨﻤﻂ اﻟﻤﺮاد اﻟ‬
‫ﺑﻘ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺳﻠ ﺴﻠ ﺔ ﻛﺎﻣﻠ ﺔ ﻣ‬

‫ﺒﺤ ﺚ ‪():‬‬
‫)‪3‬اﻟ‬
‫ﺘﻬﺪﻓ ﺔ‪.‬‬
‫ﺒﺤ ﺚ ﻋﻦ اﻟﻨﻤﻂ اﻟﻤﺤﺪد ﻓ ﻲ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬
‫ﺘﺨﺪام وﻇﻴﻔ ﺔ )( ‪search‬ﻟﻠ‬
‫•ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺜﻞ أوﻻ ً‬
‫ﺑﺈرﺟﺎع ﻛﺎﺋﻦ ‪Match‬اﻟﺬيﻳﻤ‬‫ﺣﺎ ‪ ،‬ﻓﺈﻧﻪﻳﻘﻮم‬
‫ﺘﺎ ً‬
‫ﺑﻖ ﻣ‬
‫ﺘﻄﺎ‬
‫•إذا ﻛﺎن اﻟ‬
‫ﺒﺎراة‪.‬‬
‫ﺣﺪو ث اﻟﻤ‬

‫ﺑﻼ‬‫ﺘﺎﺣ ﺔ ‪ ،‬ﻓﺈﻧﻬﺎﺗﺮﺟﻊ‬
‫ﺒﺎراة ﻣ‬
‫•إذا ﻟﻢﺗﻜﻦ اﻟﻤ‬

‫ﺘﺤﻘﻖ‪4) :‬‬
‫ﻧﻤﻄﺎ ﻟﻠ‬
‫ً‬ ‫ﺘﻴﺮاد ‪")re 2) s = input‬أدﺧﻞ‬
‫)‪1‬اﺳ‬
‫ﺑﻼ‪5) :‬‬
‫)"‪") 3) m = re.search (s، "abaaaba‬إذا ﻛﺎن = !‪m‬‬
‫ﺘﺎﺣ ﺔ"( )‪6‬‬
‫ﺑﻘ ﺔ ﻣ‬
‫ﺒﺎﻋ ﺔ )"اﻟﻤﻄﺎ‬
‫ﻃ‬

‫ﺒﺪاﻳ ﺔ‪"m.start () ، ، ":‬وﻣﺆﺷﺮ اﻟﻨﻬﺎﻳ ﺔ‪m. ، ":‬‬


‫ﺑﻘ ﺔ ﻣﻊ ﻓﻬﺮس اﻟ‬
‫‪")print‬أول ﻇﻬﻮر ﻟﻠﻤﻄﺎ‬
‫)"‪end ()) 7) else: 8) print ("Match is not available‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫ﺘﺤﻘﻖ ﻣﻨﻪ‪aaa :‬‬
‫أدﺧﻞ اﻟﻨﻤﻂ اﻟﻤﺮاد اﻟ‬
‫ﺘﺎﺣ ﺔ‬
‫ﺒﺎراة ﻣ‬
‫اﻟﻤ‬
‫ﺒﺪاﻳ ﺔ‪2 :‬وﻣﺆﺷﺮ اﻟﻨﻬﺎﻳ ﺔ‪5 :‬‬
‫ﺑﻘ ﺔ ﻣﻊ ﻣﺆﺷﺮ اﻟ‬
‫أول ﻇﻬﻮر ﻟﻠﻤﻄﺎ‬

‫د‪\ python_classes> py test.py :‬‬


‫ﺘﺤﻘﻖ ﻣﻨﻪ‪bbb :‬‬
‫أدﺧﻞ اﻟﻨﻤﻂ اﻟﻤﺮاد اﻟ‬
‫ﺘﻮﻓﺮة‬
‫ﺑﻘ ﺔ ﻏﻴﺮ ﻣ‬
‫اﻟﻤﻄﺎ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪171‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫‪4) findall ():‬‬


‫ﺒﺎراة‪.‬‬
‫ﺜﻮر ﻋﲆ ﺟﻤﻴﻊﺗﻜﺮارا ت اﻟﻤ‬
‫•ﻟﻠﻌ‬

‫ﺘﻜﺮارا ت‪.‬‬
‫ﺘﻮي ﻋﲆ ﺟﻤﻴﻊ اﻟ‬
‫ﺑﺈرﺟﺎع ﻛﺎﺋﻦ ﻗﺎﺋﻤ ﺔﻳﺤ‬‫ﺗﻘﻮم ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‬
‫•‬

‫ﺘﻴﺮاد )‪2) l = re.findall ("[0-9]"، "a7b9c5kz") 3‬‬


‫)‪1‬اﺳ‬
‫ﺒﺎﻋ ﺔ )‪(l‬‬
‫‪re‬ﻃ‬

‫اﻹﺧﺮاج‪['7'، '9'، '5'] :‬‬

‫ﺘﺸﻒ ‪():‬‬
‫)‪5‬ﻣﻜ‬
‫ﺒﺎراة‪.‬‬
‫ﺑﻖ ﻟﻜﻞ ﻣ‬
‫ﺘﺞ ﻋﻨﻪ ﻛﺎﺋﻦﺗﻄﺎ‬
‫إرﺟﺎع اﻟﻤﻜﺮر اﻟﺬيﻳﻨ‬

‫ﺘﺪﻋﺎء وﻇﺎﺋﻒ )( ‪start‬و )( ‪end‬و ‪group ().‬‬


‫ﺑﻖﻳﻤﻜﻨﻨﺎ اﺳ‬
‫•ﻓ ﻲ ﻛﻞ ﻛﺎﺋﻦﺗﻄﺎ‬

‫ﺘﻴﺮاد )‪re 2) itr = re.finditer ("[az]"، "a7b9c5k8z") 3‬‬


‫)‪1‬اﺳ‬
‫ﻟـ )‪m in itr: 4‬‬

‫ﺒﺎﻋ ﺔ ))( ‪(m.start () ، "..." ، m.end () ، "..." ، m.group‬‬


‫ﻃ‬

‫اﻹﺧﺮاج‪D: \ python_classes> py test.py :‬‬


‫‪0 ... 1 ...‬أ‬
‫‪ 2 ... 3 ...‬ب‬
‫‪4 ... 5 ...‬ج‬

‫ك ‪6 ... 7 ...‬‬
‫‪ 8 ... 9 ...‬ض‬

‫)‪6‬ﻓﺮﻋ ﻲ ‪():‬‬
‫ﺒﺪال‪.‬‬
‫ﺘ‬‫ﺒﺪال أو اﻻﺳ‬
‫ﺘ‬‫ﺗﻌﻨ ﻲ اﻻﺳ‬
‫•‬

‫ﺒﺪال ‪targetstring) ،‬‬


‫ﺘ‬‫‪• re.sub (regex ،‬اﺳ‬

‫ﺒﺪال اﻟﻤﻘﺪم‪.‬‬
‫ﺘ‬‫ﺑﻖ ﻣﻊ اﻻﺳ‬
‫ﺘﻄﺎ‬
‫ﺒﺪال ﻛﻞ ﻧﻤﻂ ﻣ‬
‫ﺘ‬‫ﺘﻢ اﺳ‬
‫ﺘﻬﺪﻓ ﺔ ‪،‬ﺳﻴ‬
‫•ﻓ ﻲ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬

‫ﺒﺎﻋ ﺔ )ﻧ ﺴﺦ(‬
‫ﺘﻴﺮاد )‪re 2) s = re.sub ("[az]"، "#"، "a7b9c5k8z") 3‬ﻃ‬
‫)‪1‬اﺳ‬

‫اﻹﺧﺮاج‪# 7 # 9 # 5 # 8 # :‬‬
‫ﺑﺮﻣﺰ ‪#‬‬‫ﺑﺠﺪي‬
‫ﺒﺪال ﻛﻞ رﻣﺰ أ‬
‫ﺘ‬‫ﺘﻢ اﺳ‬
‫ﻳ‬

‫‪7) subn ():‬‬


‫ﺒﺪاﻻ ت‪.‬‬
‫ﺘ‬ ‫ﺜﻞ ‪sub‬إﻻ أﻧﻪﻳﻤﻜﻨﻪ أ ً‬
‫ﻳﻀﺎ إرﺟﺎع ﻋﺪد اﻻﺳ‬ ‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫• ﻫﻮ ﻧﻔ ﺴﻪ‬

‫ﺒﺪاﻻ ت‪.‬‬
‫ﺘ‬‫ﺜﺎﻧ ﻲ ﻫﻮ ﻋﺪد اﻻﺳ‬
‫ﺘﻴﺠ ﺔ واﻟﻌﻨﺼﺮ اﻟ‬
‫ﺒﺎرة ﻋﻦﺳﻠ ﺴﻠ ﺔ ﻧ‬
‫ﺑﺈرﺟﺎع ﻣﺠﻤﻮﻋ ﺔ ﺣﻴ ﺚﻳﻜﻮن اﻟﻌﻨﺼﺮ اﻷول ﻋ‬‫ﺗﻘﻮم ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‬

‫ﺒﺪاﻻ ت(‬
‫ﺘ‬‫‪(resultstring،‬ﻋﺪد اﻻﺳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪172‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫"( ‪print (t) 4) print ("The Result String:"، t [0]) 5) print‬‬


‫)‪1) import re 2) t = re.subn ("[az]"، "#"، "a7b9c5k8z") 3‬‬
‫ﺒﺪاﻻ ت‪t [1]) ، ":‬‬
‫ﺘ‬‫ﻋﺪد اﻻﺳ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫)‪('# 7 # 9 # 5 # 8 #'، 5‬‬
‫ﺘﻴﺠ ﺔ‪# 7 # 9 # 5 # 8 # :‬‬
‫ﺳﻠ ﺴﻠ ﺔ اﻟﻨ‬
‫ﺒﺪاﻻ ت‪5 :‬‬
‫ﺘ‬‫ﻋﺪد اﻻﺳ‬

‫)‪8‬اﻻﻧﻘ ﺴﺎم ‪():‬‬


‫ﺑﺬﻟﻚ‬‫ﺘﻬﺪﻓ ﺔ اﻟﻤﺤﺪدة وﻓ ًﻘﺎ ﻟﻨﻤﻂ ﻣﻌﻴﻦ ﻓﺈﻧﻨﺎ ﻧﻘﻮم‬
‫•إذا أردﻧﺎﺗﻘ ﺴﻴﻢ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬
‫ﻳﺠ ﺐ أنﺗﺬ ﻫ ﺐ ﻟﻮﻇﻴﻔ ﺔ ‪Split ().‬‬
‫ﺑﺠﻤﻴﻊ اﻟﺮﻣﻮز اﻟﻤﻤﻴﺰة‪.‬‬‫ﺑﺈرﺟﺎع ﻗﺎﺋﻤ ﺔ‬‫ﺗﻘﻮم ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‬
‫•‬

‫ﺘﻴﺮاد )‪vinny، pinny") 3) print (l) 4) for t in l: 5) print (t‬‬


‫)‪1‬اﺳ‬
‫‪re 2) l = re.split ("،"، "sunny، bunny، chinny،‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫]'‪['sunny'، 'bunny'، 'chinny'، 'vinny'، 'pinny‬‬
‫ﻣﺸﻤ ﺲ‬
‫اﻻرﻧ ﺐ‬
‫ذﻗﻦ‬
‫ﻓﻴﻨ ﻲ‬
‫ﻣﺌﺰر أﻃﻔﺎل‬

‫ﺘﻴﺮاد )‪re.split ("\."، "www.durgasoft.com") 3‬‬


‫)‪1‬اﺳ‬
‫= ‪re 2) l‬ﻟـ )‪t in l: 4) print (t‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫‪www‬‬
‫دورﺟﺎﺳﻮﻓ ﺖ‬
‫ﻛﻮم‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪173‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫^ )‪9‬اﻟﺮﻣﺰ‪:‬‬
‫ﺘﺨﺪاﻣﻬﺎ‬
‫ﺘﻮﻓﺮة ﻟﺪﻳﻨﺎ •ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺑﺎﻟﻘﻴﻤ ﺔ اﻟﻤ‬‫ﺒﺪأ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻬﺪف اﻟﻤﺤﺪدةﺗ‬
‫^ﻟﻠ‬
‫ﻧﻤﻂ أم ﻻ‪.‬‬

‫ﺜﺎل‪res = re.search ("^ Learn"، s) :‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫•ﻋﲆﺳ‬

‫ﺘﻌﻮد‬
‫ﺘﻌﻴﺪ ﻛﺎﺋﻦ ‪Match ،‬وإﻻﺳ‬
‫ﺑـ ‪Learn ،‬ﻓ ﺴ‬‫ﺘﻬﺪﻓ ﺔ‬
‫ﺑﺪأ ت اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬‫•إذا‬
‫ﻻ أﺣﺪ‪.‬‬

‫‪test.py‬‬

‫ﺗﻌﻠﻢ ‪Python‬ﺳﻬﻞ ﺟﺪًا" ‪5) print ("Target String‬‬


‫= ‪"1) import re 2) s‬‬
‫ﺑـ )"‪with Learn‬‬‫ﺒﺪأ‬
‫ﺗ‬‫‪3) res = re.search ("^ Learn"، s) 4) if res! = None:‬‬
‫‪Learn") 6) else: 7) print ("Target String Not Start‬‬

‫ﺑـ ‪Learn‬‬‫ﺒﺪأ‬
‫ﺘﻬﺪﻓ ﺔﺗ‬
‫اﻹﺧﺮاج‪ :‬اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬

‫)‪10‬رﻣﺰ ‪$:‬‬
‫ﺑـ‬‫ﺘﻬ ﻲ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻬﺪف اﻟﻤﺤﺪدةﺗﻨ‬
‫ﺘﺨﺪام اﻟﺮﻣﺰ ‪$‬ﻟﻠ‬
‫•ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﻗﺪﻣ ﺖ ﻧﻤﻂ أم ﻻ‪.‬‬

‫ﺜﺎل‪res = re.search ("Easy $"، s) :‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫•ﻋﲆﺳ‬

‫ﺘﻌﻴﺪ ﻛﺎﺋﻦ ‪Match ،‬وإﻻ‬


‫ﺑـ ‪Easy ،‬ﻓ ﺴ‬‫ﺘﻬﺪﻓ ﺔ‬
‫ﺘﻬ ﺖ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬
‫•إذا اﻧ‬
‫ﺑﻼ‪.‬‬‫إرﺟﺎع‬

‫‪test.py‬‬

‫ﺗﻌﻠﻢ ‪Python‬ﺳﻬﻞ ﺟﺪًا" ‪print ("Target String‬‬


‫= ‪"1) import re 2) s‬‬
‫ﺑـ )‪7‬‬‫ﺘﻬ ﻲ‬
‫ﺗﻨ‬‫)‪3) res = re.search ("Easy $"، s) 4) if res! = None: 5‬‬
‫ﺑـ )"‪Easy‬‬‫ﺘﻬ ﻲ‬
‫ﺘﻬﺪﻓ ﺔ ﻻﺗﻨ‬
‫ﺒﺎﻋ ﺔ )"اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬
‫‪Easy") 6) else:‬ﻃ‬

‫ﺑـ "ﺳﻬﻞ"‬‫ﺘﻬ ﻲ‬
‫ﺘﻬﺪﻓ ﺔﺗﻨ‬
‫اﻹﺧﺮاج‪ :‬اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬

‫ﺜ ﺔ ‪re.IGNORECASE‬ﻟﻮﻇﻴﻔ ﺔ ‪search ().‬‬


‫ﺜﺎﻟ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬إذا أردﻧﺎﺗﺠﺎ ﻫﻞ اﻟﺤﺎﻟ ﺔ ‪ ،‬ﻓﻌﻠﻴﻨﺎﺗﻤﺮﻳﺮ اﻟﻮﺳﻴﻄ ﺔ اﻟ‬

‫ﺜﺎل‪res = re.search ("easy $"، s، re.IGNORECASE) :‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪174‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫‪test.py‬‬

‫ﺗﻌﻠﻢ ‪Python‬ﺳﻬﻞ ﺟﺪًا" )‪3) res = re.search ("easy $"، s، re.IGNORECASE) 4‬إذا‬
‫= ‪"1) import re 2) s‬‬

‫ﺒﺎﻋ ﺔ "(‬
‫ﺘﻬﺪﻓ ﺔ ﻣﻊ ‪Easy‬ﻋﻦ ﻃﺮﻳﻖﺗﺠﺎ ﻫﻞ اﻟﺤﺎﻟ ﺔ )‪") 6‬وإﻻ‪7) :‬ﻃ‬
‫ﺘﻬ ﻲ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬
‫ﺗﻨ‬‫ﺒﺎﻋ ﺔ )"‬
‫ﺑﻼ‪5) :‬ﻃ‬
‫اﻟﺪﻗ ﺔ! =‬

‫ﺘﺠﺎ ﻫﻞ اﻟﺤﺎﻟ ﺔ )"‬


‫ﺑ‬‫ﺑـ ‪Easy‬‬‫ﺘﻬ ﻲ‬
‫ﺘﻬﺪﻓ ﺔ ﻻﺗﻨ‬
‫اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬

‫ﺘﺠﺎ ﻫﻞ اﻟﺤﺎﻟ ﺔ‬
‫ﺑ‬‫ﺑـ ‪Easy‬‬‫ﺘﻬﺪﻓ ﺔ‬
‫ﺘﻬ ﻲ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻤ ﺴ‬
‫اﻹﺧﺮاج‪:‬ﺗﻨ‬

‫ﺜﻴﻞ ﻛﻞ ‪Yava‬‬
‫ﺘﻤ‬‫ﺒﻴ ﺮًا ﻋﺎدﻳًﺎ ﻟ‬
‫ﺘ ﺐﺗﻌ‬
‫ﺒﻴﻖ )‪1‬اﻛ‬
‫ﺘﻄ‬‫اﻟ‬
‫ﻣﻌﺮﻓﺎ ت اﻟﻠﻐ ﺔ‬
‫ﻗﻮاﻋﺪ‪:‬‬
‫ﺑﻬﺎ ﻫ ﻲ ‪az ،‬و ‪AZ ،‬و‪ ، -0‬و ‪#‬‬‫)‪1‬اﻷﺣﺮف اﻟﻤ ﺴﻤﻮح‬

‫)‪2‬ﻳﺠ ﺐ أنﻳﻜﻮن اﻟﺤﺮف اﻷول رﻣ ًﺰا أ‬


‫ﺑﺠﺪﻳًﺎ ﺻﻐﻴ ﺮًا ﻣﻦ ‪a‬إﱃ ‪k‬‬

‫ﺒﻞ اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ‪3‬‬


‫رﻗﻤﺎﻳﻘ‬
‫ً‬ ‫ﺜﺎﻧ ﻲ‬
‫)‪3‬ﻳﺠ ﺐ أنﻳﻜﻮن اﻟﺤﺮف اﻟ‬

‫)‪4‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻃﻮل اﻟﻤﻌﺮف ﻋﲆ اﻷﻗﻞ ‪2.‬‬

‫* ]‪[ak] [0369] [a-zA-Z0-9 #‬‬

‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن اﻟﻤﻌﻄﻰ‬


‫ﺑﺮﻧﺎﻣﺞ ‪Python‬ﻟﻠ‬‫ﺘﺐ‬
‫ﺒﻴﻖ )‪2‬اﻛ‬
‫ﺘﻄ‬‫اﻟ‬
‫‪ String‬ﻫ ﻲ ﻣﻌﺮف ﻟﻐ ﺔ ‪Yava‬أم ﻻ؟‬

‫)‪("Enter Identifier:") 3) m = re.fullmatch ("[ak] [0369] [a-zA-Z0-9 #] *"، s) 4‬‬

‫‪1) import re 2) s = input‬إذا ﻛﺎن = ! ‪m‬ﻻ ﺷ ﻲء‪(s، "is valid Yava Identifier") :‬‬

‫‪5) print (s، "is valid Yava Identifier") 6) else: 7) print‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫أدﺧﻞ اﻟﻤﻌﺮف‪a6kk9z ## :‬‬

‫‪ a6kk9z ##‬ﻫﻮ ﻣﻌﺮف ‪ Yava‬ﺻﺎﻟﺢ‬

‫د‪\ python_classes> py test.py :‬‬


‫أدﺧﻞ اﻟﻤﻌﺮف‪k9b876 :‬‬

‫‪ k9b876‬ﻫﻮ ﻣﻌﺮف ‪ Yava‬ﺻﺎﻟﺢ‬

‫د‪\ python_classes> py test.py :‬‬


‫أدﺧﻞ اﻟﻤﻌﺮف‪k7b9 :‬‬

‫ّ ف ‪Yava‬‬
‫‪k7b9‬ﻏﻴﺮ ﺻﺎﻟﺢ ﻣﻌ ﺮ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪175‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻴﻞ ﻛﻞ ‪10‬أرﻗﺎم‬
‫ﺘﻤ‬‫ﺒﻴ ًﺮا ﻋﺎدﻳًﺎ ﻟ‬
‫ﺘ ﺐﺗﻌ‬
‫ﺒﻴﻖ )‪3‬اﻛ‬
‫ﺘﻄ‬‫اﻟ‬

‫ﺗﻒ اﻟﻤﺤﻤﻮﻟ ﺔ‬
‫أرﻗﺎم اﻟﻬﻮا‬
‫ﻗﻮاﻋﺪ‪:‬‬

‫ﺒﻂ‬
‫ﺑﺎﻟﻀ‬‫ﺘﻮي ﻛﻞ رﻗﻢ ﻋﲆ ‪10‬أرﻗﺎم‬
‫)‪1‬ﻳﺠ ﺐ أنﻳﺤ‬
‫ﺷﺎرع‬

‫ﻳﺠ ﺐ أنﻳﻜﻮن اﻟﺮﻗﻢ ‪7‬أو ‪8‬أو ‪9‬‬ ‫‪2) 1‬‬

‫]‪[7-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9‬‬
‫أو‬

‫}‪[7-9] [0-9] {9‬‬


‫أو‬

‫}‪[7-9] \ d {9‬‬

‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن اﻟﻤﻌﻄﻰ‬


‫ﺑﺮﻧﺎﻣﺞ ‪Python‬ﻟﻠ‬‫ﺘﺐ‬
‫ﺒﻴﻖ )‪4‬اﻛ‬
‫ﺘﻄ‬‫اﻟ‬

‫ﺗﻒ ﺻﺤﻴﺢ أم ﻻ؟‬


‫رﻗﻢ اﻟﻬﺎ‬

‫ﺘﻴﺮاد = ‪re 2) n‬إدﺧﺎل )"أدﺧﻞ اﻟﺮﻗﻢ‪{9}" ، n) 4) (":‬‬


‫)‪1‬اﺳ‬
‫ﺑﻼ‪5) :‬‬
‫‪3) m = re.fullmatch ("[7-9] \ d‬إذا ﻛﺎن = !‪m‬‬
‫ﺒﻊ )"رﻗﻢ‬
‫ﺗﻒ ﻣﺤﻤﻮل ﺻﺎﻟﺢ"( )‪6‬وإﻻ‪7) :‬اﻃ‬
‫ﺒﻊ )"رﻗﻢ ﻫﺎ‬
‫اﻃ‬
‫ﺗﻒ اﻟﻤﺤﻤﻮل ﻏﻴﺮ ﺻﺎﻟﺢ"(‬
‫اﻟﻬﺎ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫أدﺧﻞ اﻟﺮﻗﻢ‪9898989898 :‬‬

‫رﻗﻢ ﺟﻮال ﺻﺎﻟﺢ‬

‫د‪\ python_classes> py test.py :‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ‪6786786787 :‬‬

‫رﻗﻢ اﻟﺠﻮال ﻏﻴﺮ ﺻﺎﻟﺢ‬

‫د‪\ python_classes> py test.py :‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ‪898989 :‬‬

‫رﻗﻢ اﻟﺠﻮال ﻏﻴﺮ ﺻﺎﻟﺢ‬

‫ﺘﻢ ﺧﻠﻂ‬
‫ﺗﻒ اﻟﻤﺤﻤﻮﻟ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ‪input.txt‬ﺣﻴ ﺚﻳ‬
‫ﺘﺨﺮاج ﺟﻤﻴﻊ أرﻗﺎم اﻟﻬﻮا‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬ﻻﺳ‬‫ﺘﺐ‬
‫ﺒﻴﻖ )‪5‬اﻛ‬
‫ﺘﻄ‬‫اﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻨﺺ اﻟﻌﺎدي‬
‫ﺑ‬‫اﻷرﻗﺎم‬

‫ﺘﺢ )"‪("input.txt"، "r") 3) f2 = open ("output.txt"، "w‬‬


‫ﺘﻴﺮاد = ‪re 2) f1‬ﻓ‬
‫)‪1‬اﺳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪176‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

all Mobile Numbers into output.txt") 9) f1.close () 10) f2.close () ‫ﻟﻠ ﺴﻄﺮ ﻓ ﻲ‬4)
‫ﻓ ﻲ‬n ‫ﺳﻄﺮ( ﻟـ‬list = re.findall ("[7-9] \ d {9}"f1:
، 5) 6) 7) 8) print ("Extracted
:‫اﻟﻘﺎﺋﻤ ﺔ‬

f2.write (n + "\ n")

‫ﺒﻴﺮا ت اﻟﻌﺎدﻳ ﺔ‬
‫ﺘﻌ‬‫ﺘﺨﺪام اﻟ‬
‫ﺑﺎﺳ‬‫ﺗﺠﺮﻳﻒ اﻟﻮﻳ ﺐ‬
‫ﺒﺮﻳﺪ وأرﻗﺎم‬
‫ﺜﻞ ﻣﻌﺮﻓﺎ ت اﻟ‬
‫ﺑ ﺔ ﻟﺪﻳﻨﺎ ﻣ‬
‫ﺑﻘ ﺔ اﻷﻧﻤﺎط اﻟﻤﻄﻠﻮ‬
‫ ﻓ ﻲﺗﺠﺮﻳﻒ اﻟﻮﻳ ﺐ ﻟﻤﻄﺎ‬.‫ﺗ ﺴﻤﻰ ﻋﻤﻠﻴ ﺔ ﺟﻤﻊ اﻟﻤﻌﻠﻮﻣﺎ ت ﻣﻦ ﺻﻔﺤﺎ ت اﻟﻮﻳ ﺐﺗﺠﺮﻳﻒ اﻟﻮﻳ ﺐ‬
.‫ﺒﻴﺮا ت اﻟﻌﺎدﻳ ﺔ‬
‫ﺘﻌ‬‫ﺘﺨﺪام اﻟ‬
‫ﻳﻤﻜﻨﻨﺎ اﺳ‬، ‫اﻟﺠﻮال‬

title = re.findall ("<title>. * </title>"، str (text)، re.I) 9) 10) print (title [0])
s) 7) u = urllib.request.urlopen ("http: //" + s + ".com") 8) text = u.read ()
rediff" .split () 4) print (sites) 5) for s in sites: 6) print ("Searching ..."،
1) import re، urllib 2) import urllib.request 3) sites = "google

‫ﺒﻴﺮا ت اﻟﻌﺎدﻳ ﺔ‬
‫ﺘﻌ‬‫واﻟ‬Web Scraping ‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬
redbus.in ‫ﺗﻒ‬
‫ﺑﺮﻧﺎﻣﺞ ﻟﻠﺤﺼﻮل ﻋﲆ ﺟﻤﻴﻊ أرﻗﺎم ﻫﻮا‬

3) u = urllib.request.urlopen ("https://www.redbus.in/info/contactus") 4) text = u.read () 5)


re.I) 6) ، (‫ =)ﻧﺺ‬re.findall ("[0-9 -] {7} [0-9 -] +" ، str ‫أرﻗﺎم‬1) import re، urllib 2) import urllib.request
(n) ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬7) : ‫ﺑﺎﻷرﻗﺎم‬
n ‫ﻟـ‬

‫ ﺻﺎﻟﺢ أم ﻻ؟‬gmail ‫ﺒﺮﻳﺪ اﻟﻤﺤﺪد ﻫﻮ ﻣﻌﺮف‬


‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن ﻣﻌﺮف اﻟ‬
‫ﻟﻠ‬Python ‫ﺑﺮﻧﺎﻣﺞ‬‫ﺘﺐ‬
‫اﻛ‬

Z0-9 _.] * @ gmail [.] com"، s) 4 ) (":‫ﺒﺮﻳﺪ‬


‫)"أدﺧﻞ ﻣﻌﺮف اﻟ‬re 2) s = input ‫ﺘﻴﺮاد‬
‫اﺳ‬1)
‫ﺑﺮﻳﺪ ﺻﺎﻟﺢ"( ؛‬‫ﺒﺎﻋ ﺔ )"ﻣﻌﺮف‬
‫ﻃ‬5) :‫ﻻ ﺷ ﻲء‬m! = ‫إذا ﻛﺎن‬3) m = re.fullmatch ("\ w [a-zA-

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬


- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
177 040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺒﺮﻳﺪ ﻏﻴﺮ ﺻﺎﻟﺢ"(‬


‫ﺒﺎﻋ ﺔ )"ﻣﻌﺮف اﻟ‬
‫)‪6‬وإﻻ‪7) :‬ﻃ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫ﺒﺮﻳﺪ‪[email protected] :‬‬
‫أدﺧﻞ ﻣﻌﺮف اﻟ‬
‫ﺑﺮﻳﺪ ﺻﺎﻟﺢ‬‫ﻣﻌﺮف‬

‫د‪\ python_classes> py test.py :‬‬


‫ﺒﺮﻳﺪ‪durgatoc :‬‬
‫أدﺧﻞ ﻣﻌﺮف اﻟ‬
‫ﺒﺮﻳﺪ ﻏﻴﺮ ﺻﺎﻟﺢ‬
‫ﻣﻌﺮف اﻟ‬

‫د‪\ python_classes> py test.py :‬‬


‫ﺒﺮﻳﺪ‪[email protected] :‬‬
‫أدﺧﻞ ﻣﻌﺮف اﻟ‬
‫ﺒﺮﻳﺪ ﻏﻴﺮ ﺻﺎﻟﺢ‬
‫ﻣﻌﺮف اﻟ‬

‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن رﻗﻢﺗ ﺴﺠﻴﻞ اﻟ ﺴﻴﺎرة اﻟﻤﻘﺪم ﺻﺎﻟﺤًﺎ أم ﻻ؟‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬ﻟﻠ‬‫ﺘﺐ‬
‫اﻛ‬

‫ﺒ ﺔ‪{2} \ d {4}" ، s ) 4) (":‬‬


‫‪")1) import re 2) s = input‬أدﺧﻞ رﻗﻢﺗ ﺴﺠﻴﻞ اﻟﻤﺮﻛ‬
‫ﺒﻊ‬
‫]‪3) m = re.fullmatch ("TS [012] [0-9] [AZ‬إذا ﻛﺎن = !‪m‬ﻻ ﺷ ﻲء‪5) :‬اﻃ‬
‫ﺒ ﺔ ﻏﻴﺮ ﺻﺎﻟﺢ"(‬
‫ﺒﻊ )"رﻗﻢﺗ ﺴﺠﻴﻞ اﻟﻤﺮﻛ‬
‫ﺒ ﺔ ﺻﺎﻟﺢ"( ؛ )‪6‬وإﻻ‪7) :‬اﻃ‬
‫)"رﻗﻢﺗ ﺴﺠﻴﻞ ﻣﺮﻛ‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫د‪\ python_classes> py test.py :‬‬
‫ﺒ ﺔ‪TS07EA7777 :‬‬
‫أدﺧﻞ رﻗﻢﺗ ﺴﺠﻴﻞ اﻟﻤﺮﻛ‬
‫ﺒ ﺔﺳﺎري اﻟﻤﻔﻌﻮل‬
‫رﻗﻢﺗ ﺴﺠﻴﻞ اﻟﻤﺮﻛ‬

‫د‪\ python_classes> py test.py :‬‬


‫ﺒ ﺔ‪TS07KF0786 :‬‬
‫أدﺧﻞ رﻗﻢﺗ ﺴﺠﻴﻞ اﻟﻤﺮﻛ‬
‫ﺒ ﺔﺳﺎري اﻟﻤﻔﻌﻮل‬
‫رﻗﻢﺗ ﺴﺠﻴﻞ اﻟﻤﺮﻛ‬

‫د‪\ python_classes> py test.py :‬‬


‫ﺒ ﺔ‪AP07EA7898 :‬‬
‫أدﺧﻞ رﻗﻢﺗ ﺴﺠﻴﻞ اﻟﻤﺮﻛ‬
‫ﺒ ﺔ ﻏﻴﺮ ﺻﺤﻴﺢ‬
‫رﻗﻢﺗ ﺴﺠﻴﻞ اﻟﻤﺮﻛ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪178‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﻒ اﻟﻤﺤﻤﻮل اﻟﻤﺤﺪد ﺻﺎﻟﺤًﺎ‬


‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن رﻗﻢ اﻟﻬﺎ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬ﻟﻠ‬
‫رﻗﻤﺎ(‬
‫رﻗﻤﺎ أو ‪ً 12‬‬
‫أو ﻟﻴ ﺲ ‪(10‬أرﻗﺎم أو ‪ً 11‬‬

‫‪")1) import re 2) s = input‬أدﺧﻞ رﻗﻢ اﻟﺠﻮال‪[7-9] [0-9] {9}" ، (":‬‬


‫؟)‪ 3) m = re.fullmatch ("(0 | 91‬ق( ) ‪4‬إذا ﻛﺎن = !‪m‬ﻻ ﺷ ﻲء‪5) :‬‬
‫ﺗﻒ‬
‫ﺒﻊ )"رﻗﻢ اﻟﻬﺎ‬
‫ﺗﻒ ﻣﺤﻤﻮل ﺻﺎﻟﺢ"( ؛ )‪6‬وإﻻ‪7) :‬اﻃ‬
‫ﺒﻊ )"رﻗﻢ ﻫﺎ‬
‫اﻃ‬
‫اﻟﻤﺤﻤﻮل ﻏﻴﺮ ﺻﺎﻟﺢ"(‬

‫ﺜﻠ ﺔ اﻷﺧﺮى‪.‬‬
‫ﺑﻌﺾ اﻷﻣ‬
‫ﺟﺪول ﻣﻠﺨﺺ و‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪179‬‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫اﻟﺪﻳﻜﻮر‬
‫اﻟﻤﻬﺎم‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪180‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻮﻇﺎﺋﻒ ﻣﻮﺳﻌ ﺔ‪.‬‬‫ﺗﻌﻴﺪ اﻟﻮﻇﻴﻔ ﺔ اﻟﻤﻌﺪﻟ ﺔ‬


‫ﺗﻮﺳﻊ وﻇﺎﺋﻔﻬﺎ و‬
‫‪ Decorator‬ﻫ ﻲ وﻇﻴﻔ ﺔﻳﻤﻜﻦ أنﺗﺄﺧﺬ وﻇﻴﻔ ﺔ ﻛﻮﺳﻴﻄ ﺔ و‬

‫ﺑﻌﺾ اﻟﻮﻇﺎﺋﻒ(‬‫ﺟﺪﻳﺪ )أﺿﻒ‬ ‫وﻇﻴﻔ ﺔ اﻹدﺧﺎل‬


‫ﻣﺼﻤﻢ‬
‫ﺘﻤﻨﻰ)(‬
‫ﻳ‬
‫داﺧﻠ ﻲ)(‬

‫ﻣﺼﻤﻢ‬ ‫وﻇﻴﻔ ﺔ اﻹﺧﺮاج ﻣﻊ وﻇﺎﺋﻒ ﻣﻮﺳﻌ ﺔ‬


‫وﻇﻴﻔ ﺔ اﻹدﺧﺎل‬
‫وﻇﻴﻔ ﺔ‬

‫ﺋﻴ ﺴ ﻲ ﻣﻦ وﻇﺎﺋﻒ اﻟﺪﻳﻜﻮر ﻫﻮ أﻧﻪﻳﻤﻜﻨﻨﺎﺗﻮﺳﻴﻊ وﻇﺎﺋﻒ اﻟﻮﻇﺎﺋﻒ اﻟﺤﺎﻟﻴ ﺔ دونﺗﻌﺪﻳﻞ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‪.‬‬
‫اﻟﻬﺪف اﻟﺮ‬

‫ﺒﺎﻋ ﺔ ‪("Hello" ،‬اﻻﺳﻢ ‪"Good Morning") ،‬‬


‫‪)1) def wish‬اﻻﺳﻢ(‪2) :‬ﻃ‬

‫ﺒﺎﻋ ﺔ ﻧﻔ ﺲ اﻹﺧﺮاجﻷي اﺳﻢ‬


‫ﺋﻤﺎ ﻃ‬
‫ﻳﻤﻜﻦ ﻟﻬﺬه اﻟﻮﻇﻴﻔ ﺔ دا ً‬

‫ﺒﺎح اﻟﺨﻴﺮ‬
‫ﺒﺎ دورﺟﺎ ﺻ‬
‫ﻣﺮﺣ‬
‫ﺒﺎح اﻟﺨﻴﺮ‬
‫ﺒﺎ راﻓ ﻲ ﺻ‬
‫ﻣﺮﺣ‬
‫ﺒﺎح اﻟﺨﻴﺮ‬
‫ﺒﺎ ﺻﻨ ﻲ ﺻ‬
‫ﻣﺮﺣ‬

‫ﺴﺎ‪.‬‬
‫ﺘﻠﻔ ﺔ إذا ﻛﺎن اﻻﺳﻢ ﻣﺸﻤ ً‬
‫ﺘﻘﺪﻳﻢ رﺳﺎﻟ ﺔ ﻣﺨ‬
‫ﻟﻜﻨﻨﺎ ﻧﺮﻳﺪﺗﻌﺪﻳﻞ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻟ‬
‫ﺘﺨﺪام اﻟﺰﺧﺮﻓ ﺔ‪.‬‬
‫ﺑﺎﺳ‬
‫ﺑﺬﻟﻚ دون ﻟﻤ ﺲ وﻇﻴﻔ ﺔ )( ‪Wish‬‬‫ﻳﻤﻜﻨﻨﺎ اﻟﻘﻴﺎم‬

‫)‪Sunny Bad Morning") 5) else: 6) func (name) 7‬‬


‫‪(name): 3) if name == "Sunny": 4) print ("Hello‬‬
‫‪1) def decor (func): 2) def inner‬إرﺟﺎع اﻟﺪاﺧﻠﻴ ﺔ )‪8‬‬

‫ﺒﺎﻋ ﺔ ‪("Hello" ،‬‬


‫‪)9) decor 10) def wish‬اﻻﺳﻢ(‪11) :‬ﻃ‬
‫اﻻﺳﻢ ‪wish ("Durga") 14) wish ("Ravi") 15) wish (" ،‬‬
‫)‪"Good Morning") 12) 13‬ﻣﺸﻤ ﺲ"(‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺒﺎح اﻟﺨﻴﺮ‬
‫ﺒﺎ دورﺟﺎ ﺻ‬
‫ﻣﺮﺣ‬
‫ﺒﺎح اﻟﺨﻴﺮ‬
‫ﺒﺎ راﻓ ﻲ ﺻ‬
‫ﻣﺮﺣ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪181‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻢﺗﻨﻔﻴﺬ وﻇﻴﻔ ﺔ اﻟﺪﻳﻜﻮرﺗﻠﻘﺎﺋ ًﻴﺎ‪.‬‬


‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ﻛﻠﻤﺎ ﻧ ﺴﻤ ﻲ وﻇﻴﻔ ﺔ )( ‪wish‬ﺳﻴ‬
‫‪Hello Sunny Bad Morning‬ﻓ ﻲ اﻟ‬

‫ﺑﺪون ﻣﺰﺧﺮف‪:‬‬
‫ﺘﺪﻋﺎء ﻧﻔ ﺲ اﻟﻮﻇﻴﻔ ﺔ ﻣﻊ ‪Decorator‬و‬
‫ﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺘﺨﺪم‪roced‬‬
‫ﻳﺠ ﺐ أﻻ ﻧ ﺴ‬

‫)‪== "Sunny": 4) print ("Hello Sunny Bad Morning") 5) else: 6) func (name) 7‬‬

‫‪1) def decor (func): 2) def inner (name): 3) if name‬إرﺟﺎع ‪("Durga") #decorator‬‬

‫‪name،‬‬
‫)"ﺻﻨ ﻲ"(‬ ‫ﺒﺔ‬ ‫‪"Good‬‬
‫)‪15‬رﻏ‬ ‫)"‪Morning‬‬
‫)‪11‬ﻟﻦﻳﻜﻮنﺗﻢ اﻟ‬
‫ﺘﻨﻔﻴﺬ‬ ‫‪12) decorfunction‬‬
‫‪interior‬‬ ‫‪8) 9) def wish=(name):‬‬
‫)‪decor (wish‬‬ ‫‪13) ("Hello"،‬‬
‫‪10) print‬‬ ‫‪14) wish‬‬

‫ﺘﻢﺗﻨﻔﻴﺬ ‪#‬دﻳﻜﻮر )‪18‬وﻇﻴﻔ ﺔ دﻳﻜﻮر‬


‫)‪16‬وﻇﻴﻔ ﺔ دﻳﻜﻮر )"دورﺟﺎ"(ﺳﻴ‬ ‫)‪17‬‬
‫ﻳﻜﻮر‬ ‫ﺗﻨﻔﻴﻫﺎ‬
‫ﺬ اﻟﺪ‬ ‫ﺗﻨﻔﻴﺬ‬
‫ﺘﻢ‬‫ﺘﻢ‬
‫ﻲ"(ﻟﻦ‪#‬ﻳ‬
‫ﺳﻴ‬ ‫ﻳﻜﻮر‬‫‪#‬د‬
‫)"ﺻﻨ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺒﺎح اﻟﺨﻴﺮ‬
‫ﺒﺎ دورﺟﺎ ﺻ‬
‫ﻣﺮﺣ‬

‫ﺒﺎح اﻟﺨﻴﺮ‬
‫ﺒﺎ ﺻﻨ ﻲ ﺻ‬
‫ﻣﺮﺣ‬

‫ﺒﺎح اﻟﺨﻴﺮ‬
‫ﺒﺎ دورﺟﺎ ﺻ‬
‫ﻣﺮﺣ‬

‫ﺒﺎح‬
‫ﺒﺎ ﺻﻨ ﻲﺳ ﻲء اﻟﺼ‬
‫ﻣﺮﺣ‬

‫‪1) def smart_division (func): 2) def‬داﺧﻠﻴ ﺔ‬

‫)أ ‪ ،‬ب(‪3) 4) 5) 6) 7) 8) 9) 10) :‬‬

‫‪")print‬ﻧﺤﻦ ﻧﻘ ﺴﻢ ‪" ،‬أ ‪" ،‬ﻣﻊ" ‪ ،‬ب( إذا ب ‪== 0:‬‬

‫ﺒﺎﻋ ﺔ ‪("OOPS ...‬ﻻﻳﻤﻜﻦ اﻟﻘ ﺴﻤ ﺔ"(‬


‫ﻃ‬
‫ﻳﻌﻮد‬

‫آﺧﺮ‪:‬‬

‫ﻋﻮدة ‪)func‬أ ‪ ،‬ب( ﻋﻮدة‬


‫اﻟﺪاﺧﻠﻴ ﺔ‬

‫ﺗﻘ ﺴﻴﻢ )‪(a، b): 13‬‬


‫)‪11) smart_division 12‬‬

‫ﺑﺈرﺟﺎع ‪a / b‬‬‫‪def‬ﻗﻢ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪182‬‬ ‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎﻋ ﺔ‬
‫ﺒﺎﻋ ﺔ )ﻗ ﺴﻤ ﺔ )‪(20،2)) 15‬ﻃ‬
‫)‪14‬ﻃ‬
‫)ﻗ ﺴﻤ ﺔ ))‪(20،0‬‬

‫ﺗﺞ ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ﻫﻮ‪:‬‬


‫ﺑﺪون ﻣﺰﺧﺮفﺳﻨﺤﺼﻞ ﻋﲆ ﺧﻄﺄ‪ .‬اﻟﻨﺎ‬
‫ﺒﻊ )آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪ :‬ﻣﻠﻒ ‪"test.py" ،‬اﻟ ﺴﻄﺮ‬
‫ﺘ‬‫ﺘ‬‫‪10.0‬اﻟ‬

‫ﺘﻘ ﺴﻴﻢ ))‪(20،0‬‬


‫ﺒﺎﻋ ﺔ >‪)<module‬اﻟ‬
‫‪16 ،‬ﻓ ﻲ ﻃ‬

‫ﻣﻠﻒ ‪"test.py" ،‬اﻟ ﺴﻄﺮ ‪13 ،‬ﻓ ﻲ اﻟﻘ ﺴﻤ ﺔ إرﺟﺎع‬


‫‪a / b ZeroDivisionError:‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ‬

‫ﺗﺞ ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ﻫﻮ‪:‬‬


‫ﻣﻊ ‪Decorator‬ﻟﻦ ﻧﺤﺼﻞ ﻋﲆ أي ﺧﻄﺄ‪ .‬اﻟﻨﺎ‬
‫ﻧﻘ ﺴﻢ ‪20‬ﻋﲆ ‪2‬‬
‫‪10.0‬‬

‫ﻧﻘ ﺴﻢ ‪20‬ﻋﲆ ‪0‬‬


‫ﻋﻔ ًﻮا ‪ ...‬ﻻﻳﻤﻜﻦ اﻟﻘ ﺴﻤ ﺔ‬
‫ﻻ أﺣﺪ‬

‫ﺒﺎﻋ ﺔ "(زﺧﺮﻓ ﺔ اﻟﺸﻌﺮ ‪4) ("...‬‬


‫)‪1) def mariagedecor (func): 2) def inner (): 3‬ﻃ‬
‫ﺒﺎﻋ ﺔ ‪("Fair and Lovely‬إﻟﺦ ‪(): 10) ..‬‬
‫ﺗﻴﻨﻴ ﺔ"( )‪5‬ﻃ‬
‫ﺒﻼ‬‫ﺒﺎﻋ ﺔ "(زﺧﺮﻓ ﺔ اﻟﻮﺟﻪ ﻣﻊ اﻟﺤﺰﻣ ﺔ اﻟ‬
‫ﻃ‬
‫‪maragedecor‬ﺔ= '(ﺟﺎ ﻫﺰ ﻟﻠﺰواج )(‬
‫‪11) 12) decor_getready‬‬ ‫ﺒﺎﻋ‬
‫)‪') 6) func ()(getready‬ﻃ‬
‫‪7) return inner‬‬ ‫‪8) decor_getready‬‬
‫)‪13) 14‬‬ ‫‪9) def getready‬‬
‫)'‬

‫ﺗ ﺴﻠ ﺴﻞ اﻟﺪﻳﻜﻮر‬
‫ﻳﻤﻜﻨﻨﺎﺗﺤﺪﻳﺪ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺪﻳﻜﻮرا ت ﻟﻨﻔ ﺲ اﻟﻮﻇﻴﻔ ﺔ وﺳﻮفﻳﺸﻜﻞ ﻛﻞ ﻫﺆﻻء اﻟﻤﺼﻤﻤﻴﻦﺳﻠ ﺴﻠ ﺔ اﻟﺪﻳﻜﻮر‪.‬‬

‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫‪@ decor1‬‬
‫@دﻳﻜﻮر‬
‫‪def‬اﻷﺳﻄﻮاﻧﺎ ت ‪():‬‬

‫ﺛﻢ ﻣﺼﻤﻢ ﺧﺎرﺟ ﻲ‪.‬‬‫ﺘﻴﻦ ﻟﻠﺪﻳﻜﻮر‪.‬ﺳﻴﻌﻤﻞ أول ﻣﺼﻤﻢ داﺧﻠ ﻲ‬


‫ﺒﻴﻖ وﻇﻴﻔ‬
‫ﺘﻄ‬‫ﺑ‬‫ﺒ ﺔ ﻟﻮﻇﻴﻔ ﺔ ‪num () ،‬ﻧﻘﻮم‬
‫ﺑﺎﻟﻨ ﺴ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬


‫اﻟ‬
‫‪183‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

inner (): 9) x = func () 10)


7) def decor (func): 8) def
func2)()def
4) return
interior
x ():
* x3)5)x6)
=
‫إرﺟﺎع‬
12)1)‫ﻲ‬def
‫داﺧﻠ‬decor1
‫إرﺟﺎع‬2 *(func):
x 11)
‫اﻟﻌﻮدة اﻟﺪاﺧﻠﻴ ﺔ‬

10 17) 18) print (num ())


15) def num (): 16) return
13) @ decor1 14) decor

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

184
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺑﺎء‬
‫ﻣﻮﻟﺪ ﻛﻬﺮ‬
‫اﻟﻤﻬﺎم‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪185‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫اﻟﻤﻮﻟﺪ ﻫﻮ وﻇﻴﻔ ﺔ ﻣ ﺴﺆوﻟ ﺔ ﻋﻦﺗﻮﻟﻴﺪﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟﻘﻴﻢ‪.‬‬


‫ﺘﺠ ﺔ ﻹرﺟﺎع اﻟﻘﻴﻢ‪.‬‬
‫ﺋﻴ ﺴﻴ ﺔ اﻟﻤﻨ‬
‫ﺘﺨﺪم اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﺜﻞ اﻟﻮﻇﺎﺋﻒ اﻟﻌﺎدﻳ ﺔ ‪ ،‬وﻟﻜﻨﻬﺎﺗ ﺴ‬
‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫ﺑ ﺔ وﻇﺎﺋﻒ اﻟﻤﻮﻟﺪ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻨﻨﺎ ﻛ‬

‫ﺑﺎء‬
‫ﻣﻮﻟﺪ ﻛﻬﺮ‬
‫ﺗ ﺴﻠ ﺴﻞ اﻟﻘﻴﻢ‬
‫وﻇﻴﻔ ﺔ‬

‫أَ ْ‬
‫ﺛ َﻤ ﺮ‬

‫)‪1) def mygen (): 2‬‬


‫)‪'B' 4‬‬
‫‪print‬‬ ‫ﺘﺞ‬
‫‪(next‬‬‫ﻳﻨ‬‫ﺘﺞ )‪'A' 3‬‬
‫‪(next‬‬ ‫ﻳﻨ‬
‫‪print‬‬
‫‪6) g(type‬‬ ‫)‪(g)) 8‬‬
‫‪= mygen‬‬ ‫)‪9‬‬
‫)‪() 7‬‬
‫ﺒﺎﻋ ﺔ‬
‫ﺒﺎﻋ ﺔ‬‫ﻃﻃ‬ ‫)ز(()‪10‬‬
‫)‪11‬‬ ‫'‪)'C‬ز(‬ ‫)‪5‬‬
‫ﺘﺎﻟ ﻲ‬‫)اﻟ‬
‫ﺒﺎﻋ ﺔ‬
‫ﺘﺎﻟ ﻲ )ز(( )‪12‬ﻃ‬
‫)اﻟ‬
‫ﺘﺎﻟ ﻲ )ز((‬
‫)اﻟ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫>ﻓﺌ ﺔ "اﻟﻤﻮﻟﺪ"<‬
‫أ‬
‫ب‬

‫‪)C Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪ :‬ﻣﻠﻒ ‪"test.py" ،‬‬

‫ﺘﺎﻟ ﻲ ))‪(g‬‬
‫ﺒﺎﻋ ﺔ >‪)<module‬اﻟ‬
‫اﻟ ﺴﻄﺮ ‪12 ،‬ﻓ ﻲ ﻃ‬

‫ﺗﻮﻗﻒ‬

‫)‪2) print ("Start Countdown") 3‬‬


‫‪=0):‬‬ ‫)‪4) 5‬‬
‫اﻟﻘﻴﻢ‬ ‫ﺑﻴﻨﻤﺎ‬‫‪1) def‬‬
‫‪num‬‬ ‫‪= 1 countdown‬‬
‫ﺘﺞ اﻟﻌﺪد )‪6‬‬ ‫‪(num):‬‬
‫>‪(num‬ﻳﻨ‬
‫ﺒﺎﻋ ﺔ‬
‫ﺘﻨﺎزﻟ ﻲ )‪(5) 7‬ﻟـ ‪x‬ﻓ ﻲ اﻟﻘﻴﻢ‪8) :‬ﻃ‬
‫اﻟﻌﺪ اﻟ‬
‫)‪(x‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺘﻨﺎزﻟ ﻲ‬
‫ﺑﺪء اﻟﻌﺪ اﻟ‬

‫‪5‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪186‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬

‫ﺘﻮﻟﻴﺪ اﻷرﻗﺎم ‪n‬اﻷوﱃ‬


‫ﺜﺎل ‪3:‬ﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫)‪firstn (num): 2) n = 1 3‬‬


‫ﺑﻴﻨﻤﺎ )‪n <= num: 4‬‬
‫‪1) def‬‬
‫ﺘﺎج )‪n 5) n = n + 1 6) 7‬‬
‫إﻧ‬
‫)‪=(x‬ﻟـ ‪x‬ﻓ ﻲ‬
‫‪firstn‬‬‫)‪(5‬ﻃ‬
‫ﺒﺎﻋ ﺔ‬ ‫اﻟﻘﻴﻢ‪9 )8):‬‬
‫ﻗﻴﻢ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﻳﻤﻜﻨﻨﺎﺗﺤﻮﻳﻞ اﻟﻤﻮﻟﺪ إﱃ ﻗﺎﺋﻤ ﺔ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫اﻟﻘﻴﻢ )‪= firstn (10‬‬
‫= ‪l1‬ﻗﺎﺋﻤ ﺔ )ﻗﻴﻢ(‬
‫ﺒﺎﻋ ﺔ ]‪(l1) # [1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 10‬‬
‫ﻃ‬

‫ﺗﺸ ﻲ ‪...‬‬
‫ﺒﻮﻧﺎ‬
‫ﺘﻮﻟﻴﺪ أرﻗﺎم ﻓﻴ‬
‫ﺜﺎل ‪4:‬ﻟ‬
‫ﻣ‬
‫ﺑﻘﻴﻦ‬
‫ﺘﺎﻟ ﻲ ﻫﻮ ﻣﺠﻤﻮع اﻟﻌﺪدﻳﻦ اﻟ ﺴﺎ‬
‫اﻟ‬

‫ﺜﺎل‪0،1،1،2،3،5،8،13،21 ، ... :‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫)‪fib (): 2) a ، b = 0،1 3‬‬


‫ﺑﻴﻨﻤﺎ ﺻﺤﻴﺢ‪4) :‬‬
‫‪1) def‬‬
‫ﺘﺞ )‪a ، b = b ، a + b 6‬‬
‫ﻳﻨ‬
‫إذا‬
‫ﺘﺮاﺣ ﺔ‪9)fib‬‬
‫)‪(): 7‬‬ ‫‪100:‬ﻓ ﻲ‬
‫>‪f‬اﺳ‬ ‫)‪a 8‬ﻟـ ‪f‬‬
‫)‪5‬‬
‫ﺒﺎﻋ ﺔ )و(‬
‫ﻃ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪187‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪1‬‬
‫‪3‬‬
‫‪8‬‬
‫‪5‬‬
‫‪13‬‬
‫‪21‬‬
‫‪34‬‬
‫‪55‬‬
‫‪89‬‬

‫ﻣﺰاﻳﺎ وﻇﺎﺋﻒ اﻟﻤﻮﻟﺪ‪:‬‬


‫ﺘﺨﺪام ﻟﻠﻐﺎﻳ ﺔ‪.‬‬
‫ﺘﻮى اﻟﻔﺼﻞ ‪ ،‬ﻓﺈن اﻟﻤﻮﻟﺪا تﺳﻬﻠ ﺔ اﻻﺳ‬
‫ﺘﻬﺎ ﻣﻊﺗﻜﺮارا ت ﻣ ﺴ‬
‫)‪1‬ﻋﻨﺪ ﻣﻘﺎرﻧ‬
‫ﺘﺨﺪام اﻟﺬاﻛﺮة واﻷداء‪.‬‬
‫)‪2‬ﻳﺤ ﺴﻦ اﺳ‬
‫ﺒﻴﺮة‪.‬‬
‫ﺒﻴﺮ ﻣﻦ اﻟﻤﻠﻔﺎ ت اﻟﻜ‬
‫ﺒﻴﺎﻧﺎ ت ﻣﻦ ﻋﺪد ﻛ‬
‫)‪3‬اﻟﻤﻮﻟﺪا ت ﻫ ﻲ اﻷﻧ ﺴ ﺐ ﻟﻘﺮاءة اﻟ‬
‫ﺑﺸﻜﻞ راﺋﻊ ﻓ ﻲﺗﺠﺮﻳﻒ اﻟﻮﻳ ﺐ واﻟﺰﺣﻒ‪.‬‬‫ﺗﻌﻤﻞ اﻟﻤﻮﻟﺪا ت‬
‫)‪4‬‬

‫ﺑﻞ أداء اﻟﻤﺠﻤﻮﻋﺎ ت اﻟﻌﺎدﻳ ﺔ ‪wrt:‬‬


‫اﻟﻤﻮﻟﺪا ت ﻣﻘﺎ‬

‫ﺘﻴﺮاد )‪3) 4‬أﺳﻤﺎء )‪'Chinny'، 'Vinny'] 5‬‬


‫ﺘﻴﺮاد ﻋﺸﻮاﺋ ﻲ )‪2‬وﻗ ﺖ اﻻﺳ‬
‫)‪1‬اﺳ‬
‫‪= ['Sunny'، 'Bunny'،‬اﻟﻤﻮﺿﻮﻋﺎ ت )‪def people_list (num_people): 8‬‬
‫ﺘﺎﺋﺞ )‪= [] 9‬ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق‬
‫)‪= ['Python'، 'Java'، 'Blockchain'] 6) 7‬اﻟﻨ‬
‫‪10) person = { 11) 'id': i، 12) 'name': random.choice‬‬
‫ﺘﻴﺎر )اﻟﻤﻮﺿﻮﻋﺎ ت(‬
‫‪)(number_people):‬أﺳﻤﺎء( ‪'13) ،‬اﻟﻤﻮﺿﻮع'‪ :‬ﻋﺸﻮاﺋ ﻲ‪.‬اﺧ‬
‫ﺗﺤﺪﻳﺪ‬
‫ﺘﺎﺋﺞ )‪17) 18‬‬
‫ﺘﺎﺋﺞ‪.‬ﻟﺤﻖ )ﺷﺨﺺ( )‪16‬إرﺟﺎع اﻟﻨ‬
‫)‪14) } 15‬اﻟﻨ‬
‫ﺒ ﺔ ﻟـ ‪i‬ﻓ ﻲ اﻟﻨﻄﺎق )ﻋﺪد_اﻷﺷﺨﺎص(‪:‬‬
‫ﺑﺎﻟﻨ ﺴ‬
‫اﻷﺷﺨﺎص_اﻟﻤﻮﻟﺪ )ﻋﺪد_اﻷﺷﺨﺎص(‪19) :‬‬
‫)‪20‬ﺷﺨﺺ ‪)= { 21) 'id': i، 22) 'name': random.choice‬أﺳﻤﺎء( ‪،‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪188‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺴﻔﺮ)‪23‬‬
‫ﺗ)‪24‬‬
‫)‪25‬‬
‫)‪ 26‬ت({‬ ‫‪27) "" random.choice‬‬
‫)اﻟﻤﻮﺿﻮﻋﺎ‬ ‫ﺒﺮى'‪t1 = time.clock ():‬‬
‫'اﻟﻜ‬
‫ﻋﻦ ﺷﺨﺺ‬

‫)‪28‬اﻟﻨﺎس )‪= people_list (10000000‬‬


‫))‪t2 = time.clock () 34) 35) print ('Took {} '.format (t2-t1‬‬
‫)‪() 32) people = people_generator (10000000) 33‬‬
‫‪29) t2 = time.clock () "" 30) 31) t1 = time.clock‬‬

‫ﺘﺨﺪام اﻟﻘﺎﺋﻤ ﺔ واﻟﻤﻮﻟﺪا ت‬


‫ﺑﺎﺳ‬‫ﺘﻨﻔﻴﺬ‬
‫ﺘﻼف وﻗ ﺖ اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪ ،‬ﻻﺣﻆ اﺧ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓ ﻲ اﻟ‬

‫ﺘﺨﺪام اﻟﺬاﻛﺮة‪:‬‬
‫ﺑﺎﺳ‬‫ﺑﻞ اﻟﻤﺠﻤﻮﻋﺎ ت اﻟﻌﺎدﻳ ﺔ‬
‫اﻟﻤﻮﻟﺪا ت ﻣﻘﺎ‬

‫اﻟﻤﺠﻤﻮﻋ ﺔ اﻟﻌﺎدﻳ ﺔ‪:‬‬


‫‪l = [x * x for x‬ﻓ ﻲ اﻟﻨﻄﺎق ])‪(10000000000000000‬‬
‫ﺒﺎﻋ ﺔ )ل )]‪[0‬‬
‫ﻃ‬

‫ﺘﺨﺰﻳﻦ ﻓ ﻲ اﻟﺬاﻛﺮة‪.‬‬
‫ﺑ ﺔ ﻟﻠ‬
‫ﺳﻨﺤﺼﻞ ﻋﲆ ‪MemoryError‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔﻷن ﻛﻞ ﻫﺬه اﻟﻘﻴﻢ ﻣﻄﻠﻮ‬

‫ﺑﺎء‪:‬‬
‫ﻣﻮﻟﺪا ت ﻛﻬﺮ‬
‫‪g = (x * x for x‬ﻓ ﻲ اﻟﻨﻄﺎق ))‪(10000000000000000‬‬
‫ﺘﺎﻟ ﻲ )ز((‬
‫ﺒﺎﻋ ﺔ )اﻟ‬
‫ﻃ‬

‫اﻹﺧﺮاج‪0 :‬‬

‫ﺒﺪاﻳ ﺔ‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟﻘﻴﻢ ﻓ ﻲ اﻟ‬
‫ﻟﻦ ﻧﺤﺼﻞ ﻋﲆ أي ﺧﻄﺄ ﻓ ﻲ ‪MemoryError‬ﻷﻧﻪ ﻟﻦﻳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬


‫‪189‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﺄﻛﻴﺪا ت‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪190‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪام ‪Assert Keyword:‬‬


‫ﺑﺎﺳ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬‬‫ﺗﺼﺤﻴﺢ أﺧﻄﺎء‬
‫ﺗ ﺴﻤﻰ ﻋﻤﻠﻴ ﺔﺗﺤﺪﻳﺪ اﻟﺨﻄﺄ وإﺻﻼﺣﻪﺗﺼﺤﻴﺢ اﻷﺧﻄﺎء‪.‬‬

‫ﺑﻴﺎﻧﺎ ت )(‬‫ﺑﻌﺪ إﺻﻼح اﻟﺨﻄﺄ ‪ ،‬إﻟﺰاﻣ ًﻴﺎ ﻋﻠﻴﻨﺎ ﺣﺬف‬‫ﺒﺎرة )( ‪ print‬ﻫ ﻲ‬


‫ﺒﺎرة ‪print ().‬ﻟﻜﻦ اﻟﻤﺸﻜﻠ ﺔ ﻓ ﻲ ﻋ‬
‫ﺘﺨﺪام ﻋ‬
‫ﺘﺼﺤﻴﺢ اﻷﺧﻄﺎء ﻫ ﻲ اﺳ‬
‫ﻃﺮﻳﻘ ﺔ ﺷﺎﺋﻌ ﺔ ﺟﺪًا ﻟ‬
‫ﺘﺤﻜﻢ‪.‬‬
‫ﺘﺸﻐﻴﻞ ﻣﻤﺎﻳﺆدي إﱃ ﺣﺪو ث ﻣﺸﻜﻼ ت ﻓ ﻲ اﻷداء وإزﻋﺎج إﺧﺮاج وﺣﺪة اﻟ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ ﻓ ﻲ وﻗ ﺖ اﻟ‬
‫‪print‬اﻹﺿﺎﻓﻴ ﺔ اﻟﻤﻀﺎﻓ ﺔ ‪ ،‬وإﻻ ﻓ ﺴﻴ‬

‫ﺒﻴﻦ‬
‫ﺑﻌﺪ إﺻﻼح اﻟﺨﻄﺄ ‪ ،‬ﻟ ﺴﻨﺎ ﻣﻄﺎﻟ‬‫ﺒﺎرة )( ‪ print‬ﻫ ﻲ‬
‫ﺒﺎرة ﻋﲆ ﻋ‬
‫ﺘﺄﻛﻴﺪ اﻟﻌ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟ‬
‫ﺘﺄﻛﻴﺪ‪ .‬اﻟﻤﻴﺰة اﻟﺮ‬
‫ﺑﻴﺎن اﻟ‬‫ﺘﻐﻠ ﺐ ﻋﲆ ﻫﺬه اﻟﻤﺸﻜﻠ ﺔﻳﺠ ﺐ أن ﻧﺬ ﻫ ﺐ إﱃ‬
‫ﻟﻠ‬
‫ﺘﺄﻛﻴﺪ‬
‫ﺗﻨﺎ ‪،‬ﻳﻤﻜﻨﻨﺎﺗﻤﻜﻴﻦ أوﺗﻌﻄﻴﻞ اﻟ‬
‫ﺒﺎ‬
‫ﺘﻄﻠ‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻣ‬‫ﺘﺄﻛﻴﺪ‪.‬‬
‫ﺒﺎرا ت اﻟ‬
‫ﺑﺤﺬف ﻋ‬

‫ﺻﻴﺎﻏﺎ ت‪.‬‬

‫ﺒﺎر وﻟﻜﻦ‬
‫ﺘ‬‫ﺑﻴﺌﺎ ت اﻻﺧ‬‫ﺘﻄﻮﻳﺮ أو ﻓ ﻲ‬
‫ﺘﺄﻛﻴﺪا ت ﻫﻮ إﺟﺮاءﺗﺼﺤﻴﺢ اﻷﺧﻄﺎء‪ .‬ﻋﺎدةﻳﻤﻜﻨﻨﺎ إﺟﺮاءﺗﺼﺤﻴﺢ اﻷﺧﻄﺎء إﻣﺎ ﻓ ﻲ اﻟ‬
‫ﺋﻴ ﺴ ﻲ ﻣﻦ اﻟ‬
‫ﺛﻢ ﻓﺈن اﻟﻐﺮض اﻟﺮ‬‫وﻣﻦ‬
‫ﺘﺎج‪.‬‬
‫ﺒﻴﺌ ﺔ اﻹﻧ‬
‫ﺒﺎر وﻟﻜﻦ ﻟﻴ ﺲ ﻟ‬
‫ﺘ‬‫ﺘﻄﻮﻳﺮ واﻻﺧ‬
‫ﺑﻴﺌﺎ ت اﻟ‬‫ﺒﻖ ﻓﻘﻂ ﻋﲆ‬
‫ﺘﺄﻛﻴﺪا تﻳﻨﻄ‬
‫ﺛﻢ ﻓﺈن ﻣﻔﻬﻮم اﻟ‬‫ﺘﺎج‪ .‬وﻣﻦ‬
‫ﺑﻴﺌ ﺔ اﻹﻧ‬‫ﻟﻴ ﺲ ﻓ ﻲ‬

‫ﺘﺄﻛﻴﺪ‪:‬‬
‫أﻧﻮاع ﺟﻤﻞ اﻟ‬
‫ﺘﺄﻛﻴﺪ‬
‫ﺒﺎرا ت اﻟ‬
‫ﻫﻨﺎك ﻧﻮﻋﺎن ﻣﻦ ﻋ‬
‫ﺑ ﺴﻴﻄ ﺔ‬‫)‪1‬ﻧ ﺴﺨ ﺔ‬
‫)‪2‬اﻟﻨ ﺴﺨ ﺔ اﻟﻤﻌﺰزة‬

‫ﺑ ﺴﻴﻄ ﺔ‪:‬‬‫)‪1‬ﻧ ﺴﺨ ﺔ‬
‫ﺒﻴﺮ اﻟﺸﺮﻃ ﻲ‬
‫ﺘﻌ‬‫ﺗﺄﻛﻴﺪ اﻟ‬

‫)‪2‬اﻹﺻﺪار اﻟﻤﻌﺰز‪:‬‬

‫ﺒﻴﺮ اﻟﺸﺮﻃ ﻲ ‪ ،‬اﻟﺮﺳﺎﻟ ﺔ‬


‫ﺘﻌ‬‫ﺗﺄﻛﻴﺪ اﻟ‬
‫•‬

‫ﺒﺮﻧﺎﻣﺞ ﻛﺬﻟﻚ‬
‫ﺒﻴﺮ اﻟﺸﺮﻃ ﻲ وإذا ﻛﺎن ﺻﺤﻴﺤًﺎ ﻓ ﺴﻴﻜﻮن اﻟ‬
‫ﺘﻌ‬‫ﺘﻢﺗﻘﻴﻴﻢ اﻟ‬
‫•ﺳﻴ‬
‫واﺻﻠ ﺖ‪.‬‬

‫ﺒﺮﻣﺞﺗﺤﻠﻴﻞ اﻟﻜﻮد وﻳﻤﻜﻨﻪ إﺻﻼح‬


‫ﺑﺮﻓﻊ • ‪AssertionError.‬ﻣﻦ ﺧﻼل رؤﻳ ﺔ ‪AssertionError ،‬ﻳﻤﻜﻦ ﻟﻠﻤ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﻢ إﻧﻬﺎء اﻟ‬
‫•إذا ﻛﺎﻧ ﺖ ﺧﺎﻃﺌ ﺔ ‪ ،‬ﻓ ﺴﻴ‬

‫اﻟﻤﺸﻜﻠ ﺔ‪.‬‬

‫ﺑﻊ‬
‫ﺗﺄﻛﻴﺪ " ‪squareIt (2) == 4 ،‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻣﺮ‬
‫)‪1) def squareIt (x): 2‬إرﺟﺎع )‪x ** x 3‬‬
‫‪16‬‬
‫ﺑﻊ‬‫)ﻣﺮ‬
‫ﺒﺎﻋ ﺎﺔ "‪،‬‬
‫))‪(3‬ﻃﻣﺮ‬
‫ﺑﻌً‬ ‫ﺗﺄﻛﻴﺪًا‬
‫ﺑﻊ‪8)3 9‬‬
‫)ﻣﺮ"‬
‫ﺒﺎﻋ ﺔ)‪5‬‬
‫اﻟﺮﻗﻢ‬
‫))‪(2‬ﻃ‬
‫ﻳﻜﻮن‬
‫ﺑﻊأن)‪7‬‬
‫ﺐ‬
‫ﻳﺠ)ﻣﺮ‬
‫ﺒﺎﻋ ﺔ‬
‫ﺑﻊ‬‫ﻣﺮ‬
‫‪4‬ﻃ‬ ‫‪squareIt‬‬
‫)‪16 " 6) (3‬‬
‫ﺑﻊ‬‫==ﻣﺮ‬
‫ﻳﻜﻮن‬
‫أن ‪9 ،‬‬
‫ﺗﺄﻛﻴﺪ "‬
‫ﻳﺠ ﺐ‬
‫)‪2(4‬‬
‫=="‪4‬‬
‫)‪4‬‬
‫)‪4) )) 9‬‬

‫‪)10) D: \ Python_classes> py test.py 11) Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪12) :‬ﻣﻠﻒ‬


‫ﺑﻊ ‪3‬ﻳﺠ ﺐ‬
‫ﺑﻊ " ‪(3) == 9 ،‬ﻣﺮ‬
‫ﺘﺄﻛﻴﺪ ﻋﲆ اﻟﻤﺮ‬
‫‪"test.py" ،‬اﻟ ﺴﻄﺮ ‪4 ،‬ﻓ ﻲ )‪<module> 13‬اﻟ‬
‫أنﻳﻜﻮن " ‪9‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪191‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻊ ‪ 3‬ﻫﻮ )‪9 15) 16) def squareIt (x): 17‬إرﺟﺎع‬


‫‪14) AssertionError:‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻣﺮ‬
‫ﺗﺄﻛﻴﺪ " ‪squareIt (3) == 9 ،‬‬
‫ﺑﻊ )‪2 4" 19‬‬
‫ﺑﻊ " ‪(2) == 4 ،‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻣﺮ‬
‫ﺗﺄﻛﻴﺪ اﻟﻤﺮ‬
‫)‪x * x 18‬‬
‫ﺑﻊ ))‪(squareIt (4‬‬
‫ﺑﻊ " ‪(4) == 16 ،‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻣﺮ‬
‫ﺗﺄﻛﻴﺪ اﻟﻤﺮ‬
‫ﺑﻊ )‪3 9" 20‬‬
‫ﻳﺠ ﺐ أنﻳﻜﻮن ﻣﺮ‬
‫‪4 16" 21) print (squareIt (2)) 22) print ( SquareIt (3)) 23) print‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪4‬‬
‫‪9‬‬
‫‪16‬‬

‫ﺘﺄﻛﻴﺪا ت‪:‬‬
‫ﺑﻞ اﻟ‬
‫ﺜﻨﺎءا ت ﻣﻘﺎ‬
‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺳ‬
‫اﻟ‬
‫ﺘﻄﻮﻳﺮ‪.‬‬
‫ﺒﺮﻣﺞ ﻟﺤﻞ أﺧﻄﺎء وﻗ ﺖ اﻟ‬
‫ﺒﻴﻪ اﻟﻤ‬
‫ﺘﻨ‬‫ﺘﺄﻛﻴﺪا ت ﻟ‬
‫ﺘﺨﺪام ﻣﻔﻬﻮم اﻟ‬
‫ﻳﻤﻜﻦ اﺳ‬
‫ﺘﺸﻐﻴﻞ‪.‬‬
‫ﺜﻨﺎءا ت ﻟﻤﻌﺎﻟﺠ ﺔ أﺧﻄﺎء وﻗ ﺖ اﻟ‬
‫ﺘ‬‫ﺘﺨﺪام ﻣﻌﺎﻟﺠ ﺔ اﻻﺳ‬
‫ﻳﻤﻜﻦ اﺳ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪192‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻮن‬
‫ﺑﺎﻳ‬
‫ﺗ ﺴﺠﻴﻞ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪193‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘ ﺴﺠﻴﻞ‪.‬‬
‫ﺜﻨﺎءا ت ﻓ ﻲ ﻣﻠﻒ‪ .‬ﻫﺬه اﻟﻌﻤﻠﻴ ﺔﺗ ﺴﻤﻰ اﻟ‬
‫ﺘ‬‫ﺒﻴﻖ اﻟﻜﺎﻣﻞ وﻣﻌﻠﻮﻣﺎ ت اﻻﺳ‬
‫ﺘﻄ‬‫ﺘﺨﺰﻳﻦﺗﺪﻓﻖ اﻟ‬
‫ﺑ‬‫ﺑﺸﺪة‬‫ﻳﻮﺻﻰ‬

‫ﺘ ﺴﺠﻴﻞ ﻫ ﻲ‪:‬‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠ‬
‫اﻟﻤﺰاﻳﺎ اﻟﺮ‬
‫ﺘﺼﺤﻴﺢ‬
‫ﺛﻨﺎء إﺟﺮاء اﻟ‬
‫ﺘﺨﺪام ﻣﻠﻔﺎ ت اﻟ ﺴﺠﻞ أ‬
‫)‪1‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﺎ ت ﻓ ﻲ اﻟﻴﻮم وﻣﺎ إﱃ ذﻟﻚ‬
‫ﺜﻞ ﻋﺪد اﻟﻄﻠ‬
‫)‪2‬ﻳﻤﻜﻨﻨﺎﺗﻘﺪﻳﻢ إﺣﺼﺎءا ت ﻣ‬

‫ً‬
‫ﺴﺠﻴﻼ داﺧﻠ ًﻴﺎ ﻟﻠﻮﺣﺪة‪.‬‬ ‫ﺗ‬
‫ﺘ ﺴﺠﻴﻞ ‪،‬ﺗﻮﻓﺮ ‪Python‬‬
‫ﺘﻨﻔﻴﺬ اﻟ‬
‫ﻟ‬

‫ﺘ ﺴﺠﻴﻞ‪:‬‬
‫ﺘﻮﻳﺎ ت اﻟ‬
‫ﻣﺴ‬
‫ﺘﺎﻟﻴ ﺔ ﻓ ﻲ ‪Python‬‬
‫ﺘ ﺔ اﻟ‬ ‫ﺘ ﺴﺠﻴﻞ وﻓ ًﻘﺎ ﻟﻠﻤ ﺴ‬
‫ﺘﻮﻳﺎ ت اﻟ ﺴ‬ ‫ﺑﻴﺎﻧﺎ ت اﻟ‬‫ﺘﻢﺗﻘ ﺴﻴﻢ‬
‫ﺘﻤﺎدًا ﻋﲆ ﻧﻮع اﻟﻤﻌﻠﻮﻣﺎ ت ‪،‬ﻳ‬
‫اﻋ‬

‫)‪1‬اﻟﺤﺮﺟ ﺔ ‪50‬‬
‫ﺒﻴﺮ‬
‫ﺘﻤﺎم ﻛ‬
‫ﺘﺎج إﱃ ا ﻫ‬
‫ﺜﻞ ﻣﺸﻜﻠ ﺔ ﺧﻄﻴﺮة ﻟﻠﻐﺎﻳ ﺔﺗﺤ‬
‫ﻳﻤ‬

‫)‪2‬ﺧﻄﺄ ‪40‬‬
‫ﺜﻞ ﺧﻄﺄ ﺟ ﺴﻴﻢ‬
‫ﻳﻤ‬

‫ﺗﺤﺬﻳﺮ ‪30‬‬
‫)‪3‬‬
‫ﺒﺮﻣﺞ‪.‬‬
‫ﺑﻌﺾ اﻟﺤﺬر‪ .‬إﻧﻪ ﻓ ﻲ ﺣﺎﻟ ﺔﺗﺄ ﻫ ﺐ ﻟﻠﻤ‬‫ﺜﻞ رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ ‪،‬ﻳﻠﺰم‬
‫ﻳﻤ‬

‫‪4) INFO 20‬‬


‫ﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻬﺎﻣ ﺔ‬‫ﺜﻞ رﺳﺎﻟ ﺔ ﻣﻊ‬
‫ﻳﻤ‬

‫ﺗﺼﺤﻴﺢ ‪10‬‬
‫)‪5‬‬
‫ﺘﺼﺤﻴﺢ‬
‫ﺜﻞ رﺳﺎﻟ ﺔ ﻣﻊ ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﻳﻤ‬

‫)‪6‬ﻣﺬﻛﺮة ‪0‬‬
‫ﺘﻢﺗﻌﻴﻴﻨﻪ‬
‫ﺘﻮى ﻟﻢﻳ‬
‫ﺜﻞ أن ﻫﺬا اﻟﻤ ﺴ‬
‫ﻳﻤ‬

‫ﺘﻮى اﻷﻋﲆ‪.‬‬
‫ﺘﻢ ﻋﺮضﺗﺤﺬﻳﺮ ﻓﻘﻂ ورﺳﺎﺋﻞ اﻟﻤ ﺴ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python ،‬ﺳﻴ‬‫ﺛﻨﺎءﺗﻨﻔﻴﺬ‬
‫ﺘﺮاﺿ ﻲ أ‬
‫ﺑﺸﻜﻞ اﻓ‬

‫ﺘ ﺴﺠﻴﻞ‪:‬‬
‫ﻛﻴﻔﻴ ﺔﺗﻨﻔﻴﺬ اﻟ‬
‫ﺘﻮى اﻟﺮﺳﺎﺋﻞ اﻟﻤﻄﻠﻮ بﺗﺨﺰﻳﻨﻬﺎ‪.‬‬ ‫ﺒﻨﺎ أوﻻ ً إﻧﺸﺎء ﻣﻠﻒ ﻟ‬
‫ﺘﺨﺰﻳﻦ اﻟﺮﺳﺎﺋﻞ وﻋﻠﻴﻨﺎﺗﺤﺪﻳﺪ ﻣ ﺴ‬ ‫ﺘ ﺴﺠﻴﻞ ‪ ،‬ﻃﻠ‬
‫ﻹﺟﺮاء اﻟ‬

‫ﺘ ﺴﺠﻴﻞ‪.‬‬
‫ﺘﺨﺪام داﻟ ﺔ )( ‪basicConfig‬ﻟﻮﺣﺪة اﻟ‬
‫ﺑﺎﺳ‬‫ﺑﺬﻟﻚ‬‫ﻳﻤﻜﻨﻨﺎ اﻟﻘﻴﺎم‬
‫ﺘﻮى )‪= logging.WARNING‬‬
‫‪)logging.basicConfig‬اﺳﻢ اﻟﻤﻠﻒ ‪= 'log.txt' ،‬اﻟﻤ ﺴ‬

‫ﺘﻮى اﻷﻋﲆ ﻟﻬﺬا اﻟﻤﻠﻒ‪.‬‬


‫ﺘﺤﺬﻳﺮ أو اﻟﻤ ﺴ‬
‫ﺘﻮى اﻟ‬
‫ﺑﺈﻧﺸﺎء ﻣﻠﻒ ‪log.txt‬وﻳﻤﻜﻨﻨﺎﺗﺨﺰﻳﻦ رﺳﺎﺋﻞ ﻣ ﺴ‬‫ﺳﻴﻘﻮم اﻟ ﺴﻄﺮ أﻋﻼه‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬


‫اﻟ‬

‫‪194‬‬ ‫ﺑﺎد ‪- 500038 ،‬‬


‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎﻟﻴ ﺔ‬
‫ﺘﺨﺪام اﻟﻄﺮق اﻟ‬
‫ﺑﺎﺳ‬‫ﺑ ﺔ اﻟﺮﺳﺎﺋﻞ إﱃ ﻫﺬا اﻟﻤﻠﻒ‬
‫ﺘﺎ‬
‫ﺑﻌﺪ إﻧﺸﺎء ﻣﻠﻒ اﻟ ﺴﺠﻞ ‪،‬ﻳﻤﻜﻨﻨﺎ ﻛ‬

‫‪) logging.debug‬رﺳﺎﻟ ﺔ(‬

‫‪) logging.info‬رﺳﺎﻟ ﺔ(‬

‫‪) logging. warning‬رﺳﺎﻟ ﺔ(‬

‫‪) logging. Error‬رﺳﺎﻟ ﺔ(‬

‫‪) logging.critical‬رﺳﺎﻟ ﺔ(‬

‫ﺘﻮى؟‬
‫ﺑ ﺔ رﺳﺎﺋﻞﺗﺤﺬﻳﺮ ورﺳﺎﺋﻞ أﻋﲆ ﻣ ﺴ‬
‫ﺘﺎ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬ﻹﻧﺸﺎء ﻣﻠﻒﺳﺠﻞ وﻛ‬‫ﺘﺐ‬
‫س( اﻛ‬

‫ﺘﻮى ‪5) logging.info‬‬


‫ﺘ ﺴﺠﻴﻞ ‪2) logging.basicConfig (filename = 'log.txt' ،‬اﻟﻤ ﺴ‬
‫ﺘﻴﺮاد اﻟ‬
‫)‪1‬اﺳ‬
‫)'‪= logging.WARNING) 3) print ('Logging Demo') 4) logging.debug ('Debug Information‬‬
‫ﺘ ﺴﺠﻴﻞ "(ﻣﻌﻠﻮﻣﺎ ت‬
‫ﺘﺤﺬﻳﺮ )‪") 7‬ﺧﻄﺄ ﻓ ﻲ اﻟ‬
‫) "ﻣﻌﻠﻮﻣﺎ ت اﻟﻤﻌﻠﻮﻣﺎ ت"( ‪")6) logging. warning‬ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫اﻟﺨﻄﺄ"( ‪")8) logging.critical‬ﻣﻌﻠﻮﻣﺎ ت ﻣﻬﻤ ﺔ )"‬

‫‪log.txt:‬‬
‫ﺘﺤﺬﻳﺮ‬
‫ﺗﺤﺬﻳﺮ‪ :‬اﻟﺠﺬر‪ :‬ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺧﻄﺄ‪ :‬اﻟﺠﺬر‪ :‬ﻣﻌﻠﻮﻣﺎ ت اﻟﺨﻄﺄ‬

‫اﻟﺤﺮﺟ ﺔ‪ :‬اﻟﺠﺬر‪ :‬اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﺤﺮﺟ ﺔ‬

‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺘﻢ ﻛ‬
‫ﺘﻮى ﻛـ ‪DEBUG ،‬ﻓ ﺴﻴ‬
‫ﺘﻮى اﻷﻋﲆ ﻓ ﻲ ﻣﻠﻒ اﻟ ﺴﺠﻞ‪ .‬إذا ﺣﺪدﻧﺎ اﻟﻤ ﺴ‬
‫ﺑ ﺔ رﺳﺎﺋﻞ اﻟﻤ ﺴ‬
‫ﺘﺎ‬
‫ﺘﻢ ﻛ‬
‫ﺘ‬‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ﻓﻘﻂﺗﺤﺬﻳﺮ وﺳ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻓ ﻲ اﻟ‬
‫ﺟﻤﻴﻊ اﻟﺮﺳﺎﺋﻞ ﻓ ﻲ ﻣﻠﻒ اﻟ ﺴﺠﻞ‪.‬‬

‫‪test.py‬‬

‫ﺘﻮى )‪3‬‬
‫ﺘ ﺴﺠﻴﻞ ‪)2) logging.basicConfig‬اﺳﻢ اﻟﻤﻠﻒ ‪= 'log.txt' ،‬اﻟﻤ ﺴ‬
‫ﺘﻴﺮاد اﻟ‬
‫)‪1‬اﺳ‬
‫ﺘﺼﺤﻴﺢ'(‬
‫ﺒﺎﻋ ﺔ '( ‪('Logging Demo') 4) logging.debug‬ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫)‪= logging.DEBUG‬ﻃ‬
‫ﺘﺤﺬﻳﺮ )‪") 7‬ﺧﻄﺄ ﻓ ﻲ‬
‫‪" )5) logging.info‬ﻣﻌﻠﻮﻣﺎ ت اﻟﻤﻌﻠﻮﻣﺎ ت"( ‪")6) logging. warning‬ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘ ﺴﺠﻴﻞ "(ﻣﻌﻠﻮﻣﺎ ت اﻟﺨﻄﺄ"( ‪")8) logging.critical‬ﻣﻌﻠﻮﻣﺎ ت ﻣﻬﻤ ﺔ )"‬
‫اﻟ‬

‫‪log.txt‬‬
‫ﺘﺼﺤﻴﺢ‬
‫ﺗﺼﺤﻴﺢ‪ :‬اﻟﺠﺬر‪ :‬ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫‪INFO: root: info Information‬‬

‫ﺘﺤﺬﻳﺮ‬
‫ﺗﺤﺬﻳﺮ‪ :‬اﻟﺠﺬر‪ :‬ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺧﻄﺄ‪ :‬اﻟﺠﺬر‪ :‬ﻣﻌﻠﻮﻣﺎ ت اﻟﺨﻄﺄ‬

‫اﻟﺤﺮﺟ ﺔ‪ :‬اﻟﺠﺬر‪ :‬اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﺤﺮﺟ ﺔ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪195‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺔ‪:‬‬
‫ﺘﺎ‬
‫ﻛﻴﻔﻴ ﺔﺗﻜﻮﻳﻦ ﻣﻠﻒ اﻟ ﺴﺠﻞ ﻓ ﻲ وﺿﻊ اﻟﻜ‬
‫ﺒﻴﺎﻧﺎ ت ‪،‬‬
‫ﺑ ﺔ ﻓﻮق اﻟ‬‫ﺑﺪﻻ ً ﻣﻦ إﻟﺤﺎﻗﻬﺎ إذا أردﻧﺎ اﻟﻜ‬
‫ﺘﺎ‬ ‫ﺘﺮاﺿ ﻲ‪.‬‬
‫ﺑﻤﻠﻒ اﻟ ﺴﺠﻞ‪ .‬إﻟﺤﺎق ﻫﻮ اﻟﻮﺿﻊ اﻻﻓ‬‫ﺘﺮاﺿﻴ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت اﻻﻓ‬
‫ﺘﻢ إﻟﺤﺎق اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪،‬ﺳﻴ‬
‫ﻓ ﻲ اﻟ‬
‫ﺘﺨﺪام ﺧﺎﺻﻴ ﺔ ‪filemode.‬‬
‫ﻓﻌﻠﻴﻨﺎ اﺳ‬

‫ﺘﻮى )‪= logging.WARNING‬‬


‫‪logging.basicConfig (filename = 'log786.txt' ،‬اﻟﻤ ﺴ‬
‫اﻟﻤﻘﺼﻮد ﻟﻺﻟﺤﺎق‬

‫ﺘﻮى )'‪= logging.WARNING ، filemode = 'a‬‬


‫‪logging.basicConfig (filename = 'log786.txt' ،‬اﻟﻤ ﺴ‬
‫ﺑﺼﺮاﺣ ﺔ ﻧﺤﺪد اﻹﻟﺤﺎق‪.‬‬‫ﻧﺤﻦ‬

‫ﺘﻮى )'‪= logging.WARNING ، filemode = 'w‬‬


‫‪logging.basicConfig (filename = 'log786.txt' ،‬اﻟﻤ ﺴ‬
‫ﺑﻘ ﺔ‪.‬‬
‫ﺒﻴﺎﻧﺎ ت اﻟ ﺴﺎ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﻳﻌﻨ ﻲ اﻹﻓﺮاط ﻓ ﻲ ﻛ‬

‫ﻣﻠﺤﻮﻇ ﺔ‪:‬‬

‫ﺘﻮى )‪= logging.DEBUG‬‬


‫‪)logging.basicConfig‬اﺳﻢ اﻟﻤﻠﻒ ‪= 'log.txt' ،‬اﻟﻤ ﺴ‬
‫ﺘﺮاﺿ ﻲ ﻫﻮﺗﺤﺬﻳﺮ )‪(30‬‬
‫ﺘﻮى اﻻﻓ‬
‫ﺘﻮى ‪ ،‬ﻓﺈن اﻟﻤ ﺴ‬
‫إذا ﻟﻢ ﻧﺤﺪد اﻟﻤ ﺴ‬
‫ﺘﺤﻜﻢ‪.‬‬
‫ﺒﺎﻋ ﺔ اﻟﺮﺳﺎﺋﻞ ﻋﲆ وﺣﺪة اﻟ‬
‫ﺘﻢ ﻃ‬
‫ﺘ‬‫إذا ﻟﻢ ﻧﺤﺪد اﺳﻢ اﻟﻤﻠﻒ ‪ ،‬ﻓ ﺴ‬

‫‪test.py‬‬

‫ﺘ ﺴﺠﻴﻞ ‪('info Information') 6) logging. warning‬‬


‫ﺘﻴﺮاد اﻟ‬
‫)‪1‬اﺳ‬
‫‪4) logging.debug ('Debug Information') 5) logging.info‬‬
‫ﺗﺤﺬﻳﺮ‬
‫)'‪')2) logging.basicConfig () 3) print ('Logging Demo‬‬
‫ﺘ ﺴﺠﻴﻞ‪.‬‬
‫ﺘ ﺴﺠﻴﻞ "(ﻣﻌﻠﻮﻣﺎ ت اﻟﺨﻄﺄ"( )‪8‬اﻟ‬
‫اﻟﻤﻌﻠﻮﻣﺎ ت )‪') 7‬ﺧﻄﺄ ﻓ ﻲ اﻟ‬
‫ﺣﺮج )"اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻬﺎﻣ ﺔ )"‬

‫‪D: \ durgaclasses> py test.py‬‬


‫ﺒﻲ‬
‫ﺗ ﺴﺠﻴﻞﺗﺠﺮﻳ‬
‫ﺘﺤﺬﻳﺮ‬
‫ﺗﺤﺬﻳﺮ‪ :‬اﻟﺠﺬر‪ :‬ﻣﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺧﻄﺄ‪ :‬اﻟﺠﺬر‪ :‬ﻣﻌﻠﻮﻣﺎ ت اﻟﺨﻄﺄ‬

‫اﻟﺤﺮﺟ ﺔ‪ :‬اﻟﺠﺬر‪ :‬اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﺤﺮﺟ ﺔ‬

‫ﻛﻴﻔﻴ ﺔﺗﻨ ﺴﻴﻖ رﺳﺎﺋﻞ اﻟ ﺴﺠﻞ‪:‬‬


‫ﺋﻴ ﺴﻴ ﺔ ‪،‬ﻳﻤﻜﻨﻨﺎﺗﻨ ﺴﻴﻖ اﻟﺮﺳﺎﺋﻞ‪.‬‬
‫ﺘﺨﺪام وﺳﻴﻄ ﺔﺗﻨ ﺴﻴﻖ اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﺑﺎﺳ‬

‫ﺘﻮى ﻓﻘﻂ‪logging.basicConfig (format = '٪ (levelname) s') :‬‬


‫)‪1‬ﻟﻌﺮض اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺎج |‬
‫اﻧ‬
‫ﺗﺤﺬﻳﺮ‬
‫ﺧﻄﺄ‬
‫ﺷﺪﻳﺪ اﻷ ﻫﻤﻴ ﺔ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪196‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮى واﻟﺮﺳﺎﻟ ﺔ‪:‬‬


‫)‪2‬ﻟﻌﺮض اﺳﻢ اﻟﻤ ﺴ‬
‫)'‪logging.basicConfig (format = '٪ (levelname) s:٪ (message) s‬‬

‫ﺗﺤﺬﻳﺮ اﻹﺧﺮاج ‪ :‬ﻣﻌﻠﻮﻣﺎ تﺗﺤﺬﻳﺮ ﺧﻄﺄ‪ :‬ﻣﻌﻠﻮﻣﺎ ت ﺧﻄﺄ‬

‫اﻟﺤﺮﺟ ﺔ‪ :‬اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻬﺎﻣ ﺔ‬

‫ﺑﻊ اﻟﺰﻣﻨ ﻲ ﻓ ﻲ رﺳﺎﺋﻞ اﻟ ﺴﺠﻞ‪:‬‬


‫ﻛﻴﻔﻴ ﺔ إﺿﺎﻓ ﺔ اﻟﻄﺎ‬
‫)'‪logging.basicConfig (format = '٪ (asctime) s:٪ (levelname) s:٪ (message) s‬‬

‫ﺘﺎج |‬
‫اﻧ‬
‫ﺗﺤﺬﻳﺮ‪ :‬ﻣﻌﻠﻮﻣﺎ تﺗﺤﺬﻳﺮ‬
‫‪2018-06-15 11: 50: 08،325:‬‬
‫‪2018-06-15 11: 50: 08،372:‬ﺧﻄﺄ‪ :‬ﻣﻌﻠﻮﻣﺎ ت اﻟﺨﻄﺄ‬
‫‪2018-06-15 11: 50: 08،372:‬ﺣ ﺴﺎﺳ ﺔ‪ :‬ﻣﻌﻠﻮﻣﺎ ت ﺣﺮﺟ ﺔ‬

‫ﺘﺎرﻳﺦ واﻟﻮﻗ ﺖ‪:‬‬


‫ﻛﻴﻔﻴ ﺔﺗﻐﻴﻴﺮﺗﻨ ﺴﻴﻖ اﻟ‬
‫ﺋﻴ ﺴﻴ ﺔ اﻟﺨﺎﺻ ﺔ‪datefmt :‬‬
‫ﺘﺨﺪام وﺳﻴﻄ ﺔ اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ اﺳ‬
‫ﻳ‬

‫'‪s:٪ (message) s'، datefmt = '٪ d /٪ m /٪ Y٪ I:٪ M:٪ S٪ p') datefmt = '٪ d /٪ m /٪ Y٪ I:٪ M:٪ S٪ p‬‬
‫)‪logging.basicConfig (format = '٪ (asctime) s:٪ (levelname‬اﻟﺤﺎﻟ ﺔ ﻣﻬﻤ ﺔ‬

‫ﺘﺎج |‬
‫اﻧ‬
‫‪15/06/2018 12:04:31‬م‪:‬ﺗﺤﺬﻳﺮ‪ :‬ﻣﻌﻠﻮﻣﺎ تﺗﺤﺬﻳﺮﻳ ﺔ‬
‫‪15/06/2018 12:04:31‬م‪ :‬ﺧﻄﺄ‪ :‬ﻣﻌﻠﻮﻣﺎ ت ﺧﻄﺄ‬
‫‪15/06/2018 12:04:31‬ﻣ ﺴﺎءً‪ :‬ﺣ ﺴﺎﺳ ﺔ‪ :‬ﻣﻌﻠﻮﻣﺎ ت ﺣﺮﺟ ﺔ‬

‫ﻣﻠﺤﻮﻇ ﺔ‪:‬‬
‫ﺗﻌﻨ ﻲ ﻣﻘﻴﺎس زﻣﻨ ﻲ ‪12‬ﺳﺎﻋ ﺔ‬
‫‪٪I‬‬
‫ﺗﻌﻨ ﻲ ﻣﻘﻴﺎس زﻣﻨ ﻲ ‪24‬ﺳﺎﻋ ﺔ‬
‫‪٪H‬‬

‫ﺜﺎل‪s:٪ (levelname) s:٪ (message) s'، datefmt = '٪ d /٪ m /٪ Y٪ H:٪ M:٪ S') :‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫)‪logging.basicConfig (format = '٪ (asctime‬‬

‫ﺘﺎج‪:‬‬
‫اﻧ‬
‫ﺗﺤﺬﻳﺮ‪ :‬ﻣﻌﻠﻮﻣﺎ تﺗﺤﺬﻳﺮ‬
‫‪15/06/2018 12: 06: 28:‬‬
‫‪15/06/2018 12: 06: 28:‬ﺧﻄﺄ‪ :‬ﻣﻌﻠﻮﻣﺎ ت ﺧﻄﺄ‬
‫‪15/06/2018 12: 06: 28:‬ﺣ ﺴﺎﺳ ﺔ‪ :‬ﻣﻌﻠﻮﻣﺎ ت ﺣﺮﺟ ﺔ‬

‫‪logging.html#logrecord-attributes https://docs.python.org/3/library/time.html#time.strftime‬‬
‫‪https://docs.python.org/3/library/‬‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪197‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪Python‬ﻓ ﻲ ﻣﻠﻒ اﻟ ﺴﺠﻞ‪:‬‬‫ﺜﻨﺎءا ت‬


‫ﺘ‬‫ﺑ ﺔ اﺳ‬
‫ﺘﺎ‬
‫ﻛﻴﻔﻴ ﺔ ﻛ‬
‫ﺜﻨﺎء إﱃ ﻣﻠﻒ اﻟ ﺴﺠﻞ‪.‬‬
‫ﺘ‬‫ﺑ ﺔ ﻣﻌﻠﻮﻣﺎ ت اﻻﺳ‬
‫ﺘﺎ‬
‫ﺘﺎﻟﻴ ﺔ ‪،‬ﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﺘﺨﺪام اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺑﺎﺳ‬
‫)‪logging.exception (msg‬‬

‫ﺜﻨﺎء إﱃ ﻣﻠﻒ اﻟ ﺴﺠﻞ‬


‫ﺘ‬‫ﺑ ﺔ ﻣﻌﻠﻮﻣﺎ ت اﻻﺳ‬
‫ﺘﺎ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬ﻟﻜ‬‫س(‬

‫ﺘﻨ ﺴﻴﻖ‬
‫ﺘﻮى ‪= logging.INFO ،‬اﻟ‬
‫ﺘ ﺴﺠﻴﻞ ‪)2) logging.basicConfig‬اﺳﻢ اﻟﻤﻠﻒ ‪= 'mylog.txt' ،‬اﻟﻤ ﺴ‬
‫ﺘﻴﺮاد اﻟ‬
‫)‪1‬اﺳ‬
‫‪= '٪ (asctime) s:‬‬
‫) ‪s:٪ (message) s '، datefmt ='٪ d /٪ m /٪ Y٪ I:٪ M:٪ S٪ p ') 3) logging.info (' A new Request Came ') 4‬‬
‫)‪٪ (levelname‬ﺟﺮ ب‪Number:')) 6) y = int (input ('Enter Second Number:')) print ('The Result:'، x / y) 7) 8 ) 9) :‬‬
‫ﺑﺼﻔﺮ'( )‪(msg) 12) 13‬‬‫ﺜﻨﺎء ‪')ZeroDivisionError as msg: 10) print‬ﻻﻳﻤﻜﻦ اﻟﻘ ﺴﻤ ﺔ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪5) x = int (input ('Enter First‬‬
‫‪')msg: 14) print‬اﻟﺮﺟﺎءﺗﻮﻓﻴﺮ ﻗﻴﻢ ‪int‬ﻓﻘﻂ'( "( ‪16) 17) logging.info‬‬ ‫‪ValueError‬ﻛـ‬
‫اﻟﻄﻠ ﺐ"(‬ ‫ﺜﻨﺎءاﻛ‬
‫ﺘﻤﺎل ﻣﻌﺎﻟﺠ ﺔ‬ ‫ﺘ)‪15‬‬
‫ﺳ‬ ‫ﺑﺎ‬
‫‪11) logging.exception‬‬
‫‪logging.exception‬‬ ‫)‪(msg‬‬

‫‪D: \ durgaclasses> py test.py‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ اﻷول‪10 :‬‬

‫ﺜﺎﻧ ﻲ‪2 :‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬

‫ﺘﻴﺠ ﺔ‪5.0 :‬‬


‫اﻟﻨ‬

‫‪D: \ durgaclasses> py test.py‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ اﻷول‪20 :‬‬

‫ﺜﺎﻧ ﻲ‪2 :‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬

‫ﺘﻴﺠ ﺔ‪10.0 :‬‬


‫اﻟﻨ‬

‫‪D: \ durgaclasses> py test.py‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ اﻷول‪10 :‬‬

‫ﺜﺎﻧ ﻲ‪0 :‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ اﻟ‬

‫ﻻﻳﻤﻜﻦ اﻟﻘ ﺴﻤ ﺔ ﻋﲆ اﻟﺼﻔﺮ‬

‫‪D: \ durgaclasses> py test.py‬‬


‫أدﺧﻞ اﻟﺮﻗﻢ اﻷول‪ :‬ﻋﺸﺮة‬

‫ﻳﺮﺟﻰﺗﻘﺪﻳﻢ ﻗﻴﻢ ‪int‬ﻓﻘﻂ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪198‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫‪mylog.txt‬‬
‫‪15/06/2018 12:30:51 PM: INFO:‬وﺻﻞ ﻃﻠ ﺐ ﺟﺪﻳﺪ‬
‫ﺘﻤﻠ ﺖ ﻣﻌﺎﻟﺠ ﺔ اﻟﻄﻠ ﺐ‬
‫‪15/06/2018 12:30:53‬ﻣ ﺴﺎءً‪INFO: :‬اﻛ‬
‫‪15/06/2018 12:30:55‬ﻣ ﺴﺎءً‪INFO: :‬وﺻﻞ ﻃﻠ ﺐ ﺟﺪﻳﺪ‬
‫ﺘﻤﻠ ﺖ ﻣﻌﺎﻟﺠ ﺔ اﻟﻄﻠ ﺐ‬
‫‪15/06/2018 12:31:00‬ﻣ ﺴﺎءً‪INFO: :‬اﻛ‬
‫‪15/06/2018 12:31:02‬م‪ :‬ﻣﻌﻠﻮﻣﺎ ت‪ :‬ﺟﺎء ﻃﻠ ﺐ ﺟﺪﻳﺪ‬
‫‪15/06/2018 12:31:05‬م‪ :‬ﺧﻄﺄ‪ :‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ‬
‫‪)Traceback‬أﺣﺪ ث ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬
‫ﻣﻠﻒ ‪"test.py" ،‬اﻟ ﺴﻄﺮ ‪7 ،‬ﻓ ﻲ >‪<module‬‬
‫ﺘﻴﺠ ﺔ‪ ، ":‬س ‪ /‬ص(‬
‫ﺒﺎﻋ ﺔ )"اﻟﻨ‬
‫ﻃ‬
‫‪ZeroDivisionError:‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ‬
‫ﺘﻤﻠ ﺖ ﻣﻌﺎﻟﺠ ﺔ اﻟﻄﻠ ﺐ‬
‫‪15/06/2018 12:31:05‬ﻣ ﺴﺎءً‪INFO: :‬اﻛ‬
‫‪15/06/2018 12:31:06‬ﻣ ﺴﺎءً‪INFO: :‬ﺟﺎء ﻃﻠ ﺐ ﺟﺪﻳﺪ‬
‫ﺑﺎﻷﺳﺎس '‪10: 'ten‬‬
‫‪15/06/2018 12:31:10‬ﻣ ﺴﺎءً‪ :‬ﺧﻄﺄ‪ :‬ﺣﺮﻓ ﻲ ﻏﻴﺮ ﺻﺎﻟﺢ ﻟـ )( ‪int‬‬
‫‪)Traceback‬أﺣﺪ ث ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬
‫ﻣﻠﻒ ‪"test.py" ،‬اﻟ ﺴﻄﺮ ‪5 ،‬ﻓ ﻲ >‪<module‬‬
‫‪')x = int (input‬أدﺧﻞ اﻟﺮﻗﻢ اﻷول‪((':‬‬
‫‪ValueError:‬ﺣﺮﻓﻴ ﺔ ﻏﻴﺮ ﺻﺎﻟﺤ ﺔ ﻟـ )( ‪int‬ذا ت اﻷﺳﺎس '‪10: 'ten‬‬
‫ﺘﻤﻠ ﺖ ﻣﻌﺎﻟﺠ ﺔ اﻟﻄﻠ ﺐ‬
‫‪15/06/2018 12:31:10‬ﻣ ﺴﺎءً‪INFO: :‬اﻛ‬

‫ﻣﺸﺎﻛﻞ ﻣﻊ ‪Root Logger:‬‬


‫ﺘﺮاﺿ ﻲ‪.‬‬
‫ﺒﺎر ﻣ ﺴﺠﻞ اﻟﺠﺬر اﻻﻓ‬
‫ﺘ‬‫ﺘﻢ اﻋ‬
‫ﺑﻨﺎ ‪ ،‬ﻓ ﺴﻴ‬‫ﺘﻌﺮﻳﻒ اﻟﻤ ﺴﺠﻞ اﻟﺨﺎص‬
‫ﺑ‬‫إذا ﻟﻢ ﻧﻘﻢ‬
‫ﺘﻜﻮﻳﻨﺎ ت وﻻﻳﻤﻜﻨﻨﺎﺗﻐﻴﻴﺮ ﻫﺎ‪.‬‬
‫ﺘﻢ إﺻﻼح اﻟ‬
‫ﺘﻜﻮﻳﻦ اﻷﺳﺎﺳ ﻲ ﻟﻤ ﺴﺠﻞ اﻟﺠﺬر ‪،‬ﻳ‬
‫ﺑﻤﺠﺮد إﺟﺮاء اﻟ‬

‫ﺒ ﻲ‪:‬‬
‫ﺒﻴﻖﺗﺠﺮﻳ‬
‫ﺗﻄ‬

‫‪student.py:‬‬

‫ﺘ ﺴﺠﻴﻞ '( ‪(filename = 'student.log'، level = logging.INFO) 3) logging.info‬‬


‫ﺘﻴﺮاد اﻟ‬
‫)‪1‬اﺳ‬
‫‪2) logging.basicConfig‬رﺳﺎﻟ ﺔ ﻣﻌﻠﻮﻣﺎ ت ﻣﻦ وﺣﺪة اﻟﻄﺎﻟ ﺐ'(‬

‫‪test.py:‬‬

‫ﺘﻴﺮاد اﻟﻄﺎﻟ ﺐ '( ‪'test.log'، level = logging.DEBUG) 4) logging.debug‬‬


‫ﺘ ﺴﺠﻴﻞ )‪2‬اﺳ‬
‫ﺘﻴﺮاد اﻟ‬
‫)‪1‬اﺳ‬
‫ﺒﺎر'(‬
‫ﺘ‬‫ﺘﺼﺤﻴﺢ ﻣﻦ وﺣﺪة اﻻﺧ‬
‫= ‪3) logging.basicConfig (filename‬رﺳﺎﻟ ﺔ اﻟ‬

‫‪student.log:‬‬
‫‪INFO:‬اﻟﺠﺬر‪ :‬رﺳﺎﻟ ﺔ ﻣﻌﻠﻮﻣﺎ ت ﻣﻦ وﺣﺪة اﻟﻄﺎﻟ ﺐ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪199‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ وﺣﺪة اﻟﻄﺎﻟ ﺐ‪.‬‬‫ﺒﺎر ‪،‬ﻷن ﻣ ﺴﺠﻞ اﻟﺠﺬر ﻗﺪﺗﻢﺗﻜﻮﻳﻨﻪ‬


‫ﺘ‬‫ﺘ ﻲﺗﻢ إﺟﺮاؤ ﻫﺎ ﻓ ﻲ وﺣﺪة اﻻﺧ‬
‫ﺘﻜﻮﻳﻨﺎ ت اﻟ‬
‫ﺒﻴﻖ أﻋﻼه ‪ ،‬ﻟﻦﺗﻨﻌﻜ ﺲ اﻟ‬
‫ﺘﻄ‬‫ﻓ ﻲ اﻟ‬

‫اﻟﺤﺎﺟ ﺔ إﱃ ﻣ ﺴﺠﻞ ﻟﺪﻳﻨﺎ ﻣﺨﺼﺺ‪:‬‬


‫ﻣﺸﺎﻛﻞ ﻣ ﺴﺠﻞ اﻟﺠﺬر ﻫ ﻲ‪:‬‬

‫ﺘﻜﻮﻳﻦ ﻧﻬﺎﺋ ًﻴﺎ وﻻﻳﻤﻜﻨﻨﺎﺗﻐﻴﻴﺮه‪.‬‬


‫ﺘﻜﻮﻳﻦ اﻷﺳﺎﺳ ﻲ ‪،‬ﻳﻜﻮن ﻫﺬا اﻟ‬
‫ﺑﻤﺠﺮدﺗﻌﻴﻴﻦ اﻟ‬
‫)‪1‬‬
‫ﺋﻤﺎ ﻣﻊ ﻣﻌﺎﻟﺞ واﺣﺪ ﻓﻘﻂ ﻓ ﻲ ﻛﻞ ﻣﺮة ‪ ،‬إﻣﺎ وﺣﺪةﺗﺤﻜﻢ أو ﻣﻠﻒ ‪ ،‬وﻟﻜﻦ ﻟﻴ ﺲ ﻛﻼ ﻫﻤﺎ‬
‫ﺘﻌﻤﻞ دا ً‬
‫)‪2‬ﺳ‬
‫ﻣﻌً ﺎ‪.‬‬
‫ﺘﻠﻔ ﺔ‪.‬‬
‫ﺘﻮﻳﺎ ت ﻣﺨ‬
‫ﺘﻠﻔ ﺔ ﻋﲆ ﻣ ﺴ‬
‫)‪3‬ﻻﻳﻤﻜﻦﺗﻜﻮﻳﻦ اﻟﻤ ﺴﺠﻞ ﻣﻊﺗﻜﻮﻳﻨﺎ ت ﻣﺨ‬
‫ﺘﻌﺪدة‪.‬‬
‫ﺘﻌﺪدة ﻟﻮﺣﺪا ت ‪ /‬ﻓﺌﺎ ت ‪ /‬ﻃﺮق ﻣ‬
‫)‪4‬ﻻﻳﻤﻜﻨﻨﺎﺗﺤﺪﻳﺪ ﻣﻠﻔﺎ تﺗ ﺴﺠﻴﻞ ﻣ‬

‫ﺑﻨﺎ‬‫ﺘﺎر أدوا ت ﻗﻄﻊ اﻷﺷﺠﺎر اﻟﻤﺨﺼﺼ ﺔ اﻟﺨﺎﺻ ﺔ‬


‫ﺘﻐﻠ ﺐ ﻋﲆ ﻫﺬه اﻟﻤﺸﺎﻛﻞ ‪،‬ﻳﺠ ﺐ أن ﻧﺨ‬
‫ﻟﻠ‬

‫ﺘﻘﺪﻣ ﺔ‪ :‬اﻟﻤ ﺴﺠﻞ‪:‬‬


‫ﺘ ﺴﺠﻴﻞ اﻟﻤ‬
‫ﻣﻴﺰا ت وﺣﺪة اﻟ‬
‫ﺘ ﺴﺠﻴﻞ اﻷﺳﺎﺳ ﻲ‪.‬‬
‫ﺗﻘﺪﻣﺎ ﻣﻦ اﻟ‬
‫ً‬ ‫ﺜﺮ‬
‫اﻟﻤ ﺴﺠﻞ أﻛ‬
‫ﺘﺨﺪاﻣﻪ وﻳﻮﻓﺮ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻴﺰا ت اﻹﺿﺎﻓﻴ ﺔ‪.‬‬
‫ﺑﺎﺳ‬‫ﺑﺸﺪة‬‫ﻳﻮﺻﻰ‬

‫ﺘﻘﺪم‪:‬‬
‫ﺘ ﺴﺠﻴﻞ اﻟﻤ‬
‫ﺧﻄﻮا ت اﻟ‬

‫ﺘﻮى اﻟ ﺴﺠﻞ‪.‬‬
‫ﺗﻌﻴﻴﻦ ﻣ ﺴ‬
‫)‪1‬إﻧﺸﺎء ﻛﺎﺋﻦ اﻟﻤ ﺴﺠﻞ و‬
‫)‪('demologger') logger.setLevel (logging.INFO‬‬
‫‪logger = logging.getLogger‬‬

‫ﺘﻮى اﻟ ﺴﺠﻞ‪.‬‬
‫ﺗﻌﻴﻴﻦ ﻣ ﺴ‬
‫)‪2‬إﻧﺸﺎء ﻛﺎﺋﻦ ﻣﻌﺎﻟﺞ و‬

‫ﺜﻞ ‪StreamHandler‬و ‪FileHandler‬وﻣﺎ إﱃ ذﻟﻚ‪.‬‬


‫)‪ 3‬ﻫﻨﺎك ﻋﺪة أﻧﻮاع ﻣﻦ اﻟﻤﻌﺎﻟﺠﺎ ت ﻣ‬
‫)‪() consoleHandler.setLevel (logging.INFO‬‬
‫‪ConsoleHandler = logging.StreamHandler‬‬

‫ﺘﺤﻜﻢ‪.‬‬
‫ﺒﺎﻋ ﺔ رﺳﺎﺋﻞ اﻟ ﺴﺠﻞ ﻋﲆ وﺣﺪة اﻟ‬
‫ﺘﻢ ﻃ‬
‫ﺘ‬‫ﺘﺨﺪﻣﻨﺎ ‪StreamHandler ،‬ﻓ ﺴ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬إذا اﺳ‬

‫ﺘ ﺴﺠﻴﻞ‪ .‬اﻟﻤﻨ ﺴﻖ )' ‪-٪ (name) s -٪ (levelname) s:٪ (message) s' ، datefmt = '٪ d /٪ m /٪ Y٪ I:٪ M:٪ S٪ p‬‬
‫)‪4‬إﻧﺸﺎء ﻛﺎﺋﻦ ﻣﻨ ﺴﻖ‪ .‬اﻟﻤﻨ ﺴﻖ =اﻟ‬
‫‪('٪ (asctime) s‬‬

‫)‪5‬إﺿﺎﻓ ﺔ اﻟﻤﻨ ﺴﻖ إﱃ اﻟﻤﻌﺎﻟﺞ ‪) consoleHandler.setFormatter‬اﻟﻤﻨ ﺴﻖ(‬

‫ﺘﺤﻜﻢ(‬
‫)‪6‬إﺿﺎﻓ ﺔ ﻣﻌﺎﻟﺞ إﱃ اﻟﻤ ﺴﺠﻞ ‪) logger.addHandler‬وﺣﺪة اﻟ‬

‫ﺘﺼﺤﻴﺢ'(‬
‫ﺘﺎﻟﻴ ﺔ ‪')logger.debug‬رﺳﺎﻟ ﺔ اﻟ‬
‫ﺘﺨﺪام ﻛﺎﺋﻦ اﻟﻤ ﺴﺠﻞ واﻷﺳﺎﻟﻴ ﺐ اﻟ‬
‫ﺑﺎﺳ‬‫ﺑ ﺔ اﻟﺮﺳﺎﺋﻞ‬
‫ﺘﺎ‬
‫)‪7‬ﻛ‬
‫‪')logger.info‬رﺳﺎﻟ ﺔ اﻟﻤﻌﻠﻮﻣﺎ ت'(‬

‫ﺜﺎﻧﻴ ﺔ ‪040 - 64 51 27 86، 80 96 96 96 96، 92 46 21 21 43 | www.durgasoft.com‬‬ ‫اﻟ‬

‫‪200‬‬
‫‪ ،DURGASOFT،‬ﺣﻴﺪر أ‬
‫ﺑﺎد ‪- 500038 ،‬‬ ‫ﺑﻴ ﺖ‬ ‫ﺘﺮ‪#‬‬
‫ﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬ ‫‪202،‬‬ ‫ﺑﻖ ‪2 ،‬‬
‫ﻫﺪى ﻣﺎﻳ‬ ‫اﻟﻄﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺗﺤﺬﻳﺮ اﻟﺮﺳﺎﻟ ﺔ"(‬


‫‪")logger.warn‬‬
‫‪")logger.error‬رﺳﺎﻟ ﺔ ﺧﻄﺄ"(‬
‫‪")logger.critical‬رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ"(‬

‫ﺗﻨﺎ‪.‬‬
‫ﺒﺎ‬
‫ﺘﻄﻠ‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻣ‬‫ﺑﻨﺎ‬‫ﺘﻮى اﻟﺨﺎص‬
‫ﺘﻮى ‪WARNING.‬وﻟﻜﻦﻳﻤﻜﻨﻨﺎﺗﺤﺪﻳﺪ اﻟﻤ ﺴ‬
‫ﺘﻢﺗﻌﻴﻴﻨﻪ ﻋﲆ ﻣ ﺴ‬
‫ﻣﻼﺣﻈ ﺔ‪Bydefault logger :‬ﺳﻴ‬

‫)'‪logger = logging.getLogger ('demologger‬‬


‫)‪logger.setLevel (logging.INFO‬‬

‫ﺘﻮى‬
‫ﺘﻮى اﻟﻤ ﺴﺠﻞ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎﺗﻌﻴﻴﻦ ﻣ ﺴ‬
‫ﺘﺤﻜﻢ وﻣﻌﺎﻟﺠﺎ ت اﻟﻤﻠﻔﺎ ت‪ .‬إذا ﻟﻢ ﻧﻜﻦ راﺿﻴﻦ ﻋﻦ ﻣ ﺴ‬
‫ﺘﺮاﺿ ًﻴﺎ ﻟﻮﺣﺪة اﻟ‬
‫ﺘﻮىﺳﺠﻞ اﻟﻤ ﺴﺠﻞ اﻓ‬
‫ﺘﻮﻓﺮ ﻣ ﺴ‬
‫ﻳ‬
‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ‪.‬‬
‫ﺘﺤﻜﻢ وﻣ ﺴ‬
‫ﺘﻮى وﺣﺪة اﻟ‬
‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ ﻋﲆ ﻣ ﺴ‬‫اﻟ ﺴﺠﻞ‬

‫ﺘﺤﻜﻢ )( ‪= logging.StreamHandler‬‬
‫وﺣﺪة اﻟ‬
‫ﺗ ﺴﺠﻴﻞﺗﺤﺬﻳﺮ(‬
‫‪)consoleHandler.setLevel‬‬

‫‪fileHandler = logging.FileHandler ('abc.log' ،‬اﻟﻮﺿﻊ )'‪= 'a‬‬


‫)‪fileHandler.setLevel (logging.ERROR‬‬

‫ﺘﻮىﺳﺠﻞ اﻟﻤ ﺴﺠﻞ أﻗﻞ ﻣﻦ‬


‫ﺜﺎل ‪،‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻣ ﺴ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺤﻜﻢ وﺳﺠﻞ اﻟﻤﻠﻒ‪ .‬ﻋﲆﺳ‬
‫ﺘﻮﻳﺎ ت وﺣﺪة اﻟ‬
‫ﻣﻼﺣﻈ ﺔ‪:‬ﻳﺠ ﺐ أنﻳﺪﻋﻢ اﻟﻤ ﺴﺠﻞ ﻣ ﺴ‬
‫ﺘﻮىﺳﺠﻞ اﻟﻤ ﺴﺠﻞ‪.‬‬
‫ﺘﻢ اﻟﻨﻈﺮ ﻓﻘﻂ ﻓ ﻲ ﻣ ﺴ‬
‫ﺘﺤﻜﻢ واﻟﻤﻠﻒ‪ .‬ﺧﻼف ذﻟﻚ ‪،‬ﺳﻴ‬
‫ﺘﻮﻳﺎ ت وﺣﺪة اﻟ‬
‫ﻣﺴ‬

‫ﺒﺎر ‪INFO‬‬
‫ﺘ‬‫ﺘﻢ اﻋ‬
‫‪ DEBUG‬ﺻﺎﻟﺢ وﺳﻴ‬ ‫ﺘﺤﻜﻢ ﻓ ﻲ ‪INFO‬‬
‫وﺣﺪة اﻟ‬ ‫ﺜﺎل‪ :‬اﻟﻤ ﺴﺠﻞ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺘﺤﻜﻢ‪.‬‬
‫ﺒﺎر ‪INFO‬ﻓﻘﻂ ﻟﻮﺣﺪة اﻟ‬
‫ﺘ‬‫ﺘﻢ اﻋ‬
‫‪INFO‬ﻏﻴﺮ ﺻﺎﻟﺢ وﺳﻴ‬ ‫ﺘﺤﻜﻢ ‪DEBUG‬‬
‫وﺣﺪة اﻟ‬ ‫اﻟﻤ ﺴﺠﻞ‬

‫ﺘﺤﻜﻢ‪:‬‬
‫ﺒ ﻲ ﻟﻤﻌﺎﻟﺞ وﺣﺪة اﻟ‬
‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

‫ﺘﻴﺮاد )‪2‬ﻓﺌ ﺔ )‪= '٪ m /٪ d /٪ Y٪ I:٪ M:٪ S٪ p') 13) 14) 15‬‬
‫ﺗ ﺴﺠﻴﻞ اﻻﺳ‬
‫)‪1‬‬
‫‪5) 6) 7) 8) 9) 10) 11) ٪ (levelname) s:٪ (message) s '، 12) datefmt‬‬
‫‪LoggerDemoConsole: 3) 4) def testLog (self):‬‬

‫)‪('demologger') logger.setLevel (logging.INFO‬‬


‫‪logger = logging.getLogger‬‬

‫)‪() consoleHandler.setLevel (logging.INFO‬‬


‫‪ConsoleHandler = logging.StreamHandler‬‬

‫ﺘ ﺴﺠﻴﻞ‪ .‬اﻟﻤﻨ ﺴﻖ ‪('٪ (asctime) s -٪ (name) s -‬‬


‫اﻟﻤﻨ ﺴﻖ =اﻟ‬

‫ﺘﺤﻜﻢ(‬
‫‪)consoleHandler.setFormatter‬اﻟﻤﻨ ﺴﻖ( اﻟﻤ ﺴﺠﻞ ‪) reldnaHdda.‬وﺣﺪة اﻟ‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪201‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

() ‫ﺘﻮﺿﻴﺤ ﻲ‬
‫اﻟﻌﺮض اﻟ‬16) ("‫ﺘﺼﺤﻴﺢ‬
17) 18) 19) 20)
‫ﺳﺎﻟ ﺔ اﻟ‬ 21) 22)
‫ر‬logger.debug ("
LoggerDemoConsole () 23)
Error (' ('‫ت‬ demo.testLog
‫اﻟﻤﻌﻠﻮﻣﺎ‬ ‫رﺳﺎﻟ ﺔ‬logger.info ('
= logger.
logger.warn ('warn message')
('‫رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬logger.critical (' ('‫رﺳﺎﻟ ﺔ ﺧﻄﺄ‬

D: \ durgaclasses> py loggingdemo3.py
‫رﺳﺎﻟ ﺔ ﻣﻌﻠﻮﻣﺎ ت‬- demologger - INFO: ‫ﻣ ﺴﺎ ًء‬06/18/2018 12:14:15
‫ رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ‬:‫ﺗﺤﺬﻳﺮ‬
- demologger - ‫ﻣ ﺴﺎ ًء‬06/18/2018 12:14:15
‫ رﺳﺎﻟ ﺔ ﺧﻄﺄ‬:‫ﺧﻄﺄ‬- demologger - ‫ﻣ ﺴﺎ ًء‬06/18/2018 12:14:15
‫ رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬:‫ﺣﺮج‬- demologger - ‫ﻣ ﺴﺎ ًء‬06/18/2018 12:14:15

(LoggerDemoConsole .__ name__) ‫ﺘﺎﻟ ﻲ‬


‫ ﻓﻌﻠﻴﻨﺎ إﻧﺸﺎء ﻛﺎﺋﻦ اﻟﻤ ﺴﺠﻞ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬، ‫ﺘﺨﺪام اﺳﻢ اﻟﻔﺌ ﺔ ﻛﺎﺳﻢ اﻟﻤ ﺴﺠﻞ‬
‫ إذا أردﻧﺎ اﺳ‬:‫ﻣﻼﺣﻈ ﺔ‬
logger = logging.getLogger

:‫ﺗﺞ‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔﻳﻜﻮن اﻟﻨﺎ‬

D: \ durgaclasses> py loggingdemo3.py
‫رﺳﺎﻟ ﺔ ﻣﻌﻠﻮﻣﺎ ت‬- LoggerDemoConsole - INFO: ‫ﻣ ﺴﺎ ًء‬06/18/2018 12:21:00
‫ رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ‬:‫ﺗﺤﺬﻳﺮ‬
- LoggerDemoConsole - ‫ﻣ ﺴﺎ ًء‬06/18/2018 12:21:00
‫ رﺳﺎﻟ ﺔ ﺧﻄﺄ‬:‫ﺧﻄﺄ‬- LoggerDemoConsole - ‫ﻣ ﺴﺎ ًء‬06/18/2018 12:21:00
‫ رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬:‫ﺣﺮﺟ ﺔ‬LoggerDemoConsole - ‫ﺘﺤﻜﻢ‬
‫وﺣﺪة اﻟ‬- ‫ﻣ ﺴﺎ ًء‬06/18/2018 12:21:00

:‫ﺒ ﻲ ﻟﻤﻌﺎﻟﺞ اﻟﻤﻠﻔﺎ ت‬


‫ﺑﺮﻧﺎﻣﺞﺗﺠﺮﻳ‬

٪ (levelname) s:٪ (message) s '، datefmt ='٪ ‫ﻓﺌ ﺔ‬2) ‫ﺘﻴﺮاد‬


‫ﺗ ﺴﺠﻴﻞ اﻻﺳ‬
1)
LoggerDemoConsole: 3) 4) def testLog (self): 5) 6) 7) 8) 9) 10) 11)
٪ d /٪ Y٪ I:٪ M:٪ S٪ p ') 12) 13) 14) 15) 16)/ ‫م‬

= logging.getLogger ('demologger') logger.setLevel (logging.INFO)


logger

(logging.INFO) ‫اﻟﻮﺿﻊ‬fileHandler = logging.FileHandler ('abc.log' ،


= 'a') fileHandler.setLevel

('٪ (asctime) s -٪ (name) s - ‫ اﻟﻤﻨ ﺴﻖ‬.‫ﺘ ﺴﺠﻴﻞ‬


‫اﻟﻤﻨ ﺴﻖ =اﻟ‬

(fileHandler) (‫)اﻟﻤﻨ ﺴﻖ‬fileHandler.setFormatter


logger.addHandler

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬


202 - 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫‪Machine Translated by Google‬‬

‫ﺘﻮﺿﻴﺤ ﻲ )(‬
‫اﻟﻌﺮض)'اﻟ‬ ‫ﺗﺼﺤﻴﺢ )‪17) 18‬‬
‫‪logger.info‬‬ ‫)‪21‬ﺔ)‪19) 20‬‬ ‫)‪22‬‬
‫)'رﺳﺎﻟ‬ ‫)‪23‬‬
‫‪logger.debug‬‬
‫‪= LoggerDemoConsole‬‬ ‫‪() 24) demo.testLog‬‬
‫‪') logger.warn‬رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ'(‬ ‫)'رﺳﺎﻟ ﺔ ﻣﻌﻠﻮﻣﺎ ت '(‬
‫'( ‪logger.errorn‬رﺳﺎﻟ ﺔ ﺧﻄﺄ'( '( ‪logger.critical‬‬
‫رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ'(‬

‫‪abc.log:‬‬
‫‪07/05/2018 08:58:04 AM - demologger - INFO: info message‬‬
‫ﺗﺤﺬﻳﺮ‪ :‬رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ‬
‫‪07/05/2018 08:58:04 AM - demologger -‬‬
‫‪07/05/2018 08:58:04 AM - demologger -‬ﺧﻄﺄ‪ :‬رﺳﺎﻟ ﺔ ﺧﻄﺄ‬
‫‪07/05/2018 08:58:04 AM - demologger -‬ﺣﺮﺟ ﺔ‪ :‬رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬

‫ﺘﻜﻮﻳﻦ‪:‬‬
‫اﻟﻤ ﺴﺠﻞ ﻣﻊ ﻣﻠﻒ اﻟ‬
‫ﺘﻜﻮﻳﻦ‬
‫ﺑ ﺔ داﺧﻞ ﻣﻠﻒ اﻟ‬
‫ﺘﻬﻴﺌ ﺔ ﺟﻤﻴﻊ اﻷﺷﻴﺎء اﻟﻤﻄﻠﻮ‬
‫ﺑ‬‫ﺑﺮﻣﺠ ﺔ ﺟﻴﺪة‪.‬ﺳﻨﻘﻮم‬‫ﺜﻮن‪ .‬إﻧﻬﺎ ﻟﻴ ﺴ ﺖ ﻣﻤﺎرﺳ ﺔ‬
‫ﺑﺎﻳ‬‫ﺘﺮﻣﻴﺰه ﻓ ﻲ ﻧﺺ‬
‫ﺑ‬‫ﺒﺮﻧﺎﻣﺞ أﻋﻼه ‪ ،‬ﻛﻞ ﺷ ﻲء ﻗﻤﻨﺎ‬
‫ﻓ ﻲ اﻟ‬
‫ﺑﺮﻧﺎﻣﺠﻨﺎ‪.‬‬‫ﺒﺎﺷﺮة ﻓ ﻲ‬
‫ﺘﺨﺪام ﻫﺬا اﻟﻤﻠﻒ ﻣ‬
‫وﻳﻤﻜﻨﻨﺎ اﺳ‬

‫)'‪logging.config.fileConfig ('logging.conf‬‬
‫)__‪logger = logging.getLogger (LoggerDemoConf .__ name‬‬

‫ﺜﻞ ‪txt‬أو ‪durga‬وﻣﺎ إﱃ ذﻟﻚ‪.‬‬


‫ﺘﺪاد ﻣ‬
‫ﺘﺨﺪام أي اﻣ‬
‫ﺘﺪاد اﻟﻤﻠﻒ ‪conf.‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﻣﻼﺣﻈ ﺔ‪ :‬ﻻﻳﻠﺰم أنﻳﻜﻮن اﻣ‬

‫‪logging.conf‬‬
‫ﺑﻴﻦ[‬
‫]اﻟﺤﻄﺎ‬
‫ﺗﻴﺢ =اﻟﺠﺬر ‪LoggerDemoConf ،‬‬
‫ﻣﻔﺎ‬

‫]ﻣﻌﺎﻟﺠﺎ ت[‬
‫ﺗﻴﺢ ‪= fileHandler‬‬
‫ﻣﻔﺎ‬

‫]اﻟﻤﻨ ﺴﻘﻮن[‬
‫ﺑ ﺴﻴﻂ‬‫ﺗﻨ ﺴﻴﻖ‬
‫ﺗﻴﺢ =‬
‫ﻣﻔﺎ‬

‫]‪[logger_root‬‬
‫ﺗﺼﺤﻴﺢ‬
‫ﺘﻮى =‬
‫اﻟﻤ ﺴ‬
‫ﻣﻌﺎﻟﺠﺎ ت ‪= fileHandler‬‬

‫]‪[logger_LoggerDemoConf‬‬
‫ﺗﺼﺤﻴﺢ‬
‫ﺘﻮى =‬
‫اﻟﻤ ﺴ‬
‫ﻣﻌﺎﻟﺠﺎ ت ‪= fileHandler‬‬

‫‪Qualname = demoLogger‬‬

‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ ‪ ،‬رﻗﻢ ‪202 ، 2‬‬‫اﻟ‬

‫‪203‬‬
‫ﺑﺎد ‪- 500038 ،‬‬
‫ﺑﻴ ﺖ ‪ ،‬ﺣﻴﺪر أ‬
‫ﺘﺮﻳﻔﺎﻧﺎم ‪ ،‬أﻣﻴﺮ‬
‫ﺑﻖ ‪ ،‬ﻫﺪى ﻣﺎﻳ‬
‫اﻟﻄﺎ‬
‫‪040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com‬‬
Machine Translated by Google

[handler_fileHandler]
= FileHandler ‫ﻓﺌ ﺔ‬
‫ﺗﺼﺤﻴﺢ‬
= ‫ﺘﻮى‬
‫اﻟﻤ ﺴ‬

‫ﺑ ﺴﻴﻂ‬‫ﺗﻨ ﺴﻴﻖ‬
= ‫اﻟﻤﻨ ﺴﻖ‬
args = ('test.log'، 'w')

[‫ﺒ ﺴﻴﻂ‬
‫]ﻣﻨ ﺴﻖ_اﻟ‬
=٪ (asctime) s -٪ (name) s -٪ (levelname) s -٪ (message) s ‫ﺘﻨ ﺴﻴﻖ‬
‫اﻟ‬
datefmt =٪ m /٪ d /٪ Y٪ I:٪ M:٪ S٪ p

test.py

(LoggerDemoConf .__ name__ ) 7) 8) 9) 10) 11) 12) 13) 14) ‫ﺘ ﺴﺠﻴﻞ‬


‫ﺘﻴﺮاد اﻟ‬
‫اﺳ‬1)
(self): 5) logging.config.fileConfig ('logging.conf') 6) logger = logging.getLogger
‫اﻟﻌﺮض‬2) import logging.config 3) class LoggerDemoConf (): 4) def testLog
= LoggerDemoConf () 15) demo.testLog () ‫ﺘﻮﺿﻴﺤ ﻲ‬
‫اﻟ‬

') logger.info ‫)'رﺳﺎﻟ ﺔﺗﺼﺤﻴﺢ‬logger.debug


('‫ )'رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ‬logger.warn (' ‫)'رﺳﺎﻟ ﺔ ﻣﻌﻠﻮﻣﺎ ت‬
logger.critical (' ('‫رﺳﺎﻟ ﺔ ﺧﻄﺄ‬logger.errorn ('
('‫رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬

test.log
‫ﺘﺼﺤﻴﺢ‬
‫رﺳﺎﻟ ﺔ اﻟ‬06/18/2018 12:40:05 PM - LoggerDemoConf - DEBUG -
‫رﺳﺎﻟ ﺔ ﻣﻌﻠﻮﻣﺎ ت‬- LoggerDemoConf - INFO - ‫ﻣ ﺴﺎ ًء‬06/18/2018 12:40:05
‫رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ‬- ‫ﺗﺤﺬﻳﺮ‬
06/18/2018 12:40:05 PM - LoggerDemoConf -
‫رﺳﺎﻟ ﺔ ﺧﻄﺄ‬- ‫ﺧﻄﺄ‬- LoggerDemoConf - ‫م‬06/18/2018 12:40:05
‫ﺣﺮﺟ ﺔ‬- ‫رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬06/18/2018 12:40:05 PM - LoggerDemoConf -

‫ﺘﻮى اﻟ ﺴﺠﻞ ﻛﻤﻌﻠﻮﻣﺎ ت‬


‫ﺒﻂ ﻣ ﺴ‬
‫ﻟﻀ‬1: ‫اﻟﺤﺎﻟ ﺔ‬

[handler_fileHandler]
= FileHandler ‫ﻓﺌ ﺔ‬
= INFO ‫ﺘﻮى‬
‫اﻟﻤ ﺴ‬

‫ﺑ ﺴﻴﻂ‬‫ﺗﻨ ﺴﻴﻖ‬
= ‫اﻟﻤﻨ ﺴﻖ‬
args = ('test.log'، 'w')

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

204
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

‫ﺒﻂ وﺿﻊ اﻹﻟﺤﺎق‬


‫ﻟﻀ‬2: ‫اﻟﺤﺎﻟ ﺔ‬

[handler_fileHandler]
= FileHandler ‫ﻓﺌ ﺔ‬
= INFO ‫ﺘﻮى‬
‫اﻟﻤ ﺴ‬

‫ﺑ ﺴﻴﻂ‬‫ﺗﻨ ﺴﻴﻖ‬
= ‫اﻟﻤﻨ ﺴﻖ‬
args = ('test.log'، 'a')

:‫إﻧﺸﺎء ﻣ ﺴﺠﻞ ﻣﺨﺼﺺ‬

customlogger.py

4) :(‫ﺘﻮى‬
‫)اﻟﻤ ﺴ‬3) def getCustomLogger ‫ﺘﻴﺮاد‬
‫ﻓﺤﺺ اﻻﺳ‬2) ‫ﺘﻴﺮاد‬
‫ﺗ ﺴﺠﻴﻞ اﻻﺳ‬
1)

logger.setLevel ‫ اﻟﻄﺮﻳﻘ ﺔ ﻣﻦ ﺣﻴ ﺚﺗ ﺴﻤﻰ ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ‬/ ‫اﺣﺼﻞ ﻋﲆ اﺳﻢ اﻟﻔﺌ ﺔ‬#
= inspect.stack () [1] [3] 6) logger = logging.getLogger (loggername) 7)
('abc.log'، mode = 'a') 10) fileHandler.setLevel (‫ﺘﻮى‬
‫)اﻟﻤ ﺴ‬5) loggername
s -٪ (name) s - ‫اﻟﻤﻨ ﺴﻖ‬11) 12) (‫ﺘﻮى‬
‫)اﻟﻤ ﺴ‬8) 9) fileHandler = logging.FileHandler
= logging.Formatter ('٪ (asctime)

s '، datefmt ='٪ m /٪ d /٪ Y ٪ I:٪ M:٪ S٪ p ') 13) fileHandler.setFormatter


14) logger.addHandler ( fileHandler) 15) 16) (‫)اﻟﻤﻨ ﺴﻖ‬٪ (levelname) s: ٪ (message)
‫ﻋﻮدة اﻟﻤ ﺴﺠﻞ‬

test.py

message') 7) ‫ﺘﻴﺮاد‬
‫اﺳ‬Customlogger ‫ﻣﻦ‬2) ‫ﺘ ﺴﺠﻴﻞ‬
‫ﺘﻴﺮاد اﻟ‬
‫اﺳ‬1)
(logging.DEBUG) 6) logger.debug ('m1: debug
LoggingDemo: 4) def m1 (self): 5) logger = getCustomLogger
getCustomLogger (logging. .‫اﻟﻤ ﺴﺠﻞ‬getCustomLogger 3) class
('m1 :itical message')
9) logger.error ('m1: error11) def m2 (self):
message') 12) logger =
10) logger.critical
('m1: info message') 8) logger.warn ('m1: warn message')
(‫ﺗﺤﺬﻳﺮ‬
info

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

205 - 500038 ، ‫ﺑﺎد‬


‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
‫اﻟﻄﺎ‬
Machine Translated by Google

logger.warn
debug ('m2:14)
message') warn message')
logger.info 16)info
('m2: logger.error
message')('m2:
15)
17)logger.debug
20) logger.critical(' ('m3:
m2:debug
‫ﺳﺎﻟ ﺔ ﺧﻄﺄ‬‫ر‬13) logger.debug
message ') 21) ‫'( ﺔ ﺣﺮﺟ ﺔ‬m2:
‫)'رﺳﺎﻟ‬
(self):
28) 19)
l.m1logger = getCustomLogger
() 29) l.m2 (logging.ERROR)
() 30) l.m3 () .‫ﺴﺠﻞ‬ ‫ )'اﻟﻤ‬18) def m3
l = LoggingDemo
message') () 27) print
24) logger.critical ("Custom
('m3 Logger Demo")
:itical message') 25) 26)
('m3: warn
infomessage')
('m3: info 23) logger.error
message') ('m3: error
22) logger.warn

abc.log:
‫ﺘﺼﺤﻴﺢ‬
‫رﺳﺎﻟ ﺔ اﻟ‬- m1 - DEBUG: m1: ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:17:19
‫رﺳﺎﻟ ﺔ ﻣﻌﻠﻮﻣﺎ ت‬- m1 - INFO: m1: ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:17:19
‫رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ‬m1: :‫ﺗﺤﺬﻳﺮ‬
- m1 - ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:17:19
‫رﺳﺎﻟ ﺔ ﺧﻄﺄ‬m1: :‫ﺧﻄﺄ‬- m1 - ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:17:19
‫رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬m1: :‫ﺣﺮج‬- m1 - ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:17:19
‫رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ‬m2: :‫ﺗﺤﺬﻳﺮ‬
- ‫ﺑﻊ‬
‫ﺘﺮ ﻣﺮ‬
‫ﻣ‬- ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:17:19
‫رﺳﺎﻟ ﺔ ﺧﻄﺄ‬m2: :‫ﺧﻄﺄ‬- m2 - ‫ﻣ ﺴﺎ ًء‬2018/06/19 12:17:19
‫ رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬:‫ﺑﻊ‬
‫ﺘﺮ ﻣﺮ‬
‫ ﻣ‬:‫ﺣﺮج‬- ‫ﺑﻊ‬
‫ﺘﺮ ﻣﺮ‬
‫ﻣ‬- ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:17:19
‫رﺳﺎﻟ ﺔ ﺧﻄﺄ‬m3: :‫ﺧﻄﺄ‬- m3 - ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:17:19
‫رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬m3: :‫ﺣﺮج‬- m3 - ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:17:19

:‫ﺘﺼﻞ‬
‫ﺑﻨﺎ ًء ﻋﲆ اﻟﻤ‬‫ﻛﻴﻔﻴ ﺔ إﻧﺸﺎء ﻣﻠﻒﺳﺠﻞ ﻣﻨﻔﺼﻞ‬

6) logger.setLevel :(‫ﺘﻮى‬
‫)اﻟﻤ ﺴ‬3) def getCustomLogger ‫ﺘﻴﺮاد‬
‫ﻓﺤﺺ اﻻﺳ‬2) ‫ﺘ ﺴﺠﻴﻞ‬
‫ﺘﻴﺮاد اﻟ‬
‫اﺳ‬1)
4) loggername = inspect.stack () [1] [3] 5) logger = logging.getLogger (loggername)
('{}. log'.format (loggername) ، mode =' a ') 9) fileHandler.setLevel (‫ﺘﻮى‬
‫)اﻟﻤ ﺴ‬
10) (‫ﺘﻮى‬
‫)اﻟﻤ ﺴ‬7 ) 8) fileHandler = logging.FileHandler

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

206
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

('٪ (asctime) s -٪ (name) s - ‫ اﻟﻤﻨ ﺴﻖ‬.‫ﺘ ﺴﺠﻴﻞ‬


‫اﻟﻤﻨ ﺴﻖ =اﻟ‬11)
(message) s '، datefmt ='٪ m /٪ d /٪ Y ٪ I:٪ M:٪ S٪ p ') 12) fileHandler.setFormatter
‫ﻋﻮدة اﻟﻤ ﺴﺠﻞ‬13) logger.addHandler ( fileHandler) 14) 15) (‫)اﻟﻤﻨ ﺴﻖ‬٪ (levelname) s: ٪

test.py:
‫ﺑﻖ‬
‫ﻛﺎﻟ ﺴﺎ‬#

message') 7) ‫ﺘﻴﺮاد‬
‫اﺳ‬Customlogger ‫ﻣﻦ‬2) ‫ﺘ ﺴﺠﻴﻞ‬
‫ﺘﻴﺮاد اﻟ‬
‫اﺳ‬1)
(logging.DEBUG) 6) logger.debug ('m1: debug
LoggingDemo: 4) def m1 (self): 5) logger = getCustomLogger
') 17) logger.critical (' m2: .‫اﻟﻤ ﺴﺠﻞ‬getCustomLogger 3) class
('m2 : warn
message') 14) message ') 16)
logger.info logger.error
('m2: (' m2:15)
info message') error message
logger.warn
(logging.WARNING)
message') 13)logger
11) def m2 (self): 12) logger.debug ('m2: debug
= getCustomLogger
logger.error
('m1: info ('m1: error 8)
message') message') 10) logger.critical
logger.warn ('m1 :itical
('m1: warn message') 9)
('m3: error message') ) ('m3:
22) logger.warn 24) logger.critical
warn message')('m3:
23)‫ﺣﺮﺟ ﺔ‬ ‫رﺳﺎﻟ ﺔ‬info
logger.error
('m3: debug message') 21)
= getCustomLogger logger.info ('m3:
(logging.ERROR) 20 )info message')
logger.debug
LoggingDemo
() 30) ('‫)( ﻣﻨﻔﺼﻞ‬
‫ﺳﺠﻞ‬27) ‫ﻣﻠﻒ‬
('‫ﺣﺮﺟ ﺔ‬ ‫ﺳﺎﻟ ﺔ‬
‫ﺘﺨﺪام‬ ‫ﺳ‬‫ﺑﺎر‬
') ‫ﺴﺠﻴﻞ‬
18) def m3 (self):
‫)'ﻋﺮضﺗ‬ ‫ﻃ‬19)
‫ﺒﺎﻋ ﺔ‬ 25)logger
26) l =
m3 () .‫ﺘﺮ‬
‫ﻟ‬28) l.m1 () 29) l.m2

m1.log
‫ﺘﺼﺤﻴﺢ‬
‫رﺳﺎﻟ ﺔ اﻟ‬m1: :‫ﺗﺼﺤﻴﺢ‬
- m1 - ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:26:04
‫رﺳﺎﻟ ﺔ ﻣﻌﻠﻮﻣﺎ ت‬- m1 - INFO: m1: ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:26:04
‫رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ‬m1: :‫ﺗﺤﺬﻳﺮ‬
- m1 - ‫م‬06/19/2018 12:26:04

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

207
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

‫رﺳﺎﻟ ﺔ ﺧﻄﺄ‬m1: :‫ﺧﻄﺄ‬- M1 - ‫م‬2018/06/19 12:26:04


‫رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬m1: :‫ﺣﺮج‬- m1 - ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:26:04

m2.log
‫رﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ‬2: ‫ م‬:‫ﺗﺤﺬﻳﺮ‬
- ‫م‬- ‫م‬2018/06/19 12:26:04
‫رﺳﺎﻟ ﺔ ﺧﻄﺄ‬m2: :‫ﺧﻄﺄ‬- m2 - ‫ﻣ ﺴﺎ ًء‬2018/06/19 12:26:04
‫رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬m2: :‫ﺣﺮج‬- m2 - ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:26:04

m3.log
‫رﺳﺎﻟ ﺔ ﺧﻄﺄ‬m3: :‫ﺧﻄﺄ‬- m3 - ‫ﻣ ﺴﺎ ًء‬06/19/2018 12:26:04
‫رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬3: ‫ م‬:‫ﺣﺮج‬3 - ‫م‬- ‫م‬06/19/2018 12:26:04

:‫ﻣﺰاﻳﺎ اﻟﻤ ﺴﺠﻞ اﻟﻤﺨﺼﺺ‬


.‫ﺘﻄﻠ ﺐ اﻟﻤ ﺴﺠﻞ‬
‫ﺣﻴ ﺚﻳ‬customlogger ‫ﺘﺨﺪام ﻧﻔ ﺲ ﻛﻮد‬
‫ﻳﻤﻜﻨﻨﺎ إﻋﺎدة اﺳ‬1)
‫ﺘﺼﻞﻳﻤﻜﻨﻨﺎ إﻧﺸﺎء ﻣﻠﻒﺳﺠﻞ ﻣﻨﻔﺼﻞ‬
‫ﻟﻜﻞ ﻣ‬2)
.‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟ ﺴﺠﻞ‬
‫ﺘﻮﻳﺎ ت ﻣﺨ‬
‫ﻳﻤﻜﻨﻨﺎﺗﻌﻴﻴﻦ ﻣ ﺴ‬، ‫ﺘﻠﻔﻴﻦ‬
‫ﺒ ﺔ ﻟﻠﻤﻌﺎﻟﺠﻴﻦ اﻟﻤﺨ‬
‫ﺑﺎﻟﻨ ﺴ‬
3)

:‫ﺜﺎل آﺧﺮ ﻟﻠﻤﻌﺎﻟﺞ اﻟﻤﺨﺼﺺ‬


‫ﻣ‬

customlogger.py:

:(‫ﺘﻮى‬
‫)اﻟﻤ ﺴ‬3) def getCustomLogger ‫ﺘﻴﺮاد‬
‫ﻓﺤﺺ اﻻﺳ‬2) ‫ﺘ ﺴﺠﻴﻞ‬
‫ﺘﻴﺮاد اﻟ‬
‫اﺳ‬1)
() [1] [3] 5) 6) logger = logging.getLogger (loggername) 7) logger.setLevel
mode = 'a') 9) fileHandler.setLevel ( ‫ﺘﻮى‬
‫)ﻣ ﺴ‬4) loggername = inspect.stack
(name) s - ‫اﻟﻤﻨ ﺴﻖ‬10) (‫ﺘﻮى‬
‫)اﻟﻤ ﺴ‬8) fileHandler = logging.FileHandler ('test.log'،
= logging.Formatter ('٪ (asctime) s -٪

s: ٪ (message) s '، datefmt ='٪ m /٪ d /٪ Y ٪ I:٪ M:٪ S٪ p ') 11) fileHandler.setFormatter


‫ﻋﻮدة اﻟﻤ ﺴﺠﻞ‬12) logger.addHandler ( fileHandler) 13) (‫)اﻟﻤﻨ ﺴﻖ‬٪ (levelname)

test.py

3) class Test: 4) def logtest (self): 5) ‫ﻣﻦ‬2) ‫ﺘ ﺴﺠﻴﻞ‬


‫ﺘﻴﺮاد اﻟ‬
‫اﺳ‬1)
customlogger import getCustomLogger

= getCustomLogger (logging.DEBUG) ‫اﻟﻤ ﺴﺠﻞ‬

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

208
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com
Machine Translated by Google

‫رﺳﺎﻟ ﺔ‬7) logger.info


logger.error (' ('‫ﺘﺼﺤﻴﺢ‬
(' ('‫ﺳﺎﻟ ﺔﺗﺤﺬﻳﺮ‬ ‫رﺳﺎﻟ ﺔ اﻟ‬6) logger.debug
‫ر‬8) logger.warning ('
(' ('‫اﻟﻤﻌﻠﻮﻣﺎ ت‬
‫ﺒﺎر‬
‫ﺘ‬‫ )"اﺧ‬11) t = ‫) "رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬10) logger.critical ('‫ﺧﻄﺄ‬
() 12) ‫رﺳﺎﻟ ﺔ‬9)()
t.logtest

student.py:

6) logger.info (' ‫ﺘﻴﺮاد‬


‫اﺳ‬Customlogger ‫ﻣﻦ‬2) ‫ﺘ ﺴﺠﻴﻞ‬
‫ﺘﻴﺮاد اﻟ‬
‫اﺳ‬1)
(logging.ERROR) 5) logger.debug ('debug message')
3) def studentfunction (): 4) logger = getCustomLogger
‫)'رﺳﺎﻟ ﺔ‬7 ) logger. warning ('‫رﺳﺎﻟ ﺔ ﻣﻌﻠﻮﻣﺎ ت‬getCustomLogger
('‫رﺳﺎﻟ ﺔ ﺣﺮﺟ ﺔ‬9) logger.critical (' ('‫ )'رﺳﺎﻟ ﺔ ﺧﻄﺄ‬8) logger.error (' ‫ﺗﺤﺬﻳﺮ‬
10) studentfunction ()

(logging.CRITICAL) :‫ﺘﺎﻟ ﻲ‬
‫ﺘ ﺴﺠﻴﻞ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫ﺋ ﻲ ﻣﻦ اﻟ‬
‫ﺘﻮى ﺟﺰ‬
‫ﻳﻤﻜﻨﻨﺎﺗﻌﻄﻴﻞ ﻣ ﺴ‬:‫ﻣﻼﺣﻈ ﺔ‬
logging.disable

202 ، 2 ‫ رﻗﻢ‬، ‫ﺜﺎﻧﻴ ﺔ دورﺟﺎﺳﻮﻓ ﺖ‬‫اﻟ‬

209
- 500038 ، ‫ﺑﺎد‬
‫ ﺣﻴﺪر أ‬، ‫ﺑﻴ ﺖ‬
‫ أﻣﻴﺮ‬، ‫ﺘﺮﻳﻔﺎﻧﺎم‬
‫ ﻫﺪى ﻣﺎﻳ‬، ‫ﺑﻖ‬
‫اﻟﻄﺎ‬
040-64 51 27 86 ، 80 96 96 96 96 ، 92 46 21 21 43 | www.durgasoft.com

You might also like