You are on page 1of 281

‫‪Machine Translated by Google‬‬

‫ﺛﻮن‬‫ﺑﻲ‬
‫ﺜﻔ ﺔ‬
‫ﺣﻠﻘ ﺔ دراﺳﻴ ﺔ ﻣﻜ‬
‫و‬ ‫ﻋﲆ اﻟﻤﺸﺮوع‬
‫ﻳﺪيﻋﲆ‬
‫ﻗﺎﺋﻢ‬
‫اﻷ‬

‫ﺒﺮﻣﺠ ﺔ‬
‫ﻣﻘﺪﻣ ﺔ ﻓ ﻲ اﻟ‬

‫ﺗﻴ ﺲ‬
‫إﻳﺮﻳﻚ ﻣﺎ‬
Machine Translated by Google

‫ﺜﻮن ﻛﺮا ش‬
‫ﺑﺎﻳ‬‫دورة‬
Machine Translated by Google
‫‪Machine Translated by Google‬‬

‫ﺜﻮن‬
‫فﻳ‬
‫ﺜﻔ ﺔ‬
‫ﺣﻠﻘ ﺔ دراﺳﻴ ﺔ ﻣﻜ‬
‫و‬ ‫ﻋﻤﻠ ﻲ‬
‫‪P roject‬‬ ‫ﺐ‪- B‬‬ ‫ﺗﺪرﻳ‬
‫‪ased‬‬
‫ﺒﺮﻣﺠ ﺔ‬
‫ﻣﻘﺪﻣ ﺔ ﻓ ﻲ اﻟ‬

‫ﺗﻴ ﺲ‬
‫ﺑﻮاﺳﻄ ﺔ ارﻳﻚ ﻣﺎ‬

‫ﺳﺎن ﻓﺮاﻧ ﺴﻴ ﺴﻜﻮ‬


‫‪Machine Translated by Google‬‬

‫ﺑﻮاﺳﻄ ﺔ ‪Eric Matthes.‬‬


‫ﺒﻊ واﻟﻨﺸﺮ ‪© 2016‬‬
‫ﺜﻮن ﻛﺮا ش‪ .‬ﺣﻘﻮق اﻟﻄ‬
‫ﺑﺎﻳ‬‫دورة‬

‫ﺘ ﺴﺠﻴﻞ أو ﻋﻦ‬
‫ﺘﺼﻮﻳﺮ أو اﻟ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻟ‬‫ﺘﺮوﻧﻴ ﺔ أو ﻣﻴﻜﺎﻧﻴﻜﻴ ﺔ ‪،‬‬
‫ﺑﺄي وﺳﻴﻠ ﺔ ‪ ،‬إﻟﻜ‬‫ﺑﺄي ﺷﻜﻞ أو‬‫ﺘﺎج أي ﺟﺰء ﻣﻦ ﻫﺬا اﻟﻌﻤﻞ أو ﻧﻘﻠﻪ‬
‫ﻛﻞ اﻟﺤﻘﻮق ﻣﺤﻔﻮﻇ ﺔ‪ .‬ﻻﻳﺠﻮز إﻋﺎدة إﻧ‬
‫ﺒﻖ ﻣﻦ ﻣﺎﻟﻚ ﺣﻘﻮق اﻟﻨﺸﺮ واﻟﻨﺎﺷﺮ‪.‬‬
‫ﺑ ﻲ ﻣﺴ‬
‫ﺘﺎ‬
‫ﺘﺮﺟﺎﻋﻬﺎ ‪ ،‬دون اﻟﺤﺼﻮل ﻋﲆ إذن ﻛ‬
‫ﺘﺨﺰﻳﻦ اﻟﻤﻌﻠﻮﻣﺎ ت أو اﺳ‬
‫ﻃﺮﻳﻖ أي ﻧﻈﺎم ﻟ‬

‫ﺒﺎﻋ ﺔ‬
‫أول ﻃ‬

‫‪19 18 17 16 15‬‬ ‫‪123456789‬‬

‫ردﻣﻚ ‪10: 1-59327-603-6‬‬


‫ردﻣﻚ ‪13: 978-1-59327-603-4‬‬

‫ﺑﻮﻟﻮك‬‫اﻟﻨﺎﺷﺮ‪ :‬وﻟﻴﺎم‬

‫ﺘﺎج‪ :‬راﻳﻠ ﻲ ﻫﻮﻓﻤﺎن‬


‫ﻣﺤﺮر اﻹﻧ‬
‫ﺘﻮﺿﻴﺤ ﻲ ﻟﻠﻐﻼف‪ :‬ﺟﻮ ش إﻟﻴﻨﺠ ﺴﻮن‬
‫اﻟﺮﺳﻢ اﻟ‬
‫ﺘﻮدﻳﻮ ﻫﺎ ت ‪Octopod‬‬
‫ﺘﺼﻤﻴﻢ اﻟﺪاﺧﻠ ﻲ‪ :‬اﺳ‬
‫اﻟ‬
‫ﺑﻮﻟﻮك وﻟﻴﺰﺗﺸﺎدوﻳﻚ وﻟﻴﺰﻟ ﻲ ﺷﻴﻦ‬‫ﺘﻨﻤﻴ ﺔ‪ :‬وﻟﻴﺎم‬
‫ﻣﺤﺮرو اﻟ‬
‫اﻟﻤﺮاﺟﻊ اﻟﻔﻨ ﻲ‪ :‬ﻛﻴﻨﻴ ﺚ ﻟﻮف‬

‫اﻟﻤﺤﺮر‪ :‬آن ﻣﺎري ووﻛﺮ‬


‫اﻟﻤﻠﺤﻦ‪ :‬راﻳﻠ ﻲ ﻫﻮﻓﻤﺎن‬
‫ﺘﺠﺎر ب‪ :‬ﺟﻴﻤ ﺲ ﻓﺮاﻟ ﻲ‬
‫ﻣﺼﺤﺢ اﻟ‬

‫ﺒﺎﺷﺮة‪:‬‬
‫ﺑـ ‪No Starch Press، Inc.‬ﻣ‬‫ﺗﺼﺎل‬
‫ﺑﺎﻟﺠﻤﻠ ﺔ ‪،‬ﻳﺮﺟﻰ اﻻ‬‫ﺒﻴﻌﺎ ت‬
‫ﺘﺮﺟﻤ ﺔ أو اﻟﻤ‬
‫ﺘﻮزﻳﻊ أو اﻟ‬
‫ﻟﻠﺤﺼﻮل ﻋﲆ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل اﻟ‬

‫‪No Starch Press، Inc.‬‬


‫‪245‬ﺷﺎرع ‪8 ،‬ﺳﺎن ﻓﺮاﻧ ﺴﻴ ﺴﻜﻮ ‪ ،‬ﻛﺎﻟﻴﻔﻮرﻧﻴﺎ ‪94103‬‬
‫ﺗﻒ‪ info@nostarch.com :‬؛ ‪415.863.9900‬‬
‫اﻟﻬﺎ‬
‫‪www.nostarch.com‬‬

‫ﺑﻴﺎﻧﺎ ت اﻟﻔﻬﺮﺳ ﺔ ﻓ ﻲ واﻟﻨﺸﺮ‬‫ﺒ ﺔ اﻟﻜﻮﻧﻐﺮس‬


‫ﺘ‬‫ﻣﻜ‬

‫ﺗﻴ ﺲ ‪ ،‬إرﻳﻚ ‪1972- ،‬‬


‫ﻣﺎ‬

‫ﺗﻴ ﺲ‪.‬‬
‫ﺑﻘﻠﻢ إرﻳﻚ ﻣﺎ‬‫ﺒﺮﻣﺠ ﺔ ‪/‬‬
‫ﺜﻮن‪ :‬ﻣﻘﺪﻣ ﺔ ﻋﻤﻠﻴ ﺔ ﻗﺎﺋﻤ ﺔ ﻋﲆ اﻟﻤﺸﺮوع ﻟﻠ‬
‫ﺑﺎﻳ‬‫ﺜﻔ ﺔ ﻓ ﻲ‬
‫دورة ﻣﻜ‬
‫ﺻﻔﺤﺎ تﺳﻢ‬
‫ﻳﺸﻤﻞ اﻟﻔﻬﺮس‪.‬‬

‫ﺛ ﺔ ﻣﺸﺎرﻳﻊ ‪-‬ﻛﻴﻔﻴ ﺔ‬
‫ﺛﻼ‬‫ﺘﻀﻤﻦ‬
‫ﺗ‬‫ﺒﺮﻣﺠ ﺔ اﻟﻌﺎﻣ ﺔ وأﺳﺎﺳﻴﺎ ت ‪Python‬وﺣﻞ اﻟﻤﺸﻜﻼ ت‪ .‬و‬
‫ﺒﺮﻣﺠ ﺔ ﻓ ﻲ ‪Python ،‬ﻣﻊﺗﻤﺎرﻳﻦ‪.‬ﺗﻐﻄ ﻲ ﻣﻔﺎ ﻫﻴﻢ اﻟ‬
‫اﻟﻤﻠﺨﺺ‪" :‬ﻣﻘﺪﻣ ﺔ ﻗﺎﺋﻤ ﺔ ﻋﲆ اﻟﻤﺸﺮوع ﻟﻠ‬
‫ﺒﻴﻖ وﻳ ﺐﺗﻔﺎﻋﻠ ﻲ ‪"-‬ﻳﻮﻓﺮه اﻟﻨﺎﺷﺮ‪.‬‬
‫ﺑﻨﺎءﺗﻄ‬
‫ﺒﻴﺎﻧﻴ ﺔ واﻟﻤﺨﻄﻄﺎ ت ‪ ،‬و‬
‫ﺒﻴﺎﻧﺎ ت ﻟﻌﻤﻞ اﻟﺮﺳﻮم اﻟ‬
‫ﺘﺨﺪامﺗﻘﻨﻴﺎ تﺗﺼﻮر اﻟ‬
‫ﺑ ﺴﻴﻄ ﺔ ‪ ،‬واﺳ‬‫ﺒ ﺔ ﻓﻴﺪﻳﻮ‬
‫إﻧﺸﺎء ﻟﻌ‬

‫ردﻣﻚ ‪978-1-59327-603-4 -‬ردﻣﻚ ‪1-59327-603-6‬‬

‫ﺗﺮ( ‪I.‬اﻟﻌﻨﻮان‪.‬‬
‫ﺒﻴﻮ‬
‫ﺑﺮﻧﺎﻣﺞ اﻟﻜﻤ‬‫‪)1. Python‬ﻟﻐ ﺔ‬
‫‪QA76.73.P98M38 2015‬‬
‫‪005.13'3 -‬دس ‪23‬‬
‫‪2015018135‬‬

‫ﺘﺠﺎ ت واﻟﺸﺮﻛﺎ ت اﻷﺧﺮى اﻟﻤﺬﻛﻮرة‬


‫ﺘﻴﻦ ﻟﺸﺮﻛ ﺔ ‪No Starch Press، Inc.‬وﻗﺪﺗﻜﻮن أﺳﻤﺎء اﻟﻤﻨ‬
‫ﺘﻴﻦ ﻣ ﺴﺠﻠ‬
‫ﺘﻴﻦﺗﺠﺎرﻳ‬
‫ﺗﻌﺪ ‪No Starch Press‬وﺷﻌﺎر ‪No Starch Press‬ﻋﻼﻣ‬
‫ﺑﻄﺮﻳﻘ ﺔﺗﺤﺮﻳﺮﻳ ﺔ وﻟﺼﺎﻟﺢ ﻣﺎﻟﻚ‬‫ﺘﺨﺪم اﻷﺳﻤﺎء ﻓﻘﻂ‬ ‫ﺑﺪﻻ ً ﻣﻦ اﺳ‬
‫ﺘﺨﺪام رﻣﺰ ﻋﻼﻣ ﺔﺗﺠﺎرﻳ ﺔ ﻣﻊ ﻛﻞ ﻇﻬﻮر ﻻﺳﻢ ﻋﻼﻣ ﺔﺗﺠﺎرﻳ ﺔ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧ ﺴ‬ ‫ﻫﻨﺎ ﻋﻼﻣﺎ تﺗﺠﺎرﻳ ﺔ ﻟﻤﺎﻟﻜﻴﻬﺎ اﻟﻤﻌﻨﻴﻴﻦ‪.‬‬
‫ﺘﻌﺪي ﻋﲆ‬
‫ﺘﺠﺎرﻳ ﺔ ‪ ،‬دون ﻧﻴ ﺔ اﻟ‬
‫اﻟﻌﻼﻣ ﺔ اﻟ‬

‫ﻋﻼﻣ ﺔﺗﺠﺎرﻳ ﺔ‪.‬‬

‫ﺘﺤﻤﻞ اﻟﻤﺆﻟﻒ وﻻ ﺷﺮﻛ ﺔ ‪Inc.‬‬


‫ﺘﻴﺎﻃﺎ ت ﻓ ﻲ إﻋﺪاد ﻫﺬا اﻟﻌﻤﻞ ‪ ،‬ﻻﻳ‬
‫ﺗﺨﺎذ ﻛﻞ اﻻﺣ‬
‫ﺘﺎ ب ﻋﲆ أﺳﺎس "ﻛﻤﺎ ﻫ ﻲ" ‪ ،‬دون ﺿﻤﺎن‪ .‬ﻓ ﻲ ﺣﻴﻦﺗﻢ ا‬
‫ﺘﻢﺗﻮزﻳﻊ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻮاردة ﻓ ﻲ ﻫﺬا اﻟﻜ‬
‫ﻳ‬
‫ﺒﺎﺷﺮ ﻋﻦ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻮاردة ﻓﻴﻪ‪.‬‬
‫ﺒﺎﺷﺮ أو ﻏﻴﺮ ﻣ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ُﺰﻋﻢ أﻧﻪ ﻧﺎﺟﻢ‬
‫ﺗﺞ أوﻳ‬
‫ﺑﺄي ﺧ ﺴﺎرة أو ﺿﺮر ﻧﺎ‬‫ﺘﻌﻠﻖ‬
‫‪No Starch Press،‬أي ﻣ ﺴﺆوﻟﻴ ﺔﺗﺠﺎه أي ﺷﺨﺺ أو ﻛﻴﺎن ﻓﻴﻤﺎﻳ‬
‫‪Machine Translated by Google‬‬

‫ﻋﻦ اﻟﻤﺆﻟﻒ‬

‫ﺘﺪرﻳ ﺲ دورةﺗﻤﻬﻴﺪﻳ ﺔ ﻓ ﻲ‬
‫ﺑ‬‫ﺛﺎﻧﻮﻳ ﺔﻳﻌﻴ ﺶ ﻓ ﻲ أﻻﺳﻜﺎ ‪ ،‬ﺣﻴ ﺚﻳﻘﻮم‬‫ﺗﻴ ﺲ ﻫﻮ ﻣﺪرس ﻋﻠﻮم ورﻳﺎﺿﻴﺎ ت ﻓ ﻲ ﻣﺪرﺳ ﺔ‬
‫إرﻳﻚ ﻣﺎ‬
‫ﺘﻲ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺑ ﺔ اﻷدوا ت اﻟ‬
‫ﺘﺎ‬
‫ﺒﺮاﻣﺞ ﻣﻨﺬ أن ﻛﺎن ﻋﻤﺮه ﺧﻤ ﺲﺳﻨﻮا ت‪.‬ﻳﺮﻛﺰ إرﻳﻚ ﺣﺎﻟ ًﻴﺎ ﻋﲆ ﻛ‬
‫ﺘ ﺐ اﻟ‬
‫ﺜﻮن‪ .‬ﻛﺎنﻳﻜ‬
‫ﺑﺎﻳ‬‫ﻟﻐ ﺔ‬
‫ﺘﻊ ﻓ ﻲ أوﻗﺎ ت ﻓﺮاﻏﻪ‬
‫ﺘﻤ‬‫ﺘﻌﻠﻴﻢ‪.‬ﻳ ﺴ‬
‫ﺘﻮﺣ ﺔ اﻟﻤﺼﺪر إﱃ ﻣﺠﺎل اﻟ‬
‫ﺒﺮاﻣﺞ ﻣﻔ‬
‫ﺗﺠﻠ ﺐ ﻓﻮاﺋﺪ اﻟ‬
‫ﺘﻌﻠﻴﻢ و‬
‫ﺗﻌﺎﻟﺞ أوﺟﻪ اﻟﻘﺼﻮر ﻓ ﻲ اﻟ‬
‫ﺗﻪ‪.‬‬
‫ﺒﺎل وﻗﻀﺎء اﻟﻮﻗ ﺖ ﻣﻊ أﺳﺮ‬
‫ﺘ ﺴﻠﻖ اﻟﺠ‬
‫ﺑ‬

‫ﺣﻮل اﻟﻤﺮاﺟﻊ اﻟﻔﻨ ﻲ‬

‫ﺜﻮن ﻟ ﺴﻨﻮا ت ﻋﺪﻳﺪة‪.‬‬


‫ﺑﺎﻳ‬‫ﺑﻠﻐ ﺔ‬‫وﻣﻌﻠﻤﺎ‬
‫ً‬ ‫ﺒﺮﻣﺠًﺎ‬
‫ﻛﺎن ﻛﻴﻨﻴ ﺚ ﻟﻮف ﻣ‬
‫ﺘﻘ ﻼ ً ﻓ ﻲ ‪Python‬و‬
‫ﺘﺮاﻓﻴ ﺔ ‪ ،‬وﻋﻤﻞ ﻣ ﺴ‬
‫ﺒﺎ ت اﺣ‬
‫ﺗﻤﺮا ت ‪ ،‬وأﺟﺮىﺗﺪرﻳ‬
‫ﺳﺎﺗﻌﻠﻴﻤﻴ ﺔ ﻓ ﻲ اﻟﻤﺆ‬
‫ﺛﺎ ت ودرو ً‬
‫ﻟﻘﺪ أﻟﻘﻰ ﻣﺤﺎد‬
‫ﻳﻀﺎ ﻣﻨﺸ ًﺌﺎ ﻣﺸﺎر ًﻛﺎ ﻟﺤﺰﻣ ﺔ ‪django-braces ،‬‬
‫ﺘﺮﻧ ﺖ‪.‬ﻳﻌﺪ ‪Kenneth‬أ ً‬
‫ﺒﺮ اﻹﻧ‬
‫ّر س ﻟﺸﺮﻛ ﺔﺗﻌﻠﻴﻢ ﻋ‬
‫‪Django ،‬و ﻫﻮ اﻵنﻳﺪ‬
‫ﺘﻪ ﻋﲆ ‪Twitter‬ﻋﲆ‬
‫ﺑﻌ‬‫ﺘﺎ‬
‫ﺘ ﻲﺗﻮﻓﺮ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺨﻠﻄﺎ ت اﻟﻤﻔﻴﺪة ﻟﻤﻨﺎﻇﺮ ‪Django‬اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ اﻟﻔﺼﻞ‪.‬ﻳﻤﻜﻨﻚ ﻣ‬
‫واﻟ‬
‫‪kennethlove.‬‬
Machine Translated by Google
‫‪Machine Translated by Google‬‬

‫ﺘ ﻲ ﺣﻮل‬
‫ﺑ ﺔ ﻋﲆ أﺳﺌﻠ‬
‫ﺋﻤﺎ ﻟﻺﺟﺎ‬
‫ﺑ ﻲ ‪ ،‬اﻟﺬي ﻛﺎنﻳﺨﺼﺺ اﻟﻮﻗ ﺖ دا ً‬
‫ﻷ‬
‫ﺘﻪ ﻋﻠ ﻲ‬
‫ﺘﻮ ﻓ ﻲ ﻃﺮح أﺳﺌﻠ‬
‫ﺑﺪأ ﻟﻠ‬‫ﺑﺪ ‪ ،‬اﻟﺬي‬
‫ﺒﺮﻣﺠ ﺔ ‪ ،‬وإﱃ اﻷ‬
‫اﻟ‬
Machine Translated by Google
‫‪Machine Translated by Google‬‬

‫ﺘﻮﻳﺎ ت ﻗﺼﻴﺮة‬
‫ﻣﺤ‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺷﻜﺮ و‬
‫ﺗﻘﺪﻳﺮ‪. .‬‬ ‫ﺑﻊ واﻟﻌﺸﺮون‬
‫‪. .‬اﻟ ﺴﺎ‬

‫ﻣﻘﺪﻣ‪.‬ﺔ ‪. ..‬‬
‫‪. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .‬‬ ‫ﺘﺎﺳﻊ واﻟﻌﺸﺮون‬
‫اﻟ‬

‫‪1‬‬
‫اﻟﺠﺰء اﻷول‪ :‬اﻷﺳﺎﺳﻴﺎ ت‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫اﻟﻌﻤﻞ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..‬‬
‫اﻟﺸﺮوع ‪.‬ﻓ ‪.‬ﻲ ‪. . .‬‬
‫اﻟﻔﺼﻞ‪. . . .1:. .‬‬
‫‪..3‬‬

‫ﺴﻴﻄ‪ .‬ﺔ‪. . . . . . . . ..‬‬


‫ﺒ‪. .‬‬
‫ﺒﻴﺎﻧﺎ ‪ .‬ت‪ .‬اﻟ‪.‬‬
‫وأﻧﻮاع ‪.‬اﻟ ‪. .‬‬
‫ﺘﻐﻴﺮا‪ .‬ت‪. . . .‬‬
‫اﻟﻤ ‪. .‬‬
‫ﺜﺎﻧ ‪.‬ﻲ‪. . :‬‬
‫اﻟﻔﺼﻞ‪ .‬اﻟ‪. .‬‬
‫‪. 19‬‬

‫ﺋﻢ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟﻘﻮا ‪.‬‬
‫ﻳﻢ ‪. . .‬‬
‫ﺗﻘﺪ ‪.‬‬
‫اﻟﻔﺼﻞ‪. .3:. .‬‬
‫‪. 37‬‬

‫اﻟﻔﺼﻞ ‪4:‬اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ ‪53 ............................................‬‬

‫ﺒﻴﺎﻧﺎ‪ . .‬ت‪. . . . . . . . . . . . . . . . . . . . . . . . . . . .. ..‬‬


‫ﻛﺎﻧ ‪.‬ﺖ ‪.‬اﻟ‪. .‬‬
‫إذا ‪. .‬‬
‫ﺲ‪. .:‬‬
‫اﻟﺨﺎﻣ ‪. .‬‬
‫اﻟﻔﺼﻞ ‪. . .‬‬
‫‪. . 75‬‬

‫اﻟﻘﻮاﻣﻴ‪. .‬ﺲ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..‬‬


‫ﺴﺎدس‪. . . .:‬‬
‫اﻟﻔﺼﻞ‪ .‬اﻟ‪. . . .‬‬
‫‪. 95‬‬

‫اﻟﺤﻠﻘﺎ‪. .‬ت‪. . . . . . . . . . . . . . . . .‬‬


‫ﺛﻨﺎء‪. . .‬‬
‫ﺘﺨﺪم ‪.‬وأ‪. .‬‬
‫اﻟﻤ‪.‬ﺴ‪. . .‬‬
‫إدﺧﺎﻻ ‪. .‬ت ‪.‬‬
‫اﻟﻔﺼﻞ ‪. . .7:.‬‬
‫‪. 117‬‬

‫ﺋﻒ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..‬‬
‫وﻇﺎ‪. .‬‬
‫اﻟﻔﺼﻞ ‪. .8:.‬‬
‫‪. 133‬‬

‫اﻟﻔﺼﻮل‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .‬‬
‫اﻟﻔﺼﻞ ‪. . . . .9:.‬‬
‫‪. 161‬‬

‫ﺜﻨﺎءا ‪ .‬ت‪. . . . . . . . . . . . . . . . . . . . . . . ..‬‬


‫ﺘ‪. . .‬‬
‫ﺳ‬‫واﻻ ‪.‬‬
‫اﻟﻤﻠﻔﺎ‪ . .‬ت ‪. .‬‬
‫اﻟﻌﺎﺷﺮ‪. . :‬‬
‫اﻟﻔﺼﻞ ‪. . . .‬‬
‫‪. 189‬‬

‫ﺑﻚ‪. . . . . . . . . . . . . . . . . . . . . ..‬‬
‫اﻟﺨﺎﺻ‪.‬ﺔ‪. .‬‬
‫ﺒﺮﻣﺠﻴ ‪.‬ﺔ ‪. .‬‬
‫ﺘﻌﻠﻴﻤﺎ‪ .‬ت‪. .‬اﻟ ‪. .‬‬
‫ﺒﺎر اﻟ‪. . .‬‬
‫ﺘ‪. .‬‬
‫‪.11:‬اﺧ‬
‫اﻟﻔﺼﻞ ‪.‬‬
‫‪. 215‬‬

‫ﺜﺎﻧ ﻲ‪ :‬اﻟﻤﺸﺎرﻳﻊ‪231 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫اﻟﺠﺰء اﻟ‬

‫ﺒﻲ‬
‫اﻟﻤﺸﺮوع ‪1:‬ﻏﺰو أﺟﻨ‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﻟﻔﺼﻞ ‪12:‬اﻟ ﺴﻔﻴﻨ ﺔ اﻟ‬


‫ﺘ ﻲﺗﻄﻠﻖ اﻟﺮﺻﺎص‪. .‬‬ ‫‪. 235‬‬

‫ﺋﻨﺎ ‪.‬ت‪. . .‬‬


‫ﻓﻀﺎﺋﻴ ﺔ! ‪.‬‬ ‫ﻛﺎ ‪.‬‬
‫‪. .13:‬‬
‫اﻟﻔﺼﻞ ‪. .‬‬
‫‪.. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. ..‬‬ ‫‪. 265‬‬

‫ﺘ ‪.. .‬‬
‫ﺴﺠﻴﻞ‪. .‬‬ ‫‪.14:‬اﻟ‪.‬‬
‫اﻟﻔﺼﻞ ‪. .‬‬
‫‪.. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. ..‬‬ ‫‪. 291‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴﺎﻧﺎ ت‬
‫ﺗﺼﻮر اﻟ‬
‫اﻟﻤﺸﺮوع ‪2:‬‬

‫ﺒﻴﺎﻧﺎ ت ‪321 ...........................................‬‬


‫اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ ﻋﺸﺮ‪:‬ﺗﻮﻟﻴﺪ اﻟ‬

‫ﺒﻴﺎﻧﺎ‪. .‬ت‪. . . . . . . . . . . . . . . . . . . . . . . ..‬‬


‫ﻳﻞ ‪.‬اﻟ‪. .‬‬
‫ﺗﻨﺰ ‪.‬‬
‫ﻋﺸﺮ‪. . :‬‬
‫ﺴﺎدس ‪. . .‬‬
‫اﻟﻔﺼﻞ ‪.‬اﻟ ‪. . . .‬‬
‫‪. 349‬‬

‫ﺒﻴﻘﺎ ‪ .‬ت‪. . . . . . . . . . . . . . . . . . . .. .‬‬


‫ﺘﻄ ‪. .‬‬
‫ﺑﺮﻣﺠ ﺔ‪. .‬اﻟ ‪.‬‬
‫واﺟﻬﺎ ‪ .‬ت‪. . .‬‬
‫اﻟﻌﻤﻞ‪. .‬ﻣﻊ ‪. . .‬‬
‫‪. . 17:‬‬
‫اﻟﻔﺼﻞ ‪. .‬‬
‫‪. 377‬‬

‫ﺒﻴﻘﺎ ت اﻟﻮﻳ ﺐ‬
‫ﺗﻄ‬‫اﻟﻤﺸﺮوع ‪3:‬‬
‫‪. . . . . . . . . . . . . . . . . . . . .Django.‬‬
‫ﻣﻊ ‪. . . . .‬‬
‫ﺒﺪء ‪. .‬‬
‫‪.18:‬اﻟ‪. .‬‬
‫اﻟﻔﺼﻞ ‪. .‬‬
‫‪. 397‬‬

‫ﺘﺨﺪﻣﻴﻦ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟﻤ ‪.‬ﺴ ‪. . . .‬‬
‫ﺑﺎ‪ .‬ت‪. .‬‬
‫ﻋﺸﺮ‪. .:‬ﺣ ‪.‬‬
‫ﺴﺎ‬ ‫ﺳﻊ ‪. .‬‬
‫اﻟﻔﺼﻞ اﻟﺘﺎ‪. .‬‬
‫‪. 427‬‬

‫وﻧﺸﺮه‪. . . . . . . . . . . . . . .. .‬‬
‫ﺒﻴﻖ ‪. . . .‬‬
‫ﺘﻄ ‪. .‬‬
‫ﺗﺼﻤﻴﻢ ‪.‬اﻟ‪. .‬‬
‫‪. . . .20:‬‬
‫اﻟﻔﺼﻞ ‪. .‬‬
‫‪. 455‬‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺧﺎ‬
‫ﺗﻤ ﺔ‪.‬‬ ‫‪. 483‬‬

‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬‫ﺒﻴ‪. .‬ﺖ‬
‫ﺗ‪.‬‬
‫ﺜ‬ ‫اﻟﻤﻠﺤﻖ‪ .‬أ‪.:‬‬
‫‪. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. .. .. ..‬‬ ‫‪. 485‬‬

‫ﻣﺤﺮري ‪.‬‬
‫اﻟﻨﺼﻮص‪. .‬‬ ‫اﻟﻤﻠﺤﻖ‪. .‬ب‪. . . . .:‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491‬‬

‫ج‪. . . . . :‬‬
‫اﻟﺤﺼﻮل ﻋﲆ اﻟﻤ ﺴﺎﻋﺪة‪.‬‬ ‫اﻟﻤﻠﺤﻖ‪. .‬‬
‫‪. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. .. .. ..‬‬ ‫‪. 499‬‬

‫ﺘﺤﻜﻢ ﻓ ﻲ اﻹﺻﺪار‪.‬‬ ‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﻟﻤﻠﺤﻖ د‪ :‬اﺳ‬


‫ﺘﺨﺪام ‪Git‬ﻟﻠ‬ ‫‪. 505‬‬

‫ِس ‪. .‬‬ ‫‪ .‬ﻓ‬


‫ِﻬﺮ‬ ‫‪. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. .. .. ..‬‬ ‫‪. 515‬‬

‫ﺘﻮﻳﺎ ت ﻣﻮﺟﺰة‬
‫‪x‬ﻣﺤ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮﻳﺎ ت ﻓ ﻲ ‪Deta il‬‬


‫اﻟﻤﺤ‬

‫ﺗﻘﺪﻳﺮ‬
‫ﺷﻜﺮ و‬ ‫ﺑﻊ واﻟﻌﺸﺮون‬
‫اﻟ ﺴﺎ‬

‫ﻣﻘﺪﻣ ﺔ‬ ‫ﺘﺎﺳﻊ واﻟﻌﺸﺮون‬


‫اﻟ‬

‫اﻟﻜ ‪.‬‬
‫ﺘﺎ ب؟ ‪.‬‬ ‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxx‬‬
‫ﻟﻤﻦ ‪. .‬ﻫﺬا‪. .‬‬
‫ﺘﻌﻠﻢ؟ ‪.‬‬ ‫ﺘﻮﻗﻊ أنﺗ‬ ‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxx‬ﻣﺎذاﺗ‬
‫ﺜﻮن؟ ‪. . . . . .. .‬‬
‫ﺑﺎﻳ ‪. . .‬‬
‫ﻟﻤﺎذا‪. .‬‬
‫‪.. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. ..‬‬ ‫ﺛﻴﻦ‬
‫ﺜﻼ‬‫اﻟﺤﺎدي واﻟ‬

‫اﻟﺠﺰء اﻷول‪ :‬اﻷﺳﺎﺳﻴﺎ ت‬ ‫‪1‬‬

‫‪1‬‬
‫ﺑﺪء‬
‫ا‬ ‫‪3‬‬
‫ﺑﻚ ‪3 .................................‬‬‫ﺒﺮﻣﺠ ﺔ اﻟﺨﺎﺻ ﺔ‬ ‫ﺑﻴﺌ ﺔ اﻟ‬‫إﻋﺪاد‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.‬‬ ‫ﺜﻮن ‪. . .4.‬‬
‫ﺑﺎﻳ ‪. .‬‬
‫ﺜﻮن‪.2 .‬و‪.‬‬
‫ﺑﺎﻳ ‪.‬‬
‫ﺜﻮن‪. . . . . . . . . . . . . . . . .4 .‬‬
‫ﺑﺎﻳ‪. . .‬‬
‫ﻛﻮد ‪.‬‬
‫ﺘﻄﻔﺎ ‪.‬ت ‪.‬ﻣﻦ‪. . .‬‬
‫ﻣﻘ‪. . .‬‬
‫ﺗﺸﻐﻴﻞ ‪.‬‬
‫‪..‬‬
‫ﺑﺎﻟﻌﺎﻟﻢ! ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 .‬‬
‫ﺒﺎ ‪. . . .‬‬
‫ﻣﺮﺣ ‪.‬‬
‫ﺔ‪. . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻠﻔ‪. .‬‬
‫ﻣﺨ‪.‬‬
‫ﺗﺸﻐﻴﻞ‪. .‬‬
‫أﻧﻈﻤ ﺔ‪. . . .‬‬
‫ﻋﲆ‪. . .‬‬
‫ﺜﻮن ‪.‬‬
‫‪5‬ﻳ‪. .‬‬
‫ﺑﺎ‬
‫ﻟﻴﻨﻜ ‪. .‬ﺲ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .‬‬
‫ﻋﲆ ‪. .‬‬
‫ﺜﻮن ‪. .‬‬
‫ﺑﺎﻳ‪. .‬‬
‫‪5‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . .Windows.‬‬
‫ﻋﲆ‪. . . . . .‬‬
‫‪. OS‬‬
‫‪. . .X .Python‬‬
‫ﻋﲆ‪. . . . .‬‬
‫‪. .Python‬‬
‫‪..8‬‬
‫‪.. .. .. .. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. ..‬‬ ‫‪. 10‬‬
‫وإﺻﻼﺣﻬﺎ‪. . . . . . . . . . . . . . . . . . . .. .‬‬
‫ﺖ‪. . . . .‬‬
‫ﺒﻴ‪. .‬‬
‫ﺜ‬‫ﺘ‪.‬‬
‫ﻣﺸﻜﻼ‪. .‬ت ‪.‬اﻟ‬
‫ﺘﻜﺸﺎف‪. . .‬‬
‫‪.‬‬ ‫‪. 15‬‬
‫اﺳ‬
‫ﻃﺮﻓﻴ‪. .‬ﺔ‪. . . . . . . . . . . . . . . . .‬‬
‫ﻣﺤﻄ ﺔ ‪. .‬‬
‫ﻣﻦ ‪. . .‬‬
‫ﺜﻮن ‪. .‬‬
‫ﺑﺎﻳ ‪. .‬‬
‫ﺑﺮاﻣﺞ‪. .‬‬
‫ﺗﺸﻐﻴﻞ ‪. .‬‬
‫‪. 16‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OS‬‬ ‫‪. . X.‬‬
‫‪Linux‬و‪. . 16. .‬‬
‫‪..‬‬ ‫ﻋﲆ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Windows.‬‬
‫ﻋﲆ ﻧﻈﺎم‪. . . . . . .. 16. .‬‬
‫ﺘﻤﺮﻳﻦ ‪1-1: python.org. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17‬‬
‫اﻟ‬
‫ﺒﻌﻴ ﺔ‪17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪1-2: Hello World‬اﻷﺧﻄﺎء اﻟﻤﻄ‬ ‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪1-3:‬ﻣﻬﺎرا ت ﻻ ﻧﻬﺎﺋﻴ ﺔ‪17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17‬‬
‫ﻣﻠﺨﺺ ‪. . .. .. .‬‬

‫‪2‬‬
‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻐﻴﺮا ت وأﻧﻮاع اﻟ‬
‫اﻟﻤ‬ ‫‪19‬‬
‫‪. . . hello_world.py.‬‬
‫ﺗﺸﻐﻴﻞ‪. . . . . . . . . . . .‬‬
‫ﻋﻨﺪ ‪. . .‬‬
‫ﻳﺤﺪ ث‪. .‬ﺣ ًﻘﺎ‪. . .‬‬
‫‪. 19‬‬
‫ﻣﺎ‬
‫ﺘﻐﻴﺮا ‪.‬ت‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .‬‬ ‫‪. 20‬‬
‫اﻟﻤ‬
‫ﺘﻐﻴﺮا‪. .‬ت‪. . . . . . . . . . . . . . . . . . . . . . ..‬‬ ‫ﺘﺨﺪام‪. .‬اﻟﻤ ‪. .‬‬
‫ﺳ ‪..‬‬ ‫ﺗ‪21‬‬
‫ﺴﻤﻴ ﺔ‪ .‬وا‪. .‬‬
‫ت‪. . .‬‬
‫ﺘﻐﻴﺮا ‪. .‬‬
‫اﻟﻤ ‪. .‬‬
‫ﺘﺨﺪام ‪. .‬‬
‫ﺳ‪. . .‬‬
‫ﻋﻨﺪ ‪.‬ا ‪.‬‬
‫ﺳﻤﺎء ‪. .‬‬
‫ﻷ ‪..‬‬ ‫‪21‬ﺐ ‪. . .‬‬
‫أﺧﻄﺎء ‪.‬ا ‪.‬‬ ‫ﺗﺠﻨ‬
‫ﺑ ﺴﻴﻄ ﺔ‪23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫ﺘﻤﺮﻳﻦ ‪2-1:‬رﺳﺎﻟ ﺔ‬
‫اﻟ‬
‫ﺒ ﺴﻴﻄ ﺔ‪23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪2-2:‬اﻟﺮﺳﺎﺋﻞ اﻟ‬‫اﻟ‬
‫ﺳﻞ ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..‬‬ ‫ﺳﻼ ‪.‬‬
‫‪23‬‬
‫ﺐ‪. . . . . . . . . . ..‬‬
‫ﺳﺎﻟﻴ ‪.‬‬
‫ﻷ‪. . .‬‬‫ﻣﻊ ا‪.‬‬
‫ﺳﻠ‪.‬ﺴﻠ‪ .‬ﺔ‪. .‬‬
‫اﻟﺤﺎﻟ‪.‬ﺔ ﻓ‪. .‬ﻲ ‪.‬‬ ‫‪24‬‬
‫ﺗﻐﻴﻴﺮ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . 25‬‬‫ﺳﻞ‪. . . ..‬‬
‫ﺴﻼ‪. .‬‬‫ﺴﻞ اﻟ‪. .‬‬
‫ﺴﻠ ‪. .‬‬
‫دﻣﺞ أوﺗ ‪. .‬‬
‫ﺳ‪.‬‬
‫ﺘﺨﺪام ﻋﻼﻣﺎ ت اﻟﺠﺪوﻟ ﺔ أو اﻷﺳﻄﺮ اﻟﺠﺪﻳﺪة‪26 . . .‬‬‫ﺑﺎ ‪.‬‬
‫ﺳﻞ‪.‬‬
‫ﺴﻼ‪. .‬‬ ‫إﱃ اﻟ‪. .‬‬‫ﺑﻴﻀﺎء ‪. .‬‬
‫ﺴﺎﻓ ﺔ‪. . . .‬‬
‫إﺿﺎﻓ ﺔ ﻣ ‪. .‬‬
‫ﺒﻴﻀﺎء‪. . . . . . . . . . . . . . . . . . . . . . . . . .26. .. . ..‬‬
‫ﺴﺎﻓﺎ ‪ .‬ت ‪.‬اﻟ‪. . .‬‬
‫ﺗﺠﺮﻳﺪ اﻟﻤ‪. . .‬‬
‫ﺳﻞ‪. . . . . . . . . . . . . 28. .. . ..‬‬
‫ﺴﻼ ‪. .‬‬
‫ﺑﺎﻟ ‪. .‬‬
‫اﻟﻨﺤﻮﻳ ‪.‬ﺔ ‪.‬‬
‫ﻷﺧﻄﺎء‪. . .‬‬
‫ﺗﺠﻨ ﺐ ا ‪. . .‬‬
‫ﺜﻮن ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.. .29.‬‬ ‫ﻳ‪. .‬‬‫ﺑﺎ‪.‬‬‫ﺒﺎﻋ ﺔ ﻓ‪. .‬ﻲ‬
‫اﻟﻄ‬
‫ﺘﻤﺮﻳﻦ ‪2-3:‬رﺳﺎﻟ ﺔ ﺷﺨﺼﻴ ﺔ‪29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪2-4:‬ﺣﺎﻻ ت اﻷﺳﻤﺎء‪29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺒﺎس ﻣﺸﻬﻮر‪29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘ‬‫ﺘﻤﺮﻳﻦ ‪2-5:‬اﻗ‬
‫اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎس ﻣﺸﻬﻮر ‪2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29‬‬


‫ﺘ‬‫ﺘﻤﺮﻳﻦ ‪2-6:‬اﻗ‬
‫اﻟ‬

‫ﺗﺠﺮﻳﺪ اﻷﺳﻤﺎء‪29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫ﺗﻤﺮﻳﻦ ‪2-7:‬‬
‫أﻋﺪاد ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30. .. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30‬‬
‫ﺻﺤﻴﺢ‪. . . .‬‬
‫‪..‬‬ ‫ﻋﺪد‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30‬‬ ‫ﻳﻄﻔﻮ‪. . . . .‬‬
‫‪. . . str‬‬
‫‪. .(). .. .. 31‬‬
‫وﻇﻴﻔ ﺔ ‪. .‬‬
‫ﺘﺨﺪام ‪. . .‬‬
‫ﺳ‪. ..‬‬ ‫ﺑﺎ ‪.‬‬‫ﺑ‪ .‬ﺔ‪.‬‬
‫ﺘﺎ‬ ‫أﺧﻄﺎء ‪. .‬‬
‫اﻟﻜ‬ ‫ﺗﺠﻨ ﺐ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.‬‬ ‫‪. 32‬‬
‫ﺜﻮن ‪. .‬‬
‫ﻳ ‪..‬‬
‫ﺑﺎ‪.‬‬‫اﻟﺼﺤﻴﺤ‪ .‬ﺔ ‪.‬ﻓ ‪.‬ﻲ‬
‫اﻷﻋﺪاد ‪. . .‬‬

‫ﺛﻤﺎﻧﻴ ﺔ‪33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫ﺗﻤﺮﻳﻦ ‪2-8:‬رﻗﻢ‬


‫ﺘﻤﺮﻳﻦ ‪2-9:‬اﻟﺮﻗﻢ اﻟﻤﻔﻀﻞ‪33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺗﻌﻠﻴﻘﺎ ت ‪.‬‬ ‫‪. 33‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . 33‬‬
‫ت؟ ‪. .. ..‬‬
‫ﺘﻌﻠﻴﻘﺎ‪. .‬‬
‫ﺐ اﻟ‪. . .‬‬
‫ﺘ‪. .‬‬
‫ﻛﻴﻒﺗﻜ‬
‫‪. . . . . . . 33‬‬
‫ﺒﻬﺎ؟‪. . . . .‬‬
‫ﺘ ‪.‬‬
‫ﺗﻜ‪.‬‬
‫ﺘ ‪ .‬ﻲ‪.‬ﻳﺠ‪.‬ﺐ‪. .‬أن ‪.‬‬
‫ﺘﻌﻠﻴﻘﺎ ‪ .‬ت‪ .‬اﻟ‬
‫ﻣﺎ ﻧﻮع اﻟ ‪. .‬‬

‫ﺘﻌﻠﻴﻘﺎ ت‪34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫ﺘﻤﺮﻳﻦ ‪2-10:‬إﺿﺎﻓ ﺔ اﻟ‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34‬‬ ‫ﺜﻮن‪. . . .. .‬‬
‫ﺑﺎﻳ ‪.‬‬‫زن‬
‫ﺘﻤﺮﻳﻦ ‪2-11: Zen of Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36‬‬‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. 36‬‬

‫‪3‬‬
‫ﺗﻘﺪﻳﻢ اﻟﻘﻮاﺋﻢ‬ ‫‪37‬‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﺎ ﻫ ﻲ اﻟﻘﺎﺋﻤ ﺔ؟ ‪.‬‬ ‫‪. 37‬‬
‫ﺋﻤ ‪.‬ﺔ‪. . . . . . . . . . . . . . . . . . . . 38. .. . ..‬‬
‫اﻟﻌﻨﺎﺻﺮ ﻓ ‪.‬ﻲ ‪.‬ﻗﺎ‪.‬‬
‫إﱃ ‪. . . .‬‬
‫اﻟﻮﺻﻮل ‪. .‬‬
‫ﺒﺪأ ﻣﺮاﻛﺰ اﻟﻤﺆﺷﺮ ﻣﻦ ‪0 ،‬وﻟﻴ ﺲ ‪1 ................................. 39‬‬
‫ﺗ‬
‫‪. . . . . . . . . . . . . 39‬‬ ‫ﺋﻤ ﺔ‪. . . .. ..‬‬
‫اﻟﻘﺎ ‪.‬‬
‫ﻣﻦ ‪. .‬‬
‫ﻳﺔ ‪. .‬‬ ‫اﻟﻔﺮد‪.‬‬
‫اﻟﻘﻴﻢ‪. . .‬‬
‫ﺘﺨﺪام ‪. .‬‬
‫اﺳ‬
‫ﺘﻤﺮﻳﻦ ‪3-1:‬اﻷﺳﻤﺎء‪40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬

‫ﺗ ﻲ‪40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺗﺤﻴﺎ‬
‫ﺘﻤﺮﻳﻦ ‪3-2:‬‬
‫اﻟ‬
‫ﺑﻚ‪40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪3-3:‬اﻟﻘﺎﺋﻤ ﺔ اﻟﺨﺎﺻ ﺔ‬‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . 40‬‬
‫اﻟﻌﻨﺎﺻﺮ‪. .. .. .‬‬
‫وإزاﻟ ‪.‬ﺔ ‪. . . .‬‬‫وإﺿﺎﻓ ﺔ ‪. .‬‬
‫‪..‬‬ ‫ﺗﻐﻴﻴﺮ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 40‬‬
‫ﺋﻤ ﺔ‪. . . .. ..‬‬
‫اﻟﻌﻨﺎﺻﺮ ‪.‬ﻓ ﻲ‪. .‬ﻗﺎ ‪.‬‬
‫ﺗﻌﺪﻳﻞ ‪. . .‬‬
‫ﺋﻤ ‪.‬ﺔ‪. . . . . . . . . . . . . . . . . . . . . . . . . . 41. .. .‬‬
‫إﱃ ‪.‬ﻗﺎ‪.‬‬
‫ﻋﻨﺎﺻﺮ ‪. .‬‬
‫إﺿﺎﻓ ﺔ ‪. . .‬‬
‫اﻟﻘﺎﺋﻤ‪.‬ﺔ‪. . . . . . . . . . . . . . . . . . . . . .42....‬‬
‫ﻣﻦ ‪. .‬‬‫اﻟﻌﻨﺎﺻﺮ ‪. .‬‬
‫إزاﻟ ﺔ ‪. . .‬‬
‫ﺘﻤﺮﻳﻦ ‪3-4:‬ﻗﺎﺋﻤ ﺔ اﻟﻀﻴﻮف‪46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫ﺗﻐﻴﻴﺮ ﻗﺎﺋﻤ ﺔ اﻟﻀﻴﻮف‪46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪3-5:‬‬


‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪3-6:‬اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻀﻴﻮف‪46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫ﺗﻘﻠﻴﺺ ﻗﺎﺋﻤ ﺔ اﻟﻀﻴﻮف‪47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫ﺘﻤﺮﻳﻦ ‪3-7:‬‬ ‫اﻟ‬
‫ﺋﻤ‪.‬ﺔ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺗﻨﻈﻴﻢ ﻗﺎ ‪.‬‬
‫‪. 47‬‬
‫اﻟﻔﺮز ‪.(). .. .47.‬‬
‫ﻳﻘ ﺔ‪. . .‬‬ ‫ﻃﺮ ‪.‬‬
‫ﺘﺨﺪام‪. .‬‬
‫ﺑﺎ‪.‬ﺳ‪. . .‬‬‫ﺑﺸﻜﻞ دا‪. .‬‬
‫ﺋﻢ‬ ‫ﻓﺮز ﻗﺎﺋﻤ ﺔ ‪. . . .‬‬
‫‪. ().‬‬
‫اﻟﻮﻇﻴﻔ ﺔ‪. .. .. 48. .‬‬
‫ﺘﺨﺪام ‪. . .‬‬
‫ﺳ‪. . .‬‬ ‫ﺑﺎ ‪.‬‬‫ﺘًﺎ‪.‬‬
‫ﻣﺆﻗ‪.‬‬
‫ﻓﺮز ﻗﺎﺋﻤ ﺔ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . 49‬‬
‫ﺴ ‪.‬ﻲ‪. .. .. .‬‬
‫ﻋﻜ ‪.‬‬
‫ﺐ‪. .‬‬ ‫ﺗﻴ ‪.‬‬ ‫ﺘﺮ‪.‬‬
‫ﺑ‪.‬‬ ‫ﺋﻤ‪.‬ﺔ‬
‫ﺒﺎﻋ ﺔ ﻗﺎ ‪.‬‬
‫ﻃ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . 49‬‬ ‫ﺋﻤ ﺔ‪. .. ..‬‬
‫اﻟﻘﺎ ‪.‬‬
‫ﻃﻮل ‪. .‬‬
‫‪.‬‬ ‫إﻳﺠﺎد‬
‫ﺘﻤﺮﻳﻦ ‪3-8:‬رؤﻳ ﺔ اﻟﻌﺎﻟﻢ‪50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪3-9:‬ﻋﺸﺎء اﻟﻀﻴﻮف‪50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬

‫ﺘﻤﺮﻳﻦ ‪3-10:‬ﻛﻞ وﻇﻴﻔ ﺔ‪50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫اﻟ‬


‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺗﺠﻨ ﺐ أﺧﻄﺎء اﻟﻔﻬﺮس ﻋﻨﺪ اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ‪. .‬‬ ‫‪. 50‬‬
‫ﺘﻌﻤﺪ‪52 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪3-11:‬ﺧﻄﺄ ﻣ‬‫اﻟ‬
‫ﻣﻠﺨﺺ ‪. . . . . . . . . . . . . . . . . . . . . . ..‬‬
‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. .. ..‬‬ ‫‪. 52‬‬

‫‪4‬‬
‫اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ‬ ‫‪53‬‬

‫ﺋﻤ ‪.‬ﺔ ﻛﺎﻣﻠ ﺔ‪.‬‬


‫ﺧﻼل‪. .‬ﻗﺎ ‪.‬‬
‫ﻣﻦ ‪. .‬‬
‫ﺘﻜﺮار ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﻟ ‪. .‬‬ ‫‪. 53‬‬

‫ﻓﺎﺣﺼ‪.‬ﺔ‪ .‬ﻋﲆ اﻟﺤﻠﻘﺎ ت‪. .‬‬ ‫ﻧﻈﺮة‪. . .‬‬


‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. .. ..‬‬ ‫‪. 54‬‬

‫ﺑﺎﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻌﻤﻞ ﺿﻤﻦ ﺣﻠﻘ ﺔ ‪for.‬‬ ‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﻟﻘﻴﺎم‬ ‫‪. 55‬‬

‫ﺑﻌﺪ ﺣﻠﻘ ﺔ‪.‬‬‫ﺑﺸ ﻲء ﻣﺎ‬ ‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. .. ..‬‬


‫اﻟﻘﻴﺎم‬ ‫‪. 56‬‬

‫ﺜﺎﻧ ﻲ ﻋﺸﺮ‬
‫اﻟ‬
‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬‫ﺘﻮﻳﺎ ت‬
‫اﻟﻤﺤ‬
‫‪Machine Translated by Google‬‬

‫ﺔ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺒﺎدﺋ ‪.‬‬
‫ﺴﺎﻓ ﺔ ‪.‬اﻟ ‪. .‬‬
‫اﻟﻤ ‪. .‬‬ ‫أﺧﻄﺎء ‪. .‬‬
‫ﺗﺠﻨ ‪.‬ﺐ ‪. .‬‬
‫‪57‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57‬‬
‫ﺒﺎدﺋ ‪.‬ﺔ‪. .. .. .‬‬
‫ﺴﺎﻓ ‪.‬ﺔ اﻟ ‪. .‬‬
‫اﻟﻤ ‪. .‬‬
‫ﻧ ﺴﻴﺎن ‪.‬‬
‫‪. . . . . . . . . . . . . 58‬‬
‫ﺔ‪. . . .‬‬
‫إﺿﺎﻓﻴ‪. .‬‬
‫ﺳﻄﻮر ‪. .‬‬
‫ﺑﺎدﺋ‪ .‬ﺔ‪. . . .‬‬
‫ﺴﺎﻓ ‪.‬ﺔ ‪.‬‬
‫ﻧ ﺴﻴﺎن ﻣ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . .59‬‬ ‫داع‪. .. .‬‬
‫دون ‪. .‬‬
‫ﺒﺎدﺋ‪ .‬ﺔ‪. . .‬‬ ‫اﻟﻤ ﺴﺎﻓ ﺔ ‪.‬اﻟ ‪.‬‬
‫‪. . . . . . . . . .59‬‬
‫اﻟﺤﻠﻘ‪ .‬ﺔ‪. .. .. .‬‬
‫ﺑﻌﺪ‪. . .‬‬
‫ﺿﺮور‪.‬ﻳ ﺔ‪. .‬‬
‫ﻏﻴﺮ ‪. .‬‬
‫ﺑﺎدﺋ‪ .‬ﺔ ‪. .‬‬
‫ﻣ ﺴﺎﻓ ﺔ ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60‬‬ ‫اﻟﻘﻮﻟﻮن‪. . . .‬‬
‫ﻧ ﺴﻴﺎن ‪. . . .‬‬
‫ﺘﺰا‪60 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺑﻴ‬‫ﺘﻤﺮﻳﻦ ‪4-1:‬‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪4-2:‬اﻟﺤﻴﻮاﻧﺎ ت‪60 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61‬‬ ‫ﻋﺪد‪.‬ﻳ ﺔ‪. .. ..‬‬
‫ﺋﻢ‪. .‬‬
‫ﻋﻤﻞ ﻗﻮا ‪.‬‬
‫اﻟﻨﻄﺎق‪. . . . . . . . . . . . . . . . . . . . . . . . ().. .. 61. .‬‬
‫وﻇﻴﻔ ﺔ ‪. . .‬‬
‫ﺘﺨﺪام‪. . . .‬‬ ‫ﺑﺎﺳ‬
‫ﻷرﻗﺎم‪. . . . . . .62. .. . .‬‬
‫ﺑﺎ‪. . . .‬‬‫ﺋﻤ ‪.‬ﺔ‬
‫ﻟﻌﻤﻞ‪. .‬ﻗﺎ ‪.‬‬
‫اﻟﻨﻄﺎق ‪. .().‬‬
‫ﺘﺨﺪام ‪. . . .‬‬‫اﺳ‬
‫ﻷرﻗﺎم‪. . . . . . . . . . .63. .. .‬‬
‫ﺑﺎ‪. . .‬‬‫ﺋﻤ ﺔ ‪.‬‬
‫ﺴﻴﻄ ‪.‬ﺔ ‪.‬ﻣﻊ ‪.‬ﻗﺎ‪. .‬‬
‫ﺑ ‪..‬‬‫إﺣﺼﺎﺋﻴﺎ ‪.‬ت‪.‬‬
‫اﻟﻔﻬﻢ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63. .. .‬‬
‫ﻗﺎﺋﻤ ﺔ ‪. .‬‬

‫ﺗﻤﺮﻳﻦ ‪4-3:‬اﻟﻌﺪ إﱃ ﻋﺸﺮﻳﻦ‪64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫ﺗﻤﺮﻳﻦ ‪4-4:‬ﻣﻠﻴﻮن‪64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫ﺗﻤﺮﻳﻦ ‪4-5:‬ﺟﻤﻊ اﻟﻤﻠﻴﻮن‪64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫ﺗﻤﺮﻳﻦ ‪4-6:‬اﻷﻋﺪاد اﻟﻔﺮدﻳ ﺔ‪64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺛﻴﺎ ت‪64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺜﻼ‬‫ﺘﻤﺮﻳﻦ ‪4-7:‬اﻟ‬
‫اﻟ‬
‫ﺒﺎ ت‪64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪4-8:‬اﻟﻤﻜﻌ‬
‫اﻟ‬

‫ﺒﺎ ت‪64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪4-9:‬ﻓﻬﻢ اﻟﻤﻜﻌ‬ ‫اﻟ‬


‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65‬‬ ‫ﺔ‪. .. .‬‬
‫ﺋﻤ ‪.‬‬
‫اﻟﻌﻤﻞ ﻣﻊ‪. .‬ﺟﺰء‪. .‬ﻣﻦ‪. .‬ﻗﺎ ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65‬‬ ‫ﺋﻤ ﺔ‪. . . .. ..‬‬
‫ﺗﺸﺮﻳﺢ ﻗﺎ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . 66‬‬
‫ﺔ‪. . .. . .‬‬
‫ﺷﺮﻳﺤ‪. .‬‬
‫ﺧﻼل ‪. .‬‬‫ﺘﻜﺮار ‪. .‬‬ ‫اﻟ‬
‫ﺔ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67. .. . .‬‬ ‫ﻧ ﺴﺦ ﻗﺎﺋﻤ‪. .‬‬
‫ﺘﻤﺮﻳﻦ ‪4-10:‬اﻟﺸﺮاﺋﺢ‪69 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬

‫ﺑﻚ‪69 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬


‫ﺒﻴ‬‫ﺑﻚ ‪ ،‬اﻟ‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻤﺮﻳﻦ ‪4-11:‬اﻟ‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪4-12:‬اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺤﻠﻘﺎ ت‪69 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬
‫ت‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69. .. . .‬‬ ‫ﻣﺠﻤﻮﻋﺎ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Tuple.‬‬ ‫‪. . . .. 69‬‬
‫ﺗﺤﺪﻳﺪ ‪.‬‬
‫‪. . . . . . . . . . . Tuple.‬‬
‫‪. . . . . .. 70‬‬
‫اﻟﻘﻴﻢ‪ .‬ﻓ ‪ .‬ﻲ‪. .‬‬
‫ﺟﻤﻴﻊ ‪. .‬‬
‫ﺒﺮ ‪. . .‬‬
‫ﺘﻜﺮار ﻋ ‪.‬‬‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tuple.‬‬
‫‪. . . . . .71‬‬ ‫ﻓﻮق ‪.‬‬
‫ﺑﺔ ‪. .‬‬ ‫ﺘﺎ‬‫اﻟﻜ‬
‫ﺑﻮﻓﻴﻪ‪71 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪4-13:‬‬
‫اﻟ‬

‫ﺑﻚ‪. .‬‬‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺗﺼﻤﻴﻢ اﻟﻜﻮد اﻟﺨﺎص‬ ‫‪. 72‬‬


‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72‬‬‫ﺳﻠﻮ ‪.‬ب‪. . . ..‬‬
‫دﻟﻴﻞ اﻷ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72‬‬
‫اﻟﻔﺎرﻏ ‪.‬ﺔ ‪. . .. ..‬‬
‫اﻟﻤ ﺴﺎﻓ ‪.‬ﺔ ‪. . .‬‬
‫اﻟﺨﻂ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73. .. . .‬‬
‫‪.‬‬ ‫ﻃﻮل‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73‬‬
‫ﻓﺎرﻏ ﺔ ‪. .. ..‬‬
‫ﺧﻄﻮط ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . 73‬‬ ‫أﺧﺮى‪. . . .. .‬‬
‫ﻧﻤﻂ ‪. . .‬‬
‫إرﺷﺎدا ت ‪. . .‬‬
‫ﺘﻤﺮﻳﻦ ‪4-14: PEP 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74‬‬‫اﻟ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪74 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪4-15:‬ﻣﺮاﺟﻌ ﺔ اﻟ‬
‫اﻟ‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. 74‬‬

‫‪5‬‬
‫ﺒﻴﺎﻧﺎ ت‬
‫إذا اﻟ‬ ‫‪75‬‬
‫ﺴﻴﻂ‪. . . . . . . . . . . . . . . . . .. .‬‬
‫ﺑ‪. . .‬‬ ‫ﺜﺎل‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . .‬ﻣ‪.‬‬ ‫‪. 76‬‬
‫ﺔ‪. . . . . . . . . . . . . . . . .‬‬
‫اﻟﺸﺮﻃﻴ ‪.‬‬
‫ﺒﺎرا ‪ .‬ت‪. . . .‬‬
‫ﺘ‪. .‬‬‫اﻻﺧ‬
‫‪.. .. . .. .. .. .. .. .. . .. .. ..‬‬ ‫‪. 76‬‬
‫ﺴﺎواة‪. . . . . .‬‬
‫اﻟﻤ‪. . . .‬‬
‫ﻣﻦ ‪.‬‬ ‫ﺘﺤﻘﻖ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . .‬اﻟ ‪. . .‬‬ ‫‪. 76‬‬

‫ﺘﺤﻘﻖ ﻣﻦ اﻟﻤ ﺴﺎواة‪. .‬‬ ‫‪ . . . . . . . . . . . . . . . . . . . . . .‬ﺗﺠﺎ ﻫﻞ اﻟﺤﺎﻟ ﺔ ﻋﻨﺪ اﻟ‬ ‫‪. 77‬‬
‫ﺴﺎواة‪. . .‬‬
‫ﻋﺪم ‪.‬اﻟﻤ‪. . . .‬‬
‫ﻣﻦ ‪. .‬‬
‫ﺘﺤﻘﻖ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . .‬اﻟ ‪. . .‬‬ ‫‪. 78‬‬
‫ﻳ ‪.‬ﺔ‪. . . . .. .‬‬
‫ﻋﺪد‪.‬‬
‫ﻣﻘﺎرﻧﺎ‪ .‬ت ‪. .‬‬
‫‪. .. .. . .. .. .. .. .. .. . .. .. ..‬‬ ‫‪. 78‬‬

‫ﺘﻌﺪدة‪.‬‬ ‫اﻟﺸﺮوط‪. .‬اﻟﻤ‬


‫ﻣﻦ ‪. . .‬‬
‫ﺘﺤﻘﻖ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . .‬اﻟ ‪. . .‬‬ ‫‪. 79‬‬
‫‪.‬‬ ‫‪. . . . . . . . . . . . . . . . . . . . . . .‬اﻟ ‪. .‬‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻤ ﺔ ﻣﻮﺟﻮدة ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‪. .‬‬ ‫‪. 80‬‬

‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬‫ﺘﻮﻳﺎ ت‬
‫اﻟﻤﺤ‬ ‫ﺜﺎﻟ ﺚ ﻋﺸﺮ‬
‫اﻟ‬
‫‪Machine Translated by Google‬‬

‫‪..‬‬ ‫‪. . . 81‬‬


‫ﻗﺎﺋﻤ ‪.‬ﺔ‪. . . ..‬‬
‫ﺴ ﺖ‪. .‬ﻓ ﻲ ‪. .‬‬
‫اﻟﻘﻴﻤ ‪.‬ﺔ ﻟﻴ‪. .‬‬
‫ﺖ ‪. .‬‬ ‫ﻣﻤﺎ‪ .‬إذا‪. .‬ﻛﺎﻧ ‪. .‬‬
‫ﺘﺤﻘﻖ ‪.‬‬
‫اﻟ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪. . . . . . . . . . . . 81‬‬ ‫اﻟﻤﻨﻄﻘﻴ ‪.‬ﺔ‪. ...‬‬
‫ﺒﻴﺮا ت‪. . . .‬‬‫ﺘﻌ‬
‫اﻟ‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ‪82 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘ‬‫ﺘﻤﺮﻳﻦ ‪5-1:‬اﻻﺧ‬
‫اﻟ‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ‪82 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘ‬‫ﺘﻤﺮﻳﻦ ‪5-2:‬اﻟﻤﺰﻳﺪ ﻣﻦ اﻻﺧ‬
‫اﻟ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫ت‪. . 82. .. . .‬‬
‫ﺒﻴﺎﻧﺎ ‪. .‬‬
‫إذا اﻟ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫ﺴﻴﻄ ﺔ‪. .‬إذا‪. . .82. .. .‬‬
‫ﺑ ‪..‬‬‫ﺒﺎرا ت‬
‫ﻋ‬
‫‪.‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . . .if-‬‬‫‪. else.‬‬
‫ﺑﻴﺎﻧﺎ ت ‪. . . .83‬‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . if-. elif-‬‬
‫‪. . else.‬‬
‫‪. . .. 84‬‬
‫ﺳﻠ ﺴﻠ ﺔ ‪.‬‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫ﺘﻌﺪدة‪. . 86. .. . .‬‬
‫اﻟﻤ ‪. . .‬‬
‫‪. . elif‬‬
‫ﺘﻞ ‪. .‬‬
‫ﺘﺨﺪام ‪.‬ﻛ ‪.‬‬
‫اﺳ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . . . . . . .86‬‬ ‫ﺑﻠﻮك‪. . ..‬‬
‫ﺣﺬف آﺧﺮ ‪. . .‬‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬
‫ﺘﻌﺪدة‪. . . . . . 87. .. .‬‬‫اﻟﻤ ‪. . .‬‬ ‫اﻟﺸﺮوط‪. .‬‬
‫‪..‬‬ ‫ﺒﺎر‬
‫ﺘ‬‫اﺧ‬
‫ﺘﻤﺮﻳﻦ ‪5-3: Alien Colors # 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88‬‬‫اﻟ‬
‫ﺒ ﺔ ‪# 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88‬‬
‫ﺘﻤﺮﻳﻦ ‪5-4:‬اﻷﻟﻮان اﻟﻐﺮﻳ‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪5-5: Alien Colors # 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89‬‬
‫اﻟ‬

‫ﺘﻤﺮﻳﻦ ‪5-6:‬ﻣﺮاﺣﻞ اﻟﺤﻴﺎة‪89 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬


‫ﺘﻤﺮﻳﻦ ‪5-7:‬اﻟﻔﺎﻛﻬ ﺔ اﻟﻤﻔﻀﻠ ﺔ‪89 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.89‬‬
‫ﺋﻢ‪. .. .. .‬‬
‫اﻟﻘﻮا‪.‬‬
‫ﻣﻊ ‪. .‬‬
‫ﺒﺎرا ‪. .‬ت ‪. .if‬‬
‫ﺘﺨﺪام ‪.‬ﻋ ‪.‬‬
‫اﺳ‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . 90‬‬
‫اﻟﺨﺎﺻ ‪.‬ﺔ‪. . . .‬‬
‫اﻟﻌﻨﺎﺻﺮ ‪. . .‬‬
‫ﻣﻦ‪. . . .‬‬ ‫ﺘﺤﻘﻖ ‪.‬‬ ‫اﻟ‬
‫ﺘﺤﻘﻖ ﻣﻦ أن اﻟﻘﺎﺋﻤ ﺔ ﻟﻴ ﺴ ﺖ ﻓﺎرﻏ ﺔ ‪91 ................................‬‬‫اﻟ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . . . . . . . . . . 92‬‬ ‫ﺘﻌﺪدة‪. . .. .. .‬‬
‫ﺋﻢ ‪.‬ﻣ‪. . . .‬‬
‫ﻗﻮا ‪.‬‬
‫ﺘﺨﺪام ‪. .‬‬
‫‪.‬‬ ‫اﺳ‬
‫ﺒﺎ أﻳﻬﺎ اﻟﻤﺸﺮف‪93 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪5-8:‬ﻣﺮﺣ ً‬
‫اﻟ‬
‫ﺘﺨﺪﻣﻮن‪93 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪5-9:‬ﻻﻳﻮﺟﺪ ﻣ ﺴ‬
‫اﻟ‬

‫ﺘﺨﺪﻣﻴﻦ‪93 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﺤﻘﻖ ﻣﻦ أﺳﻤﺎء اﻟﻤ ﺴ‬ ‫ﺘﻤﺮﻳﻦ ‪5-10:‬اﻟ‬


‫اﻟ‬
‫ﺒﻴ ﺔ‪93 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺗﻴ‬‫ﺘﺮ‬
‫ﺘﻤﺮﻳﻦ ‪5-11:‬اﻷﻋﺪاد اﻟ‬‫اﻟ‬

‫ﺑﻚ‪.‬‬ ‫‪.‬ﺗﺼﻤﻴﻢ اﻟﻌ‬


‫ﺒﺎرا ت اﻟﺨﺎﺻ ﺔ‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. 94‬‬

‫ﺒﺎرا ت ‪if. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94‬‬ ‫ﺗﺼﻤﻴﻢ ﻋ‬ ‫ﺘﻤﺮﻳﻦ ‪5-12:‬‬


‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪5-13:‬أﻓﻜﺎرك‪94 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫‪ .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. 94‬‬

‫‪6‬‬
‫ﻗﻮاﻣﻴ ﺲ‬ ‫‪95‬‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪.96‬‬
‫ﺴﻴﻂ‪. .. .‬‬
‫ﺑ‪. . .‬‬‫ﻗﺎﻣﻮس‬
‫‪.‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫ﺲ‪. .96. . .‬‬
‫اﻟﻘﻮاﻣﻴ ‪. .‬‬
‫اﻟﻌﻤﻞ ﻣﻊ‪. . . .‬‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫اﻟﻘﺎﻣﻮس‪. . . ..‬‬
‫‪97‬‬ ‫اﻟﻘﻴﻢ ‪.‬ﻓ ‪.‬ﻲ ‪. . . .‬‬
‫إﱃ ‪. .‬‬
‫اﻟﻮﺻﻮل ‪. .‬‬
‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.97‬‬
‫ﻳﺪة‪. . ..‬‬
‫ﺟﺪ ‪.‬‬
‫ﺘﺎح ‪. .‬‬
‫ﻣﻔ ‪.‬‬
‫ﻗﻴﻤ ﺔ ‪. .‬‬
‫أزواج ‪. .‬‬
‫إﺿﺎﻓ ﺔ ‪. .‬‬

‫ﺑﻘﺎﻣﻮس ﻓﺎرغ ‪98 ................................‬‬‫ﺒﺪء‬‫اﻟ‬


‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪. . . . . . . 99‬‬ ‫اﻟﻘﺎﻣﻮس‪. .. ..‬‬
‫اﻟﻘﻴﻢ ﻓ ‪.‬ﻲ‪. . . .‬‬
‫ﺗﻌﺪﻳﻞ ‪. .‬‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.100‬‬
‫ﺔ‪. .... .‬‬‫اﻟﻘﻴﻤ ‪.‬‬
‫ﺘﺎح ‪. .‬‬
‫إزاﻟ ﺔ أزواج ﻣﻔ ‪. .‬‬
‫‪.‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. .100‬‬
‫ﺔ‪. . . .. . .‬‬
‫ﺛﻠ‪. .‬‬‫ﻣﻌﺠﻢ ﻛﺎﺋﻨﺎ ت ‪. .‬‬
‫ﻣﻤﺎ‬
‫ﺘﻤﺮﻳﻦ ‪6-1:‬اﻟﺸﺨﺺ‪102 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪6-2:‬اﻷرﻗﺎم اﻟﻤﻔﻀﻠ ﺔ‪102 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫ﺘﻤﺮﻳﻦ ‪6-3:‬اﻟﻤ ﺴﺮد‪102 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫اﻟ‬


‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . . . . . . . . . . . . . . . . . . . . . 102‬‬ ‫ﻗﺎﻣﻮس‪. . .. .. .‬‬
‫ﺧﻼل‪. . . .‬‬‫‪.‬‬ ‫ﺘﻜﺮار ﻣﻦ‬
‫اﻟ‬
‫ﺋﻴ ﺴﻴ ﺔ ‪103 .............................‬‬
‫ﺒﺮ ﺟﻤﻴﻊ أزواج اﻟﻘﻴﻤ ﺔ اﻟﺮ‬
‫ﺘﻜﺮار ﻋ‬
‫اﻟ‬
‫‪. . . 104‬‬ ‫اﻟﻘﺎﻣﻮس‪. . . .. .‬‬
‫ﺗﻴﺢ‪. .‬ﻓ ﻲ ‪. . . . .‬‬ ‫اﻟﻤﻔﺎ‪.‬‬
‫ﺟﻤﻴﻊ ‪. .‬‬
‫ﺧﻼل‪. . .‬‬
‫‪.‬‬ ‫ﺘﻜﺮار ﻣﻦ‬
‫اﻟ‬
‫‪. 106‬‬
‫ﺐ‪. . . .. .. .‬‬
‫ﺗﻴ‪. .‬‬
‫ﺘﺮ‬‫ﺑﺎﻟ ‪.‬‬
‫اﻟﻘﺎﻣﻮس ‪.‬‬
‫ﺗﻴﺢ‪. . . . .‬‬ ‫ﻣﻔﺎ ‪.‬‬
‫ﺧﻼل‪. .‬‬
‫‪.‬‬ ‫ﺘﻜﺮار ﻣﻦ‬
‫اﻟ‬
‫‪.. .‬‬ ‫‪. . . . 107‬‬ ‫اﻟﻘﺎﻣﻮس‪. . . .. .. .‬‬
‫اﻟﻘﻴﻢ ‪.‬ﻓ ﻲ ‪. . . . .‬‬
‫ﺒﺮ ﻛﻞ ‪. . .‬‬
‫ﺘﻜﺮار ﻋ‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪6-4:‬اﻟﻤ ﺴﺮد ‪2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108‬‬ ‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪6-5:‬اﻷﻧﻬﺎر‪108 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫ﺘﺮاع‪108 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪6-6:‬اﻻﻗ‬ ‫اﻟ‬
‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫ﺘﻌﺸﻴ ‪.‬ﺶ‪. ..‬‬
‫‪. . .‬اﻟ‪. . .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 109‬‬
‫ﻗﺎﺋﻤ ﺔ اﻟﻘﻮاﻣﻴ ﺲ‪.‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . 109‬‬

‫ﻗﺎﺋﻤ ﺔ ﻓ ﻲ ﻗﺎﻣﻮس‪.‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪111‬‬

‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬‫ﺘﻮﻳﺎ ت‬
‫‪xiv‬اﻟﻤﺤ‬
‫‪Machine Translated by Google‬‬

‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . 113‬‬
‫ﻗﺎﻣﻮس‪. . ... . ..‬‬
‫ﻗﺎﻣﻮس ﻓ ﻲ ‪. . .‬‬

‫ﺘﻤﺮﻳﻦ ‪6-7:‬اﻟﻨﺎس‪114 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫اﻟ‬


‫ﺘﻤﺮﻳﻦ ‪6-8:‬اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ‪115 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪6-9:‬اﻷﻣﺎﻛﻦ اﻟﻤﻔﻀﻠ ﺔ‪115 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪6-10:‬اﻷرﻗﺎم اﻟﻤﻔﻀﻠ ﺔ‪115 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪6-11:‬اﻟﻤﺪن‪115 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪6-12:‬اﻹﺿﺎﻓﺎ ت‪115 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫‪ .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . 115‬‬

‫‪7‬‬
‫ﺛﻨﺎء اﻟﺤﻠﻘﺎ ت‬
‫ﺘﺨﺪم وأ‬
‫إدﺧﺎل اﻟﻤ ﺴ‬ ‫‪117‬‬
‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. ().‬‬
‫اﻹدﺧﺎل ‪. ..‬‬
‫وﻇﻴﻔ ‪.‬ﺔ ‪. . .‬‬
‫ﺗﻌﻤﻞ‪. . .‬‬
‫‪ . . 118‬ﻛﻴﻒ‪. . .‬‬
‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫واﺿﺤ‪.‬ﺔ‪. . . . . ..‬‬
‫ﻣﻮﺟﻬﺎ ت‪. . .‬‬
‫ﺑ ﺔ‪. . . .‬‬ ‫‪ . . 118‬ﻛ‬
‫ﺘﺎ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫اﻟﻌﺪدﻳ ‪.‬ﺔ‪..‬‬
‫اﻟﻤﺪﺧﻼ ‪ .‬ت‪. . .‬‬
‫ﺒﻮل‪. . . .‬‬‫ﻟﻘ ‪.‬‬
‫‪. int‬‬
‫)( ‪.‬‬
‫ﺘﺨﺪام ‪. .‬‬
‫‪ . . 119‬اﺳ ‪. .‬‬
‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪. . . . . . . . . . Modulo.‬‬‫ﻣﺸﻐﻞ ‪. . . . . .‬‬
‫‪..‬‬ ‫‪. . 120‬‬
‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . . . . . . .2.7.‬‬ ‫ﺜﻮن ‪. .‬‬
‫ﺑﺎﻳ‪. .‬‬
‫اﻟﻤﺪﺧﻼ ‪ .‬ت ‪.‬ﻓ‪ .‬ﻲ ‪.‬‬
‫ﺒﻮل‪. . . .‬‬
‫‪.‬ﻗ ‪.‬‬ ‫‪121‬‬
‫ﺘﺌﺠﺎرﺳﻴﺎرة‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪7-1:‬اﺳ‬ ‫اﻟ‬ ‫‪121‬‬

‫ﺘﻤﺮﻳﻦ ‪7-2:‬اﻟﺠﻠﻮس ﻓ ﻲ اﻟﻤﻄﻌﻢ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫اﻟ‬ ‫‪121‬‬

‫ﺗﻤﺮﻳﻦ ‪7-3:‬ﻣﻀﺎﻋﻔﺎ ت اﻟﻌﺸﺮة‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫‪121‬‬

‫ﺑﻴﻨﻤﺎ اﻟﺤﻠﻘﺎ ت‪. .‬‬‫‪ .‬إدﺧﺎل‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. .. ..‬‬ ‫‪122‬‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬
‫ﺔ‪.. .‬‬
‫اﻟﺤﻠﻘ ‪.‬‬
‫ﺗﺸﻐﻴﻞ ‪. .‬‬
‫‪..‬‬ ‫‪122‬‬
‫ﺛﻨﺎء‬
‫أ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪.122‬‬
‫اﻹﻧﻬﺎء‪. . .. .‬‬
‫ﺖ‪. . .‬‬‫وﻗ ‪.‬‬
‫ﺘﻴﺎر‪. .‬‬
‫ﺑﺎﺧ ‪.‬‬
‫ﺘﺨﺪم ‪. .‬‬
‫ﻟﻠﻤ ‪.‬ﺴ ‪. .‬‬
‫اﻟ ﺴﻤﺎح ‪.‬‬
‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.124‬‬
‫اﻟﻌﻠﻢ‪. . .. ..‬‬
‫ﺘﺨﺪام ‪. . .‬‬
‫‪.‬‬ ‫اﺳ‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . 125‬‬
‫ﺔ‪. . . .. .‬‬
‫ﺣﻠﻘ ‪.‬‬
‫ﻣﻦ ‪. .‬‬
‫ﻟﻠﺨﺮوج ‪.‬‬
‫ﺘﺨﺪام ﻛ ﺴﺮ ‪. . . .‬‬
‫اﺳ‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . 126‬‬
‫ﺣﻠﻘ‪.‬ﺔ‪. . . .. .. .‬‬
‫ﺘﻤﺮار‪. .‬ﻓ ﻲ ‪. .‬‬
‫ﺘﺨﺪام اﻻﺳ ‪. .‬‬
‫ﺑﺎﺳ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . 126‬‬
‫اﻟﻼﻧﻬﺎﺋﻴ ‪.‬ﺔ‪. . .. .. .‬‬
‫ﺗﺠﻨ ﺐ اﻟﺤﻠﻘﺎ ‪.‬ت ‪. . .‬‬

‫ﺘﺰا‪127 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫ﺒﻴ‬‫ﺘﻤﺮﻳﻦ ‪7-4:‬إﺿﺎﻓﺎ ت اﻟ‬


‫اﻟ‬
‫ﺗﺬاﻛﺮ اﻟ ﺴﻴﻨﻤﺎ‪127 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪7-5:‬‬
‫اﻟ‬
‫ﺛ ﺔ ﻣﺨﺎرج‪128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺛﻼ‬‫ﺗﻤﺮﻳﻦ ‪7-6:‬‬

‫ﺘ ﻲ‪128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺗﻤﺮﻳﻦ ‪7-7:‬إﻧﻔﻴﻨﻴ‬


‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﺳ‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪while‬ﻣﻊ اﻟﻘﻮاﺋﻢ واﻟﻘﻮاﻣﻴ ﺲ‪.‬‬ ‫‪. . 128‬‬
‫‪. . . . . . . . . . . 128‬‬ ‫أﺧﺮى‪. . .. .. . .‬‬
‫إﱃ‪. . . .‬‬ ‫ﺋﻤ‪ .‬ﺔ ‪.‬‬‫ﻣﻦ‪ .‬ﻗﺎ ‪.‬‬
‫ﻧﻘﻞ اﻟﻌﻨﺎﺻﺮ ‪.‬‬
‫ﺋﻤ ﺔ‪. . .. .. .‬‬
‫‪129‬‬ ‫ﻣﻦ ﻗﺎ‪. .‬‬
‫ﻣﺤﺪدة ‪. .‬‬
‫ﻗﻴﻢ ‪. . .‬‬
‫ﺜﻴﻼ‪. .‬ت ‪. .‬‬
‫إزاﻟ ﺔ ﻛﺎﻓ ﺔ ﻣ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪. . .130‬‬‫ﺘﺨﺪم‪. . .. . ...‬‬
‫ﺑﺈدﺧﺎل ‪.‬اﻟﻤ‪.‬ﺴ‪. . .‬‬
‫ﻣﻞء ﻗﺎﻣﻮس ‪. . .‬‬
‫ﺘﻤﺮﻳﻦ ‪7-8:‬دﻳﻠ ﻲ‪131 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺑ ﺴﻄﺮﻣ ﺔ‪131 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫ﺘﻤﺮﻳﻦ ‪7-9:‬ﻻ‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪7-10:‬إﺟﺎزة اﻷﺣﻼم‪131 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫‪ .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . 131‬‬

‫‪8‬‬
‫اﻟﻤﻬﺎم‬ ‫‪133‬‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . . . . . . 134‬‬ ‫ﺔ‪. . . .. .‬‬
‫ﺗﺤﺪﻳﺪ اﻟﻮﻇﻴﻔ ‪.‬‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . 134‬‬
‫اﻟﻮﻇﻴﻔ ﺔ‪. . .. .. .‬‬
‫إﱃ‪. . . .‬‬‫ﺗﻤﺮﻳﺮ اﻟﻤﻌﻠﻮﻣﺎ‪. .‬ت ‪.‬‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . . . . . . 135‬‬ ‫واﻟﻤﻌﻠﻤﺎ ‪ .‬ت‪. . .....‬‬
‫‪.‬‬ ‫اﻟﺤﺠﺞ‬
‫ﺘﻤﺮﻳﻦ ‪8-1:‬اﻟﺮﺳﺎﻟ ﺔ‪135 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﺎ ب اﻟﻤﻔﻀﻞ‪135 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪8-2:‬اﻟﻜ‬
‫اﻟ‬
‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . . 135‬‬
‫ﺑﺮة‪. . . .. .. .‬‬
‫اﻟﺤﺠﺞ اﻟﻌﺎ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. .136‬‬
‫اﻟﻤﻮﺿﻌﻴ‪.‬ﺔ‪. .. .. .‬‬
‫‪.‬‬ ‫اﻟﺤﺠﺞ‬
‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. 137‬‬
‫ﺔ‪. . .. . .‬‬
‫ﺋﻴ ‪.‬ﺴﻴ‪. .‬‬‫اﻟﻜﻠﻤﺎ‪ .‬ت ‪. .‬‬
‫اﻟﺮ‬ ‫‪.‬‬ ‫وﺳﻴﻄﺎ ت‬
‫‪.‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪.. .‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪..‬‬ ‫‪. . . . . . .138‬‬ ‫ﺘﺮاﺿﻴ ﺔ ‪. .. . . .‬‬‫ﻗﻴﻢ اﻓ‬

‫ﺘﻔﺎﺻﻴﻞ ‪xv‬‬
‫ﺘﻮﻳﺎ ت ﻓ ﻲ اﻟ‬
‫اﻟﻤﺤ‬
‫‪Machine Translated by Google‬‬

‫ﻣﻜﺎﻟﻤﺎ ت اﻟﻮﻇﺎﺋﻒ اﻟﻤﻜﺎﻓﺌ ﺔ ‪139 ...‬‬


‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . 140‬‬
‫اﻟﺤﺠ ‪.‬ﺔ‪. . .. . ..‬‬
‫ﺗﺠﻨ ﺐ أﺧﻄﺎء ‪. .‬‬
‫ﺗﻤﺮﻳﻦ ‪8-3:‬ﻗﻤﻴﺺ‪141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫ﺒﻴﺮة‪141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪8-4:‬اﻟﻘﻤﺼﺎن اﻟﻜ‬ ‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪8-5:‬اﻟﻤﺪن‪141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141‬‬
‫اﻟﻘﻴﻢ‪. . . .‬‬
‫‪..‬‬ ‫إرﺟﺎع‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . 142‬‬
‫ﺔ‪. . .. .‬‬
‫ﺴﻴﻄ ‪.‬‬
‫ﺑ ‪..‬‬ ‫إرﺟﺎع ﻗﻴﻤ‪.‬ﺔ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 142‬‬
‫ﺔ‪. . . . .‬‬
‫ﺘﻴﺎرﻳ‪. .‬‬
‫اﻟﺤﺠ ﺔ‪ .‬اﺧ‪. .‬‬
‫‪.‬‬ ‫ﺟﻌﻞ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144‬‬
‫اﻟﻘﺎﻣﻮس‪. . . ..‬‬
‫‪. ..‬‬ ‫إﻋﺎدة‬
‫‪. . . . . . . . . . . . . 145‬‬
‫ﺖ‪. . . .. .. .‬‬
‫اﻟﻮﻗ ‪. .‬‬
‫ﺣﻠﻘ ﺔ ‪. .‬‬
‫ﻣﻊ ‪. .‬‬
‫ﺘﺨﺪام وﻇﻴﻔ‪ .‬ﺔ‪. .‬‬
‫اﺳ‬
‫ﺗﻤﺮﻳﻦ ‪8-6:‬أﺳﻤﺎء اﻟﻤﺪن‪146 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺒﻮم‪146 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪8-7:‬اﻷﻟ‬
‫اﻟ‬
‫ﺘﺨﺪم‪146 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺒﻮﻣﺎ ت اﻟﻤ ﺴ‬
‫ﺘﻤﺮﻳﻦ ‪8-8:‬أﻟ‬
‫اﻟ‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺗﻤﺮﻳﺮ ﻗﺎﺋﻤ ﺔ‪. .‬‬ ‫‪. . 147‬‬


‫‪. . . . . . . . . . . . . . . . . . . . . . 147‬‬‫وﻇﻴﻔ ‪.‬ﺔ‪. . .. .. .‬‬
‫ﺗﻌﺪﻳﻞ ﻗﺎﺋﻤ ﺔ ﻓ‪. .‬ﻲ ‪. .‬‬
‫‪. . . . . . . . . 149‬‬
‫ﺋﻤ‪.‬ﺔ‪. . . .. .. .‬‬
‫ﻳﻞ ‪.‬ﻗﺎ ‪.‬‬
‫ﺗﻌﺪ‪. .‬‬
‫ﻣﻦ ‪.‬‬
‫ﻣﻨﻊ وﻇﻴﻔ ﺔ ‪.‬‬

‫ﺘﻤﺮﻳﻦ ‪8-9:‬اﻟ ﺴﺤﺮة‪150 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪8-10:‬اﻟ ﺴﺤﺮة اﻟﻌﻈﻤﺎء‪150 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﻐﻴﺮوا‪150 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪8-11:‬اﻟ ﺴﺤﺮة اﻟﺬﻳﻦ ﻟﻢﻳ‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . 151‬‬ ‫اﻟﺤﺠﺞ‪. . . .. .‬‬
‫ﺴﻔ ﻲ‪. .‬ﻣﻦ ‪. . . .‬‬
‫ﺘﻴﺎز ﻋﺪدﺗﻌ ‪. .‬‬
‫اﺟ‬
‫‪. . . .152‬‬ ‫ﺴﻔﻴ ‪.‬ﺔ‪. . .. . ...‬‬‫ﺘﻌ ‪. .‬‬‫واﻟ‪.‬‬
‫اﻟﻤﻮﺿﻌﻴ‪.‬ﺔ ‪.‬‬
‫اﻟﺤﺠﺞ ‪. . . .‬‬
‫ﺑﻴﻦ ‪. .‬‬ ‫اﻟﺨﻠﻂ‬
‫‪. . . . . . .152‬‬ ‫ﺴﻔﻴ ﺔ‪. . . .. ..‬‬
‫ﺘﻌ ‪. .‬‬‫ﺴﻴ‪.‬ﺔ اﻟ‪. .‬‬
‫ﺋﻴ ‪.‬‬‫اﻟﺮ ‪.‬‬
‫اﻟﻜﻠﻤﺎ‪. .‬ت ‪.‬‬
‫ﺳﻴﻄﺎ ت‪. . .‬‬
‫ﺘﺨﺪام و ‪. .‬‬‫اﺳ‬
‫ﺘﻤﺮﻳﻦ ‪8-12:‬ﺷﻄﺎﺋﺮ‪154 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬
‫ﺘﺨﺪم‪154 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪8-13:‬ﻣﻠﻒﺗﻌﺮﻳﻒ اﻟﻤ ﺴ‬
‫اﻟ‬
‫ﺗﻤﺮﻳﻦ ‪8-14:‬ﺳﻴﺎرا ت‪154 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 154‬‬
‫ت‪. . .. .. . .‬‬
‫وﺣﺪا ‪. .‬‬
‫ﺋﻔﻚ ‪.‬ﻓ ﻲ‪. . .‬‬ ‫ﺗﺨﺰﻳﻦ وﻇﺎ ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . 154‬‬ ‫ﻛﺎﻣﻠ ‪.‬ﺔ‪. . .. . . ..‬‬
‫ﺘﻴﺮاد وﺣﺪة ‪. .‬‬
‫اﺳ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 156‬‬ ‫ﻣﺤﺪدة‪. . .. .. . .‬‬
‫ﺋﻒ‪. . . .‬‬ ‫ﺘﻴﺮاد وﻇﺎ ‪.‬‬
‫اﺳ‬
‫‪. . . . . . . . . . . .156‬‬
‫وﻇﻴﻔ ‪.‬ﺔ‪. . .. . .‬‬
‫ﻹﻋﻄﺎء ‪. . .‬‬
‫ﺘﻌﺎر ‪. . .‬‬‫ﺘﺨﺪام اﺳﻢ ‪.‬ﻣ‪.‬ﺴ ‪. .‬‬
‫اﺳ‬
‫‪. . . . . . . . 157‬‬
‫ﺘﻌﺎر‪. . .. . ..‬‬
‫ﺳﻢ‪ .‬ﻣ ‪.‬ﺴ‪. .‬‬
‫ﻧﻤﻄﻴ‪.‬ﺔ‪ .‬ا ‪.‬‬
‫وﺣﺪة ‪. .‬‬
‫ﻹﻋﻄﺎء‪. . .‬‬
‫ﺘﺨﺪام ﻛـ ‪. .‬‬‫اﺳ‬
‫‪. . . . . . . . . . 157‬‬
‫ﻧﻤﻄﻴ ‪.‬ﺔ‪. . .. . ..‬‬
‫وﺣﺪة ‪. .‬‬
‫ﺋﻒ‪ .‬ﻓ ‪.‬ﻲ‪. . .‬‬
‫اﻟﻮﻇﺎ ‪.‬‬
‫ﺘﻴﺮاد ﺟﻤﻴﻊ ‪. . .‬‬
‫اﺳ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158‬‬
‫ﺘﺼﻤﻴﻢ‪. .. .. .‬‬
‫‪..‬‬ ‫وﻇﺎﺋﻒ اﻟ‬
‫ﺒﺎﻋ ﺔ‪159 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪8-15:‬ﻧﻤﺎذج اﻟﻄ‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪8-16:‬اﻟﻮاردا ت‪159 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﺼﻤﻴﻢ‪159 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪8-17:‬وﻇﺎﺋﻒ اﻟ‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 159‬‬

‫‪9‬‬
‫ﺒﻘﺎ ت‬
‫اﻟﻄ‬ ‫‪161‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162‬‬
‫اﻟﻔﺼﻞ‪. . .. .. .‬‬
‫ﺘﺨﺪام ‪. . .‬‬‫‪..‬‬ ‫إﻧﺸﺎء واﺳ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162‬‬ ‫إﻧﺸﺎء ﻓﺌ ﺔ اﻟﻜﻼ‪ . .‬ب‪. .. .. .‬‬
‫‪. . . . . . . . . . . . . . . . . 164‬‬ ‫ﺳ‪ .‬ﻲ‪. . .. .. .‬‬‫درا ‪.‬‬
‫ﻓﺼﻞ ‪.‬‬‫ﻣﻦ ‪. . .‬‬
‫ﺜﻴﻞ ‪.‬‬
‫ﻋﻤﻞ ﻣ‬
‫ﺘﻤﺮﻳﻦ ‪9-1:‬ﻣﻄﻌﻢ‪166 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺛ ﺔ ﻣﻄﺎﻋﻢ‪166 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺛﻼ‬‫ﺗﻤﺮﻳﻦ ‪9-2:‬‬
‫ﺘﺨﺪﻣﻮن‪166 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪9-3:‬اﻟﻤ ﺴ‬
‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 167‬‬
‫ﺜﻴﻼ‪. .‬ت‪. . .. .. .‬‬
‫واﻟﻤ ‪.‬‬
‫اﻟﻔﺌﺎ ‪ .‬ت ‪. .‬‬
‫‪.‬‬ ‫اﻟﻌﻤﻞ ﻣﻊ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167‬‬ ‫ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‪. . .. . .‬‬
‫‪. . . . . . . . . . . . . 168‬‬
‫ﺴﻤ‪.‬ﺔ‪. . .. .. .‬‬
‫ﺘﺮاﺿﻴ‪.‬ﺔ ﻟ‪. .‬‬
‫ﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ اﻓ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . 168‬‬ ‫ت‪. . .. . .‬‬
‫ﺴﻤﺎ ‪. .‬‬
‫ﺗﻌﺪﻳﻞ ﻗﻴﻢ اﻟ ‪. .‬‬
‫ﺘﻤﺮﻳﻦ ‪9-4:‬اﻟﻌﺪد اﻟﻤﻘﺪم‪171 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫ﺘﻤﺮﻳﻦ ‪9-5:‬ﻣﺤﺎوﻻ تﺗ ﺴﺠﻴﻞ اﻟﺪﺧﻮل‪171 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫اﻟ‬

‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬
‫ﺘﻮﻳﺎ ت ‪xvi‬‬
‫ﻣﺤ‬
‫‪Machine Translated by Google‬‬

‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172‬‬
‫ﻣﻴﺮا ث ‪. . . . .‬‬
‫‪. . . . . . . . . . . . .172‬‬
‫ﺑﻌ ‪.‬ﺔ‪. . . .. .‬‬
‫ﺗﺎ‪.‬‬
‫‪.__init‬ﻟﻔﺌ‪.‬ﺔ ‪.‬‬
‫ﻃﺮﻳﻘ ﺔ )( __ ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . 2.7.‬‬‫‪. . .. .. . .173‬‬‫ﺜﻮن ‪. .‬‬
‫ﺑﺎﻳ ‪. .‬‬‫ﺛﺔ ﻓ ﻲ‬
‫اﻟﻮرا‬
‫اﻟﻄﻔﻞ‪. . .. .. .‬‬
‫‪174‬‬ ‫ﻟﻔﺌ ﺔ ‪. . . .‬‬
‫واﻟﻄﺮق ‪. .‬‬
‫ﺗﺤﺪﻳﺪ اﻟ ﺴﻤﺎ ‪ .‬ت‪. . . .‬‬
‫‪. . . . . . . . . . . 175‬‬‫ﻷﺻﻞ‪. . . .. . .‬‬
‫ﻣﻦ‪ .‬ﻓﺌ‪.‬ﺔ‪ .‬ا ‪. . .‬‬
‫ﻃﺮقﺗﺠﺎوز ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . 175‬‬
‫ﺴﻤﺎ ‪.‬ت‪. . .. . .. .‬‬
‫ﺜﻴﻼ ت ﻛ ‪. .‬‬
‫اﻟﻤ‬
‫‪. . . . . . . . . . . . . . . . 177‬‬ ‫اﻟﺤﻘﻴﻘ ‪.‬ﻲ‪. . .. .. . ..‬‬
‫اﻟﻌﺎﻟﻢ ‪. . .‬‬
‫ﻧﻤﺬﺟ ﺔ ﻛﺎﺋﻨﺎ ‪.‬ت ‪. . .‬‬
‫ﺘﻤﺮﻳﻦ ‪9-6:‬ﺣﺎﻣﻞ اﻵﻳ ﺲ ﻛﺮﻳﻢ‪178 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪9-7:‬اﻹدارة‪178 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫ﺘﻴﺎزا ت‪178 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫ﺘﻤﺮﻳﻦ ‪9-8:‬اﻻﻣ‬
‫اﻟ‬
‫ﺒﻄﺎرﻳ ﺔ‪178 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺗﺮﻗﻴ ﺔ اﻟ‬ ‫ﺘﻤﺮﻳﻦ ‪9-9:‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179‬‬ ‫ﻷﺻﻨﺎف‪. . . .. ..‬‬
‫‪..‬‬ ‫ﺘﻴﺮاد ا‬
‫اﺳ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . .179‬‬ ‫واﺣﺪ‪. . .. . .. .‬‬
‫ﺻﻨﻒ ‪. . .‬‬
‫‪.‬‬ ‫ﺘﻴﺮاد‬‫اﺳ‬
‫‪. . . . . . . . . . .180‬‬
‫ﺔ‪. . . .. .‬‬
‫ﻧﻤﻄﻴ ‪.‬‬
‫وﺣﺪة‪. . .‬‬
‫ﺘﻌﺪدة ﻓ‪ .‬ﻲ‪. . .‬‬
‫ﺗﺨﺰﻳﻦ ﻓﺌﺎ ت ‪.‬ﻣ ‪. . .‬‬
‫‪. . . . . .181‬‬
‫ﺔ‪. . .. . .‬‬
‫ﻧﻤﻄﻴ‪. .‬‬
‫وﺣﺪة ‪. .‬‬
‫ﻣﻦ‪. . .‬‬
‫ﺘﻌﺪدة‪. .‬‬ ‫ﺘﻴﺮاد ﻓﺌﺎ ت‪. .‬ﻣ ‪. .‬‬ ‫اﺳ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . 182‬‬ ‫ﺘﻴﺮاد وﺣﺪة‪. .‬ﻛﺎﻣﻠ‪. .‬ﺔ‪. . .. .. . .‬‬
‫اﺳ‬
‫‪. . . . . . . . . . . . . .182‬‬
‫وﺣﺪة‪. . .. . .‬‬
‫ﻣﻦ‪. . . .‬‬ ‫اﻟﻔﺌﺎ‪. .‬ت ‪.‬‬
‫ﺘﻴﺮاد ﻛﺎﻓ ﺔ ‪. .‬‬
‫اﺳ‬
‫‪. . . . . . . . . . . . . 183‬‬
‫ﻧﻤﻄﻴ‪. .‬ﺔ‪. . .. .. . .‬‬
‫وﺣﺪة ‪. .‬‬
‫ﺘﻴﺮاد وﺣﺪة‪. .‬إﱃ ‪. . .‬‬ ‫اﺳ‬
‫‪. . . . . . . . . . . . . . . . .184‬‬
‫ﺑﻚ‪. . .. . ..‬‬
‫اﻟﺨﺎص‪. .‬‬
‫اﻟﻌﻤﻞ‪. . . .‬‬
‫ﺳﻴﺮ ‪. .‬‬
‫ﺜﻮر ﻋﲆ ‪. .‬‬
‫اﻟﻌ‬
‫ﺘﻮرد‪184 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺗﻤﺮﻳﻦ ‪9-10:‬ﻣﻄﻌﻢ ﻣ ﺴ‬
‫ﺘﻮرد‪184 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪9-11:‬اﻟﻤ ﺴﺆول اﻟﻤ ﺴ‬
‫اﻟ‬
‫ﺘﻌﺪدة‪184 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪9-12:‬وﺣﺪا ت ﻣ‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . 184‬‬ ‫ﺔ‪. . . .. .. .‬‬
‫ﺳﻴ ‪.‬‬
‫اﻟﻘﻴﺎ‪. .‬‬
‫ﺜﻮن ‪. .‬‬
‫ﺑﺎﻳ‬‫ﺒﺔ‬
‫ﺘ‬‫ﻣﻜ‬
‫ﺑﺎﻟﺪﻳﻜ ﺖ‪186 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫ﺑ ﺔ اﻷﻣﺮ‬
‫ﺘﺎ‬
‫ﺘﻤﺮﻳﻦ ‪9-13:‬إﻋﺎدة ﻛ‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪9-14:‬اﻟﻨﺮد‪186 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫ﺜﻮن‪186 . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺑﺎﻳ‬‫ﺒﻮع ﻓ ﻲ‬
‫ﺘﻤﺮﻳﻦ ‪9-15:‬وﺣﺪة اﻷﺳ‬ ‫اﻟ‬
‫ﺘﺼﻤﻴﻢ‪. . . ..‬‬
‫ﻓﺌﺎ ت‪ .‬اﻟ‪. . . .‬‬
‫‪.. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 186‬‬
‫ﻣﻠﺨﺺ‪. . . . . . . . . .. .‬‬
‫‪. .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 187‬‬

‫‪10‬‬
‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬ ‫‪189‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190‬‬
‫ﻣﻠﻒ‪. .. .. .‬‬
‫اﻟﻘﺮاءة ﻣﻦ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . 190‬‬
‫ﻛﺎﻣﻞ‪. . . . .. .. .‬‬
‫ﻗﺮاءة ﻣﻠﻒ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191‬‬
‫اﻟﻤﻠﻔﺎ‪ .‬ت‪. . .. . .. ..‬‬
‫‪.‬‬ ‫ﻣ ﺴﺎرا ت‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193‬‬ ‫ﺴﻄﺮ‪. . . .. ..‬‬
‫ﺑ ‪..‬‬‫ﻗﺮاءةﺳﻄﺮا‬
‫‪. . . . . . . . . . . . . . . . . 194‬‬
‫ﻣﻠﻒ‪. . .. .. .‬‬
‫ﻣﻦ ‪. . .‬‬‫ﺳﻄﻮر ‪. .‬‬
‫ﻋﻤﻞ ﻗﺎﺋﻤ ﺔ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . .194‬‬
‫اﻟﻤﻠﻒ‪. . .. . .. ..‬‬
‫ﻳﺎ ‪ .‬ت ‪. . .‬‬
‫ﺘﻮ ‪.‬‬
‫ﻣﺤ‪.‬‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ‪.‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . .195‬‬
‫رﻗﻢ‪. . . .. .. .‬‬
‫ﻣﻠﻴﻮن ‪. .‬‬
‫ﺒﻴﺮة‪. . . :‬‬
‫اﻟﻤﻠﻔﺎ ت اﻟﻜ ‪. .‬‬
‫؟‪. . . . . . . . . . . . . . . Pi‬‬
‫‪. . . .. .. 196‬‬
‫ﻣﻮﺟﻮد ‪.‬ﻓ ‪.‬ﻲ ‪. .‬‬
‫ﻣﻴﻼدك ‪. . .‬‬
‫‪..‬‬ ‫ﻫﻞ ﻋﻴﺪ‬
‫ﺗﻌﻠﻢ ﻟﻐ ﺔ ‪Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197‬‬
‫ﺘﻤﺮﻳﻦ ‪10-1:‬‬
‫اﻟ‬
‫ﺘﻌﻠﻢ ج‪197 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪10-2:‬اﻟ‬‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197‬‬ ‫ﻣﻠﻒ‪. . . .. .. .‬‬
‫ﺑﺔ ﻓ ﻲ ‪. .‬‬
‫ﺘﺎ‬‫اﻟﻜ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . 197‬‬
‫ﻓﺎرغ‪. . .... .. .‬‬
‫ﻣﻠﻒ ‪. .‬‬
‫ﺑﺔ ﻓ ﻲ ‪. .‬‬ ‫ﺘﺎ‬
‫اﻟﻜ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . .198‬‬
‫ﺘﻌﺪدة‪. . . .. . .‬‬
‫ﺑ ﺔ أﺳﻄﺮ ﻣ ‪. . . .‬‬ ‫ﺘﺎ‬‫ﻛ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199‬‬ ‫إﻟﺤﺎق ﻣﻠﻒ‪. . . .. .. .‬‬
‫ﺘﻤﺮﻳﻦ ‪ 10-3:‬ﺿﻴﻒ‪199 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﺮ اﻟﺰوار‪199 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪10-4:‬دﻓ‬
‫اﻟ‬

‫ﺘﻄﻼع‪199 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺑﺮﻣﺠ ﺔ اﻻﺳ‬
‫ﺘﻤﺮﻳﻦ ‪10-5:‬‬ ‫اﻟ‬
‫ﺜﻨﺎءا ت‪.‬‬
‫ﺘ‬‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﺳ‬ ‫‪. . 200‬‬

‫ﺜﻨﺎء ‪ZeroDivisionError.‬‬ ‫ﺘ‬ ‫‪ . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻌﺎﻟﺠ ﺔ اﺳ‬ ‫‪. . 200‬‬


‫‪. . . .Blocks.‬‬
‫‪try-except‬‬ ‫ﺘﺨﺪام‪. . . .‬‬
‫ﺳ‪. ..‬‬‫ﺑﺎ‪.‬‬
‫‪. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 200‬‬

‫ﺜﻨﺎءا ت ﻟﻤﻨﻊ اﻷﻋﻄﺎل‪.‬‬


‫ﺘ‬ ‫ﺳ ‪..‬‬
‫ﺘﺨﺪام اﻻﺳ‬‫‪ . . . . . . . . . . . . . . . . . . . . . .‬ا‪. .‬‬ ‫‪. . 201‬‬

‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬‫ﺘﻮﻳﺎ ت‬
‫اﻟﻤﺤ‬ ‫ﺑﻊ ﻋﺸﺮ‬
‫اﻟ ﺴﺎ‬
‫‪Machine Translated by Google‬‬

‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202‬‬
‫ﺑﻠﻮك‪. . . . .‬‬‫آﺧﺮ‬
‫‪. . . . . FileNotFoundError.‬‬
‫‪. . . . . . . . . . . . . .. 203‬‬
‫ﺜﻨﺎء‪. . .‬‬
‫ﺘ ‪.‬‬‫ﻣﻌﺎﻟﺠ ﺔ اﺳ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204‬‬
‫ﺗﺤﻠﻴﻞ اﻟﻨﺺ‪. . .. . .. ..‬‬
‫‪. . . . . . . . . . . . . . . . . . . . 205‬‬
‫ﺘﻌﺪدة‪. . .. .. . .‬‬
‫ﻣﻠﻔﺎ ‪ .‬ت ‪.‬ﻣ‪. . . .‬‬
‫اﻟﻌﻤﻞ ﻣﻊ ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206‬‬ ‫ﺖ‪. . .. .. . .‬‬
‫ﺑﺼﻤ ‪. .‬‬‫اﻟﻔﺸﻞ‬
‫‪. . . . . . . . . . . 207‬‬
‫ﻋﻨﻬﺎ‪. . .. . ..‬‬
‫ﺑﻼغ ‪. . .‬‬
‫ﻳﺠ ‪.‬ﺐ‪. .‬اﻹ ‪. .‬‬ ‫ﺘ‪ .‬ﻲ ‪. .‬‬ ‫ﻷﺧﻄﺎء ‪.‬اﻟ‬
‫‪..‬‬ ‫ﺗﺤﺪﻳﺪ ا‬
‫‪.. ..‬‬ ‫‪... .. .. .. ..‬‬ ‫‪. . . . . . . . . . . 207‬‬ ‫اﻹﺿﺎﻓ ‪.‬ﺔ‪. . .. . ..‬‬
‫‪. . .10-6:‬‬
‫‪.‬‬ ‫ﺘﻤﺮﻳﻦ‬‫اﻟ‬
‫ﺒ ﺔ اﻟﺠﻤﻊ‪208 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺗﻤﺮﻳﻦ ‪10-7:‬ﺣﺎﺳ‬
‫ﺘﻤﺮﻳﻦ ‪10-8:‬اﻟﻘﻄﻂ واﻟﻜﻼ ب‪208 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘ ﺔ‪208 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪10-9:‬اﻟﻘﻄﻂ واﻟﻜﻼ ب اﻟﺼﺎﻣ‬ ‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪10-10:‬اﻟﻜﻠﻤﺎ ت اﻟﺸﺎﺋﻌ ﺔ‪208 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺗﺨﺰﻳﻦ اﻟ‬
‫ﺒﻴﺎﻧﺎ ت‪. .‬‬ ‫‪. . 208‬‬
‫‪. . . . . . . . . . json.load‬‬
‫‪. . . . . ().‬‬
‫‪json.dump‬و ‪. .‬‬
‫ﺘﺨﺪام‪. . . . . . . (). .‬‬
‫‪ . . 209‬اﺳ ‪. .‬‬
‫ﺘﺨﺪم‪. . .‬‬
‫اﻟﻤ ‪.‬ﺴ ‪. . .‬‬
‫ﻳﻨﺸﺌﻬﺎ‪. .‬‬
‫ﺘ‪. .‬ﻲ ‪. . .‬‬
‫ﺒﻴﺎﻧﺎ ‪.‬ت‪ .‬اﻟ‬
‫وﻗﺮاءة ‪.‬اﻟ ‪. .‬‬
‫ﺣﻔﻆ ‪. . .‬‬‫‪.‬‬ ‫‪. . 210‬‬
‫ﺒﺮﻣﺠﻴ‪.‬ﺔ ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..‬‬ ‫ﺘﻌﻠﻴﻤﺎ ‪.‬ت اﻟ ‪.‬‬
‫إﻋﺎدةﺑﻨﺎء‪ .‬اﻟ‪. .‬‬
‫‪..‬‬ ‫‪212‬‬
‫ﺘﻤﺮﻳﻦ ‪10-11:‬اﻟﺮﻗﻢ اﻟﻤﻔﻀﻞ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬ ‫‪214‬‬
‫ﺗﺬﻛﺮ اﻟﺮﻗﻢ اﻟﻤﻔﻀﻞ‪. . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪10-12:‬‬
‫اﻟ‬ ‫‪214‬‬

‫ﺘﺨﺪم‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺗﺤﻘﻖ ﻣﻦ اﻟﻤ ﺴ‬
‫ﺘﻤﺮﻳﻦ ‪10-13:‬‬‫اﻟ‬ ‫‪214‬‬
‫ﻣﻠﺨﺺ ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..‬‬ ‫‪.. ..‬‬ ‫‪214‬‬

‫‪11‬‬
‫ﺑﻚ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺒﺎر اﻟ‬
‫ﺘ‬‫اﺧ‬ ‫‪215‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216‬‬
‫ﺔ‪. . .. . .. .‬‬
‫ﺒﺎر وﻇﻴﻔ ‪.‬‬
‫ﺘ‬‫اﺧ‬
‫‪. . . . . . . . . . . . . . . 217‬‬
‫ﺒﺎر‪. . . . .. .. .‬‬
‫ﺘ ‪..‬‬
‫اﻻﺧ‪.‬‬
‫وﺣﺎﻻ ‪.‬ت ‪. .‬‬
‫اﻟﻮﺣﺪة‪. . . .‬‬
‫ﺒﺎرا ت ‪. . .‬‬
‫ﺘ‬‫اﺧ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217‬‬
‫ﺒﺎر ﻧﺎﺟﺢ‪. . . .. .. .‬‬
‫ﺘ‬‫اﺧ‬
‫‪.............................................218‬‬
‫‪. . . . . . . . . . . . . . . . . . . . .219‬‬‫ﻓﺎﺷﻞ‪. . .. . .. .‬‬
‫ﺒﺎر ‪. . . .‬‬ ‫ﺘ‪.‬‬‫ﺑ ﺔ ﻻﺧ‪.‬‬ ‫ﺘﺠﺎ‬ ‫اﻻﺳ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221‬‬ ‫ﻳﺪة‪. . .‬‬
‫ﺒﺎرا‪. .‬ت ‪.‬ﺟﺪ‪. . .‬‬‫ﺘ ‪.‬‬ ‫اﺧ‪.‬‬
‫إﺿﺎﻓ ﺔ ‪.‬‬
‫ﺒﻠﺪ‪222 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪11-1:‬اﻟﻤﺪﻳﻨ ﺔ ‪ ،‬اﻟ‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪11-2:‬اﻟ ﺴﻜﺎن‪222 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222‬‬ ‫اﻟﻔﺼﻞ‪. . .. .‬‬
‫ﺒﺎر ‪. . .‬‬
‫ﺘ‬‫اﺧ‬
‫‪. . . . . . . . . . . . . . . . . . 222‬‬
‫ﺘﺄﻛﻴﺪ‪. . . ..‬‬
‫ﻃﺮق اﻟ‪. . .‬‬
‫ﻣﻦ ‪. . .‬‬
‫ﺘﻨﻮﻋ‪ .‬ﺔ ‪. .‬‬
‫ﻣﺠﻤﻮﻋ ﺔ ‪.‬ﻣ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223‬‬ ‫ﺒﺎر‪. . . . . .‬‬
‫ﺘ‬ ‫ﻓﺌ ﺔ ﻟﻼﺧ‬
‫‪. . . . . . . . . . . .AnonymousSurvey.‬‬
‫‪. . . . . . . . . . . .. . 225‬‬
‫ﺒﺎر ﻓﺌ ﺔ ‪. .‬‬ ‫ﺘ‬‫اﺧ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . setUp‬‬
‫‪. . . .().‬‬
‫ﻃﺮﻳﻘ ﺔ ‪. .. .. . 227‬‬
‫ﺘﻤﺮﻳﻦ ‪11-3:‬اﻟﻤﻮﻇﻒ‪228 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 228‬‬

‫ﺜﺎﻧ ﻲ‪ :‬اﻟﻤﺸﺎرﻳﻊ‬
‫اﻟﺠﺰء اﻟ‬ ‫‪231‬‬

‫ﺒﻲ‬
‫اﻟﻤﺸﺮوع ‪1:‬ﻏﺰو أﺟﻨ‬

‫‪12‬‬
‫ﺳﻔﻴﻨ ﺔﺗﻄﻠﻖ اﻟﺮﺻﺎص‬ ‫‪235‬‬
‫ﺘﺨﻄﻴﻂ ﻟﻤﺸﺮوﻋﻚ ‪236 ..............................................‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pygame.‬‬ ‫ﺒﻴ ﺖ ‪. . . . . .. .. 236‬‬
‫ﺜ‬ ‫ﺗ‬
‫‪. . . . . . . . . . . . . . 237‬‬
‫ﺑﻨﻘﻄ ﺔ‪. . .. . .. ..‬‬
‫‪. . . Python‬‬
‫ﺒﻴ ﺖ ﺣﺰم ‪. . . .‬‬
‫ﺜ‬‫ﺗ‬
‫‪. . . . . . . . . . . . . . . . . . . . .Linux.‬‬
‫‪. . . .. .. 238‬‬ ‫‪. Pygame‬ﻋﲆ‪. . .‬‬
‫‪. ..‬‬ ‫ﺒﻴ ﺖ‬
‫ﺜ‬‫ﺗ‬

‫ﺜﺎﻣﻦ ﻋﺸﺮ‬
‫اﻟ‬ ‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬‫ﺘﻮﻳﺎ ت‬
‫اﻟﻤﺤ‬
‫‪Machine Translated by Google‬‬

‫ﻋﲆ‪Windows. . .‬‬
‫‪. Pygame‬‬
‫ﺒﻴ ‪.‬ﺖ ‪. . . . . .‬‬
‫ﺜ‪.‬‬
‫ﺗ‬‫‪.OS‬‬
‫ﻋﲆ ‪. .X.‬‬
‫‪. . Pygame‬‬
‫ﺖ ‪. .. ..‬‬
‫ﺒﻴ ‪. .‬‬
‫ﺜ‪.‬‬
‫‪. .. .. . .. ..‬‬
‫ﺗ‬ ‫‪. . 239‬‬
‫‪. .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 240‬‬
‫ﺒ ‪.‬ﺔ‪. . . . . . . . . . . . . . . . . . . . . . .‬‬‫ﻣﺸﺮوع ‪. .‬‬
‫اﻟﻠﻌ‬ ‫ﺑﺪء ‪. . . .‬‬
‫‪.. .. .. . .. ..‬‬ ‫‪. . 240‬‬
‫ﺘﺨﺪم‪. .‬‬ ‫ﺑ ﺔ ﻹدﺧﺎﻻ ت اﻟﻤ ﺴ‬‫ﺘﺠﺎ‬‫‪ . . . . . . . . . . .‬إﻧﺸﺎء ﻧﺎﻓﺬة ‪Pygame‬واﻻﺳ‬ ‫‪241‬‬
‫اﻟﺨﻠﻔﻴ ‪.‬ﺔ‪. . . . . . . . . . . . . .‬‬
‫ﻟﻮن‪. . .‬‬‫ﺒﻂ ‪. .‬‬
‫ﺿ ‪.‬‬
‫‪..‬‬ ‫‪.. .. . .. .. ..‬‬ ‫‪242‬‬
‫اﻹﻋﺪادا ‪.‬ت‪. . . . . . . . . . . . . . ..‬‬
‫إﻧﺸﺎء ‪.‬ﻓﺌ ‪.‬ﺔ ‪. . . .‬‬
‫‪. ..‬‬ ‫‪.. .. . .. ..‬‬ ‫‪. . 243‬‬
‫ﺴﻔﻴﻨ ‪.‬ﺔ‪. . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺻﻮرة ‪.‬اﻟ‪. . .‬‬
‫إﺿﺎﻓ ﺔ‪. . .‬‬
‫‪. ..‬‬ ‫‪.. .. . .. .. ..‬‬ ‫‪244‬‬
‫‪.. .. .. . .. .. .. .. .. . .. .. .. ..‬‬ ‫‪. . 245‬‬ ‫ﺴﻔﻴﻨ ‪.‬ﺔ‪. . .. . ..‬‬
‫إﻧﺸﺎء ﻓﺌ ﺔ اﻟ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . .246‬‬
‫اﻟﺸﺎﺷ‪.‬ﺔ‪. . . .. .. .‬‬
‫ﻋﲆ‪. . . .‬‬ ‫رﺳﻢ اﻟ ﺴﻔﻴﻨ ﺔ‪. .‬‬
‫‪. . . . . . . . . . game_functions.‬‬
‫‪. . . . . . . . . . . .. .. 247‬‬
‫وﺣﺪة‪. . .‬‬
‫ﻳﻮن‪. . :‬‬
‫ﺑﻨﺎء د ‪. .‬‬ ‫إﻋﺎدة‬
‫‪. . . . . . . . . . . . . . . . . . . . . check_events‬‬
‫‪. . . . . . . . ().‬‬ ‫داﻟ ﺔ ‪. .. . . 247‬‬
‫‪. . . . . . . . . . . . . . . . . . . .update_screen‬‬
‫وﻇﻴﻔ ﺔ ‪. . . . . . . . .()..... 248‬‬
‫ﺘﻤﺮﻳﻦ ‪12-1:‬اﻟ ﺴﻤﺎء اﻟﺰرﻗﺎء‪249 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺒ ﺔ‪249 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪12-2:‬ﺷﺨﺼﻴ ﺔ اﻟﻠﻌ‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249‬‬‫ﻗﻴﺎدة اﻟ ﺴﻔﻴﻨ ‪.‬ﺔ‪. .. .. . ..‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . .249‬‬
‫ﻟﻀﻐﻄ ﺔ‪. .‬زر‪. . .. .. .‬‬
‫ﺑﺔ ‪. .‬‬ ‫ﺘﺠﺎ‬ ‫اﻻﺳ‬
‫‪. . . . . . . . . . . . . . . . . . 250‬‬
‫ﺘﻤﺮة‪. . . .. . .‬‬
‫اﻟﻤ‪.‬ﺴ ‪. . .‬‬
‫ﺑﺎﻟﺤﺮﻛ ‪.‬ﺔ ‪.‬‬
‫‪.‬‬ ‫اﻟ ﺴﻤﺎح‬
‫‪. . . . . . . . . . . . . . . . . . . . 252‬‬
‫واﻟﻴﻤﻴﻦ‪. . .... .‬‬
‫ﺴﺎر ‪. . . . .‬‬ ‫ﻣﻦ ‪.‬اﻟﻴ‪. .‬‬
‫ﺘﺤﺮك ﻛﻞ ‪.‬‬ ‫ﺗ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . 253‬‬
‫ﺴﻔﻴﻨ‪.‬ﺔ‪. . .. .. .‬‬
‫ﺒﻂﺳﺮﻋ ﺔ اﻟ‪. . .‬‬ ‫ﺿ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . 255‬‬
‫ﺴﻔﻴﻨ‪.‬ﺔ‪. . .... .. .‬‬
‫ﺗﺤﺪﻳﺪ ﻣﺪى اﻟ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . .check_events‬‬
‫‪. . . . . . . .().. .. . 255‬‬
‫ﻳﻮن‪. . .‬‬
‫ﺑﻴﻊ د ‪.‬‬ ‫إﻋﺎدة‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256‬‬
‫ﺧﻼﺻ ﺔﺳﺮﻳﻌ ‪.‬ﺔ‪. .. .. . ..‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .alien_invasion.py.‬‬
‫‪. .. . .. ..‬‬ ‫‪. . 256‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .settings.py.‬‬
‫‪.. ..‬‬ ‫‪. . 256‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . game_functions.py.‬‬
‫‪. .. .. . .. ..‬‬ ‫‪. . . 256‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ship.py.‬‬ ‫‪..‬‬ ‫‪. . 257‬‬
‫ﺗﻤﺮﻳﻦ ‪ 12-3:‬ﺻﺎروخ‪257 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺗﻴﺢ‪257 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪12-4:‬اﻟﻤﻔﺎ‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257‬‬ ‫اﻟﺮﺻﺎص‪. . . .. .. .‬‬
‫‪..‬‬ ‫اﻃﻼق‬
‫‪. . . . . . . . . . . . . . . . . . . .257‬‬
‫اﻟﻨﻘﻄ ‪ .‬ﻲ‪. . . .. .. .‬‬
‫ﺘﻌﺪاد ‪. . .‬‬
‫إﺿﺎﻓ ﺔ إﻋﺪادا ‪. .‬ت اﻟ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . .258‬‬ ‫اﻟﺮﺻﺎﺻ‪. .‬ﺔ‪. . .. .. . .‬‬
‫إﻧﺸﺎء ﻓﺌ ﺔ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . 259‬‬
‫ﻣﺠﻤﻮﻋ‪. .‬ﺔ‪. . . .. . .‬‬
‫اﻟﻨﻘﻄﻴ ﺔ ‪.‬ﻓ ‪.‬ﻲ ‪. . .‬‬
‫ﺗﺨﺰﻳﻦ اﻟﺮﻣﻮز ‪. . . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260‬‬ ‫اﻟﺮﺻﺎص‪. . . .. .. .‬‬
‫‪..‬‬ ‫اﻃﻼق‬
‫‪. . . . . . . . . . . . . . . . . . . . . . .261‬‬
‫ﻳﻤ ﺔ‪. . .. . .. ..‬‬
‫اﻟﻘﺪ ‪. .‬‬
‫اﻟﻨﻘﻄﻴ ‪.‬ﺔ ‪. .‬‬
‫ﺣﺬف اﻟﺮﻣﻮز‪. . . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 262‬‬ ‫اﻟﺮﺻﺎص‪. . .. .. .‬‬
‫اﻟﺤﺪ ﻣﻦ ﻋﺪد ‪. . . . .‬‬
‫إﻧﺸﺎء وﻇﻴﻔ ﺔ ‪update_bullets () ............................ 263‬‬
‫‪. . . . . . . . . . . . . . . . .fire_bullet‬‬
‫‪. . . . . . ().. . .. .264‬‬
‫إﻧﺸﺎء وﻇﻴﻔ ﺔ ‪. .‬‬
‫ﺒ ﻲ‪264 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪12-5:‬ﻣﻄﻠﻖ اﻟﻨﺎر اﻟﺠﺎﻧ‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 264‬‬

‫‪13‬‬
‫ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ!‬ ‫‪265‬‬
‫ﻣﺸﺮوﻋﻚ‪. . . . .. .‬‬
‫ﻣﺮاﺟﻌ ‪.‬ﺔ ‪. . . . .‬‬
‫‪. .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 266‬‬
‫ﺋ ‪.‬ﻲ‪. . . . . .‬‬
‫ﻓﻀﺎ‪.‬‬
‫ﺋﻦ ‪. .‬‬
‫ﻛﺎ ‪.‬‬
‫أول ‪.‬‬
‫ﺧﻠﻖ‪. . .‬‬
‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 266‬‬
‫ﺒ ﺔ‪. .‬‬‫ﻓﺌ ‪.‬ﺔ ‪. .‬‬
‫اﻟﻐﺮﻳ‬ ‫ﺧﻠﻖ‪. .‬‬
‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 267‬‬
‫ﺒ ﻲ‪.‬‬ ‫ﺜﻴﻞ ﻟﻸﺟﻨ‬ ‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫إﻧﺸﺎء ﻣ‬ ‫‪. . 268‬‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺟﻌﻞ اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲﻳﻈﻬﺮ ﻋﲆ اﻟﺸﺎﺷ ﺔ‪.‬‬ ‫‪. . 268‬‬
‫ﺋﻴﻴﻦ‪. . . . ..‬‬
‫اﻟﻔﻀﺎ ‪. .‬‬
‫ﺳﻄﻮل ‪. . .‬‬
‫ﺑﻨﺎء أ‪. . . .‬‬
‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 269‬‬
‫‪ . . . . . . . . . . . . . . . . . . . .‬ﺗﺤﺪﻳﺪ ﻋﺪد اﻷﺟﺎﻧ ﺐ اﻟﻤﻼﺋﻤﻴﻦ ﻓ ﻲ ﺻﻒ واﺣﺪ‪. .‬‬ ‫‪. . 269‬‬
‫اﻟﻔﻀﺎ‪. .‬‬
‫ﺋﻴﻴﻦ‪.‬‬ ‫ﻣﻦ‪. . .‬‬
‫ﺻﻔﻮف ‪. .‬‬
‫ﻳﻦ ‪. . . .‬‬
‫ﺗﻜﻮ ‪. .‬‬
‫‪.. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 270‬‬
‫ﺳﻄﻮل‪. . . . . . . . . . . .‬‬
‫إﻧﺸﺎء ‪.‬اﻷ ‪. . . .‬‬
‫‪. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 271‬‬

‫ﺘﺎﺳﻊ ﻋﺸﺮ‬
‫ﺘﻔﺼﻴﻞ اﻟ‬
‫ﺑﺎﻟ‬‫ﺘﻮﻳﺎ ت‬
‫اﻟﻤﺤ‬
‫‪Machine Translated by Google‬‬

‫‪. . . . . . . . . . . . . . . . . . . . .create_fleet‬‬
‫‪. . . . . . . ().. . .. .. 273‬‬
‫إﻋﺎدة اﻟﻬﻴﻜﻠ ﺔ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273‬‬‫اﻟﺼﻔﻮف‪. .. .. .‬‬
‫‪..‬‬ ‫ﻣﻀﻴﻔﺎ‬
‫ﺘﻤﺮﻳﻦ ‪13-1:‬اﻟﻨﺠﻮم‪276 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪13-2:‬ﻧﺠﻮم أﻓﻀﻞ‪276 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺟﻌﻞ اﻷﺳﻄﻮلﻳ‬
‫ﺘﺤﺮك‪.‬‬ ‫‪. . 276‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . .276‬‬ ‫ﻟﻠﻴﻤﻴﻦ‪. . .. . .‬‬
‫ﺐ‪. . . .‬‬ ‫ﺗﺤﺮﻳﻚ اﻷﺟﺎﻧ ‪.‬‬
‫‪. . . . . . . . . . . . . 277‬‬
‫ﺳﻄﻮل‪. . . .. .. .‬‬
‫ﺗﺠﺎه ‪.‬اﻷ‪. . . .‬‬
‫إﻧﺸﺎء اﻹﻋﺪادا ‪. .‬ت ﻻ ‪. .‬‬
‫ﻗﺪ ‪. .‬‬
‫وﺻﻞ إﱃ اﻟﺤﺎﻓ ﺔ‪278 . . .‬‬ ‫ﺋ ﻲ‪. .‬‬
‫ﻓﻀﺎ‪.‬‬
‫ﺋﻦ ‪. .‬‬ ‫ﻛﺎن‪. .‬ﻛﺎ ‪.‬‬
‫إذا ‪.‬‬
‫ﺘﺤﻘﻖ ﻟﻤﻌﺮﻓ ‪.‬ﺔ ‪.‬ﻣﺎ ‪. .‬‬‫اﻟ‬
‫‪. . . . . . . 278‬‬
‫ﺗﺠﺎه‪. . .. .. . ..‬‬
‫اﻻ‪. .‬‬ ‫ﺗﻐﻴﻴﺮ ‪.‬‬
‫ﺳﻄﻮل و‪. . .‬‬
‫‪..‬‬ ‫إﺳﻘﺎط اﻷ‬
‫ﺘﻤﺮﻳﻦ ‪13-3:‬ﻗﻄﺮا ت اﻟﻤﻄﺮ‪279 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘ ﺔ‪279 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺑ‬‫ﺛﺎ‬‫ﺘﻤﺮﻳﻦ ‪13-4:‬أﻣﻄﺎر‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280‬‬ ‫ﻷﺟﺎﻧ‪. .‬ﺐ‪. . . .. . .. ..‬‬‫ﻋﲆ‪ .‬ا‪. .‬‬
‫اﻃﻼق اﻟﻨﺎر ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 280‬‬
‫اﻟﺮﺻﺎص‪. . . .. .. .‬‬
‫اﺻﻄﺪاﻣﺎ‪ .‬ت‪. . . . .‬‬
‫‪.‬‬ ‫ﻛﺸﻒ‬
‫‪. . . . . . . . . . . . . . . . . . 281‬‬
‫ﺒﺎر‪. . .. .. .‬‬
‫ﺘ‪. .‬‬‫ﺒﺮ ‪. .‬‬
‫ﻟﻼﺧ‬ ‫ﺻﻨﻊ رﺻﺎﺻﺎ ‪.‬ت ‪.‬أﻛ ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . 282‬‬
‫ﺳﻄﻮل‪. . .. .. . .‬‬
‫إﻋﺎدة إﻋﻤﺎر اﻷ ‪. . . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283‬‬
‫اﻟﺮﺻﺎص‪. . .. . .‬‬
‫‪..‬‬ ‫ﺗ ﺴﺮﻳﻊ‬
‫‪. . . . . . . . . . . . . . . . update_bullets‬‬ ‫‪. . . . . . . . ().‬‬ ‫‪. . ... . .283‬‬
‫ﻳﻮن ‪. .‬‬
‫ﺑﻨﺎء د ‪.‬‬‫إﻋﺎدة‬
‫ﺘﻘﻂ‪284 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪13-5:‬اﻟ‬‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284‬‬ ‫ﺒ ﺔ‪. . .. . .‬‬
‫إﻧﻬﺎء اﻟﻠﻌ‬
‫‪. . . . . . . . . . . . . . . . 284‬‬
‫ﺋﻴ ‪.‬ﺔ‪. . ..... .‬‬
‫اﻟﻔﻀﺎ ‪.‬‬
‫ﺴﻔﻦ ‪. . .‬‬
‫اﺻﻄﺪام ‪.‬اﻟ ‪. .‬‬
‫‪.‬‬ ‫ﻛﺸﻒ‬
‫‪. . . . . . . . 285‬‬
‫اﻟﻔﻀﺎﺋﻴ ‪.‬ﺔ‪. .... . ..‬‬
‫ﺴﻔﻦ‪. . . .‬‬
‫اﺻﻄﺪام اﻟ ‪. .‬‬
‫ﻟﺤﻮاد‪ .‬ث‪. . . . .‬‬
‫‪.‬‬ ‫ﺑﺔ‬ ‫ﺘﺠﺎ‬‫اﻻﺳ‬
‫‪. . . . . 288‬‬
‫اﻟﺸﺎﺷ ﺔ‪. . .. ...‬‬
‫ﺳﻔﻞ ‪. . .‬‬
‫ﺗﺼﻞ‪. .‬إﱃ ‪.‬أ ‪. .‬‬
‫ﺘ‪ .‬ﻲ‪. .‬‬
‫ﺋﻴ ‪.‬ﺔ اﻟ‬
‫اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎ ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288‬‬
‫ﺒ ﺔ! ‪. . . . .. ..‬‬
‫ﺘﻬ ﺖ اﻟﻠﻌ‬
‫اﻧ‬
‫‪. . . . . . . .289‬‬ ‫ﺒ ‪.‬ﺔ‪. . .. . .‬‬
‫أﺟﺰاء ‪.‬ﻣﻦ‪. .‬اﻟﻠﻌ‪.‬‬
‫ﺗﺸﻐﻴﻞ ‪. . .‬‬
‫ﺐ ‪. ..‬‬ ‫ﺘﻰﻳﺠ‪. .‬‬‫ﺗﺤﺪﻳﺪ ﻣ‬
‫ﺒ ﺔ‪290 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻬ ﺖ اﻟﻠﻌ‬
‫ﺘﻤﺮﻳﻦ ‪13-6:‬اﻧ‬ ‫اﻟ‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 290‬‬

‫‪14‬‬
‫ﺘﻬﺪﻳﻒ‬
‫اﻟ‬ ‫‪291‬‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬إﺿﺎﻓ ﺔ زر اﻟ‬
‫ﺘﺸﻐﻴﻞ‪.‬‬ ‫‪. . 292‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292‬‬ ‫إﻧﺸﺎء ﻓﺌ ﺔ زر‪. . .. .. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . 294‬‬
‫اﻟﺸﺎﺷ‪ .‬ﺔ‪. . .. .. .‬‬
‫رﺳﻢ اﻟﺰر ﻋﲆ ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295‬‬ ‫ﺒ ﺔ‪. . . . .‬‬
‫ﺑﺪء اﻟﻠﻌ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296‬‬
‫ﺒ ﺔ‪. . . . .....‬‬
‫اﻟﻠﻌ‪.‬‬
‫ﺒﻂ ‪.‬‬ ‫إﻋﺎدة ﺿ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . 297‬‬
‫ﺘﺸﻐﻴﻞ‪. . .. . . ..‬‬
‫ﺗﻌﻄﻴﻞ زر اﻟ ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . 298‬‬
‫اﻟﻤﺎوس‪. . .. .. . .‬‬
‫إﺧﻔﺎء ﻣﺆﺷﺮ ‪. . . .‬‬

‫ﺘﻤﺮﻳﻦ ‪14-1:‬اﺿﻐﻂ ﻋﲆ ‪P‬ﻟﻠﻌ ﺐ‪298 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫اﻟ‬
‫ﺗﻤﺮﻳﻦ اﻟﻬﺪف‪298 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪14-2:‬‬
‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299‬‬ ‫ﺘﻰ ‪. . . .. .. .‬‬
‫ﻳﺔ ﺣ ‪. .‬‬
‫ﺘ ﺴﻮ‬‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 299‬‬
‫ﺴﺮﻋ ‪.‬ﺔ‪. . .. .. .‬‬
‫ﺗﻌﺪﻳﻞ اﻋﺪادا ‪.‬ت‪ .‬اﻟ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300‬‬
‫ﺴﺮﻋ ‪.‬ﺔ‪. . .. . ...‬‬
‫ﺒﻂ اﻟ ‪. .‬‬‫إﻋﺎدة ﺿ‬
‫ﺗﻤﺮﻳﻦﺗﺤﺪي اﻟﻬﺪف‪301 . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪14-3:‬‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﻟ‬
‫ﺘﻬﺪﻳﻒ‪.‬‬ ‫‪. . 301‬‬

‫ﺘﻴﺠ ﺔ ‪301 ........................................‬‬ ‫ﻋﺮض اﻟﻨ‬


‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . 303‬‬ ‫ﺋﺞ‪. . . . .. .. .‬‬
‫ﺘﺎ ‪.‬‬
‫ﺻﻨﻊ ﻟﻮﺣ ﺔ اﻟﻨ ‪.‬‬
‫‪. . . . . . 304‬‬
‫ﺐ‪. . .. . ..‬‬
‫ﻷﺟﺎﻧ ‪.‬‬
‫ﺳﻘﺎط ‪.‬ا ‪. .‬‬
‫ﺘﻴﺠ‪.‬ﺔ‪ .‬ﻣﻊ‪ .‬إ‪. . .‬‬‫ﺗﺤﺪﻳ ﺚ اﻟﻨ‬
‫‪. . . . . . . . . . . . . . . . . . . 305‬‬
‫ﺋﺞ‪. . .. . .‬‬
‫ﺘﺎ ‪. .‬‬
‫ﺟﻤﻴﻊ ‪.‬اﻟﻨ‪.‬‬
‫ﺴﺠﻴﻞ ‪. . .‬‬
‫ﺘﺄﻛﺪ ﻣﻦﺗ ‪. .‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306‬‬ ‫اﻟﻨﻘﺎط‪. .... .‬‬
‫‪..‬‬ ‫زﻳﺎدة ﻗﻴﻢ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307‬‬
‫ﺘﻴﺠ ‪.‬ﺔ‪. . .. . . ..‬‬
‫ﺗﻘﺮﻳ ﺐ اﻟﻨ‬
‫ﺘﺎﺋﺞ ﻋﺎﻟﻴ ﺔ ‪308 ..............................................‬‬
‫ﻧ‬

‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬
‫ﺘﻮﻳﺎ ت ‪xx‬‬
‫ﻣﺤ‬
‫‪Machine Translated by Google‬‬

‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .310‬‬
‫ﺘﻮى‪. . . .. .. .‬‬
‫ﻋﺮض اﻟﻤ ﺴ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 313‬‬
‫ﺴﻔﻦ‪. . . . .. .‬‬
‫ﻋﺮض ﻋﺪد اﻟ ‪. . .‬‬

‫ﺘﻴﺠ ﺔ ﻋﲆ اﻹﻃﻼق‪317 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫ﺘﻤﺮﻳﻦ ‪14-4:‬أﻋﲆ ﻧ‬
‫اﻟ‬
‫ﺒﻨﺎء‪317 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪14-5:‬إﻋﺎدة اﻟ‬
‫اﻟ‬
‫ﺒ ﻲ‪317 . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺗﻮﺳﻴﻊ ﻧﻄﺎق اﻟﻐﺰو اﻷﺟﻨ‬
‫ﺘﻤﺮﻳﻦ ‪14-6:‬‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 317‬‬

‫ﺒﻴﺎﻧﺎ ت‬
‫ﺗﺼﻮر اﻟ‬
‫اﻟﻤﺸﺮوع ‪2:‬‬

‫‪15‬‬
‫ﺒﻴﺎﻧﺎ ت‬
‫ﺗﻮﻟﻴﺪ اﻟ‬ ‫‪321‬‬
‫ﺐ ‪.. .. .‬‬
‫‪matplotlib.‬‬ ‫ﺗﺮﻛﻴ ‪. .‬‬
‫‪.. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 322‬‬
‫ﺲ‪. . . ..‬‬
‫ﻟﻴﻨﻜ‪. .‬‬
‫ﻋﲆ ‪. .‬‬‫‪.. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 322‬‬
‫ﻧﻈﺎم‪Windows. .‬‬
‫ﻋﲆ‪. . .‬‬
‫‪. .OS‬‬
‫ﻋﲆ ‪. X. .‬‬
‫‪.. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 322‬‬
‫‪.. . .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 323‬‬

‫ﺒﺎر‪matplotlib. .‬‬
‫ﺘ ‪.‬‬
‫‪.. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫اﺧ‬ ‫‪. . 323‬‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻌﺮض ‪matplotlib. .‬‬ ‫‪. . 323‬‬

‫ﺑ ﺴﻴﻂ‪. .‬‬‫ﺑﻴﺎﻧ ﻲ ﺧﻄ ﻲ‬‫ﺳﻢ رﺳﻢ‬‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ر ‪.‬‬ ‫‪. . 324‬‬


‫‪. 324‬‬
‫ﺒﻴﺎﻧ ‪ .‬ﻲ‪. . .. .. .‬‬
‫ﺳﻢ‪. .‬اﻟ ‪.‬‬
‫اﻟﺮ ‪.‬‬
‫ﺳﻤﻚ ‪.‬‬
‫اﻟﻤﻠﺼﻖ‪. .‬و ‪. . .‬‬
‫‪..‬‬ ‫ﺗﻐﻴﻴﺮ ﻧﻮع‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326‬‬ ‫اﻟﻤﺆاﻣﺮة‪. . .. .. .‬‬
‫‪..‬‬ ‫ﺗﺼﺤﻴﺢ‬
‫‪(). . .. .326‬‬
‫ﺘ ‪.‬ﺖ ‪. .‬‬
‫ﺘﺸ ‪.‬‬ ‫ﺑﺎﻟ ‪.‬‬
‫ﺗﺼﻤﻴﻤﻬﺎ ‪.‬‬
‫اﻟﻔﺮدﻳ‪.‬ﺔ‪ .‬و ‪. . . . .‬‬ ‫رﺳﻢ اﻟﻨﻘﺎط ‪. .‬‬
‫‪. . . . . ().‬‬
‫‪. . . ....328‬‬‫ﺜﺮ ‪. .‬‬
‫ﺒﻌ ‪.‬‬
‫ﺘﺨﺪام ‪.‬ﻣ ‪.‬‬
‫ﺳ‪. . .‬‬ ‫ﺑﺎ‪.‬‬‫اﻟﻨﻘﺎط ‪.‬‬
‫ﻣﻦ ‪. . .‬‬ ‫رﺳﻢﺳﻠ ﺴﻠ ﺔ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . .328‬‬ ‫ﺗﻠﻘﺎﺋ ﻴ‪.‬ﺎ‪. . . .. .. .‬‬
‫ﺒﻴﺎﻧﺎ‪. .‬ت ‪. .‬‬ ‫ﺣ ﺴﺎ ب اﻟ‬
‫ً‬
‫‪. . . . . . . . . . . 329‬‬ ‫ﺒﻴﺎﻧﺎ ‪. .‬ت‪. . .. .. .‬‬
‫ﻧﻘﺎط اﻟ ‪. .‬‬
‫ﻣﻦ ‪. . .‬‬ ‫إزاﻟ ﺔ اﻟﻤﺨﻄﻄﺎ‪ . .‬ت ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . 330‬‬ ‫اﻟﻤﺨﺼﺼ ‪.‬ﺔ‪. . .. . ..‬‬
‫ﺗﺤﺪﻳﺪ اﻷﻟﻮان‪. . . . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . .330‬‬ ‫ﻷﻟﻮان‪. . .. . ..‬‬
‫ﻳﻄ ﺔ ‪.‬ا ‪. . .‬‬
‫ﺘﺨﺪام ﺧﺮ‪. .‬‬‫ﺑﺎﺳ‬
‫‪. . . . . . . . . . . . . 331‬‬
‫ﺋﻴﺎ‪. . .. . ..‬‬
‫ﺗﻠﻘﺎ ‪.‬‬
‫ﺑﻚ ‪. .‬‬
‫اﻟﺨﺎﺻ‪.‬ﺔ ‪. .‬‬
‫ﻷراﺿ ‪.‬ﻲ‪. . .‬‬
‫ﺣﻔﻆ ﻗﻄﻊ ا ‪. .‬‬
‫ﺒﺎ ت‪331 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪15-1:‬اﻟﻤﻜﻌ‬
‫اﻟ‬
‫ﺒﺎ ت اﻟﻤﻠﻮﻧ ﺔ‪331 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪15-2:‬اﻟﻤﻜﻌ‬
‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331‬‬
‫ﻳﻤﺸ ﻲ ﻋﺸﻮاﺋ‪. .‬ﻲ‪. . .. .. . .‬‬
‫‪. . . . . . . . . . . . . . . . RandomWalk‬‬
‫‪. . . . . . . . ().‬‬ ‫‪. .. . .332‬‬
‫إﻧﺸﺎء ﻓﺌ ﺔ ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332‬‬ ‫ﻫﺎ ‪ .‬ت‪. . . .. ..‬‬
‫ﺗﺠﺎ ‪.‬‬‫ﺘﻴﺎر اﻻ‬
‫اﺧ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 333‬‬
‫ﺋﻴ ‪.‬ﺔ‪. . .. .. .‬‬
‫ﻋﺸﻮا ‪.‬‬
‫ﺴﻴﺮة ‪. . .‬‬‫ﺘﺨﻄﻴﻂ ﻟﻤ ‪. .‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . 334‬‬
‫ﺘﻌﺪدة‪. . .. .. .‬‬
‫ﻋﺸﻮاﺋﻴ‪.‬ﺔ ‪.‬ﻣ‪. . .‬‬
‫ﺗﻮﻟﻴﺪ ﻣ ﺴﺎرا ‪.‬ت ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335‬‬ ‫اﻟﻤﻤﺸﻰ‪. . .. .. .‬‬
‫‪..‬‬ ‫ﺗﺼﻤﻴﻢ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335‬‬ ‫ﺗﻠﻮﻳﻦ اﻟﻨﻘﺎط‪. . .. . .. ..‬‬
‫‪. . . . . . . . . . . . 336‬‬
‫ﻳ ﺔ‪. . . . .. .. .‬‬
‫واﻟﻨﻬﺎ‪.‬‬
‫ﺒﺪاﻳ‪.‬ﺔ‪. . .‬‬‫ﺘ ﻲ ‪.‬اﻟ ‪.‬‬
‫رﺳﻢ ﻧﻘﻄ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . .337‬‬ ‫اﻟﻤﺤﺎور‪. . . .. .. .‬‬
‫‪..‬‬ ‫ﺗﻨﻈﻴﻒ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337‬‬
‫اﻟﻤﺆاﻣﺮة‪. . .. . ..‬‬
‫ﻣﻀﻴﻔﺎ ﻧﻘﺎط ‪. . . .‬‬
‫‪. . . . . . . . . . . . . . . . . 338‬‬
‫اﻟﺸﺎﺷ ‪.‬ﺔ‪. . .. .. .‬‬
‫ﻟﻤﻞء‪. . . .‬‬ ‫ﺗﻐﻴﻴﺮ اﻟﺤﺠﻢ ‪. .‬‬
‫ﺗﻤﺮﻳﻦ ‪15-3:‬اﻟﺤﺮﻛ ﺔ اﻟﺠﺰﻳﺌﻴ ﺔ‪339 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪15-4:‬اﻟﻤﺸ ﻲ اﻟﻌﺸﻮاﺋ ﻲ اﻟﻤﻌﺪل‪339 . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺑﻨﺎء دﻳﻮن‪339 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫ﺘﻤﺮﻳﻦ ‪15-5:‬إﻋﺎدة‬ ‫اﻟ‬
‫ﺑﻴﺠﺎل‪.‬‬‫اﻟﻨﺮد ‪. .‬‬
‫ﻣﻊ‬ ‫رﻣ ﻲ ‪. . .‬‬
‫‪.. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 339‬‬

‫ﺖ ‪Pygal.. .‬‬
‫ﺒﻴ ‪. .‬‬
‫ﺜ‪.‬‬
‫‪. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ﺗ‬ ‫‪. . 340‬‬

‫ﻣﻌﺮض ‪Pygal.‬‬‫‪.. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 340‬‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬إﻧﺸﺎء ﻓﺌ ﺔ اﻟﻘﻮاﻟ ﺐ‪. .‬‬ ‫‪. . 340‬‬

‫ﻳﻤﻮ ت‪. .‬‬‫دﺣﺮﺟ ‪.‬ﺔ ‪.‬‬


‫‪. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 341‬‬

‫ﺘﺎﺋﺞ‪.‬‬ ‫‪.. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬


‫ﺗﺤﻠﻴﻞ اﻟﻨ‬ ‫‪. . 341‬‬

‫ﺘﻔﺎﺻﻴﻞ ‪xxi‬‬
‫ﺘﻮﻳﺎ ت ﻓ ﻲ اﻟ‬
‫اﻟﻤﺤ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻴﺎﻧ ﻲ ‪342 ........................................‬‬ ‫ﻋﻤﻞ رﺳﻢ‬


‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343‬‬ ‫ﺗﻴﻦ‪. . .. .. .‬‬
‫رﻣ ﻲ ﻧﺮد‬
‫‪. . . . . . . . . . . . . . . . . . . . . 345‬‬ ‫ﺘﻠﻔ ‪.‬ﺔ‪. . .. . ..‬‬
‫ﻣﺨ ‪.‬‬
‫ﺑﺄﺣﺠﺎم ‪. .‬‬
‫‪..‬‬ ‫رﻣ ﻲ اﻟﻨﺮد‬
‫ﺘﻠﻘﺎﺋﻴ ﺔ‪346 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘ ﺴﻤﻴﺎ ت اﻟ‬ ‫ﺘﻤﺮﻳﻦ ‪15-6:‬اﻟ‬ ‫اﻟ‬
‫ﺛﻨﺎن ﻣﻦ ‪D8s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346‬‬
‫ﺗﻤﺮﻳﻦ ‪15-7:‬ا‬
‫ﺛﻼ ث ﻧﺮد‪346 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪15-8:‬‬
‫اﻟ‬

‫ﺘﻤﺮﻳﻦ ‪15-9:‬اﻟﻀﺮ ب‪346 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫اﻟ‬
‫ﺘﻴﻦ‪346 . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺒ‬‫ﺘ‬‫ﺘﺪر ب ﻋﲆ اﻟﻤﻜ‬
‫ﺘﻤﺮﻳﻦ ‪15-10:‬اﻟ‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 347‬‬

‫‪16‬‬
‫ﺒﻴﺎﻧﺎ ت‬
‫ﺗﻨﺰﻳﻞ اﻟ‬ ‫‪349‬‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺗﻨ ﺴﻴﻖ ﻣﻠﻒ ‪CSV.‬‬ ‫‪. . 350‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . .CSV.‬‬
‫‪. . . .. .350‬‬
‫ﻣﻠﻒ‪. .‬‬
‫ﺗﺤﻠﻴﻞ رؤوس‪. . .‬‬
‫‪. . . . . . . . . . . . . . .351‬‬
‫وﻣﻮاﻗﻌﻬﺎ‪. . . .. .‬‬
‫اﻟﺮؤوس‪. . . . .‬‬
‫‪.‬‬ ‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬
‫‪. . . . . . . . . . . . . . . . . . . . 352‬‬ ‫ﺗﻬﺎ‪. . . .. . .‬‬
‫وﻗﺮاء ‪. .‬‬
‫ﺒﻴﺎﻧﺎ‪ .‬ت ‪. . .‬‬
‫ﺘﺨﺮاج اﻟ ‪.‬‬ ‫اﺳ‬
‫‪. . . . . . . . . . 353‬‬
‫اﻟﺤﺮارة‪. . .. . ..‬‬
‫درﺟ ‪.‬ﺔ ‪. . .‬‬
‫ﻣﺨﻄﻂ ‪. .‬‬
‫ﺒﻴﺎﻧﺎ ت‪ .‬ﻓ‪ .‬ﻲ ‪. . . .‬‬‫رﺳﻢ اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354‬‬ ‫واﻟﻮﻗ‪. .‬ﺖ‪. . .. .. .‬‬
‫ﺘﺎرﻳﺦ ‪. .‬‬‫وﺣﺪة اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .355‬‬ ‫ﻳﺦ‪. . . .. .‬‬
‫ﺘﻮار ‪.‬‬
‫ﺘﺂﻣﺮ اﻟ‬
‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 356‬‬
‫أﻃﻮل‪. . .. .. . ..‬‬
‫رﺳﻢ إﻃﺎر زﻣﻨ‪ .‬ﻲ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . 357‬‬‫ﺛﺎﻧﻴ ‪.‬ﺔ‪. . .. . ..‬‬
‫ﺑﻴﺎﻧﺎ ‪. .‬ت ‪.‬‬
‫رﺳﻢﺳﻠ ﺴﻠ ﺔ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . 358‬‬
‫ﺒﻴﺎﻧ ‪ .‬ﻲ‪. . .. .. .‬‬
‫ﺳﻢ‪. .‬اﻟ ‪.‬‬
‫اﻟﺮ ‪.‬‬
‫ﺗﻈﻠﻴﻞ ﻣﻨﻄﻘ ﺔ‪. .‬ﻓ ﻲ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359‬‬
‫اﻟﺨﻄﺄ‪. . . .. . .. .‬‬
‫ﺘﺤﻘﻖ ﻣﻦ ‪. .‬‬
‫اﻟ‬
‫ﺗﻤﺮﻳﻦ ‪16-1:‬ﺳﺎن ﻓﺮاﻧ ﺴﻴ ﺴﻜﻮ‪362 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫ﺘﻤﺮﻳﻦ ‪16-2:‬ﻣﻘﺎرﻧ ﺔ ‪Sitka-Death Valley. . . . . . . . . . . . . . . . . . . . . . . 362‬‬ ‫اﻟ‬


‫ﺗﻤﺮﻳﻦ ‪ 16-3:‬ﻫﻄﻮل اﻷﻣﻄﺎر‪362 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫ﺘﻜﺸﺎف‪362 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ﺘﻤﺮﻳﻦ ‪16-4:‬اﻻﺳ‬ ‫اﻟ‬


‫‪. . . . . . . JSON.‬‬ ‫‪. . . . .. . 362‬‬‫ﺴﻴﻖ‪. . .‬‬‫ﺗﻨ ‪. .‬‬‫اﻟﻌﺎﻟﻤﻴ ‪.‬ﺔ‪. :‬‬
‫ﺒﻴﺎﻧﺎ ‪ .‬ت‪. . . .‬‬
‫ﻣﺠﻤﻮﻋﺎ‪ .‬ت ‪.‬اﻟ‪. .‬‬
‫‪.‬‬ ‫ﺗﻌﻴﻴﻦ‬
‫‪. . . . . . . . . . . . . 362‬‬ ‫اﻟﻌﺎﻟﻢ‪. . .. .. . .‬‬
‫ﺳﻜﺎن‪. . . .‬‬
‫ﺑﻴﺎﻧﺎ ت ‪. . .‬‬ ‫ﺗﻨﺰﻳﻞ‬
‫‪. . . . . . . . . . . . . . . . . . . . 363‬‬
‫اﻟﺼﻠ ‪.‬ﺔ‪. . .. .. . ..‬‬
‫ذا ‪.‬ت ‪. .‬‬
‫ﺒﻴﺎﻧﺎ‪ .‬ت ‪. .‬‬
‫ﺘﺨﺮاج اﻟ ‪.‬‬ ‫اﺳ‬
‫‪. . . . . . . . .364‬‬
‫ﻋﺪدﻳ‪.‬ﺔ‪. . . .. .. .‬‬
‫ﻗﻴﻢ‪. . .‬‬‫إﱃ ‪.‬‬
‫ﺳﻞ ‪. .‬‬‫ﺗﺤﻮﻳﻞ اﻟ ﺴﻼ ‪. .‬‬
‫‪. . . . . . .365‬‬
‫رﻗﻤﻴﻦ‪. . . .. ..‬‬
‫ﻣﻦ ‪. . .‬‬
‫اﻟﻤﻜﻮﻧ‪.‬ﺔ‪. .‬‬
‫ﺒﻠﺪان‪. . .‬‬
‫رﻣﻮز ‪.‬اﻟ ‪. .‬‬
‫اﻟﺤﺼﻮل ﻋﲆ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . 367‬‬ ‫اﻟﻌﺎﻟﻢ‪. . .. . .. ..‬‬
‫ﺑﻨﺎء ﺧﺮﻳﻄ ﺔ ‪. .‬‬
‫‪. . . . . 368‬‬
‫اﻟﻌﺎﻟﻢ‪. . .. .. .‬‬
‫ﻳﻄ ﺔ‪. . . .‬‬
‫ﺧﺮ ‪.‬‬
‫ﻋﲆ‪. .‬‬ ‫اﻟﺮﻗﻤﻴ ﺔ ‪. .‬‬
‫ﺒﻴﺎﻧﺎ ت‪. . . .‬‬ ‫رﺳﻢ اﻟ‬
‫‪. . . . . . . . . . . . . . . 369‬‬ ‫ﺴﻜﺎن‪. . . .. . .‬‬
‫ﻛﺎﻣﻠ ﺔ‪. .‬ﻟﻠ ‪. . .‬‬
‫رﺳﻢ ﺧﺮﻳﻄ ﺔ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . 371‬‬
‫ﺴﻜﺎن‪. . .. . ..‬‬
‫ﺴ ‪.‬ﺐ ‪.‬اﻟ ‪. . .‬‬ ‫ﺒﻠﺪان‪. .‬ﺣ ‪.‬‬
‫ﺗﺠﻤﻴﻊ اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . Pygal.‬‬
‫‪. . . . . .. 372‬‬
‫اﻟﻌﺎﻟﻢ ﻓ‪ .‬ﻲ‪. . .‬‬
‫ﺋﻂ ‪. . .‬‬‫ﺗﺼﻤﻴﻢ ﺧﺮا ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . 374‬‬ ‫اﻟﻤﻈﻬﺮ‪. . .. . .. .‬‬
‫ﺘﻴﺢ ﻟﻮن ‪. . .‬‬ ‫ﺗﻔ‬
‫ﺘﻤﺮﻳﻦ ‪16-5:‬ﻛﻞ اﻟﺪول‪375 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺗﺞ اﻟﻤﺤﻠ ﻲ اﻹﺟﻤﺎﻟ ﻲ‪375 . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺗﻤﺮﻳﻦ ‪16-6:‬اﻟﻨﺎ‬
‫ﺗﻚ اﻟﺨﺎﺻ ﺔ‪375 . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺑﻴﺎﻧﺎ‬‫ﺘﺮ‬
‫ﺘﻤﺮﻳﻦ ‪16-7:‬اﺧ‬
‫اﻟ‬

‫ﺒﺎر اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ ‪country_codes. . . . . . . . . . . . . . . . . . . . . 375‬‬


‫ﺘ‬‫ﺘﻤﺮﻳﻦ ‪16-8:‬اﺧ‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 375‬‬

‫‪17‬‬
‫ﺒﻴﻘﺎ ت‬
‫ﺘﻄ‬‫ﺑﺮﻣﺠ ﺔ اﻟ‬‫اﻟﻌﻤﻞ ﻣﻊ واﺟﻬﺎ ت‬ ‫‪377‬‬
‫‪. . . GitHub.‬‬
‫‪.Web‬و ‪. . . . ..‬‬
‫‪. . . API‬‬
‫‪. . Git‬‬
‫ﺘﺨﺪام ‪. .‬‬
‫ﺳ‪.. .‬‬
‫ﺑﺎ‪.‬‬
‫‪. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 378‬‬
‫‪. .. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 378‬‬

‫ﺘﺪﻋﺎء ‪API. .‬‬


‫ﺘﺨﺪام اﺳ‬ ‫ﺑﺎﺳ‬ ‫ﺒﻴﺎﻧﺎ ت‬ ‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻃﻠ ﺐ اﻟ‬ ‫‪. . 378‬‬
‫ﺒﺎ ‪.‬ت‪. . . . . .‬‬
‫اﻟﻄﻠ‪. .‬‬
‫ﺒﻴ ‪.‬ﺖ‪. .‬‬‫ﺜ‪.‬‬
‫‪. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ﺗ‬ ‫‪. . 379‬‬

‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬
‫ﺘﻮﻳﺎ ت ‪xxii‬‬
‫ﻣﺤ‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺔ ‪API. .‬‬ ‫ﺳ‪.‬‬


‫ﺘﺠﺎ‬‫ﻣﻌﺎﻟﺠ‪ .‬ﺔ ‪.‬ا ‪.‬‬
‫‪. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 379‬‬
‫ﺑ ﺔ‪. .‬‬‫ﺘﺠﺎ‬‫‪ . . . . . . . . . . . . . . . . . . . . . . . .‬اﻟﻌﻤﻞ ﻣﻊ ﻗﺎﻣﻮس اﻻﺳ‬ ‫‪. . 380‬‬
‫ﺘﻮدﻋﺎ ت‪.‬‬ ‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ﺗﻠﺨﻴﺺ أ ﻫﻢ اﻟﻤ ﺴ‬ ‫‪. . 382‬‬
‫ﺣﺪود ‪. .‬‬
‫ﻣﻌﺪل ‪API.‬‬ ‫ﺒ ‪.‬ﺔ ‪. . .‬‬
‫ﻣﺮاﻗ‪.‬‬
‫‪.. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 383‬‬
‫ﺘﺨﺪام ‪Pygal.‬‬‫ﺑﺎﺳ‬ ‫اﻟﻤ ‪.‬ﺴ‪. . .‬‬
‫ﺘﻮدﻋﺎ ت‬ ‫ﺗﺼﻮر‪. .‬‬
‫‪. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 384‬‬
‫اﻟﻤﺨﻄﻄﺎ‪ .‬ت‪. .‬اﻟ‬
‫ﺒﻴﺠﺎﻟﻴ ﺔ‪. .‬‬ ‫ﺗﻨﻘﻴﺢ‪. . . . .‬‬
‫‪. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 386‬‬
‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬
‫إﺿﺎﻓ ﺔﺗﻠﻤﻴﺤﺎ ت أدوا ت ﻣﺨﺼﺼ ﺔ‪.‬‬‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 387‬‬
‫ﺒﻴﺎﻧﺎ ‪ .‬ت‪. . . . . . . . ..‬‬
‫ﺳﻢ‪. .‬اﻟ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . .‬ر ‪.‬‬ ‫‪. . 388‬‬
‫ﺑﻨﺎ‪. .‬‬‫ﺒﻴﺎﻧ ﻲ اﻟﺨﺎص‬ ‫ﺑﻠ ﺔ ﻟﻠﻨﻘﺮ إﱃ اﻟﺮﺳﻢ اﻟ‬
‫ﺑﻂ ﻗﺎ‬‫‪ . . . . . . . . . . . . . . . . . . . . . . . .‬إﺿﺎﻓ ﺔ روا‬ ‫‪. . 390‬‬
‫ﺒﺎر اﻟﻘﺮﺻﻨ ﺔ‬
‫ت أﺧ‬ ‫ﺒﻴﻘﺎ‬ ‫ﺑﺮﻣﺠ ﺔﺗﻄ‬‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬واﺟﻬ ﺔ‬ ‫‪. . 390‬‬
‫ﺘﻤﺮﻳﻦ ‪17-1:‬ﻟﻐﺎ ت أﺧﺮى‪393 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪17-2:‬اﻟﻤﻨﺎﻗﺸﺎ ت اﻟﻨﺸﻄ ﺔ‪393 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺒﺎر ‪python_repos.py. . . . . . . . . . . . . . . . . . . . . . . . . . . . 393‬‬
‫ﺘ‬‫ﺘﻤﺮﻳﻦ ‪17-3:‬اﺧ‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 393‬‬

‫ﺒﻴﻘﺎ ت اﻟﻮﻳ ﺐ‬
‫ﺗﻄ‬‫اﻟﻤﺸﺮوع ‪3:‬‬

‫‪18‬‬
‫اﻟﺸﺮوع ﻓ ﻲ اﻟﻌﻤﻞ ﻣﻊ ‪Django‬‬ ‫‪397‬‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﻧﺸﺎء ﻣﺸﺮوع‪.‬‬ ‫‪. . 398‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .398‬‬
‫ت‪. . .. .. . .‬‬
‫اﻟﻤﻮاﺻﻔﺎ ‪. .‬‬
‫‪..‬‬ ‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﻛ‬
‫‪. . . . . . . . . . . . . . . . . . . . 398‬‬
‫ﺘﺮاﺿﻴ‪.‬ﺔ‪. . .. .. .. .‬‬
‫ﺑﻴﺌ ﺔ اﻓ ‪. . .‬‬ ‫ﺧﻠﻖ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . .Virtualenv.‬‬
‫ﺒﻴ ﺖ ‪. . . . . . .. .. .. 399‬‬
‫ﺜ‬‫ﺗ‬
‫‪. . . . . . . . . . . . . . . . . 399‬‬
‫ﺘﺮاﺿﻴ ‪.‬ﺔ‪. . .. .. .‬‬
‫اﻻﻓ ‪. . .‬‬
‫ﺒﻴﺌ ﺔ‪. . .‬‬‫ﺗﻔﻌﻴﻞ اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Django.‬‬
‫ﺒﻴ ﺖ ‪. . . . . .. .. 400‬‬‫ﺜ‬‫ﺗ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . .Django.‬‬
‫ﻣﺸﺮوع‪ .‬ﻓ ‪.‬ﻲ‪. . . . .‬‬‫‪.‬‬ ‫إﻧﺸﺎء‪. .‬‬
‫‪400‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . .401‬‬
‫ﺒﻴﺎﻧﺎ ‪.‬ت‪. . .. .. .. .‬‬
‫إﻧﺸﺎء ﻗﺎﻋﺪة‪.‬اﻟ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . 401‬‬
‫اﻟﻤﺸﺮوع‪. . . .. . .. .‬‬
‫ﻣﺸﺎ ﻫﺪة ‪. . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪18-1:‬اﻟﻤﺸﺮوﻋﺎ ت اﻟﺠﺪﻳﺪة‪402 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403‬‬ ‫ﺒﻴﻖ‪. . .. .. . ..‬‬
‫ﺘﻄ ‪. .‬‬
‫ﺑﺪءﺗﺸﻐﻴﻞ ‪.‬اﻟ ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .403‬‬
‫اﻟﻨﻤﺎذج‪. . .. .. .‬‬
‫‪..‬‬ ‫ﺗﺤﺪﻳﺪ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .404‬‬
‫اﻟﻨﻤﺎذج‪. . .. .. .‬‬
‫‪..‬‬ ‫ﺗﻔﻌﻴﻞ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . Django.‬‬
‫‪. . . . . .. .. 406‬‬
‫ﻣﻮﻗﻊ إدارة ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . .408‬‬ ‫اﻟﺪﺧﻮل‪. . .. . .. ..‬‬
‫ﻧﻤﻮذج ‪. . . .‬‬
‫‪.‬‬ ‫ﺗﺤﺪﻳﺪ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . 409‬‬ ‫اﻹدﺧﺎل‪. . . . .. .‬‬
‫ﻧﻤﻮذج‪. . . . .‬‬
‫‪.‬‬ ‫ﺗﺮﺣﻴﻞ‬
‫‪. . . . . . . . . . . 409‬‬
‫اﻹدارة‪. . .. .. .‬‬
‫ﻣﻮﻗﻊ‪. . . .‬‬‫اﻟﺪﺧﻮل ‪.‬ﻓ‪ .‬ﻲ ‪. . .‬‬
‫‪..‬‬ ‫ﺗ ﺴﺠﻴﻞ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410‬‬ ‫ﺷﻞ ﺟﺎﻧﻐﻮ‪. . .. .. .‬‬
‫ﺗﻤﺮﻳﻦ ‪18-2:‬إدﺧﺎﻻ ت ﻗﺼﻴﺮة‪412 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪. . . . . . . .Django‬‬
‫‪. . . . . .412‬‬
‫ﺒﻴﻘﺎ‪. .‬ت‪. . .‬‬
‫ﺗﻄ‪. .‬‬
‫ﺑﺮﻣﺠ‪.‬ﺔ‪. .‬‬
‫واﺟﻬ‪.‬ﺔ‪. . .‬‬
‫‪. . .18-3:‬‬
‫ﺘﻤﺮﻳﻦ ‪. . .‬‬
‫اﻟ‬
‫ﺘﺰا‪412 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺑﻴ‬‫ﺗﻤﺮﻳﻦ ‪18-4:‬‬
‫‪. . . 412‬‬
‫ﺘﻌﻠﻢ‪. . . .‬‬
‫ﺴﺠﻞ‪ .‬اﻟ‪. . .‬‬
‫ﺴﻴ ‪.‬ﺔ ﻟ‪. . .‬‬
‫ﺋﻴ‪. .‬‬
‫اﻟﺼﻔﺤ ‪.‬ﺔ ‪.‬اﻟﺮ‪.‬‬
‫اﻟﺼﻔﺤﺎ ‪.‬ت‪. . . .:‬‬
‫ﺗﻜﻮﻳﻦ ‪. . . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .URL.‬‬ ‫‪. . . .. . 413‬‬
‫ﻋﻨﻮان ‪. . .‬‬
‫‪.‬‬ ‫ﺗﻌﻴﻴﻦ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414‬‬
‫ﻧﻈﺮ‪. . .. ..‬‬
‫وﺟﻬ‪.‬ﺔ ‪. .‬‬
‫ﺑﺔ ‪.‬‬
‫ﺘﺎ‬
‫ﻛ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415‬‬ ‫ﺑ ﺔ ﻗﺎﻟ ﺐ‪. . .. .. .. .‬‬
‫ﺘﺎ‬
‫ﻛ‬
‫ﺒﺎ ت‪416 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪18-5:‬ﻣﺨﻄﻂ اﻟﻮﺟ‬ ‫اﻟ‬
‫ﺘﺰا‪416 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺑﻴ‬‫ﺋﻴ ﺴﻴ ﺔ ﻟﻤﻄﻌﻢ‬
‫ﺘﻤﺮﻳﻦ ‪18-6:‬اﻟﺼﻔﺤ ﺔ اﻟﺮ‬ ‫اﻟ‬
‫ﺑﻨﺎء ‪. . .‬‬
‫ﺻﻔﺤﺎ ت إﺿﺎﻓﻴ ﺔ‪.‬‬ ‫‪.. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 416‬‬
‫ﺛ ﺔ اﻟﻨﻤﻮذج‪.‬‬ ‫‪.. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ورا‬ ‫‪. . 416‬‬
‫ﺻﻔﺤ‪.‬ﺔ ‪.‬اﻟﻤﻮاﺿﻴﻊ‪.‬‬
‫‪. .. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 418‬‬
‫ﺻﻔﺤﺎ ت اﻟﻤﻮﺿﻮع اﻟﻔﺮدﻳ ﺔ‪. .‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪.‬‬ ‫‪421‬‬

‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬‫ﺘﻮﻳﺎ ت‬
‫اﻟﻤﺤ‬ ‫ﺜﺎﻟ ﺚ واﻟﻌﺸﺮون‬
‫اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺛﻴﻖ اﻟﻨﻤﻮذج‪424 . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫ﺗﻮ‬‫ﺘﻤﺮﻳﻦ ‪18-7:‬‬
‫اﻟ‬
‫ﺘﺰا‪424 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺒﻴ‬‫ﺘﻤﺮﻳﻦ ‪ 18-8:‬ﺻﻔﺤﺎ ت اﻟ‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 425‬‬

‫‪19‬‬
‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺑﺎ ت اﻟﻤ ﺴ‬
‫ﺣ ﺴﺎ‬ ‫‪427‬‬
‫‪. . . . . . . . . . . . . . . . 428‬‬
‫ﺒﻴﺎﻧﺎ ‪ .‬ت‪. . . .. . .. ..‬‬
‫ﺑﺈدﺧﺎل اﻟ‪. . .‬‬
‫ﺘﺨﺪﻣﻴﻦ‪. . . . .‬‬
‫ﺴ ‪. . ..‬‬
‫ﻟﻠﻤ‪. .‬‬ ‫اﻟ ﺴﻤﺎح‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . .428‬‬
‫ﻳﺪة‪. . .. . ..‬‬
‫ﻣﻮاﺿﻴﻊ‪ .‬ﺟﺪ‪. .‬‬
‫‪.‬‬ ‫إﺿﺎﻓ ﺔ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . .432‬‬
‫ﻳﺪة‪. . .. . ..‬‬
‫ﺟﺪ ‪.‬‬
‫إﺿﺎﻓ ﺔ إدﺧﺎﻻ ‪ .‬ت‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .435‬‬
‫ﺗﺤﺮﻳﺮ اﻹدﺧﺎﻻ ‪. .‬ت‪. .. .. .‬‬

‫ﺘﻤﺮﻳﻦ ‪19-1:‬ﻣﺪوﻧ ﺔ‪438 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬


‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439‬‬ ‫ﺘﺨﺪﻣﻴﻦ‪. . . .. ..‬‬
‫ﺴ ‪.. .‬‬ ‫ﺑﺎ ‪.‬ت ‪.‬اﻟﻤ‪. .‬‬
‫إﻋﺪاد ﺣ ﺴﺎ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .439‬‬ ‫ﺘﺨﺪﻣﻴﻦ‪. . .. . ..‬‬
‫ﺒﻴﻖ اﻟﻤ ﺴ ‪. . . .‬‬
‫ﺗﻄ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . 440‬‬
‫اﻟﺪﺧﻮل‪. . . . .. .. .‬‬
‫ﺴﺠﻴﻞ ‪. . . . .‬‬
‫‪..‬‬ ‫ﺻﻔﺤ ﺔﺗ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442‬‬
‫اﻟﺨﺮوج‪. . .. . .‬‬
‫ﺗ ﺴﺠﻴﻞ ‪. . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . .443‬‬
‫ﺴﺠﻴﻞ‪. . . .. .. .‬‬
‫‪..‬‬ ‫ﺘ‬‫ﺻﻔﺤ ﺔ اﻟ‬
‫ﺑﺎ ت اﻟﻤﺪوﻧﺎ ت‪446 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬‫ﺘﻤﺮﻳﻦ ‪19-2:‬ﺣ ﺴﺎ‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . .446‬‬ ‫ﺗﻬﻢ‪. . .. . ...‬‬
‫ﺑﻴﺎﻧﺎ‪. .‬‬
‫ﺘﻼك ‪. .‬‬
‫ﺑﺎﻣ ‪. .‬‬
‫ﺘﺨﺪﻣﻴﻦ ‪. .‬‬
‫اﻟ ﺴﻤﺎح ﻟﻠﻤ ﺴ‪. . . .‬‬
‫‪. . . . . . .447‬‬
‫ﺘﺨﺪام‪. . . .. .deriuqer_nigol‬‬
‫ﺑﺎﺳ‪. . . . . . . . . . . .‬‬ ‫ﺗﻘﻴﻴﺪ اﻟﻮﺻﻮل‪. .‬‬
‫‪. . . . . . . . . . . . . . .448‬‬ ‫ﺘﺨﺪﻣﻴﻦ‪. . . .. .‬‬
‫ﺴ‪. . . .‬‬
‫اﻟﻤ ‪.‬‬
‫ﺒﻌﺾ‪. .‬‬
‫ﺑ‪. . .‬‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺑﻂ اﻟ‬
‫ر‬
‫ﺒﻴﻦ‪451 . . . .‬‬ ‫اﻟﻤ ‪.‬ﺴ ‪.‬‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﻨﺎﺳ‬ ‫ﻋﲆ ‪. .‬‬
‫اﻟﻤﻮﺿﻮﻋﺎ ‪ .‬ت ‪. . .‬‬
‫إﱃ ‪. . . . . .‬‬
‫اﻟﻮﺻﻮل ‪. .‬‬
‫‪..‬‬ ‫ﺗﻘﻴﻴﺪ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . 451‬‬
‫ﺘﺨﺪم‪. . .. . ..‬‬
‫ﺴ ‪. .‬‬
‫ﻣﻮاﺿﻴﻊ ‪.‬اﻟﻤ‪. .‬‬
‫‪.‬‬ ‫ﺣﻤﺎﻳ ﺔ‬
‫‪. . . . . . . . . . . . . . . . . . . . .edit_entry.‬‬
‫‪. . . . . . . .. .452‬‬‫ﺣﻤﺎﻳ ﺔ ﺻﻔﺤ ﺔ ‪. .‬‬
‫‪. 453‬‬
‫اﻟﺤﺎﻟ‪. .‬ﻲ‪. . .. .. . .‬‬
‫ﺘﺨﺪم ‪. .‬‬
‫ﺑﺎﻟﻤ‪. .‬ﺴ ‪. .‬‬
‫ﻳﺪة ‪.‬‬
‫إﻗﺮان ﻣﻮاﺿﻴﻊ‪. .‬ﺟﺪ ‪. .‬‬

‫ﺒﻨﺎء‪454 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪19-3:‬إﻋﺎدة اﻟ‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪19-4:‬ﺣﻤﺎﻳ ﺔ اﻟﻤﺪﺧﻞ اﻟﺠﺪﻳﺪ‪454 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪19-5:‬ﻣﺪوﻧ ﺔ ﻣﺤﻤﻴ ﺔ‪454 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 454‬‬

‫‪20‬‬
‫ﺒﻴﻖ وﻧﺸﺮه‬
‫ﺘﻄ‬‫ﺗﺼﻤﻴﻢ اﻟ‬ ‫‪455‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .456‬‬ ‫ﺘﺼﻤﻴﻢ‪. . ... .‬‬
‫ﺳﺠﻞﺗﻌﻠﻢ اﻟ ‪. . . .‬‬
‫‪. . . . . . . . . . . . . . . . . . django-‬‬
‫‪. . . . bootstrap3.‬‬
‫ﺒﻴﻖ ‪. . . . . . . . .. .. 456‬‬‫ﺘﻄ‬
‫اﻟ‬
‫‪. . . . . .457‬‬
‫ﺘﻌﻠﻢ‪. .. .. . ..‬‬
‫ﺳﺠﻞ ‪.‬اﻟ ‪. .‬‬
‫ﺳﻠﻮ ‪.‬ب‪. . .‬‬
‫ﻷ‪..‬‬ ‫‪. Bootstrap‬‬
‫‪.. ..‬‬ ‫ﺘﺨﺪام‬‫اﺳ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . base.html.‬‬
‫ﺗﻌﺪﻳﻞ ‪. . . . . . .. . 458‬‬
‫‪. .Jumbotron.‬‬
‫‪. . . . . . .. . 461‬‬
‫ﺘﺨﺪام‪. . .‬‬
‫ﺑﺎﺳ‪. . .‬‬
‫ﺴﻴ ﺔ‪. .‬‬
‫ﺋﻴ ‪.‬‬
‫اﻟﺮ ‪.‬‬
‫اﻟﺼﻔﺤ ‪.‬ﺔ ‪.‬‬
‫‪.‬‬ ‫ﺗﺼﻤﻴﻢ‬
‫‪. . . . . . . . . . . . . . . . . . .461‬‬
‫اﻟﺪﺧﻮل‪. . . . .. .. .‬‬
‫ﺴﺠﻴﻞ ‪. . . .‬‬
‫ﺗ‪. . . .‬‬ ‫ﺻﻔﺤ ﺔ ‪.‬‬
‫‪..‬‬ ‫ﺗﺼﻤﻴﻢ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . new_topic.‬‬
‫‪. . . . . . .. . .463‬‬
‫ﺗﺼﻤﻴﻢ ﺻﻔﺤ ‪.‬ﺔ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . .463‬‬ ‫اﻟﻤﻮاﺿﻴﻊ‪. . . .. .‬‬
‫ﺗﺼﻤﻴﻢ ﺻﻔﺤ ‪.‬ﺔ ‪. . . . .‬‬
‫‪. . . . . . . . . . 464‬‬
‫اﻟﻤﻮﺿﻮع‪. . .. . ..‬‬
‫ﺻﻔﺤ ﺔ‪. . . . .‬‬
‫اﻹدﺧﺎﻻ‪ .‬ت‪.‬ﻓ‪ .‬ﻲ ‪. . .‬‬
‫‪.‬‬ ‫ﺗﺼﻤﻴﻢ‬
‫ﺘﻤﺮﻳﻦ ‪20-1:‬أﺷﻜﺎل أﺧﺮى‪466 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫اﻟ‬

‫ﺘﻤﺮﻳﻦ ‪20-2:‬ﻣﺪوﻧ ﺔ أﻧﻴﻘ ﺔ‪466 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫اﻟ‬


‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻧﺸﺮﺳﺠﻞ اﻟ‬
‫ﺘﻌﻠﻢ‪. .‬‬ ‫‪. . 466‬‬
‫‪. . . . . . . Heroku.‬‬
‫إﻧﺸﺎء ‪.‬ﺣ ‪.‬ﺴﺎ ‪. .‬ب ‪. . . .‬‬
‫‪. .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 466‬‬
‫‪. . .Heroku.‬‬
‫ﺣﺰام‪. .‬أدوا‪ . .‬ت ‪. . . .‬‬
‫ﺒﻴ ‪.‬ﺖ ‪. .‬‬
‫ﺜ‪.‬‬
‫‪. .. .. .. .. .. . .. ..‬‬
‫ﺗ‬ ‫‪. . 466‬‬
‫ﺑ ‪.‬ﺔ‪. . . . . .‬‬
‫اﻟﻤﻄﻠﻮ‪.‬‬
‫اﻟﺤﺰم‪. . .‬‬
‫ﺗﺮﻛﻴ ‪.‬ﺐ‪. . .‬‬‫‪.. .. .. .. .. .. . .. ..‬‬ ‫‪. . 466‬‬

‫‪ . . . . . . . . . . . . . . .‬إﻧﺸﺎء ﻗﺎﺋﻤ ﺔ اﻟﺤﺰم ﻣﻊ ﻣﻠﻒ ‪requirements.txt.‬‬ ‫‪. . 467‬‬


‫ﺗﺸﻐﻴﻞ‪. . . .. .‬‬
‫‪Python.‬‬ ‫ﺖ‪. . .‬‬
‫وﻗ ‪.‬‬
‫ﻳﺪ ‪. .‬‬
‫ﺗﺤﺪ ‪.‬‬
‫‪.. .. .. .. .. .. . .. ..‬‬ ‫‪. . 468‬‬

‫‪Heroku.‬‬‫‪. settings.py‬ﻟـ ‪. .‬‬


‫ﻳﻞ ‪. . . . . . .‬‬
‫ﺗﻌﺪ ‪.‬‬
‫‪.. .. .. .. .. .. . .. ..‬‬ ‫‪. . 468‬‬

‫ﺒﺪء اﻟﻌﻤﻠﻴﺎ ت‪.‬‬‫‪.Procfile‬ﻟ‬


‫ﻣﻠﻒ‪. . . . .‬‬
‫إﻧﺸﺎء ‪. .‬‬
‫‪. .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 469‬‬
‫‪.wsgi.py‬ﻟـ ‪. . . . . .‬‬
‫‪Heroku.‬‬ ‫ﻳﻞ ‪. . . . .‬‬
‫ﺗﻌﺪ ‪.‬‬
‫‪.. .. .. .. .. .. . .. ..‬‬ ‫‪. . 470‬‬

‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬
‫ﺘﻮﻳﺎ ت ‪xxiv‬‬
‫ﻣﺤ‬
‫‪Machine Translated by Google‬‬

‫‪.. .. .. .. ..‬‬ ‫‪. . . . . . . 470‬‬ ‫ﺘ ‪.‬ﺔ‪. . .. .. .‬‬ ‫ﺑ‪.‬‬‫ﻟﻠﻤﻠﻔﺎ ‪. .‬ت اﻟ ‪.‬‬


‫ﺜﺎ‬ ‫ﻋﻤﻞ دﻟﻴﻞ ‪. .‬‬
‫‪.. .. .. .. ..‬‬ ‫‪. . . . .470‬‬‫ﻣﺤﻠ ﻴ ‪.‬ﺎ‪. . . .. .‬‬
‫‪. . Gunicorn‬‬
‫ﺧﺎدم ‪. . . . . .‬‬ ‫‪.‬‬ ‫ﺘﺨﺪام‬
‫اﺳ‬
‫ً‬
‫‪.. .. .. ..‬‬ ‫‪. . . 471‬‬
‫اﻟﻤﺸﺮوع‪. . .. .. .‬‬
‫ﻣﻠﻔﺎ ‪. .‬ت ‪. . . .‬‬ ‫ﺒﻊ ‪. .‬‬ ‫ﺘ ‪.‬‬ ‫ﺘ‪.‬‬‫ﺘﺨﺪام ‪Git‬ﻟ‪.‬‬
‫اﺳ‬
‫‪.. .. .. .. .. . .. .. .. .. ..‬‬ ‫‪. . . . . . . . . . . Heroku.‬‬ ‫دﻓﻊ إﱃ ‪. . . . . .. .. 473‬‬
‫‪.. .. .. ..‬‬ ‫‪. . .Heroku.‬‬
‫‪. . . . .. .. . 474‬‬
‫ﻋﲆ‪. . .‬‬
‫ﺒﻴﺎﻧﺎ‪ . .‬ت ‪. .‬‬
‫إﻧﺸﺎء ﻗﺎﻋﺪة ‪.‬اﻟ ‪.‬‬
‫‪. .. .. .. .. ..‬‬ ‫‪. . . . . . . . . Heroku.‬‬
‫‪. . . . . . .. .475‬‬ ‫ﺘﺸﺎر ‪. .‬‬
‫ﺗﻨﻘﻴ ﺔ اﻧ‬
‫‪.. .. . .. .. .. .. ..‬‬ ‫‪. . . . . . . . . 476‬‬
‫اﻟﺤ‪ .‬ﻲ‪. . .. .. .. .‬‬
‫اﻟﻤﺸﺮوع‪. .‬‬
‫‪.‬‬ ‫ﺗﺄﻣﻴﻦ‬
‫‪.. .. .. .. ..‬‬ ‫‪. . . . . . . . .477‬‬
‫ودﻓﻌﻬﺎ‪. . . .. ..‬‬
‫ﺘﻐﻴﻴﺮا‪. .‬ت ‪. . .‬‬
‫ﺗﻨﻔﻴﺬ اﻟ‬
‫‪.. . .. .. .. .. ..‬‬ ‫ﺔ‪. . . . . . . . . .‬‬
‫ﻣﺨﺼﺼ‪. .‬‬
‫ﺧﻄﺄ ‪. . .‬‬‫إﻧﺸﺎء‪. .‬ﺻﻔﺤﺎ ‪ .‬ت‪. . .‬‬
‫‪478‬‬
‫‪.. .. .. . .. .. .. .. ..‬‬ ‫‪. . . . . . . . . . . 480‬‬
‫ﺘﻤﺮ ‪. . .. . .. ..‬‬
‫ﺘﻄﻮﻳﺮ اﻟﻤ ﺴ ‪. .‬‬‫اﻟ‬
‫‪.. .. . .. .. .. .. ..‬‬ ‫‪. . . . . . . . . SECRET_KEY.‬‬
‫إﻋﺪاد ‪. . . . . . . .. .. . 481‬‬
‫‪.. . .. .. .. .. ..‬‬ ‫‪. . . . . . .Heroku.‬‬
‫‪. . . . .. .. 481‬‬
‫ﻋﲆ ‪. .‬‬
‫ﺣﺬف ﻣﺸﺮوع‪. . .‬‬

‫ﺒﺎﺷﺮة‪482 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪20-3:‬ﻣﺪوﻧ ﺔ ﻣ‬
‫اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪20-4:‬اﻟﻤﺰﻳﺪ ﻣﻦ ‪404. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482‬‬‫اﻟ‬
‫ﺘﻌﻠﻢ اﻟﻤﻮﺳﻊ‪482 . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ﺘﻤﺮﻳﻦ ‪20-5:‬ﺳﺠﻞ اﻟ‬ ‫اﻟ‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻣﻠﺨﺺ ‪.‬‬ ‫‪. . 482‬‬

‫ﺗﻤ ﺔ‬
‫ﺧﺎ‬ ‫‪483‬‬

‫أ‬
‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﺒﻴ ﺖ‬
‫ﺜ‬‫ﺗ‬ ‫‪485‬‬
‫ﺲ‪. . . .. .‬‬
‫ﻟﻴﻨﻜ ‪. .‬‬
‫ﻋﲆ ‪. . .‬‬‫ﺜﻮن ‪. .‬‬
‫ﻳ ‪..‬‬
‫ﺑﺎ‪.‬‬
‫‪. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 485‬‬

‫ﺘ ﺔ‪. .‬‬
‫ﺒ‬‫ﺜ‬‫ﺒﺤ ﺚ ﻋﻦ اﻟﻨ ﺴﺨ ﺔ اﻟﻤ‬ ‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﻟ‬ ‫‪. . 486‬‬

‫ﺒﻴ ﺖ ‪Python 3‬ﻋﲆ ‪Linux. .‬‬ ‫ﺜ‬‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺗ‬ ‫‪. . 486‬‬


‫‪. . . . . . . OS‬‬
‫‪. Python‬ﻋﲆ‪. . X. .‬‬
‫‪. .. .. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 486‬‬

‫ﺘ ﺔ‪. .‬‬
‫ﺒ‬‫ﺜ‬‫ﺒﺤ ‪.‬ﺚ‪. .‬ﻋﻦ اﻟﻨ ﺴﺨ ﺔ اﻟﻤ‬ ‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﻟ ‪.‬‬ ‫‪. . 486‬‬

‫ﺒﻴ ﺖ ‪Python 3.‬‬ ‫ﺜ‬‫ﺘ‬‫ﺘﺨﺪام ‪Homebrew‬ﻟ‬ ‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . .‬اﺳ‬ ‫‪. . 487‬‬


‫‪. . .Windows.‬‬
‫ﺘﺸﻐﻴﻞ ‪. . . .‬‬
‫ﻧﻈﺎم ‪.‬اﻟ ‪. . .‬‬
‫‪. Python‬ﻋﲆ ‪. .‬‬
‫‪. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 488‬‬

‫ﺒﻴ ‪.‬ﺖ ‪Python 3‬ﻋﲆ ﻧﻈﺎم ‪Windows.‬‬


‫ﺜ‪.‬‬
‫‪. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ﺗ‬ ‫‪. . 488‬‬

‫ﺜﻮن‪.‬‬‫ﺑﺎﻳ‬‫ﺘﺮﺟﻢ‬
‫ﻋﲆ ﻣ‬‫ﺜﻮر ‪. .‬‬
‫اﻟﻌ ‪.‬‬
‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 488‬‬

‫ﺑﻚ‪.‬‬‫ﺘﻐﻴﺮ اﻟﻤ ﺴﺎر اﻟﺨﺎص‬‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . .‬إﺿﺎﻓ ﺔ ‪Python‬إﱃ ﻣ‬ ‫‪. . 489‬‬

‫ﺜﻮن واﻟﻮﻇﺎﺋﻒ اﻟﻤﻀﻤﻨ ﺔ‪.‬‬ ‫ﻛﻠﻤﺎ ‪ .‬ت‪. .‬‬


‫ﺑﺎﻳ‬ ‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 489‬‬
‫ﺜﻮن‪. . . . . . .‬‬
‫ﺑﺎﻳ ‪. .‬‬
‫ﻛﻠﻤﺎ ‪ .‬ت‪. .‬‬
‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 489‬‬
‫ﺜﻮن ‪. .‬‬
‫اﻟﻤﻀﻤﻨ ﺔ‪.‬‬ ‫ﺑﺎﻳ ‪. .‬‬
‫ﺋﻒ ‪.‬‬
‫وﻇﺎ ‪. .‬‬
‫‪.. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 490‬‬

‫ب‬
‫ﻣﺤﺮري اﻟﻨﺼﻮص‬ ‫‪491‬‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺟﻨ ﻲ ‪.‬‬ ‫‪. . 492‬‬
‫ﺒﻴ ‪.‬ﺖ‪. . . .‬‬
‫‪Geany‬ﻋﲆ ﻟﻴﻨﻜ ﺲ‪. .‬‬ ‫ﺜ‪.‬‬
‫‪. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ﺗ‬ ‫‪. . 492‬‬

‫ﺒﻴ ‪.‬ﺖ‪Geany. .‬ﻋﲆ اﻟﻮﻳﻨﺪوز‪.‬‬


‫ﺜ‪.‬‬
‫‪. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ﺗ‬ ‫‪. . 492‬‬

‫ﺑﺮاﻣﺞ ‪Python‬ﻓ ﻲ ‪Geany. .‬‬ ‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﺗﺸﻐﻴﻞ‬ ‫‪. . 493‬‬


‫‪.. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ﺗﺨﺼﻴﺺ إﻋﺪادا ت ‪Geany. .‬‬ ‫‪. . 493‬‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻧﺺﺳﺎﻣ ﻲ‪. .‬‬ ‫‪. . 494‬‬

‫ﺒﻴ ﺖ ‪Sublime Text‬ﻋﲆ‬


‫ﺜ‬‫ﺗ‬ ‫‪. .Text‬‬
‫‪Sublime‬ﻋﲆ ‪OS X‬‬ ‫ﺖ ‪..‬‬‫ﺒﻴ ‪. .‬‬
‫ﺜ‪.‬‬
‫ﺗ‬‫‪. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 494‬‬
‫‪. . .Linux.‬‬
‫‪. . . .. . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫‪. . 494‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪Sublime Text‬ﻋﲆ اﻟﻮﻳﻨﺪوز‪.‬‬ ‫ﺒﻴ ‪. .‬‬


‫ﺖ‬ ‫ﺜ‪.‬‬
‫‪. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ﺗ‬ ‫‪. . 495‬‬

‫ﺑﺮاﻣﺞ ‪Python‬ﻓ ﻲ ﻧﺺ ‪Sublime. .‬‬‫‪ . . . . . . . . . . . . . . . . . . . . . .‬ﺗﺸﻐﻴﻞ‬ ‫‪. . 495‬‬


‫ﺳﺎﻣﻴ‪ .‬ﺔ‪. .. .‬‬
‫ﻧﺺ ‪. .‬‬
‫ﻳﻦ‪. . .‬‬
‫ﺗﻜﻮ ‪.‬‬
‫‪.. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 495‬‬

‫ﺗﺨﺼﻴﺺ ‪.‬إﻋﺪادا ت ﻧﺺﺳﺎﻣﻴ ﺔ‪.‬‬


‫‪. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 496‬‬

‫ﺘﻔﺼﻴﻞ‬
‫ﺘﻮﻳﺎ ت ﻓ ﻲ اﻟﺨﺎﻣ ﺲ واﻟﻌﺸﺮون ﻣﻦ اﻟ‬
‫اﻟﻤﺤ‬
‫‪Machine Translated by Google‬‬

‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬ﻋﺎﻃﻞ‬ ‫‪. . 496‬‬

‫‪IDLE‬ﻋﲆ ﻟﻴﻨﻜ ﺲ‪. .‬‬ ‫ﺖ‬‫ﺒﻴ ‪. .‬‬


‫ﺜ‪.‬‬
‫‪. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ﺗ‬ ‫‪. . 496‬‬

‫ﺒﻴ ﺖ ‪IDLE‬ﻋﲆ‬ ‫ﺜ‬‫ﺗ‬


‫‪IDLE‬ﻋﲆ ‪OS X‬‬ ‫‪.‬‬ ‫ﺒﻴ ‪.‬ﺖ‪.‬‬‫ﺜ‪.‬‬
‫‪. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬
‫ﺗ‬ ‫‪. . 496‬‬

‫‪Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫‪. . 497‬‬

‫ﺗﺨﺼﻴﺺ إﻋﺪادا ت ‪IDLE.‬‬ ‫‪.. .. . .. .. .. .. .. . .. .. .. .. .. .. . .. ..‬‬ ‫‪. . 497‬‬


‫وﻓﻴﻢ‪. . . . . . . ...‬‬
‫ﻳﻤﺎﻛ‪. .‬ﺲ ‪. . .‬‬
‫‪ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬إ‪. .‬‬ ‫‪. . 497‬‬

‫ج‬
‫اﻟﺤﺼﻮل ﻋﲆ ﻣ ﺴﺎﻋﺪة‬ ‫‪499‬‬

‫اﻟﺨﻄﻮا ت اﻷوﱃ‪499 ...... ................................................‬‬


‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500‬‬ ‫أﺧﺮى ‪. . . . .. .. .‬‬
‫ﺣﺎول ﻣﺮة ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500‬‬
‫ﺘﺮاﺣ ﺔ‪. . . . .‬‬
‫ﺧﺬ اﺳ‬
‫‪. . . . . . . . . . . . . . . . .500‬‬
‫ﺘﺎ‪. .‬ب‪. . .. . .. .‬‬
‫ﺬا ‪.‬اﻟﻜ‪.‬‬
‫ﻣﻮارد ‪.‬ﻫ‪.‬‬
‫اﻟﺮﺟﻮع إﱃ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .501‬‬
‫ﺖ‪. . . .. .‬‬
‫ﺘﺮﻧ ‪. .‬‬
‫اﻹﻧ ‪.‬‬
‫ﺒﺮ ‪.‬‬‫ﺒﺤ ﺚ ﻋ‬
‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .501‬‬
‫ﺋﺾ‪. . . . . .‬‬ ‫ﻣﻜﺪس اﻟﻔﺎ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . 501‬‬
‫ﺳﻤ ﻲ‪. . .. .. . ..‬‬
‫اﻟﺮ ‪. .‬‬
‫ﺜﻮن ‪. .‬‬
‫ﺑﺎﻳ‬‫ﺛﻴﻖ‬
‫ﺗﻮ‬
‫‪. . . . . . . . . . . . . . . . . . .502‬‬
‫ﺔ‪. . .. . .. .‬‬
‫ﺒ‪.‬‬‫ﺘ‪.‬‬ ‫ﺳﻤ ‪.‬ﻲ ‪. .‬‬
‫ﻟﻠﻤﻜ‬ ‫ﺛﻴﻖ اﻟﺮ ‪.‬‬
‫ﺘﻮ‬‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . learnpython.‬‬
‫ص ‪. . . . . . . . . .. .. 502 /‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502‬‬
‫اﻟﻤﺪوﻧ ﺔ‪. . .. .. ..‬‬
‫ﻣﺸﺎرﻛﺎ ت ‪. . . .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . IRC‬‬
‫‪. . (Internet‬‬
‫‪. . . . . .Relay‬‬
‫‪. . . Chat).‬‬
‫‪..‬‬ ‫‪. . . 502‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . .IRC.‬‬
‫‪. . . .. .. 502‬‬
‫ﺴﺎ‪ .‬ب‪. . .‬‬
‫ﺑﺈﻧﺸﺎء ﺣ ‪.‬‬‫ﻗﻢ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503‬‬
‫ﻟﻼﻧﻀﻤﺎم‪. . .. .. .‬‬
‫‪..‬‬ ‫ﻗﻨﻮا ت‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .IRC.‬‬
‫ﺛﻘﺎﻓ ﺔ ‪. . .. . 503‬‬

‫د‬
‫ﺘﺤﻜﻢ ﻓ ﻲ اﻹﺻﺪار‬
‫ﺘﺨﺪام ‪Git‬ﻟﻠ‬
‫اﺳ‬ ‫‪505‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Git.‬‬ ‫ﺒﻴ ﺖ ‪. . ..... 506‬‬
‫ﺜ‬‫ﺗ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . .Linux.‬‬
‫‪. . . .. . .. 506‬‬
‫ﻋﲆ ‪. .‬‬
‫ﺒﻴ ﺖ ‪. . Git‬‬‫ﺜ‬‫ﺗ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . OS‬‬
‫‪. . X.‬‬ ‫‪. .. 506‬‬
‫ﻋﲆ ‪. .‬‬
‫ﺒﻴ ﺖ ‪. . Git‬‬ ‫ﺜ‬‫ﺗ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . .506‬‬
‫ﻳﻨﺪوز‪. . . .. .‬‬
‫اﻟﻮ‪. . .‬‬‫ﻋﲆ ‪.‬‬
‫ﺒﻴ ﺖ ‪. . Git‬‬ ‫ﺜ‬‫ﺗ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Git.‬‬ ‫ﺗﻜﻮﻳﻦ ‪. . .. .. . 506‬‬

‫ﺻﻨﻊ ﻣﺸﺮوع ‪507 .. ...............................................‬‬


‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .507‬‬ ‫ﺗﺠﺎ ﻫﻞ اﻟﻤﻠﻔﺎ‪. .‬ت‪. . . .. .. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507‬‬‫ﺘﻮدع‪. . .. .. .‬‬
‫ﺗﻬﻴﺌ ﺔ اﻟﻤ ﺴ ‪. .‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508‬‬‫ﺔ‪. . . . .. .‬‬
‫اﻟﺤﺎﻟ ‪.‬‬
‫ﺘﺤﻘﻖ ﻣﻦ ‪. .‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . .508‬‬
‫ﺘﻮدع‪. . .. . .‬‬
‫ﺴ‪. . .‬‬‫اﻟﻤ ‪.‬‬
‫إﱃ‪. .‬‬ ‫إﺿﺎﻓ ﺔ اﻟﻤﻠﻔﺎ ‪. .‬ت ‪.‬‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509‬‬ ‫ﺘﺰام‪. . .. .. . .‬‬
‫إﺟﺮاء اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509‬‬
‫ﺴﺠﻞ‪. . .. . .‬‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟ‪. . . .‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .510‬‬
‫ﻲ‪. . . . .‬‬
‫ﺜﺎﻧ ‪.‬‬
‫ﺘﺰام اﻟ‬
‫اﻻﻟ‬

‫ﺘﻐﻴﻴﺮ ‪511 ...............................................‬‬‫ﺘﺮاﺟﻊ ﻋﻦ اﻟ‬


‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . 512‬‬ ‫ﺑﻘ ‪.‬ﺔ‪. . .. .. .‬‬
‫ﺴﺎ ‪.‬‬‫ﺘﺰاﻣﺎ ت‪ .‬اﻟ‪. .‬‬
‫اﻻﻟ‪. . .‬‬
‫ﺘﺤﻘﻖ ﻣﻦ ‪.‬‬ ‫اﻟ‬
‫‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513‬‬
‫ﺘﻮدع‪. . .. .. .‬‬
‫ﺣﺬف اﻟﻤ ﺴ ‪. .‬‬

‫ِس‬
‫ِﻬﺮ‬
‫ﻓ‬ ‫‪515‬‬

‫ﺘﻔﺼﻴﻞ‬
‫ﺑﺎﻟ‬
‫ﺘﻮﻳﺎ ت ‪xxvi‬‬
‫ﻣﺤ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺮف ‪dgments‬‬
‫اﻋ‬

‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺑﻮﻟﻮك ﻟﻜ‬‫ﺑﻴﻞ‬ ‫ﺘﺎ ب ﻣﻤﻜﻨﺎ ً ﻟﻮﻻ ﻃﺎﻗﻢ اﻟﻌﻤﻞ اﻟﺮاﺋﻊ واﻟﻤﺤ‬
‫ﺘﺮف ﻟﻠﻐﺎﻳ ﺔ ﻓ ﻲ ‪No Starch Press.‬دﻋﺎﻧ ﻲ‬ ‫ﻟﻢﻳﻜﻦ ﻫﺬا اﻟﻜ‬
‫ﺑﺸﺪة ﻫﺬا اﻟﻌﺮض اﻷﺻﻠ ﻲ‪.‬‬‫ﺘﺎ بﺗﻤﻬﻴﺪي ‪ ،‬وأﻧﺎ أﻗﺪر‬
‫ﻛ‬

‫ﺗﻤﺎن ﻓ ﻲﺗﺸﻜﻴﻞﺗﻔﻜﻴﺮي ﻓ ﻲ اﻟﻤﺮاﺣﻞ اﻷوﱃ ﻣﻦ اﻟﺼﻴﺎﻏ ﺔ‪.‬‬


‫ﺳﺎﻋﺪﺗﺎﻳﻠﺮ أور‬
‫ﺜﻤﻦ ‪ ،‬وﺳﺎﻋﺪ ت آن ﻣﺎري ووﻛﺮ ﻓ ﻲﺗﻮﺿﻴﺢ‬
‫ﺑ‬‫ﻛﺎﻧ ﺖ ﻣﻼﺣﻈﺎ ت ﻟﻴﺰﺗﺸﺎدوﻳﻚ وﻟﻴﺰﻟ ﻲ ﺷﻴﻦ اﻷوﻟﻴ ﺔ ﻋﲆ ﻛﻞ ﻓﺼﻞ ﻻﺗﻘﺪر‬
‫ﺒﺮ‬
‫ﺑﺼ‬‫ﺘﺎ ب ﻛﺎﻣﻞ وﺣﻮﻟ ﺖ ﻋﻤﻠ ﻲ‬
‫ﺘﺎ ب‪ .‬أﺟﺎ ب راﻳﻠ ﻲ ﻫﻮﻓﻤﺎن ﻋﲆ ﻛﻞﺳﺆال ﻛﺎن ﻟﺪي ﺣﻮل ﻋﻤﻠﻴ ﺔﺗﺠﻤﻴﻊ ﻛ‬
‫ﺜﻴﺮة ﻣﻦ اﻟﻜ‬
‫أﺟﺰاء ﻛ‬
‫ﺘﺞ ﻧﻬﺎﺋ ﻲ ﺟﻤﻴﻞ‪.‬‬
‫إﱃ ﻣﻨ‬

‫ﺑﻠ ﺖ ﻛﻴﻨﻴ ﺚ ﻓ ﻲ ‪PyCon‬ذا ت ﻋﺎم ‪،‬‬


‫أود أن أﺷﻜﺮ ‪Kenneth Love ،‬اﻟﻤﺮاﺟﻊ اﻟﻔﻨ ﻲ ﻟـ ‪Python Crash Course.‬ﻗﺎ‬
‫ﺑﻌﺪ‬
‫ﺋﻤﺎ ﻟﻺﻟﻬﺎم اﻟﻤﻬﻨ ﻲ ﻣﻨﺬ ذﻟﻚ اﻟﺤﻴﻦ‪ .‬ذ ﻫ ﺐ ﻛﻴﻨﻴ ﺚ إﱃ أ‬
‫ﺘﻤﻊ ‪Python‬ﻣﺼﺪ ًرا دا ً‬
‫وﻛﺎن ﺣﻤﺎﺳﻪ ﻟﻠﻐ ﺔ ‪lan guage‬وﻣﺠ‬
‫ﺘﺪﺋﻴﻦ ﻋﲆﺗﻄﻮﻳﺮ ﻓﻬﻢ ﻗﻮي ﻟﻠﻐ ﺔ ‪Python‬‬
‫ﺒ‬‫ﺒﺮﻣﺠﻴﻦ اﻟﻤ‬
‫ﺑﻬﺪف ﻣ ﺴﺎﻋﺪة اﻟﻤ‬‫ﺘﺎ ب‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟﺤﻘﺎﺋﻖ وراﺟﻊ اﻟﻜ‬
‫ﻣﻦ ﻣﺠﺮد اﻟ‬
‫ﺗﻤﺎﻣﺎ‪.‬‬
‫ً‬ ‫ﺒﻘﻴ ﺔﺗﺨﺼﻨ ﻲ‬
‫ﺘ‬‫ﺑﺸﻜﻞ ﻋﺎم‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﺈن أي أﺧﻄﺎء ﻣ‬‫ﺒﺮﻣﺠ ﺔ‬
‫واﻟ‬

‫ﺘ ﻲ ‪ ،‬إﻳﺮﻳﻦ ‪،‬‬
‫ﺗﻪ‪ .‬أود أن أﺷﻜﺮ زوﺟ‬
‫ﺒﻜﺮة وﻟﻌﺪم ﺧﻮﻓﻪ ﻣﻦ ﻛ ﺴﺮ ﻣﻌﺪا‬
‫ﺒﺮﻣﺠ ﺔ ﻓ ﻲﺳﻦ ﻣ‬
‫ﺘﻘﺪﻳﻤﻪ ﻟ ﻲ اﻟ‬
‫أود أن أﺷﻜﺮ واﻟﺪي ﻟ‬
‫ﺑﻨ ﻲ ‪ ،‬إﻳﻔﺮ ‪ ،‬اﻟﺬيﻳﻠﻬﻤﻨ ﻲ ﻓﻀﻮﻟﻪ ﻛﻞﻳﻮم‪.‬‬
‫ﺘﺎ ب ‪ ،‬وأود أن أﺷﻜﺮ ا‬
‫ﺗﺸﺠﻴﻌ ﻲ ﻣﻦ ﺧﻼلﺗﺄﻟﻴﻒ ﻫﺬا اﻟﻜ‬
‫ﻟﺪﻋﻤﻬﺎ و‬
Machine Translated by Google
‫‪Machine Translated by Google‬‬

‫ﻣﻘﺪﻣ ﺔ‬

‫ﺑﻪ‪.‬‬‫ﺑﺮﻧﺎﻣﺞ ﺧﺎص‬‫ﺑ ﺔ أول‬


‫ﺘﺎ‬
‫ﺒﺮﻣﺞ ﻟﺪﻳﻪ ﻗﺼ ﺔ ﻋﻦ ﻛﻴﻔﻴ ﺔﺗﻌﻠﻤﻪ ﻛ‬
‫ﻛﻞ ﻣ‬
‫ﺘﻌﻠﻢ ﻛﻄﻔﻞ ﻋﻨﺪﻣﺎ ﻛﺎن واﻟﺪيﻳﻌﻤﻞ ﻓ ﻲ ﺷﺮﻛ ﺔ ‪Corporation ،‬‬
‫ﺑﺪأ ت اﻟ‬
‫ﺒﺔ‬
‫‪Digital Equipment‬إﺣﺪى اﻟﺸﺮﻛﺎ ت اﻟﺮاﺋﺪة ﻓ ﻲ ﻋﺼﺮ اﻟﺤﻮﺳ‬
‫ﺗﺮ ﻛﺎن واﻟﺪي ﻗﺪ ﺟﻤﻌﻪ ﻓ ﻲ‬
‫ﺒﻴﻮ‬
‫ﺑﺮﻧﺎﻣﺞ ﻟ ﻲ ﻋﲆ ﺟﻬﺎز ﻛﻤ‬‫ﺒ ﺖ أول‬
‫ﺘ‬‫ﺜ ﺔ‪ .‬ﻟﻘﺪ ﻛ‬
‫اﻟﺤﺪﻳ‬
‫ﺑﺪون ﻏﻼف ‪،‬‬‫ﺗﻴﺢ‬
‫ﺑﻠﻮﺣ ﺔ ﻣﻔﺎ‬‫ﺘﺼﻠ ﺔ‬
‫ﺗﺮ ﻣﻦ ﻣﺠﺮد ﻟﻮﺣ ﺔ أم ﻋﺎرﻳ ﺔ ﻣ‬
‫ﺒﻴﻮ‬
‫ﺘﻜﻮن اﻟﻜﻤ‬
‫ﺒﻮ ﻣﻨﺰﻟﻨﺎ‪.‬ﻳ‬
‫ﻗ‬
‫ﺒﺔ‬
‫ﺒﺎرة ﻋﻦ ﻟﻌ‬
‫ﺑﺮﻧﺎﻣﺠ ﻲ اﻷوﻟ ﻲ ﻋ‬ ‫ﺛﻮد اﻟﻌﺎري ﻟﻠﺸﺎﺷ ﺔ‪ .‬ﻛﺎن‬ ‫ﺒﻮ ب أﺷﻌ ﺔ اﻟﻜﺎ‬
‫ﺑﻬﺎ أﻧ‬ ‫وﻛﺎن‬
‫ﺜﻞ ﻫﺬا‪:‬‬ ‫ﺑﺪ ت ﺷﻴ ًﺌﺎ ﻣ‬‫ﺘﻲ‬‫ﺘﺨﻤﻴﻦ اﻷرﻗﺎم ‪ ،‬واﻟ‬ ‫ﺑ ﺴﻴﻄ ﺔ ﻟ‬

‫أﻓﻜﺮ ﻓ ﻲ رﻗﻢ! ﺣﺎولﺗﺨﻤﻴﻦ اﻟﺮﻗﻢ اﻟﺬي أﻓﻜﺮ ﻓﻴﻪ‪25 :‬‬


‫ﻣﻨﺨﻔﺾ ﺟﺪا! ﺧﻤﻦ ﻣﺮة أﺧﺮى‪50 :‬‬
‫ﺗﻔﻊ ﺟﺪا! ﺧﻤﻦ ﻣﺮة أﺧﺮى‪42 :‬‬
‫ﻣﺮ‬
‫ﻫﺬا ﻛﻞ ﺷ ﻲء!ﺗﺮﻳﺪ أنﺗﻠﻌ ﺐ ﻣﺮة أﺧﺮى؟ )ﻧﻌﻢ ‪ /‬ﻻ( ﻻ‬
‫ﺷﻜﺮا ﻟﻠﻌ ﺐ!‬
‫‪Machine Translated by Google‬‬

‫ﺒﺔ‬
‫ﺘ ﻲ و ﻫ ﻲﺗﻠﻌ ﺐ ﻟﻌ‬
‫ﺋﻤﺎ ﻣﺪى رﺿﺎي ﻋﻦ ﻣﺸﺎ ﻫﺪة ﻋﺎﺋﻠ‬
‫ﺗﺬﻛﺮ دا ً‬
‫ﺳﺄ‬
‫ﺘﻬﺎ وﻋﻤﻠ ﺖ ﻛﻤﺎ ﻛﻨ ﺖ أﻧﻮﻳﻬﺎ‪.‬‬
‫ﺘ ﻲ ﺻﻨﻌ‬
‫اﻟ‬

‫ﺑﻨﺎء ﺷ ﻲء ﻟﻐﺮض ‪ ،‬ﺷ ﻲءﻳﺤﻞ ﻣﺸﻜﻠ ﺔ‪.‬‬‫ﺛﻴﺮ داﺋﻢ‪ .‬ﻫﻨﺎك رﺿﺎ ﺣﻘﻴﻘ ﻲ ﻓ ﻲ‬
‫ﺒﻜﺮةﺗﺄ‬
‫ﺑ ﺔ اﻟﻤ‬
‫ﺘﺠﺮ‬
‫ﺘﻠﻚ اﻟ‬
‫ﻛﺎن ﻟ‬

‫ﺑﺎﻟﺮﺿﺎ اﻟﺬي أﺣﺼﻞ ﻋﻠﻴﻪ ﻣﻦ إﻧﺸﺎء‬‫ﺘ ﻲ ‪ ،‬ﻟﻜﻦ اﻹﺣ ﺴﺎس‬


‫ﺜﺮ أ ﻫﻤﻴ ﺔ ﻣﻦ ﺟﻬﻮد ﻃﻔﻮﻟ‬
‫ﺒﻪ اﻵن ﺣﺎﺟ ﺔ أﻛ‬
‫ﺘ‬‫ﺒﺮﻧﺎﻣﺞ اﻟﺬي أﻛ‬
‫ﺒ ﻲ اﻟ‬
‫ﻳﻠ‬
‫ﺒﻴﺮ‪.‬‬
‫ﺑﺮﻧﺎﻣﺞﻳﻌﻤﻞ ﻻﻳﺰال ﻫﻮ ﻧﻔ ﺴﻪ إﱃ ﺣﺪ ﻛ‬

‫ﺘﺎ ب؟‬
‫ﻟﻤﻦ ﻫﺬا اﻟﻜ‬

‫ﺜﻞ‬
‫ﺑﺮاﻣﺞﺗﻌﻤﻞ ‪-‬ﻣ‬‫ﺘﻤﻜﻦ ﻣﻦ إﻧﺸﺎء‬
‫ﺘﻰﺗ‬
‫ﺘﺎ ب ﻫﻮ إﻃﻼﻋﻚ ﻋﲆﺳﺮﻋ ﺔ ‪Python‬ﻓ ﻲ أﺳﺮع وﻗ ﺖ ﻣﻤﻜﻦ ﺣ‬
‫اﻟﻬﺪف ﻣﻦ ﻫﺬا اﻟﻜ‬
‫ﺗﻚ‪.‬ﺗﻢﺗﺼﻤﻴﻢ‬
‫ﺒﻘﻴ ﺔ ﺣﻴﺎ‬
‫ﺒﺮﻣﺠ ﺔﺳﻴﺨﺪﻣﻚ ﺟﻴﺪًا ﻟ‬
‫ﺛﻨﺎءﺗﻄﻮﻳﺮ أﺳﺎس ﻓ ﻲ اﻟ‬
‫ﺒﻴﻘﺎ ت اﻟﻮﻳ ﺐ ‪-‬أ‬
‫ﺗﻄ‬‫ﺒﻴﺎﻧﺎ ت و‬
‫ﺗﺼﻮرا ت اﻟ‬
‫اﻷﻟﻌﺎ ب و‬
‫ﺒﺮﻣﺠﻮا ﻣﻄﻠ ًﻘﺎ ﻋﲆ‬
‫ﺒﻞ أو ﻟﻢﻳ‬
‫ﺒﺮﻣﺠ ﺔ ﻓ ﻲ ‪Python‬ﻣﻦ ﻗ‬
‫ﺒﻖ ﻟﻬﻢ اﻟ‬
‫‪Python Crash Course‬ﻟﻸﺷﺨﺎص ﻣﻦ أي ﻋﻤﺮ ﻟﻢﻳ ﺴ‬
‫ﺗﺮﻏ ﺐ‬
‫ﺘﻤﺎم ‪ ،‬و‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺘﺮﻛﻴﺰ ﻋﲆ ﻣﺸﺎرﻳﻊ ﻣ‬
‫ﺘﻤﻜﻦ ﻣﻦ اﻟ‬
‫ﺘﻰﺗ‬
‫ﺑ ﺴﺮﻋ ﺔ ﺣ‬‫ﺒﺮﻣﺠ ﺔ‬
‫اﻹﻃﻼق‪ .‬إذا ﻛﻨ ﺖﺗﺮﻏ ﺐ ﻓ ﻲﺗﻌﻠﻢ أﺳﺎﺳﻴﺎ ت اﻟ‬
‫ﺘﺎ ب ﻣﻨﺎﺳ ﺐ ﻟﻚ‪.‬ﺗﻌﺪ ‪Crash Course‬‬
‫ﺒﺎر ﻓﻬﻤﻚ ﻟﻠﻤﻔﺎ ﻫﻴﻢ اﻟﺠﺪﻳﺪة ﻣﻦ ﺧﻼل ﺣﻞ اﻟﻤﺸﻜﻼ ت ذا ت اﻟﻤﻐﺰى ‪ ،‬ﻓﻬﺬا اﻟﻜ‬
‫ﺘ‬‫ﻓ ﻲ اﺧ‬
‫ﺘﻌﺮﻳﻒ ﻗﺎﺋﻢ ﻋﲆ اﻟﻤﺸﺮوع‬
‫ﺑ‬‫ﺑﻬﻢ‬
‫ﺒﻮن ﻓ ﻲﺗﺰوﻳﺪ ﻃﻼ‬
‫ﺜﺎﻧﻮﻳ ﺔ اﻟﺬﻳﻦﻳﺮﻏ‬ ‫ﺜﺎﻟﻴ ﺔ أ ً‬
‫ﻳﻀﺎ ﻟﻤﻌﻠﻤ ﻲ اﻟﻤﺪارس اﻹﻋﺪادﻳ ﺔ واﻟ‬ ‫‪Python‬ﻣ‬
‫ﺒﺮﻣﺠ ﺔ‪.‬‬
‫ﻟﻠ‬

‫ﺘﻌﻠﻢ؟‬
‫ﺘﻮﻗﻊ أنﺗ‬
‫ﻣﺎذاﺗ‬
‫ﺒﻨﻰ‬
‫ﺘ‬‫ﺗ‬‫ﺑﻜﻔﺎءة و‬‫ﺘﻌﻠﻢ‬
‫ﺘ‬‫ﺑﺸﻜﻞ ﺧﺎص‪.‬ﺳ‬‫ﺜﻮن ﺟﻴﺪًا‬
‫ﺑﺎﻳ‬‫ﺒﺮﻣﺞ‬
‫ﺑﺸﻜﻞ ﻋﺎم وﻣ‬‫ﺒﺮﻣﺠًﺎ ﺟﻴﺪًا‬
‫ﺘﺎ ب ﻫﻮ أنﺗﺠﻌﻠﻚ ﻣ‬
‫اﻟﻐﺮض ﻣﻦ ﻫﺬا اﻟﻜ‬
‫ﺒﺮ ‪Crash Course ،‬‬
‫ﺑﻌﺪ أنﺗﺸﻖ ﻃﺮﻳﻘﻚ ﻋ‬‫ﺘﻴﻨًﺎ ﻓ ﻲ ﻣﻔﺎ ﻫﻴﻢ ﻗﻮاﻋﺪ اﻟﻠﻐ ﺔ اﻟﻌﺎﻣ ﺔ‪.‬‬
‫ﺳﺎ ﻣ‬
‫ﻋﺎدا ت ﺟﻴﺪةﻷﻧﻨ ﻲ أﻗﺪم ﻟﻚ أﺳﺎ ً‬
‫ﺘﺎﻟﻴ ﺔ أﺳﻬﻞ ﻓ ﻲ اﻟﻔﻬﻢ‪.‬‬
‫ﺒﺮﻣﺠ ﺔ اﻟ‬
‫ﺘﻜﻮن ﻟﻐ ﺔ اﻟ‬
‫ﺗﻘﺪﻣﺎ ‪ ،‬وﺳ‬
‫ً‬ ‫ﺜﺮ‬ ‫‪Python‬ﻳﺠ ﺐ أنﺗﻜﻮن ﺟﺎ ﻫ ًﺰا ﻟﻼﻧ‬
‫ﺘﻘﺎل إﱃﺗﻘﻨﻴﺎ ت ‪Python‬اﻷﻛ‬

‫ﺜﻮن‪ .‬ﻫﺬه‬
‫ﺑﺎﻳ‬‫ﺑﺮاﻣﺞ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺘﻬﺎ ﻟﻜ‬
‫ﺘﺎج إﱃ ﻣﻌﺮﻓ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺒﺮﻣﺠ ﺔ اﻷﺳﺎﺳﻴ ﺔ اﻟ‬
‫ﺘﺎ ب ﻣﻔﺎ ﻫﻴﻢ اﻟ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ اﻟﺠﺰء اﻷول ﻣﻦ ﻫﺬا اﻟﻜ‬
‫ﺘ‬‫ﺳ‬
‫ﺘﻲ‬
‫ﺘﻠﻔ ﺔ واﻟﻄﺮق اﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻤﺨ‬
‫ﺘﻌﺮف ﻋﲆ أﻧﻮاع اﻟ‬
‫ﺘ‬‫ﺒﺎ‪.‬ﺳ‬
‫ﺑﺮﻣﺠ ﺔﺗﻘﺮﻳ ً‬‫ﺒﺪء ﻓ ﻲ أي ﻟﻐ ﺔ‬
‫ﺘﻌﻠﻤﻬﺎ ﻋﻨﺪ اﻟ‬
‫ﺘ‬‫ﺘ ﻲﺳ‬
‫اﻟﻤﻔﺎ ﻫﻴﻢ ﻫ ﻲ ﻧﻔ ﺴﻬﺎ اﻟ‬
‫ﺒﻴﺎﻧﺎ ت واﻟﻌﻤﻞ‬
‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ إﻧﺸﺎء ﻣﺠﻤﻮﻋﺎ ت ﻣﻦ اﻟ‬
‫ﺘ‬‫ﺑﺮاﻣﺠﻚ‪.‬ﺳ‬‫ﺒﻴﺎﻧﺎ ت ﻓ ﻲ ﻗﻮاﺋﻢ وﻗﻮاﻣﻴ ﺲ داﺧﻞ‬
‫ﻳﻤﻜﻨﻚ ﻣﻦ ﺧﻼﻟﻬﺎﺗﺨﺰﻳﻦ اﻟ‬
‫ﺑﻄﺮق ﻓﻌﺎﻟ ﺔ‪.‬‬‫ﻣﻦ ﺧﻼلﺗﻠﻚ اﻟﻤﺠﻤﻮﻋﺎ ت‬

‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻤﻜﻦ ﻣﻦﺗﺸﻐﻴﻞ أﻗ ﺴﺎم ﻣﻌﻴﻨ ﺔ ﻣﻦ اﻟ‬
‫ﺘﻰﺗ‬
‫ﺒﺎر ﺷﺮوط ﻣﻌﻴﻨ ﺔ ﺣ‬
‫ﺘ‬‫ﺘﺨﺪام ﺣﻠﻘﺎ ت ‪while‬و ‪if‬ﻻﺧ‬
‫ﺘﻌﻠﻢ اﺳ‬
‫ﺘ‬‫ﺳ‬
‫ﺘﺔ‬
‫ﺗﻤ‬‫ﺒﻴﺮ ﻓ ﻲ أ‬
‫ﺑﺸﻜﻞ ﻛ‬‫ﺗﺸﻐﻴﻞ أﻗ ﺴﺎم أﺧﺮى ﻋﻨﺪﻣﺎ ﻻﺗﻜﻮن ﻛﺬﻟﻚ ‪-‬و ﻫ ﻲﺗﻘﻨﻴ ﺔﺗ ﺴﺎﻋﺪ‬
‫ﻋﻨﺪﻣﺎﺗﻜﻮن ﻫﺬه اﻟﺸﺮوط ﺻﺤﻴﺤ ﺔ و‬
‫اﻟﻌﻤﻠﻴﺎ ت‪.‬‬

‫ﺘﺨﺪم‬
‫ﺘﺸﻐﻴﻞ ﻃﺎﻟﻤﺎ ﻛﺎن اﻟﻤ ﺴ‬
‫ﺑﺮاﻣﺠﻚ ﻗﻴﺪ اﻟ‬‫ﺑﻘﺎء‬
‫ﺑﺮاﻣﺠﻚ ﻧﺸﻄ ﺔ وﻹ‬‫ﺘﺨﺪﻣﻴﻦ ﻟﺠﻌﻞ‬
‫ﺒﻮل اﻟﻤﺪﺧﻼ ت ﻣﻦ اﻟﻤ ﺴ‬
‫ﺘﻌﻠﻢ ﻗ‬
‫ﺘ‬‫ﺳ‬
‫ﻧﺸﻄﺎ‪.‬‬
‫ً‬
‫ﺘﻞ ﻣﻦ‬
‫ﺑﺔ ﻛ‬
‫ﺘﺎ‬
‫ﺘﺨﺪام ‪ ،‬ﻟﺬﻟﻚ ﻋﻠﻴﻚ ﻓﻘﻂ ﻛ‬
‫ﺑﻠ ﺔ ﻹﻋﺎدة اﻻﺳ‬
‫ﺑﺮﻧﺎﻣﺠﻚ ﻗﺎ‬‫ﺑ ﺔ وﻇﺎﺋﻒ ﻟﺠﻌﻞ أﺟﺰاء ﻣﻦ‬
‫ﺘﺎ‬
‫ﺘﻜﺸﻒ ﻛﻴﻔﻴ ﺔ ﻛ‬
‫ﺳﻮفﺗ ﺴ‬
‫ﺘ ﻲﺗﺆدي أدا ًء ﻣﻌﻴﻨًﺎ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟ‬

‫‪xxx‬ﻣﻘﺪﻣ ﺔ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮﺳﻴﻊ ﻫﺬا اﻟﻤﻔﻬﻮم ﻟﻴﺸﻤﻞﺳﻠﻮ ًﻛﺎ‬


‫ﺑ‬‫ﺑﻌﺪ ذﻟﻚ‬‫ﺘﻘﻮم‬
‫ﺑﻌﺪ ذﻟﻚ ﻋﺪة ﻣﺮا ت ﻛﻤﺎﺗﺮﻳﺪ‪.‬ﺳ‬‫ﺘﺨﺪاﻣﻬﺎ‬
‫ﺘ ﻲﻳﻤﻜﻨﻚ اﺳ‬
‫ﻣﺮة واﺣﺪة ‪ ،‬واﻟ‬
‫ﺘﻨﻮﻋ ﺔ ﻣﻦ اﻟﻤﻮاﻗﻒ‪.‬‬
‫ﺘﺠﻴ ﺐ ﻟﻤﺠﻤﻮﻋ ﺔ ﻣ‬
‫ﺒ ﺴﻴﻄ ﺔ إﱃ ﺣﺪ ﻣﺎﺗ ﺴ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا ﻣﻊ اﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ ‪ ،‬ﻣﻤﺎﻳﺠﻌﻞ اﻟ‬
‫أﻛ‬
‫ﺑﻌﺪ اﻟﻌﻤﻞ ﻣﻦ ﺧﻼل ﻛﻞ ﻣﻦ ﻫﺬه اﻟﻤﻔﺎ ﻫﻴﻢ‬‫ﺑﺮﺷﺎﻗ ﺔ‪.‬‬‫ﺘﻌﺎﻣﻠﻮن ﻣﻊ اﻷﺧﻄﺎء اﻟﺸﺎﺋﻌ ﺔ‬
‫ﺘﺮﻓﻴﻦ اﻟﺬﻳﻦﻳ‬
‫ﺑ ﺔ اﻟﻤﺤ‬
‫ﺘﺎ‬
‫ﺘﻌﻠﻢ ﻛ‬
‫ﺘ‬‫ﺳ‬
‫ﺗﻚ اﻷوﱃ ﻧﺤﻮ‬
‫ﺘﺨﺬ ﺧﻄﻮ‬
‫ﺘ‬‫ﺑﻌﺾ اﻟﻤﺸﻜﻼ ت اﻟﻤﺤﺪدة ﺟﻴﺪًا‪ .‬أﺧﻴ ًﺮا ‪،‬ﺳ‬‫ﺘ ﻲﺗﺤﻞ‬
‫ﺒﺮاﻣﺞ اﻟﻘﺼﻴﺮة اﻟ‬
‫ﺑﻌﺾ اﻟ‬‫ﺘﺐ‬
‫ﺘﻜ‬‫اﻷﺳﺎﺳﻴ ﺔ ‪،‬ﺳ‬
‫ﺒﺮ دون‬
‫ﺑﺸﻜﻞ أﻛ‬‫ﺑﺮاﻣﺠﻚ‬‫ﺘﻤﻜﻦ ﻣﻦﺗﻄﻮﻳﺮ‬
‫ﺘﻰﺗ‬
‫ﺑﻚ ﺣ‬‫ﺒﺎرا ت ﻟﻠﻜﻮد اﻟﺨﺎص‬
‫ﺘ‬‫ﺑ ﺔ اﺧ‬
‫ﺘﺎ‬
‫ﺒﺮﻣﺠ ﺔ اﻟﻮﺳﻴﻄ ﺔ ﻣﻦ ﺧﻼلﺗﻌﻠﻢ ﻛﻴﻔﻴ ﺔ ﻛ‬
‫اﻟ‬
‫ﺑﺸﺄن إدﺧﺎل اﻷﺧﻄﺎء‪.‬‬‫اﻟﻘﻠﻖ‬

‫ﺜﺮﺗﻌﻘﻴﺪًا‪.‬‬
‫ﺒﺮ وأﻛ‬
‫ﺑﻤﺸﺎرﻳﻊ أﻛ‬‫ﺘﺠﻬﺰك ﺟﻤﻴﻊ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻮاردة ﻓ ﻲ اﻟﺠﺰء اﻷول ﻟﻠﻘﻴﺎم‬
‫ﺳ‬

‫ﺑﺄي ﻣﻦ ﻫﺬه اﻟﻤﺸﺎرﻳﻊ أو‬‫ﺛ ﺔ ﻣﺸﺎرﻳﻊ‪.‬ﻳﻤﻜﻨﻚ اﻟﻘﻴﺎم‬


‫ﺛﻼ‬‫ﺘﻪ ﻓ ﻲ اﻟﺠﺰء اﻷول ﻋﲆ‬
‫ﺒﻖ ﻣﺎﺗﻌﻠﻤ‬
‫ﺘﻄ‬‫ﺜﺎﻧ ﻲﺳ‬
‫ﻓ ﻲ اﻟﺠﺰء اﻟ‬
‫ﺒ ﺔ إﻃﻼق ﻧﺎر ﻋﲆ ﻏﺮار ‪Invaders‬‬
‫ﺘﻨﺸ ﺊ ﻟﻌ‬
‫ﺒﻚ‪ .‬ﻓ ﻲ اﻟﻤﺸﺮوع اﻷول )اﻟﻔﺼﻮل ‪12-14) ،‬ﺳ‬
‫ﺗﻴ ﺐ اﻟﺬيﻳﻨﺎﺳ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺟﻤﻴﻌﻬﺎ‬
‫ﺘﻬﺎء ﻣﻦ ﻫﺬا اﻟﻤﺸﺮوع ‪،‬‬
‫ﺑﻌﺪ اﻻﻧ‬‫ﺘﺰاﻳﺪة‪.‬‬
‫ﺑ ﺔ اﻟﻤ‬
‫ﺘﻮﻳﺎ ت ﻣﻦ اﻟﺼﻌﻮ‬
‫ﺘﻜﻮن ﻣﻦ ﻣ ﺴ‬
‫ﺘ ﻲﺗ‬
‫ﺗ ﺴﻤﻰ ‪Alien Invasion ،‬واﻟ‬
‫‪Space‬‬
‫ﺑﻌﺎد‪.‬‬
‫ﺛﻨﺎﺋﻴ ﺔ اﻷ‬‫ﺑﻚ‬
‫ﻳﺠ ﺐ أنﺗﻜﻮن ﻓ ﻲ ﻃﺮﻳﻘﻚ إﱃ أنﺗﻜﻮن ﻗﺎد ًرا ﻋﲆﺗﻄﻮﻳﺮ أﻟﻌﺎ‬

‫ﺒﻴﺎﻧﺎ ت إﱃ ﻓﻬﻢ اﻟﻜﻢ اﻟﻬﺎﺋﻞ ﻣﻦ‬


‫ﺒﻴﺎﻧﺎ ت‪.‬ﻳﻬﺪف ﻋﻠﻤﺎء اﻟ‬‫ﺗﺼﻮر اﻟ‬‫ﺜﺎﻧ ﻲ )اﻟﻔﺼﻮل )‪15-17‬‬
‫ﻳﻘﺪم ﻟﻚ اﻟﻤﺸﺮوع اﻟ‬
‫ﺘ ﻲﺗﻘﻮم‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻌﻤﻞ ﻣﻊ ﻣﺠﻤﻮﻋﺎ ت اﻟ‬ ‫ﺘﺼﻮر‪.‬ﺳ‬ ‫ﺘﻨﻮﻋ ﺔ ﻣﻦﺗﻘﻨﻴﺎ ت اﻟ‬
‫ﺘﺎﺣ ﺔ ﻟﻬﻢ ﻣﻦ ﺧﻼل ﻣﺠﻤﻮﻋ ﺔ ﻣ‬‫اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤ‬

‫ﺒﻴﺎﻧﺎ ت‬
‫ﺘﺮﻧ ﺖ وﻣﺠﻤﻮﻋﺎ ت اﻟ‬
‫ﺒﺮ اﻹﻧ‬
‫ﺘ ﻲﺗﻢﺗﻨﺰﻳﻠﻬﺎ ﻣﻦ اﻟﻤﺼﺎدر ﻋ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺒﺮﻣﺠﻴ ﺔ وﻣﺠﻤﻮﻋﺎ ت اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﺈﻧﺸﺎﺋﻬﺎ ﻣﻦ ﺧﻼل اﻟ‬
‫ﺘﻢﺗﻨﺰﻳﻠﻬﺎﺗﻠﻘﺎﺋ ًﻴﺎ‪.‬‬
‫ﺘ ﻲﻳ‬
‫اﻟ‬

‫ﺋﻴ ﺔ‬
‫ﺜﻴﻼ ت ﻣﺮ‬
‫ﺗﻘﺪمﺗﻤ‬
‫ﺒﻴﺮة و‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻜ‬
‫ﺘ ﻲﺗﻔﺤﺺ ﻣﺠﻤﻮﻋﺎ ت اﻟ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﻛ‬
‫ﺘ‬‫ﺘﻬﺎء ﻣﻦ ﻫﺬا اﻟﻤﺸﺮوع ‪،‬ﺳ‬
‫ﺑﻌﺪ اﻻﻧ‬
‫ﺘﻠﻚ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﺨﺰﻧ ﺔ‪.‬‬
‫ﻟ‬

‫ﺘﻴﺢ ﻟﻚ ﻫﺬا اﻟﻤﺸﺮوع‬


‫ﺘﻌﻠﻢ‪.‬ﻳ‬
‫ﺒﻴﻖ وﻳ ﺐ ﺻﻐﻴ ًﺮاﻳ ﺴﻤﻰﺳﺠﻞ اﻟ‬
‫ﺘﻨﺸ ﺊﺗﻄ‬
‫ﺜﺎﻟ ﺚ )اﻟﻔﺼﻮل )‪18-20‬ﺳ‬
‫ﻓ ﻲ اﻟﻤﺸﺮوع اﻟ‬
‫ﺑ ﺴﺠﻼ ت ﻣﻨﻔﺼﻠ ﺔ‬‫ﺘﻔﺎظ‬
‫ﺘﻤﻜﻦ ﻣﻦ اﻻﺣ‬
‫ﺘ‬‫ﺘﻬﺎ ﺣﻮل ﻣﻮﺿﻮع ﻣﻌﻴﻦ‪.‬ﺳ‬
‫ﺘ ﻲﺗﻌﻠﻤ‬
‫ﺑﻤﺠﻠ ﺔ ﻟﻸﻓﻜﺎر واﻟﻤﻔﺎ ﻫﻴﻢ اﻟ‬‫ﺘﻔﺎظ‬
‫اﻻﺣ‬
‫ﺘﻌﻠﻢ أ ً‬
‫ﻳﻀﺎ ﻛﻴﻔﻴ ﺔ ﻧﺸﺮ ﻣﺸﺮوﻋﻚ‬ ‫ﺘ‬‫ﺑﻬﻢ‪.‬ﺳ‬‫ﺑﺪء اﻟﻤﺠﻼ ت اﻟﺨﺎﺻ ﺔ‬
‫ﺑﺈﻧﺸﺎء ﺣ ﺴﺎ ب و‬‫ﺘﻠﻔ ﺔ واﻟ ﺴﻤﺎح ﻟﻶﺧﺮﻳﻦ‬
‫ﻟﻤﻮﺿﻮﻋﺎ ت ﻣﺨ‬
‫ﺘﺮﻧ ﺖ ﻣﻦ أي ﻣﻜﺎن‪.‬‬
‫ﺒﺮ اﻹﻧ‬
‫ﺑﺤﻴ ﺚﻳﻤﻜﻦﻷي ﺷﺨﺺ اﻟﻮﺻﻮل إﻟﻴﻪ ﻋ‬

‫ﺜﻮن؟‬
‫ﺑﺎﻳ‬‫ﻟﻤﺎذا‬
‫ﺒﺮﻣﺠ ﺔ‪ .‬ﻟﻜﻨﻨ ﻲ ﻣﺎ‬
‫ﺑﻤﺎ ﻟﻐ ﺔ أﺣﺪ ث ﻓ ﻲ ﻋﺎﻟﻢ اﻟ‬
‫ﺘﻠﻔ ﺔ ‪-‬ر‬
‫ﺘﻘﺎل إﱃ ﻟﻐ ﺔ ﻣﺨ‬
‫ﺘﺨﺪام ‪Python‬أو اﻻﻧ‬
‫ﺘﻤﺮار ﻓ ﻲ اﺳ‬
‫ﻛﻞ ﻋﺎم أﻓﻜﺮ ﻓ ﻲ اﻻﺳ‬
‫ﺑﺮاﻣﺠﻚ ﻓ ﻲ ﻋﺪدﺳﻄﻮر أﻗﻞ‬‫ﺘﻌﻤﻞ‬
‫ﺑﺸﻜﻞ ﻻﻳﺼﺪق‪:‬ﺳ‬‫ﺒﺎ ب ﻋﺪﻳﺪة‪ .‬ﻟﻐ ﺔ ‪ Python‬ﻫ ﻲ ﻟﻐ ﺔ ﻓﻌﺎﻟ ﺔ‬
‫ﺜﻮنﻷﺳ‬
‫ﺑﺎﻳ‬‫زﻟ ﺖ أرﻛﺰ ﻋﲆ‬
‫ﺑ ﺔ ﻛﻮد‬
‫ﺘﺎ‬ ‫ﺜﻮن أ ً‬
‫ﻳﻀﺎ ﻋﲆ ﻛ‬ ‫ﺑﺎﻳ‬‫ﺑﻨﺎء ﺟﻤﻠ ﺔ‬‫ﺒﻪ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻠﻐﺎ ت اﻷﺧﺮى‪.‬ﺳﻴ ﺴﺎﻋﺪك‬
‫ﺘﻄﻠ‬
‫ﺜﺮ ﻣﻤﺎﺗ‬
‫ﺒﺮﻣﺠﻴ ﺔ أﻛ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻣﻦ اﻟ‬
‫ﺑﺎﻟﻠﻐﺎ ت اﻷﺧﺮى‪.‬‬‫ﺒﻨﺎء ﻋﻠﻴﻬﺎ ﻣﻘﺎرﻧ ﺔ‬
‫ﺘﻮﺳﻴﻊ واﻟ‬
‫ﺘﺼﺤﻴﺢ ‪ ،‬واﻟ‬
‫ﺗﻚﺳﻬﻠ ﺔ اﻟﻘﺮاءة ‪ ،‬وﺳﻬﻠ ﺔ اﻟ‬
‫ﺘﻜﻮن ﺷﻔﺮ‬
‫"ﻧﻈﻴﻒ"‪.‬ﺳ‬

‫ﺗﻄﻮﻳﺮ‬
‫ﺒﻴﻘﺎ ت اﻟﻮﻳ ﺐ ‪ ،‬وﺣﻞ ﻣﺸﺎﻛﻞ اﻟﻌﻤﻞ ‪ ،‬و‬
‫ﺑﻨﺎءﺗﻄ‬
‫ﺘﺨﺪم اﻟﻨﺎس ‪Python‬ﻷﻏﺮاض ﻋﺪﻳﺪة‪ :‬ﻟﺼﻨﻊ اﻷﻟﻌﺎ ب ‪ ،‬و‬
‫ﻳﺴ‬
‫ﺒﺤ ﺚ‬
‫ﺜﺎﻓ ﺔ ﻓ ﻲ اﻟﻤﺠﺎﻻ ت اﻟﻌﻠﻤﻴ ﺔ ﻟﻠ‬
‫ﺑﻜ‬ ‫ﺜﻮن أ ً‬
‫ﻳﻀﺎ‬ ‫ﺑﺎﻳ‬ ‫ُﺴ‬
‫ﺘﺨﺪم‬ ‫ﺘﻤﺎم‪.‬ﺗ‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫اﻷدوا ت اﻟﺪاﺧﻠﻴ ﺔ ﻓ ﻲ ﺟﻤﻴﻊ أﻧﻮاع اﻟﺸﺮﻛﺎ ت اﻟﻤ‬
‫ﺒﻴﻘ ﻲ‪.‬‬
‫ﺘﻄ‬‫اﻷﻛﺎدﻳﻤ ﻲ واﻟﻌﻤﻞ اﻟ‬

‫ﺛﻮن‬
‫ﺜﻼ‬‫ﻣﻘﺪﻣ ﺔ اﻟﺤﺎدي واﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻀﻤﻦ ﻣﺠﻤﻮﻋ ﺔ‬
‫ﺘﻤﻊ ‪Python ،‬واﻟﺬيﻳ‬
‫ﺘﺨﺪام ‪ Python‬ﻫﻮ ﻣﺠ‬
‫ﺘﻤﺮ ﻓ ﻲ اﺳ‬
‫ﺘ ﻲﺗﺠﻌﻠﻨ ﻲ أﺳ‬
‫ﺒﺎ ب اﻟ‬
‫أﺣﺪ أ ﻫﻢ اﻷﺳ‬
‫ﺘﺎج‬
‫ﺒﺮﻣﺠ ﺔ ﻟﻴ ﺴ ﺖ ﻣ ﺴﻌﻰ ﻣﻨﻔﺮدًا‪.‬ﻳﺤ‬
‫ﺒﺮاﻣﺞﻷن اﻟ‬
‫ﺒﺮﻣﺠ ﺔ اﻟ‬
‫ﺘﻤﻊ ﺿﺮوري ﻟ‬
‫ﺑﺸﻜﻞ ﻻﻳﺼﺪق ﻣﻦ اﻟﻨﺎس‪ .‬اﻟﻤﺠ‬‫ﺒﺔ‬
‫ﺘﻨﻮﻋ ﺔ وﻣﺮﺣ‬
‫ﻣ‬
‫ﺛﻠ ﺔ‪.‬ﻳﻌﺪ وﺟﻮد‬
‫ﺑﺎﻟﻔﻌﻞ ﻣﺸﻜﻼ ت ﻣﻤﺎ‬‫ﺒﺮة ‪ ،‬إﱃ ﻃﻠ ﺐ اﻟﻨﺼﻴﺤ ﺔ ﻣﻦ اﻵﺧﺮﻳﻦ اﻟﺬﻳﻦ ﺣﻠﻮا‬
‫ﺜﺮ ﺧ‬
‫ﺒﺮﻣﺠﻴﻦ اﻷﻛ‬
‫ﺘﻰ اﻟﻤ‬
‫ﻣﻌﻈﻤﻨﺎ ‪ ،‬ﺣ‬
‫ﺗﻤﺎﻣﺎ‬
‫ً‬ ‫ﺘﻤﻊ ‪Python‬ﻳﺪﻋﻢ‬
‫ﺗﻚ ﻓ ﻲ ﺣﻞ اﻟﻤﺸﻜﻼ ت ‪ ،‬ﻛﻤﺎ أن ﻣﺠ‬
‫ﺑﺎﻟﻎ اﻷ ﻫﻤﻴ ﺔ ﻟﻤ ﺴﺎﻋﺪ‬‫ﺑﻂ وداﻋﻢ ﺟﻴﺪًا أﻣ ﺮًا‬
‫ﺘﺮا‬
‫ﺘﻤﻊ ﻣ‬
‫ﻣﺠ‬
‫ﺑﺮﻣﺠ ﺔ أوﱃ‪.‬‬‫ﺘﻌﻠﻤﻮن ‪Python‬ﻛﻠﻐ ﺔ‬
‫ﺜﻠﻚ اﻟﺬﻳﻦﻳ‬
‫اﻷﺷﺨﺎص ﻣ‬

‫ﺒﺪأ!‬
‫ﺜﻮن ﻫ ﻲ ﻟﻐ ﺔ راﺋﻌ ﺔﻳﺠ ﺐﺗﻌﻠﻤﻬﺎ ‪ ،‬ﻓﻠﻨ‬
‫ﺑﺎﻳ‬

‫‪xxxii‬ﻣﻘﺪﻣ ﺔ‬
‫‪Machine Translated by Google‬‬

‫اﻟﺠﺰء اﻷول‬
‫أﺳﺎﺳﻴﺎ ت‬

‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺘﺎﺟﻬﺎ ﻟﻜ‬
‫ﺘﺤ‬‫ﺘ ﻲﺳ‬
‫ﺘﺎ ب اﻟﻤﻔﺎ ﻫﻴﻢ اﻷﺳﺎﺳﻴ ﺔ اﻟ‬
‫ﻳﻌﻠﻤﻚ اﻟﺠﺰء اﻷول ﻣﻦ ﻫﺬا اﻟﻜ‬
‫ﺒﺮﻣﺠ ﺔ ‪ ،‬ﻟﺬا‬
‫ﺜﻮن‪ .‬اﻟﻌﺪﻳﺪ ﻣﻦ ﻫﺬه اﻟﻤﻔﺎ ﻫﻴﻢ ﺷﺎﺋﻌ ﺔ ﻓ ﻲ ﺟﻤﻴﻊ ﻟﻐﺎ ت اﻟ‬
‫ﺑﺎﻳ‬‫ﺑﺮاﻣﺞ‬
‫ﺒﺮﻣﺞ‪.‬‬
‫ﺗﻚ ﻛﻤ‬
‫ﺘﻜﻮن ﻣﻔﻴﺪة ﻃﻮال ﺣﻴﺎ‬
‫ﺳ‬

‫ﺑﺮﻧﺎﻣﺞ‬‫ﺗﺸﻐﻴﻞ أول‬
‫ﺑﻚ و‬‫ﺗﺮ اﻟﺨﺎص‬
‫ﺒﻴﻮ‬
‫ﺒﻴ ﺖ ‪Python‬ﻋﲆ ﺟﻬﺎز اﻟﻜﻤ‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬‫ﺘﻘﻮم‬
‫ﻓ ﻲ اﻟﻔﺼﻞ ‪1 ،‬ﺳ‬
‫ﺒﻊ رﺳﺎﻟ ﺔ !‪Hello world‬ﻋﲆ اﻟﺸﺎﺷ ﺔ‪.‬‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﺬيﻳﻄ‬
‫اﻟ‬
‫ﺘﻐﻴﺮا ت واﻟﻌﻤﻞ‬
‫ﺗﺨﺰﻳﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻓ ﻲ اﻟﻤ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ اﻟﻔﺼﻞ ‪2‬‬
‫ﺘ‬‫ﺳ‬
‫ﻣﻊ اﻟﻨﺺ واﻟﻘﻴﻢ اﻟﻌﺪدﻳ ﺔ‪.‬‬

‫ﺘﻴﺢ ﻟﻚ اﻟﻌﻤﻞ ﻣﻊ‬


‫ﺘﻐﻴﺮ واﺣﺪ ‪ ،‬ﻣﻤﺎﻳ‬
‫ﺒﺮ ﻗﺪر ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻛﻤﺎﺗﺮﻳﺪ ﻓ ﻲ ﻣ‬
‫ﻳﻘﺪم اﻟﻔﺼﻠﻴﻦ ‪3‬و ‪4‬اﻟﻘﻮاﺋﻢ‪.‬ﻳﻤﻜﻦ ﻟﻠﻘﻮاﺋﻢﺗﺨﺰﻳﻦ أﻛ‬
‫ﺑﻜﻔﺎءة‪.‬‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺗﻠﻚ اﻟ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪.‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻀﻌ ﺔ أﺳﻄﺮ ﻣﻦ اﻟ‬‫ﺘﻰ اﻟﻤﻼﻳﻴﻦ ﻣﻦ اﻟﻘﻴﻢ ﻓ ﻲ‬
‫ﺑﺎﻟﻤﺌﺎ ت واﻵﻻف وﺣ‬‫ﺘﻤﻜﻦ ﻣﻦ اﻟﻌﻤﻞ‬
‫ﺘ‬‫ﺳ‬

‫ﺑﻌﺾ اﻟﺸﺮوط‬‫ﺑﻄﺮﻳﻘ ﺔ واﺣﺪة إذا ﻛﺎﻧ ﺖ‬‫ﺘﺠﻴ ﺐ‬


‫ﺘ ﻲﺗ ﺴ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺒﺎرا ت ‪if‬ﻟﻜ‬
‫ﺘﺨﺪم ﻋ‬
‫ﺘﺴ‬‫ﻓ ﻲ اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ ‪،‬ﺳ‬
‫ﺘﻠﻔ ﺔ إذا ﻛﺎﻧ ﺖ ﻫﺬه اﻟﺸﺮوط ﻏﻴﺮ ﺻﺤﻴﺤ ﺔ‪.‬‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﺨ‬‫ﺘﺠﻴ ﺐ‬
‫ﺗﺴ‬‫ﺻﺤﻴﺤ ﺔ ‪ ،‬و‬

‫ﺜﻞ‬
‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪ .‬ﻣ‬
‫ﺑﻴﻦ أﺟﺰاء ﻣﺨ‬‫ﺗﺼﺎﻻ ت‬
‫ﺘﻴﺢ ﻟﻚ إﺟﺮاء ا‬
‫ﺘ ﻲﺗ‬
‫ﺜﻮن ‪ ،‬واﻟ‬
‫ﺑﺎﻳ‬‫ﺘﺨﺪام ﻗﻮاﻣﻴ ﺲ‬
‫ﻳﻮﺿﺢ ﻟﻚ اﻟﻔﺼﻞ ‪6‬ﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺘﺎج إﱃﺗﺨﺰﻳﻨﻬﺎ‪.‬‬
‫ﺘ ﻲﺗﺤ‬
‫ﺒﺮ ﻗﺪر ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘﻮي أﺳﻤﺎء اﻟﻤﺼﺎدر اﻟﺮﻗﻤﻴ ﺔ ﻋﲆ أﻛ‬
‫اﻟﻘﻮاﺋﻢ ‪،‬ﻳﻤﻜﻦ أنﺗﺤ‬

‫ﺘﻌﺮف أ ً‬
‫ﻳﻀﺎ ﻋﲆ ﺣﻠﻘﺎ ت ‪while ،‬‬ ‫ﺘ‬‫ﺑﺮاﻣﺠﻚﺗﻔﺎﻋﻠﻴ ﺔ‪.‬ﺳ‬‫ﺘﺨﺪﻣﻴﻦ ﻟﺠﻌﻞ‬
‫ﺒﻮل اﻟﻤﺪﺧﻼ ت ﻣﻦ اﻟﻤ ﺴ‬
‫ﺑﻊ ﻛﻴﻔﻴ ﺔ ﻗ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ اﻟﻔﺼﻞ اﻟ ﺴﺎ‬
‫ﺘ‬‫ﺳ‬
‫ﺘﻜﺮر ﻃﺎﻟﻤﺎ ﻇﻠ ﺖ ﺷﺮوط ﻣﻌﻴﻨ ﺔ ﺻﺤﻴﺤ ﺔ‪.‬‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻞ ﻣﻦ اﻟ‬
‫ﺘﺸﻐﻴﻞ ﻛ‬
‫ﺑ‬‫ﺘ ﻲﺗﻘﻮم‬
‫اﻟ‬

‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻞ ﻣﻦ اﻟ‬
‫ﺘ ﺐ وﻇﺎﺋﻒﺗ ﺴﻤﻰ ﻛ‬
‫ﺘﻜ‬‫ﺜﺎﻣﻦﺳ‬
‫ﻓ ﻲ اﻟﻔﺼﻞ اﻟ‬
‫ﺘﺠ ﺖ إﻟﻴﻬﺎ‪.‬‬
‫ﺘﻰ اﺣ‬
‫ﺘ ﻲﺗﺆدي ﻣﻬﻤ ﺔ ﻣﺤﺪدة وﻳﻤﻜﻦﺗﺸﻐﻴﻠﻬﺎ ﻣ‬
‫اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻞ اﻟﻜﻼ ب واﻟﻘﻄﻂ واﻷﺷﺨﺎص‬


‫ﺑﻨﻤﺬﺟ ﺔ ﻛﺎﺋﻨﺎ ت ﻣﻦ اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ ‪ ،‬ﻣ‬‫ﺘ ﻲﺗ ﺴﻤﺢ ﻟﻚ‬
‫ﻳﻘﺪم اﻟﻔﺼﻞ ‪9‬اﻟﻔﺌﺎ ت ‪ ،‬اﻟ‬
‫ﺑﻚ أي ﺷ ﻲء ﺣﻘﻴﻘ ﻲ أو ﻣﺠﺮد‪.‬‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺜﻞ اﻟ‬
‫ﺜﻴﺮ ‪ ،‬ﻟﺬﻟﻚﻳﻤﻜﻦ أنﺗﻤ‬
‫واﻟ ﺴﻴﺎرا ت واﻟﺼﻮارﻳﺦ وﻏﻴﺮ ذﻟﻚ اﻟﻜ‬

‫ﺘﻮﻗﻊ‪.‬‬
‫ﺑﺸﻜﻞ ﻏﻴﺮ ﻣ‬‫ﺑﺮاﻣﺠﻚ‬‫ﺘﻌﻄﻞ‬
‫ﺘﻰ ﻻﺗ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎ ت وﻣﻌﺎﻟﺠ ﺔ اﻷﺧﻄﺎء ﺣ‬
‫ﻳﻮﺿﺢ ﻟﻚ اﻟﻔﺼﻞ ‪10‬ﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫ﺘﻌﺮف ﻋﲆ اﺳ‬
‫ﺘ‬‫ﺒﺮﻧﺎﻣﺞ ﻣﺮة أﺧﺮى‪.‬ﺳ‬
‫ﺒﻴﺎﻧﺎ ت ﻋﻨﺪﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘﻌﻴﺪ ﻗﺮاءة اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬وﺳ‬
‫ﺒﻞ إﻏﻼق اﻟ‬
‫ﺒﻴﺎﻧﺎ ت ﻗ‬
‫ﺘﺨﺰن اﻟ‬
‫ﺳ‬
‫ﺑﺄﻣﺎن‪.‬‬‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻫﺬه اﻷﺧﻄﺎء‬
‫ﺑﺮاﻣﺠﻚﺗ‬‫ﺗﺠﻌﻞ‬
‫ﺘﻮﻗﻊ اﻷﺧﻄﺎء ‪ ،‬و‬
‫ﺑ‬‫ﺘ ﻲﺗ ﺴﻤﺢ ﻟﻚ‬
‫‪Python ،‬واﻟ‬

‫ﺘ ﻲﺗﺮﻳﺪ ﻫﺎ‪.‬‬
‫ﺑﺎﻟﻄﺮﻳﻘ ﺔ اﻟ‬‫ﺑﺮاﻣﺠﻚﺗﻌﻤﻞ‬‫ﺘﺤﻘﻖ ﻣﻦ أن‬
‫ﺑﻚ ﻟﻠ‬‫ﺒﺎرا ت ﻟﻠﻜﻮد اﻟﺨﺎص‬
‫ﺘ‬‫ﺑ ﺔ اﺧ‬
‫ﺘﺎ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ اﻟﻔﺼﻞ ‪11‬ﻛ‬
‫ﺘ‬‫ﺳ‬
‫ﺑﺸﺄن إدﺧﺎل أﺧﻄﺎء ﺟﺪﻳﺪة‪.‬‬‫ﺑﺮاﻣﺠﻚ دون اﻟﻘﻠﻖ‬‫ﺘﻤﻜﻦ ﻣﻦﺗﻮﺳﻴﻊ‬
‫ﺘ‬‫ﺘﻴﺠ ﺔ ﻟﺬﻟﻚ ‪،‬ﺳ‬
‫ﻧ‬

‫ﺘﻮﺳﻂ‪.‬‬
‫ﺘﺪئ إﱃ ﻣ‬
‫ﺒ‬‫ﺒﺮﻣﺞ ﻣ‬
‫ﺘﻘﺎل ﻣﻦ ﻣ‬
‫ﺘ ﺴﺎﻋﺪك ﻋﲆ اﻻﻧ‬
‫ﺘ ﻲﺳ‬
‫ﺑﻚ أﺣﺪ اﻟﻤﻬﺎرا ت اﻷوﱃ اﻟ‬‫ﺒﺎر اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺘ‬‫ﻳﻌﺪ اﺧ‬

‫‪2‬اﻟﺠﺰء اﻷول‬
‫‪Machine Translated by Google‬‬

‫‪1‬‬
‫ﺑﺪء‬
‫ا‬

‫ﺑﺮﻧﺎﻣﺞ ‪Python‬اﻷول ‪،‬‬‫ﺘﺸﻐﻴﻞ‬


‫ﺑ‬‫ﺘﻘﻮم‬
‫ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ‪،‬ﺳ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ ‪Python‬‬
‫ﺘﺎج إﱃ اﻟ‬
‫ﺘﺤ‬‫‪hello_world.py.‬أوﻻ ً ‪،‬ﺳ‬
‫ﺑﻚ ؛ إذا ﻟﻢﻳﻜﻦ ﻛﺬﻟﻚ ‪ ،‬ﻓ ﺴﻮف‬‫ﺗﺮ اﻟﺨﺎص‬
‫ﺒﻴﻮ‬
‫ﺘ ﺔ ﻋﲆ ﺟﻬﺎز اﻟﻜﻤ‬
‫ﺒ‬‫ﺜ‬‫ﻣ‬
‫ﺘﻪ‪.‬ﺳﻮف‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺘ‬‫ﺑ‬‫ﺗﻘﻮم‬
‫ﺘﻌﺮف ﻣﺤﺮرو‬
‫ﺑﻚ‪.‬ﻳ‬‫ﺑﺮاﻣﺞ ‪Python‬اﻟﺨﺎﺻ ﺔ‬‫ﺒﻴ ﺖ ﻣﺤﺮر ﻧﺼﻮص ﻟﻠﻌﻤﻞ ﻣﻊ‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬ ‫ﻗﻢ أ ً‬
‫ﻳﻀﺎ‬
‫ﺑ ﺔ ‪ ،‬ﻣﻤﺎﻳﺠﻌﻞ ﻣﻦ اﻟ ﺴﻬﻞ‬
‫ﺘﺎ‬
‫ﺛﻨﺎء اﻟﻜ‬
‫اﻟﻨﺼﻮص ﻋﲆ ﻛﻮد ‪Python‬وﻳﻤﻴﺰون اﻷﻗ ﺴﺎم أ‬
‫ﺑﻚ‪.‬‬‫ﺑﻨﻴ ﺔ اﻟﻜﻮد اﻟﺨﺎص‬‫ﻓﻬﻢ‬

‫ﺑﻚ‬‫ﺒﺮﻣﺠ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺑﻴﺌ ﺔ اﻟ‬‫إﻋﺪاد‬
‫ﺒﺎرا ت‪ .‬ﻫﻨﺎ ‪،‬ﺳﻨﻠﻘ ﻲ ﻧﻈﺮة‬
‫ﺘ‬‫ﺑﻌﺾ اﻻﻋ‬‫ﺘﺎج إﱃ ﻣﺮاﻋﺎة‬
‫ﺘﺤ‬‫ﺘﻠﻔ ﺔ ‪ ،‬ﻟﺬﻟﻚﺳ‬ ‫ﺘﻠﻒ ‪Python‬ﻗﻠﻴ ﻼ ً ﻓ ﻲ أﻧﻈﻤ ﺔ اﻟ‬
‫ﺘﺸﻐﻴﻞ اﻟﻤﺨ‬ ‫ﺗﺨ‬
‫ﺘﺨﺪام ﺣﺎﻟ ًﻴﺎ وﻧﺤﺪد اﻟﺨﻄﻮا ت اﻟﻼزﻣ ﺔ ﻹﻋﺪاد ‪Python‬ﻋﲆ ﻧﻈﺎﻣﻚ‪.‬‬
‫ﺋﻴ ﺴﻴﻴﻦ ﻣﻦ ‪Python‬ﻗﻴﺪ اﻻﺳ‬
‫ﻋﲆ اﻹﺻﺪارﻳﻦ اﻟﺮ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻮن ‪3‬‬
‫ﺑﺎﻳ‬
‫ﺜﻮن ‪2‬و‬
‫ﺑﺎﻳ‬
‫ﺗﻘﻨﻴﺎ ت‬
‫ﺑﺮﻣﺠ ﺔ ﻣﻊ ﻇﻬﻮر أﻓﻜﺎر و‬‫ﺘﻄﻮر ﻛﻞ ﻟﻐ ﺔ‬
‫ﺘﻮﻓﺮ إﺻﺪاران ﻣﻦ ‪Python: Python 2‬و ‪Python 3‬اﻷﺣﺪ ث‪.‬ﺗ‬
‫اﻟﻴﻮم ‪،‬ﻳ‬
‫ﺘﻐﻴﻴﺮا تﺗﺪرﻳﺠﻴ ﺔ وﻻﻳﻤﻜﻦ‬
‫ﺜﺮﺗﻨﻮﻋً ﺎ وﻗﻮة‪.‬ﺗﻜﻮن ﻣﻌﻈﻢ اﻟ‬
‫ﺘﻤﺮار ﻋﲆ ﺟﻌﻞ اﻟﻠﻐ ﺔ أﻛ‬
‫ﺑﺎﺳ‬
‫ﺟﺪﻳﺪة ‪ ،‬وﻗﺪ ﻋﻤﻞ ﻣﻄﻮرو ‪Python‬‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻋﲆ اﻷﻧﻈﻤ ﺔ‬
‫ﺑ ﺔ ﻟـ ‪Python 2‬‬
‫ﺘﻮ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻤﻜ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻌﺾ اﻟﺤﺎﻻ ت ﻗﺪ ﻻﺗﻌﻤﻞ اﻟ‬‫ﺘﻬﺎ ‪ ،‬وﻟﻜﻦ ﻓ ﻲ‬
‫ﻣﻼﺣﻈ‬
‫ﺑﻴﻦ ‪Python 2‬و ‪Python 3 ،‬‬‫ﺒﻴﺮ‬
‫ﺘﻼف اﻟﻜ‬
‫ﺘﺎ ب ‪،‬ﺳﺄﺷﻴﺮ إﱃ ﻣﺠﺎﻻ ت اﻻﺧ‬
‫ﺒﻴ ﺖ ‪Python 3‬ﻋﻠﻴﻬﺎ‪ .‬ﺧﻼل ﻫﺬا اﻟﻜ‬
‫ﺜ‬‫ﺘ ﻲﺗﻢﺗ‬
‫اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت‪.‬‬
‫ﺒﺎع اﻟ‬
‫ﺗ‬‫ﺘﻤﻜﻦ ﻣﻦ ا‬
‫ﺘ‬‫ﺘﺨﺪﻣﻪ ‪،‬ﺳ‬
‫ﻟﺬﻟﻚ أﻳًﺎ ﻛﺎن اﻹﺻﺪار اﻟﺬيﺗ ﺴ‬

‫ﺘﺨﺪم ‪Python 3.‬إذا ﻛﺎن‬


‫ﺒﻴ ﺖ ‪Python ،‬ﻓﺎﺳ‬
‫ﺜ‬‫ﺑﺤﺎﺟ ﺔ إﱃﺗ‬‫ﺒﻴ ﺖ ﻛﻼ اﻹﺻﺪارﻳﻦ ﻋﲆ ﻧﻈﺎﻣﻚ أو إذا ﻛﻨ ﺖ‬
‫ﺜ‬‫إذاﺗﻢﺗ‬
‫ﺒﻴ ﺖ ‪Python ،‬‬
‫ﺜ‬‫ﺑﺪﻻ ً ﻣﻦﺗ‬‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺘﻘﺎل إﱃ ﻛ‬
‫ﺗﻔﻀﻞ اﻻﻧ‬
‫‪ Python 2‬ﻫﻮ اﻹﺻﺪار اﻟﻮﺣﻴﺪ ﻋﲆ ﻧﻈﺎﻣﻚ و‬
‫ﺘﺨﺪام ‪Python 3‬ﻛﺎن ذﻟﻚ أﻓﻀﻞ ‪ ،‬ﻟﺬا‬
‫ﺘﺮﻗﻴ ﺔ إﱃ اﺳ‬
‫ﺘﺨﺪام ‪Python 2 .‬ﻟﻜﻦ ﻛﻠﻤﺎ أﺳﺮﻋ ﺖ ﻓ ﻲ اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﺪء‬
‫ﻓﻴﻤﻜﻨﻚ اﻟ‬
‫ﺘﻌﻤﻞ ﻋﲆ أﺣﺪ ث إﺻﺪار‪.‬‬
‫ﺳ‬

‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﺘﻄﻔﺎ ت ﻣﻦ ﻛﻮد‬
‫ﺗﺸﻐﻴﻞ ﻣﻘ‬
‫ﺑ ﺔ أﺟﺰاء ﻣﻦ ‪Python‬دون اﻟﺤﺎﺟ ﺔ إﱃ ﺣﻔﻆ‬
‫ﺘﺠﺮ‬
‫ﺑ‬‫ﺘﺮﺟﻢﻳﻌﻤﻞ ﻓ ﻲ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ ‪ ،‬ﻣﻤﺎﻳ ﺴﻤﺢ ﻟﻚ‬
‫ﺗ ﻲ ‪Python‬ﻣﻊ ﻣ‬
‫ﺗﺄ‬
‫ﺑﺮﻧﺎﻣﺞ ﻛﺎﻣﻞ‪.‬‬‫ﺗﺸﻐﻴﻞ‬
‫و‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺒﺪو ﻛﺎﻟ‬
‫ﺘﻄﻔﺎ تﺗ‬
‫ﺘﺮى ﻣﻘ‬
‫ﺘﺎ ب ‪،‬ﺳ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻜ‬

‫ﺘﺮﺟﻢ!"(‬
‫‪u >>> print ("Hello Python‬ﻣ‬
‫ﺜﻮن!‬‫ﺑﺎﻳ‬‫ﺘﺮﺟﻢ‬‫ﺒﺎ ﻣ‬
‫ﻣﺮﺣ‬

‫ﺑﺮاﻣﺞ‬‫ﺒﺎرة ﻋﻦ‬
‫ﺘﺎ ب ﻋ‬
‫ﺜﻠ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻜ‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﲆ ‪Enter.‬ﻣﻌﻈﻢ اﻷﻣ‬‫ﺛﻢﺗﻨﻔﺬه‬‫ﺒﻪ‬
‫ﺘ‬‫ﺘﻜ‬
‫اﻟﻨﺺ اﻟﻐﺎﻣﻖ ﻫﻮ ﻣﺎﺳ‬
‫ﺘﻌﻠﻴﻤﺎ ت‬
‫ﺑﻬﺎ ﻣﻌﻈﻢ اﻟ‬‫ﺘﺐ‬
‫ﺘﻜ‬‫ﺘ ﻲﺳ‬
‫ﺑﻚ ‪،‬ﻷن ﻫﺬه ﻫ ﻲ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬‫ﺘﺸﻐﻴﻠﻬﺎ ﻣﻦ اﻟﻤﺤﺮر اﻟﺨﺎص‬
‫ﺑ‬‫ﺗﻬﺎﺗﻘﻮم‬
‫ﺑﺬا‬‫ﺻﻐﻴﺮة ﻗﺎﺋﻤ ﺔ‬
‫ﺘﻢ‬
‫ﺘ ﻲﻳ‬
‫ﺘﻄﻔﺎ ت اﻟ‬
‫ﺘﻢ ﻋﺮض اﻟﻤﻔﺎ ﻫﻴﻢ اﻷﺳﺎﺳﻴ ﺔ ﻓ ﻲﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟﻤﻘ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﻳ‬‫ﺑﻚ‪ .‬ﻟﻜﻦ ﻓ ﻲ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫اﻟ‬
‫ﺜﺮ ﻛﻔﺎءة‪ .‬ﻓ ﻲ أي وﻗ ﺖﺗﺮى أﻗﻮاس‬
‫ﺑﺸﻜﻞ أﻛ‬‫ﺘﻮﺿﻴﺢ اﻟﻤﻔﺎ ﻫﻴﻢ اﻟﻤﻌﺰوﻟ ﺔ‬
‫ﺗﺸﻐﻴﻠﻬﺎ ﻣﻦ ﺧﻼل ﺟﻠ ﺴ ﺔ ‪Python‬اﻟﻄﺮﻓﻴ ﺔ ﻟ‬
‫ﺘﺮﺟﻢ اﻟﻔﻮري ﻟﻨﻈﺎﻣﻚ ﻓ ﻲ‬
‫ﺘﺮﻣﻴﺰ ﻓ ﻲ اﻟﻤ‬
‫ﺛ ﺔ ﻓ ﻲ رﻣﺰﻳ ﺴﺮد ‪u ،‬ﻓﺄﻧ ﺖﺗﻨﻈﺮ إﱃ إﺧﺮاج ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ‪.‬ﺳﻨﺤﺎول اﻟ‬
‫ﺜﻼ‬‫اﻟﺰاوﻳ ﺔ اﻟ‬
‫ﻏﻀﻮن ﻟﺤﻈ ﺔ‪.‬‬

‫ﺑﺎﻟﻌﺎﻟﻢ!‬‫ﺒﺎ‬
‫ﻣﺮﺣ‬

‫ﺑﻠﻐ ﺔ ﺟﺪﻳﺪة‬‫ﺑﺮﻧﺎﻣﺠﻚ اﻷول‬‫ﺒﺎﻋ ﺔ !‪Hello world‬رﺳﺎﻟ ﺔ إﱃ اﻟﺸﺎﺷ ﺔ ﺣﻴ ﺚ أن‬


‫ﺒﺮﻣﺠ ﺔ أن ﻃ‬
‫ﺘﻘﺎد اﻟﺮاﺳﺦ ﻓ ﻲ ﻋﺎﻟﻢ اﻟ‬
‫ﻛﺎن اﻻﻋ‬
‫ﺳﻴﺠﻠ ﺐ ﻟﻚ اﻟﺤﻆ‪.‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪Hello World‬ﻓ ﻲﺳﻄﺮ واﺣﺪ‪:‬‬‫ﺑﺔ‬


‫ﺘﺎ‬
‫ﻓ ﻲ ‪Python ،‬ﻳﻤﻜﻨﻚ ﻛ‬

‫ﺒﺎﻋ ﺔ )"!‪("Hello world‬‬


‫ﻃ‬

‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻋﲆ ﻧﻈﺎﻣﻚ ‪ ،‬ﻓﻴﺠ ﺐ أنﻳﻌﻤﻞ‬ ‫ً‬


‫ﻏﺮﺿﺎ ﺣﻘﻴﻘ ًﻴﺎ ﻟﻠﻐﺎﻳ ﺔ‪ .‬إذا ﻛﺎنﻳﻌﻤﻞ‬ ‫ﺒ ﺴﻴﻂﻳﺨﺪم‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫ﺜﻞ ﻫﺬا اﻟ‬
‫ﻣ‬
‫ﺒﺮﻧﺎﻣﺞ ﻋﲆ ﻧﻈﺎﻣﻚ اﻟﺨﺎص ﻓ ﻲ ﻏﻀﻮن ﻟﺤﻈ ﺔ‪.‬‬
‫ﺑ ﺔ ﻫﺬا اﻟ‬
‫ﺘﺎ‬ ‫ﺒﻪ أ ً‬
‫ﻳﻀﺎ‪.‬ﺳﻨﻨﻈﺮ ﻓ ﻲ ﻛ‬ ‫ﺘ‬‫ﺗﻜ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬‬‫أي‬

‫‪4‬اﻟﻔﺼﻞ ‪1‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻠﻔ ﺔ‬
‫ﺜﻮن ﻋﲆ أﻧﻈﻤ ﺔﺗﺸﻐﻴﻞ ﻣﺨ‬
‫ﺑﺎﻳ‬
‫ﺋﻴ ﺴﻴ ﺔ‪.‬ﻳﺠ ﺐﺗﺸﻐﻴﻞ‬
‫ﺘﺸﻐﻴﻞ اﻟﺮ‬
‫ﺒﺮ اﻷﻧﻈﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ ‪ ،‬ﻣﻤﺎﻳﻌﻨ ﻲ أﻧﻬﺎﺗﻌﻤﻞ ﻋﲆ ﺟﻤﻴﻊ أﻧﻈﻤ ﺔ اﻟ‬
‫ﺑﺮﻣﺠ ﺔ ﻋ‬‫‪ Python‬ﻫ ﻲ ﻟﻐ ﺔ‬
‫ﺒ ﺖ ﻋﻠﻴﻪ ‪Python.‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﺈن ﻃﺮق إﻋﺪاد ‪Python‬ﻋﲆ أﻧﻈﻤ ﺔ‬
‫ﺜ‬‫ﺗﺮ ﺣﺪﻳ ﺚ ﻣ‬
‫ﺒﻴﻮ‬
‫ﺒﻪ ﻋﲆ أي ﻛﻤ‬
‫ﺘ‬‫ﺗﻜ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬‬‫أي‬
‫ﺘﻠﻒ ﻗﻠﻴ ﻼً‪.‬‬
‫ﺘﻠﻔ ﺔﺗﺨ‬
‫ﺗﺸﻐﻴﻞ ﻣﺨ‬

‫ﺗﺸﻐﻴﻞ ‪Hello World‬‬


‫ﺘﻌﻠﻢ ﻓ ﻲ ﻫﺬا اﻟﻘ ﺴﻢ ﻛﻴﻔﻴ ﺔ إﻋﺪاد ‪Python‬و‬
‫ﺘ‬‫ﺳ‬
‫ﺑﻌﺪ ذﻟﻚ ‪،‬‬‫ﺘﻪ إذا ﻟﻢﻳﻜﻦ ﻛﺬﻟﻚ‪.‬‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺗ‬‫ﺘًﺎ ﻋﲆ ﻧﻈﺎﻣﻚ و‬
‫ﺒ‬‫ﺜ‬‫ﺘﺤﻘﻖ أوﻻ ً ﻣﻤﺎ إذا ﻛﺎن ‪Python‬ﻣ‬
‫ﺘ‬‫ﺑﺮﻧﺎﻣﺞ ﻋﲆ ﻧﻈﺎﻣﻚ اﻟﺨﺎص‪.‬ﺳ‬
‫ﺑﺮﻧﺎﻣﺞ‬‫ﺘﺸﻐﻴﻞ‬
‫ﺑ‬‫ﺘﻘﻮم‬
‫ﺑ ﺴﻴﻂ وﺣﻔﻆ ﻣﻠﻒ ‪Python‬ﻓﺎرغﻳ ﺴﻤﻰ ‪hello_world.py.‬أﺧﻴ ًﺮا ‪،‬ﺳ‬‫ﺒﻴ ﺖ ﻣﺤﺮر ﻧﺼ ﻲ‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬‫ﺘﻘﻮم‬
‫ﺳ‬
‫ﺑﻴﺌ ﺔ‬‫ﺘﻜﺸﺎف أي ﺷ ﻲء ﻟﻢﻳﻨﺠﺢ‪.‬ﺳﺄوﺟﻬﻚ ﺧﻼل ﻫﺬه اﻟﻌﻤﻠﻴ ﺔ ﻟﻜﻞ ﻧﻈﺎمﺗﺸﻐﻴﻞ ‪ ،‬ﻟﺬﻟﻚﺳﻴﻜﻮن ﻟﺪﻳﻚ‬
‫‪Hello World‬واﺳ‬
‫ﺘﺪﺋﻴﻦ‪.‬‬
‫ﺒ‬‫ﺑﺮﻣﺠ ﺔ ‪ Python‬ﺻﺪﻳﻘ ﺔ ﻟﻠﻤ‬

‫ﺜﻮن ﻋﲆ ﻟﻴﻨﻜ ﺲ‬
‫ﺑﺎﻳ‬
‫ﺘﻮﻗﻊ اﻷﺷﺨﺎص‬
‫ﺗﺮ ‪Linux.‬ﻳ‬
‫ﺒﻴﻮ‬
‫ﺑﺎﻟﻔﻌﻞ ﻋﲆ ﻣﻌﻈﻢ أﺟﻬﺰة ﻛﻤ‬
‫ﺒﻴ ﺖ ‪Python‬‬
‫ﺜ‬‫ﺒﺮﻣﺠ ﺔ ‪ ،‬ﻟﺬﻟﻚﺗﻢﺗ‬
‫ﺗﻢﺗﺼﻤﻴﻢ أﻧﻈﻤ ﺔ ‪Linux‬ﻟﻠ‬
‫ﺑﺬﻟﻚ‪ .‬ﻟﻬﺬا‬‫ﺑﻚ ﻓ ﻲ ﻣﺮﺣﻠ ﺔ ﻣﺎ وﻳﺸﺠﻌﻮﻧﻚ ﻋﲆ اﻟﻘﻴﺎم‬‫ﺒﺮﻣﺠ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺑﺎﻟ‬‫ﺒﻮن ‪Linux‬وﻳﺤﺎﻓﻈﻮن ﻋﻠﻴﻪ أنﺗﻘﻮم‬
‫ﺘ‬‫اﻟﺬﻳﻦﻳﻜ‬
‫ﺒﺪء‬
‫ﺘ ﻲﻳﺠ ﺐ ﻋﻠﻴﻚﺗﻐﻴﻴﺮ ﻫﺎ ﻟ‬
‫ﺘﻬﺎ وﻗﻠﻴﻞ ﺟﺪًا ﻣﻦ اﻹﻋﺪادا ت اﻟ‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺘ ﻲﻳﺠ ﺐ ﻋﻠﻴﻚﺗ‬
‫ﺒ ﺐ ‪ ،‬ﻫﻨﺎك اﻟﻘﻠﻴﻞ ﺟﺪًا ﻣﻦ اﻹﻋﺪادا ت اﻟ‬
‫اﻟ ﺴ‬
‫ﺒﺮﻣﺠ ﺔ‪.‬‬
‫اﻟ‬

‫ﺒﻴﻖ ‪Terminal‬ﻋﲆ ﻧﻈﺎﻣﻚ )ﻓ ﻲ‬


‫ﺘﺢ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ ﻋﻦ ﻃﺮﻳﻖﺗﺸﻐﻴﻞﺗﻄ‬
‫ﺑﻚ اﻓ‬‫ﺘﺤﻘﻖ ﻣﻦ إﺻﺪار ‪Python‬اﻟﺨﺎص‬
‫اﻟ‬

‫ﺑﺤﺮف ‪ p‬ﺻﻐﻴﺮ‪.‬‬
‫ﺘ ﺔ أم ﻻ ‪ ،‬أدﺧﻞ ‪python‬‬
‫ﺒ‬‫ﺜ‬‫‪Ubuntu ،‬ﻳﻤﻜﻨﻚ اﻟﻀﻐﻂ ﻋﲆ ‪ctrl-alt-T).‬ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎﻧ ﺖ ‪Python‬ﻣ‬
‫ﺜﻞ‬
‫ﺒﺪء ﻓ ﻲ إدﺧﺎل أواﻣﺮ ‪Python ،‬ﻣ‬
‫ﺒ ﺖ وﻣﻮﺟﻪ >>>ﺣﻴ ﺚﻳﻤﻜﻨﻚ اﻟ‬
‫ﺜ‬‫ﺑﺈﺻﺪار ‪Python‬اﻟﻤ‬‫ﺒﺮك‬
‫ﻳﺠ ﺐ أنﺗﺮى ﻣﺨﺮﺟﺎ تﺗﺨ‬
‫ﻫﺬا‪:‬‬

‫ﺜﻮن‬‫ﺑﻴ‬‫‪$‬‬
‫ﺘﺮاﺿ ﻲ ‪22 ،‬ﻣﺎرس )‪2014 ، 22:59:38‬‬‫‪)Python 2.7.6‬اﻓ‬
‫]‪[GCC 4.8.2‬ﻋﲆ ‪linux2‬‬
‫ﺗﺮﺧﻴﺺ" ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬
‫ﺘﻤﺎﻧﺎ ت" أو "‬
‫ﺒﻊ وﻧﺸﺮ" أو "اﺋ‬
‫ﺘ ﺐ "ﻣ ﺴﺎﻋﺪة" أو "ﺣﻘﻮق ﻃ‬
‫اﻛ‬
‫>>>‬

‫ﺗﺮ‪ .‬ﻋﻨﺪﻣﺎ‬
‫ﺒﻴﻮ‬
‫ﺒ ﺖ ﻋﲆ ﻫﺬا اﻟﻜﻤ‬
‫ﺜ‬‫ﺘﺮاﺿ ﻲ ﻣﻦ ‪Python‬اﻟﻤ‬
‫ﺒﺮك ﻫﺬا اﻹﺧﺮاج أن ‪ Python 2.7.6‬ﻫﻮ ﺣﺎﻟ ًﻴﺎ اﻹﺻﺪار اﻻﻓ‬
‫ﻳﺨ‬
‫ﺘﺮك ﻣﻮﺟﻪ ‪Python‬واﻟﻌﻮدة إﱃ ﻣﻮﺟﻪ اﻟﻤﺤﻄ ﺔ اﻟﻄﺮﻓﻴ ﺔ‪.‬‬
‫ﺗﺮى ﻫﺬا اﻹﺧﺮاج ‪ ،‬اﺿﻐﻂ ﻋﲆ ‪ctrl-D‬أو أدﺧﻞ )( ‪exit‬ﻟ‬

‫ﺘﻰ إذا ﻋﺮض اﻹﺧﺮاج ‪Python 2.7‬ﻛﺈﺻﺪار‬


‫ﺘﺤﻘﻖ ﻣﻦ ‪Python 3 ،‬ﻗﺪﺗﻀﻄﺮ إﱃﺗﺤﺪﻳﺪ ﻫﺬا اﻹﺻﺪار ؛ ﻟﺬﻟﻚ ﺣ‬
‫ﻟﻠ‬
‫ﺘﺮاﺿ ﻲ ‪ ،‬ﺟﺮ ب اﻷﻣﺮ ‪python3:‬‬
‫اﻓ‬

‫ﺜﻮن ‪3‬‬‫ﺑﻴ‬
‫ﺒﺮ )‪2015 ، 13:05:18‬‬
‫ﺘﻤ‬‫ﺒ‬
‫ﺘﺮاﺿ ﻲ ‪17 ،‬ﺳ‬‫‪)Python 3.5.0‬اﻓ‬
‫]‪[GCC 4.8.4‬ﻋﲆ ﻟﻴﻨﻜ ﺲ‬
‫ﺗﺮﺧﻴﺺ" ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬
‫ﺘﻤﺎﻧﺎ ت" أو "‬
‫ﺒﻊ وﻧﺸﺮ" أو "اﺋ‬
‫ﺘ ﺐ "ﻣ ﺴﺎﻋﺪة" أو "ﺣﻘﻮق ﻃ‬
‫اﻛ‬
‫>>>‬

‫ﺑﺪء‬
‫ا‬ ‫‪5‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪام أي ﻣﻦ اﻹﺻﺪارﻳﻦ‪ .‬ﻛﻠﻤﺎ رأﻳ ﺖ أﻣﺮ‬


‫ﺘﻤﻜﻦ ﻣﻦ اﺳ‬
‫ﺘ‬ ‫ﺘًﺎ أ ً‬
‫ﻳﻀﺎ ‪ ،‬ﻟﺬاﺳ‬ ‫ﺒ‬‫ﺜ‬‫ﻳﻌﻨ ﻲ ﻫﺬا اﻹﺧﺮاج أن ﻟﺪﻳﻚ ‪Python 3‬ﻣ‬
‫ﺑﺎﻟﻔﻌﻞ ‪،‬‬‫ﺘﺔ‬
‫ﺒ‬‫ﺜ‬ ‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ‪.‬ﺗﺤ‬
‫ﺘﻮي ﻣﻌﻈﻢﺗﻮزﻳﻌﺎ ت ‪Linux‬ﻋﲆ ‪Python‬ﻣ‬ ‫ﺘﺎ ب ‪ ،‬أدﺧﻞ ‪python3‬‬
‫‪python‬ﻓ ﻲ ﻫﺬا اﻟﻜ‬
‫ﺒﻴ ﺖ ‪Python 3 ،‬ﻓﺮاﺟﻊ‬
‫ﺜ‬‫ﺗﺮﻳﺪﺗ‬
‫ﺑـ ‪Python 2‬و‬‫ﺒ ﺐ ﻣﺎ أو إذا ﻛﺎن ﻧﻈﺎﻣﻚ ﻣﺰودًا‬
‫ﺒﻴ ﺖ ‪Python‬ﻟ ﺴ‬
‫ﺜ‬‫ﺘﻢﺗ‬
‫وﻟﻜﻦ إذا ﻟﻢﻳ‬
‫اﻟﻤﻠﺤﻖ أ‪.‬‬

‫ﺒﻴ ﺖ ﻣﺤﺮر ﻧﺼﻮص‬


‫ﺜ‬‫ﺗ‬

‫ﺒﺎﺷﺮة ﻣﻦ اﻟﻤﺤﺮر‬
‫ﺒﺎ ﻣ‬
‫ﺑﺮاﻣﺠﻚﺗﻘﺮﻳ ً‬‫ﺘﺸﻐﻴﻞ ﺟﻤﻴﻊ‬
‫ﺑ‬‫ﺒﻴ ﺖ ‪ ،‬وﺳﻴ ﺴﻤﺢ ﻟﻚ‬
‫ﺜ‬‫ﺘ‬‫ﺑ ﺴﻴﻂ‪ :‬إﻧﻪﺳﻬﻞ اﻟ‬‫‪ Geany‬ﻫﻮ ﻣﺤﺮر ﻧﺼﻮص‬
‫ﺘﻰ‬
‫ﺑﻚ ﻓ ﻲ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ ﺣ‬‫ﺗﺸﻐﻴﻞ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺑﻚ ‪ ،‬و‬‫ﺘﻠﻮﻳﻦ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻟ‬ ‫ﺑﺪﻻ ً ﻣﻦ ﻣﺤﻄ ﺔ ‪ ،‬وﻳ ﺴ‬
‫ﺘﺨﺪمﺗﻤﻴﻴﺰ‬
‫ﺑﺮاﻣﺞﺗﺤﺮﻳﺮ اﻟﻨﺼﻮص اﻷﺧﺮى ‪ ،‬ﻟﻜﻨ ﻲ‬‫ﺘﺨﺪام اﻟﻤﺤﻄﺎ ت‪.‬ﻳﻮﻓﺮ اﻟﻤﻠﺤﻖ ب ﻣﻌﻠﻮﻣﺎ ت ﻋﻦ‬
‫ﺘﺎد ﻋﲆ اﺳ‬
‫ﺘﻤﻜﻦ ﻣﻦ ذﻟﻚ‪.‬ﺗﻌ‬
‫ﺗ‬
‫ﺘﻠﻒ‪.‬‬
‫ﺘﺨﺪام ﻣﺤﺮر ﻣﺨ‬
‫ﺒ ﺐ وﺟﻴﻪ ﻻﺳ‬
‫ﺘﺨﺪام ‪Geany‬ﻣﺎ ﻟﻢﻳﻜﻦ ﻟﺪﻳﻚﺳ‬
‫ﺑﺎﺳ‬‫أوﺻ ﻲ‬

‫ﺒﻴ ﺖ ‪Geany‬ﻓ ﻲﺳﻄﺮ واﺣﺪ ﻋﲆ ﻣﻌﻈﻢ أﻧﻈﻤ ﺔ ‪Linux:‬‬


‫ﺜ‬‫ﻳﻤﻜﻨﻚﺗ‬

‫‪sudo apt-get install geany‬‬

‫إذا ﻟﻢﻳﻔﻠﺢ ذﻟﻚ ‪ ،‬ﻓﺮاﺟﻊ اﻹرﺷﺎدا ت اﻟﻤﻮﺟﻮدة ﻋﲆ ‪http://geany.org/Download/‬‬


‫‪ThirdPartyPackages /.‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪Hello World‬‬‫ﺗﺸﻐﻴﻞ‬

‫ﺑﺤ ﺚ ﻋﻦ ‪Geany‬‬
‫ﺘﺎح )‪Windows‬وا‬
‫ﺒﺎ ﻣﺎﻳ ﺴﻤﻰ ﻣﻔ‬
‫ﺘﺎح ‪)Super‬ﻏﺎﻟ ً‬
‫ﺘﺢ ‪Geany.‬اﺿﻐﻂ ﻋﲆ ﻣﻔ‬
‫ﺑﺮﻧﺎﻣﺠﻚ اﻷول ‪ ،‬اﻓ‬‫ﺒﺪء‬
‫ﻟ‬
‫ﺛﻢ أﻧﺸ ﺊ ﻣﺠﻠﺪًا ﻓ ﻲ ﻣﻜﺎن ﻣﺎ‬‫ﺘ ﺐ‪.‬‬
‫ﺘﺼﺎر ﻋﻦ ﻃﺮﻳﻖﺳﺤ ﺐ اﻟﺮﻣﺰ إﱃ ﺷﺮﻳﻂ اﻟﻤﻬﺎم أوﺳﻄﺢ اﻟﻤﻜ‬
‫ﺑﻌﻤﻞ اﺧ‬‫ﻋﲆ ﻧﻈﺎﻣﻚ‪ .‬ﻗﻢ‬
‫ﺘﺨﺪام اﻷﺣﺮف اﻟﺼﻐﻴﺮة واﻟﺸﺮﻃﺎ ت اﻟ ﺴﻔﻠﻴ ﺔ‬
‫ﺘﻪ ‪)python_work.‬ﻣﻦ اﻷﻓﻀﻞ اﺳ‬
‫ﺘ ﺴﻤﻴ‬
‫ﺑ‬‫ﻋﲆ ﻧﻈﺎﻣﻚ ﻟﻤﺸﺎرﻳﻌﻚ وﻗﻢ‬
‫ﻟﻠﻤ ﺴﺎﻓﺎ ت ﻓ ﻲ أﺳﻤﺎء اﻟﻤﻠﻔﺎ ت واﻟﻤﺠﻠﺪا تﻷن ﻫﺬه اﺻﻄﻼﺣﺎ تﺗ ﺴﻤﻴ ﺔ )‪Python.‬ارﺟﻊ إﱃ ‪Geany‬واﺣﻔﻆ ﻣﻠﻒ‬
‫ً‬
‫ﻓﺎرﻏﺎ )‪(File4Save As‬ﻳ ﺴﻤﻰ ‪hello_world.py‬ﻓ ﻲ _‪python‬‬ ‫‪Python‬‬

‫ﺑﻜﻴﻔﻴ ﺔﺗﺸﻐﻴﻞ‬
‫ﺒﺮ ‪Geany‬‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python.‬ﻛﻤﺎ أﻧﻪﻳﺨ‬‫ﺘﻮي ﻋﲆ‬
‫ﺒﺮ ‪Geany‬أن ﻣﻠﻔﻚﺳﻴﺤ‬
‫ﻣﺠﻠﺪ اﻟﻌﻤﻞ ‪ .‬اﻟﻤﻠﺤﻖ ‪yp.‬ﻳﺨ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﻔﻴﺪة‪.‬‬‫ﺑﺮاز اﻟﻨﺺ‬
‫ﺑﺮﻧﺎﻣﺠﻚ وإ‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺑﻌﺪ ﺣﻔﻆ ﻣﻠﻔﻚ ‪ ،‬أدﺧﻞ اﻟ ﺴﻄﺮ اﻟ‬

‫ﺒﺎﻋ ﺔ )"!‪("Hello Python world‬‬


‫ﻃ‬

‫ﺘﺨﺪام‬
‫ﺘﺄﻛﺪ ﻣﻦﺗﻜﻮﻳﻦ ‪Geany‬ﻻﺳ‬
‫ﺘﺎج إﱃ اﻟ‬
‫ﺘﺤ‬‫ﺘﻌﺪدة ﻣﻦ ‪Python‬ﻋﲆ ﻧﻈﺎﻣﻚ ‪ ،‬ﻓ ﺴ‬
‫ﺒﻴ ﺖ إﺻﺪارا ت ﻣ‬
‫ﺜ‬‫إذاﺗﻢﺗ‬
‫ﺘﻴﻦ ‪Compile and Execute‬ﻣﻊ‬
‫ﺘﻘﻞ إﱃ ‪Build4Set Build Commands.‬ﻳﺠ ﺐ أنﺗﺮى اﻟﻜﻠﻤ‬
‫اﻹﺻﺪار اﻟﺼﺤﻴﺢ‪ .‬اﻧ‬
‫ﺘﺨﺪم‬
‫ﺘﺮض ‪Geany‬أن اﻷﻣﺮ اﻟﺼﺤﻴﺢ ﻟﻜﻞ ﻣﻨﻬﺎ ﻫﻮ ‪python ،‬وﻟﻜﻦ إذا ﻛﺎن ﻧﻈﺎﻣﻚﻳ ﺴ‬
‫ﺑﺠﺎﻧ ﺐ ﻛﻞ ﻣﻨﻬﻤﺎ‪.‬ﻳﻔ‬
‫‪com mand‬‬
‫ﺘﺎج إﱃﺗﻐﻴﻴﺮ ﻫﺬا‪.‬‬
‫ﺘﺤ‬‫أﻣﺮ ‪python3 ،‬ﻓ ﺴ‬

‫ﺘﺨﺪم‬
‫ﺑﺤﻴ ﺚﻳ ﺴ‬
‫ﺘﻐﻴﻴﺮ اﻷﻣﺮﻳﻦ ‪Compile and Execute‬‬
‫ﺑ‬‫إذا ﻛﺎن اﻷﻣﺮ ‪python3‬ﻳﻌﻤﻞ ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ ‪ ،‬ﻓﻘﻢ‬
‫ﺘﺮﺟﻤ ﺔ ﻛﻤﺎﻳﻠ ﻲ‪:‬‬
‫ﺒﺪو أﻣﺮ اﻟ‬
‫‪Geany‬ﻟﻐ ﺔ ‪Python 3 inter preter.‬ﻳﺠ ﺐ أنﻳ‬

‫"‪python3 -m py_compile "٪ f‬‬

‫‪6‬اﻟﻔﺼﻞ ‪1‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴﺮة ﻣﻊ ﻣﺎ ﻫﻮ ﻣﻌﺮوض‬
‫ﺑﻖ اﻟﻤ ﺴﺎﻓﺎ ت واﻷﺣﺮف اﻟﻜ‬
‫ﺗﻤﺎﻣﺎ ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ‪.‬ﺗﺄﻛﺪ ﻣﻦﺗﻄﺎ‬
‫ً‬ ‫ﺑ ﺔ ﻫﺬا اﻷﻣﺮ‬
‫ﺘﺎ‬
‫ﺘﺎج إﱃ ﻛ‬
‫ﺗﺤ‬
‫ﻫﻨﺎ‪.‬‬
‫ﺘﻨﻔﻴﺬ ﻛﻤﺎﻳﻠ ﻲ‪:‬‬
‫ﺒﺪو أﻣﺮ اﻟ‬
‫ﻳﺠ ﺐ أنﻳ‬

‫"‪python3 "٪ f‬‬

‫ﺒﻴﺮة ﻣﻊ ﻣﺎ ﻫﻮ ﻣﻌﺮوض‬
‫ﺑﻖ اﻟﻤ ﺴﺎﻓﺎ ت واﻷﺣﺮف اﻟﻜ‬
‫ﻣﺮة أﺧﺮى ‪،‬ﺗﺄﻛﺪ ﻣﻦﺗﻄﺎ‬
‫ﺒﺪو ﻫﺬه اﻷواﻣﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔﺗﻜﻮﻳﻦ ‪Geany.‬‬
‫ﻫﻨﺎ‪.‬ﻳﻮﺿﺢ اﻟﺸﻜﻞ ‪1-1‬ﻛﻴﻒﻳﺠ ﺐ أنﺗ‬

‫ﺘﺨﺪام ‪Python 3‬ﻋﲆ ‪Linux.‬‬


‫اﻟﺸﻜﻞ ‪ 1-1:‬ﻫﻨﺎ ‪،‬ﺗﻢﺗﻜﻮﻳﻦ ‪Geany‬ﻻﺳ‬

‫ﺑﺎﻟﻨﻘﺮ ﻓﻮق أﻳﻘﻮﻧ ﺔ‬‫ﺘﺸﻐﻴﻞ ‪hello_world.py‬ﻋﻦ ﻃﺮﻳﻖﺗﺤﺪﻳﺪ ‪Build4Execute‬ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪،‬‬


‫ﺑ‬‫اﻵن ﻗﻢ‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﲆ ‪F5.‬‬‫ﺘﺮوس( ‪ ،‬أو‬
‫ﺘ ﻲﺗﻌﺮض ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟ‬
‫ﺘﻨﻔﻴﺬ )اﻟ‬
‫اﻟ‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﻳﺠ ﺐ أنﺗﻈﻬﺮ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ ﻣﻊ اﻹﺧﺮاج اﻟ‬

‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺑﻌﺎﻟﻢ‬‫ﺒﺎ‬
‫ﻣﺮﺣ ً‬

‫‪------------------‬‬

‫ﺑﺮﻣﺰ‪0) :‬‬‫ﺒﺮﻧﺎﻣﺞ‬
‫)ﺧﺮج اﻟ‬
‫ﺑﻌ ﺔ‬
‫ﺘﺎ‬
‫اﺿﻐﻂ ﻋﲆ اﻟﻌﻮدة ﻟﻠﻤ‬

‫ﺑﺎﻷﺣﺮف‬‫ﺒﺎﻋ ﺔ‬
‫ﺘﻔﺎدة ﻣﻦ اﻟﻄ‬
‫ﺑﺎﻻﺳ‬‫ﺑﺎﻟﺨﻄﺄ‬‫ﺘﻪ‪ .‬ﻫﻞ ﻗﻤ ﺖ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﻛﻞ ﺣﺮف ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟﺬي أدﺧﻠ‬
‫إذا ﻛﻨ ﺖ ﻻﺗﺮى ﻫﺬا ‪ ،‬ﻓ‬
‫ﺑﻨﺎء ﺟﻤﻠ ﺔ ﻣﺤﺪدًا ﺟﺪًا ‪ ،‬وإذا ﻟﻢﺗﻘﺪم‬‫ﺒﺮﻣﺠ ﺔ‬
‫ﺘﻮﻗﻊ ﻟﻐﺎ ت اﻟ‬
‫ﺘ ﻲ اﻟﺤﺼﺺ أو اﻟﻘﻮﺳﻴﻦ أو ﻛﻠﻴﻬﻤﺎ؟ﺗ‬
‫ﺒﻴﺮة؟ ﻫﻞ ﻧ ﺴﻴ ﺖ إﺣﺪى ﻋﻼﻣ‬
‫اﻟﻜ‬
‫ﺒﻴ ﺖ وإﺻﻼﺣﻬﺎ" ﻓ ﻲ‬
‫ﺜ‬‫ﺘ‬‫ﺘﻜﺸﺎف ﻣﺸﻜﻼ ت اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻓﺮاﺟﻊ "اﺳ‬
‫ﺘﻤﻜﻦ ﻣﻦﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘﺤﺼﻞ ﻋﲆ أﺧﻄﺎء‪ .‬إذا ﻟﻢﺗ‬
‫ذﻟﻚ ‪ ،‬ﻓ ﺴ‬
‫اﻟﺼﻔﺤ ﺔ ‪15.‬‬

‫ﺒﺪء ‪7‬‬
‫اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻮن ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ‬
‫ﺑﺎﻳ‬‫ﺗﺸﻐﻴﻞ‬

‫ﺑ ﺔ ‪python‬أو ‪python3 ،‬ﻛﻤﺎ‬


‫ﺘﺎ‬
‫ﺘﺢ ‪Terminal‬وﻛ‬
‫ﺘﻄﻔﺎ ت ﻣﻦ ﻛﻮد ‪Python‬ﻋﻦ ﻃﺮﻳﻖ ﻓ‬
‫ﺑ ﺔﺗﺸﻐﻴﻞ ﻣﻘ‬
‫ﻳﻤﻜﻨﻚﺗﺠﺮ‬
‫ﺘﺎﻟ ﻲ ﻓ ﻲ ﺟﻠ ﺴ ﺔ اﻟﻤﺤﻄ ﺔ‪:‬‬
‫ﺑﺬﻟﻚ ﻣﺮة أﺧﺮى ‪ ،‬وﻟﻜﻦ ﻫﺬه اﻟﻤﺮة أدﺧﻞ اﻟ ﺴﻄﺮ اﻟ‬‫ﺘﺤﻘﻖ ﻣﻦ إﺻﺪارك‪ .‬ﻗﻢ‬
‫ﻓﻌﻠ ﺖ ﻋﻨﺪ اﻟ‬

‫ﺜﻮن!"(‬
‫ﺑﺎﻳ‬‫ﺒﺎ‬
‫ﺘﺮﺟﻢ ﻣﺮﺣ‬
‫ﺒﺎﻋ ﺔ )"ﻣ‬
‫>>>ﻃ‬
‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺘﺮﺟﻢ‬
‫ﺒﺎ ﻣ‬
‫ﻣﺮﺣ‬
‫>>>‬

‫ﺘﺮﺟﻢ ‪Python‬‬
‫ﺒﺎﺷﺮة ﻓ ﻲ ﻧﺎﻓﺬة اﻟﻤﺤﻄ ﺔ اﻟﺤﺎﻟﻴ ﺔ‪.‬ﺗﺬﻛﺮ أﻧﻪﻳﻤﻜﻨﻚ إﻏﻼق ﻣ‬
‫ﺒﻮﻋ ﺔ ﻣ‬
‫ﺘﻚ ﻣﻄ‬
‫ﻳﺠ ﺐ أنﺗﺮى رﺳﺎﻟ‬
‫ﺑ ﺔ اﻷﻣﺮ ‪exit ().‬‬
‫ﺘﺎ‬
‫ﺑﻜ‬‫ﺑﺎﻟﻀﻐﻂ ﻋﲆ ‪ctrl-D‬أو‬

‫‪Python‬ﻋﲆ ‪OS X‬‬


‫ﺒﻴ ﺖ‬
‫ﺜ‬‫ﺘﺎج إﱃﺗ‬
‫ﺘﺤ‬‫ﺘﻪ ‪،‬ﺳ‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺑﻤﺠﺮد أنﺗﻌﺮف أن ‪Python‬ﻗﺪﺗﻢﺗ‬
‫ﺑﺎﻟﻔﻌﻞ ﻋﲆ ﻣﻌﻈﻢ أﻧﻈﻤ ﺔ ‪OS X.‬‬
‫ﺒﻴ ﺖ ‪Python‬‬
‫ﺜ‬‫ﺗﻢﺗ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺘﻪ‬
‫ﺘﺄﻛﺪ ﻣﻦﺗﻬﻴﺌ‬
‫ﻣﺤﺮر ﻧﺼﻮص واﻟ‬

‫ﺒﻴ ﺖ ‪Python‬‬
‫ﺜ‬‫ﺘﺤﻘﻖ ﻣﻦﺗ‬
‫اﻟ‬

‫ﺘﻘﺎل إﱃ ‪Applications4Utilities4Terminal.‬‬
‫ﺑﺎﻻﻧ‬‫ﺘﺢ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ‬
‫اﻓ‬
‫ﺘﺎح اﻹدﺧﺎل‪.‬‬
‫ﺛﻢ اﻟﻀﻐﻂ ﻋﲆ ﻣﻔ‬
‫ﺘ ﺐ ‪Terminal ،‬‬
‫ﺘﺎح ﻣ ﺴﺎﻓ ﺔ اﻷواﻣﺮ ‪ ،‬واﻛ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﻟﻀﻐﻂ ﻋﲆ ﻣﻔ‬
‫ﺑﺈﺻﺪار‬‫ﺒﺮك‬
‫ﺑﺤﺮف ‪ p‬ﺻﻐﻴﺮ‪.‬ﻳﺠ ﺐ أنﺗﺮى ﻣﺨﺮﺟﺎ تﺗﺨ‬
‫ﺘ ﺔ أم ﻻ ‪ ،‬أدﺧﻞ ‪python‬‬
‫ﺒ‬‫ﺜ‬‫ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎﻧ ﺖ ‪Python‬ﻣ‬
‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﺒﺪء ﻓ ﻲ إدﺧﺎل أواﻣﺮ ‪Python ،‬ﻣ‬
‫ﺒ ﺖ ﻋﲆ ﻧﻈﺎﻣﻚ وﻣﻮﺟﻪ >>>ﺣﻴ ﺚﻳﻤﻜﻨﻚ اﻟ‬
‫ﺜ‬‫‪Python‬اﻟﻤ‬

‫ﺜﻮن‬
‫ﺑﻴ‬‫‪$‬‬
‫ﺘﺮاﺿ ﻲ ‪9 ،‬آذار )ﻣﺎرس( )‪2014 ، 22:15:05‬‬
‫‪)Python 2.7.5‬اﻓ‬
‫ﺘﻮاﻓﻖ ])‪Apple LLVM 5.0 (clang-500.0.68‬ﻋﲆ داروﻳﻦ‬
‫‪[GCC 4.2.1‬ﻣ‬
‫ﺗﺮﺧﻴﺺ" ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬
‫ﺘﻤﺎﻧﺎ ت" أو "‬
‫ﺒﻊ وﻧﺸﺮ" أو "اﺋ‬
‫ﺘ ﺐ "ﻣ ﺴﺎﻋﺪة" أو "ﺣﻘﻮق ﻃ‬
‫اﻛ‬
‫>>>‬

‫ﺗﺮ‪ .‬ﻋﻨﺪﻣﺎﺗﺮى ﻫﺬا‬


‫ﺒﻴﻮ‬
‫ﺒ ﺖ ﺣﺎﻟ ًﻴﺎ ﻋﲆ ﻫﺬا اﻟﻜﻤ‬
‫ﺜ‬‫ﺘﺮاﺿ ﻲ اﻟﻤ‬
‫ﺒﺮك ﻫﺬا اﻹﺧﺮاج أن ‪ Python 2.7.5‬ﻫﻮ اﻹﺻﺪار اﻻﻓ‬
‫ﻳﺨ‬
‫ﺘﺮك ﻣﻮﺟﻪ ‪Python‬واﻟﻌﻮدة إﱃ ﻣﻮﺟﻪ اﻟﻤﺤﻄ ﺔ اﻟﻄﺮﻓﻴ ﺔ‪.‬‬
‫اﻹﺧﺮاج ‪ ،‬اﺿﻐﻂ ﻋﲆ ‪ctrl-D‬أو أدﺧﻞ )( ‪exit‬ﻟ‬

‫ﺘﺤﻘﻖ ﻣﻦ وﺟﻮد ‪Python 3 ،‬ﺟﺮ ب اﻷﻣﺮ ‪python3.‬ﻗﺪﺗﺤﺼﻞ ﻋﲆ رﺳﺎﻟ ﺔ ﺧﻄﺄ ‪ ،‬وﻟﻜﻦ إذا أﻇﻬﺮ اﻹﺧﺮاج أن ﻟﺪﻳﻚ‬
‫ﻟﻠ‬
‫ﺘﻪ‪ .‬إذا ﻛﺎن ‪python3‬ﻳﻌﻤﻞ ﻋﲆ ﻧﻈﺎﻣﻚ ‪،‬‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺘﺨﺪام ‪Python 3‬دون اﻟﺤﺎﺟ ﺔ إﱃﺗ‬
‫ﺘﻤﻜﻦ ﻣﻦ اﺳ‬
‫ﺘ‬‫ﺘًﺎ ‪ ،‬ﻓ ﺴ‬
‫ﺒ‬‫ﺜ‬‫‪Python 3‬ﻣ‬
‫ﺘﺨﺪام ‪python3‬‬
‫ﺘﺎ ب ‪،‬ﺗﺄﻛﺪ ﻣﻦ اﺳ‬
‫ﻓﻜﻠﻤﺎ رأﻳ ﺖ أﻣﺮ ‪python‬ﻓ ﻲ ﻫﺬا اﻟﻜ‬

‫ﺒﻴ ﺖ ‪Python 3‬اﻵن ‪ ،‬ﻓﺮاﺟﻊ‬


‫ﺜ‬‫ﺗﺮﻳﺪﺗ‬
‫ﺒ ﺐ ﻣﺎ أو إذا ﻛﺎن ﻟﺪﻳﻚ ‪Python 2‬ﻓﻘﻂ و‬ ‫ﺑﺪﻻ ً ﻣﻦ‪ .‬إذا ﻟﻢﻳﺄ‬
‫ﺗ ﻲ ﻧﻈﺎﻣﻚ ﻣﻊ ‪Python‬ﻟ ﺴ‬
‫اﻟﻤﻠﺤﻖ أ‪.‬‬

‫‪8‬اﻟﻔﺼﻞ ‪1‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻮن ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ‬
‫ﺑﺎﻳ‬‫ﺗﺸﻐﻴﻞ‬

‫ﺑ ﺔ ‪python‬أو ‪python3 ،‬ﻛﻤﺎ‬


‫ﺘﺎ‬
‫ﺘﺢ ‪Terminal‬وﻛ‬
‫ﺘﻄﻔﺎ ت ﻣﻦ ﻛﻮد ‪Python‬ﻋﻦ ﻃﺮﻳﻖ ﻓ‬
‫ﺑ ﺔﺗﺸﻐﻴﻞ ﻣﻘ‬
‫ﻳﻤﻜﻨﻚﺗﺠﺮ‬
‫ﺘﺎﻟ ﻲ ﻓ ﻲ ﺟﻠ ﺴ ﺔ اﻟﻤﺤﻄ ﺔ‪:‬‬
‫ﺑﺬﻟﻚ ﻣﺮة أﺧﺮى ‪ ،‬وﻟﻜﻦ ﻫﺬه اﻟﻤﺮة أدﺧﻞ اﻟ ﺴﻄﺮ اﻟ‬‫ﺘﺤﻘﻖ ﻣﻦ إﺻﺪارك‪ .‬ﻗﻢ‬
‫ﻓﻌﻠ ﺖ ﻋﻨﺪ اﻟ‬

‫ﺜﻮن!"(‬
‫ﺑﺎﻳ‬‫ﺒﺎ‬
‫ﺘﺮﺟﻢ ﻣﺮﺣ‬
‫ﺒﺎﻋ ﺔ )"ﻣ‬
‫>>>ﻃ‬
‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺘﺮﺟﻢ‬
‫ﺒﺎ ﻣ‬
‫ﻣﺮﺣ‬
‫>>>‬

‫ﺘﺮﺟﻢ ‪Python‬‬
‫ﺒﺎﺷﺮة ﻓ ﻲ ﻧﺎﻓﺬة اﻟﻤﺤﻄ ﺔ اﻟﺤﺎﻟﻴ ﺔ‪.‬ﺗﺬﻛﺮ أﻧﻪﻳﻤﻜﻨﻚ إﻏﻼق ﻣ‬
‫ﺒﻮﻋ ﺔ ﻣ‬
‫ﺘﻚ ﻣﻄ‬
‫ﻳﺠ ﺐ أنﺗﺮى رﺳﺎﻟ‬
‫ﺑ ﺔ اﻷﻣﺮ ‪exit ().‬‬
‫ﺘﺎ‬
‫ﺑﻜ‬‫ﺑﺎﻟﻀﻐﻂ ﻋﲆ ‪ctrl-D‬أو‬

‫ﺒﻴ ﺖ ﻣﺤﺮر ﻧﺼﻮص‬


‫ﺜ‬‫ﺗ‬

‫ﺒﺎ‬
‫ﺑﺮاﻣﺠﻚﺗﻘﺮﻳ ً‬‫ﺘﺸﻐﻴﻞ ﺟﻤﻴﻊ‬
‫ﺑ‬‫ﺘﻪ ﻋﲆ ‪OS X ،‬وﺳﻴ ﺴﻤﺢ ﻟﻚ‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺑ ﺴﻴﻂ‪ :‬ﻣﻦ اﻟ ﺴﻬﻞﺗ‬‫‪ Sublime Text‬ﻫﻮ ﻣﺤﺮر ﻧﺼﻮص‬
‫ﺗﺸﻐﻴﻞ اﻟﻜﻮد‬
‫ﺑﻚ ‪ ،‬و‬‫ﺘﻠﻮﻳﻦ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻟ‬ ‫ﺑﺪﻻ ً ﻣﻦ اﻟﻤﺤﻄ ﺔ اﻟﻄﺮﻓﻴ ﺔ ‪ ،‬وﻳ ﺴ‬
‫ﺘﺨﺪمﺗﻤﻴﻴﺰ‬ ‫ً‬
‫ﺒﺎﺷﺮة ﻣﻦ اﻟﻤﺤﺮر‬
‫ﻣ‬
‫ﺘ ﺴﻬﻴﻞ رؤﻳ ﺔ اﻹﺧﺮاج‪.‬ﻳﻮﻓﺮ اﻟﻤﻠﺤﻖ ب ﻣﻌﻠﻮﻣﺎ ت‬
‫ﺑﻚ ﻓ ﻲ ﻣﺤﻄ ﺔ ﻃﺮﻓﻴ ﺔ ﺟﻠ ﺴ ﺔ ﻣﺪﻣﺠ ﺔ ﻓ ﻲ ﻧﺎﻓﺬة ‪Sublime Text‬ﻟ‬‫اﻟﺨﺎص‬
‫ﺘﺨﺪام ﻣﺤﺮر‬
‫ﺒ ﺐ وﺟﻴﻪ ﻻﺳ‬
‫ﺘﺨﺪام ‪Sublime Text‬ﻣﺎ ﻟﻢﻳﻜﻦ ﻟﺪﻳﻚﺳ‬
‫ﺑﺎﺳ‬‫ﺑﺮاﻣﺞﺗﺤﺮﻳﺮ اﻟﻨﺼﻮص اﻷﺧﺮى ‪ ،‬ﻟﻜﻨ ﻲ أوﺻ ﻲ‬‫ﻋﻦ‬
‫ﺘﻠﻒ‪.‬‬
‫ﻣﺨ‬

‫ﺒﻴ ﺖ ﻟـ ‪Sublime Text‬ﻣﻦ ‪http: // sublimetext‬‬


‫ﺜ‬‫ﻳﻤﻜﻨﻚﺗﻨﺰﻳﻞ أداةﺗ‬
‫ﺘﻮي ‪Sublime Text‬ﻋﲆﺳﻴﺎﺳ ﺔﺗﺮﺧﻴﺺ‬
‫ﺘﺸﻐﻴﻞ ‪OS X.‬ﻳﺤ‬
‫ﺒ ﺖ ﻟﻨﻈﺎم اﻟ‬
‫ﺜ‬‫ﺑﺤ ﺚ ﻋﻦ ﻣ‬
‫ﺘﻨﺰﻳﻞ وا‬
‫ﺑﻂ اﻟ‬
‫‪.com / 3.‬اﻧﻘﺮ ﻓﻮق را‬
‫ﺘﺨﺪام اﻟﻤﺤﺮر ﻣﺠﺎﻧًﺎ ﻃﺎﻟﻤﺎ أرد ت ‪ ،‬ﻟﻜﻦ اﻟﻤﺆﻟﻒﻳﻄﻠ ﺐ ﺷﺮاءﺗﺮﺧﻴﺺ إذا ﻛﻨ ﺖﺗﺮﻏ ﺐ ﻓ ﻲ ذﻟﻚ‪.‬‬
‫ﺘﺤﺮرة ﻟﻠﻐﺎﻳ ﺔ‪:‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﻣ‬
‫ﺒﻴﻘﺎ ت ‪.‬‬
‫ﺘﻄ‬‫ﺛﻢ اﺳﺤ ﺐ رﻣﺰ ‪Sublime Text‬إﱃ ﻣﺠﻠﺪ اﻟ‬‫ﺘﺤﻪ‬
‫ﺒﻴ ﺖ ‪ ،‬اﻓ‬
‫ﺜ‬‫ﺘ‬‫ﺑﺮﻧﺎﻣﺞ اﻟ‬‫ﺑﻌﺪﺗﻨﺰﻳﻞ‬‫ﺘﻤﺮ‪.‬‬
‫ﺘﺨﺪام اﻟﻤ ﺴ‬
‫اﻻﺳ‬

‫ﺗﻜﻮﻳﻦ ﻧﺺ ‪Sublime‬ﻟـ ‪Python 3‬‬

‫ﺘﻰﻳﻌﺮف‬
‫ﺘﺎج إﱃﺗﻜﻮﻳﻦ ‪Sublime Text‬ﺣ‬
‫ﺘﺤ‬‫ﺒﺪء ﺟﻠ ﺴ ﺔ ‪Python‬اﻟﻄﺮﻓﻴ ﺔ ‪ ،‬ﻓ ﺴ‬
‫ﺘﺨﺪم أﻣ ﺮًا آﺧﺮ ﻏﻴﺮ ‪python‬ﻟ‬
‫إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺘﺮﺟﻢ‬
‫ﺘﺎﻟ ﻲ ﻟﻤﻌﺮﻓ ﺔ اﻟﻤ ﺴﺎر اﻟﻜﺎﻣﻞ ﻟﻤ‬
‫ﺑﺈﺻﺪار اﻷﻣﺮ اﻟ‬‫ﺜﻮر ﻋﲆ اﻹﺻﺪار اﻟﺼﺤﻴﺢ ﻣﻦ ‪Python‬ﻋﲆ ﻧﻈﺎﻣﻚ‪ .‬ﻗﻢ‬
‫ﻣﻜﺎن اﻟﻌ‬
‫ﺑﻚ‪:‬‬‫‪Python‬اﻟﺨﺎص‬

‫‪$ type -a python3‬‬


‫ﻳﻜﻮن ‪ python3‬ﻫﻮ ‪usr / local / bin / python3 /‬‬

‫ﺘﺢ ﻟﻚ‬
‫ﺘﻘﻞ إﱃ ‪Tools4Build System4New Build System ،‬واﻟﺬيﺳﻴﻔ‬
‫ﺘﺢ اﻵن ‪Sublime Text ،‬واﻧ‬
‫اﻓ‬
‫ﻣﻠﻒﺗﻜﻮﻳﻦ ﺟﺪﻳﺪ‪ .‬اﺣﺬف ﻣﺎﺗﺮاه وأدﺧﻞ ﻣﺎﻳﻠ ﻲ‪:‬‬

‫‪build‬‬ ‫{‬
‫‪Python3 .sublime-‬‬ ‫‪"cmd": ["/ usr / local / bin / python3"، "-u"، "$ file"]،‬‬
‫}‬

‫ﺒﺪء ‪9‬‬
‫اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮح ﺣﺎﻟ ًﻴﺎ‪.‬‬


‫ﺑﻨﻈﺎﻣﻚ ﻋﻨﺪﺗﺸﻐﻴﻞ اﻟﻤﻠﻒ اﻟﻤﻔ‬‫ﺘﺨﺪام أﻣﺮ ‪python3‬اﻟﺨﺎص‬
‫ﺑﺎﺳ‬
‫ﺒﺮ ﻫﺬا اﻟﺮﻣﺰ ‪Sublime Text‬‬
‫ﻳﺨ‬
‫ﺑﺎﺳﻢ‬‫ﺑﻘ ﺔ‪ .‬اﺣﻔﻆ اﻟﻤﻠﻒ‬
‫ﺗﻪ ﻋﻨﺪ إﺻﺪار اﻷﻣﺮ ﻣﻦ ﻧﻮع ‪-a python3‬ﻓ ﻲ اﻟﺨﻄﻮة اﻟ ﺴﺎ‬
‫ﺘﺨﺪام اﻟﻤ ﺴﺎر اﻟﺬي وﺟﺪ‬
‫ﺗﺄﻛﺪ ﻣﻦ اﺳ‬
‫ﺘﺎر ﺣﻔﻆ‪.‬‬
‫ﺘﺤﻪ ‪Sublime Text‬ﻋﻨﺪﻣﺎﺗﺨ‬
‫ﺘﺮاﺿ ﻲ اﻟﺬيﻳﻔ‬
‫‪Python3.sublime-build‬ﻓ ﻲ اﻟﺪﻟﻴﻞ اﻻﻓ‬

‫ﺑﺮﻧﺎﻣﺞ ‪Hello World‬‬‫ﺗﺸﻐﻴﻞ‬

‫ﺟﺎ ﻓﻮق رﻣﺰ ‪Text.‬‬


‫ﺒﻴﻘﺎ ت واﻟﻨﻘﺮ ﻧﻘ ﺮًا ﻣﺰدو ً‬
‫ﺘﻄ‬‫ﺘﺢ ﻣﺠﻠﺪ اﻟ‬
‫ﺘﺸﻐﻴﻞ ‪Sublime Text‬ﻋﻦ ﻃﺮﻳﻖ ﻓ‬
‫ﺑ‬‫ﺑﺮﻧﺎﻣﺠﻚ اﻷول ‪ ،‬ﻗﻢ‬‫ﺒﺪء‬
‫ﻟ‬
‫ﺜﻖ‪.‬‬
‫ﺒ‬‫ﺒﺤ ﺚ اﻟﻤﻨ‬
‫ﺘﺎح ﻣ ﺴﺎﻓ ﺔ اﻷواﻣﺮ وإدﺧﺎل ﻧﺺ رﻓﻴﻊ ﻓ ﻲ ﺷﺮﻳﻂ اﻟ‬ ‫‪Sublime‬ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﻟﻀﻐﻂ ﻋﲆ ﻣﻔ‬

‫ﺘﺨﺪام اﻷﺣﺮف‬
‫ﺑﺈﻧﺸﺎء ﻣﺠﻠﺪﻳ ﺴﻤﻰ ‪python_work‬ﻓ ﻲ ﻣﻜﺎن ﻣﺎ ﻋﲆ ﻧﻈﺎﻣﻚ ﻟﻤﺸﺎرﻳﻌﻚ‪) .‬ﻣﻦ اﻷﻓﻀﻞ اﺳ‬‫ﻗﻢ‬
‫اﻟﺼﻐﻴﺮة واﻟﺸﺮﻃﺎ ت اﻟ ﺴﻔﻠﻴ ﺔ ﻟﻠﻤ ﺴﺎﻓﺎ ت ﻓ ﻲ أﺳﻤﺎء اﻟﻤﻠﻔﺎ ت واﻟﻤﺠﻠﺪا ت ‪،‬ﻷن ﻫﺬه اﺻﻄﻼﺣﺎ تﺗ ﺴﻤﻴ ﺔ )‪Python.‬اﺣﻔﻆ‬
‫ً‬
‫ﻓﺎرﻏﺎ )‪(File4Save As‬ﻳ ﺴﻤﻰ ‪hello_world.py‬ﻓ ﻲ ‪python_work‬‬ ‫ﻣﻠﻒ ‪Python‬‬

‫ﺑﺮاز‬
‫ﺒﺮﻧﺎﻣﺞ وإ‬
‫ﺑﻜﻴﻔﻴ ﺔﺗﺸﻐﻴﻞ اﻟ‬‫ﺒﺮه‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬وﻳﺨ‬‫ﺘﻮي ﻋﲆ‬
‫ﺘﺪاد ‪ yp.‬ﻧﺺ ‪Sublime‬أن ﻣﻠﻔﻚﺳﻴﺤ‬
‫ﺒﺮ اﻻﻣ‬
‫ﻣﺠﻠﺪ‪.‬ﻳﺨ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﻔﻴﺪة‪.‬‬‫اﻟﻨﺺ‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺑﻌﺪ ﺣﻔﻆ ﻣﻠﻔﻚ ‪ ،‬أدﺧﻞ اﻟ ﺴﻄﺮ اﻟ‬

‫ﺒﺎﻋ ﺔ )"!‪("Hello Python world‬‬


‫ﻃ‬

‫ﺑﻚ ﻋﻦ ﻃﺮﻳﻖﺗﺤﺪﻳﺪ ‪Tools4Build‬‬‫ﺒﺮﻧﺎﻣﺞ اﻟﺨﺎص‬


‫إذا ﻛﺎن اﻷﻣﺮ ‪python‬ﻳﻌﻤﻞ ﻋﲆ ﻧﻈﺎﻣﻚ ‪ ،‬ﻓﻴﻤﻜﻨﻚﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘﺨﺪام أﻣﺮ آﺧﺮ ﻏﻴﺮ ‪python ،‬ﻓﺤﺪد ‪System‬‬
‫ﺘﻜﻮﻳﻦ ‪Sublime Text‬ﻻﺳ‬
‫ﺑ‬‫ﺑﺎﻟﻀﻐﻂ ﻋﲆ ‪ctrl-B.‬إذا ﻗﻤ ﺖ‬‫ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ أو‬
‫ﺘﻜﻮن ﻗﺎد ًرا ﻋﲆﺗﺤﺪﻳﺪ‬
‫ﺘﺮاﺿ ﻲ ﻣﻦ ‪Python ،‬وﺳ‬
‫ﺛﻢ ﺣﺪد ‪Python 3.‬و ﻫﺬاﻳﻌﻴﻦ ‪Python 3‬ﻛﺈﺻﺪار اﻓ‬
‫‪Tools4Build‬‬
‫ﺑﺮاﻣﺠﻚ ﻣﻦ اﻵن ﻓﺼﺎﻋﺪا‪.‬‬‫ﺘﺸﻐﻴﻞ‬
‫‪Tools4Build‬أو ﻓﻘﻂ اﺿﻐﻂ ﻋﲆ ‪command-B‬ﻟﻠ‬

‫ﻳﺠ ﺐ أنﺗﻈﻬﺮ ﺷﺎﺷ ﺔ ﻃﺮﻓﻴ ﺔ ﻓ ﻲ اﻟﺠﺰء اﻟ ﺴﻔﻠ ﻲ ﻣﻦ ﻓﻮز ‪Sublime Text‬‬


‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺗﺞ اﻟ‬
‫ﻳﻈﻬﺮ اﻟﻨﺎ‬

‫ﺜﻮن!‬ ‫ﺑﺎﻳ‬‫ﺑﻌﺎﻟﻢ‬‫ﺒﺎ‬
‫ﻣﺮﺣ ً‬
‫ﺛﺎﻧﻴ ﺔ[‬
‫ﺘﻬﻰ ﻓ ﻲ ‪0.1‬‬ ‫]اﻧ‬

‫ﺘﻪ‪ .‬ﻓﻌﻞ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﻛﻞ ﺣﺮف ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟﺬي أدﺧﻠ‬
‫إذا ﻛﻨ ﺖ ﻻﺗﺮى ﻫﺬا ‪ ،‬ﻓ‬
‫ﺑﻨﺎء ﺟﻤﻠ ﺔ‬‫ﺒﺮﻣﺠ ﺔ‬
‫ﺘﻮﻗﻊ ﻟﻐﺎ ت اﻟ‬
‫ﺘ ﻲ اﻟﺤﺼﺺ أو اﻟﻘﻮﺳﻴﻦ أو ﻛﻠﻴﻬﻤﺎ؟ﺗ‬
‫ﺑﺎﻟﺨﻄﺄ؟ ﻫﻞ ﻧ ﺴﻴ ﺖ إﺣﺪى ﻋﻼﻣ‬‫ﺒﺎﻋ ﺔ‬
‫ﺘﻐﻞ اﻟﻄ‬
‫ﻛﻨ ﺖﺗ ﺴ‬
‫ﺘﻜﺸﺎف ﻣﺸﻜﻼ ت‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻓﺮاﺟﻊ "اﺳ‬
‫ﺘﻤﻜﻦ ﻣﻦﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘﺤﺼﻞ ﻋﲆ أﺧﻄﺎء‪ .‬إذا ﻟﻢﺗ‬
‫ﻣﺤﺪدًا ﺟﺪًا ‪ ،‬وإذا ﻟﻢﺗﻘﺪم ذﻟﻚ ‪ ،‬ﻓ ﺴ‬
‫ﺒﻴ ﺖ وإﺻﻼﺣﻬﺎ" ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪15.‬‬
‫ﺜ‬‫ﺘ‬‫اﻟ‬

‫ﺘﺸﻐﻴﻞ ‪Windows‬‬
‫‪Python‬ﻋﲆ ﻧﻈﺎم اﻟ‬

‫ﺘﻪ‪.‬‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺗ‬‫ﺛﻢﺗﻨﺰﻳﻞ ﻣﺤﺮر ﻧﺼﻮص و‬‫ﺘﻪ ‪،‬‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺗ‬‫ﺘﺎج ﻋﲆ اﻷرﺟﺢ إﱃﺗﻨﺰﻳﻠﻪ و‬
‫ﺘﺤ‬‫ﺋﻤﺎ ﻣﻊ ‪Python ،‬ﻟﺬﻟﻚﺳ‬
‫ﺗ ﻲ ‪Windows‬دا ً‬
‫ﻻﻳﺄ‬

‫‪10‬اﻟﻔﺼﻞ ‪1‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﺒﻴ ﺖ‬
‫ﺜ‬‫ﺗ‬

‫ﺑﺪأ أو ﻋﻦ ﻃﺮﻳﻖ‬
‫ﺘﺢ ﻧﺎﻓﺬة أواﻣﺮ ﻋﻦ ﻃﺮﻳﻖ إدﺧﺎل اﻷﻣﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ا‬
‫ﺘ ﺔ ﻋﲆ ﻧﻈﺎﻣﻚ‪ .‬اﻓ‬
‫ﺒ‬‫ﺜ‬‫أوﻻ ً ‪،‬ﺗﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ ‪Python‬ﻣ‬
‫ﺘﺢ ﻧﺎﻓﺬة ‪ com mand‬ﻫﻨﺎ‪.‬‬
‫ﺗﺤﺪﻳﺪ ﻓ‬
‫ﺘﺐ و‬
‫ﺑﺰر اﻟﻤﺎوس اﻷﻳﻤﻦ ﻋﲆﺳﻄﺢ اﻟﻤﻜ‬‫ﺛﻨﺎء اﻟﻨﻘﺮ‬
‫ﺘﺎح ‪shift‬أ‬
‫ﺘﻤﺮار ﻋﲆ ﻣﻔ‬
‫ﺑﺎﺳ‬‫اﻟﻀﻐﻂ‬
‫ﺒﻴ ﺖ ‪Python‬ﻋﲆ‬
‫ﺜ‬‫ﺘﻢﺗ‬
‫ﺑﺄﺣﺮف ﺻﻐﻴﺮة‪ .‬إذاﺗﻠﻘﻴ ﺖ ﻣﻮﺟﻪ ‪Python (>>>) ،‬ﻓ ﺴﻴ‬ ‫ﻓ ﻲ اﻟﻨﺎﻓﺬة اﻟﻄﺮﻓﻴ ﺔ ‪ ،‬أدﺧﻞ ‪python‬‬
‫ﺑﻪ‪.‬‬ ‫ﺒﺮك أن ‪python‬ﻟﻴ ﺲ أﻣ ًﺮا ﻣﻌ ً‬
‫ﺘﺮﻓﺎ‬ ‫ﺘﺮى ﻋﲆ اﻷرﺟﺢ رﺳﺎﻟ ﺔ ﺧﻄﺄﺗﺨ‬
‫ﻧﻈﺎﻣﻚ‪ .‬وﻣﻊ ذﻟﻚ ‪،‬ﺳ‬

‫ﺘﻘﻞ إﱃ ‪http: //‬‬


‫ﺘﺸﻐﻴﻞ ‪Windows.‬اﻧ‬
‫ﺒﱢ ﺖ ‪Python‬ﻟﻨﻈﺎم اﻟ‬
‫ﺜ‬‫ﺘﻨﺰﻳﻞُﻣ‬
‫ﺑ‬‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬ﻗﻢ‬
‫ﺘﻨﺰﻳﻞ ‪Python 2.‬اﻧﻘﺮ ﻓﻮق زر ‪3 ،‬‬
‫ﺘﻨﺰﻳﻞ ‪Python 3‬واﻵﺧﺮ ﻟ‬
‫‪python.org/downloads/.‬ﻳﺠ ﺐ أنﺗﺮى زرﻳﻦ ‪ ،‬أﺣﺪ ﻫﻤﺎ ﻟ‬
‫ﺒ ﺖ‪.‬‬
‫ﺜ‬‫ﺘﺸﻐﻴﻞ اﻟﻤ‬
‫ﺑ‬‫ﺑﻌﺪﺗﻨﺰﻳﻞ اﻟﻤﻠﻒ ‪ ،‬ﻗﻢ‬‫ﺒﻴ ﺖ اﻟﺼﺤﻴﺢ ﻟﻨﻈﺎﻣﻚ‪.‬‬
‫ﺜ‬‫ﺘ‬‫ﺑﺮﻧﺎﻣﺞ اﻟ‬‫ﺒﺪأﺗﻠﻘﺎﺋ ًﻴﺎ ﻓ ﻲﺗﻨﺰﻳﻞ‬
‫‪Python‬واﻟﺬيﻳﺠ ﺐ أنﻳ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬ﻳﻮﺿﺢ اﻟﺸﻜﻞ‬‫ﺗﺄﻛﺪ ﻣﻦﺗﺤﺪﻳﺪ اﻟﺨﻴﺎر ‪Add Python to PATH ،‬واﻟﺬيﺳﻴﺠﻌﻞ ﻣﻦ اﻟ ﺴﻬﻞﺗﻜﻮﻳﻦ ﻧﻈﺎﻣﻚ‬
‫ﺗﺤﺪﻳﺪ ﻫﺬا اﻟﺨﻴﺎر‪.‬‬
‫‪1-2‬‬

‫ﺑﻊ اﻟﻤ ﺴﻤﻰ ‪Add Python to PATH.‬‬


‫ﺗﺄﻛﺪ ﻣﻦﺗﺤﺪﻳﺪ اﻟﻤﺮ‬
‫اﻟﺸﻜﻞ ‪1-2:‬‬

‫ﺑﺪء ﺟﻠ ﺴ ﺔ ‪Python Terminal‬‬

‫ﺘﺸﻐﻴﻞ ‪Python‬ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ‪.‬‬ ‫ﺑﻚ أﻣ ﺮًاﺳﻬ ﻼ ً إذا ﻗﻤ ﺖ أوﻻ ً‬


‫ﺑﺈﻋﺪاد ﻧﻈﺎﻣﻚ ﻟ‬ ‫ﺳﻴﻜﻮن إﻋﺪاد ﻣﺤﺮر اﻟﻨﺼﻮص اﻟﺨﺎص‬
‫ﺑﺄﺣﺮف ﺻﻐﻴﺮة‪ .‬إذاﺗﻠﻘﻴ ﺖ ﻣﻮﺟﻪ ‪Python (>>>) ،‬ﻓﻘﺪ وﺟﺪ ‪Windows‬إﺻﺪار‬
‫ﺘﺢ ﻧﺎﻓﺬة أواﻣﺮ وأدﺧﻞ ﻟﻐ ﺔ ‪python‬‬
‫اﻓ‬
‫ﺘﻮ‪:‬‬
‫ﺘﻪ ﻟﻠ‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺘ‬‫ﺑ‬‫‪Python‬اﻟﺬي ﻗﻤ ﺖ‬

‫ﺜﻮن‬
‫ﺑﻴ‬‫ج‪\> :‬‬
‫ﺑ ﺖ ])‪(Intel‬ﻋﲆ ‪win32‬‬
‫ﺒﺮ ‪2015 ، 22:15:05) [MSC v.1900 32‬‬
‫ﺘﻤ‬‫ﺒ‬
‫‪Python 3.5.0 (v3.5.0: 374f501f4567 ، 13‬ﺳ‬

‫ﺗﺮﺧﻴﺺ" ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬


‫ﺘﻤﺎﻧﺎ ت" أو "‬
‫ﺒﻊ وﻧﺸﺮ" أو "اﺋ‬
‫ﺘ ﺐ "ﻣ ﺴﺎﻋﺪة" أو "ﺣﻘﻮق ﻃ‬
‫اﻛ‬
‫>>>‬

‫ﺑﺪء‬
‫ا‬ ‫‪11‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﺸﻐﻴﻞ ‪Python‬ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ"‪.‬‬


‫ﺘﺎﻟ ﻲ ‪" ،‬‬
‫ﺘﻘﺎل إﱃ اﻟﻘ ﺴﻢ اﻟ‬
‫إذا ﻧﺠﺢ ذﻟﻚ ‪،‬ﻳﻤﻜﻨﻚ اﻻﻧ‬

‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﺒﺪو ﻣ‬
‫ﺟﺎﻳ‬
‫وﻣﻊ ذﻟﻚ ‪ ،‬ﻗﺪﺗﺮى إﺧﺮا ً‬

‫ﺜﻮن‬
‫ﺑﻴ‬‫ج‪\> :‬‬
‫ﺘﺸﻐﻴﻞ أو ﻣﻠﻒ دﻓﻌ ﻲ‪.‬‬
‫ﺑﻞ ﻟﻠ‬
‫ﺑﺮﻧﺎﻣﺞ ﻗﺎ‬‫ﺘﻌﺮف ﻋﲆ '‪'python‬ﻛﺄﻣﺮ داﺧﻠ ﻲ أو ﺧﺎرﺟ ﻲ أو‬
‫ﺘﻢ اﻟ‬
‫ﻟﻢﻳ‬

‫ً‬
‫ﻋﺎدة ﻣﺎ‬ ‫ﺘﻮ‪.‬‬
‫ﺘﻪ ﻟﻠ‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺘ‬‫ﺑ‬‫ﺜﻮر ﻋﲆ إﺻﺪار ‪Python‬اﻟﺬي ﻗﻤ ﺖ‬
‫ﺑﻜﻴﻔﻴ ﺔ اﻟﻌ‬
‫ﺒﺎر ‪Windows‬‬
‫ﺘﺎج إﱃ إﺧ‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﺗﺤ‬
‫ﺑﻨﻈﺎﻣﻚ ﻓ ﻲ ‪C‬‬‫ﺘﻢ ﺣﻔﻆ أﻣﺮ ‪python‬اﻟﺨﺎص‬
‫ﻳ‬
‫ﺘﺢ‬
‫ﺑﺎﺳﻢ ‪Python ،‬واﻓ‬‫ﺒﺪأ‬
‫ﺑﺤ ﺚ ﻋﻦ ﻣﺠﻠﺪﻳ‬
‫ﺘﺢ ﻣﺤﺮك اﻷﻗﺮاص ‪C.‬ا‬
‫ﺘﻜﺸﻒ ‪Windows‬واﻓ‬
‫ﺘﺢ ﻣ ﺴ‬
‫ﻣﺤﺮك اﻷﻗﺮاص ‪ ،‬ﻟﺬا اﻓ‬
‫ﺑﻪ ﻣﻠﻒﻳ ﺴﻤﻰ‬
‫ﺜﺎل ‪ ،‬ﻟﺪي ﻣﺠﻠﺪ ‪Python35‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﺄﺣﺮف ﺻﻐﻴﺮة(‪ .‬ﻋﲆﺳ‬
‫ﺑﺤ ﺚ ﻋﻦ ﻣﻠﻒ ‪)python‬‬
‫ﻫﺬا اﻟﻤﺠﻠﺪ ‪ ،‬وا‬
‫‪python‬‬
‫ﺘﺎﻟ ﻲ ﻓﺈن اﻟﻤ ﺴﺎر إﱃ أﻣﺮ ‪python‬ﻋﲆ ﻧﻈﺎﻣ ﻲ ﻫﻮ \ ‪C: \ Python35‬‬
‫ﺑﺎﻟ‬
‫ﺑﺪاﺧﻠﻪ ‪ ،‬و‬
‫ﺒﻂ ﻣﻜﺎنﺗﺨﺰﻳﻦ أﻣﺮ‬
‫ﺑﺎﻟﻀ‬‫ﺘﻈﻬﺮ ﻟﻚ‬
‫ﺒﺤ ﺚ ﻓ ﻲ ‪Windows Explorer‬ﻟ‬
‫ﺑﻊ اﻟ‬
‫ﺑﺨﻼف ذﻟﻚ ‪ ،‬أدﺧﻞ ‪python‬ﻓ ﻲ ﻣﺮ‬‫ﺒﺎن‪.‬‬
‫ﺜﻌ‬‫اﻟ‬
‫‪python‬ﻋﲆ ﻧﻈﺎﻣﻚ‪.‬‬
‫ﺘﺢ ﻧﺎﻓﺬة أواﻣﺮ وأدﺧﻞ‬
‫ﺒﺮه ﻋﻦ ﻃﺮﻳﻖ إدﺧﺎل ﻫﺬا اﻟﻤ ﺴﺎر ﻓ ﻲ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ‪ .‬اﻓ‬
‫ﺘ‬‫ﺘﻘﺪ أﻧﻚﺗﻌﺮف اﻟﻤ ﺴﺎر ‪ ،‬اﺧ‬
‫ﻋﻨﺪﻣﺎﺗﻌ‬
‫ﺘﻮ‪:‬‬
‫ﺗﻪ ﻟﻠ‬
‫اﻟﻤ ﺴﺎر اﻟﻜﺎﻣﻞ اﻟﺬي وﺟﺪ‬

‫‪C: \> C: \ Python35 \ python‬‬


‫ﺑ ﺖ ])‪(Intel‬ﻋﲆ ‪win32‬‬
‫ﺒﺮ ‪2015 ، 22:15:05) [MSC v.1900 32‬‬
‫ﺘﻤ‬‫ﺒ‬
‫‪Python 3.5.0 (v3.5.0: 374f501f4567 ، 13‬ﺳ‬

‫ﺗﺮﺧﻴﺺ" ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬


‫ﺘﻤﺎﻧﺎ ت" أو "‬
‫ﺒﻊ وﻧﺸﺮ" أو "اﺋ‬
‫ﺘ ﺐ "ﻣ ﺴﺎﻋﺪة" أو "ﺣﻘﻮق ﻃ‬
‫اﻛ‬
‫>>>‬

‫إذا ﻧﺠﺢ ﻫﺬا ‪ ،‬ﻓﺄﻧ ﺖﺗﻌﺮف ﻛﻴﻔﻴ ﺔ اﻟﻮﺻﻮل إﱃ ‪Python‬ﻋﲆ ﻧﻈﺎﻣﻚ‪.‬‬

‫ﺜﻮن ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ‬
‫ﺑﺎﻳ‬‫ﺗﺸﻐﻴﻞ‬

‫ﺗﺞ !‪Hello Python world‬‬


‫ﺗﺄﻛﺪ ﻣﻦ رؤﻳ ﺔ اﻟﻨﺎ‬
‫ﺑﻚ ‪ ،‬و‬‫ﺘﺎﻟ ﻲ ﻓ ﻲ ﺟﻠ ﺴ ﺔ ‪Python‬اﻟﺨﺎﺻ ﺔ‬
‫أدﺧﻞ اﻟ ﺴﻄﺮ اﻟ‬

‫ﺒﺎﻋ ﺔ )"!‪("Hello Python world‬‬


‫>>>ﻃ‬
‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺑﻌﺎﻟﻢ‬‫ﺒﺎ‬
‫ﻣﺮﺣ ً‬
‫>>>‬

‫ﺑﺪأ ﺟﻠ ﺴ ﺔ ‪Python‬اﻟﻄﺮﻓﻴ ﺔ‪ .‬ﻹﻏﻼق‬


‫ﺘﺢ ﻧﺎﻓﺬة أواﻣﺮ وا‬
‫ﺘﻄﻒ ﻣﻦ ﻛﻮد ‪Python ،‬اﻓ‬
‫ﻓ ﻲ أي وﻗ ﺖﺗﺮﻳﺪ ﻓﻴﻪﺗﺸﻐﻴﻞ ﻣﻘ‬
‫ﺛﻢ اﺿﻐﻂ ﻋﲆ ‪Enter ،‬أو أدﺧﻞ اﻷﻣﺮ ‪exit ().‬‬
‫ﺟﻠ ﺴ ﺔ اﻟﻤﺤﻄ ﺔ ‪ ،‬اﺿﻐﻂ ﻋﲆ ‪ctrl-Z‬‬

‫ﺒﻴ ﺖ ﻣﺤﺮر ﻧﺼﻮص‬


‫ﺜ‬‫ﺗ‬

‫ﺑﺪﻻ ً‬‫ﺒﺎﺷﺮة ﻣﻦ اﻟﻤﺤﺮر‬


‫ﺒﺎ ﻣ‬
‫ﺑﺮاﻣﺠﻚﺗﻘﺮﻳ ً‬‫ﺘﺸﻐﻴﻞ ﺟﻤﻴﻊ‬
‫ﺑ‬‫ﺒﻴ ﺖ ‪ ،‬وﺳﻴ ﺴﻤﺢ ﻟﻚ‬
‫ﺜ‬‫ﺘ‬‫ﺑ ﺴﻴﻂ‪ :‬إﻧﻪﺳﻬﻞ اﻟ‬‫‪ Geany‬ﻫﻮ ﻣﺤﺮر ﻧﺼﻮص‬
‫ﺑﻚ ﻓ ﻲ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ ﻟﺬﻟﻚ أﻧ ﺖ‬‫ﺗﺸﻐﻴﻞ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺑﻚ ‪ ،‬و‬‫ﺘﻠﻮﻳﻦ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻟ‬‫ﺘﺨﺪمﺗﻤﻴﻴﺰ‬
‫ﻣﻦ ﻣﺤﻄ ﺔ ‪ ،‬وﻳ ﺴ‬
‫ﺑﺮاﻣﺞﺗﺤﺮﻳﺮ اﻟﻨﺼﻮص اﻷﺧﺮى ‪ ،‬ﻟﻜﻨ ﻲ أوﺻ ﻲ‬‫ﺘﺨﺪام اﻟﻤﺤﻄﺎ ت‪.‬ﻳﻮﻓﺮ اﻟﻤﻠﺤﻖ ب ﻣﻌﻠﻮﻣﺎ ت ﻋﻦ‬
‫ﺘﺎد ﻋﲆ اﺳ‬
‫'ﺳﻮفﺗﻌ‬
‫ﺘﻠﻒ‪.‬‬
‫ﺘﺨﺪام ﻣﺤﺮر ﻣﺨ‬
‫ﺒ ﺐ وﺟﻴﻪ ﻻﺳ‬
‫ﺘﺨﺪام ‪Geany‬ﻣﺎ ﻟﻢﻳﻜﻦ ﻟﺪﻳﻚﺳ‬
‫ﺑﺎﺳ‬

‫‪12‬اﻟﻔﺼﻞ ‪1‬‬
‫‪Machine Translated by Google‬‬

‫ﺒ ﺖ ‪Windows‬ﻟـ ‪Geany‬ﻣﻦ ‪http://geany.org/.‬‬


‫ﺜ‬‫ﻳﻤﻜﻨﻚﺗﻨﺰﻳﻞ ﻣ‬
‫ﺑﺤ ﺚ ﻋﻦ اﻟﻤﻠﻒ _‪geany-1.25‬‬
‫ﺘﻨﺰﻳﻞ ‪ ،‬وا‬
‫اﻧﻘﺮ ﻓﻮق اﻹﺻﺪارا ت ﺿﻤﻦ ﻗﺎﺋﻤ ﺔ اﻟ‬
‫ﺘﺮاﺿﻴ ﺔ‪.‬‬
‫ﺒﻞ ﺟﻤﻴﻊ اﻹﻋﺪادا ت اﻻﻓ‬
‫ﺒﻴ ﺖ واﻗ‬
‫ﺜ‬‫ﺘ‬‫ﺑﺮﻧﺎﻣﺞ اﻟ‬‫ﺘﺸﻐﻴﻞ‬
‫ﺑ‬‫ﺒﻴﻞ‪ .‬ﻗﻢ‬
‫ﺒ ﺖ ‪setup.exe‬أو ﺷ ﻲء ﻣﻦ ﻫﺬا اﻟﻘ‬
‫ﺜ‬‫ﻣ‬

‫ﺑﺤ ﺚ ﻋﻦ ‪Geany‬ﻋﲆ ﻧﻈﺎﻣﻚ‪.‬ﻳﺠ ﺐ ﻋﻠﻴﻚ‬


‫ﺘﺎح ‪Windows‬وا‬
‫ﺘﺢ ‪Geany:‬اﺿﻐﻂ ﻋﲆ ﻣﻔ‬
‫ﺑﺮﻧﺎﻣﺠﻚ اﻷول ‪ ،‬اﻓ‬‫ﺒﺪء‬
‫ﻟ‬
‫ﺑﺈﻧﺸﺎء ﻣﺠﻠﺪﻳ ﺴﻤﻰ ‪python_work‬ﻓ ﻲ ﻣﻜﺎن‬‫ﺘ ﺐ‪ .‬ﻗﻢ‬
‫ﺘﺼﺎر ﻋﻦ ﻃﺮﻳﻖﺳﺤ ﺐ اﻟﺮﻣﺰ إﱃ ﺷﺮﻳﻂ اﻟﻤﻬﺎم أوﺳﻄﺢ اﻟﻤﻜ‬
‫ﻋﻤﻞ اﺧ‬
‫ﺘﺨﺪام اﻷﺣﺮف اﻟﺼﻐﻴﺮة واﻟﺸﺮﻃﺎ ت اﻟ ﺴﻔﻠﻴ ﺔ ﻟﻠﻤ ﺴﺎﻓﺎ ت ﻓ ﻲ أﺳﻤﺎء اﻟﻤﻠﻔﺎ ت‬
‫ﻣﺎ ﻋﲆ ﻧﻈﺎﻣﻚ ﻟﻤﺸﺎرﻳﻌﻚ‪) .‬ﻣﻦ اﻷﻓﻀﻞ اﺳ‬
‫ً‬
‫ﻓﺎرﻏﺎ )‪(File4Save As‬‬ ‫واﻟﻤﺠﻠﺪا ت ‪،‬ﻷن ﻫﺬه اﺻﻄﻼﺣﺎ تﺗ ﺴﻤﻴ ﺔ )‪Python.‬ارﺟﻊ إﱃ ‪Geany‬واﺣﻔﻆ ﻣﻠﻒ ‪Python‬‬
‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬‫ﺑﺮﻧﺎﻣﺞ‬‫ﺘﻮي ﻋﲆ‬
‫ﺒﺮ ‪exten sion .py‬ﺟﻴﻨ ﻲ أن ﻣﻠﻔﻚﺳﻴﺤ‬
‫ﻳ ﺴﻤﻰ ‪hello_world.py‬ﻓ ﻲ ﻣﺠﻠﺪ ‪python_work .‬ﻳﺨ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﻔﻴﺪة‪.‬‬‫ﺑﺮاز اﻟﻨﺺ‬
‫ﺒﺮﻧﺎﻣﺞ وإ‬
‫ﺑﻜﻴﻔﻴ ﺔﺗﺸﻐﻴﻞ اﻟ‬
‫ﺒﺮ ‪Geany‬‬
‫ﻛﻤﺎ أﻧﻪﻳﺨ‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺘ ﺐ اﻟ ﺴﻄﺮ اﻟ‬
‫ﺑﻌﺪ ﺣﻔﻆ ﻣﻠﻔﻚ ‪ ،‬اﻛ‬

‫ﺒﺎﻋ ﺔ )"!‪("Hello Python world‬‬


‫ﻃ‬

‫ﺘﻘﻞ إﱃ‬
‫ﺘﺎﻟ ﻲ واﻧ‬
‫ﺗﺨﻄ ﻲ اﻟﻘ ﺴﻢ اﻟ‬
‫إذا ﻛﺎن اﻷﻣﺮ ‪python‬ﻳﻌﻤﻞ ﻋﲆ ﻧﻈﺎﻣﻚ ‪ ،‬ﻓﻠﻦﺗﻀﻄﺮ إﱃﺗﻜﻮﻳﻦ ؛ ‪ure Geany‬‬
‫ﺜﻞ ‪C: \ Python35 \ python‬‬
‫ﺑﺤﺎﺟ ﺔ إﱃ إدﺧﺎل ﻣ ﺴﺎر ﻣ‬‫ﺑﺮﻧﺎﻣﺞ "‪Hello World‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪14.‬إذا ﻛﻨ ﺖ‬‫ﺗﺸﻐﻴﻞ‬
‫"‬

‫ﺘﻜﻮﻳﻦ ‪Geany‬ﻟﻨﻈﺎﻣﻚ‪.‬‬
‫ﺘﺎﻟ ﻲ ﻟ‬
‫ﺒﻊ اﻹرﺷﺎدا ت اﻟﻮاردة ﻓ ﻲ اﻟﻘ ﺴﻢ اﻟ‬
‫ﺗ‬‫ﺘﺮﺟﻢ ‪Python ،‬ا‬
‫ﺒﺪء ﻣ‬
‫ﻟ‬

‫ﺗﻜﻮﻳﻦ ‪Geany‬‬

‫ﺘﻴﻦ ‪Compile and Execute‬ﻣﻊ‬


‫ﺘﻘﻞ إﱃ ‪Build4Set Build Commands.‬ﻳﺠ ﺐ أنﺗﺮى اﻟﻜﻠﻤ‬
‫ﺘﻜﻮﻳﻦ ‪Geany ،‬اﻧ‬
‫ﻟ‬
‫ﺑﺄﺣﺮف ﺻﻐﻴﺮة ‪ ،‬ﻟﻜﻦ ‪Geany‬ﻻﻳﻌﺮف ﻣﻜﺎن‬
‫ﺑـ ‪python‬‬
‫ﺒﺪأ اﻷﻣﺮان ‪Compile and Execute‬‬
‫ﺑﺠﺎﻧ ﺐ ﻛﻞ ﻣﻨﻬﻤﺎ‪.‬ﻳ‬‫أﻣﺮ‬
‫ﺘﻪ ﻓ ﻲ ﺟﻠ ﺴ ﺔ اﻟﻤﺤﻄ ﺔ‪.‬‬
‫ﺘﺨﺪﻣ‬
‫ﺘﺎج إﱃ إﺿﺎﻓ ﺔ اﻟﻤ ﺴﺎر اﻟﺬي اﺳ‬
‫ﺗﺤ‬‫ﺗﺨﺰﻳﻦ ﻧﻈﺎﻣﻚﻷﻣﺮ ‪python .‬‬

‫ﺑﻚ‬‫ﺜﻮن اﻟﺨﺎص‬
‫ﺑﻴ‬‫ﻓ ﻲ اﻷﻣﺮﻳﻦ ‪Compile and Execute ،‬أﺿﻒ ﻣﺤﺮك اﻷﻗﺮاص‬
‫ﺒﺪو اﻷﻣﺮ ‪Compile‬ﻛﻤﺎﻳﻠ ﻲ‪:‬‬
‫ﺘﻢﺗﺨﺰﻳﻦ أﻣﺮ ‪python .‬ﻳﺠ ﺐ أنﻳ‬
‫ﺘﺸﻐﻴﻞ واﻟﻤﺠﻠﺪ ﺣﻴ ﺚﻳ‬
‫اﻷﻣﺮ ﻗﻴﺪ اﻟ‬

‫"‪C: \ Python35 \ python -m py_compile "٪ f‬‬

‫ﺒﻴﺮة ﻣﻊ ﻣﺎ ﻫﻮ ﻣﻌﺮوض‬
‫ﺑﻖ اﻟﻤ ﺴﺎﻓﺎ ت واﻷﺣﺮف اﻟﻜ‬
‫ﺑﻌﺾ اﻟﺸ ﻲء ‪ ،‬وﻟﻜﻦﺗﺄﻛﺪ ﻣﻦﺗﻄﺎ‬‫ﺘﻠ ًﻔﺎ‬
‫ﻗﺪﻳﻜﻮن ﻣ ﺴﺎرك ﻣﺨ‬
‫ﻫﻨﺎ‪.‬‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺘﻨﻔﻴﺬ ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫ﺒﺪو أﻣﺮ اﻟ‬
‫ﻳﺠ ﺐ أنﻳ‬

‫"‪C: \ Python35 \ python "٪ f‬‬

‫ﺑﻖ ﻣﻊ ﻣﺎ ﻫﻮ ﻣﻌﺮوض ﻫﻨﺎ‪.‬‬


‫ﺘﻄﺎ‬
‫ﺗ‬‫ﺒﻴﺮة ﻓ ﻲ ‪Execute com mand‬‬
‫ﻣﺮة أﺧﺮى ‪،‬ﺗﺄﻛﺪ ﻣﻦ أن اﻟﻤ ﺴﺎﻓﺎ ت واﻷﺣﺮف اﻟﻜ‬
‫ﺒﺪو ﻫﺬه اﻷواﻣﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔﺗﻜﻮﻳﻦ ‪Geany.‬‬
‫ﻳﻮﺿﺢ اﻟﺸﻜﻞ ‪1-3‬ﻛﻴﻒﻳﺠ ﺐ أنﺗ‬

‫ﺒﺪء ‪13‬‬
‫اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪام ‪Python 3‬ﻋﲆ ‪Windows.‬‬


‫اﻟﺸﻜﻞ ‪ 1-3:‬ﻫﻨﺎ ‪،‬ﺗﻢﺗﻜﻮﻳﻦ ‪Geany‬ﻻﺳ‬

‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪ ،‬اﻧﻘﺮ ﻓﻮق "ﻣﻮاﻓﻖ"‪.‬‬‫ﺑﻌﺪﺗﻌﻴﻴﻦ ﻫﺬه اﻷواﻣﺮ‬

‫ﺑﺮﻧﺎﻣﺞ ‪Hello World‬‬‫ﺗﺸﻐﻴﻞ‬

‫ﺘﺸﻐﻴﻞ ‪hello_world.py‬‬
‫ﺑ‬‫ﺑﻨﺠﺎح‪ .‬ﻗﻢ‬‫ﺑﺮﻧﺎﻣﺠﻚ‬‫ﻳﺠ ﺐ أنﺗﻜﻮن اﻵن ﻗﺎد ًرا ﻋﲆﺗﺸﻐﻴﻞ‬
‫ﺘﺮوس( ‪،‬‬
‫ﺘ ﻲﺗﻌﺮض ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟ‬
‫ﺘﻨﻔﻴﺬ )اﻟ‬
‫ﻋﻦ ﻃﺮﻳﻖﺗﺤﺪﻳﺪ ‪Build4Execute‬ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬ﻋﻦ ﻃﺮﻳﻖ اﻟﻨﻘﺮ ﻓﻮق أﻳﻘﻮﻧ ﺔ اﻟ‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﲆ ‪F5.‬ﻳﺠ ﺐ أنﺗﻈﻬﺮ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ ﻣﻊ اﻹﺧﺮاج اﻟ‬‫أو‬

‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺑﻌﺎﻟﻢ‬‫ﺒﺎ‬
‫ﻣﺮﺣ ً‬

‫‪------------------‬‬

‫ﺑﺮﻣﺰ‪0) :‬‬‫ﺒﺮﻧﺎﻣﺞ‬
‫)ﺧﺮج اﻟ‬
‫ﺑﻌ ﺔ‬
‫ﺘﺎ‬
‫اﺿﻐﻂ ﻋﲆ اﻟﻌﻮدة ﻟﻠﻤ‬

‫ﺘﻪ‪ .‬ﻓﻌﻞ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﻛﻞ ﺣﺮف ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟﺬي أدﺧﻠ‬
‫إذا ﻛﻨ ﺖ ﻻﺗﺮى ﻫﺬا ‪ ،‬ﻓ‬
‫ﺑﻨﺎء‬‫ﺒﺮﻣﺠ ﺔ‬
‫ﺘﻮﻗﻊ ﻟﻐﺎ ت اﻟ‬
‫ﺘ ﻲ اﻟﺤﺼﺺ أو اﻟﻘﻮﺳﻴﻦ أو ﻛﻠﻴﻬﻤﺎ؟ﺗ‬
‫ﺑﺎﻟﺨﻄﺄ؟ ﻫﻞ ﻧ ﺴﻴ ﺖ إﺣﺪى ﻋﻼﻣ‬‫ﺒﺎﻋ ﺔ‬
‫ﺘﻐﻞ اﻟﻄ‬
‫ﻛﻨ ﺖﺗ ﺴ‬
‫ﺘﺎﻟ ﻲ‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻓﺮاﺟﻊ اﻟﻘ ﺴﻢ اﻟ‬
‫ﺘﻤﻜﻦ ﻣﻦﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘﺤﺼﻞ ﻋﲆ أﺧﻄﺎء‪ .‬إذا ﻟﻢﺗ‬
‫ﺟﻤﻠ ﺔ ﻣﺤﺪدًا ﺟﺪًا ‪ ،‬وإذا ﻟﻢﺗﻘﺪم ذﻟﻚ ‪ ،‬ﻓ ﺴ‬
‫ﻟﻠﺤﺼﻮل ﻋﲆ اﻟﻤ ﺴﺎﻋﺪة‪.‬‬

‫‪14‬اﻟﻔﺼﻞ اﻷول‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴ ﺖ وإﺻﻼﺣﻬﺎ‬
‫ﺜ‬‫ﺘ‬‫ﺘﻜﺸﺎف ﻣﺸﻜﻼ ت اﻟ‬
‫اﺳ‬
‫ﺑﻌﺾ‬‫ﺘﻤﻜﻦ ﻣﻦﺗﺸﻐﻴﻞ ‪hello_world.py ،‬ﻓﺈﻟﻴﻚ‬
‫ﺑﻚ ﻧﺎﺟﺤًﺎ ‪ ،‬وﻟﻜﻦ إذا ﻟﻢﺗ‬‫ﺒﺮﻣﺠ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺑﻴﺌ ﺔ اﻟ‬‫ﻧﺄﻣﻞ أنﻳﻜﻮن إﻋﺪاد‬
‫ﺘﻬﺎ‪:‬‬
‫ﺑ‬‫ﺘ ﻲﻳﻤﻜﻨﻚﺗﺠﺮ‬
‫اﻟﻌﻼﺟﺎ ت اﻟ‬

‫ﺛ ﺮًا‬
‫ﺒﻴﺮ ‪،‬ﺗﻌﺮض ‪Python‬أ‬
‫ﺒﺮاﻣﺞ ﻋﲆ ﺧﻄﺄ ﻛ‬
‫ﺘﻮي أﺣﺪ اﻟ‬
‫•ﻋﻨﺪﻣﺎﻳﺤ‬
‫ﺘ ﻲﺗﻤﻨﻊ‬
‫ﺑﻼغ ﻋﻦ اﻟﻤﺸﻜﻠ ﺔ‪ .‬ﻗﺪﻳﻌﻄﻴﻚ ‪traceback‬ﻓﻜﺮة ﻋﻦ اﻟﻤﺸﻜﻠ ﺔ اﻟ‬
‫ﺒﺤ ﺚ ‪Python‬ﻓ ﻲ اﻟﻤﻠﻒ وﻳﺤﺎول اﻹ‬
‫ﺧﻠﻒ‪.‬ﻳ‬
‫ﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻌﻤﻞ‪.‬‬
‫اﻟ‬

‫ﺛﻢ ﺣﺎول ﻣﺮة أﺧﺮى‪.‬‬‫ﺘﺮاﺣ ﺔ ﻗﺼﻴﺮة ‪،‬‬


‫ﺑﻚ ‪ ،‬وﺧﺬ اﺳ‬‫ﺗﺮ اﻟﺨﺎص‬
‫ﺒﻴﻮ‬
‫ﺘﻌﺪ ﻋﻦ ﺟﻬﺎز اﻟﻜﻤ‬
‫ﺑ‬‫•ا‬
‫ﺑﻘ ﺔ أو‬
‫ﺘﻄﺎ‬
‫ﺒﺎس ﻏﻴﺮ اﻟﻤ‬
‫ﺘ‬‫ﺘﻴﻦ اﻟﻤﻔﻘﻮدة أو ﻋﻼﻣ ﺔ اﻻﻗ‬
‫ﺘﻰ اﻟﻨﻘﻄ‬
‫ﺒﺮﻣﺠ ﺔ ‪ ،‬ﻟﺬﻟﻚ ﺣ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻣﻬﻢ ﺟﺪًا ﻓ ﻲ اﻟ‬‫ﺗﺬﻛﺮ أن‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪ .‬أﻋﺪ ﻗﺮاءة اﻷﺟﺰاء ذا ت اﻟﺼﻠ ﺔ‬‫ﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻌﻤﻞ‬
‫ﺑﻘ ﺔﻳﻤﻜﻦ أنﺗﻤﻨﻊ اﻟ‬
‫ﺘﻄﺎ‬
‫أﻃﺮوﺣﺎ ت اﻟﻘﻮس ﻏﻴﺮ اﻟﻤ‬
‫ﺜﻮر ﻋﲆ اﻟﺨﻄﺄ‪.‬‬
‫ﺑﻪ ‪ ،‬واﻋﺮف ﻣﺎ إذا ﻛﺎنﻳﻤﻜﻨﻚ اﻟﻌ‬‫ﻣﻦ ﻫﺬا اﻟﻔﺼﻞ ‪ ،‬واﻧﻈﺮ إﱃ ﻣﺎ ﻗﻤ ﺖ‬

‫ﺒﻴ ﺖ أي ﺷ ﻲء ‪ ،‬وﻟﻜﻦ ﻗﺪﻳﻜﻮن ﻣﻦ اﻟﻤﻨﻄﻘ ﻲ ﺣﺬف ﻣﻠﻒ ‪hello_world.py‬‬


‫ﺜ‬‫ﺘﺎج إﱃ إﻟﻐﺎءﺗ‬
‫ﺑﻤﺎ ﻻﺗﺤ‬
‫أد با•ﻣﻦ ﺟﺪﻳﺪ‪ .‬ر‬
‫ﺒﺪاﻳ ﺔ‪.‬‬
‫وإﻧﺸﺎﺋﻪ ﻣﺮة أﺧﺮى ﻣﻦ اﻟ‬

‫ﺑﻚ أو ﺟﻬﺎز آﺧﺮ ‪ ،‬وراﻗ ﺐ‬‫ﺗﺮ اﻟﺨﺎص‬


‫ﺒﻴﻮ‬
‫ﺒﺎع اﻟﺨﻄﻮا ت اﻟﻮاردة ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ‪ ،‬ﻋﲆ ﺟﻬﺎز اﻟﻜﻤ‬
‫ﺗ‬‫•اﻃﻠ ﺐ ﻣﻦ ﺷﺨﺺ آﺧﺮ ا‬
‫ﺘﻘﻄﻬﺎ ﺷﺨﺺ آﺧﺮ‪.‬‬
‫ﺘﻚ ﺧﻄﻮة ﺻﻐﻴﺮةﻳﺼﺎدف أنﻳﻠ‬
‫ﺗ‬‫ﺑﻤﺎﺗﻜﻮن ﻗﺪ ﻓﺎ‬
‫ﺑﻌﻨﺎﻳ ﺔ‪ .‬ر‬‫ﻣﺎﻳﻔﻌﻠﻪ‬

‫ﺗﻚ ﻓ ﻲ اﻹﻋﺪاد‪.‬‬
‫ﺜﻮن واﻃﻠ ﺐ ﻣﻨﻪ ﻣ ﺴﺎﻋﺪ‬
‫ﺑﺎﻳ‬‫ﺑﺤ ﺚ ﻋﻦ ﺷﺨﺺﻳﻌﺮف‬
‫•ا‬
‫ﺘﺨﺪم ‪Python.‬‬
‫ﺷﺨﺼﺎﻳ ﺴ‬
‫ً‬ ‫إذاﺳﺄﻟ ﺖ ﻣﻦ ﺣﻮﻟﻚ ‪ ،‬ﻓﻘﺪﺗﺠﺪ أﻧﻚﺗﻌﺮف‬

‫ﺘﺮﻧ ﺖ ‪ ،‬ﻣﻦ ﺧﻼل ‪pythoncrashcourse/.‬‬


‫ﺒﺮ اﻹﻧ‬ ‫ﺘﺎﺣ ﺔ أ ً‬
‫ﻳﻀﺎ ﻋ‬ ‫ﺗﻌﻠﻴﻤﺎ ت اﻹﻋﺪاد اﻟﻮاردة ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻣ‬
‫•‬
‫ﺒ ﺔ ﻟﻚ‪.‬‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺑﺸﻜﻞ أﻓﻀﻞ‬‫ﺘﻌﻠﻴﻤﺎ ت‬
‫ﺘﺮﻧ ﺖ ﻣﻦ ﻫﺬه اﻟ‬
‫ﺒﺮ اﻹﻧ‬
‫‪https://www.nostarch.com/‬ﻗﺪﺗﻌﻤﻞ اﻟﻨ ﺴﺨ ﺔ ﻋ‬

‫ﺘﺪﻳﺎ ت وﻣﻮاﻗﻊ اﻟﺪردﺷ ﺔ‬


‫ﺜﻞ اﻟﻤﻨ‬
‫ﺘﺮﻧ ﺖ ‪ ،‬ﻣ‬
‫ﺒﺮ اﻹﻧ‬
‫ﺘﺮﻧ ﺖ‪.‬ﻳﻮﻓﺮ اﻟﻤﻠﺤﻖ ج ﻋﺪدًا ﻣﻦ اﻟﻤﻮارد واﻟﻤﻨﺎﻃﻖ ﻋ‬
‫ﺒﺮ اﻹﻧ‬
‫•اﻃﻠ ﺐ اﻟﻤ ﺴﺎﻋﺪة ﻋ‬
‫ﺘ ﻲﺗﻮاﺟﻬﻬﺎ ﺣﺎﻟ ًﻴﺎ‪.‬‬
‫ﺑﺎﻟﻔﻌﻞ ﻣﻦ ﺧﻼل اﻟﻤﺸﻜﻠ ﺔ اﻟ‬‫اﻟﺤﻴ ﺔ ‪ ،‬ﺣﻴ ﺚﻳﻤﻜﻨﻚ ﻃﻠ ﺐ اﻟﺤﻠﻮل ﻣﻦ اﻷﺷﺨﺎص اﻟﺬﻳﻦ ﻋﻤﻠﻮا‬

‫ﺒﺮﻣﺠﻴﻦ‬
‫ﺒﺮﻣﺞ ﻓ ﻲ ﻣﺮﺣﻠ ﺔ ﻣﺎ ‪ ،‬وﻳ ﺴﻌﺪ ﻣﻌﻈﻢ اﻟﻤ‬
‫ﺒﺮة‪ .‬ﻟﻘﺪ ﻋﻠﻖ ﻛﻞ ﻣ‬
‫ﺒﺮﻣﺠﻴﻦ ذوي اﻟﺨ‬
‫ﺑﺸﺄن إزﻋﺎج اﻟﻤ‬‫ﻻﺗﻘﻠﻖ‬
‫ﺑﺎﻟﻔﻌﻞ ‪،‬‬‫ﺘﻪ‬
‫ﺑ‬‫ﺑﻪ ‪ ،‬وﻣﺎ اﻟﺬي ﺟﺮ‬‫ﺑﻮﺿﻮح ﻣﺎﺗﺤﺎول اﻟﻘﻴﺎم‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪ .‬ﻃﺎﻟﻤﺎﻳﻤﻜﻨﻚ أنﺗﻮﺿﺢ‬‫ﺗﻚ ﻓ ﻲ إﻋﺪاد ﻧﻈﺎﻣﻚ‬
‫ﺑﻤ ﺴﺎﻋﺪ‬
‫ﺗﻚ‪ .‬ﻛﻤﺎ ﻫﻮ ﻣﺬﻛﻮر ﻓ ﻲ اﻟﻤﻘﺪﻣ ﺔ ‪ ،‬ﻓﺈن‬
‫ﺘﻤﻜﻦ ﺷﺨﺺ ﻣﺎ ﻣﻦ ﻣ ﺴﺎﻋﺪ‬
‫ﺘ ﻲﺗﺤﺼﻞ ﻋﻠﻴﻬﺎ ‪ ،‬ﻓﻬﻨﺎك ﻓﺮﺻ ﺔ ﺟﻴﺪةﻷنﻳ‬
‫ﺘﺎﺋﺞ اﻟ‬
‫واﻟﻨ‬
‫ﺘﺪﺋﻴﻦ‪.‬‬
‫ﺒ‬‫ﺘﻤﻊ ‪Python‬ودود ﻟﻠﻐﺎﻳ ﺔ ﻟﻠﻤ‬
‫ﻣﺠ‬

‫ﺑﺤ ﺚ ﻋﻦ ﻃﺮﻳﻘ ﺔ ﻟﻄﻠ ﺐ اﻟﻤ ﺴﺎﻋﺪة إذا ﻛﻨ ﺖﺗﻮاﺟﻪ‬


‫ﺗﺮ ﺣﺪﻳ ﺚ ‪ ،‬ﻟﺬا ا‬
‫ﺒﻴﻮ‬
‫ﻳﺠ ﺐ أنﺗﻌﻤﻞ ‪Python‬ﺟﻴﺪًا ﻋﲆ أي ﺟﻬﺎز ﻛﻤ‬
‫ﺑﻤﺠﺮدﺗﺸﻐﻴﻞ ‪hello_world.py ،‬ﻳﻤﻜﻨﻚ‬‫ﺘﺤﻖ اﻟﺤﻞ‪.‬‬
‫ﺒﻄ ﺔ ‪ ،‬ﻟﻜﻨﻬﺎﺗ ﺴ‬
‫ﺒﻜﺮة ﻣﺤ‬
‫ﺘﻰ اﻵن‪ .‬ﻗﺪﺗﻜﻮن اﻟﻤﺸﻜﻼ ت اﻟﻤ‬
‫ﻣﺸﻜﻠ ﺔ ﺣ‬
‫ﺘﺎﻋً ﺎ‪.‬‬
‫ﺜﺮ إرﺿﺎ ًء وإﻣ‬
‫ﺒﺮﻣﺠ ﻲ أﻛ‬
‫ﺒﺢ ﻋﻤﻠﻚ اﻟ‬
‫ﺒﺪء ﻓ ﻲﺗﻌﻠﻢ ‪Python ،‬وﺳﻴﺼ‬
‫اﻟ‬

‫ﺒﺪء ‪15‬‬
‫اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻮن ﻣﻦ ﻣﺤﻄ ﺔ ﻃﺮﻓﻴ ﺔ‬


‫ﺑﺎﻳ‬‫ﺑﺮاﻣﺞ‬‫ﺗﺸﻐﻴﻞ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﻳﻜﻮن‬‫ﺒﺎﺷﺮة ﻣﻦ اﻟﻤﺤﺮر ‪ ،‬وﻟﻜﻦ ﻓ ﻲ‬
‫ﺑﻚ ﻣ‬‫ﺒﻬﺎ ﻓ ﻲ ﻣﺤﺮر اﻟﻨﺼﻮص اﻟﺨﺎص‬
‫ﺘ‬‫ﺘ ﻲﺗﻜ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺘﻌﻤﻞ ﻣﻌﻈﻢ اﻟ‬
‫ﺳ‬
‫ﺑﺮﻧﺎﻣﺞ ﻣﻮﺟﻮد‬‫ﺜﺎل ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲﺗﺸﻐﻴﻞ‬ ‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ‪ .‬ﻋﲆﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬ ‫ﺒﺮاﻣﺞ ﻣﻦ ﻣﺤﻄ ﺔ ﻃﺮﻓﻴ ﺔ‬
‫ﻣﻦ اﻟﻤﻔﻴﺪﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘﺤﺮﻳﺮ‪.‬‬
‫ﺘﺤﻪ ﻟﻠ‬
‫دون ﻓ‬

‫ﺒ ﺖ ﻋﻠﻴﻪ ‪Python‬إذا ﻛﻨ ﺖﺗﻌﺮف ﻛﻴﻔﻴ ﺔ اﻟﻮﺻﻮل إﱃ اﻟﺪﻟﻴﻞ ﺣﻴ ﺚ ﻗﻤ ﺖ‬


‫ﺜ‬‫ﺑﺬﻟﻚ ﻋﲆ أي ﻧﻈﺎم ﻣ‬‫ﻳﻤﻜﻨﻚ اﻟﻘﻴﺎم‬
‫ﺑ ﺔ ذﻟﻚ ‪،‬ﺗﺄﻛﺪ ﻣﻦ ﺣﻔﻆ ﻣﻠﻒ ‪hello_world.py‬ﻓ ﻲ ﻣﺠﻠﺪ ‪python_work‬‬
‫ﺘﺠﺮ‬
‫ﺑﻚ‪ .‬ﻟ‬‫ﺒﺮﻧﺎﻣﺞ اﻟﺨﺎص‬
‫ﺘﺨﺰﻳﻦ ﻣﻠﻒ اﻟ‬
‫ﺑ‬
‫ﺘ ﺐ‪.‬‬
‫ﻋﲆﺳﻄﺢ اﻟﻤﻜ‬

‫ﻋﲆ ‪Linux‬و ‪OS X‬‬


‫ﺘﻐﻴﻴﺮ‬
‫ﺘﺨﺪام اﻷﻣﺮ اﻟﻄﺮﻓ ﻲ ‪cd ،‬ﻟ‬
‫ﺘﻢ اﺳ‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python‬ﻣﻦ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ ﻫﻮ ﻧﻔ ﺴﻪ ﻋﲆ ‪Linux‬و ‪OS X.‬ﻳ‬‫ﺗﺸﻐﻴﻞ‬
‫ﺒﺮ ﻧﻈﺎم اﻟﻤﻠﻔﺎ ت ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ‪.‬ﻳﻌﺮض ﻟﻚ اﻷﻣﺮ ‪ls ،‬ﻟﻠﻘﺎﺋﻤ ﺔ ‪ ،‬ﺟﻤﻴﻊ اﻟﻤﻠﻔﺎ ت ﻏﻴﺮ اﻟﻤﺨﻔﻴ ﺔ‬
‫ﺑ ﺔ ‪navi‬ﻋ‬
‫ﺒﻮا‬
‫اﻟﺪﻟﻴﻞ ‪ ،‬ﻟ‬
‫اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﺪﻟﻴﻞ اﻟﺤﺎﻟ ﻲ‪.‬‬

‫ﺘﺸﻐﻴﻞ ‪hello_world.py:‬‬
‫ﺘﺎﻟﻴ ﺔ ﻟ‬
‫ﺘﺢ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ ﺟﺪﻳﺪة وأﺻﺪر اﻷواﻣﺮ اﻟ‬
‫اﻓ‬

‫‪u ~ $ cd Desktop / python_work / v ~ / Desktop / python_work $ ls‬‬

‫‪hello_world.py‬‬
‫!‪python_work $ python hello_world.py Hello Python world‬‬
‫‪w ~ / Desktop /‬‬

‫ﺑﻌﺪ ذﻟﻚ ‪،‬‬‫ﺘﺐ ‪.‬‬


‫ﺘﻘﺎل إﱃ ﻣﺠﻠﺪ ‪python_work‬اﻟﻤﻮﺟﻮد ﻓ ﻲ ﻣﺠﻠﺪﺳﻄﺢ اﻟﻤﻜ‬
‫ﺘﺨﺪم اﻷﻣﺮ ‪cd‬ﻟﻼﻧ‬
‫ﻓ ﻲ ‪u‬ﻧ ﺴ‬
‫ﺘﺨﺪام اﻷﻣﺮ ‪w.‬‬
‫ﺑﺎﺳ‬‫ﺘﺸﻐﻴﻞ اﻟﻤﻠﻒ‬
‫ﺑ‬‫ﺛﻢ ﻧﻘﻮم‬
‫ﺘﺄﻛﺪ ﻣﻦ وﺟﻮد ‪hello_world.py‬ﻓ ﻲ ﻫﺬا اﻟﻤﺠﻠﺪ ‪v.‬‬
‫ﺘﺨﺪم اﻷﻣﺮ ‪ls‬ﻟﻠ‬
‫ﻧﺴ‬
‫‪python hello_world.py‬‬

‫ﺑﺮاﻣﺞ ‪Python.‬‬‫ﺘﺸﻐﻴﻞ‬
‫ﺘﺨﺪام اﻷﻣﺮ ‪)python‬أو )‪python3‬ﻟ‬
‫ﺑ ﺴﺎﻃ ﺔ‪ .‬ﻣﺎ ﻋﻠﻴﻚﺳﻮى اﺳ‬‫ﺑﻜﻞ‬

‫ﻋﲆ ﻧﻈﺎم ‪Windows‬‬

‫ﺒﺮ ﻧﻈﺎم اﻟﻤﻠﻔﺎ ت ﻓ ﻲ ﻧﺎﻓﺬة اﻷواﻣﺮ‪.‬ﻳﻈﻬﺮ ﻟﻚ اﻷﻣﺮ ‪dir ،‬ﻟﻠﺪﻟﻴﻞ ‪،‬‬


‫ﺘﻨﻘﻞ ﻋ‬
‫ﺘﻐﻴﻴﺮ اﻟﺪﻟﻴﻞ ‪ ،‬ﻟﻠ‬
‫ﺘﺨﺪام اﻷﻣﺮ اﻟﻄﺮﻓ ﻲ ‪cd ،‬ﻟ‬
‫ﺘﻢ اﺳ‬
‫ﻳ‬
‫ﺟﻤﻴﻊ اﻟﻤﻠﻔﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﺪﻟﻴﻞ اﻟﺤﺎﻟ ﻲ‪.‬‬

‫ﺘﺸﻐﻴﻞ ‪hello_world.py:‬‬
‫ﺘﺎﻟﻴ ﺔ ﻟ‬
‫ﺘﺢ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ ﺟﺪﻳﺪة وأﺻﺪر اﻷواﻣﺮ اﻟ‬
‫اﻓ‬

‫‪u C: \> cd Desktop \ python_work‬‬


‫ﺘ ﺐ ‪\ python_work> dir‬‬
‫\ ‪v C:‬ﺳﻄﺢ اﻟﻤﻜ‬
‫‪hello_world.py‬‬
‫ث ‪C: \ Desktop \ python_work> python hello_world.py‬‬
‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺑﻌﺎﻟﻢ‬‫ﺒﺎ‬
‫ﻣﺮﺣ ً‬

‫ﺑﻌﺪ ذﻟﻚ ‪،‬‬‫ﺘﺐ ‪.‬‬


‫ﺘﻘﺎل إﱃ ﻣﺠﻠﺪ ‪python_work‬اﻟﻤﻮﺟﻮد ﻓ ﻲ ﻣﺠﻠﺪﺳﻄﺢ اﻟﻤﻜ‬
‫ﺘﺨﺪم اﻷﻣﺮ ‪cd‬ﻟﻼﻧ‬
‫ﻓ ﻲ ‪u‬ﻧ ﺴ‬
‫ﺘﺨﺪام اﻷﻣﺮ ‪w.‬‬
‫ﺑﺎﺳ‬‫ﺘﺸﻐﻴﻞ اﻟﻤﻠﻒ‬
‫ﺑ‬‫ﺛﻢ ﻧﻘﻮم‬
‫ﺘﺄﻛﺪ ﻣﻦ وﺟﻮد ‪hello_world.py‬ﻓ ﻲ ﻫﺬا اﻟﻤﺠﻠﺪ ‪v.‬‬
‫ﺘﺨﺪم اﻷﻣﺮ ‪dir‬ﻟﻠ‬
‫ﻧﺴ‬
‫‪python hello_world.py‬‬

‫‪16‬اﻟﻔﺼﻞ اﻷول‬
‫‪Machine Translated by Google‬‬

‫ﺒ ﺴﻴﻂ‬
‫ﺘﺨﺪام اﻷﻣﺮ اﻟ‬
‫ﺘﻜﻮﻳﻦ ﻧﻈﺎﻣﻚ ﻻﺳ‬
‫ﺑ‬‫إذا ﻟﻢﺗﻘﻢ‬
‫ﺘﺨﺪام اﻹﺻﺪار اﻷﻃﻮل ﻣﻦ ﻫﺬا اﻷﻣﺮ‪:‬‬
‫ﺘﺎج إﱃ اﺳ‬
‫‪python ،‬ﻗﺪﺗﺤ‬

‫‪C: \ $ cd Desktop \ python_work‬‬


‫‪C: \ Desktop \ python_work $ dir‬‬
‫‪hello_world.py‬‬
‫‪C: \ Desktop \ python_work $ C: \ Python35 \ python hello_world.py‬‬
‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺑﻌﺎﻟﻢ‬‫ﺒﺎ‬
‫ﻣﺮﺣ ً‬

‫ﺜﺮﺗﻌﻘﻴﺪًا ‪،‬‬
‫ﺒﺢ ﻋﻤﻠﻚ أﻛ‬
‫ﺑﻚ ‪ ،‬وﻟﻜﻦ ﻛﻠﻤﺎ أﺻ‬‫ﺒﺎﺷﺮة ﻣﻦ اﻟﻤﺤﺮر اﻟﺨﺎص‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ ﻣ‬‫ﺑﺮاﻣﺠﻚ‬‫ﺘﻌﻤﻞ ﻣﻌﻈﻢ‬
‫ﺳ‬
‫ﺘﺸﻐﻴﻞ ﻣﻦ ﻣﺤﻄ ﺔ ﻃﺮﻓﻴ ﺔ‪.‬‬
‫ﺘﺎﺟﻬﺎ ﻟﻠ‬
‫ﺘﺤ‬‫ﺘ ﻲﺳ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻨﻚ ﻛ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻲ‬
‫ﺘﺤﺪﻳﺎ ت اﻟ‬
‫ﺘﻨﺪ اﻟ‬
‫ﺘﺴ‬‫ﺜﺎﻧ ﻲ ‪،‬ﺳ‬
‫ﺑﺪءًا ﻣﻦ اﻟﻔﺼﻞ اﻟ‬‫ﺘﻬﺎ‪.‬‬
‫ﺒﻴﻌ‬
‫ﺑﻄ‬‫ﺘﻜﺸﺎﻓﻴ ﺔ‬
‫ﺘﻤﺎرﻳﻦ اﻟﻮاردة ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ اﺳ‬
‫اﻟ‬
‫ﺘﻪ‪.‬‬
‫ﺘﺤﻠﻬﺎ ﻋﲆ ﻣﺎﺗﻌﻠﻤ‬
‫ﺳ‬

‫ﺜﻮر ﻋﲆ اﻟﻤﻮﺿﻮﻋﺎ ت‬
‫ﺋﻴ ﺴﻴ ﺔ )‪(http://python.org/‬ﻟﻠﻌ‬
‫ﺘﻜﺸﻒ ﺻﻔﺤ ﺔ ‪Python‬اﻟﺮ‬
‫‪1-1. python.org:‬اﺳ‬
‫ﺜﺮ إﻓﺎدة ﻟﻚ‪.‬‬
‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟﻤﻮﻗﻊ أﻛ‬
‫ﺘﻜﻮن أﺟﺰاء ﻣﺨ‬
‫ﺜﻮن ‪،‬ﺳ‬
‫ﺒﺎﻳ‬
‫ﺑ‬‫ﺒﺢ ﻋﲆ دراﻳ ﺔ‬
‫ﺘ ﻲﺗﻬﻤﻚ‪ .‬ﻋﻨﺪﻣﺎﺗﺼ‬
‫اﻟ‬

‫ﺒﻌ ﻲ ﻓ ﻲ ﻣﻜﺎن‬
‫ﺑﻌﻤﻞ ﺧﻄﺄ ﻣﻄ‬‫ﺘﻮ‪ .‬ﻗﻢ‬
‫ﺗﻪ ﻟﻠ‬
‫ﺘﺢ ﻣﻠﻒ ‪hello_world.py‬اﻟﺬي أﻧﺸﺄ‬
‫‪1-2. Hello World Typos:‬اﻓ‬
‫ﺒﻌ ﻲﻳﺆدي إﱃ ﺣﺪو ث ﺧﻄﺄ؟ ﻫﻞ‬
‫ﺒﺮﻧﺎﻣﺞ ﻣﺮة أﺧﺮى‪ .‬ﻫﻞﻳﻤﻜﻨﻚ ﻋﻤﻞ ﺧﻄﺄ ﻣﻄ‬
‫ﺘﺸﻐﻴﻞ اﻟ‬
‫ﺑ‬‫ﻣﺎ ﻓ ﻲ اﻟ ﺴﻄﺮ وﻗﻢ‬
‫ﺘﻘﺪ أﻧﻪ ﻟﻢﻳﺼﻨﻊ‬
‫ﺘﺞ ﻋﻨﻪ ﺧﻄﺄ؟ ﻟﻤﺎذاﺗﻌ‬
‫ﺒﻌ ﻲ ﻻﻳﻨ‬
‫ﻳﻤﻜﻨﻚ ﻓﻬﻢ رﺳﺎﻟ ﺔ اﻟﺨﻄﺄ؟ ﻫﻞﻳﻤﻜﻨﻚ ﻋﻤﻞ ﺧﻄﺄ ﻣﻄ‬

‫ﺧﻄﺎ؟‬

‫ﺒﻨ ﻲ؟‬
‫ﺘ‬‫ﺑﺮﻣﺠ ﺔ ﻻ ﻧﻬﺎﺋﻴ ﺔ ‪ ،‬ﻓﻤﺎذاﺳ‬‫‪1-3.‬اﻟﻤﻬﺎرا ت اﻟﻼﻧﻬﺎﺋﻴ ﺔ‪ :‬إذا ﻛﺎﻧ ﺖ ﻟﺪﻳﻚ ﻣﻬﺎرا ت‬
‫ﺘﺨﺪام ﻓﻮري‬
‫ﺒﺎر ‪ ،‬ﻓ ﺴﻴﻜﻮن ﻟﺪﻳﻚ اﺳ‬
‫ﺘ‬‫ﺒﺮﻣﺠ ﺔ‪ .‬إذا ﻛﺎن ﻟﺪﻳﻚ ﻫﺪف ﻧﻬﺎﺋ ﻲ ﻓ ﻲ اﻻﻋ‬
‫أﻧ ﺖ ﻋﲆ وﺷﻚﺗﻌﻠﻢ ﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺘﺮ‬
‫ﺑﺪﻓ‬‫ﺘﻔﻆ‬
‫ﺗﻚ اﻟﺠﺪﻳﺪة ؛ اﻵن ﻫﻮ وﻗ ﺖ راﺋﻊ ﻟﺼﻴﺎﻏ ﺔ وﺻﻒ ﻟﻤﺎﺗﺮﻏ ﺐ ﻓ ﻲ إﻧﺸﺎﺋﻪ‪ .‬إﻧﻬﺎ ﻋﺎدة ﺟﻴﺪة أنﺗﺤ‬
‫ﻟﻤﻬﺎرا‬
‫ﺑﺮاﻣﺞﺗﺮﻏ ﺐ ﻓ ﻲ‬‫ﺛﺔ‬
‫ﺛﻼ‬‫ﺑﻀﻊ دﻗﺎﺋﻖ اﻵن ﻟﻮﺻﻒ‬‫ﺑﺪء ﻣﺸﺮوع ﺟﺪﻳﺪ‪ .‬ﺧﺬ‬‫ﺘﻰ أرد ت‬
‫"أﻓﻜﺎر"ﻳﻤﻜﻨﻚ اﻟﺮﺟﻮع إﻟﻴﻪ ﻣ‬
‫إﻧﺸﺎﺋﻬﺎ‪.‬‬

‫ﻣﻠﺨﺺ‬
‫ﺒﻴ ﺖ ‪Python‬ﻋﲆ ﻧﻈﺎﻣﻚ إذا ﻟﻢﺗﻜﻦ ﻣﻮﺟﻮدة‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬‫ﺑﺸﻜﻞ ﻋﺎم ‪ ،‬وﻗﻤ ﺖ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ‪،‬ﺗﻌﻠﻤ ﺖ اﻟﻘﻠﻴﻞ ﻋﻦ ‪Python‬‬
‫ﺘﻄﻔﺎ ت ﻣﻦ ﻛﻮد ‪Python‬‬
‫ﺑ ﺔ ﻛﻮد ‪Python.‬ﻟﻘﺪﺗﻌﻠﻤ ﺖﺗﺸﻐﻴﻞ ﻣﻘ‬
‫ﺘﺎ‬
‫ﺘ ﺴﻬﻴﻞ ﻛ‬
‫ﺒﻴ ﺖ ﻣﺤﺮر ﻧﺼ ﻲ ﻟ‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬ ‫ﺑﺎﻟﻔﻌﻞ‪ .‬ﻟﻘﺪ ﻗﻤ ﺖ أ ً‬
‫ﻳﻀﺎ‬
‫ﺘﻜﺸﺎف اﻷﺧﻄﺎء‬
‫ﺑﻤﺎﺗﻌﻠﻤ ﺖ اﻟﻘﻠﻴﻞ ﻋﻦ اﺳ‬
‫ﺑﺮﻧﺎﻣﺞ ﻓﻌﻠ ﻲ ﻟﻚ ‪hello_world.py. ،‬ر‬‫ﺘﺸﻐﻴﻞ أول‬
‫ﺑ‬‫ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ ‪ ،‬وﻗﻤ ﺖ‬
‫وإﺻﻼﺣﻬﺎ أ ً‬
‫ﻳﻀﺎ‪.‬‬

‫ﺑﺮاﻣﺞ ‪Python‬‬‫ﺑﻬﺎ ﻓ ﻲ‬‫ﺘ ﻲﻳﻤﻜﻨﻚ اﻟﻌﻤﻞ‬


‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟ‬
‫ﺘﻌﺮف ﻋﲆ اﻷﻧﻮاع اﻟﻤﺨ‬
‫ﺘ‬‫ﺘﺎﻟ ﻲﺳ‬
‫ﻓ ﻲ اﻟﻔﺼﻞ اﻟ‬
‫ﺘﻐﻴﺮا ت‪.‬‬
‫ﺘﺨﺪام اﻟﻤ‬ ‫ﺘﻌﻠﻢ أ ً‬
‫ﻳﻀﺎ اﺳ‬ ‫ﺘ‬‫ﺑﻚ ‪ ،‬وﺳ‬‫اﻟﺨﺎﺻ ﺔ‬

‫ﺑﺪء‬
‫ا‬ ‫‪17‬‬
Machine Translated by Google
‫‪Machine Translated by Google‬‬

‫‪2‬‬
‫‪Var ia bles an d‬‬
‫ﺑﻴﺎﻧﺎ ت ‪Si m ple T y pe s‬‬

‫ﺘﻲ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟ‬
‫ﺘﻌﺮف ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻋﲆ اﻷﻧﻮاع اﻟﻤﺨ‬
‫ﺘ‬‫ﺳ‬
‫ﺘﻌﻠﻢ أ ً‬
‫ﻳﻀﺎ ﻛﻴﻒ‬ ‫ﺘ‬‫ﺑﻚ‪.‬ﺳ‬‫ﺜﻮن اﻟﺨﺎﺻ ﺔ‬
‫ﺑﺎﻳ‬‫ﺑﺮاﻣﺞ‬‫ﺑﻬﺎ ﻓ ﻲ‬‫ﻳﻤﻜﻨﻚ اﻟﻌﻤﻞ‬

‫ﺘﻐﻴﺮا ت ﻓ ﻲ‬
‫ﺘﺨﺪامﺗﻠﻚ اﻟﻤ‬
‫ﺘﻐﻴﺮا ت وﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺗﻚ ﻓ ﻲ ﻣ‬
‫ﺑﻴﺎﻧﺎ‬‫ﺘﺨﺰﻳﻦ‬
‫ﻟ‬
‫ﺑﺮاﻣﺠﻚ‪.‬‬

‫ﻣﺎﻳﺤﺪ ث ﺣ ًﻘﺎ ﻋﻨﺪﺗﺸﻐﻴﻞ ‪hello_world.py‬‬


‫ﺑﺄس‬‫ﺑﻘﺪر ﻻ‬
‫ﺗﻀﺢ ‪،‬ﺗﻘﻮم ‪Python‬‬
‫دﻋﻨﺎ ﻧﻠﻘ ﻲ ﻧﻈﺮة ﻓﺎﺣﺼ ﺔ ﻋﲆ ﻣﺎﺗﻔﻌﻠﻪ ‪Python‬ﻋﻨﺪﺗﺸﻐﻴﻞ ‪hello_world.py.‬ﻛﻤﺎ ا‬
‫ﺑ ﺴﻴﻂ‪:‬‬‫ﺑﺮﻧﺎﻣﺞ‬‫ﺘﺸﻐﻴﻞ‬
‫ﺑ‬‫ﺘﻰ ﻋﻨﺪﻣﺎﺗﻘﻮم‬
‫ﺑﻪ ﻣﻦ اﻟﻌﻤﻞ ‪ ،‬ﺣ‬

‫‪("Hello Pythonhello_world.py‬‬
‫ﺒﺎﻋ ﺔ )"!‪world‬‬
‫ﻃ‬
‫‪Machine Translated by Google‬‬

‫ﻋﻨﺪﺗﺸﻐﻴﻞ ﻫﺬا اﻟﺮﻣﺰ ‪،‬ﻳﺠ ﺐ أنﺗﺮى ﻫﺬا اﻹﺧﺮاج‪:‬‬

‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺑﻌﺎﻟﻢ‬‫ﺒﺎ‬
‫ﻣﺮﺣ ً‬

‫ﺛﻢﻳﻘﻮم اﻟﻤﺤﺮر‬
‫ﺑﺮﻧﺎﻣﺞ ‪Python.‬‬‫ﺒﺎرة ﻋﻦ‬
‫ﺗﺸﻴﺮ اﻟﻨﻬﺎﻳ ﺔ ‪ yp.‬إﱃ أن اﻟﻤﻠﻒ ﻋ‬
‫ﻋﻨﺪﺗﺸﻐﻴﻞ اﻟﻤﻠﻒ ‪hello_world.py ،‬‬
‫ﺒﻴﻞ‬
‫ﺒﺮﻧﺎﻣﺞ‪ .‬ﻋﲆﺳ‬
‫ﺒﺮﻧﺎﻣﺞ وﻳﺤﺪد ﻣﻌﻨﻰ ﻛﻞ ﻛﻠﻤ ﺔ ﻓ ﻲ اﻟ‬
‫ﺘﺮﺟﻢ ‪Python ،‬اﻟﺬيﻳﻘﺮأ ﻣﻦ ﺧﻼل اﻟ‬
‫ﺘﺸﻐﻴﻞ اﻟﻤﻠﻒ ﻣﻦ ﺧﻼل ﻣ‬
‫ﺑ‬
‫ﺒﻊ ﻋﲆ اﻟﺸﺎﺷ ﺔ ﻛﻞ ﻣﺎﻳﻮﺟﺪ داﺧﻞ اﻷﻗﻮاس‪.‬‬
‫ﺒﺎﻋ ﺔ ‪ ،‬ﻓﺈﻧﻪﻳﻄ‬
‫ﺘﺮﺟﻢ اﻟﻜﻠﻤ ﺔ ﻃ‬
‫ﺜﺎل ‪ ،‬ﻋﻨﺪﻣﺎﻳﺮى اﻟﻤ‬
‫اﻟﻤ‬

‫ﺘﻠﻔ ﺔ‪ .‬ﻋﲆ‬
‫ﺑﻄﺮق ﻣﺨ‬‫ﺑﺮﻧﺎﻣﺠﻚ‬‫ﺘﻠﻔ ﺔ ﻣﻦ‬
‫ﺘ ﺴﻠﻴﻂ اﻟﻀﻮء ﻋﲆ أﺟﺰاء ﻣﺨ‬
‫ﺑ‬‫ﺑﻚ‬‫ﺑﺮاﻣﺠﻚ ‪،‬ﻳﻘﻮم اﻟﻤﺤﺮر اﻟﺨﺎص‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺛﻨﺎء ﻛ‬
‫أ‬
‫ﺑﺎﻟﻠﻮن اﻷزرق‪ .‬إﻧﻬﺎﺗﺪرك أن "!‪Python world‬‬‫ﺘﻌﺮف ﻋﲆ أن ‪ print‬ﻫﻮ اﺳﻢ وﻇﻴﻔ ﺔ وﻳﻌﺮضﺗﻠﻚ اﻟﻜﻠﻤ ﺔ‬
‫ﺜﺎل ‪،‬ﻳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺳ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ و ﻫ ﻲ ﻣﻔﻴﺪة ﺟﺪًا‬‫ﺗﻘﺎﻟ ﻲ‪.‬ﺗ ﺴﻤﻰ ﻫﺬه اﻟﻤﻴﺰةﺗﻤﻴﻴﺰ‬
‫ﺒﺮ‬‫ﺑﺎﻟﻠﻮن اﻟ‬‫ﺒﺎرة‬
‫‪"Hello‬ﻟﻴ ﺲ رﻣﺰ ‪Python‬وﻳﻌﺮض ﻫﺬه اﻟﻌ‬
‫ﺑﻚ‪.‬‬‫ﺒﺮاﻣﺞ اﻟﺨﺎﺻ ﺔ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺒﺪأ ﻓ ﻲ ﻛ‬
‫ﻋﻨﺪﻣﺎﺗ‬

‫ﺘﻐﻴﺮا ت‬
‫اﻟﻤ‬
‫ﺜﺎﻧ ﻲ‪:‬‬
‫ﺘﻌﺪﻳﻞ اﻟ ﺴﻄﺮ اﻟ‬
‫ﺑ‬‫ﺑﺪاﻳ ﺔ اﻟﻤﻠﻒ ‪ ،‬وﻗﻢ‬‫ﺘﻐﻴﺮ ﻓ ﻲ ‪hello_world.py.‬أﺿﻒﺳﻄ ﺮًا ﺟﺪﻳﺪًا ﻓ ﻲ‬
‫ﺘﺨﺪام ﻣ‬
‫ﻟﻨﺠﺮ ب اﺳ‬

‫ﺒﺎ ﻋﺎﻟﻢ "!‪Python‬‬


‫= ‪"message‬ﻣﺮﺣ ً‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫ﻃ‬

‫ﺑ ًﻘﺎ‪:‬‬
‫ﺘﻬﺎﺳﺎ‬
‫ﺘ ﻲ رأﻳ‬
‫ﺘﻴﺠ ﺔ اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ ﻟﻤﻌﺮﻓ ﺔ ﻣﺎﺳﻴﺤﺪ ث‪.‬ﻳﺠ ﺐ أنﺗﺮى ﻧﻔ ﺲ اﻟﻨ‬
‫ﺘﺸﻐﻴﻞ ﻫﺬا اﻟ‬
‫ﺑ‬‫ﻗﻢ‬

‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺑﻌﺎﻟﻢ‬‫ﺒﺎ‬
‫ﻣﺮﺣ ً‬

‫ﺘﻐﻴﺮ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬‬


‫ﺑﻬﺬا اﻟﻤ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﻐﻴﺮ ﻟﻪ ﻗﻴﻤ ﺔ ‪ ،‬و ﻫ ﻲ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﺮ‬
‫ﺘﻐﻴ ﺮًا اﺳﻤﻪ ‪message.‬ﻛﻞ ﻣ‬
‫ﻟﻘﺪ أﺿﻔﻨﺎ ﻣ‬
‫ﺗﻜﻮن اﻟﻘﻴﻤ ﺔ ﻫ ﻲ اﻟﻨﺺ "!‪"Hello Python world‬‬

‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬‫ﺘﺮﺟﻢ‬
‫ﺘﻐﻴﺮ إﱃ ﻣﺰﻳﺪ ﻣﻦ اﻟﻌﻤﻞ ﻟﻤ‬
‫ﺗﺆدي إﺿﺎﻓ ﺔ ﻣ‬
‫ﺘﻐﻴﺮة ‪ .‬ﻋﻨﺪﻣﺎﻳﺼﻞ إﱃ اﻟ ﺴﻄﺮ‬
‫ﺑﻂ اﻟﻨﺺ "!‪"Hello Python world‬ﻣﻊ اﻟﺮﺳﺎﻟ ﺔ اﻟﻤ‬
‫ﻋﻨﺪﻣﺎﻳﻌﺎﻟﺞ اﻟ ﺴﻄﺮ اﻷول ‪ ،‬ﻓﺈﻧﻪﻳﺮ‬
‫ﺑﺎﻟﺮﺳﺎﻟ ﺔ ﻋﲆ اﻟﺸﺎﺷ ﺔ‪.‬‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺒﻊ اﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫ﺜﺎﻧ ﻲ ‪ ،‬ﻓﺈﻧﻪﻳﻄ‬
‫اﻟ‬

‫ً‬
‫ﻓﺎرﻏﺎ إﱃ‬ ‫ﺛﺎﻧﻴ ﺔ‪ .‬أﺿﻒﺳﻄ ﺮًا‬‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔ‬
‫ﺒﺮﻧﺎﻣﺞ ﻋﻦ ﻃﺮﻳﻖﺗﻌﺪﻳﻞ ‪hello_world.py‬ﻟﻄ‬
‫ﺘﻮﺳﻊ ﻓ ﻲ ﻫﺬا اﻟ‬
‫دﻋﻨﺎ ﻧ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪:‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺛﻢ أﺿﻒﺳﻄﺮﻳﻦ ﺟﺪﻳﺪﻳﻦ ﻣﻦ اﻟ‬
‫‪hello_world.py ،‬‬

‫ﺒﺎ ﻋﺎﻟﻢ "!‪Python‬‬


‫= ‪"message‬ﻣﺮﺣ ً‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫ﻃ‬

‫ﺒﺎ ﻋﺎﻟﻢ "!‪Python Crash Course‬‬


‫= ‪"message‬ﻣﺮﺣ ً‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫ﻃ‬

‫‪20‬اﻟﻔﺼﻞ ‪2‬‬
‫‪Machine Translated by Google‬‬

‫اﻵن ﻋﻨﺪﺗﺸﻐﻴﻞ ‪hello_world.py ،‬ﻳﺠ ﺐ أنﺗﺮىﺳﻄﺮﻳﻦ ﻣﻦ اﻹﺧﺮاج‪:‬‬

‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺑﻌﺎﻟﻢ‬ ‫ﺒﺎ‬
‫ﻣﺮﺣ ً‬
‫ﺒﺎ ﻋﺎﻟﻢ !‪Python Crash Course‬‬‫ﻣﺮﺣ ً‬

‫ﺋﻤﺎ‪.‬‬
‫ﺘﻪ اﻟﺤﺎﻟﻴ ﺔ دا ً‬
‫ﺒﻊ ‪Python‬ﻗﻴﻤ‬
‫ﺘ‬‫ﺘ‬‫ﺘ‬
‫ﺑﺮﻧﺎﻣﺠﻚ ﻓ ﻲ أي وﻗ ﺖ ‪ ،‬وﺳ‬‫ﺘﻐﻴﺮ ﻓ ﻲ‬
‫ﻳﻤﻜﻨﻚﺗﻐﻴﻴﺮ ﻗﻴﻤ ﺔ اﻟﻤ‬

‫ﺘﻐﻴﺮا ت‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺗ ﺴﻤﻴ ﺔ واﺳ‬
‫ﺑﻌﺾ ﻫﺬه اﻟﻘﻮاﻋﺪ‬‫ﺒﻌﺾ اﻟﻘﻮاﻋﺪ واﻹرﺷﺎدا ت‪ .‬ﻛ ﺴﺮ‬
‫ﺑ‬‫ﺘﺰام‬
‫ﺑﺤﺎﺟ ﺔ إﱃ اﻻﻟ‬‫ﺘﻐﻴﺮا ت ﻓ ﻲ ‪Python ،‬ﻓﺄﻧ ﺖ‬
‫ﺘﺨﺪم اﻟﻤ‬
‫ﻋﻨﺪﻣﺎﺗ ﺴ‬
‫ﺗﻬﺎ وﻓﻬﻤﻬﺎ‪.‬‬
‫ﺘ ﻲﻳ ﺴﻬﻞ ﻗﺮاء‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺳﻴﺆدي إﱃ ﺣﺪو ث أﺧﻄﺎء ؛ﺗ ﺴﺎﻋﺪك اﻷﺳﻄﺮ اﻹرﺷﺎدﻳ ﺔ اﻷﺧﺮى ﻓ ﻲ ﻛ‬
‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺘﻐﻴﺮة اﻟ‬
‫ﺗﺄﻛﺪ ﻣﻦ ﻣﺮاﻋﺎة اﻟﻘﻮاﻋﺪ اﻟﻤ‬

‫ﺘﻐﻴﺮا ت ﻋﲆ أﺣﺮف وأرﻗﺎم وﺷﺮﻃﺎ تﺳﻔﻠﻴ ﺔ ﻓﻘﻂ‪.‬‬


‫ﺘﻮي أﺳﻤﺎء اﻟﻤ‬
‫•ﻳﻤﻜﻦ أنﺗﺤ‬
‫ﺑﺮﻗﻢ‪.‬‬‫ﺑﺤﺮف أو ﺷﺮﻃ ﺔﺳﻔﻠﻴ ﺔ ‪ ،‬وﻟﻜﻦ ﻟﻴ ﺲ‬‫ﺒﺪأ‬
‫ﻳﻤﻜﻦ أنﺗ‬
‫ﺘﻐﻴﺮ ‪message_1‬وﻟﻴ ﺲ ‪1_message.‬‬
‫ﺘﺪﻋﺎء ﻣ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺨﺪام اﻟﺸﺮﻃ ﺔ اﻟ ﺴﻔﻠﻴ ﺔ ﻟﻔﺼﻞ اﻟﻜﻠﻤﺎ ت ﻓ ﻲ أﺳﻤﺎء‬
‫ﺘﻐﻴﺮا ت ‪ ،‬وﻟﻜﻦﻳﻤﻜﻦ اﺳ‬
‫ﺑﺎﻟﻤ ﺴﺎﻓﺎ ت ﻓ ﻲ أﺳﻤﺎء اﻟﻤ‬‫•ﻏﻴﺮ ﻣ ﺴﻤﻮح‬
‫ﺘﺆدي إﱃ ﺣﺪو ث أﺧﻄﺎء‪.‬‬
‫ﺘﺮﺣﻴ ﺐﺳ‬
‫ﺘﺮﺣﻴ ﺐ ‪ ،‬ﻟﻜﻦ رﺳﺎﻟ ﺔ اﻟ‬
‫ﺜﺎل ‪،‬ﺗﻌﻤﻞ رﺳﺎﻟ ﺔ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻐﻴﺮا ت‪ .‬ﻋﲆﺳ‬
‫اﻟﻤ‬

‫ﺘﻲ‬
‫ﺘﺨﺪم اﻟﻜﻠﻤﺎ ت اﻟ‬
‫ﺘﻐﻴﺮا ت‪ .‬أي ‪ ،‬ﻻﺗ ﺴ‬
‫ﺘﺨﺪام ﻛﻠﻤﺎ ت ‪Python‬اﻷﺳﺎﺳﻴ ﺔ وأﺳﻤﺎء اﻟﻮﻇﺎﺋﻒ ﻛﺄﺳﻤﺎء ﻣ‬
‫ﺗﺠﻨ ﺐ اﺳ‬
‫•‬
‫ﺒﺎﻋ ﺔ‪) .‬راﺟﻊ "ﻛﻠﻤﺎ ت ‪Python‬اﻷﺳﺎﺳﻴ ﺔ واﻟﻮﻇﺎﺋﻒ اﻟﻤﻀﻤﻨ ﺔ"‬
‫ﺜﻞ ﻛﻠﻤ ﺔ ﻃ‬
‫ﺜﻮن ﻟﻐﺮض ﻧﺤﻮي ﻣﻌﻴﻦ ‪ ،‬ﻣ‬
‫ﺑﺎﻳ‬‫ﺑﻬﺎ‬‫ﺘﻔﻈ ﺖ‬
‫اﺣ‬
‫ﻓ ﻲ اﻟﺼﻔﺤ ﺔ )‪489.‬‬

‫ﺜﺎل ‪ ،‬اﻻﺳﻢ ﻫﻮ‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻐﻴﺮا ت ﻗﺼﻴﺮة وﻟﻜﻦ وﺻﻔﻴ ﺔ‪ .‬ﻋﲆﺳ‬
‫•ﻳﺠ ﺐ أنﺗﻜﻮن أﺳﻤﺎء اﻟﻤ‬
‫أﻓﻀﻞ ﻣﻦ ‪n ،‬اﺳﻢ اﻟﻄﺎﻟ ﺐ أﻓﻀﻞ ﻣﻦ ‪s_n ،‬و ‪name_length‬أﻓﻀﻞ ﻣﻦ ‪length_of_persons_name.‬‬

‫ﺒﻴﺮ ‪O‬‬
‫ﺘﺨﺪام اﻟﺤﺮف اﻟﺼﻐﻴﺮ ‪l‬واﻟﺤﺮف اﻟﻜ‬
‫ﺗﻮخ اﻟﺤﺬر ﻋﻨﺪ اﺳ‬
‫•‬
‫ﺑﻴﻦ اﻟﺮﻗﻤﻴﻦ ‪1‬و ‪0.‬‬
‫ﺑﻴﻨﻪ و‬‫ﻷﻧﻪﻳﻤﻜﻦ اﻟﺨﻠﻂ‬

‫ﺜﺮﺗﺸﻮﻳ ًﻘﺎ‬
‫ﺒﺢ أﻛ‬
‫ﺑﺮاﻣﺠﻚﺗﺼ‬‫ﺘﻐﻴﺮا ت ﺟﻴﺪة ‪ ،‬ﺧﺎﺻ ﺔ وأن‬
‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ إﻧﺸﺎء أﺳﻤﺎء ﻣ‬
‫ﺘ‬‫ﺘﺪرﻳ ﺐ ﻟ‬
‫ﺑﻌﺾ اﻟ‬‫ﺘﻐﺮق اﻷﻣﺮ‬
‫ﻗﺪﻳ ﺴ‬
‫ﺑﺄﺳﻤﺎء ذا ت‬‫ﺘﺤ ﺴﻦ ﻓ ﻲ اﻟﺨﺮوج‬
‫ﺘ‬‫ﺒﺪأ ﻓ ﻲ ﻗﺮاءة رﻣﻮز اﻷﺷﺨﺎص اﻵﺧﺮﻳﻦ ‪،‬ﺳ‬
‫ﺗ‬‫ﺒﺮاﻣﺞ و‬
‫ﺘ ﺐ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬
‫ﺗﻌﻘﻴﺪًا‪ .‬ﻋﻨﺪﻣﺎﺗﻜ‬
‫و‬
‫ﻣﻌﻨﻰ‪.‬‬

‫ﺘﺨﺪم‬
‫ﺑﺄﺣﺮف ﺻﻐﻴﺮة‪ .‬ﻟﻦﺗﺤﺼﻞ ﻋﲆ أﺧﻄﺎء إذا ﻛﻨ ﺖﺗ ﺴ‬‫ﺘﺨﺪﻣﻬﺎ ﻓ ﻲ ﻫﺬه اﻟﻤﺮﺣﻠ ﺔ‬
‫ﺘ ﻲﺗ ﺴ‬
‫ﺘﻐﻴﺮا ت ‪Python‬اﻟ‬
‫ﻣﻼﺣﻈ ﺔ‪:‬ﻳﺠ ﺐ أنﺗﻜﻮن ﻣ‬
‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ اﻟﻮﻗ ﺖ اﻟﺤﺎﻟ ﻲ‪.‬‬
‫ﺒﻴﺮة ‪ ،‬وﻟﻜﻦ ﻣﻦ اﻟﺠﻴﺪﺗﺠﻨ ﺐ اﺳ‬
‫اﻷﺣﺮف اﻟﻜ‬

‫ﺘﻐﻴﺮا ت‬
‫ﺘﺨﺪام اﻟﻤ‬
‫ﺗﺠﻨ ﺐ أﺧﻄﺎء اﻷﺳﻤﺎء ﻋﻨﺪ اﺳ‬
‫ﺗﻜ ﺐ أﺧﻄﺎء ﻛﻞﻳﻮم‪.‬‬
‫ﺒﺮﻣﺞﻳﺨﻄ ﺊ ‪ ،‬وﻣﻌﻈﻤﻪﻳﺮ‬
‫ﻛﻞ ﻣ‬
‫ﺑ ﺔ ﻟﻬﺬه‬
‫ﺘﺠﺎ‬ ‫ﺒﻮن ﻓ ﻲ ﺣﺪو ث أﺧﻄﺎء ‪ ،‬إﻻ أﻧﻬﻢﻳﻌﺮﻓﻮن أ ً‬
‫ﻳﻀﺎ ﻛﻴﻔﻴ ﺔ اﻻﺳ‬ ‫ﺒ‬‫ﺘﺴ‬
‫ﺒﺮﻣﺠﻴﻦ اﻟﺠﻴﺪﻳﻦ ﻗﺪﻳ‬
‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن اﻟﻤ‬
‫ﺘﻌﺮف ﻋﲆ ﻛﻴﻔﻴ ﺔ إﺻﻼﺣﻪ‪.‬‬
‫ﺒﻜﺮ وﻧ‬
‫ﺒﻪ ﻓ ﻲ وﻗ ﺖ ﻣ‬
‫ﺗﻜ‬‫ﺘﻤﻞ أنﺗﺮ‬
‫ﺑﻜﻔﺎءة‪ .‬دﻋﻨﺎ ﻧﻠﻘ ﻲ ﻧﻈﺮة ﻋﲆ ﺧﻄﺄ ﻣﻦ اﻟﻤﺤ‬‫اﻷﺧﻄﺎء‬

‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻐﻴﺮا ت وأﻧﻮاع اﻟ‬
‫اﻟﻤ‬ ‫‪21‬‬
‫‪Machine Translated by Google‬‬

‫ﺘ ﻲﺗﻮﻟﺪ ﺧﻄﺄ ﻋﻦ ﻗﺼﺪ‪ .‬دﺧﻮل‬


‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻌﺾ اﻟ‬‫ﺘﺐ‬
‫ﺳﻨﻜ‬
‫ﺑﺎﻟﺨﻂ اﻟﻌﺮﻳﺾ‪:‬‬‫ﺑﻬﺎ أﺧﻄﺎء إﻣﻼﺋﻴ ﺔﺗﻈﻬﺮ‬‫ﺘﻲ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻟﻜﻠﻤ ﺔ اﻟ‬‫ﺘﺎﻟ ﻲ ‪،‬‬
‫اﻟﻜﻮد اﻟ‬

‫ﺒﺎ ﻗﺎرئ "!‪Python Crash Course‬‬


‫= ‪"message‬ﻣﺮﺣ ً‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫ﻃ‬

‫ﺗﻚ ﻓ ﻲ ﻣﻌﺮﻓ ﺔ ﻣﻜﺎن اﻟﻤﺸﻜﻠ ﺔ‪.‬ﻳﻮﻓﺮ‬


‫ﺘﺮﺟﻢ ‪Python‬ﻗﺼﺎرى ﺟﻬﺪه ﻟﻤ ﺴﺎﻋﺪ‬
‫ﺒﺬل ﻣ‬
‫ﺑﺮﻧﺎﻣﺠﻚ ‪،‬ﻳ‬‫ﻋﻨﺪ ﺣﺪو ث ﺧﻄﺄ ﻓ ﻲ‬
‫ﺘﺮﺟﻢ ﻣﺸﻜﻠ ﺔ‬
‫ﺑﻨﺠﺎح‪ traceback .‬ﻫﻮﺳﺠﻞ ﻟﻠﻤﻜﺎن اﻟﺬي واﺟﻪ ﻓﻴﻪ اﻟﻤ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﻌﺬرﺗﺸﻐﻴﻞ اﻟ‬
‫ﺒﻊ ﻋﻨﺪﻣﺎﻳ‬
‫ﺘ‬‫ﺘ‬‫ﺘﺮﺟﻢ إﻣﻜﺎﻧﻴ ﺔ اﻟ‬
‫اﻟﻤ‬
‫ﺑﻚ ‪.‬‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻋﻨﺪ ﻣﺤﺎوﻟ ﺔﺗﻨﻔﻴﺬ اﻟ‬

‫ﺑﺸﻜﻞ ﺧﺎﻃ ﺊ‪:‬‬‫ﺘﻐﻴﺮ‬


‫ﺑ ﺔ اﺳﻢ اﻟﻤ‬
‫ﺘﺎ‬
‫ﺑﻌﺪ أن أﺧﻄﺄ ت ﻓ ﻲ ﻛ‬‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﺗﺪاد اﻟﺬيﺗﻮﻓﺮه‬
‫ﺒﻊ اﻻر‬
‫ﺘ‬‫ﺜﺎل ﻋﲆﺗ‬
‫ﻓﻴﻤﺎﻳﻠ ﻲ ﻣ‬

‫‪)Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪u :‬ﻣﻠﻒ ‪"hello_world.py" ،‬اﻟ ﺴﻄﺮ‬


‫‪2 ،‬ﻓ ﻲ ‪<module> v print (mesage) w‬ﺧﻄﺄ اﻻﺳﻢ‪ :‬اﻻﺳﻢ '‪'mesage‬ﻏﻴﺮ‬
‫ﻣﺤﺪد‬

‫ﺗﻨﺎ‬
‫ﺘﺮﺟﻢ ﻫﺬا اﻟﺨﻂ ﻟﻤ ﺴﺎﻋﺪ‬
‫ﺒﻠﻎ اﻹﺧﺮاج ﻓ ﻲ ‪u‬ﺣﺪو ث ﺧﻄﺄ ﻓ ﻲ اﻟ ﺴﻄﺮ ‪2‬ﻣﻦ اﻟﻤﻠﻒ ‪hello_world.py.‬ﻳﻮﺿﺢ اﻟﻤ‬
‫ﻳ‬
‫ﺘﻐﻴﺮ‬
‫ﺑﺄن اﻟﻤ‬‫ﺗﻔﻴﺪ‬
‫ﺑﻨﻮع اﻟﺨﻄﺄ اﻟﺬي وﺟﺪه‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬وﺟﺪ ت ﺧﻄﺄ ﻓ ﻲ اﻻﺳﻢ و‬‫ﺒﺮﻧﺎ‬
‫ﺑ ﺴﺮﻋ ﺔ وﻳﺨ‬‫ﺘﺸﺎف اﻟﺨﻄﺄ‬
‫ﻋﲆ اﻛ‬
‫ً‬
‫ﻋﺎدة ﻣﺎﻳﻌﻨ ﻲ ﺧﻄﺄ اﻻﺳﻢ‬ ‫ﺘﻐﻴﺮ اﻟﻤﻘﺪم‪.‬‬
‫ﺗﺤﺪﻳﺪ اﺳﻢ اﻟﻤ‬
‫ﺘﻄﻴﻊ ‪Python‬‬
‫ﺘﻢﺗﻌﺮﻳﻔﻪ‪ .‬ﻻﺗ ﺴ‬
‫ﺘﻪ ‪mesage ، ،‬ﻟﻢﻳ‬
‫ﺒﺎﻋ‬
‫ﺘﻢ ﻃ‬
‫اﻟﺬيﺗ‬
‫ﺘﻐﻴﺮ‪.‬‬
‫ﺒﻨﺎ ﺧﻄﺄ إﻣﻼﺋ ًﻴﺎ ﻋﻨﺪ إدﺧﺎل اﺳﻢ اﻟﻤ‬
‫ﺗﻜ‬‫ﺘﺨﺪاﻣﻪ ‪ ،‬أو أﻧﻨﺎ ار‬
‫ﺒﻞ اﺳ‬
‫ﺘﻐﻴﺮ ﻗ‬
‫أﻧﻨﺎ إﻣﺎ ﻧ ﺴﻴﻨﺎﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ اﻟﻤ‬

‫ﺘﺪﻗﻴﻖ‬
‫ﺑﺎﻟ‬
‫ﺘﺮﺟﻢ ‪Python‬‬
‫ﺜﺎﻧ ﻲ‪ .‬ﻻﻳﻘﻮم ﻣ‬
‫ﺘﻐﻴﺮ ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟ‬
‫ﺜﺎل ﺣﺬﻓﻨﺎ اﻟﺤﺮف ‪s‬ﻓ ﻲ رﺳﺎﻟ ﺔ اﺳﻢ اﻟﻤ‬
‫ﺒﻊ ‪ ،‬ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺑﺎﻟﻄ‬
‫ﺒﻴﻞ‬
‫ﺘﻤﺮار‪ .‬ﻋﲆﺳ‬
‫ﺑﺎﺳ‬‫ﺘﻬﺎ‬
‫ﺘﻢﺗﻬﺠﺌ‬
‫ﺘﻐﻴﺮا تﻳ‬
‫ﺑﻚ ‪ ،‬وﻟﻜﻨﻪﻳﻀﻤﻦ أن أﺳﻤﺎء اﻟﻤ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻹﻣﻼﺋ ﻲ ﻓ ﻲ اﻟ‬
‫ﺑﺸﻜﻞ ﻏﻴﺮ ﺻﺤﻴﺢ ﻓ ﻲ ﻣﻜﺎن آﺧﺮ ﻓ ﻲ اﻟﻜﻮد أ ً‬
‫ﻳﻀﺎ‪:‬‬ ‫ﺘ ﺐ رﺳﺎﻟ ﺔ‬
‫ﺜﺎل ‪ ،‬ﺷﺎ ﻫﺪ ﻣﺎﻳﺤﺪ ث ﻋﻨﺪﻣﺎ ﻧﻜ‬
‫اﻟﻤ‬

‫ﺒﺎ ﻗﺎرئ "!‪Python Crash Course‬‬


‫= ‪"mesage‬ﻣﺮﺣ ً‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫ﻃ‬

‫ﺑﻨﺠﺎح!‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﻢﺗﺸﻐﻴﻞ اﻟ‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﻳ‬

‫ﺒﺎ ﻗﺎرئ !‪Python Crash Course‬‬


‫ﻣﺮﺣ ً‬

‫ﺘﻔﻜﻴﺮ ﻓ ﻲ ﻗﻮاﻋﺪ‬
‫ﺘﺎج إﱃ اﻟ‬
‫ﺘﻴﺠ ﺔ ﻟﺬﻟﻚ ‪ ،‬ﻻﺗﺤ‬
‫ﺘﻬﺠﺌ ﺔ اﻟﺠﻴﺪة واﻟ ﺴﻴﺌ ﺔ‪ .‬ﻧ‬
‫ﺘﺠﺎ ﻫﻞ اﻟ‬
‫ﺗﺮ ﺻﺎرﻣ ﺔ ‪ ،‬ﻟﻜﻨﻬﺎﺗ‬
‫ﺒﻴﻮ‬
‫أﺟﻬﺰة اﻟﻜﻤ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪.‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺘﻐﻴﺮة وﻛ‬
‫ﺘﻬﺠﺌ ﺔ واﻟﻘﻮاﻋﺪ اﻹﻧﺠﻠﻴﺰﻳ ﺔ ﻋﻨﺪﻣﺎﺗﺤﺎول إﻧﺸﺎء أﺳﻤﺎء ﻣ‬
‫اﻟ‬

‫ﺒﺮﻧﺎﻣﺞ‪ .‬إذا ﻛﻨ ﺖﺗﻘﻀ ﻲ‬


‫ﺑ ﺴﻴﻄ ﺔ ﻣﻦ ﺣﺮف واﺣﺪ ﻓ ﻲﺳﻄﺮ واﺣﺪ ﻣﻦ اﻟ‬‫ﺒﺮﻣﺠ ﺔ ﻫ ﻲ أﺧﻄﺎء إﻣﻼﺋﻴ ﺔ‬
‫اﻟﻌﺪﻳﺪ ﻣﻦ أﺧﻄﺎء اﻟ‬
‫ﺘﻤﺮﺳﻴﻦ‬
‫ﺒﺮﻣﺠﻴﻦ اﻟﻤ‬ ‫ﺘًﺎ ﻃﻮﻳ ﻼ ً ﻓ ﻲ اﻟ‬
‫ﺒﺤ ﺚ ﻋﻦ أﺣﺪ ﻫﺬه اﻷﺧﻄﺎء ‪ ،‬ﻓﺎﻋﻠﻢ أﻧﻚ ﻓ ﻲ ﺷﺮﻛ ﺔ ﺟﻴﺪة‪.‬ﻳﻘﻀ ﻲ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤ‬ ‫وﻗ‬
‫ﻗﺪﻣﺎ ‪ ،‬ﻣﺪر ًﻛﺎ أﻧﻪ‬
‫ً‬ ‫ﺗﻤﻀ ﻲ‬
‫ﺒﺤ ﺚ ﻋﻦ ﻫﺬه اﻷﻧﻮاع ﻣﻦ اﻷﺧﻄﺎء اﻟﺼﻐﻴﺮة‪ .‬ﺣﺎول أنﺗﻀﺤﻚ ﻣﻦ اﻷﻣﺮ و‬
‫ﺑﻴﻦﺳﺎﻋﺎ ت ﻓ ﻲ اﻟ‬
‫واﻟﻤﻮ ﻫﻮ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪.‬‬
‫ﺗﻚ اﻟ‬
‫ﺜﻴ ﺮًا ﻃﻮال ﺣﻴﺎ‬
‫ﺳﻴﺤﺪ ث ﻛ‬

‫‪22‬اﻟﻔﺼﻞ ‪2‬‬
‫‪Machine Translated by Google‬‬

‫ﺛﻨﺎء اﻟﻌﻤﻞ ﻋﲆﺗﻤﺮﻳﻦ ﻓ ﻲ ﻫﺬا‬


‫ﺘﻚ ﻣﺸﻜﻠ ﺔ أ‬
‫ﺑﺮاﻣﺠﻚ‪ .‬إذا واﺟﻬ‬‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ‬
‫ﺒﺮﻣﺠ ﺔ اﻟﺠﺪﻳﺪة ﻫ ﻲ ﻣﺤﺎوﻟ ﺔ اﺳ‬
‫أﻓﻀﻞ ﻃﺮﻳﻘ ﺔ ﻟﻔﻬﻢ ﻣﻔﺎ ﻫﻴﻢ اﻟ‬
‫ﺘﺮة ﻣﻦ اﻟﻮﻗ ﺖ‪ .‬إذا ﻛﻨ ﺖ ﻻﺗﺰال ﻋﺎﻟ ًﻘﺎ ‪ ،‬ﻓﺮاﺟﻊ اﻟﺠﺰء ذي اﻟﺼﻠ ﺔ ﻣﻦ ﻫﺬا اﻟﻔﺼﻞ‪ .‬إذا ﻛﻨ ﺖ ﻻﺗﺰال‬
‫ﺑﺸ ﻲء آﺧﺮ ﻟﻔ‬‫ﺘﺎ ب ‪ ،‬ﻓﺤﺎول اﻟﻘﻴﺎم‬
‫اﻟﻜ‬
‫ﺘﺮاﺣﺎ ت ﻓ ﻲ اﻟﻤﻠﺤﻖ ج‪.‬‬
‫ﺑﺤﺎﺟ ﺔ إﱃ اﻟﻤ ﺴﺎﻋﺪة ‪ ،‬ﻓﺮاﺟﻊ اﻻﻗ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺒﻊ اﺻﻄﻼﺣﺎ ت ‪Python‬‬


‫ﺘ‬‫ﺑﺎﺳﻢ ﻣﻠﻒﻳ‬‫ﺑﺮﻧﺎﻣﺞ‬ ‫ﺑﺮﻧﺎﻣﺠًﺎ ﻣﻨﻔﺼ ﻼ ً ﻹﻧﺠﺎز ﻛﻞ ﻣﻦ ﻫﺬه اﻟ‬
‫ﺘﻤﺎرﻳﻦ‪ .‬اﺣﻔﻆ ﻛﻞ‬ ‫ﺘﺐ‬
‫اﻛ‬
‫ﺜﻞ ‪simple_message.py‬و ‪simple_messages.py.‬‬
‫ﺘﺨﺪام أﺣﺮف ﺻﻐﻴﺮة وﺷﺮﻃﺎ تﺳﻔﻠﻴ ﺔ ‪ ،‬ﻣ‬
‫ﺑﺎﺳ‬‫اﻟﻘﻴﺎﺳﻴ ﺔ ‪،‬‬

‫ﺒﻌﻬﺎ‬
‫ﺛﻢ اﻃ‬‫ﺘﻐﻴﺮ ‪،‬‬
‫ﺘﺨﺰﻳﻦ رﺳﺎﻟ ﺔ ﻓ ﻲ ﻣ‬
‫ﺑ‬‫ﺑ ﺴﻴﻄ ﺔ‪ :‬ﻗﻢ‬‫‪2-1.‬رﺳﺎﻟ ﺔ‬
‫رﺳﺎﻟ ﺔ‪.‬‬

‫ﺒﺎﻋ ﺔﺗﻠﻚ اﻟﺮﺳﺎﻟ ﺔ‪.‬‬


‫ﺑﻄ‬‫ﺘﻐﻴﺮ ‪ ،‬وﻗﻢ‬
‫ﺘﺨﺰﻳﻦ رﺳﺎﻟ ﺔ ﻓ ﻲ ﻣ‬
‫ﺑ‬‫ﺑ ﺴﻴﻄ ﺔ‪ :‬ﻗﻢ‬‫‪2-2.‬رﺳﺎﺋﻞ‬
‫ﺒﺎﻋ ﺔ اﻟﺠﺪﻳﺪ‬
‫ﺑﻚ إﱃ رﺳﺎﻟ ﺔ ﺟﺪﻳﺪة ‪ ،‬وﻃ‬‫ﺘﻐﻴﺮ اﻟﺨﺎص‬
‫ﺘﻐﻴﻴﺮ ﻗﻴﻤ ﺔ اﻟﻤ‬
‫ﺑ‬‫ﺛﻢ ﻗﻢ‬
‫رﺳﺎﻟ ﺔ‪.‬‬

‫ﺳﻼﺳﻞ‬
‫ﺑﻬﺎ ‪ ،‬ﻓﺈﻧﻬﺎﺗ ﺴﺎﻋﺪ ﻓ ﻲﺗﺼﻨﻴﻒ أﻧﻮاع‬‫ﺛﻢﺗﻔﻌﻞ ﺷﻴ ًﺌﺎ ﻣﻔﻴﺪًا‬‫ﺗﺠﻤﻌﻬﺎ ‪،‬‬
‫ﺒﻴﺎﻧﺎ ت و‬
‫ﺒﺮاﻣﺞﺗﺤﺪد ﻧﻮﻋً ﺎ ﻣﻦ اﻟ‬
‫ﻧﻈ ﺮًاﻷن ﻣﻌﻈﻢ اﻟ‬
‫ﺑ ﺴﻴﻄ ﺔ ﺟﺪًا ﻟﻠﻮ ﻫﻠ ﺔ اﻷوﱃ ‪ ،‬وﻟﻜﻦﻳﻤﻜﻨﻚ‬‫ﺗﺎر‬
‫ﺒﻴﺎﻧﺎ ت اﻷول اﻟﺬيﺳﻨﻨﻈﺮ إﻟﻴﻪ ﻫﻮ اﻟ ﺴﻠ ﺴﻠ ﺔ‪ .‬اﻷو‬
‫ﺒﻴﺎﻧﺎ ت‪ .‬ﻧﻮع اﻟ‬
‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟ‬
‫ﻣﺨ‬
‫ﺘﻠﻔ ﺔ‪.‬‬
‫ﺑﻌﺪة ﻃﺮق ﻣﺨ‬‫ﺘﺨﺪاﻣﻬﺎ‬
‫اﺳ‬

‫ﺒﺎسﺳﻠ ﺴﻠ ﺔ ﻓ ﻲ ﻟﻐ ﺔ ‪Python ،‬‬


‫ﺘ‬‫ﺑﺪاﺧﻞ ﻋﻼﻣﺎ ت اﻻﻗ‬‫ﺒﺮ أي ﺷ ﻲء‬
‫ﺘ‬‫ﺒ ﺴﺎﻃ ﺔﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻷﺣﺮف ‪.‬ﻳﻌ‬
‫ﺑ‬‫اﻟ ﺴﻠ ﺴﻠ ﺔ ﻫ ﻲ‬
‫ﺒﺎس ﻣﻔﺮدة أو ﻣﺰدوﺟ ﺔ ﺣﻮل اﻟﺠﻤﻞ ﻛﻤﺎﻳﻠ ﻲ‪:‬‬
‫ﺘ‬‫ﺘﺨﺪام ﻋﻼﻣﺎ ت اﻗ‬
‫وﻳﻤﻜﻨﻚ اﺳ‬

‫" ﻫﺬهﺳﻠ ﺴﻠ ﺔ‪".‬‬


‫" ﻫﺬه أ ً‬
‫ﻳﻀﺎﺳﻠ ﺴﻠ ﺔ‪".‬‬

‫ﺑﻚ‪:‬‬‫ﺒﺎس واﻟﻔﻮاﺻﻞ اﻟﻌﻠﻴﺎ داﺧﻞ اﻟ ﺴﻼﺳﻞ اﻟﺨﺎﺻ ﺔ‬


‫ﺘ‬‫ﺘﺨﺪام ﻋﻼﻣﺎ ت اﻻﻗ‬
‫ﺘﻴﺢ ﻟﻚ ﻫﺬه اﻟﻤﺮوﻧ ﺔ اﺳ‬
‫ﺗ‬

‫ﺘ ﻲ اﻟﻤﻔﻀﻠ ﺔ!"‬
‫ﺜﻮن ﻫ ﻲ ﻟﻐ‬
‫ﺑﺎﻳ‬
‫ﺒﺮ ت ﺻﺪﻳﻘ ﻲ ‪" ،‬‬
‫أﺧ‬
‫ﺒﺎن‪".‬‬
‫ﺜﻌ‬‫ﺗﻤ ﺖﺗ ﺴﻤﻴ ﺔ ﻟﻐ ﺔ '‪'Python‬ﻋﲆ اﺳﻢ ‪Monty Python ،‬وﻟﻴ ﺲ اﻟ‬
‫"‬
‫ﺘﻨﻮع واﻟﺪاﻋﻢ‪".‬‬
‫ﺘﻤﻌﻬﺎ اﻟﻤ‬
‫ﺜﻮن ﻫ ﻲ ﻣﺠ‬
‫ﺑﺎﻳ‬‫"إﺣﺪى ﻧﻘﺎط ﻗﻮة‬

‫ﺘﺨﺪام اﻟ ﺴﻼﺳﻞ‪.‬‬
‫ﺘ ﻲﻳﻤﻜﻨﻚ ﻣﻦ ﺧﻼﻟﻬﺎ اﺳ‬
‫ﺑﻌﺾ اﻟﻄﺮق اﻟ‬‫ﺘﻜﺸﻒ‬
‫دﻋﻨﺎ ﻧ ﺴ‬

‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻐﻴﺮا ت وأﻧﻮاع اﻟ‬
‫اﻟﻤ‬ ‫‪23‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﻐﻴﻴﺮ اﻟﺤﺎﻟ ﺔ ﻓ ﻲﺳﻠ ﺴﻠ ﺔ ﻣﻊ اﻷﺳﺎﻟﻴ ﺐ‬


‫ﺘﺨﺪام اﻟ ﺴﻼﺳﻞ ﻫ ﻲﺗﻐﻴﻴﺮ ﺣﺎﻟ ﺔ اﻟﻜﻠﻤﺎ ت ﻓ ﻲﺳﻠ ﺴﻠ ﺔ‪ .‬اﻧﻈﺮ إﱃ اﻟﻜﻮد‬
‫ﺑﺎﺳ‬‫ﺑﻬﺎ‬‫ﺘ ﻲﻳﻤﻜﻨﻚ اﻟﻘﻴﺎم‬
‫ﺑ ﺴﻂ اﻟﻤﻬﺎم اﻟ‬
‫واﺣﺪة ﻣﻦ أ‬
‫ﺘﺎﻟ ﻲ ‪ ،‬وﺣﺎولﺗﺤﺪﻳﺪ ﻣﺎﻳﺤﺪ ث‪:‬‬
‫اﻟ‬

‫"‪name.py name = "ada lovelace‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(name.title‬‬
‫ﻃ‬

‫ﺗﺞ‪:‬‬
‫ﺘﺸﻐﻴﻠﻪ‪.‬ﻳﺠ ﺐ أنﺗﺮى ﻫﺬا اﻟﻨﺎ‬
‫ﺑ‬‫ﺛﻢ ﻗﻢ‬
‫ﺑﺎﺳﻢ ‪name.py ،‬‬‫اﺣﻔﻆ ﻫﺬا اﻟﻤﻠﻒ‬

‫آدا ﻟﻮﻓﻠﻴ ﺲ‬

‫ﺑﻌﺪ‬
‫ﺘﻐﻴﺮ ﻗﺎدر ‪.‬ﻳﻈﻬﺮ ﻋﻨﻮان اﻟﻄﺮﻳﻘ ﺔ )(‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﺼﻐﻴﺮة "‪"ada lovelace‬ﻓ ﻲ اﺳﻢ ﻣ‬
‫ﺜﺎل ‪،‬ﻳ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺑﻌﺪ اﻻﺳﻢ‬
‫ﺒﺮ اﻟﻨﻘﻄ ﺔ )‪(.‬‬
‫ﺒﻴﺎﻧﺎ ت‪.‬ﺗﺨ‬
‫ﺒﺎﻋ ﺔ ‪() .‬اﻟﻄﺮﻳﻘ ﺔ ﻫ ﻲ إﺟﺮاءﻳﻤﻜﻦ أنﺗﺆدﻳﻪ ‪Python‬ﻋﲆ ﺟﺰء ﻣﻦ اﻟ‬
‫ﺘﻐﻴﺮ ﻓ ﻲ ﺣﺎﻟ ﺔ اﻟﻄ‬
‫اﻟﻤ‬
‫ﺒﻌﻬﺎ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷﻗﻮاس ‪،‬‬
‫ﺘ‬‫ﺘﻐﻴﺮ ‪ .‬ﻛﻞ ﻃﺮﻳﻘ ﺔﺗ‬
‫ﺗﻌﻤﻞ ﻋﲆ اﺳﻢ اﻟﻤ‬
‫ﺜﻮن أنﺗﺠﻌﻞ ﻃﺮﻳﻘ ﺔ اﻟﻌﻨﻮان )(‬
‫ﺑﺎﻳ‬
‫ﻓ ﻲ )( ‪name.title‬‬
‫ﺑﻌﻤﻠﻬﺎ‪.‬‬‫ﺘﺎج إﱃ ﻣﻌﻠﻮﻣﺎ ت إﺿﺎﻓﻴ ﺔ ﻟﻠﻘﻴﺎم‬
‫ﺒﺎ ﻣﺎﺗﺤ‬
‫ﻷن اﻷﺳﺎﻟﻴ ﺐ ﻏﺎﻟ ً‬

‫ﺘﺎج وﻇﻴﻔ ﺔ اﻟﻌﻨﻮان )(إﱃ أي ﻣﻌﻠﻮﻣﺎ ت إﺿﺎﻓﻴ ﺔ ‪ ،‬ﻟﺬا ﻓﺈن أﻗﻮاﺳﻬﺎ ﻓﺎرﻏ ﺔ ‪.‬‬
‫ﺘﻢﺗﻮﻓﻴﺮ ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت داﺧﻞ اﻷﻗﻮاس‪ .‬ﻻﺗﺤ‬
‫ﻳ‬

‫ﺘﻔﻜﻴﺮ ﻓ ﻲ اﻻﺳﻢ ﻋﲆ أﻧﻪ‬


‫ﺒﺎ ﻣﺎﺗﺮﻳﺪ اﻟ‬
‫ﺒﻴﺮ‪ .‬ﻫﺬا ﻣﻔﻴﺪﻷﻧﻚ ﻏﺎﻟ ً‬
‫ﺑﺤﺮف ﻛ‬‫ﺒﺪأ ﻛﻞ ﻛﻠﻤ ﺔ‬
‫ﺒﻴﺮ ‪ ،‬ﺣﻴ ﺚﺗ‬
‫ﺑﺤﺮف ﻛ‬‫ﺑﺔ‬
‫ﺘﻮ‬‫ﻳﻌﺮض اﻟﻌﻨﻮان )(ﻛﻞ ﻛﻠﻤ ﺔ ﻣﻜ‬

‫ﺑﻨﻔ ﺲ اﻻﺳﻢ ‪ ،‬وﻋﺮﺿﻬﺎ‬


‫ﺑﺈﻋﺎدةﺗ ﺴﺠﻴﻞ ﻗﻴﻢ اﻹدﺧﺎل ‪Ada‬و ‪ADA‬و ‪ada‬‬‫ﺑﺮﻧﺎﻣﺠﻚ‬‫ﺜﺎل ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ أنﻳﻘﻮم‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺟﺰء ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪ .‬ﻋﲆﺳ‬

‫ﺟﻤﻴﻌً ﺎ ﻋﲆ أﻧﻬﺎ ‪Ada.‬‬

‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺤﺎﻟ ﺔ أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺘﻮﻓﺮ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻄﺮق اﻟﻤﻔﻴﺪة اﻷﺧﺮى ﻟﻠ‬
‫ﺗ‬
‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﺒﻴﺮة أو ﻛﻞ اﻷﺣﺮف اﻟﺼﻐﻴﺮة ﻣ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚﺗﻐﻴﻴﺮﺳﻠ ﺴﻠ ﺔ إﱃ ﻛﻞ اﻷﺣﺮف اﻟﻜ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫اﻻﺳﻢ ="أدا ﻟﻮﻓﻼﻳ ﺲ"‬

‫ﺒﺎﻋ ﺔ ))( ‪(name.upper‬‬


‫ﻃ‬
‫ﺒﺎﻋ ﺔ ))( ‪(name.lower‬‬
‫ﻃ‬

‫ﺳﻴﻌﺮض ﻫﺬا ﻣﺎﻳﻠ ﻲ‪:‬‬

‫أدا ﻟﻮﻓﻼﻳ ﺲ‬

‫آدا ﻟﻮﻓﻠﻴ ﺲ‬

‫ﺑﺎﻷﺣﺮف‬‫ﺛﻮق‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ﻟﻦﺗﺮﻏ ﺐ ﻓ ﻲ اﻟﻮ‬
‫ﺒﻴﺎﻧﺎ ت‪ .‬ﻓ ﻲ ﻛ‬
‫ﺘﺨﺰﻳﻦ اﻟ‬
‫ﺑﺸﻜﻞ ﺧﺎص ﻟ‬‫اﻟﻄﺮﻳﻘ ﺔ اﻟﻤﻨﺨﻔﻀ ﺔ )(ﻣﻔﻴﺪة‬
‫ﺛﻢ ﻋﻨﺪﻣﺎﺗﺮﻳﺪ ﻋﺮض‬‫ﺒﻞﺗﺨﺰﻳﻨﻬﺎ‪.‬‬
‫ﺘﺤﻮل اﻟ ﺴﻼﺳﻞ إﱃ أﺣﺮف ﺻﻐﻴﺮة ﻗ‬
‫ﺘﺨﺪﻣﻮن ﻟﺪﻳﻚ ‪ ،‬ﻟﺬﻟﻚﺳ‬
‫ﺘ ﻲﻳﻮﻓﺮ ﻫﺎ اﻟﻤ ﺴ‬
‫ﺒﻴﺮة اﻟ‬
‫اﻟﻜ‬
‫ﺜﺮ ﻣﻨﻄﻘﻴ ﺔ ﻟﻜﻞﺳﻠ ﺴﻠ ﺔ‪.‬‬
‫ﺘﺨﺪم اﻟﺤﺎﻟ ﺔ اﻷﻛ‬
‫ﺘﺴ‬‫اﻟﻤﻌﻠﻮﻣﺎ ت ‪،‬ﺳ‬

‫‪24‬اﻟﻔﺼﻞ ‪2‬‬
‫‪Machine Translated by Google‬‬

‫دﻣﺞ أوﺗ ﺴﻠ ﺴﻞ اﻟ ﺴﻼﺳﻞ‬


‫ﺜﺎل ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲﺗﺨﺰﻳﻦ اﻻﺳﻢ اﻷول واﻻﺳﻢ اﻷﺧﻴﺮ ﻓ ﻲ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻴﻦ اﻟ ﺴﻼﺳﻞ‪ .‬ﻋﲆﺳ‬‫ﺒﺎ ﻣﺎﻳﻜﻮن ﻣﻦ اﻟﻤﻔﻴﺪ اﻟﺠﻤﻊ‬
‫ﻏﺎﻟ ً‬
‫ﺛﻢ دﻣﺠﻬﺎ ﻋﻨﺪﻣﺎﺗﺮﻳﺪ ﻋﺮض اﻻﺳﻢ اﻟﻜﺎﻣﻞ ﻟﺸﺨﺺ ﻣﺎ‪:‬‬‫ﺘﻐﻴﺮا ت ﻣﻨﻔﺼﻠ ﺔ ‪،‬‬
‫ﻣ‬

‫"‪first_name = "ada‬‬
‫"‪last_name = "lovelace‬‬
‫""‬
‫‪u full_name = first_name +‬‬ ‫‪+‬اﺳﻢ_اﻷﺧﻴﺮ‬

‫ﺒﺎﻋ ﺔ )اﻻﺳﻢ_اﻟﻜﺎﻣﻞ(‬
‫ﻃ‬

‫ﺘﺨﺪم ‪+‬ﻹﻧﺸﺎء اﺳﻢ ﻛﺎﻣﻞ ﻣﻦ ﺧﻼل‬


‫ﺜﺎل ‪ ،‬ﻧ ﺴ‬
‫ﺘﺨﺪم ‪Python‬رﻣﺰ اﻟﺠﻤﻊ )‪(+‬ﻟﺪﻣﺞ اﻟ ﺴﻼﺳﻞ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺗﺴ‬
‫ﺘﻴﺠ ﺔ‪:‬‬
‫ﺑﻴﻦ اﻻﺳﻢ اﻷول ‪ ،‬واﻟﻤ ﺴﺎﻓ ﺔ ‪ ،‬واﻻﺳﻢ اﻷﺧﻴﺮ ‪u ،‬ﻣﻊ إﻋﻄﺎء ﻫﺬه اﻟﻨ‬‫اﻟﺠﻤﻊ‬

‫آدا ﻟﻮﻓﻠﻴ ﺲ‬

‫ﺘﺨﺪام اﻟﻤﻌﻠﻮﻣﺎ ت‬
‫ﺑﺎﺳ‬‫ﺘ ﺴﻠ ﺴﻞ ﻹﻧﺸﺎء رﺳﺎﺋﻞ ﻛﺎﻣﻠ ﺔ‬
‫ﺘﺨﺪام اﻟ‬
‫ﺘ ﺴﻠ ﺴﻞ‪.‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺑﺎﻟ‬‫ﺗ ﺴﻤﻰ ﻃﺮﻳﻘ ﺔ دﻣﺞ اﻟ ﺴﻼﺳﻞ ﻫﺬه‬
‫ﺜﺎل‪:‬‬
‫ﺘﻐﻴﺮ‪ .‬ﻟﻨﻠﻘ ﻲ ﻧﻈﺮة ﻋﲆ ﻣ‬
‫ﺘﺨﺰﻳﻨﻬﺎ ﻓ ﻲ ﻣ‬
‫ﺑ‬‫ﺘ ﻲ ﻗﻤ ﺖ‬
‫اﻟ‬

‫"‪first_name = "ada‬‬
‫"‪last_name = "lovelace‬‬
‫""‬
‫‪full_name‬اﻻﺳﻢ_اﻷول ‪+‬‬
‫=‪+‬اﺳﻢ_اﻷﺧﻴﺮ‬

‫)"!" ‪u print ("Hello،" + full_name.title () +‬‬

‫ﺘﺨﺪم ‪ ،‬و‬
‫ﺘﺨﺪام اﻻﺳﻢ اﻟﻜﺎﻣﻞ ﻋﻨﺪ ‪u‬ﻓ ﻲ ﺟﻤﻠ ﺔﺗﺤﻴ ﻲ اﻟﻤ ﺴ‬
‫ﺘﻢ اﺳ‬
‫ﻫﻨﺎ ‪،‬ﻳ‬
‫ﺑﺸﻜﻞ‬‫ﺑ ﺴﻴﻄ ﺔ وﻟﻜﻦ ﻣﻨ ﺴﻘ ﺔ‬‫ﺑﺸﻜﻞ ﻣﻨﺎﺳ ﺐ‪.‬ﻳﻌﺮض ﻫﺬا اﻟﺮﻣﺰﺗﺤﻴ ﺔ‬‫ﺘﻨ ﺴﻴﻖ اﻻﺳﻢ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻟﻌﻨﻮان )(ﻟ‬
‫ﺘﻢ اﺳ‬
‫ﻳ‬
‫ﺟﻴﺪ‪:‬‬

‫ﺒﺎ ‪Ada Lovelace! ،‬‬


‫ﻣﺮﺣ ً‬

‫ﺘﻐﻴﺮ‪:‬‬
‫ﺑﺄﻛﻤﻠﻬﺎ ﻓ ﻲ ﻣ‬‫ﺛﻢﺗﺨﺰﻳﻦ اﻟﺮﺳﺎﻟ ﺔ‬‫ﺘ ﺴﻠ ﺴﻞ ﻹﻧﺸﺎء رﺳﺎﻟ ﺔ‬
‫ﺘﺨﺪام اﻟ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬

‫"‪first_name = "ada‬‬
‫"‪last_name = "lovelace‬‬
‫""‬
‫‪+‬اﺳﻢ_اﻷﺧﻴﺮ‬ ‫= ‪full_name‬اﻻﺳﻢ_اﻷول ‪+‬‬

‫‪+vfull_name.title‬ﻃ‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬ ‫ﺒﺎ"‬ ‫"!" ‪() +‬‬
‫‪"u message‬ﻣﺮﺣ ً‬ ‫=‬

‫ﺘﻮر‬
‫ﻳﻌﺮض ﻫﺬا اﻟﺮﻣﺰ اﻟﺮﺳﺎﻟ ﺔ "!‪"Hello، Ada Lovelace‬ﻛﺬﻟﻚ ‪ ،‬وﻟﻜﻦﺳ‬
‫ﺒﺎﻋ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ ﻋﻨﺪ ‪v‬‬
‫ﺒﺎرة اﻟﻄ‬
‫ﺘﻐﻴﺮ ﻋﻨﺪ ‪u‬ﻳﺠﻌﻞ ﻋ‬
‫إدﺧﺎل اﻟﺮﺳﺎﻟ ﺔ ﻓ ﻲ ﻣ‬
‫ﺜﺮﺳﻬﻮﻟ ﺔ‪.‬‬
‫اﻛ‬

‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻐﻴﺮا ت وأﻧﻮاع اﻟ‬
‫اﻟﻤ‬ ‫‪25‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪام ﻋﻼﻣﺎ ت اﻟﺠﺪوﻟ ﺔ أو اﻷﺳﻄﺮ اﻟﺠﺪﻳﺪة‬


‫ﺑﺎﺳ‬‫ﺑﻴﻀﺎء إﱃ اﻟ ﺴﻼﺳﻞ‬‫إﺿﺎﻓ ﺔ ﻣ ﺴﺎﻓ ﺔ‬

‫ﺒﻮﻳ ﺐ ورﻣﻮز ﻧﻬﺎﻳ ﺔ اﻟ ﺴﻄﺮ‪.‬‬


‫ﺘ‬‫ﺜﻞ اﻟﻤ ﺴﺎﻓﺎ ت وﻋﻼﻣﺎ ت اﻟ‬
‫ﺒﻮع ‪ ،‬ﻣ‬
‫ﺒﻴﻀﺎء إﱃ أي ﺣﺮف ﻏﻴﺮ ﻣﻄ‬
‫ﺒﺮﻣﺠ ﺔ ‪،‬ﺗﺸﻴﺮ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﻓ ﻲ اﻟ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﻘﺮاءة‪.‬‬
‫ﺑﺤﻴ ﺚﻳ ﺴﻬﻞ ﻋﲆ اﻟﻤ ﺴ‬‫ﺘﻨﻈﻴﻢ اﻹﺧﺮاج‬
‫ﺒﻴﻀﺎء ﻟ‬
‫ﺘﺨﺪام اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬

‫ﺘﺨﺪم ﻣﺠﻤﻮﻋ ﺔ اﻷﺣﺮف ‪\ t‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ ‪u:‬‬


‫ﺑﻚ ‪ ،‬اﺳ‬‫ﺒﻮﻳ ﺐ إﱃ اﻟﻨﺺ اﻟﺨﺎص‬
‫ﻹﺿﺎﻓ ﺔ ﻋﻼﻣ ﺔﺗ‬

‫ﺒﺎﻋ ﺔ )"‪("Python‬‬
‫>>>ﻃ‬
‫ﺒﺎﻋ ﺔ )"‪>>> ("\ tPython‬‬
‫ﻃ‬
‫‪Python u‬‬
‫ﺜﻮن‬
‫ﺑﺎﻳ‬

‫ﺒ ﺔ اﻷﺣﺮف ‪\ n:‬‬
‫ﺘﺨﺪمﺗﺮﻛﻴ‬
‫ﻹﺿﺎﻓ ﺔﺳﻄﺮ ﺟﺪﻳﺪ ﻓ ﻲﺳﻠ ﺴﻠ ﺔ ‪ ،‬اﺳ‬

‫ﺜﻮن )"‪\ nC \ nJavaScript‬‬


‫ﺑﺎﻳ‬
‫ﺒﺎﻋ ﺔ )"اﻟﻠﻐﺎ ت‪\ n :‬‬‫>>>ﻃ‬
‫اﻟﻠﻐﺎ ت‪:‬‬
‫ﺜﻮن‬
‫ﺑﺎﻳ‬
‫ج‬

‫ﺒﺖ‬
‫ﺟﺎﻓﺎﺳﻜﺮﻳ‬

‫ﺘﻘﺎل‬
‫ﺑﺎﻻﻧ‬
‫ﺒﺮ اﻟ ﺴﻠ ﺴﻠ ﺔ ‪"\ n \ t" Python‬‬
‫ﺒﻮﻳ ﺐ واﻷﺳﻄﺮ اﻟﺠﺪﻳﺪة ﻓ ﻲﺳﻠ ﺴﻠ ﺔ واﺣﺪة‪.‬ﺗﺨ‬
‫ﺘ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ دﻣﺞ ﻋﻼﻣﺎ ت اﻟ‬
‫ﺒﻮﻳ ﺐ‪.‬‬
‫ﺑﻌﻼﻣ ﺔﺗ‬‫ﺘﺎﻟ ﻲ‬
‫ﺑﺪء اﻟ ﺴﻄﺮ اﻟ‬
‫إﱃﺳﻄﺮ ﺟﺪﻳﺪ ‪ ،‬و‬
‫ﺑﻌ ﺔ أﺳﻄﺮ ﻣﻦ اﻹﺧﺮاج‪:‬‬
‫ﺘﺨﺪامﺳﻠ ﺴﻠ ﺔ ﻣﻦﺳﻄﺮ واﺣﺪ ﻹﻧﺸﺎء أر‬
‫ﺘﺎﻟ ﻲ ﻛﻴﻒﻳﻤﻜﻨﻚ اﺳ‬
‫ﺜﺎل اﻟ‬
‫ﻳﻮﺿﺢ اﻟﻤ‬

‫ﺜﻮن )"‪\ n \ tC \ n \ tJavaScript‬‬


‫ﺑﺎﻳ‬
‫ﺒﺎﻋ ﺔ )"اﻟﻠﻐﺎ ت‪\ n \ t :‬‬‫>>>ﻃ‬
‫اﻟﻠﻐﺎ ت‪:‬‬
‫ﺜﻮن‬
‫ﺑﺎﻳ‬
‫ج‬

‫ﺒﺖ‬
‫ﺟﺎﻓﺎﺳﻜﺮﻳ‬

‫ﺑﺬﻟﻚ‬‫ﺘﺎﻟﻴﻴﻦ ﻋﻨﺪﻣﺎﺗﻘﻮم‬
‫ﺒﻮﻳ ﺐ ﻣﻔﻴﺪة ﺟﺪًا ﻓ ﻲ اﻟﻔﺼﻠﻴﻦ اﻟ‬
‫ﺘ‬‫ﺘﻜﻮن اﻷﺳﻄﺮ اﻟﺠﺪﻳﺪة وﻋﻼﻣﺎ ت اﻟ‬
‫ﺳ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪.‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻀﻌ ﺔ أﺳﻄﺮ ﻣﻦ اﻟ‬‫ﺘﺎج اﻟﻌﺪﻳﺪ ﻣﻦﺳﻄﻮر اﻹﺧﺮاج ﻣﻦ‬
‫ﺒﺪأ ﻓ ﻲ إﻧ‬
‫ﺗ‬

‫ﺒﻴﻀﺎء‬
‫ﺗﺠﺮﻳﺪ اﻟﻤ ﺴﺎﻓﺎ ت اﻟ‬

‫ﺑﻬ ﺔ إﱃ ﺣﺪ‬
‫ﺘﺸﺎ‬
‫ﺒﺪو '‪'python‬و '‪'python‬ﻣ‬
‫ﺒﺮﻣﺠﻴﻦ ‪،‬ﺗ‬
‫ﺒ ﺔ ﻟﻠﻤ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺑﺮاﻣﺠﻚ‪.‬‬‫ﺑﻜ ﺔ ﻓ ﻲ‬
‫ﺒﻴﻀﺎء اﻟﺰاﺋﺪة ﻣﺮ‬
‫ﻗﺪﺗﻜﻮن اﻟﻤ ﺴﺎﻓﺎ ت اﻟ‬
‫ﺒﺮ ﻫﺎ‬
‫ﺘ‬‫ﺗﻌ‬
‫ﺘﺸﻒ ‪Python‬اﻟﻤ ﺴﺎﺣ ﺔ اﻹﺿﺎﻓﻴ ﺔ ﻓ ﻲ '‪'python‬و‬
‫ﺘﺎن‪.‬ﺗﻜ‬
‫ﺘﻠﻔ‬
‫ﺘﺎن ﻣﺨ‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻓﻬﻤﺎﺳﻠ ﺴﻠ‬
‫ﺒ ﺔ ﻟﻠ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺒﻴﺮ‪ .‬ﻟﻜﻦ‬
‫ﻛ‬
‫ﺑﺨﻼف ذﻟﻚ‪.‬‬‫ﺒﺮ ﻫﺎ‬
‫ﻣﻬﻤ ﺔ ﻣﺎ ﻟﻢﺗﺨ‬

‫ﺘﻴﻦ‪.‬‬
‫ﺑﻘ‬‫ﺘﻄﺎ‬
‫ﺘﺎ ﻣ‬
‫ﺘﺤﺪﻳﺪ ﻣﺎ إذا ﻛﺎﻧ‬
‫ﺘﻴﻦ ﻟ‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲ ﻣﻘﺎرﻧ ﺔﺳﻠ ﺴﻠ‬
‫ﺒﺎﺳ‬
‫ﺒﻴﻀﺎء ‪،‬ﻷﻧﻚ ﻏﺎﻟ ً‬
‫ﺘﻔﻜﻴﺮ ﻓ ﻲ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﻣﻦ اﻟﻤﻬﻢ اﻟ‬
‫ﺘﺨﺪﻣﻴﻦ ﻟﻸﺷﺨﺎص ﻋﻨﺪﺗ ﺴﺠﻴﻞ اﻟﺪﺧﻮل إﱃ‬
‫ﺘﺤﻘﻖ ﻣﻦ أﺳﻤﺎء اﻟﻤ ﺴ‬
‫ﺜﻠ ﺔ اﻟﻤﻬﻤ ﺔ اﻟ‬
‫ﺘﻀﻤﻦ أﺣﺪ اﻷﻣ‬
‫ﺜﺎل ‪ ،‬ﻗﺪﻳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺑ ﺴﻂ أ ً‬
‫ﻳﻀﺎ‪ .‬ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪،‬ﺗ ﺴﻬﻞ ‪Python‬إزاﻟ ﺔ‬ ‫ﺑﻜ ﺔ ﻓ ﻲ اﻟﻤﻮاﻗﻒ اﻷ‬
‫ﺒﻴﻀﺎء اﻟﺰاﺋﺪة ﻣﺮ‬
‫ﻣﻮﻗﻊ وﻳ ﺐ‪ .‬ﻗﺪﺗﻜﻮن اﻟﻤ ﺴﺎﻓﺎ ت اﻟ‬
‫ﺘ ﻲﻳﺪﺧﻠﻬﺎ اﻷﺷﺨﺎص‪.‬‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺒﻴﻀﺎء اﻟﺪﺧﻴﻠ ﺔ ﻣﻦ اﻟ‬
‫اﻟﻤ ﺴﺎﻓﺎ ت اﻟ‬

‫ﺘﺄﻛﺪ ﻣﻦ ﻋﺪم‬
‫ﺒﻴﻦ اﻷﻳﻤﻦ واﻷﻳ ﺴﺮ ﻣﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ‪ .‬ﻟﻠ‬
‫ﺑﻴﻀﺎء إﺿﺎﻓﻴ ﺔ ﻋﲆ اﻟﺠﺎﻧ‬‫ﺒﺤ ﺚ ‪Python‬ﻋﻦ ﻣ ﺴﺎﻓﺎ ت‬
‫ﻳﻤﻜﻦ أنﺗ‬
‫ﺘﺨﺪم ﻃﺮﻳﻘ ﺔ ‪rstrip () .‬‬
‫ﺑﻴﻀﺎء ﻓ ﻲ اﻟﻄﺮف اﻷﻳﻤﻦ ﻣﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ ‪ ،‬اﺳ‬‫وﺟﻮد ﻣ ﺴﺎﻓ ﺔ‬

‫‪26‬اﻟﻔﺼﻞ ‪2‬‬
‫‪Machine Translated by Google‬‬

‫)( ‪u >>> favourite_language = 'python' v >>> favour_language 'python' w >>> favour_language.rstrip‬‬

‫ﺒﺎن"‬
‫ﺜﻌ‬‫"اﻟ‬
‫‪x >>> favourite_language‬‬
‫ﺒﺎن"‬
‫ﺜﻌ‬‫"اﻟ‬

‫ﺑﻴﻀﺎء إﺿﺎﻓﻴ ﺔ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟ ﺴﻠ ﺴﻠ ﺔ‪ .‬ﻋﻨﺪﻣﺎﺗﻄﻠ ﺐ‬‫ﺘﻮي اﻟﻘﻴﻤ ﺔ اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ ‪favour_language‬ﻋﻨﺪ ‪u‬ﻋﲆ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺗﺤ‬
‫ﻣﻦ ‪ Python‬ﻫﺬه اﻟﻘﻴﻤ ﺔ ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ ‪،‬ﻳﻤﻜﻨﻚ رؤﻳ ﺔ اﻟﻤ ﺴﺎﻓ ﺔ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟﻘﻴﻤ ﺔ ‪v.‬ﻋﻨﺪﻣﺎﻳﻜﻮن )( ‪rstrip‬‬

‫ﺘًﺎ‬
‫ﺘﻪ ﻣﺆﻗ‬
‫ﺘﻢ إزاﻟ‬
‫ﺘﻢ إزاﻟ ﺔ ﻫﺬه اﻟﻤ ﺴﺎﺣ ﺔ اﻹﺿﺎﻓﻴ ﺔ‪ .‬وﻣﻊ ذﻟﻚ ‪،‬ﺗ‬
‫ﺗ‬‫ﺘﻐﻴﺮ ‪favour_language‬ﻋﻨﺪ ‪w ،‬‬
‫ﺗﻌﻤﻞ اﻟﻄﺮﻳﻘ ﺔ ﻋﲆ اﻟﻤ‬
‫ﺒﺪو ﻛﻤﺎ ﻫ ﻲ ﻋﻨﺪﻣﺎﺗﻢ إدﺧﺎﻟﻬﺎ ‪،‬‬
‫ﺒ ﺖ ﻗﻴﻤ ﺔ ‪favour_language‬ﻣﺮة أﺧﺮى ‪،‬ﻳﻤﻜﻨﻚ أنﺗﺮى أن اﻟ ﺴﻠ ﺴﻠ ﺔﺗ‬
‫ﻓﻘﻂ‪ .‬إذا ﻃﻠ‬
‫ﺒﻴﻀﺎء اﻟﺰاﺋﺪة ‪x.‬‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬

‫ﺑﺸﻜﻞ داﺋﻢ ‪،‬ﻳﺠ ﺐ ﻋﻠﻴﻚ ذﻟﻚ‬‫ﺒﻴﻀﺎء ﻣﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ‬


‫ﻹزاﻟ ﺔ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺘﻐﻴﺮ‪:‬‬
‫ﺘﺨﺰﻳﻦ اﻟﻘﻴﻤ ﺔ اﻟﻤﺠﺮدة ﻣﺮة أﺧﺮى ﻓ ﻲ اﻟﻤ‬
‫ﺑ‬‫ﻗﻢ‬

‫)( ‪= 'python' u >>> favourite_language = favourite_language.rstrip‬‬


‫‪>>> favourite_language‬‬
‫ﺜﻮن"‬
‫ﺑﻴ‬‫>>>ﻣﻔﻀﻠ ﺔ_ﻟﻐ ﺔ "‬

‫ﺛﻢﺗﺨﺰﻳﻦ‬‫ﺒﻴﻀﺎء ﻣﻦ اﻟﺠﺎﻧ ﺐ اﻷﻳﻤﻦ ﻣﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ‬


‫ﺒﻴﻀﺎء ﻣﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ ‪،‬ﻳﻤﻜﻨﻚﺗﺠﺮﻳﺪ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﻹزاﻟ ﺔ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺛﻢﺗﺨﺰﻳﻦ اﻟﻘﻴﻤ ﺔ‬‫ﺘﻐﻴﺮ‬
‫ﺘﻢﺗﻐﻴﻴﺮ ﻗﻴﻤ ﺔ اﻟﻤ‬
‫ﺒﺎ ﻣﺎﻳ‬
‫ﺘﻐﻴﺮ اﻷﺻﻠ ﻲ ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ ‪u.‬ﻏﺎﻟ ً‬
‫ﻫﺬه اﻟﻘﻴﻤ ﺔ ﻣﺮة أﺧﺮى ﻓ ﻲ اﻟﻤ‬
‫ﺒﺮﻣﺠ ﺔ‪.‬‬
‫ﺘﻐﻴﺮ اﻷﺻﻠ ﻲ ﻓ ﻲ اﻟ‬
‫اﻟﺠﺪﻳﺪة ﻣﺮة أﺧﺮى ﻓ ﻲ اﻟﻤ‬

‫ﺘﺨﺪم‪.‬‬
‫ﺑ ﺔ ﻹدﺧﺎل اﻟﻤ ﺴ‬
‫ﺘﺠﺎ‬
‫ﺒﺮﻧﺎﻣﺞ أو اﺳ‬
‫ﺛﻨﺎءﺗﻨﻔﻴﺬ اﻟ‬
‫ﺘﻐﻴﺮ أ‬
‫ﺑﻬﺎ ﻗﻴﻤ ﺔ اﻟﻤ‬‫ﺘﻐﻴﺮ‬
‫ﺘ ﻲﻳﻤﻜﻦ أنﺗ‬
‫ﻫﺬه ﻫ ﻲ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬

‫ﺒﻴﻀﺎء ﻣﻦ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪lstrip‬أو إزاﻟ ﺔ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺑﺎﺳ‬‫ﺑﻴﻀﺎء ﻣﻦ اﻟﺠﺎﻧ ﺐ اﻷﻳ ﺴﺮ ﻣﻦ اﻟﺨﻴﻂ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ إزاﻟ ﺔ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺘﺨﺪام اﻟﺸﺮﻳﻂ ‪():‬‬
‫ﺑﺎﺳ‬‫ﺒﻴﻦ ﻣﺮة واﺣﺪة‬
‫ﻛﻼ اﻟﺠﺎﻧ‬

‫"‬ ‫"‬
‫)( ‪u >>> favourite_language = python v >>> favourite_language.rstrip‬‬

‫)( ‪'python' w >>> favourite_language.lstrip‬‬

‫)( ‪'python' x >>> favourite_language.strip‬‬

‫ﺒﺎن"‬
‫ﺜﻌ‬‫"اﻟ‬

‫ﺒﺪاﻳ ﺔ‬
‫ﺑﻴﻀﺎء ﻓ ﻲ اﻟ‬‫ﺘﻮي ﻋﲆ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﻘﻴﻤ ﺔﺗﺤ‬‫ﺒﺪأ‬
‫ﺜﺎل ‪ ،‬ﻧ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺒﻴﻦ ﻋﻨﺪ‬
‫ﺛﻢ ﻧﺰﻳﻞ اﻟﻤ ﺴﺎﻓ ﺔ اﻟﺰاﺋﺪة ﻣﻦ اﻟﺠﺎﻧ ﺐ اﻷﻳﻤﻦ ﻋﻨﺪ ‪v ،‬وﻣﻦ اﻟﺠﺎﻧ ﺐ اﻷﻳ ﺴﺮ ﻋﻨﺪ ‪w ،‬وﻣﻦ ﻛﻼ اﻟﺠﺎﻧ‬‫ﻧﻴﻨﻎ واﻟﻨﻬﺎﻳ ﺔ ش‪.‬‬
‫ُﺴ‬
‫ﺘﺨﺪم‬ ‫ﺘﻌﺮف ﻋﲆ ﻣﻌﺎﻟﺠ ﺔ اﻟ ﺴﻼﺳﻞ‪ .‬ﻓ ﻲ اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ ‪،‬ﺗ‬
‫ﺘﺠﺮﻳﺪ ﻫﺬه ﻓ ﻲ اﻟ‬
‫ﺑ ﺔ وﻇﺎﺋﻒ اﻟ‬
‫‪x.‬ﻳﻤﻜﻦ أنﺗ ﺴﺎﻋﺪكﺗﺠﺮ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺒﻞﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ اﻟ‬
‫ﺘﺨﺪم ﻗ‬
‫ﺘﻨﻈﻴﻒ ﻣﺪﺧﻼ ت اﻟﻤ ﺴ‬
‫ﺘﺠﺮﻳﺪ ﻫﺬه ﻓ ﻲ أﻏﻠ ﺐ اﻷﺣﻴﺎن ﻟ‬
‫وﻇﺎﺋﻒ اﻟ‬

‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻐﻴﺮا ت وأﻧﻮاع اﻟ‬
‫اﻟﻤ‬ ‫‪27‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺎﻟ ﺴﻼﺳﻞ‬‫ﺗﺠﻨ ﺐ اﻷﺧﻄﺎء اﻟﻨﺤﻮﻳ ﺔ‬


‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪.‬‬‫ﺘﻈﺎم ﻫﻮ ﺧﻄﺄ ﻓ ﻲ‬
‫ﺑﻌﺾ اﻻﻧ‬‫ﺘ ﻲ ﻗﺪﺗﺮا ﻫﺎ ﻣﻊ‬
‫أﺣﺪ أﻧﻮاع اﻷﺧﻄﺎء اﻟ‬
‫ﺑﺮﻧﺎﻣﺞ ‪pro gram‬ﻋﲆ أﻧﻪ ﻛﻮد ‪ Python‬ﺻﺎﻟﺢ‪ .‬ﻋﲆ‬‫ﺘﻌﺮف ‪Python‬ﻋﲆ ﻗ ﺴﻢ ﻣﻦ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻋﻨﺪﻣﺎ ﻻﺗ‬‫ﻳﺤﺪ ث ﺧﻄﺄ ﻓ ﻲ‬
‫ﺘﺞ ﻋﻦ ذﻟﻚ ﺧﻄﺄ‪.‬ﻳﺤﺪ ث‬
‫ﺒﺎس ﻣﻔﺮدة ‪ ،‬ﻓ ﺴﻮفﻳﻨ‬
‫ﺘ‬‫ﺒﺎس أﺣﺎدﻳ ﺔ داﺧﻞ ﻋﻼﻣﺎ ت اﻗ‬
‫ﺘ‬‫ﺘﺨﺪم ﻋﻼﻣ ﺔ اﻗ‬
‫ﺜﺎل ‪ ،‬إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺳ‬
‫ﺑﻘﻴ ﺔ‬‫ﺛﻢﻳﺤﺎولﺗﻔ ﺴﻴﺮ‬‫ﺒﺎس أﺣﺎدﻳ ﺔ ﻛ ﺴﻠ ﺴﻠ ﺔ‪.‬‬
‫ﺘ‬‫ﺒﺎس ﻣﻨﻔﺮد وﻋﻼﻣ ﺔ اﻗ‬
‫ﺘ‬‫ﺑﻴﻦ أول اﻗ‬‫ﺗﺤ ﺴ ﺐ ﻛﻞ ﺷ ﻲء‬
‫ﻫﺬاﻷن ‪Python inter‬‬
‫اﻟﻨﺺ ﻋﲆ أﻧﻪ ﻛﻮد ‪Python ،‬واﻟﺬي‬

‫ﺒ ﺐ أﺧﻄﺎء‪.‬‬
‫ﻳﺴ‬

‫ﺑﺎﺳﻢ ‪apostrophe.py‬‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪ .‬اﺣﻔﻆ ﻫﺬا اﻟ‬‫ﺒﺎس اﻟﻤﻔﺮدة واﻟﻤﺰدوﺟ ﺔ‬
‫ﺘ‬‫ﺘﺨﺪام ﻋﻼﻣﺎ ت اﻻﻗ‬
‫إﻟﻴﻚ ﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺘﺸﻐﻴﻠﻪ‪:‬‬
‫ﺑ‬‫ﺛﻢ ﻗﻢ‬

‫اﻟﻔﺎﺻﻠ ﺔ اﻟﻌﻠﻴﺎ‬ ‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬


‫ﺘﻨﻮع‪ ".‬ﻃ‬
‫ﺘﻤﻌﻬﺎ اﻟﻤ‬
‫ﺜﻮن ﻫ ﻲ ﻣﺠ‬
‫ﺑﺎﻳ‬‫= ‪"message‬إﺣﺪى ﻧﻘﺎط ﻗﻮة‬

‫ﺜﻮن ﻣﺸﻜﻠ ﺔ ﻓ ﻲ ﻗﺮاءة‬


‫ﺑﺎﻳ‬‫ﺘﺮﺟﻢ‬
‫ﺒﺎس اﻟﻤﺰدوﺟ ﺔ ‪ ،‬ﻟﺬﻟﻚ ﻻﻳﻮاﺟﻪ ﻣ‬
‫ﺘ‬‫ﺗﻈﻬﺮ اﻟﻔﺎﺻﻠ ﺔ اﻟﻌﻠﻴﺎ داﺧﻞ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ ﻋﻼﻣﺎ ت اﻻﻗ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪:‬‬‫اﻟ ﺴﻠ ﺴﻠ ﺔ‬

‫ﺘﻨﻮع‪.‬‬
‫ﺘﻤﻌﻬﺎ اﻟﻤ‬
‫ﺜﻮن ﻫ ﻲ ﻣﺠ‬
‫ﺑﺎﻳ‬‫إﺣﺪى ﻧﻘﺎط ﻗﻮة‬

‫ﺘﻤﻜﻦ ‪Python‬ﻣﻦﺗﺤﺪﻳﺪ ﻣﻜﺎن اﻟ ﺴﻠ ﺴﻠ ﺔ‬


‫ﺒﺎس ﻣﻔﺮدة ‪ ،‬ﻓﻠﻦﺗ‬
‫ﺘ‬‫ﺘﺨﺪم ﻋﻼﻣﺎ ت اﻗ‬
‫وﻣﻊ ذﻟﻚ ‪ ،‬إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺘﻬ ﻲ‪:‬‬
‫ﻳﺠ ﺐ أنﻳﻨ‬

‫ﺘﻨﻮع‪".‬‬
‫ﺘﻤﻌﻬﺎ اﻟﻤ‬
‫ﺜﻮن ﻫ ﻲ ﻣﺠ‬
‫ﺑﺎﻳ‬‫= ‪"message‬إﺣﺪى ﻧﻘﺎط ﻗﻮة‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫ﻃ‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺗﺞ اﻟ‬
‫ﺘﺮى اﻟﻨﺎ‬
‫ﺳ‬

‫ﻣﻠﻒ ‪"apostrophe.py" ،‬اﻟ ﺴﻄﺮ ‪1‬‬


‫ﺘﻨﻮع‪".‬‬
‫ﺘﻤﻌﻬﺎ اﻟﻤ‬
‫ﺜﻮن ﻫ ﻲ ﻣﺠ‬‫ﺑﺎﻳ‬‫= ‪"message‬إﺣﺪى ﻧﻘﺎط ﻗﻮة‬
‫^ ش‬

‫ﺑﻨﺎء ﺟﻤﻠ ﺔ ﻏﻴﺮ ﺻﺎﻟﺢ‬‫ﺧﻄﺄ ﻗﻮاﻋﺪي‪:‬‬

‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‬‫ﺜﺎﻧ ﻲ‪.‬ﻳﺸﻴﺮ ﺧﻄﺄ‬


‫ﺒﺎس اﻟﻔﺮدي اﻟ‬
‫ﺘ‬‫ﺑﻌﺪ اﻻﻗ‬‫ﺒﺎﺷﺮة‬
‫ﻓ ﻲ اﻹﺧﺮاج ‪،‬ﻳﻤﻜﻨﻚ أنﺗﺮى أن اﻟﺨﻄﺄﻳﺤﺪ ث ﻋﻨﺪ ‪u‬ﻣ‬
‫ﺗ ﻲ اﻷﺧﻄﺎء ﻣﻦ‬
‫ﺒﺎره ﻛﻮد ‪ Python‬ﺻﺎﻟﺤًﺎ‪.‬ﻳﻤﻜﻦ أنﺗﺄ‬
‫ﺘ‬‫ﺑﺎﻋ‬‫ﺘﻌﺮف ﻋﲆ ﺷ ﻲء ﻣﺎ ﻓ ﻲ اﻟﻜﻮد‬
‫ﺘﺮﺟﻢ اﻟﻔﻮري ﻻﻳ‬
‫ﻫﺬا إﱃ أن اﻟﻤ‬
‫ﺑﻌﺾ اﻷﺧﻄﺎء اﻟﺸﺎﺋﻌ ﺔ ﻋﻨﺪ ﻇﻬﻮر ﻫﺎ‪.‬‬‫ﺘﻨﻮﻋ ﺔ ﻣﻦ اﻟﻤﺼﺎدر ‪ ،‬وﺳﺄﺷﻴﺮ إﱃ‬
‫ﻣﺠﻤﻮﻋ ﺔ ﻣ‬

‫ﺑ ﺔ ﻛﻮد ‪Python‬اﻟﻤﻨﺎﺳ ﺐ‪.‬‬


‫ﺘﺎ‬
‫ﺘﻌﻠﻢ ﻛ‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ﻋﻨﺪﻣﺎﺗ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻓ ﻲ ﻛ‬‫ﻗﺪﺗﺮى أﺧﻄﺎء ﻓ ﻲ‬
‫ﺘﻚ‬
‫ﺒﻄﺎ‪ .‬إذا واﺟﻬ‬
‫ﺒﺎ وﻣﺤ ً‬
‫ﺗﺼﺤﻴﺤﻬﺎ أﻣ ﺮًا ﺻﻌ ً‬ ‫اﻷﺧﻄﺎء اﻟﻨﺤﻮﻳ ﺔ ﻫ ﻲ أ ً‬
‫ﻳﻀﺎ أﻗﻞ أﻧﻮاع اﻷﺧﻄﺎءﺗﺤﺪﻳﺪًا ‪ ،‬ﻟﺬا ﻗﺪﻳﻜﻮنﺗﺤﺪﻳﺪ ﻫﺎ و‬
‫ﺘﺮاﺣﺎ ت ﻓ ﻲ اﻟﻤﻠﺤﻖ ج‪.‬‬
‫ﺑﺸﻜﻞ ﺧﺎص ‪ ،‬ﻓﺮاﺟﻊ اﻻﻗ‬‫ﻣﺸﻜﻠ ﺔ‬

‫ﺑﺮاﻣﺠﻚ‪ .‬إذا رأﻳ ﺖ رﻣﺰ ‪Python‬ﻣﻤﻴ ًﺰا‬‫ﺑﺔ‬


‫ﺘﺎ‬
‫ﺛﻨﺎء ﻛ‬
‫ﺑ ﺴﺮﻋ ﺔ أ‬‫ﺑﻌﺾ اﻷﺧﻄﺎء اﻟﻨﺤﻮﻳ ﺔ‬‫ﺘﺸﺎف‬
‫ﺑﻨﻴ ﺔ اﻟﻤﺤﺮر ﻓ ﻲ اﻛ‬‫ﺑﺮاز‬
‫ﻻﻳﺠ ﺐ أنﺗ ﺴﺎﻋﺪك ﻣﻴﺰة إ‬
‫ﺑﻘ ﺔ ﻓ ﻲ‬
‫ﺒﺎس ﻏﻴﺮ ﻣﻄﺎ‬
‫ﺘ‬ ‫ﺑﺎﻟﻠﻐ ﺔ اﻹﻧﺠﻠﻴﺰﻳ ﺔ أو اﻹﻧﺠﻠﻴﺰﻳ ﺔ ﻣﻤﻴ ًﺰا ﻛﻤﺎ ﻟﻮ ﻛﺎن رﻣﺰ ‪Python ،‬ﻓﻤﻦ اﻟﻤﺤ‬
‫ﺘﻤﻞ أنﻳﻜﻮن ﻟﺪﻳﻚ ﻋﻼﻣ ﺔ اﻗ‬ ‫ﻛﻤﺎ ﻟﻮ ﻛﺎن‬
‫ﻣﻜﺎن ﻣﺎ ﻓ ﻲ ﻣﻠﻔﻚ‪.‬‬

‫‪28‬اﻟﻔﺼﻞ ‪2‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻮن ‪2‬‬
‫ﺑﺎﻳ‬‫ﺒﺎﻋ ﺔ ﻓ ﻲ‬
‫اﻟﻄ‬

‫ﺘﻠﻔ ﺔ ﻗﻠﻴ ﻼ ً ﻓ ﻲ ‪Python 2:‬‬


‫ﺘﻮي ﺟﻤﻠ ﺔ ‪print‬ﻋﲆ ﺻﻴﻐ ﺔ ﻣﺨ‬
‫ﺗﺤ‬

‫ﺜﻮن ‪2.7‬‬
‫ﺑﻴ‬‫>>>‬
‫ﺒﻊ "!‪"Hello Python 2.7 world‬‬
‫>>>اﻃ‬
‫ﺑﻌﺎﻟﻢ !‪Python 2.7‬‬‫ﺒﺎ‬
‫ﻣﺮﺣ ً‬

‫ﺘﻬﺎ ﻓ ﻲ ‪Python 2.‬ﻣﻦ اﻟﻨﺎﺣﻴ ﺔ اﻟﻔﻨﻴ ﺔ ‪،‬ﺗﻌﺪ ‪print‬داﻟ ﺔ‬


‫ﺒﺎﻋ‬
‫ﺘ ﻲﺗﺮﻳﺪ ﻃ‬
‫ﺒﺎرة اﻟ‬
‫ﻟﻴ ﺴ ﺖ ﻫﻨﺎك ﺣﺎﺟ ﺔ ﻟﻸﻗﻮاس ﺣﻮل اﻟﻌ‬
‫ﺒﺎﻋ ﺔ ‪Python 2‬أﻃﺮوﺣﺎ ت أﻗﻮاس ‪ ،‬ﻟﻜﻦ‬
‫ﺒﺎرا ت ﻃ‬
‫ﺑﻌﺾ ﻋ‬‫ﺘﻀﻤﻦ‬
‫ﺘﺎج إﱃ أﻗﻮاس‪.‬ﺗ‬
‫ﺒ ﺐﺗﺤ‬
‫ﻓ ﻲ ‪Python 3 ،‬وﻟﻬﺬا اﻟ ﺴ‬
‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﺸﻜﻞ أﺳﺎﺳ ﻲ ‪ ،‬ﻋﻨﺪﻣﺎﺗﻨﻈﺮ إﱃ اﻟ‬ ‫ﺘﻠ ًﻔﺎ ﻗﻠﻴ ﻼ ً ﻋﻤﺎﺳ‬
‫ﺘﺮاه ﻓ ﻲ ‪Python 3.‬‬ ‫اﻟ ﺴﻠﻮك ﻗﺪﻳﻜﻮن ﻣﺨ‬
‫ﺑﺪون‪.‬‬‫ﺒﻌﺾ‬
‫ﺒﺎﻋ ﺔ ذا ت اﻷﻗﻮاس واﻟ‬
‫ﺒﺎرا ت اﻟﻄ‬
‫ﺑﻌﺾ ﻋ‬‫ﺗﻮﻗﻊ رؤﻳ ﺔ‬
‫ﺑ ﺔ ﻓ ﻲ ‪Python 2 ،‬‬
‫ﺘﻮ‬‫اﻟﻤﻜ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻚ ﻣﺸﻜﻠ ﺔ ‪ ،‬ﺧﺬ‬


‫ﺜﻞ ‪name_cases.py.‬إذا واﺟﻬ‬
‫ﺑﺎﺳﻢ ﻣ‬‫ﺘﺎﻟﻴ ﺔ ﻛﻤﻠﻒ ﻣﻨﻔﺼﻞ‬
‫ﺘﻤﺎرﻳﻦ اﻟ‬
‫اﺣﻔﻆ ﻛﻞ ﻣﻦ اﻟ‬
‫ﺘﺮاﺣﺎ ت ﻓ ﻲ اﻟﻤﻠﺤﻖ ج‪.‬‬
‫ﺴﻄﺎ ﻣﻦ اﻟﺮاﺣ ﺔ أو ﺷﺎ ﻫﺪ اﻻﻗ‬
‫ﻗ ً‬

‫ﺒﻊ رﺳﺎﻟ ﺔ ﺷﺨﺼﻴ ﺔ ﻟﻬﺬا اﻟﺸﺨﺺ‪.‬ﻳﺠ ﺐ أن‬


‫ﺘﻐﻴﺮ ‪ ،‬واﻃ‬
‫ﺘﺨﺰﻳﻦ اﺳﻢ اﻟﺸﺨﺺ ﻓ ﻲ ﻣ‬
‫ﺑ‬‫‪2-3.‬رﺳﺎﻟ ﺔ ﺷﺨﺼﻴ ﺔ‪ :‬ﻗﻢ‬
‫ﺜﻮن اﻟﻴﻮم؟"‬
‫ﺑﺎﻳ‬‫ﺑﻌﺾ‬‫ﺒﺎ إرﻳﻚ ‪ ،‬ﻫﻞﺗﺮﻏ ﺐ ﻓ ﻲﺗﻌﻠﻢ‬
‫ﺜﻞ ‪" ،‬ﻣﺮﺣ ً‬
‫ﺑ ﺴﻴﻄ ﺔ ‪ ،‬ﻣ‬‫ﺘﻚ‬
‫ﺗﻜﻮن رﺳﺎﻟ‬

‫ﺒﻴﺮة‬
‫ﺑﺄﺣﺮف ﺻﻐﻴﺮة وﻛ‬‫ﺑﻦ‬
‫ﺒﻊ ذﻟﻚ اﻻﺳﻢ ﻟﻜﻞ ا‬
‫ﺛﻢ اﻃ‬‫ﺘﻐﻴﺮ ‪،‬‬
‫ﺘﺨﺰﻳﻦ اﺳﻢ اﻟﺸﺨﺺ ﻓ ﻲ ﻣ‬
‫ﺑ‬‫‪2-4.‬ﺣﺎﻻ ت اﻻﺳﻢ‪ :‬ﻗﻢ‬
‫وﺣﺮف ﻋﻨﻮان‪.‬‬

‫ﺒﺎس واﺳﻢ ﻣﺆﻟﻔﻬﺎ‪.‬ﻳﺠ ﺐ أن‬


‫ﺘ‬‫ﺒﻊ اﻻﻗ‬
‫ﺒﻪ‪ .‬اﻃ‬
‫ﺒﺎس ﻣﻦ ﺷﺨﺺ ﻣﺸﻬﻮرﺗﺤ‬
‫ﺘ‬‫ﺑﺤ ﺚ ﻋﻦ اﻗ‬
‫ﺒﺎس ﻣﺸﻬﻮر‪ :‬ا‬
‫ﺘ‬‫‪2-5.‬اﻗ‬
‫ﺒﺎس‪:‬‬
‫ﺘ‬‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ ﻋﻼﻣﺎ ت اﻻﻗ‬‫ﺑﻬً ﺎ ﻟﻤﺎﻳﻠ ﻲ ‪،‬‬
‫ﺑﻚ ﻣﺸﺎ‬‫ﺒﺪو اﻹﺧﺮاج اﻟﺨﺎص‬
‫ﻳ‬

‫ﺗﻜ ﺐ ﺧﻄﺄ ﻗﻂ ﻟﻢﻳﺠﺮ ب‬


‫ﺘﺎﻳﻦ ذا ت ﻣﺮة ‪" ،‬اﻟﺸﺨﺺ اﻟﺬي ﻟﻢﻳﺮ‬
‫ﺒﺮ ت أﻳﻨﺸ‬
‫ﻗﺎل أﻟ‬
‫أي ﺷ ﻲء ﺟﺪﻳﺪ"‪.‬‬

‫ﺘﻐﻴﺮﻳ ﺴﻤﻰ‬
‫ﺑﻦ اﻟﺸﻬﻴﺮ ﻓ ﻲ ﻣ‬
‫ﺘﺨﺰﻳﻦ اﺳﻢ ﻛﻞ ا‬
‫ﺑ‬‫ﺘﻤﺮﻳﻦ ‪2-5 ،‬وﻟﻜﻦ ﻫﺬه اﻟﻤﺮة ﻗﻢ‬
‫ﺒﺎس ﻣﺸﻬﻮر ‪2:‬ﻛﺮر اﻟ‬
‫ﺘ‬‫‪2-6.‬اﻗ‬
‫ﺘﻚ‪.‬‬
‫ﺒﻊ رﺳﺎﻟ‬
‫ﺘﻐﻴﺮ ﺟﺪﻳﺪﻳ ﺴﻤﻰ ‪message.‬اﻃ‬
‫ﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ ﻣ‬
‫ﺘﻚ و‬
‫ﺘﻜﻮﻳﻦ رﺳﺎﻟ‬
‫ﺑ‬‫ﺛﻢ ﻗﻢ‬
‫‪"fittor_person".‬‬

‫ﺑﺪاﻳ ﺔ‬‫ﺒﻴﻀﺎء ﻓ ﻲ‬
‫ﺑﻌﺾ أﺣﺮف اﻟﻤ ﺴﺎﻓﺎ ت اﻟ‬‫ﺘﻀﻤﻴﻦ‬
‫ﺑ‬‫ﺘﺨﺰﻳﻦ اﺳﻢ اﻟﺸﺨﺺ ‪ ،‬وﻗﻢ‬
‫ﺑ‬‫ﺗﺠﺮﻳﺪ اﻷﺳﻤﺎء‪ :‬ﻗﻢ‬
‫‪2-7.‬‬
‫ﺘﺨﺪام ﻛﻞ ﻣﺠﻤﻮﻋ ﺔ أﺣﺮف ‪"\ t" ،‬و ‪"\ n" ،‬ﻣﺮة واﺣﺪة ﻋﲆ اﻷﻗﻞ‪.‬‬
‫ﺘﻪ‪.‬ﺗﺄﻛﺪ ﻣﻦ اﺳ‬
‫اﻻﺳﻢ وﻧﻬﺎﻳ‬

‫ﺒﻴﻀﺎء ﺣﻮل اﻻﺳﻢ‪.‬‬


‫ﺘﻢ ﻋﺮض اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺑﺤﻴ ﺚﻳ‬‫ﺒﻊ اﻻﺳﻢ ﻣﺮة واﺣﺪة ‪،‬‬
‫اﻃ‬
‫ﺜﻼ ث ‪lstrip () ، rstrip () ، ،‬و ‪().‬‬
‫ﺘﺠﺮﻳﺪ اﻟ‬
‫ﺘﺨﺪام ﻛﻞ ﻣﻦ وﻇﺎﺋﻒ اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﻊ اﻻﺳﻢ‬‫ﺛﻢ اﻃ‬
‫‪strip‬‬

‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻐﻴﺮا ت وأﻧﻮاع اﻟ‬
‫اﻟﻤ‬ ‫‪29‬‬
‫‪Machine Translated by Google‬‬

‫أﻋﺪاد‬
‫ﺗﺨﺰﻳﻦ‬
‫ﺘﺼﻮرا ت ‪ ،‬و‬
‫ﺒﻴﺎﻧﺎ ت ﻓ ﻲ اﻟ‬
‫ﺑﺎﻟﺪرﺟﺎ ت ﻓ ﻲ اﻷﻟﻌﺎ ب ‪ ،‬وإﻋﺎدة إرﺳﺎل اﻟ‬‫ﺘﻔﺎظ‬
‫ﺒﺮﻣﺠ ﺔ ﻟﻼﺣ‬
‫ﺜﻴ ﺮًا ﻓ ﻲ اﻟ‬ ‫ُﺴ‬
‫ﺘﺨﺪم اﻷرﻗﺎم ﻛ‬ ‫ﺗ‬
‫ﺘﻤﺎدًا ﻋﲆ ﻛﻴﻔﻴ ﺔ‬
‫ﺘﻠﻔ ﺔ ‪ ،‬اﻋ‬
‫ﺑﻌﺪة ﻃﺮق ﻣﺨ‬‫ﺜﻮن ﻣﻊ اﻷرﻗﺎم‬
‫ﺑﺎﻳ‬‫ﺘﻌﺎﻣﻞ‬
‫ﺒﻴﻘﺎ ت اﻟﻮﻳ ﺐ ‪ ،‬وﻣﺎ إﱃ ذﻟﻚ‪.‬ﺗ‬
‫اﻟﻤﻌﻠﻮﻣﺎ ت ﻓ ﻲﺗﻄ‬
‫ﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‪.‬‬ ‫ﺘﺨﺪاﻣﻬﺎ‪ .‬دﻋﻨﺎ أوﻻ ً ﻧﻠﻘ ﻲ ﻧﻈﺮة ﻋﲆ ﻛﻴﻔﻴ ﺔ إدارة ‪Python‬ﻟﻸﻋﺪاد اﻟﺼﺤﻴﺤ ﺔ ‪،‬ﻷﻧﻬﺎ أ‬
‫ﺑ ﺴﻂ ﻃﺮﻳﻘ ﺔ ﻟﻠ‬ ‫اﺳ‬

‫ﻋﺪد ﺻﺤﻴﺢ‬
‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬‫ﻳﻤﻜﻨﻚ إﺿﺎﻓ ﺔ )‪(+‬وﻃﺮح )‪(-‬وﺿﺮ ب )*(وﻗ ﺴﻤ ﺔ )‪(/‬أﻋﺪاد ﺻﺤﻴﺤ ﺔ ﻓ ﻲ‬

‫‪>>> 2 + 3‬‬
‫‪5 >>> 3 - 2‬‬

‫‪>>> 2 * 6‬‬
‫‪1 3‬‬

‫‪>>> 3/2‬‬
‫‪1.5‬‬

‫ﺘﻴﺠ ﺔ اﻟﻌﻤﻠﻴ ﺔ‪.‬‬


‫ﺒ ﺴﺎﻃ ﺔ ﻧ‬
‫ﺑ‬‫ﻓ ﻲ اﻟﺠﻠ ﺴ ﺔ اﻟﻄﺮﻓﻴ ﺔ ‪،‬ﺗﻌﺮض ‪Python‬‬
‫ﺜﻴﻞ اﻷس‪:‬‬
‫ﺘﻤ‬‫ﺜﻮن رﻣﺰﻳﻦ ﻣﻦ رﻣﻮز اﻟﻀﺮ ب ﻟ‬
‫ﺑﺎﻳ‬‫ﺘﺨﺪم‬
‫ﺗﺴ‬

‫‪** 3‬‬
‫>>>‬ ‫‪2‬‬
‫‪9 >>> 3‬‬
‫‪** 3‬‬
‫‪>>> 10 ** 6‬‬
‫‪27‬‬
‫‪1000000‬‬

‫ﺒﻴﺮ واﺣﺪ‪.‬ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺘﻌﺪدة ﻓ ﻲﺗﻌ‬
‫ﺘﺨﺪام ﻋﻤﻠﻴﺎ ت ﻣ‬ ‫ﺗﻴ ﺐ اﻟﻌﻤﻠﻴﺎ ت أ ً‬
‫ﻳﻀﺎ ‪ ،‬ﻟﺬاﻳﻤﻜﻨﻚ اﺳ‬ ‫ﺗﺮ‬‫ﺗﺪﻋﻢ ‪Python‬‬
‫ﺒﻴﻞ‬
‫ﺗﻴ ﺐ اﻟﺬيﺗﺤﺪده‪ .‬ﻋﲆﺳ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺒﻴﺮك‬
‫ﺘﻤﻜﻦ ‪Python‬ﻣﻦﺗﻘﻴﻴﻢﺗﻌ‬
‫ﺘﻰﺗ‬
‫ﺗﻴ ﺐ اﻟﻌﻤﻠﻴﺎ ت ﺣ‬
‫ﺘﻌﺪﻳﻞﺗﺮ‬
‫ﺘﺨﺪام اﻷﻗﻮاس ﻟ‬
‫اﺳ‬
‫ﺜﺎل‪:‬‬
‫اﻟﻤ‬

‫‪>>> 2 + 3 * 4‬‬
‫‪14‬‬
‫‪>>> (2 + 3) * 4‬‬
‫‪20‬‬

‫ﺘﺸﺎف اﻟﻌﻤﻠﻴﺎ ت‬
‫ﺒ ﺴﺎﻃ ﺔ ﻋﲆ اﻛ‬
‫ﺑ‬‫ﺒﻴﺮا ت ؛ إﻧﻪﻳ ﺴﺎﻋﺪك‬
‫ﺘﻌ‬‫ﺜﻮن ﻟﻠ‬
‫ﺑﺎﻳ‬‫ﺜﻠ ﺔ ﻋﲆ ﻛﻴﻔﻴ ﺔﺗﻘﻴﻴﻢ‬
‫ﺒﺎﻋﺪ ﻓ ﻲ ﻫﺬه اﻷﻣ‬
‫ﺘ‬‫ﺛﺮ اﻟ‬
‫ﻻﻳﺆ‬
‫ﺒﺮ ﻋﻨﺪ ﻗﺮاءة اﻟﻜﻮد‪.‬‬
‫ﺑ ﺴﺮﻋ ﺔ أﻛ‬‫ﺘ ﻲ ﻟﻬﺎ اﻷوﻟﻮﻳ ﺔ‬
‫اﻟ‬

‫ﻳﻄﻔﻮ‬
‫ﺒﺮﻣﺠ ﺔ ‪ ،‬و ﻫﻮﻳﺸﻴﺮ إﱃ ﺣﻘﻴﻘ ﺔ‬
‫ﺘﺨﺪم ﻫﺬا اﻟﻤﺼﻄﻠﺢ ﻓ ﻲ ﻣﻌﻈﻢ ﻟﻐﺎ ت اﻟ‬
‫ﺋﻤﺎ ‪.‬ﻳ ﺴ‬
‫ﺑﻌﻼﻣ ﺔ ﻋﺸﺮﻳ ﺔ ﻋﺎ ً‬‫ﺘﺪﻋ ﻲ ‪Python‬أي رﻗﻢ‬
‫ﺗﺴ‬
‫ﺑﺮﻣﺠ ﺔ‬‫أن اﻟﻔﺎﺻﻠ ﺔ اﻟﻌﺸﺮﻳ ﺔﻳﻤﻜﻦ أنﺗﻈﻬﺮ ﻓ ﻲ أي ﻣﻮﺿﻊ ﻓ ﻲ اﻟﺮﻗﻢ‪.‬ﻳﺠ ﺐ ﻋﲆ ﻛﻞ ﻟﻐ ﺔ‬

‫ﺜﺎﻧ ﻲ‬
‫‪30‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻣﻜﺎن‬‫ﺑﺸﻜﻞ ﻣﻨﺎﺳ ﺐ‬‫ﺘﺼﺮف اﻷرﻗﺎم‬


‫ﺑﺤﻴ ﺚﺗ‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‬‫ﺑﻌﻨﺎﻳ ﺔ ﻹدارة اﻷرﻗﺎم اﻟﻌﺸﺮﻳ ﺔ‬‫ﻣﺼﻤﻤ ﺔ‬
‫ﻇﻬﻮر اﻟﻌﻼﻣ ﺔ اﻟﻌﺸﺮﻳ ﺔ‪.‬‬
‫ﺑﺸﺄنﺳﻠﻮﻛﻬﺎ‪ .‬ﻣﺎ ﻋﻠﻴﻚﺳﻮى إدﺧﺎل اﻷرﻗﺎم‬‫ﺘﺨﺪام اﻟﻜ ﺴﻮر اﻟﻌﺸﺮﻳ ﺔ دون اﻟﻘﻠﻖ‬
‫ﺒﺮ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺒ ﺔ ﻟﻠﺠﺰء اﻷﻛ‬
‫ﺑﺎﻟﻨ ﺴ‬
‫ﺘﻮﻗﻌﻪ‪:‬‬
‫ﺑﻤﺎﺗ‬‫ﺜﻮن ﻋﲆ اﻷرﺟﺢ‬
‫ﺑﺎﻳ‬‫ﺘﻘﻮم‬
‫ﺘﺨﺪاﻣﻬﺎ ‪ ،‬وﺳ‬
‫ﺘ ﻲﺗﺮﻳﺪ اﺳ‬
‫اﻟ‬

‫‪>>> 0.1 + 0.1‬‬


‫‪0.2‬‬
‫‪>>> 0.2 + 0.2‬‬
‫‪0.4 >>> 2 * 0.1‬‬

‫‪0.2 >>> 2 * 0.2‬‬

‫‪0.4‬‬

‫ﻟﻜﻦ اﻋﻠﻢ أﻧﻪﻳﻤﻜﻨﻚ أﺣﻴﺎﻧًﺎ اﻟﺤﺼﻮل ﻋﲆ ﻋﺪد ﻋﺸﻮاﺋ ﻲ ﻣﻦ ‪deci‬‬


‫ﺘﻚ‪:‬‬
‫ﺑ‬‫ﻳﻀﻊ ‪mal‬ﻓ ﻲ إﺟﺎ‬

‫‪>>> 0.2 + 0.1‬‬


‫‪* 0.1 >>> 3‬‬
‫‪0.30000000000000004‬‬
‫‪0.30000000000000004‬‬

‫ﺒﺮ ﻗﺪر ﻣﻤﻜﻦ ﻣﻦ‬


‫ﺑﺄﻛ‬‫ﺘﻴﺠ ﺔ‬
‫ﺜﻴﻞ اﻟﻨ‬
‫ﺘﻤ‬‫ﺜﻴ ﺮًا‪.‬ﺗﺤﺎول ‪Python‬إﻳﺠﺎد ﻃﺮﻳﻘ ﺔ ﻟ‬
‫ﺜﻴﺮ اﻟﻘﻠﻖ ﻛ‬
‫ﻳﺤﺪ ث ﻫﺬا ﻓ ﻲ ﺟﻤﻴﻊ اﻟﻠﻐﺎ ت وﻻﻳ‬
‫ﺜﻴﻞ اﻷرﻗﺎم داﺧﻠ ًﻴﺎ‪ .‬ﻓﻘﻂﺗﺠﺎ ﻫﻞ اﻟﺨﺎﻧﺎ ت اﻟﻌﺸﺮﻳ ﺔ اﻟﺰاﺋﺪة‬‫ﺘﻤ‬‫ﺑ‬ ‫ﺗﺮ‬‫ﺒﻴﻮ‬‫اﻟﺪﻗ ﺔ ‪ ،‬و ﻫﻮ أﻣﺮ ﺻﻌ ﺐ أﺣﻴﺎﻧًﺎ ﻧﻈ ﺮًا ﻟﻜﻴﻔﻴ ﺔ ﻗﻴﺎم أﺟﻬﺰة اﻟﻜﻤ‬
‫ﺜﺎﻧ ﻲ‪.‬‬
‫ﺘﺎج إﻟﻴﻬﺎ ﻓ ﻲ اﻟﻤﺸﺎرﻳﻊ ﻓ ﻲ اﻟﺠﺰء اﻟ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻷﻣﺎﻛﻦ اﻹﺿﺎﻓﻴ ﺔ ﻋﻨﺪﻣﺎﺗﺤ‬ ‫ً‬
‫ﻃﺮﻗﺎ ﻟﻠ‬ ‫ﺘﻌﻠﻢ‬ ‫ﺘ‬‫ﻓ ﻲ اﻟﻮﻗ ﺖ اﻟﺤﺎﻟ ﻲ ؛ﺳ‬

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


‫ﺑﺎﺳ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺗﺠﻨ ﺐ أﺧﻄﺎء اﻟﻜ‬
‫ﺘﻤﻨﻰ‬
‫ﺘﺮض أﻧﻚﺗﺮﻳﺪ أنﺗ‬
‫ﺜﺎل ‪ ،‬ﻟﻨﻔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻐﻴﺮ داﺧﻞ اﻟﺮﺳﺎﻟ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺘﺨﺪام ﻗﻴﻤ ﺔ اﻟﻤ‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲ اﺳ‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ‪،‬ﺳ‬
‫ﻓ ﻲﻛ‬
‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﺑ ﺔ ﻛﻮد ﻣ‬
‫ﺘﺎ‬
‫ﻟﺸﺨﺺ ﻣﺎ ﻋﻴﺪ ﻣﻴﻼدﺳﻌﻴﺪ‪.‬ﻳﻤﻜﻨﻚ ﻛ‬

‫ﻋﻴﺪ ﻣﻴﻼد‬ ‫اﻟﻌﻤﺮ ‪= 23‬‬


‫= ‪"message‬ﺳﻌﻴﺪ" ‪+‬اﻟﻌﻤﺮ ‪"+‬ﻋﻴﺪ ﻣﻴﻼد "!‪rd‬‬

‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬


‫ﻃ‬

‫ﺘﺸﻐﻴﻞ ﻫﺬا اﻟﺮﻣﺰ ‪،‬‬


‫ﺑ‬‫ﺑ ﺴﻴﻄ ﺔ ‪ ،‬ﻋﻴﺪ ﻣﻴﻼد ‪23‬ﺳﻌﻴﺪ! وﻟﻜﻦ إذا ﻗﻤ ﺖ‬‫ﺒﻊ ﻫﺬا اﻟﺮﻣﺰﺗﺤﻴ ﺔ ﻋﻴﺪ ﻣﻴﻼد‬ ‫ﺘﻮﻗﻊ أنﻳﻄ‬ ‫ﻗﺪﺗ‬
‫ﺘﺮى أﻧﻪﻳﻮﻟﺪ ﺧﻄﺄً‪:‬‬
‫ﻓﺴ‬

‫‪)Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬


‫ﻣﻠﻒ ‪"birthday.py" ،‬اﻟ ﺴﻄﺮ ‪2 ،‬ﻓ ﻲ ‪<module> message = "Happy" + age + "rd Birthday!" u TypeError:‬‬
‫ﻻﻳﻤﻜﻦﺗﺤﻮﻳﻞ ﻛﺎﺋﻦ '‪'int‬إﱃ ‪ str‬ﺿﻤﻨ ًﻴﺎ‬

‫ﺜﺎل ‪،‬‬
‫ﺘﺨﺪﻣﻬﺎ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘ ﻲﺗ ﺴ‬
‫ﺘﻌﺮف ﻋﲆ ﻧﻮع اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﻫﺬا ﻫﻮ ﻧﻮع اﻟﺨﻄﺄ‪ .‬ﻫﺬاﻳﻌﻨ ﻲ أن ‪Python‬ﻻﻳﻤﻜﻨﻬﺎ اﻟ‬
‫ﺘﺄﻛﺪًا ﻣﻦ ﻛﻴﻔﻴ ﺔﺗﻔ ﺴﻴﺮ ذﻟﻚ‬
‫ﺘﻐﻴ ﺮًا ﻗﺎد ًرا ﻋﲆ ﻗﻴﻤ ﺔ ﻋﺪد ﺻﺤﻴﺢ ‪(int) ،‬ﻟﻜﻨﻪ ﻟﻴ ﺲ ﻣ‬
‫ﺘﺨﺪم ﻣ‬
‫ﺗﺮى ‪Python‬أﻧﻚﺗ ﺴ‬

‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻐﻴﺮا ت وأﻧﻮاع اﻟ‬
‫اﻟﻤ‬ ‫‪31‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪم اﻷﻋﺪاد اﻟﺼﺤﻴﺤ ﺔ‬


‫ﺜﻞ إﻣﺎ اﻟﻘﻴﻤ ﺔ اﻟﻌﺪدﻳ ﺔ ‪23‬أو اﻷﺣﺮف ‪2‬و ‪3.‬ﻋﻨﺪﻣﺎﺗ ﺴ‬
‫ﺘﻐﻴﺮﻳﻤﻜﻦ أنﻳﻤ‬
‫ﻗﻴﻤ ﺔ‪.‬ﺗﻌﻠﻢ ‪Python‬أن اﻟﻤ‬
‫ﺘﺨﺪم ‪inte ger‬ﻛ ﺴﻠ ﺴﻠ ﺔ ﻣﻦ اﻷﺣﺮف‪.‬‬
‫ﺑﺤﺎﺟ ﺔ إﱃﺗﺤﺪﻳﺪ أﻧﻚﺗﺮﻳﺪ ﻣﻦ ‪Python‬أنﺗ ﺴ‬‫ﺜﻞ ﻫﺬه ‪ ،‬ﻓﺄﻧ ﺖ‬
‫داﺧﻞﺳﻼﺳﻞ ﻣ‬
‫ﺜﻴﻞ اﻟﻘﻴﻢ ﻏﻴﺮ اﻟﻨﺼﻴ ﺔ ﻛ ﺴﻼﺳﻞ‪:‬‬
‫ﺘﻤ‬‫ﺒﺮ ‪Python‬ﻟ‬
‫ﺘ ﻲﺗﺨ‬
‫ﺘﻐﻴﺮ ﻓ ﻲ داﻟ ﺔ ‪str () ،‬واﻟ‬
‫ﺑﺬﻟﻚ ﻋﻦ ﻃﺮﻳﻖ ﻟﻒ اﻟﻤ‬‫ﻳﻤﻜﻨﻚ اﻟﻘﻴﺎم‬

‫اﻟﻌﻤﺮ ‪= 23‬‬
‫ﺳﻌﻴﺪ"ﻣﻴﻼد "!‪rd‬‬
‫‪"+"message‬ﻋﻴﺪ‬
‫‪)+ str‬اﻟﻌﻤﺮ(‬
‫=‬

‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬


‫ﻃ‬

‫ﺗﻌﺮف ‪Python‬اﻵن أﻧﻚﺗﺮﻳﺪﺗﺤﻮﻳﻞ اﻟﻘﻴﻤ ﺔ اﻟﻌﺪدﻳ ﺔ ‪23‬إﱃﺳﻠ ﺴﻠ ﺔ وﻋﺮض اﻟﺤﺮﻓﻴﻦ ‪2‬و ‪3‬ﻛﺠﺰء ﻣﻦ رﺳﺎﻟ ﺔ ﻋﻴﺪ‬
‫اﻟﻤﻴﻼد‪.‬‬
‫ﺘﻮﻗﻌﻬﺎ ‪ ،‬دون أي أﺧﻄﺎء‪:‬‬
‫ﺘ ﻲ ﻛﻨ ﺖﺗ‬
‫اﻵنﺗﺤﺼﻞ ﻋﲆ اﻟﺮﺳﺎﻟ ﺔ اﻟ‬

‫ﻋﻴﺪ ﻣﻴﻼد ‪23‬ﺳﻌﻴﺪ!‬

‫ﺴﻴﻄﺎ ﻓ ﻲ ﻣﻌﻈﻢ اﻷوﻗﺎ ت‪.‬‬


‫ً‬ ‫ﺑ‬‫ﺜﻮن أﻣ ﺮًا‬
‫ﺑﺎﻳ‬‫ﻳﻌﺪ اﻟﻌﻤﻞ ﻣﻊ اﻷرﻗﺎم ﻓ ﻲ‬
‫ﺘ ﻲﺗﺮﻳﺪ ﻫﺎ ‪ ،‬إﻣﺎ ﻛﻘﻴﻤ ﺔ‬
‫ﺑﺎﻟﻄﺮﻳﻘ ﺔ اﻟ‬‫ﺗﻔ ﺴﺮ أرﻗﺎﻣﻚ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ ‪Python‬‬
‫ﺘﻮﻗﻌ ﺔ ‪ ،‬ﻓ‬
‫ﺘﺎﺋﺞ ﻏﻴﺮ ﻣ‬
‫إذا ﻛﻨ ﺖﺗﺤﺼﻞ ﻋﲆ ﻧ‬
‫ﻋﺪدﻳ ﺔ أو ﻛﻘﻴﻤ ﺔﺳﻠ ﺴﻠ ﺔ‪.‬‬

‫ﺜﻮن ‪2‬‬
‫ﺑﺎﻳ‬‫اﻷﻋﺪاد اﻟﺼﺤﻴﺤ ﺔ ﻓ ﻲ‬

‫ﺘﻠﻔ ﺔ ﻗﻠﻴ ﻼ ً ﻋﻨﺪ ﻗ ﺴﻤ ﺔ ﻋﺪدﻳﻦ ﺻﺤﻴﺤﻴﻦ‪:‬‬ ‫ُﺮﺟﻊ ‪Python 2‬ﻧ‬


‫ﺘﻴﺠ ﺔ ﻣﺨ‬ ‫ﺗ‬

‫ﺜﻮن ‪2.7‬‬
‫ﺑﻴ‬‫>>>‬
‫‪>>> 3/2‬‬
‫‪1‬‬

‫ﺘﺎﺋﺞ ‪Python 2‬‬ ‫ُﺮﺟﻊ ‪Python 1.‬‬


‫ﺗﻘ ﺴﻴﻢ اﻷﻋﺪاد اﻟﺼﺤﻴﺤ ﺔ ﻓ ﻲ ﻧ‬ ‫ﺑﺪﻻ ً ﻣﻦ ‪1.5 ،‬‬
‫ﺗ‬
‫ﺒ ﺴﺎﻃ ﺔ‪.‬‬
‫ﺑ‬‫ﺒﺎﻗ ﻲ‬
‫ﺘﻢ ﺣﺬف اﻟ‬
‫ﺑ ًﺎ ؛ﻳ‬
‫ﺘﻴﺠ ﺔ ﻟﻴ ﺴ ﺖ ﻋﺪدًا ﺻﺤﻴﺤًﺎ ﻣﻘﺮ‬
‫ﺒﺎﻗ ﻲ‪ .‬ﻻﺣﻆ أن اﻟﻨ‬
‫ﺘﻄﺎع اﻟ‬
‫ﻓ ﻲ ﻋﺪد ﺻﺤﻴﺢ ﻣﻊ اﻗ‬

‫ﺗﺄﻛﺪ ﻣﻦ أن ﻣﻠ ًﻔﺎ واﺣﺪًا ﻋﲆ اﻷﻗﻞ ﻣﻦ‬


‫ﺘﺠﻨ ﺐ ﻫﺬا اﻟ ﺴﻠﻮك ﻓ ﻲ ‪Python 2 ،‬‬
‫ﻟ‬
‫ﻳﻤﺎ أ ً‬
‫ﻳﻀﺎ‪:‬‬ ‫ﺘﻴﺠ ﺔﺗﻌﻮ ً‬
‫ﺘﻜﻮن اﻟﻨ‬
‫ﺑﺬﻟﻚ ‪،‬ﺳ‬‫اﻷرﻗﺎم ﻋﺎﺋﻤ ﺔ‪ .‬ﻣﻦ ﺧﻼل اﻟﻘﻴﺎم‬

‫‪>>> 3/2‬‬
‫‪1‬‬
‫‪>>> 3.0 / 2‬‬
‫‪1.5 >>> 3 / 2.0‬‬

‫‪1.5 >>> 3.0 / 2.0‬‬

‫‪1.5‬‬

‫ﺘﺨﺪام‬
‫ﺘﺎدوا ﻋﲆ ‪Python 3‬ﻓ ﻲ اﺳ‬
‫ﺒﺪأ اﻷﺷﺨﺎص اﻟﺬﻳﻦ اﻋ‬
‫ﺒﺎك ﻋﻨﺪﻣﺎﻳ‬
‫ﺗ‬‫ﺘﻘ ﺴﻴﻢ ﻫﺬا ﻣﺼﺪ ًرا ﺷﺎﺋﻌً ﺎ ﻟﻼر‬
‫ﺒﺮﺳﻠﻮك اﻟ‬
‫ﺘ‬‫ﻳﻌ‬
‫ﺘﺮس ﻣﻦ اﻟ ﺴﻠﻮك ﻏﻴﺮ‬
‫ﺑﻴﻦ اﻷﻋﺪاد اﻟﺼﺤﻴﺤ ﺔ واﻟﻌﺎﺋﻤ ﺔ ‪ ،‬ﻓﺎﺣ‬‫ﺘﺨﺪم أوﺗﻨﺸ ﺊ رﻣ ًﺰاﻳﻤﺰج‬
‫‪Python 2 ،‬أو اﻟﻌﻜ ﺲ‪ .‬إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺘﻈﻢ‪.‬‬
‫اﻟﻤﻨ‬

‫ﺜﺎﻧ ﻲ‬
‫‪32‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺗﺄﻛﺪ ﻣﻦ إرﻓﺎق‬
‫ﺘﺞ ﻋﻨﻬﺎ ﻛﻞ ﻣﻨﻬﺎ ﻓ ﻲ اﻟﺮﻗﻢ ‪8.‬‬
‫ﺘ ﻲﻳﻨ‬
‫ﺘ ﺐ ﻋﻤﻠﻴﺎ ت اﻟﺠﻤﻊ واﻟﻄﺮح واﻟﻀﺮ ب واﻟﻘ ﺴﻤ ﺔ اﻟ‬
‫ﺛﻤﺎﻧﻴ ﺔ‪ :‬اﻛ‬‫‪2-8.‬رﻗﻢ‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺒﺪو ﻛﺎﻟ‬
‫ﺑﻌ ﺔ أﺳﻄﺮﺗ‬
‫ﺘﺎﺋﺞ‪.‬ﻳﺠ ﺐ ﻋﻠﻴﻚ إﻧﺸﺎء أر‬
‫ﺒﺎﻋ ﺔ ﻟﺮؤﻳ ﺔ اﻟﻨ‬
‫ﺒﺎرا ت اﻟﻄ‬
‫ﺗﻚ ﻓ ﻲ ﻋ‬
‫ﻋﻤﻠﻴﺎ‬

‫ﺒﺎﻋ ﺔ )‪(5 + 3‬‬


‫ﻃ‬

‫ﺑﻌ ﺔ أﺳﻄﺮ ﻣﻊ ﻇﻬﻮر اﻟﺮﻗﻢ ‪8‬ﻣﺮة واﺣﺪة‬


‫ﺒ ﺴﺎﻃ ﺔ أر‬
‫ﺑ‬‫ﺗﺠﻚ‬
‫ﻳﺠ ﺐ أنﻳﻜﻮن ﻧﺎ‬
‫ﻓ ﻲ ﻛﻞﺳﻄﺮ‪.‬‬

‫ﺑﺈﻧﺸﺎء رﺳﺎﻟ ﺔﺗﻜﺸﻒ‬‫ﺘﻐﻴﺮ ‪ ،‬ﻗﻢ‬


‫ﺘﺨﺪام ﻫﺬا اﻟﻤ‬
‫ﺑﺎﺳ‬‫ﺛﻢ ‪،‬‬‫ﺘﻐﻴﺮ‪.‬‬
‫ﺘﺨﺰﻳﻦ رﻗﻤﻚ اﻟﻤﻔﻀﻞ ﻓ ﻲ ﻣ‬
‫ﺑ‬‫‪2-9.‬اﻟﺮﻗﻢ اﻟﻤﻔﻀﻞ‪ :‬ﻗﻢ‬
‫ﺒﻊ ذﻟﻚ‬
‫رﻗﻤﻚ اﻟﻤﻔﻀﻞ‪ .‬اﻃ‬
‫رﺳﺎﻟ ﺔ‪.‬‬

‫ﺗﻌﻠﻴﻘﺎ ت‬

‫ﺒﺮﻣﺠ ﺔ‪.‬‬
‫ﺘﻌﻠﻴﻘﺎ ت ﻫ ﻲ ﻣﻴﺰة ﻣﻔﻴﺪة ﻟﻠﻐﺎﻳ ﺔ ﻓ ﻲ ﻣﻌﻈﻢ ﻟﻐﺎ ت اﻟ‬
‫اﻟ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا ‪،‬ﻳﺠ ﺐ ﻋﻠﻴﻚ إﺿﺎﻓ ﺔ‬
‫ﺑﺮاﻣﺠﻚ أﻃﻮل وأﻛ‬‫ﺒﺢ‬
‫ﺘﻰ اﻵن ﻫﻮ ﻛﻮد ‪Python.‬ﻋﻨﺪﻣﺎﺗﺼ‬
‫ﺑﺮاﻣﺠﻚ ﺣ‬‫ﺘﻪ ﻓ ﻲ‬
‫ﺒ‬‫ﺘ‬‫ﻛﻞ ﻣﺎ ﻛ‬
‫ﺑﺎﻟﻠﻐ ﺔ اﻹﻧﺠﻠﻴﺰﻳ ﺔ‬‫ﺑ ﺔ ﻣﻼﺣﻈﺎ ت‬
‫ﺘﺎ‬
‫ﺘﻌﻠﻴﻖ ﻛ‬
‫ﺘﻴﺢ ﻟﻚ اﻟ‬
‫ﺘ ﻲﺗﺤﻠﻬﺎ‪.‬ﻳ‬
‫ﺑﺮاﻣﺠﻚﺗﺼﻒ ﻧﻬﺠﻚ اﻟﻌﺎمﺗﺠﺎه اﻟﻤﺸﻜﻠ ﺔ اﻟ‬‫ﻣﻼﺣﻈﺎ ت داﺧﻞ‬
‫ﺑﺮاﻣﺠﻚ‪.‬‬‫ﺿﻤﻦ‬

‫ﺘﻌﻠﻴﻘﺎ ت؟‬
‫ﺘ ﺐ اﻟ‬
‫ﻛﻴﻒﺗﻜ‬
‫ﺘﻌﻠﻴﻤﺎ ت‬
‫ﺋ ﺔ ﻓ ﻲ اﻟ‬
‫ﺘﺠﺰ‬
‫ﺒﻊ ﻋﻼﻣ ﺔ اﻟ‬
‫ﺘ‬‫ﺘﺮﺟﻢ ‪Python‬أي ﺷ ﻲءﻳ‬
‫ﺘﺠﺎ ﻫﻞ ﻣ‬
‫ﺋ ﺔ )‪(#‬إﱃﺗﻌﻠﻴﻖ‪.‬ﻳ‬
‫ﺘﺠﺰ‬
‫ﺗﺸﻴﺮ ﻋﻼﻣ ﺔ اﻟ‬
‫ﻓ ﻲ ‪Python ،‬‬
‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻚ‪ .‬ﻋﲆﺳ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫اﻟ‬

‫ﺒﺎ ﻟﻠﺠﻤﻴﻊ‪.‬‬
‫‪comment.py #‬ﻗﻞ ﻣﺮﺣ‬
‫ﺜﻮن!"(‬
‫ﺑﺎﻳ‬‫ﺑﺄ ﻫﻞ‬‫ﺒﺎ‬
‫ﺒﺎﻋ ﺔ )"ﻣﺮﺣ ً‬
‫ﻃ‬

‫ﺜﺎﻧ ﻲ‪.‬‬
‫ﺗﻨﻔﺬ اﻟ ﺴﻄﺮ اﻟ‬
‫ﺜﻮن اﻟ ﺴﻄﺮ اﻷول و‬
‫ﺑﺎﻳ‬‫ﺘﺠﺎ ﻫﻞ‬
‫ﺗ‬

‫ﺜﻮن!‬
‫ﺑﺎﻳ‬‫ﺒﺎ ﺷﻌ ﺐ‬
‫ﻣﺮﺣ‬

‫ﺒﻬﺎ؟‬
‫ﺘ‬‫ﺘ ﻲﻳﺠ ﺐ أنﺗﻜ‬
‫ﺘﻌﻠﻴﻘﺎ ت اﻟ‬
‫ﻣﺎ ﻧﻮع اﻟ‬

‫ﺑﻚ وﻛﻴﻒﺗﺠﻌﻠﻬﺎﺗﻌﻤﻞ‪.‬‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬


‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻪ اﻟ‬‫ﺘﺮض أنﺗﻘﻮم‬
‫ُﻔ‬
‫ﺘﻌﻠﻴﻘﺎ ت ﻫﻮ ﺷﺮح ﻣﺎﻳ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺋﻴ ﺴ ﻲ ﻟﻜ‬
‫ﺒ ﺐ اﻟﺮ‬
‫اﻟ ﺴ‬
‫ﺘﻼءم ﺟﻤﻴﻊ اﻷﺟﺰاء ﻣﻌً ﺎ‪ .‬وﻟﻜﻦ ﻋﻨﺪﻣﺎﺗﻌﻮد إﱃ ﻣﺸﺮوع‬
‫ﺘﺼﻒ اﻟﻌﻤﻞ ﻓ ﻲ ﻣﺸﺮوع ﻣﺎ ‪ ،‬ﻓﺈﻧﻚﺗﻔﻬﻢ ﻛﻴﻒﺗ‬
‫ﻋﻨﺪﻣﺎﺗﻜﻮن ﻓ ﻲ ﻣﻨ‬
‫ﺑﻚ‬‫ﺋﻤﺎ دراﺳ ﺔ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺘﻔﺎﺻﻴﻞ‪.‬ﻳﻤﻜﻨﻚ دا ً‬
‫ﺑﻌﺾ اﻟ‬‫ﺘﻤﻞ أﻧﻚ ﻗﺪ ﻧ ﺴﻴ ﺖ ﻋﺸﺮة‬
‫ﺑﻌﻴﺪًا ‪ ،‬ﻓﻤﻦ اﻟﻤﺤ‬‫ﺘﺮة ﻣﻦ اﻟﻮﻗ ﺖ‬
‫ﺑﻌﺪ ﻓ‬
‫ﺑ ﺔﺗﻌﻠﻴﻘﺎ ت ﺟﻴﺪةﻳﻤﻜﻦ أنﺗﻮﻓﺮ ﻟﻚ اﻟﻮﻗ ﺖ‬
‫ﺘﺎ‬
‫ﺘﺮض أنﺗﻌﻤﻞ اﻷﻗ ﺴﺎم ‪ ،‬وﻟﻜﻦ ﻛ‬
‫ﺘﺮة ﻣﻦ اﻟﻮﻗ ﺖ وﻣﻌﺮﻓ ﺔ ﻛﻴﻒ ﻛﺎن ﻣﻦ اﻟﻤﻔ‬
‫ﻟﻔ‬
‫ﺑﻠﻐ ﺔ إﻧﺠﻠﻴﺰﻳ ﺔ واﺿﺤ ﺔ‪.‬‬‫ﻋﻦ ﻃﺮﻳﻖﺗﻠﺨﻴﺺ ﻧﻬﺠﻚ اﻟﻌﺎم‬

‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻐﻴﺮا ت وأﻧﻮاع اﻟ‬
‫اﻟﻤ‬ ‫‪33‬‬
‫‪Machine Translated by Google‬‬

‫ﺘ ﺐﺗﻌﻠﻴﻘﺎ ت ذا ت ﻣﻐﺰى‪.‬‬
‫ﺒﺮﻣﺠﻴﻦ آﺧﺮﻳﻦ ‪ ،‬ﻓﻴﺠ ﺐ أنﺗﻜ‬
‫ﺘﻌﺎون ﻣﻊ ﻣ‬ ‫ﺒﺮﻣﺠًﺎ ﻣﺤ ً‬
‫ﺘﺮﻓﺎ أوﺗ‬ ‫ﺒﺢ ﻣ‬
‫إذا ﻛﻨ ﺖﺗﺮﻳﺪ أنﺗﺼ‬
‫ﺑﺸﻜﻞﺗﻌﺎوﻧ ﻲ ‪،‬ﺳﻮاء ﻣﻦ ﺧﻼل ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻤﻮﻇﻔﻴﻦ ﻓ ﻲ ﺷﺮﻛ ﺔ واﺣﺪة أو ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ‬‫ﺒﺮاﻣﺞ‬
‫ﺑ ﺔ ﻣﻌﻈﻢ اﻟ‬
‫ﺘﺎ‬
‫ﺘﻢ ﻛ‬
‫اﻟﻴﻮم ‪،‬ﺗ‬
‫ﺘﻮح اﻟﻤﺼﺪر‪.‬‬
‫اﻷﺷﺨﺎصﻳﻌﻤﻠﻮن ﻣﻌً ﺎ ﻓ ﻲ ﻣﺸﺮوع ﻣﻔ‬

‫ﺒﺪء ﻓ ﻲ إﺿﺎﻓ ﺔﺗﻌﻠﻴﻘﺎ ت وﺻﻔﻴ ﺔ‬


‫ﺒﺮﻣﺠﻴ ﺔ ‪ ،‬ﻟﺬﻟﻚ ﻣﻦ اﻷﻓﻀﻞ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻌﻠﻴﻘﺎ ت ﻓ ﻲ اﻟ‬
‫ﺒﺮﻣﺠﻮن اﻟﻤﻬﺮة رؤﻳ ﺔ اﻟ‬
‫ﺘﻮﻗﻊ اﻟﻤ‬
‫ﻳ‬
‫ﺜﺮ اﻟﻌﺎدا ت اﻟﻤﻔﻴﺪة‬
‫ﺑﻚ واﺣﺪة ﻣﻦ أﻛ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔﺗﻌﻠﻴﻘﺎ ت واﺿﺤ ﺔ وﻣﻮﺟﺰة ﻓ ﻲ اﻟ‬
‫ﺘﺎ‬
‫ﺑﺮاﻣﺠﻚ اﻵن‪.‬ﺗﻌﺪ ﻛ‬‫إﱃ‬
‫ﺒﺮﻣﺞ ﺟﺪﻳﺪ‪.‬‬
‫ﺘ ﻲﻳﻤﻜﻨﻚﺗﻜﻮﻳﻨﻬﺎ ﻛﻤ‬
‫اﻟ‬

‫ﺘﻮﺻﻞ إﱃ‬
‫ﺒﻞ اﻟ‬ ‫ﺘ ﺐﺗﻌﻠﻴ ًﻘﺎ ‪ ،‬اﺳﺄل ﻧﻔ ﺴﻚ ﻋﻤﺎ إذا ﻛﺎن ﻋﻠﻴﻚ اﻟ‬
‫ﺘﻔﻜﻴﺮ ﻓ ﻲ ﻋﺪة ﻃﺮق ﻗ‬ ‫ﺘﻜ‬‫ﻋﻨﺪﻣﺎﺗﻘﺮر ﻣﺎ إذا ﻛﻨ ﺖﺳ‬
‫ﺘ ﺐﺗﻌﻠﻴ ًﻘﺎ ﺣﻮل اﻟﺤﻞ اﻟﺬيﺗﻘﺪﻣﻪ‪.‬‬
‫ﻃﺮﻳﻘ ﺔ ﻣﻌﻘﻮﻟ ﺔ ﻹﻧﺠﺎز ﺷ ﻲء ﻣﺎ ؛ إذا ﻛﺎن اﻷﻣﺮ ﻛﺬﻟﻚ ‪ ،‬ﻓﺎﻛ‬

‫ﺘﻌﻠﻴﻘﺎ ت‪ .‬ﻣﻦ اﻵن‬


‫ﺒﺮﻧﺎﻣﺞ ﻗﻠﻴﻞ اﻟ‬
‫ﺘﻌﻠﻴﻘﺎ ت ﻟ‬
‫ﺑ ﺔ اﻟ‬‫ﺑﺪﻻ ً ﻣﻦ اﻟﺮﺟﻮع وﻛ‬
‫ﺘﺎ‬ ‫ﺘﻌﻠﻴﻘﺎ ت اﻹﺿﺎﻓﻴ ﺔ ﻻﺣ ًﻘﺎ‬
‫ﺜﻴﺮ ﺣﺬف اﻟ‬
‫ﺑﻜ‬‫ﻣﻦ اﻷﺳﻬﻞ‬
‫ﺘﺎ ب ﻟﻠﻤ ﺴﺎﻋﺪة ﻓ ﻲ ﺷﺮح أﻗ ﺴﺎم اﻟﻜﻮد‪.‬‬
‫ﺜﻠ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻫﺬا اﻟﻜ‬
‫ﺘﻌﻠﻴﻘﺎ ت ﻓ ﻲ اﻷﻣ‬
‫ﺘﺨﺪم اﻟ‬
‫ﻓﺼﺎﻋﺪًا ‪،‬ﺳﺄﺳ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻬﺎ ‪ ،‬وأﺿﻒﺗﻌﻠﻴ ًﻘﺎ واﺣﺪًا ﻋﲆ اﻷﻗﻞ ﻟﻜﻞ ﻣﻨﻬﻤﺎ‪ .‬إذا‬


‫ﺒ‬‫ﺘ‬‫ﺘ ﻲﻛ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺛﻨﻴﻦ ﻣﻦ اﻟ‬
‫ﺘﺮ ا‬
‫‪2-10.‬إﺿﺎﻓ ﺔﺗﻌﻠﻴﻘﺎ ت‪ :‬اﺧ‬
‫ﺑ ﺴﻴﻄ ﺔ ﻟﻠﻐﺎﻳ ﺔ ﻓ ﻲ ﻫﺬه اﻟﻤﺮﺣﻠ ﺔ ‪ ،‬ﻓﻤﺎ ﻋﻠﻴﻚﺳﻮى إﺿﺎﻓ ﺔ‬‫ﺑﺮاﻣﺠﻚ‬‫ﺒﻪﻷن‬
‫ﺘ‬‫ﻟﻢﻳﻜﻦ ﻟﺪﻳﻚ أي ﺷ ﻲء ﻣﺤﺪدﺗﻜ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺘ ﺐ ﺟﻤﻠ ﺔ واﺣﺪةﺗﺼﻒ ﻓﻴﻬﺎ ﻣﺎﻳﻔﻌﻠﻪ اﻟ‬
‫ﺛﻢ اﻛ‬‫ﺑﺮﻧﺎﻣﺞ‪.‬‬‫ﺘﺎرﻳﺦ اﻟﺤﺎﻟ ﻲ أﻋﲆ ﻛﻞ ﻣﻠﻒ‬
‫اﺳﻤﻚ واﻟ‬

‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫زن‬
‫ﺘﻔﺎﻋﻠﻴ ﺔ ﻓ ﻲ اﻷﻳﺎم اﻷوﱃ‬
‫ﺘﺮﻧ ﺖ‪ .‬ﻛﺎﻧ ﺖ ﻣﻌﻈﻢ ﻣﻮاﻗﻊ اﻟﻮﻳ ﺐ اﻟ‬
‫ﺒﺮﻣﺠ ﺔ ‪ Perl‬ﻫ ﻲ اﻟﺪﻋﺎﻣ ﺔ اﻷﺳﺎﺳﻴ ﺔ ﻟﻺﻧ‬
‫ﺘﺮة ﻃﻮﻳﻠ ﺔ ‪ ،‬ﻛﺎﻧ ﺖ ﻟﻐ ﺔ اﻟ‬
‫ﻟﻔ‬
‫ﺑﺬﻟﻚ‪ ".‬أﺣ ﺐ اﻟﻨﺎس ﻫﺬه‬‫ﺜﺮ ﻣﻦ ﻃﺮﻳﻘ ﺔ ﻟﻠﻘﻴﺎم‬
‫ﺘﻤﻊ ‪Perl‬ﻓ ﻲ ذﻟﻚ اﻟﻮﻗ ﺖ ‪ " ،‬ﻫﻨﺎك أﻛ‬
‫ﺑﻨﺼﻮص ‪Perl.‬ﻛﺎن ﺷﻌﺎر ﻣﺠ‬‫ﻣﺪﻋﻮﻣ ﺔ‬
‫ﺑﻌﺪة ﻃﺮق‪ .‬ﻛﺎن ﻫﺬا‬‫ﺑ ﺔ ﻓ ﻲ اﻟﻠﻐ ﺔ ﺟﻌﻠ ﺖ ﻣﻦ اﻟﻤﻤﻜﻦ ﺣﻞ ﻣﻌﻈﻢ اﻟﻤﺸﻜﻼ ت‬
‫ﺘﻮ‬‫ﺘﺮة ﻣﻦ اﻟﻮﻗ ﺖ ‪،‬ﻷن اﻟﻤﺮوﻧ ﺔ اﻟﻤﻜ‬
‫اﻟﻌﻘﻠﻴ ﺔ ﻟﻔ‬
‫ﺘﺮﻛﻴﺰ ﻋﲆ اﻟﻤﺮوﻧ ﺔ ﺟﻌﻞ ﻣﻦ اﻟﺼﻌ ﺐ‬ ‫ﺒﻮﻻ ً أ‬
‫ﺛﻨﺎء اﻟﻌﻤﻞ ﻓ ﻲ ﻣﺸﺎرﻳﻌﻚ اﻟﺨﺎﺻ ﺔ ‪ ،‬وﻟﻜﻦ ﻓ ﻲ اﻟﻨﻬﺎﻳ ﺔ أدرك اﻟﻨﺎس أن اﻟ‬ ‫اﻟﻨﻬﺞ ﻣﻘ‬
‫ﺘﻬﻠﻚ ﻟﻠﻮﻗ ﺖ ﻣﺮاﺟﻌ ﺔ‬
‫ﺘﺮا ت ﻃﻮﻳﻠ ﺔ ﻣﻦ اﻟﺰﻣﻦ‪ .‬ﻛﺎن ﻣﻦ اﻟﺼﻌ ﺐ ‪ ،‬واﻟﻤﻤﻞ ‪ ،‬واﻟﻤ ﺴ‬
‫ﺒﻴﺮة ﻋﲆ ﻣﺪى ﻓ‬
‫اﻟﺤﻔﺎظ ﻋﲆ اﻟﻤﺸﺎرﻳﻊ اﻟﻜ‬
‫اﻟﻜﻮد وﻣﺤﺎوﻟ ﺔ ﻣﻌﺮﻓ ﺔ ﻣﺎ ﻛﺎنﻳﻔﻜﺮ ﻓﻴﻪ ﺷﺨﺺ آﺧﺮ ﻋﻨﺪﻣﺎ ﻛﺎنﻳﺤﻞ ﻣﺸﻜﻠ ﺔ ﻣﻌﻘﺪة‪.‬‬

‫ﺒ ﺴﺎﻃ ﺔ ﻛﻠﻤﺎ أﻣﻜﻦ ذﻟﻚ‪.‬ﺗﻢﺗﻀﻤﻴﻦ‬


‫ﺘﻌﻘﻴﺪ وﻳﻬﺪﻓﻮن إﱃ اﻟ‬
‫ﺘﻤﺮﺳﻮن ﻋﲆﺗﺠﻨ ﺐ اﻟ‬
‫ﺒﺮﻣﺠﻮ ‪Python‬اﻟﻤ‬
‫ﺳﻴﺸﺠﻌﻚ ﻣ‬
‫ﺑﻮاﺳﻄ ﺔ ‪Tim Peters.‬ﻳﻤﻜﻨﻚ اﻟﻮﺻﻮل إﱃ ﻫﺬه اﻟﻤﺠﻤﻮﻋ ﺔ‬
‫ﺘﻤﻊ ‪Python‬ﻓ ﻲ "‪"The Zen of Python‬‬
‫ﻓﻠ ﺴﻔ ﺔ ﻣﺠ‬
‫ﺘﺎج ‪of‬‬
‫ﺑﺈﻋﺎدة إﻧ‬‫ﺘﺮﺟﻤﻚ‪ .‬ﻟﻦ أﻗﻮم‬
‫ﺘﻴﺮاد ﻫﺬا ﻓ ﻲ ﻣ‬
‫ﺑ ﺔ ﻛﻮد ‪Python‬اﻟﺠﻴﺪ ﻋﻦ ﻃﺮﻳﻖ إدﺧﺎل اﺳ‬
‫ﺘﺎ‬
‫ﺒﺎدئ ﻟﻜ‬
‫ﺘﺼﺮة ﻣﻦ اﻟﻤ‬
‫اﻟﻤﺨ‬
‫‪"Zen‬‬

‫‪34‬اﻟﻔﺼﻞ ‪2‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺪئ‪.‬‬
‫ﺒ‬‫ﺜﻮن ﻣ‬
‫ﺑﺎﻳ‬‫ﺒﺮﻣﺞ‬
‫ﺒ ﺔ ﻟﻚ ﻛﻤ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺘﻬﺎ‬
‫ﺒ ﺐ أ ﻫﻤﻴ‬
‫ﺗﻚ ﻋﲆ ﻓﻬﻢﺳ‬
‫ﺑﻌﺾ اﻷﺳﻄﺮ ﻟﻤ ﺴﺎﻋﺪ‬‫‪ "Python‬ﻫﻨﺎ ‪ ،‬ﻟﻜﻨﻨ ﻲﺳﺄﺷﺎرك‬

‫ﺘﻴﺮاد ﻫﺬا‬
‫>>>اﺳ‬
‫ﺘﺮز‬
‫ﺑﻴ‬‫ﺜﻮن ‪،‬ﺗﻴﻢ‬
‫ﺑﺎﻳ‬‫زﻳﻦ‬

‫ﺒﻴﺢ‪.‬‬
‫اﻟﺠﻤﻴﻞ ﺧﻴﺮ ﻣﻦ اﻟﻘ‬

‫ﺘﺮم‬
‫ﺒﺮﻣﺠ ﺔ ‪،‬ﻳﺤﻞ اﻟﻨﺎس اﻟﻤﺸﺎﻛﻞ‪ .‬ﻟﻘﺪ اﺣ‬
‫ﺜﻮن ﻓﻜﺮة أن اﻟﺸﻔﺮةﻳﻤﻜﻦ أنﺗﻜﻮن ﺟﻤﻴﻠ ﺔ وأﻧﻴﻘ ﺔ‪ .‬ﻓ ﻲ اﻟ‬
‫ﺑﺎﻳ‬‫ﺒﺮﻣﺠﻮ‬
‫ﺒﻨﻰ ﻣ‬
‫ﺘ‬‫ﻳ‬
‫ﺘﺨﺪﻣﻬﺎ‬
‫ﺗﺴ‬‫ﺘﻌﻠﻢ اﻟﻤﺰﻳﺪ ﻋﻦ ‪Python‬و‬
‫ﺘﻰ اﻟﺠﻤﻴﻠ ﺔ ﻟﻠﻤﺸﻜﻼ ت‪ .‬ﻋﻨﺪﻣﺎﺗ‬
‫ﺋﻤﺎ اﻟﺤﻠﻮل اﻟﻤﺼﻤﻤ ﺔ ﺟﻴﺪًا واﻟﻔﻌﺎﻟ ﺔ وﺣ‬
‫ﺒﺮﻣﺠﻮن دا ً‬
‫اﻟﻤ‬
‫ﺘﻔﻚ ذا تﻳﻮم وﻳﻘﻮل ‪" ،‬واو ‪ ،‬ﻫﺬا رﻣﺰ ﺟﻤﻴﻞ!"‬
‫ﺒﺮﻣﺠﻴ ﺔ ‪ ،‬ﻗﺪﻳﻨﻈﺮ ﺷﺨﺺ ﻣﺎ ﻓﻮق ﻛ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬
‫ﺘﺎ‬
‫ﻟﻜ‬

‫ﺑ ﺴﻴﻂ ﻫﻮ أﻓﻀﻞ ﻣﻦ اﻟﻤﺠﻤﻊ‪.‬‬

‫ﺑ ﺴﻴﻂ وﻣﻌﻘﺪ ‪ ،‬وﻛﻼ ﻫﻤﺎ‬‫ﺑﻴﻦ ﺣﻞ‬‫إذا ﻛﺎن ﻟﺪﻳﻚ ﺧﻴﺎر‬


‫ﺗﻚ ‪ ،‬وﺳﻴﻜﻮن ﻣﻦ اﻷﺳﻬﻞ ﻋﻠﻴﻚ وﻋﲆ اﻵﺧﺮﻳﻦ‬
‫ﺒ ﺴﻴﻂ‪.‬ﺳﻴﻜﻮن ﻣﻦ اﻷﺳﻬﻞ اﻟﺤﻔﺎظ ﻋﲆ ﺷﻔﺮ‬
‫ﺘﺨﺪم اﻟﺤﻞ اﻟ‬
‫اﻟﻌﻤﻞ ‪ ،‬اﺳ‬
‫ﺒﻨﺎء ﻋﻠﻴﻬﺎ ﻻﺣ ًﻘﺎ‪.‬‬
‫اﻟ‬

‫اﻟﻤﺮﻛ ﺐ أﻓﻀﻞ ﻣﻦ اﻟﻤﻌﻘﺪ‪.‬‬

‫ﺘﺨﺪم‬
‫ﺘﺤﻘﻴﻖ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬اﺳ‬
‫ﺑﻞ ﻟﻠ‬ ‫اﻟﺤﻴﺎة اﻟﻮاﻗﻌﻴ ﺔ ﻓﻮﺿﻮﻳ ﺔ ‪ ،‬وأﺣﻴﺎﻧًﺎﻳﻜﻮن اﻟﺤﻞ اﻟ‬
‫ﺒ ﺴﻴﻂ ﻟﻤﺸﻜﻠ ﺔ ﻣﺎ ﻏﻴﺮ ﻗﺎ‬
‫ﺑ ﺴﻂ ﺣﻞﻳﻌﻤﻞ‪.‬‬
‫أ‬

‫اﻟﻘﺮاءة ﻣﻬﻤ ﺔ‪.‬‬

‫ﺑﻠ ﺔ ﻟﻠﻘﺮاءة‪ .‬ﻋﻨﺪﻣﺎ ﻛﻨ ﺖ‬


‫ﺑﻚ ﻣﻌﻘﺪة ‪ ،‬ﺣﺎول ﺟﻌﻠﻬﺎ ﻗﺎ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻰ ﻋﻨﺪﻣﺎﺗﻜﻮن اﻟ‬
‫ﺣ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪.‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻠﻚ اﻟ‬
‫ﺗﻴ ﺔ ﻟ‬
‫ﺑ ﺔﺗﻌﻠﻴﻘﺎ ت ﻣﻌﻠﻮﻣﺎ‬‫ﺘﻀﻤﻦﺗﺮﻣﻴ ًﺰا ﻣﻌﻘﺪًا ‪ ،‬رﻛﺰ ﻋﲆ ﻛ‬
‫ﺘﺎ‬ ‫ﺛﻨﺎء اﻟﻌﻤﻞ ﻓ ﻲ ﻣﺸﺮوعﻳ‬
‫أ‬

‫ﺑﺬﻟﻚ ‪-‬وﻳﻔﻀﻞ أنﺗﻜﻮن واﺣﺪة ﻓﻘﻂ‪.‬‬‫ﻳﺠ ﺐ أنﺗﻜﻮن ﻫﻨﺎك ﻃﺮﻳﻘ ﺔ واﺣﺪة واﺿﺤ ﺔ ﻟﻠﻘﻴﺎم‬

‫ﺘﻮاﻓﻘ ﺔ إﱃ ﺣﺪ ﻣﺎ‪.‬‬
‫ﺘﻮﺻﻠﻮا إﱃ ﺣﻠﻮل ﻣ‬
‫ﺒﺮﻣﺠ ﻲ ‪Python‬ﺣﻞ ﻧﻔ ﺲ اﻟﻤﺸﻜﻠ ﺔ ‪ ،‬ﻓﻴﺠ ﺐ أنﻳ‬
‫ﺛﻨﻴﻦ ﻣﻦ ﻣ‬
‫إذاُﻃﻠ ﺐ ﻣﻦ ا‬
‫ﺘﺨﺪام‬
‫ﺘﻜﻮن ﻣﻦ اﺳ‬
‫ﺒﺮﻣﺠ ﺔ اﻟﻠﻐﻮﻳ ﺔﺗ‬
‫ﺜﻴﺮ ﻣﻦ اﻟ‬
‫ﺒﺮﻣﺠ ﺔ‪ .‬ﻋﲆ اﻟﻌﻜ ﺲﺗﻤﺎﻣﺎ! ﻟﻜﻦ اﻟﻜ‬
‫ﺑﺪاع ﻓ ﻲ اﻟ‬
‫ﻫﺬا ﻻﻳﻌﻨ ﻲ أﻧﻪ ﻻﻳﻮﺟﺪ ﻣﺠﺎل ﻟﻺ‬
‫ﺑﺮاﻣﺠﻚ‬‫ﺑﺪاﻋً ﺎ‪.‬ﻳﺠ ﺐ أنﺗﻜﻮن ﺻﻮاﻣﻴﻞ وﻣ ﺴﺎﻣﻴﺮ‬
‫ﺜﺮ إ‬
‫ﺒﺮ وأﻛ‬
‫ﺒ ﺴﻴﻄ ﺔ ﺿﻤﻦ ﻣﺸﺮوع أﻛ‬
‫ﺘﺮﻛ ﺔ ﻓ ﻲ اﻟﻤﻮاﻗﻒ اﻟ‬
‫ﻣﻨﺎ ﻫﺞ ﺻﻐﻴﺮة ﻣﺸ‬
‫ﺜﻮن اﻵﺧﺮﻳﻦ‪.‬‬
‫ﺑﺎﻳ‬‫ﺒﺮﻣﺠ ﻲ‬
‫ﻣﻨﻄﻘﻴ ﺔ ﻟﻤ‬

‫اﻵن أﻓﻀﻞ ﻣﻦ ﻋﺪﻣﻪ‪.‬‬

‫ﺑﻌﺪ ذﻟﻚ ﻟﻦﺗﻜﻤﻞ أي‬‫ﺑﺸﻜﻞ ﻋﺎم ‪ ،‬وﻟﻜﻦ‬‫ﺒﺮﻣﺠ ﺔ‬


‫ﺗﻚ ﻓ ﻲﺗﻌﻠﻢ ﻛﻞﺗﻌﻘﻴﺪا ت ‪Python‬واﻟ‬
‫ﺑﻘﻴ ﺔ ﺣﻴﺎ‬‫ﻳﻤﻜﻨﻚ ﻗﻀﺎء‬
‫ﺑﻚ ﻟﻬﺬا اﻟﻤﺸﺮوع‬‫ﺛﻢ ﻗﺮر ﻣﺎ إذا ﻛﻨ ﺖﺗﺮﻳﺪﺗﺤ ﺴﻴﻦ اﻟﻜﻮد اﻟﺨﺎص‬‫ﺘ ﺐ رﻣ ًﺰاﻳﻌﻤﻞ ‪،‬‬
‫ﺜﺎﻟ ﻲ ؛ اﻛ‬
‫ﺑ ﺔ ﻛﻮد ﻣ‬
‫ﺘﺎ‬
‫ﻣﺸﺎرﻳﻊ‪ .‬ﻻﺗﺤﺎول ﻛ‬
‫ﺘﻘﺎل إﱃ ﺷ ﻲء ﺟﺪﻳﺪ‪.‬‬
‫أو اﻻﻧ‬

‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻐﻴﺮا ت وأﻧﻮاع اﻟ‬
‫اﻟﻤ‬ ‫‪35‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺤ ﺚ ﻓ ﻲ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻮﺿﻮﻋﺎ ت ذا ت اﻟﺼﻠ ﺔ ‪ ،‬ﺣﺎول أنﺗﻀﻊ‬


‫ﺒﺪء ﻓ ﻲ اﻟ‬
‫ﺘﺎﻟ ﻲ واﻟ‬
‫ﺘﻤﺮار ﻓ ﻲ اﻟﻔﺼﻞ اﻟ‬
‫ﻣﻊ اﻻﺳ‬
‫ﺜﺮ وﺳﻴ ﺴﻌﺪ ﻫﻢ إﻋﻄﺎﺋﻚ‬
‫ﺑﻚ أﻛ‬‫ﺒﺮة اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺒﺮﻣﺠﻮن ذوو اﻟﺨ‬
‫ﺘﺮم اﻟﻤ‬
‫ﺒﺎر‪.‬ﺳﻴﺤ‬
‫ﺘ‬‫ﺒ ﺴﺎﻃ ﺔ واﻟﻮﺿﻮح ﻓ ﻲ اﻻﻋ‬
‫ﻓﻠ ﺴﻔ ﺔ اﻟ‬
‫ﺘﻤﺎم‪.‬‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺘﻌﺎون ﻣﻌﻚ ﻓ ﻲ ﻣﺸﺎرﻳﻊ ﻣ‬
‫ﻣﻼﺣﻈﺎ ت واﻟ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺒﺎدئ اﻹﺿﺎﻓﻴ ﺔ‪.‬‬


‫ﺗﺼﻔﺢ اﻟﻤ‬
‫ﺘﻴﺮاد ﻫﺬا ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ ‪Python‬و‬
‫‪2-11. Zen of Python:‬أدﺧﻞ اﺳ‬

‫ﻣﻠﺨﺺ‬
‫ﺘﻐﻴﺮا ت اﻟﻮﺻﻔﻴ ﺔ وﻛﻴﻔﻴ ﺔ ﺣﻞ أﺧﻄﺎء‬
‫ﺘﺨﺪام أﺳﻤﺎء اﻟﻤ‬
‫ﺘﻐﻴﺮا ت‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ اﺳ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞﺗﻌﻠﻤ ﺖ اﻟﻌﻤﻞ ﻣﻊ اﻟﻤ‬
‫ﺘﺨﺪام اﻷﺣﺮف‬
‫ﺑﺎﺳ‬‫ﺒﻴ ﺔ ﻋﻨﺪ ﻇﻬﻮر ﻫﺎ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻣﺎ ﻫ ﻲ اﻟ ﺴﻼﺳﻞ وﻛﻴﻔﻴ ﺔ ﻋﺮض اﻟ ﺴﻼﺳﻞ‬
‫اﻷﺳﻤﺎء وأﺧﻄﺎء اﻟﻤﺰاﻣﻨ ﺔ اﻟﻀﺮﻳ‬
‫ﺗﻌﻠﻤ ﺖ إزاﻟ ﺔ اﻟﻤ ﺴﺎﻓﺎ ت‬
‫ﺑﺪﻗ ﺔ ‪ ،‬و‬‫ﺘﻨﻈﻴﻢ اﻹﺧﺮاج‬
‫ﺒﻴﻀﺎء ﻟ‬
‫ﺘﺨﺪام اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺑﺪأ ت ﻓ ﻲ اﺳ‬‫ﺒﻴﺮة وﺣﺮف اﻟﻌﻨﻮان‪ .‬ﻟﻘﺪ‬
‫اﻟﺼﻐﻴﺮة واﻟﻜ‬
‫ﺑﻌﺾ‬‫ﺑﺪأ ت اﻟﻌﻤﻞ ﻣﻊ اﻷﻋﺪاد اﻟﺼﺤﻴﺤ ﺔ واﻟﻌﺎﺋﻤ ﺔ ‪ ،‬وﻗﺮأ ت ﻋﻦ‬‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ‪ .‬ﻟﻘﺪ‬
‫ﺒﻴﻀﺎء ﻏﻴﺮ اﻟﻀﺮورﻳ ﺔ ﻣﻦ أﺟﺰاء ﻣﺨ‬
‫اﻟ‬
‫ﺑ ﺔﺗﻌﻠﻴﻘﺎ تﺗﻮﺿﻴﺤﻴ ﺔ‬
‫ﺘﺎ‬ ‫ﺒﻴﺎﻧﺎ ت اﻟﺮﻗﻤﻴ ﺔ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ أ ً‬
‫ﻳﻀﺎ ﻛ‬ ‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟ‬
‫ﺒﺎه إﻟﻴﻪ ﻋﻨﺪ اﻟ‬
‫ﺘ‬‫ﺘﻮﻗﻊ اﻟﺬيﻳﺠ ﺐ اﻻﻧ‬
‫اﻟ ﺴﻠﻮك ﻏﻴﺮ اﻟﻤ‬
‫ﺗﻚ ﻗﺪر‬
‫ﺑ ﺴﻂ ﺷﻔﺮ‬
‫ﺑﻚ ﻟﻚ وﻟﻶﺧﺮﻳﻦ‪ .‬أﺧﻴ ﺮًا ‪ ،‬ﻗﺮأ ت ﻋﻦ ﻓﻠ ﺴﻔ ﺔ اﻟﺤﻔﺎظ ﻋﲆ أ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘ ﺴﻬﻴﻞ ﻗﺮاءة اﻟ‬
‫ﻟ‬
‫اﻹﻣﻜﺎن ‪ ،‬ﻛﻠﻤﺎ أﻣﻜﻦ ذﻟﻚ‪.‬‬

‫ﺘﻐﻴﺮا ت‬
‫ﺗﺨﺰﻳﻦ ﻣﺠﻤﻮﻋﺎ ت اﻟﻤﻌﻠﻮﻣﺎ ت ﻓ ﻲ ﻣ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ اﻟﻔﺼﻞ ‪3‬‬
‫ﺘ‬‫ﺳ‬
‫ﺑﺄي ﻣﻌﻠﻮﻣﺎ ت ﻓ ﻲﺗﻠﻚ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬‫ﺘﻼﻋ ﺐ‬
‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ اﻟﻌﻤﻞ ﻣﻦ ﺧﻼل ﻗﺎﺋﻤ ﺔ ‪ ،‬واﻟ‬
‫ﺘ‬‫ﻗﻮاﺋﻢﺗ ﺴﻤﻰ ‪.‬ﺳ‬

‫‪36‬اﻟﻔﺼﻞ ‪2‬‬
‫‪Machine Translated by Google‬‬

‫‪3‬‬ ‫ﺗﻘﺪﻳﻢ اﻟﻘﻮاﺋﻢ‬

‫ﺑﺪء‬‫ﺘﻌﺮف ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ واﻟﻔﺼﻞ اﻟﺬيﻳﻠﻴﻪ ﻋﲆ اﻟﻘﻮاﺋﻢ وﻛﻴﻔﻴ ﺔ‬


‫ﺘ‬‫ﺳ‬
‫ﺘﺨﺰﻳﻦ‬
‫ﺑﺎﻟ‬‫اﻟﻌﻤﻞ ﻣﻊ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬ﺗ ﺴﻤﺢ ﻟﻚ اﻟﻘﻮاﺋﻢ‬

‫ﻣﺠﻤﻮﻋﺎ ت ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻓ ﻲ ﻣﻜﺎن واﺣﺪ ‪،‬ﺳﻮاء ﻛﺎن ﻟﺪﻳﻚ ﻋﺪد ﻗﻠﻴﻞ ﻣﻦ‬
‫ﺘ ﻲﻳﻤﻜﻦ‬
‫اﻟﻌﻨﺎﺻﺮ أو ﻣﻼﻳﻴﻦ اﻟﻌﻨﺎﺻﺮ‪ .‬اﻟﻘﻮاﺋﻢ ﻫ ﻲ واﺣﺪة ﻣﻦ أﻗﻮى ﻣﻴﺰا ت ‪Python‬اﻟ‬
‫ﺑﻂ ﻣﻌً ﺎ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻔﺎ ﻫﻴﻢ اﻟﻤﻬﻤ ﺔ‬
‫ﺒﺮﻣﺠﻴﻦ اﻟﺠﺪد ‪ ،‬و ﻫ ﻲﺗﺮ‬
‫ﺑ ﺴﻬﻮﻟ ﺔ ﻟﻠﻤ‬‫اﻟﻮﺻﻮل إﻟﻴﻬﺎ‬
‫ﺒﺮﻣﺠ ﺔ‪.‬‬
‫ﻓ ﻲ اﻟ‬

‫ﻣﺎ ﻫ ﻲ اﻟﻘﺎﺋﻤ ﺔ؟‬

‫ﺑﺠﺪﻳ ﺔ أو اﻷرﻗﺎم ﻣﻦ ‪0‬إﱃ ‪9‬أو‬


‫ﺘﻀﻤﻦ أﺣﺮف اﻷ‬
‫ﺗﻴ ﺐ ﻣﻌﻴﻦ‪.‬ﻳﻤﻜﻨﻚ ﻋﻤﻞ ﻗﺎﺋﻤ ﺔﺗ‬
‫ﺘﺮ‬‫ﺑ‬‫اﻟﻘﺎﺋﻤ ﺔ ﻫ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ‬
‫ﺘﻚ‪.‬ﻳﻤﻜﻨﻚ وﺿﻊ أي ﺷ ﻲءﺗﺮﻳﺪه ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪ ،‬و‬
‫أﺳﻤﺎء ﺟﻤﻴﻊ أﻓﺮاد ﻋﺎﺋﻠ‬
‫‪Machine Translated by Google‬‬

‫ﺜﺮ ﻣﻦ‬ ‫ً‬


‫ﻋﺎدة ﻋﲆ أﻛ‬ ‫ﺘﻮي‬
‫ﺑﺄي ﻃﺮﻳﻘ ﺔ ﻣﻌﻴﻨ ﺔ‪ .‬ﻧﻈ ﺮًاﻷن اﻟﻘﺎﺋﻤ ﺔﺗﺤ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﻚ ﻣﺮ‬
‫ﻻﻳﺠ ﺐ أنﺗﻜﻮن اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻗﺎﺋﻤ‬
‫ﺜﻞ اﻷﺣﺮف أو اﻷرﻗﺎم أو اﻷﺳﻤﺎء‪.‬‬
‫ﺑﺼﻴﻐ ﺔ اﻟﺠﻤﻊ ‪ ،‬ﻣ‬‫ﺘﺤ ﺴﻦ ﺟﻌﻞ اﺳﻢ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﻋﻨﺼﺮ واﺣﺪ ‪ ،‬ﻓﻤﻦ اﻟﻤ ﺴ‬

‫ﺑ ﺴﻴﻂ ﻟﻘﺎﺋﻤ ﺔ‬‫ﺜﺎل‬


‫ﺑﻔﺎﺻﻼ ت‪ .‬ﻓﻴﻤﺎﻳﻠ ﻲ ﻣ‬‫ﺘﻢ ﻓﺼﻞ اﻟﻌﻨﺎﺻﺮ اﻟﻔﺮدﻳ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺑﻌ ﺔ )][(إﱃ ﻗﺎﺋﻤ ﺔ ‪ ،‬وﻳ‬
‫ﺗﺸﻴﺮ اﻷﻗﻮاس اﻟﻤﺮ‬
‫ﻓ ﻲ ‪Python ،‬‬

‫ﺘﻮي ﻋﲆ أﻧﻮاع ﻗﻠﻴﻠ ﺔ ﻣﻦ اﻟﺪراﺟﺎ ت‪:‬‬


‫ﺗﺤ‬

‫دراﺟﺎ ت‬ ‫دراﺟﺎ ت ]'‪= ['trek'، 'cannondale'، 'redline'، 'Specialty‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت(‬
‫ﻃ‬

‫ﺜﻴﻠﻬﺎ ﻟـ‬
‫ﺗﻤ‬‫ﺘﻌﻴﺪ ‪Python‬‬
‫ﺒﺎﻋ ﺔ ﻗﺎﺋﻤ ﺔ ‪ ،‬ﻓ ﺴ‬
‫ﺒ ﺖ ﻣﻦ ‪Python‬ﻃ‬
‫إذا ﻃﻠ‬

‫ﺑﻌ ﺔ‪:‬‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻷﻗﻮاس اﻟﻤﺮ‬‫اﻟﻘﺎﺋﻤ ﺔ ‪،‬‬

‫]'‪['trek'، 'cannondale'، 'redline'، 'Specialty‬‬

‫ﺘﻌﻠﻢ ﻛﻴﻒ‬
‫ﺘﺨﺪﻣﻮن ‪ ،‬ﻓﻠﻨ‬
‫ﺗﺞ اﻟﺬيﺗﺮﻳﺪ أنﻳﺮاه اﻟﻤ ﺴ‬
‫ﻧﻈ ﺮًاﻷن ﻫﺬا ﻟﻴ ﺲ اﻟﻨﺎ‬
‫ﻟﻠﻮﺻﻮل إﱃ اﻟﻌﻨﺎﺻﺮ اﻟﻔﺮدﻳ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬

‫اﻟﻮﺻﻮل إﱃ اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬


‫ﺘﻪ ‪.‬‬
‫ﺒﺎر ‪Python‬ﻋﻦ ﻣﻮﺿﻊ اﻟﻌﻨﺼﺮ اﻟﻤﻄﻠﻮ ب أو ﻓﻬﺮﺳ‬
‫ﺑﺈﺧ‬‫ﺒ ﺔ ‪ ،‬ﻟﺬاﻳﻤﻜﻨﻚ اﻟﻮﺻﻮل إﱃ أي ﻋﻨﺼﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬
‫ﺗ‬‫ﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺎ ت ﻣﺮ‬
‫اﻟﻘﻮاﺋﻢ ﻋ‬

‫ﺑﻌ ﺔ‪.‬‬
‫ﺑﺄﻗﻮاس ﻣﺮ‬‫ﺑﻔﻬﺮس اﻟﻌﻨﺼﺮ اﻟﻤﺤﺎط‬‫ﺒﻮﻋً ﺎ‬
‫ﺘ‬‫ﺘ ﺐ اﺳﻢ اﻟﻘﺎﺋﻤ ﺔ ﻣ‬
‫ﻟﻠﻮﺻﻮل إﱃ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬اﻛ‬

‫ﺜﺎل ‪ ،‬دﻋﻨﺎ ﻧ ﺴﺤ ﺐ أول دراﺟ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻟﺪراﺟﺎ ت‪:‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫دراﺟﺎ ت ]'‪= ['trek'، 'cannondale'، 'redline'، 'Specialty‬‬


‫‪)u print‬دراﺟﺎ ت )]‪[0‬‬

‫ﺑﻌ ﺔ أو ﻋﻼﻣﺎ ت‬
‫ﺑﺪون أﻗﻮاس ﻣﺮ‬‫ُﺮﺟﻊ ‪ Python‬ﻫﺬا اﻟﻌﻨﺼﺮ ﻓﻘﻂ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻟﻬﺬا ﻓ ﻲ ‪u.‬ﻋﻨﺪﻣﺎ ﻧﻄﻠ ﺐ ﻋﻨﺼ ﺮًا واﺣﺪًا ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ ‪،‬ﺗ‬‫ﻳﻈﻬﺮ‬

‫ﺒﺎس‪:‬‬
‫ﺘ‬‫اﻗ‬

‫رﺣﻠ ﺔ‬

‫ﺑﺪﻗ ﺔ‪.‬‬‫ﺘﺨﺪﻣﻮن ‪-‬إﺧﺮاج ﻧﻈﻴﻒ وﻣﻨ ﺴﻖ‬


‫ﺘ ﻲﺗﺮﻳﺪ أنﻳﺮا ﻫﺎ اﻟﻤ ﺴ‬
‫ﺘﻴﺠ ﺔ اﻟ‬
‫ﻫﺬه ﻫ ﻲ اﻟﻨ‬

‫ﺗﺮﻳﻚ"‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚﺗﻨ ﺴﻴﻖ اﻟﻌﻨﺼﺮ "‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺨﺪام ﻃﺮق اﻟ ﺴﻠ ﺴﻠ ﺔ ﻣﻦ اﻟﻔﺼﻞ ‪2‬ﻋﲆ أي ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻋﲆﺳ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﺳ‬

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻟﻌﻨﻮان ‪() :‬‬


‫ﺑﺎﺳ‬‫ﺜﺮ دﻗ ﺔ‬
‫ﺑﺸﻜﻞ أﻛ‬

‫دراﺟﺎ ت ]'‪= ['trek'، 'cannondale'، 'redline'، 'Specialty‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ))( ‪[0] .title‬‬
‫ﻃ‬

‫ﺒﻴﺮة‪.‬‬
‫ﺑﺄﺣﺮف ﻛ‬
‫ﺑ ﺔ "‪"Trek‬‬
‫ﺘﺎ‬
‫ﺜﻨﺎء ﻛ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﻖ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺜﻞ اﻟﻤ‬
‫ﺜﺎل ﻧﻔ ﺲ اﻹﺧﺮاج ﻣ‬
‫ﺘﺞ ﻫﺬا اﻟﻤ‬
‫ﻳﻨ‬

‫ﺜﺎﻟ ﺚ‬
‫‪38‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺪأ ﻣﻮاﺿﻊ اﻟﻔﻬﺮس ﻣﻦ ‪0 ،‬وﻟﻴ ﺲ ‪1‬‬


‫ﺗ‬

‫ﺒﺮ ‪Python‬أن اﻟﻌﻨﺼﺮ اﻷول ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔﻳﻜﻮن ﻓ ﻲ اﻟﻤﻮﺿﻊ ‪0 ،‬وﻟﻴ ﺲ اﻟﻤﻮﺿﻊ ‪1.‬‬
‫ﺘ‬‫ﺗﻌ‬
‫ﺘﻠﻘﻰ‬
‫ﺘﻮى أدﻧﻰ‪ .‬إذا ﻛﻨ ﺖﺗ‬
‫ﺑﻜﻴﻔﻴ ﺔﺗﻨﻔﻴﺬ ﻋﻤﻠﻴﺎ ت اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ ﻣ ﺴ‬‫ﺘﻌﻠﻖ‬
‫ﺒ ﺐﻳ‬
‫ﺒﺮﻣﺠ ﺔ ‪ ،‬واﻟ ﺴ‬
‫ﺒﻖ ﻋﲆ ﻣﻌﻈﻢ ﻟﻐﺎ ت اﻟ‬
‫ﻫﺬاﻳﻨﻄ‬
‫ﺑﻌﻤﻞ واﺣﺪﺗﻠﻮ اﻵﺧﺮ‬‫ﺘﻮﻗﻌ ﺔ ‪ ،‬ﻓﺤﺪد ﻣﺎ إذا ﻛﻨ ﺖﺗﻘﻮم‬
‫ﺘﺎﺋﺞ ﻏﻴﺮ ﻣ‬
‫ﻧ‬

‫ﺧﻄﺄ‪.‬‬

‫ﺒ ﺴﻴﻂ‬
‫ﺘﺨﺪام ﻫﺬا اﻟﻌﺪ اﻟ‬
‫ﺑﺎﺳ‬
‫ﺜﺎﻧ ﻲ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ ﻓﻬﺮس ‪1.‬‬
‫ﺘﻮي اﻟﻌﻨﺼﺮ اﻟ‬
‫ﻳﺤ‬
‫ﺒﻴﻞ‬
‫اﻟﻨﻈﺎم ‪،‬ﻳﻤﻜﻨﻚ اﻟﺤﺼﻮل ﻋﲆ أي ﻋﻨﺼﺮﺗﺮﻳﺪه ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ ﻋﻦ ﻃﺮﻳﻖ ﻃﺮح ﻋﻨﺼﺮ ﻣﻦ ﻣﻮﻗﻌﻪ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺑﻊ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪،‬ﻳﻤﻜﻨﻚ ﻃﻠ ﺐ اﻟﻌﻨﺼﺮ ﻓ ﻲ اﻟﻔﻬﺮس ‪3.‬‬
‫ﺜﺎل ‪ ،‬ﻟﻠﻮﺻﻮل إﱃ اﻟﻌﻨﺼﺮ اﻟﺮا‬
‫اﻟﻤ‬

‫ﻳ ﺴﺄل ﻣﺎﻳﻠ ﻲ ﻋﻦ اﻟﺪراﺟﺎ ت ﻓ ﻲ اﻟﻔﻬﺮس ‪1‬واﻟﻔﻬﺮس ‪3:‬‬

‫دراﺟﺎ ت ]'‪= ['trek'، 'cannondale'، 'redline'، 'Specialty‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت )]‪[1‬‬
‫ﻃ‬
‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت )]‪[3‬‬
‫ﻃ‬

‫ﺑﻌ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬


‫ﺜﺎﻧﻴ ﺔ واﻟﺮا‬
‫ﺑﺈرﺟﺎع اﻟﺪراﺟﺎ ت اﻟ‬‫ﻳﻘﻮم ﻫﺬا اﻟﺮﻣﺰ‬

‫ﻛﺎﻧﻮﻧﺪﻳﻞ‬
‫ﺘﺨﺼﺺ‬
‫ﻣ‬

‫ﻟﻐ ﺔ ‪Python‬ﻟﻬﺎ ﺻﻴﻐ ﺔ ﺧﺎﺻ ﺔ ﻟﻠﻮﺻﻮل إﱃ اﻟﻌﻨﺼﺮ اﻷﺧﻴﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻋﻦ ﻃﺮﻳﻖ اﻟ ﺴﺆال‬
‫ُﺮﺟﻊ ‪Python‬دا ً‬
‫ﺋﻤﺎ اﻟﻌﻨﺼﺮ اﻷﺧﻴﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬ ‫ﺗ‬
‫ﺒ ﺔ ﻟﻠﻌﻨﺼﺮ ﻓ ﻲ اﻟﻔﻬﺮس ‪-1 ،‬‬
‫ﺑﺎﻟﻨ ﺴ‬

‫دراﺟﺎ ت ]'‪= ['trek'، 'cannondale'، 'redline'، 'Specialty‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت )]‪[-1‬‬
‫ﻃ‬

‫ﺒﺎ ﻣﺎﺗﺮﻳﺪ اﻟﻮﺻﻮل إﱃ اﻟﻌﻨﺎﺻﺮ‬


‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻫﺬا ﻣﻔﻴﺪ ﺟﺪًا ‪،‬ﻷﻧﻚ ﻏﺎﻟ ً‬‫ﺘﺨﺼﺼ ﺔ"‪.‬‬
‫ﺑﺈرﺟﺎع اﻟﻘﻴﻤ ﺔ "اﻟﻤ‬‫ﻳﻘﻮم ﻫﺬا اﻟﺮﻣﺰ‬
‫ُﺮﺟﻊ‬ ‫ﺒ ﺔ اﻷﺧﺮى أ ً‬
‫ﻳﻀﺎ‪.‬ﻳ‬ ‫ﺘﺪ ﻫﺬا اﻻﺻﻄﻼح إﱃ ﻗﻴﻢ اﻟﻔﻬﺮس اﻟ ﺴﺎﻟ‬
‫ﺒﻂ‪.‬ﻳﻤ‬
‫ﺑﺎﻟﻀ‬‫اﻷﺧﻴﺮة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ دون ﻣﻌﺮﻓ ﺔ ﻃﻮل اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺜﺎﻟ ﺚ ﻣﻦ اﻟﻨﻬﺎﻳ ﺔ ‪ ،‬و ﻫﻜﺬا دواﻟﻴﻚ‪.‬‬
‫ﺜﺎﻧ ﻲ ﻣﻦ ﻧﻬﺎﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬وﻳﻌﻴﺪ اﻟﻔﻬﺮس ‪-3‬اﻟﻌﻨﺼﺮ اﻟ‬
‫اﻟﻔﻬﺮس ‪-2‬اﻟﻌﻨﺼﺮ اﻟ‬

‫ﺘﺨﺪام اﻟﻘﻴﻢ اﻟﻔﺮدﻳ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‬


‫اﺳ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻐﻴﺮ آﺧﺮ ﻗﺎدر ﻋﲆ ذﻟﻚ‪ .‬ﻋﲆﺳ‬
‫ﺗﻤﺎﻣﺎ ﻛﻤﺎﺗﻔﻌﻞ ﻣﻊ أي ﻣ‬
‫ً‬ ‫ﺘﺨﺪام اﻟﻘﻴﻢ اﻟﻔﺮدﻳ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻗﻴﻤ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬‫ﺘ ﺴﻠ ﺴﻞ ﻹﻧﺸﺎء رﺳﺎﻟ ﺔ‬
‫ﺘﺨﺪام اﻟ‬
‫اﺳ‬

‫ﺘﺨﺪام ﻫﺬه اﻟﻘﻴﻤ ﺔ‪.‬‬


‫ﺑﺎﺳ‬‫دﻋﻨﺎ ﻧﺤﺎولﺳﺤ ﺐ أول دراﺟ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ وإﻧﺸﺎء رﺳﺎﻟ ﺔ‬

‫‪= ['trek'، 'cannondale'، 'redline'،‬‬


‫"‬
‫دراﺟﺎ ت ]'‪'Specialty‬‬
‫]‪[0‬ﻲ اﻷوﱃ ‪a‬‬
‫ﺘ‬ ‫‪.title‬‬
‫دراﺟ‬ ‫)("ﻛﺎﻧ ﺖ‬
‫‪u+‬‬ ‫دراﺟﺎ ت "‪".‬‬
‫‪message‬‬ ‫=‬ ‫‪+‬‬

‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬


‫ﻃ‬

‫ﺗﻘﺪﻳﻢ اﻟﻘﻮاﺋﻢ ‪39‬‬


‫‪Machine Translated by Google‬‬

‫ﺑ ﺴﻴﻄ ﺔ‬‫ﺒﺎرة ﻋﻦ ﺟﻤﻠ ﺔ‬


‫ﺗﺞ ﻋ‬
‫ﺘﻐﻴﺮة‪ .‬اﻟﻨﺎ‬
‫ﺘﺨﺪام اﻟﻘﻴﻤ ﺔ ]‪at bicycles [0‬وﻧﺨﺰﻧﻬﺎ ﻓ ﻲ اﻟﺮﺳﺎﻟ ﺔ اﻟﻤ‬
‫ﺑﺎﺳ‬‫ﺒﻨ ﻲ ﺟﻤﻠ ﺔ‬
‫ﻓ ﻲ ‪u ،‬ﻧ‬
‫ﺣﻮل أول دراﺟ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬

‫ﺘ ﻲ اﻷوﱃ رﺣﻠ ﺔ‪.‬‬


‫ﻛﺎﻧ ﺖ دراﺟ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬‫ﺒﺎﺷﺮة ﻣﻊ ﻗﻮاﺋﻢ‬
‫ﺑﺔ ﻣ‬
‫ﺒﺮاﻣﺞ اﻟﻘﺼﻴﺮة ﻟﻠﺤﺼﻮل ﻋﲆﺗﺠﺮ‬
‫ﺟﺮ ب ﻫﺬه اﻟ‬
‫ﺑﻘﺎﺋﻬﺎ ﻣﻨﻈﻤ ﺔ‪.‬‬
‫ﺘﻤﺎرﻳﻦ ﻛﻞ ﻓﺼﻞ ﻹ‬
‫ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ إﻧﺸﺎء ﻣﺠﻠﺪ ﺟﺪﻳﺪ ﻟ‬

‫ﺒﻊ اﺳﻢ ﻛﻞ ﺷﺨﺺ ﻣﻦ ﺧﻼل‬


‫ﺘﺨﺰﻳﻦ أﺳﻤﺎء ﻋﺪد ﻗﻠﻴﻞ ﻣﻦ أﺻﺪﻗﺎﺋﻚ ﻓ ﻲ ﻗﺎﺋﻤ ﺔﺗ ﺴﻤﻰ اﻷﺳﻤﺎء‪ .‬اﻃ‬
‫ﺑ‬‫‪3-1.‬اﻷﺳﻤﺎء‪ :‬ﻗﻢ‬
‫اﻟﻮﺻﻮل إﱃ ﻛﻞ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬واﺣﺪًاﺗﻠﻮ اﻵﺧﺮ‪.‬‬

‫ﺒﻊ‬ ‫ﺑﺪﻻ ً ﻣﻦ ﻣﺠﺮد ﻃ‬


‫ﺒﺎﻋ ﺔ اﺳﻢ ﻛﻞ ﺷﺨﺺ ‪ ،‬اﻃ‬ ‫ﺘﻤﺮﻳﻦ ‪3-1 ،‬وﻟﻜﻦ‬
‫ﺘﻬﺎ ﻓ ﻲ اﻟ‬
‫ﺘﺨﺪﻣ‬
‫ﺘ ﻲ اﺳ‬
‫ﺑﺎﻟﻘﺎﺋﻤ ﺔ اﻟ‬‫ﺑﺪأ‬
‫ﺗ ﻲ‪ :‬ا‬
‫ﺗﺤﻴﺎ‬
‫‪3-2.‬‬
‫ﺑﺎﺳﻢ اﻟﺸﺨﺺ‪.‬‬‫رﺳﺎﻟ ﺔ إﻟﻴﻪ‪.‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻧﺺ ﻛﻞ ‪ mes sage‬ﻫﻮ ﻧﻔ ﺴﻪ ‪ ،‬وﻟﻜﻦﻳﺠ ﺐﺗﺨﺼﻴﺺ ﻛﻞ رﺳﺎﻟ ﺔ‬

‫ﺘﻮي ﻋﲆ‬
‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔﺗﺤ‬‫ﺜﻞ دراﺟ ﺔ ﻧﺎرﻳ ﺔ أوﺳﻴﺎرة ‪ ،‬وﻗﻢ‬
‫ﺘﻚ اﻟﺨﺎﺻ ﺔ‪ :‬ﻓﻜﺮ ﻓ ﻲ وﺳﻴﻠ ﺔ اﻟﻨﻘﻞ اﻟﻤﻔﻀﻠ ﺔ ﻟﺪﻳﻚ ‪ ،‬ﻣ‬
‫‪3-3.‬ﻗﺎﺋﻤ‬
‫ﺘﻼك دراﺟ ﺔ‬
‫ﺜﻞ "أرﻏ ﺐ ﻓ ﻲ اﻣ‬
‫ﺒﻴﺎﻧﺎ ت ﺣﻮل ﻫﺬه اﻟﻌﻨﺎﺻﺮ ‪ ،‬ﻣ‬
‫ﺒﺎﻋ ﺔﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟ‬
‫ﺘﻚ ﻟﻄ‬
‫ﺘﺨﺪم ﻗﺎﺋﻤ‬
‫ﺜﻠ ﺔ‪ .‬اﺳ‬
‫اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﻣ‬
‫ﻧﺎرﻳ ﺔ ﻣﻦ ﻫﻮﻧﺪا"‪.‬‬

‫ﺗﻐﻴﻴﺮ وإﺿﺎﻓ ﺔ وإزاﻟ ﺔ اﻟﻌﻨﺎﺻﺮ‬


‫ﺛﻨﺎءﺗﺸﻐﻴﻞ‬
‫ﺗﺰﻳﻞ اﻟﻌﻨﺎﺻﺮ ﻣﻨﻬﺎ أ‬
‫ﺛﻢﺗﻀﻴﻒ و‬‫ﺘﻨﺸ ﺊ ﻗﺎﺋﻤ ﺔ‬
‫ﺘ ﻲﺗﻨﺸﺌﻬﺎ دﻳﻨﺎﻣﻴﻜﻴ ﺔ ‪ ،‬ﻣﻤﺎﻳﻌﻨ ﻲ أﻧﻚﺳ‬
‫ﺘﻜﻮن ﻣﻌﻈﻢ اﻟﻘﻮاﺋﻢ اﻟ‬
‫ﺳ‬
‫ﺘﻌﻴﻦ ﻋﲆ اﻟﻼﻋ ﺐ ﻓﻴﻬﺎ إﻃﻼق اﻟﻨﺎر ﻋﲆ ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ ﻣﻦ‬
‫ﺒ ﺔﻳ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ إﻧﺸﺎء ﻟﻌ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒﺮﻧﺎﻣﺞ ﻓ ﻲ ﻣ ﺴﺎره‪ .‬ﻋﲆﺳ‬
‫اﻟ‬
‫ﺘﻢ ﻓﻴﻬﺎ‬
‫ﺛﻢ إزاﻟ ﺔ ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ ﻓ ﻲ ﻛﻞ ﻣﺮةﻳ‬‫اﻟ ﺴﻤﺎء‪.‬ﻳﻤﻜﻨﻚﺗﺨﺰﻳﻦ اﻟﻤﺠﻤﻮﻋ ﺔ اﻷوﻟﻴ ﺔ ﻣﻦ اﻷﺟﺎﻧ ﺐ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﻨﺨﻔﺾ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﻪ إﱃ اﻟﻘﺎﺋﻤ ﺔ‪.‬ﺳ‬
‫ﺑﺈﺿﺎﻓ‬‫إﺳﻘﺎط أﺣﺪ ﻫﻢ‪ .‬ﻓ ﻲ ﻛﻞ ﻣﺮةﻳﻈﻬﺮ ﻓﻴﻬﺎ ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ ﺟﺪﻳﺪ ﻋﲆ اﻟﺸﺎﺷ ﺔ ‪،‬ﺗﻘﻮم‬
‫ﺒ ﺔ‪.‬‬
‫ﺘﺮة اﻟﻠﻌ‬
‫ﺑﻚ وﻳﺰداد ﻃﻮﻟﻬﺎ ﻃﻮال ﻓ‬‫اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬

‫ﺗﻌﺪﻳﻞ اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬


‫ﺘﺨﺪم‬
‫ﺘﻐﻴﻴﺮ ﻋﻨﺼﺮ ‪ ،‬اﺳ‬
‫ﺑﺎﻟﻮﺻﻮل إﱃ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻟ‬‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ اﻟﺨﺎص‬‫ﺘﻌﺪﻳﻞ ﻋﻨﺼﺮ ﻣﺎ‬
‫ﺑ‬‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ اﻟﺨﺎص‬‫ﺒﻪ‬
‫ﻳﺸ‬
‫ﺘﻮي ﻋﻠﻴﻬﺎ ﻫﺬا اﻟﻌﻨﺼﺮ‪.‬‬
‫ﺘ ﻲﺗﺮﻳﺪ أنﻳﺤ‬
‫ﺘﻮﻓﻴﺮ اﻟﻘﻴﻤ ﺔ اﻟﺠﺪﻳﺪة اﻟ‬
‫ﺑ‬‫ﺛﻢ ﻗﻢ‬‫ﺑﻔﻬﺮس اﻟﻌﻨﺼﺮ اﻟﺬيﺗﺮﻳﺪﺗﻐﻴﻴﺮه ‪،‬‬‫ﺒﻮﻋً ﺎ‬
‫ﺘ‬‫اﺳﻢ اﻟﻘﺎﺋﻤ ﺔ ﻣ‬

‫‪40‬اﻟﻔﺼﻞ ‪3‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺎﻟﺪراﺟﺎ ت اﻟﻨﺎرﻳ ﺔ واﻟﻌﻨﺼﺮ اﻷول ﻓ ﻲ‬‫ﺘﺮض أن ﻟﺪﻳﻨﺎ ﻗﺎﺋﻤ ﺔ‬


‫ﺜﺎل ‪ ،‬ﻟﻨﻔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫اﻟﻘﺎﺋﻤ ﺔ " ﻫﻮﻧﺪا"‪ .‬ﻛﻴﻒ ﻧﻐﻴﺮ ﻗﻴﻤ ﺔ ﻫﺬا اﻟﻌﻨﺼﺮ اﻷول؟‬

‫]'‪motorcycles.py u motorcycles = ['honda'، 'yamaha'، 'suzuki‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬
‫ﻃ‬

‫ﺗ ﻲ"‬
‫‪v‬دراﺟﺎ ت ﻧﺎرﻳ ﺔ = ]‪"[0‬دوﻛﺎ‬
‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬
‫ﻃ‬

‫ﺑﺤﻴ ﺚﺗﻜﻮن "‪ "honda‬ﻫ ﻲ اﻟﻌﻨﺼﺮ اﻷول‪.‬‬‫ّ ف اﻟﺮﻣﺰ اﻟﻤﻮﺟﻮد ﻓ ﻲ ‪u‬اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ ‪،‬‬
‫ُﻌ ﺮ‬
‫ﻳ‬
‫ﺑﻘ ﻲ‬
‫ﺑﺎﻟﻔﻌﻞ ‪ ،‬و‬‫ﺗﺞ أن اﻟﻌﻨﺼﺮ اﻷول ﻗﺪﺗﻢﺗﻐﻴﻴﺮه‬
‫ُﻈﻬﺮ اﻟﻨﺎ‬
‫ﻳﻐﻴﺮ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓ ﻲ ‪v‬ﻗﻴﻤ ﺔ اﻟﻌﻨﺼﺮ اﻷول إﱃ ‪"ducati".‬ﻳ‬
‫ﺑﺎﻗ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻛﻤﺎ ﻫﻮ‪:‬‬

‫]"‪["honda"، "yamaha"، "suzuki‬‬


‫ﺗ ﻲ" ‪" ،‬ﻳﺎﻣﺎ ﻫﺎ" ‪" ،‬ﺳﻮزوﻛ ﻲ"[‬
‫]"دوﻛﺎ‬

‫ﻳﻤﻜﻨﻚﺗﻐﻴﻴﺮ ﻗﻴﻤ ﺔ أي ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬وﻟﻴ ﺲ اﻟﻌﻨﺼﺮ اﻷول ﻓﻘﻂ‪.‬‬

‫إﺿﺎﻓ ﺔ ﻋﻨﺎﺻﺮ إﱃ ﻗﺎﺋﻤ ﺔ‬


‫ﺜﺎل ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ إﻇﻬﺎر ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ ﺟﺪﻳﺪة‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒﺎ ب ﻋﺪﻳﺪة‪ .‬ﻋﲆﺳ‬
‫ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ إﺿﺎﻓ ﺔ ﻋﻨﺼﺮ ﺟﺪﻳﺪ إﱃ ﻗﺎﺋﻤ ﺔﻷﺳ‬
‫ﺘﺨﺪﻣﻴﻦ ﻣ ﺴﺠﻠﻴﻦ ﺟﺪد إﱃ ﻣﻮﻗﻊ وﻳ ﺐ ﻗﻤ ﺖ‬
‫ﺘﺼﻮرا ت ‪ ،‬أو إﺿﺎﻓ ﺔ ﻣ ﺴ‬
‫ﺑﻴﺎﻧﺎ ت ﺟﺪﻳﺪة إﱃ أﺣﺪ اﻟ‬‫ﺒ ﺔ ﻣﺎ ‪ ،‬أو إﺿﺎﻓ ﺔ‬
‫ﻓ ﻲ ﻟﻌ‬
‫ﺑﻴﺎﻧﺎ ت ﺟﺪﻳﺪة إﱃ اﻟﻘﻮاﺋﻢ اﻟﺤﺎﻟﻴ ﺔ‪.‬‬‫ﺑﺈﻧﺸﺎﺋﻪ‪.‬ﺗﻮﻓﺮ ‪Python‬ﻋﺪة ﻃﺮق ﻹﺿﺎﻓ ﺔ‬

‫ﺑﻨﻬﺎﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ‬‫إﻟﺤﺎق اﻟﻌﻨﺎﺻﺮ‬

‫ﺑﻘﺎﺋﻤ ﺔ ‪ ،‬ﻓﺈن اﻟﻌﻨﺼﺮ‬‫ﺑﺈﻟﺤﺎق ﻋﻨﺼﺮ‬‫ﺑﺎﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻋﻨﺪﻣﺎﺗﻘﻮم‬‫ﺑ ﺴﻂ ﻃﺮﻳﻘ ﺔ ﻹﺿﺎﻓ ﺔ ﻋﻨﺼﺮ ﺟﺪﻳﺪ إﱃ اﻟﻘﺎﺋﻤ ﺔ ﻫ ﻲ إﻟﺤﺎق اﻟﻌﻨﺼﺮ‬
‫إن أ‬
‫ﺑﻖ ‪،‬ﺳﻨﻀﻴﻒ اﻟﻌﻨﺼﺮ اﻟﺠﺪﻳﺪ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺘ ﻲ ﻛﺎﻧ ﺖ ﻟﺪﻳﻨﺎ ﻓ ﻲ اﻟﻤ‬
‫ﺘﺨﺪام ﻧﻔ ﺲ اﻟﻘﺎﺋﻤ ﺔ اﻟ‬
‫ﺑﺎﺳ‬‫اﻟﺠﺪﻳﺪﻳﻀﺎف إﱃ ﻧﻬﺎﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬
‫ﺗ ﻲ" إﱃ ﻧﻬﺎﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬
‫"دوﻛﺎ‬

‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]'‪= ['honda'، 'yamaha'، 'suzuki‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬
‫ﻃ‬

‫)"‪u motorcycles.append ("ducati‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬
‫ﻃ‬

‫ﺑﺪوﻧﻬﺎ‬‫ﺗﻀﻴﻒ ﻃﺮﻳﻘ ﺔ )( ‪append‬ﻓ ﻲ "‪u "ducati‬إﱃ ﻧﻬﺎﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ‬


‫ﺛﺮ ﻋﲆ أي ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻷﺧﺮى ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬
‫ﺗﺆ‬

‫]"‪["honda"، "yamaha"، "suzuki‬‬


‫]'‪['honda'، 'yamaha'، 'suzuki'، 'ducati‬‬

‫ﺗﻘﺪﻳﻢ اﻟﻘﻮاﺋﻢ ‪41‬‬


‫‪Machine Translated by Google‬‬

‫ﺛﻢ إﺿﺎﻓ ﺔ‬‫ﺑﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ‬‫ﺒﺪء‬


‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺗ ﺴﻬﻞ ﻃﺮﻳﻘ ﺔ )( ‪append‬إﻧﺸﺎء اﻟﻘﻮاﺋﻢ دﻳﻨﺎﻣﻴﻜ ًﻴﺎ ‪ .‬ﻋﲆﺳ‬
‫ﺘﺨﺪام اﻟﻘﺎﺋﻤ ﺔ اﻟﻔﺎرﻏ ﺔ ‪ ،‬دﻋﻨﺎ ﻧﻀﻴﻒ "‪"honda‬و‬
‫ﺑﺎﺳ‬
‫ﺒﺎرا ت اﻹﻟﺤﺎق ‪() .‬‬
‫ﺘﺨﺪامﺳﻠ ﺴﻠ ﺔ ﻣﻦ ﻋ‬
‫ﺑﺎﺳ‬‫ﻋﻨﺎﺻﺮ إﱃ اﻟﻘﺎﺋﻤ ﺔ‬
‫"‪"yamaha‬و "‪"suzuki‬إﱃ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬

‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ ][ =‬

‫)'‪motorcycles.append ('suzuki‬‬
‫)'‪motorcycles.append ('yamaha‬‬
‫)'‪motorcycles.append ('honda‬‬

‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬


‫ﻃ‬

‫ﺑﻘ ﺔ‪:‬‬
‫ﺜﻠ ﺔ اﻟ ﺴﺎ‬
‫ﺗﻤﺎﻣﺎ ﻟﻠﻘﻮاﺋﻢ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻷﻣ‬
‫ً‬ ‫ﺛﻠ ﺔ‬
‫ﺗﺠ ﺔ ﻣﻤﺎ‬
‫ﺒﺪو اﻟﻘﺎﺋﻤ ﺔ اﻟﻨﺎ‬
‫ﺗ‬

‫]"‪["honda"، "yamaha"، "suzuki‬‬

‫ﺘﺨﺪﻣﻮن‬
‫ﺘ ﻲﻳﺮﻳﺪ اﻟﻤ ﺴ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ﻟﻦﺗﻌﺮف اﻟ‬
‫ﺑﻬﺬه اﻟﻄﺮﻳﻘ ﺔ ﺷﺎﺋﻌ ﺔ ﺟﺪًا ‪،‬ﻷﻧﻚ ﻓ ﻲ ﻛ‬‫ﺒﻨﺎء‬
‫ﺗﻌﺪ ﻗﻮاﺋﻢ اﻟ‬
‫ﺘﻔﻆ‬
‫ﺘﺤ‬‫ﺘﺤﺪﻳﺪ ﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔﺳ‬
‫ﺑ‬‫ﺑﺪأ‬
‫ﺘﺨﺪﻣﻴﻦ ﻟﺪﻳﻚﺗﺤ ﺖ اﻟ ﺴﻴﻄﺮة ‪ ،‬ا‬
‫ﺒﺮﻧﺎﻣﺞ‪ .‬ﻟﺠﻌﻞ اﻟﻤ ﺴ‬
‫ﺑﻌﺪﺗﺸﻐﻴﻞ اﻟ‬‫ﺑﺮﻧﺎﻣﺞ إﻻ‬‫ﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ‬
‫ﺘﻮ‪.‬‬
‫ﺗﻬﺎ ﻟﻠ‬
‫ﺘ ﻲ أﻧﺸﺄ‬
‫ﺑﺎﻟﻘﺎﺋﻤ ﺔ اﻟ‬‫ﺑﺈﻟﺤﺎق ﻛﻞ ﻗﻴﻤ ﺔ ﺟﺪﻳﺪة ﻣﻘﺪﻣ ﺔ‬‫ﺛﻢ ﻗﻢ‬‫ﺘﺨﺪﻣﻴﻦ‪.‬‬
‫ﺑﻘﻴﻢ اﻟﻤ ﺴ‬

‫إدراج اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬

‫ﺘﺨﺪام إدراج )(‬


‫ﺑﺎﺳ‬‫ﺘﻚ‬
‫ﻳﻤﻜﻨﻚ إﺿﺎﻓ ﺔ ﻋﻨﺼﺮ ﺟﺪﻳﺪ ﻓ ﻲ أي ﻣﻮﺿﻊ ﻓ ﻲ ﻗﺎﺋﻤ‬
‫ﺑﺬﻟﻚ ﻋﻦ ﻃﺮﻳﻖﺗﺤﺪﻳﺪ ﻓﻬﺮس اﻟﻌﻨﺼﺮ اﻟﺠﺪﻳﺪ وﻗﻴﻤ ﺔ اﻟﻌﻨﺼﺮ اﻟﺠﺪﻳﺪ‪.‬‬‫ﻃﺮﻳﻘ ﺔ‪.‬ﻳﻤﻜﻨﻚ اﻟﻘﻴﺎم‬

‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]'‪= ['honda'، 'yamaha'، 'suzuki‬‬

‫)"‪u motorcycles.insert (0، "ducati‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬
‫ﻃ‬

‫ﺘﺢ ﻃﺮﻳﻘ ﺔ )( ‪insert‬‬


‫ﺑﺪاﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ‪.‬ﺗﻔ‬‫ﺑﺈدراج اﻟﻘﻴﻤ ﺔ "‪"ducati‬ﻓ ﻲ‬
‫ﺜﺎل ‪،‬ﻳﻘﻮم اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓ ﻲ ‪u‬‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺗﺨﺰن اﻟﻘﻴﻤ ﺔ "‪"ducati‬ﻓ ﻲ ذﻟﻚ اﻟﻤﻮﻗﻊ‪.‬ﺗﻨﻘﻞ ﻫﺬه اﻟﻌﻤﻠﻴ ﺔ ﻛﻞ ﻗﻴﻤ ﺔ أﺧﺮى ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻣﻮﺿﻌً ﺎ‬
‫ﻣ ﺴﺎﻓ ﺔ ﻓ ﻲ اﻟﻤﻮﺿﻊ ‪0‬و‬
‫واﺣﺪًا إﱃ اﻟﻴﻤﻴﻦ‪:‬‬

‫]'‪['ducati'، 'honda'، 'yamaha'، 'suzuki‬‬

‫إزاﻟ ﺔ اﻟﻌﻨﺎﺻﺮ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‬


‫ﺜﺎل ‪ ،‬ﻋﻨﺪﻣﺎﻳﻘﻮم أﺣﺪ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲ إزاﻟ ﺔ ﻋﻨﺼﺮ أو ﻣﺠﻤﻮﻋ ﺔ ﻋﻨﺎﺻﺮ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ‪،‬ﺳ‬
‫ﻓ ﻲﻛ‬
‫ﺘﻪ ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟﻜﺎﺋﻨﺎ ت‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲ إزاﻟ‬
‫ﺑﺈﻃﻼق اﻟﻨﺎر ﻋﲆ ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ ﻣﻦ اﻟ ﺴﻤﺎء ‪ ،‬ﻓﺈﻧﻚ ﻋﲆ اﻷرﺟﺢﺳ‬‫ﺒﻴﻦ‬
‫اﻟﻼﻋ‬
‫ﺘﺨﺪم‬
‫اﻟﻔﻀﺎﺋﻴ ﺔ اﻟﻨﺸﻄ ﺔ‪ .‬أو ﻋﻨﺪﻣﺎﻳﻜﻮن اﻟﻤ ﺴ‬

‫‪42‬اﻟﻔﺼﻞ ‪3‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪﻣﻴﻦ اﻟﻨﺸﻄﻴﻦ‪.‬‬
‫ﺘﺨﺪم ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬
‫ﺘﺎج إﱃ إزاﻟ ﺔ ﻫﺬا اﻟﻤ ﺴ‬
‫ﺘﺤ‬‫ﺑﺈﻧﺸﺎﺋﻪ ‪ ،‬ﻓ ﺴ‬ ‫ﺒﻴﻖ وﻳ ﺐ ﻗﻤ ﺖ‬ ‫ﺑﻪ ﻋﲆﺗﻄ‬ ‫ﻗﺮر إﻟﻐﺎء ﺣ ﺴﺎ‬
‫ﻳﻤﻜﻨﻚ إزاﻟ ﺔ ﻋﻨﺼﺮ وﻓ ًﻘﺎ ﻟﻤﻮﻗﻌﻪ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ أو وﻓ ًﻘﺎ ﻟﻘﻴﻤ‬
‫ﺘﻪ‪.‬‬

‫ﺑﻴﺎن ‪del‬‬‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫إزاﻟ ﺔ ﻋﻨﺼﺮ‬

‫ﺒﺎرة ‪del .‬‬


‫ﺘﺨﺪام ﻋ‬
‫ﺘﻪ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬ﻓﻴﻤﻜﻨﻚ اﺳ‬
‫إذا ﻛﻨ ﺖﺗﻌﺮف ﻣﻮﺿﻊ اﻟﻌﻨﺼﺮ اﻟﺬيﺗﺮﻳﺪ إزاﻟ‬

‫ﺒﺎﻋ ﺔ ]'‪)'honda'، 'yamaha'، 'suzuki‬دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬


‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ =ﻃ‬

‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬


‫‪u del‬دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]‪[0‬ﻃ‬

‫ﺘﺨﺪم اﻟﻜﻮد ﻓ ﻲ ‪u del‬ﻹزاﻟ ﺔ اﻟﻌﻨﺼﺮ اﻷول ‪"honda" ، ،‬ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟﺪراﺟﺎ ت اﻟﻨﺎرﻳ ﺔ‪:‬‬
‫ﻳﺴ‬

‫]"‪["honda"، "yamaha"، "suzuki‬‬


‫]'‪['yamaha'، 'suzuki‬‬

‫ﺒﻴﻞ‬
‫ﺘﺨﺪام ﻋﻼﻣ ﺔ ‪del state‬إذا ﻛﻨ ﺖﺗﻌﺮف ﻓﻬﺮﺳﻬﺎ‪ .‬ﻋﲆﺳ‬
‫ﺑﺎﺳ‬‫ﻳﻤﻜﻨﻚ إزاﻟ ﺔ ﻋﻨﺼﺮ ﻣﻦ أي ﻣﻮﺿﻊ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬
‫ﺜﺎﻧ ﻲ ‪"yamaha" ، ،‬ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬
‫ﺜﺎل ‪ ،‬إﻟﻴﻚ ﻛﻴﻔﻴ ﺔ إزاﻟ ﺔ اﻟﻌﻨﺼﺮ اﻟ‬
‫اﻟﻤ‬

‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]'‪= ['honda'، 'yamaha'، 'suzuki‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬
‫ﻃ‬

‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬


‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]‪del [1‬ﻃ‬

‫ﺜﺎﻧﻴ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬


‫ﺗﻢ ﺣﺬف اﻟﺪراﺟ ﺔ اﻟﻨﺎرﻳ ﺔ اﻟ‬

‫]"‪["honda"، "yamaha"، "suzuki‬‬


‫]'‪['honda'، 'suzuki‬‬

‫ﺒﺎرة ‪del .‬‬


‫ﺘﺨﺪام ﻋ‬
‫ﺑﻌﺪ اﺳ‬‫ﺘﻬﺎ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺘ ﻲﺗﻤ ﺖ إزاﻟ‬
‫ﺑﺈﻣﻜﺎﻧﻚ اﻟﻮﺻﻮل إﱃ اﻟﻘﻴﻤ ﺔ اﻟ‬‫ﺜﺎﻟﻴﻦ ‪ ،‬ﻟﻢﻳﻌﺪ‬
‫ﻓ ﻲ ﻛﻼ اﻟﻤ‬

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪pop‬‬


‫ﺑﺎﺳ‬‫إزاﻟ ﺔ ﻋﻨﺼﺮ‬

‫ﺜﺎل ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ اﻟﺤﺼﻮل ﻋﲆ ﻣﻮﻗﻊ ‪x‬و‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻪ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺑﻌﺪ إزاﻟ‬ ‫ﺘﺎج أﺣﻴﺎﻧًﺎ إﱃ اﺳ‬
‫ﺘﺨﺪام ﻗﻴﻤ ﺔ ﻋﻨﺼﺮ‬ ‫ﺘﺤ‬‫ﺳ‬
‫ﺒﻴﻖ وﻳ ﺐ ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ إزاﻟ ﺔ‬
‫ﺘﻤﻜﻦ ﻣﻦ رﺳﻢ اﻧﻔﺠﺎر ﻓ ﻲ ﻫﺬا اﻟﻤﻮﺿﻊ‪ .‬ﻓ ﻲﺗﻄ‬
‫ﺘﻰﺗ‬
‫ﺘﻮ ‪ ،‬ﺣ‬
‫‪y‬ﻟﻜﺎﺋﻦ ﻓﻀﺎﺋ ﻲﺗﻢ إﺳﻘﺎﻃﻪ ﻟﻠ‬
‫ﺘﺨﺪم إﱃ ﻗﺎﺋﻤ ﺔ اﻷﻋﻀﺎء ﻏﻴﺮ اﻟﻨﺸﻄﻴﻦ‪.‬‬
‫ﺛﻢ إﺿﺎﻓ ﺔ ﻫﺬا اﻟﻤ ﺴ‬‫ﺘﺨﺪم ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻷﻋﻀﺎء اﻟﻨﺸﻄﻴﻦ‬
‫ﻣﺴ‬

‫ﺗ ﻲ اﻟﻤﺼﻄﻠﺢ‬
‫ﺘﻪ‪.‬ﻳﺄ‬
‫ﺑﻌﺪ إزاﻟ‬‫ﺘﻴﺢ ﻟﻚ اﻟﻌﻤﻞ ﻣﻊ ﻫﺬا اﻟﻌﻨﺼﺮ‬
‫ﺗﺰﻳﻞ ﻃﺮﻳﻘ ﺔ )( ‪pop‬اﻟﻌﻨﺼﺮ اﻷﺧﻴﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬وﻟﻜﻨﻬﺎﺗ‬
‫ﺘﻔﻜﻴﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ أﻧﻬﺎ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ وإﺧﺮاج ﻋﻨﺼﺮ واﺣﺪ ﻣﻦ أﻋﲆ اﻟﻤﻜﺪس‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻘﻴﺎس ‪،‬‬
‫ﻓﺮﻗﻌ ﺔ ﻣﻦ اﻟ‬
‫ﺘﻮاﻓﻖ اﻟﺠﺰء اﻟﻌﻠﻮي ﻣﻦ اﻟﻤﻜﺪس ﻣﻊ ﻧﻬﺎﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬
‫ﻳ‬

‫ﺗﻘﺪﻳﻢ اﻟﻘﻮاﺋﻢ ‪43‬‬


‫‪Machine Translated by Google‬‬

‫دﻋﻨﺎ ﻧﺨﺮج دراﺟ ﺔ ﻧﺎرﻳ ﺔ ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟﺪراﺟﺎ ت اﻟﻨﺎرﻳ ﺔ‪:‬‬

‫‪u‬دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]'‪= ['honda'، 'yamaha'، 'suzuki‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬
‫ﻃ‬

‫ﺒﺎﻋ ﺔ‬
‫)( ‪ v popped_motorcycle = motorcycles.pop‬ث اﻟﻄ‬
‫)اﻟﺪراﺟﺎ ت اﻟﻨﺎرﻳ ﺔ(‬
‫ﺒﺎﻋ ﺔ )‪(popped_motorcycle‬‬
‫‪x‬ﻃ‬

‫ﺒﺎﻋ ﺔ ﻗﺎﺋﻤ ﺔ اﻟﺪراﺟﺎ ت اﻟﻨﺎرﻳ ﺔ ﻓ ﻲ ‪u.‬ﻓ ﻲ ‪v‬ﻧﺤﻦ ﻓﺮﻗﻌ ﺔ‬


‫ﺘﺤﺪﻳﺪ وﻃ‬
‫ﺑ‬‫ﺒﺪأ‬
‫ﻧ‬
‫ﺘﻐﻴﺮ ‪popped_motorcycle.‬‬
‫ﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ اﻟﻤ‬
‫ﻗﻴﻤ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ و‬
‫ﺒﺎﻋ ﺔ اﻟﻘﺎﺋﻤ ﺔ ﻓ ﻲ ‪w‬ﻹﻇﻬﺎر أﻧﻪﺗﻤ ﺖ إزاﻟ ﺔ ﻗﻴﻤ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬
‫ﺑﻄ‬‫ﻧﻘﻮم‬
‫ﺘﻬﺎ‪.‬‬
‫ﺘ ﻲﺗﻤ ﺖ إزاﻟ‬
‫ﺒﺎ ت أﻧﻪ ﻻﻳﺰال ﻟﺪﻳﻨﺎ وﺻﻮل إﱃ اﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﺛ‬‫ﺜﻘ ﺔ ﻋﻨﺪ ‪x‬ﻹ‬
‫ﺒ‬‫ﺒﻊ اﻟﻘﻴﻤ ﺔ اﻟﻤﻨ‬
‫ﺛﻢ ﻧﻄ‬

‫ﺘﻐﻴﺮ‬
‫ﺘﻢﺗﺨﺰﻳﻨﻬﺎ اﻵن ﻓ ﻲ اﻟﻤ‬
‫ﻳﻮﺿﺢ اﻹﺧﺮاج أﻧﻪﺗﻤ ﺖ إزاﻟ ﺔ ﻗﻴﻤ ﺔ "ﺳﻮزوﻛ ﻲ" ﻣﻦ ﻧﻬﺎﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ وﻳ‬
‫‪popped_motorcycle:‬‬

‫]'‪['honda'، 'yamaha'، 'suzuki'] ['honda'، 'yamaha‬‬

‫ﺳﻮزوﻛ ﻲ‬

‫ﺗﻴ ﺐ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﻛﻴﻒﻳﻤﻜﻦ أنﺗﻜﻮن ﻃﺮﻳﻘ ﺔ )( ‪ pop‬ﻫﺬه ﻣﻔﻴﺪة؟ﺗﺨﻴﻞ أن اﻟﺪراﺟﺎ ت اﻟﻨﺎرﻳ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻣﺨﺰﻧ ﺔ‬
‫ﺑﻴﺎن ﺣﻮل آﺧﺮ دراﺟ ﺔ‬‫ﺒﺎﻋ ﺔ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪pop‬ﻟﻄ‬
‫ﺘﻼﻛﻨﺎ ﻟﻬﺎ‪ .‬إذا ﻛﺎﻧ ﺖ ﻫﺬه ﻫ ﻲ اﻟﺤﺎﻟ ﺔ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎ اﺳ‬ ‫اﻟﺰﻣﻨ ﻲ وﻓ ًﻘﺎ ﻟ‬
‫ﺘﺎرﻳﺦ اﻣ‬
‫ﺘﺮﻳﻨﺎ ﻫﺎ‪:‬‬
‫ﻧﺎرﻳ ﺔ اﺷ‬

‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]'‪= ['honda'، 'yamaha'، 'suzuki‬‬

‫ﺘﻬﺎ ﻛﺎﻧ ﺖ ‪a‬‬


‫ﺘﻠﻜ‬
‫‪")last_own = motorcycles.pop () print‬آﺧﺮ دراﺟ ﺔ ﻧﺎرﻳ ﺔ اﻣ‬
‫"‬
‫‪+‬اﻟﻌﻨﻮان اﻷﺧﻴﺮ )"‪() + ".‬‬

‫ﺘﻠﻜﻨﺎ ﻫﺎ‪:‬‬
‫ﺑ ﺴﻴﻄ ﺔ ﺣﻮل أﺣﺪ ث دراﺟ ﺔ ﻧﺎرﻳ ﺔ اﻣ‬‫ﺒﺎرة ﻋﻦ ﺟﻤﻠ ﺔ‬
‫ﺗﺞ ﻋ‬
‫اﻟﻨﺎ‬

‫ﺘﻬﺎ ﻛﺎﻧ ﺖﺳﻮزوﻛ ﻲ‪.‬‬


‫ﺘﻠﻜ‬
‫آﺧﺮ دراﺟ ﺔ ﻧﺎرﻳ ﺔ اﻣ‬

‫ﺗﻔﺮﻗﻊ اﻟﻌﻨﺎﺻﺮ ﻣﻦ أي ﻣﺮﻛﺰ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬

‫ﺘﺨﺪام )( ‪pop‬ﻹزاﻟ ﺔ ﻋﻨﺼﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ﻓ ﻲ أي ﻣﻮﺿﻊ ﻋﻦ ﻃﺮﻳﻖﺗﻀﻤﻴﻦ ﻓﻬﺮس اﻟﻌﻨﺼﺮ اﻟﺬيﺗﺮﻳﺪ‬


‫ﺑﺎﻟﻔﻌﻞ اﺳ‬‫ﻳﻤﻜﻨﻚ‬
‫ﺑﻴﻦ ﻗﻮﺳﻴﻦ‪.‬‬‫ﺘﻪ‬
‫إزاﻟ‬

‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]'‪= ['honda'، 'yamaha'، 'suzuki‬‬

‫)‪u first_ Owned = motorcycles.pop (0‬‬


‫"‬
‫ﺘﻬﺎ ﻛﺎﻧ ﺖ ‪a‬‬
‫ﺘﻠﻜ‬
‫‪')v print‬أول دراﺟ ﺔ ﻧﺎرﻳ ﺔ اﻣ‬ ‫‪+‬اﻟﻌﻨﻮان اﻷول )"‪() + ".‬‬

‫‪44‬اﻟﻔﺼﻞ ‪3‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎرة‬
‫ﺒﻊ رﺳﺎﻟ ﺔ ﺣﻮلﺗﻠﻚ اﻟﺪراﺟ ﺔ اﻟﻨﺎرﻳ ﺔ ﻓ ﻲ ‪v.‬اﻹﺧﺮاج ﻋ‬
‫ﺛﻢ ﻧﻄ‬
‫ﺒﺪأ ﻣﻦ ﺧﻼل ﻇﻬﻮر أول دراﺟ ﺔ ﻧﺎرﻳ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻓ ﻲ ‪u ،‬‬
‫ﻧ‬
‫ﺘﻬﺎ ﻋﲆ اﻹﻃﻼق‪:‬‬
‫ﺘﻠﻜ‬
‫ﺑ ﺴﻴﻄ ﺔﺗﺼﻒ أول دراﺟ ﺔ ﻧﺎرﻳ ﺔ اﻣ‬‫ﻋﻦ ﺟﻤﻠ ﺔ‬

‫ﺘﻬﺎ ﻛﺎﻧ ﺖ ﻫﻮﻧﺪا‪.‬‬


‫ﺘﻠﻜ‬
‫أول دراﺟ ﺔ ﻧﺎرﻳ ﺔ اﻣ‬

‫ﺘﻢﺗﺨﺰﻳﻦ اﻟﻌﻨﺼﺮ اﻟﺬيﺗﻌﻤﻞ ﻣﻌﻪ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬


‫ﺘﺨﺪم ﻓﻴﻬﺎ ‪pop () ،‬ﻟﻦﻳ‬
‫ﺗﺬﻛﺮ أﻧﻪ ﻓ ﻲ ﻛﻞ ﻣﺮةﺗ ﺴ‬

‫ﺗﺨﺎذ اﻟﻘﺮار‪ :‬ﻋﻨﺪﻣﺎﺗﺮﻳﺪ ﺣﺬف‬


‫ﺑ ﺴﻴﻄ ﺔ ﻻ‬‫ﺘﺨﺪام ﺟﻤﻠ ﺔ ‪del‬أو ﻃﺮﻳﻘ ﺔ ‪pop () ،‬ﻓﺈﻟﻴﻚ ﻃﺮﻳﻘ ﺔ‬
‫ﺘﺄﻛﺪًا ﻣﻦ اﺳ‬
‫إذا ﻟﻢﺗﻜﻦ ﻣ‬
‫ﺘﺨﺪام ﻋﻨﺼﺮ‬
‫ﺒﺎرة ؛ ‪del‬إذا ﻛﻨ ﺖﺗﺮﻳﺪ اﺳ‬
‫ﺘﺨﺪم ﻋ‬
‫ﺑﺄي ﺷﻜﻞ ﻣﻦ اﻷﺷﻜﺎل ‪ ،‬اﺳ‬‫ﺘﺨﺪام ﻫﺬا اﻟﻌﻨﺼﺮ‬
‫ﻋﻨﺼﺮ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ وﻋﺪم اﺳ‬
‫ﺘﺨﺪم ﻃﺮﻳﻘ ﺔ ‪pop () .‬‬
‫ﺘﻪ ‪ ،‬ﻓﺎﺳ‬
‫ﺛﻨﺎء إزاﻟ‬
‫أ‬

‫ﺑﺎﻟﻘﻴﻤ ﺔ‬‫إزاﻟ ﺔ ﻋﻨﺼﺮ‬

‫ﺘﻪ ‪،‬‬
‫ﺘﻬﺎ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪ .‬إذا ﻛﻨ ﺖﺗﻌﺮف ﻓﻘﻂ ﻗﻴﻤ ﺔ اﻟﻌﻨﺼﺮ اﻟﺬيﺗﺮﻳﺪ إزاﻟ‬
‫ﺘ ﻲﺗﺮﻳﺪ إزاﻟ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن ﻟﻦﺗﻌﺮف ﻣﻮﺿﻊ اﻟﻘﻴﻤ ﺔ اﻟ‬‫ﻓﻲ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻹزاﻟ ﺔ ‪() .‬‬
‫ﻳﻤﻜﻨﻚ اﺳ‬

‫ﺗ ﻲ" ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟﺪراﺟﺎ ت اﻟﻨﺎرﻳ ﺔ‪.‬‬


‫ﺘﺮض أﻧﻨﺎ ﻧﺮﻳﺪ إزاﻟ ﺔ اﻟﻘﻴﻤ ﺔ "دوﻛﺎ‬
‫ﺜﺎل ‪ ،‬ﻟﻨﻔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ )‪= ['honda'، 'yamaha'، 'suzuki'، 'ducati'] print (motorcycles‬‬

‫)'‪u Motorcycles.remove ('ducati‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬
‫ﻃ‬

‫ﺑﻤﻌﺮﻓ ﺔ ﻣﻜﺎن ﻇﻬﻮر "‪"ducati‬ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ وإزاﻟ ﺔ ﻫﺬا اﻟﻌﻨﺼﺮ‪:‬‬


‫ﺒﺮ اﻟﻜﻮد ﻓ ﻲ ‪u Python‬‬
‫ﻳﺨ‬

‫]'‪['honda'، 'yamaha'، 'suzuki'، 'ducati'] ['honda'، 'yamaha'، 'suzuki‬‬

‫ﺒﻊ‬
‫ﺗ ﻲ" وﻧﻄ‬
‫ﺘﻬﺎ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻟﻨﺤﺬف اﻟﻘﻴﻤ ﺔ "دوﻛﺎ‬
‫ﺘﻢ إزاﻟ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪remove‬ﻟﻠﻌﻤﻞ ﻣﻊ ﻗﻴﻤ ﺔﺗ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﺳ‬
‫ﺘﻬﺎ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬
‫ﺒﺎ ﻹزاﻟ‬
‫ﺒً‬
‫ﺳ‬

‫‪u‬دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]'‪= ['honda'، 'yamaha'، 'suzuki'، 'ducati‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬
‫ﻃ‬

‫'‪v too_expensive = 'ducati‬‬


‫‪w‬إزاﻟ ﺔ اﻟﺪراﺟﺎ ت اﻟﻨﺎرﻳ ﺔ )ﺟﺪا_رﺧﻴﺼ ﺔ(‬
‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ(‬ ‫ﻃ‬
‫"‬
‫‪x print‬‬
‫\"( ﻲ‪") .‬‬
‫ﺒﺔ ﻟ‬
‫"‪nA‬‬
‫ﺑﺎﻟﻨ ﺴ‬
‫‪too_expensive.title‬ﺔ ‪+‬‬
‫ﻣﻜﻠﻒ ﻟﻠﻐﺎﻳ‬ ‫‪() +‬‬

‫ﺘﺨﺪم ﻫﺬا‬
‫ﺛﻢ ﻧ ﺴ‬
‫ﺘﻐﻴﺮﻳ ﺴﻤﻰ ‪too_expensive v.‬‬
‫ﺘﺨﺰﻳﻦ اﻟﻘﻴﻤ ﺔ "‪"ducati‬ﻓ ﻲ ﻣ‬
‫ﺑ‬‫ﺑﻌﺪﺗﺤﺪﻳﺪ اﻟﻘﺎﺋﻤ ﺔ ﻓ ﻲ ‪u ،‬ﻧﻘﻮم‬
‫ﺑﺎﻟﻘﻴﻤ ﺔ‬
‫ﺒﺎر ‪Python‬‬
‫ﺘﻐﻴﺮ ﻹﺧ‬
‫اﻟﻤ‬

‫ﺗﻘﺪﻳﻢ اﻟﻘﻮاﺋﻢ ‪45‬‬


‫‪Machine Translated by Google‬‬

‫ﺘﻐﻴﺮ أ ً‬
‫ﻳﻀﺎ_ رﺧﻴﺼ ﺔ ‪،‬‬ ‫ﺗﻤ ﺖ إزاﻟ ﺔ اﻟﻘﻴﻤ ﺔ "‪"ducati‬ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ وﻟﻜﻨﻬﺎ ﻻﺗﺰال ﻣﺨﺰﻧ ﺔ ﻓ ﻲ اﻟﻤ‬
‫ﻟﻺزاﻟ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ ﻓ ﻲ ‪w.‬ﻓ ﻲ ‪x ،‬‬

‫ﺒ ﺐ ﺣﺬﻓﻨﺎ ﻟـ "‪"ducati‬ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟﺪراﺟﺎ ت اﻟﻨﺎرﻳ ﺔ‪:‬‬


‫ﺑﻴﺎن ﺣﻮلﺳ‬‫ﺒﺎﻋ ﺔ‬
‫ﺑﻄ‬‫ﻣﻤﺎﻳ ﺴﻤﺢ ﻟﻨﺎ‬

‫]'‪'suzuki'، 'ducati'] ['honda'، 'yamaha'، 'suzuki‬‬


‫‪['honda'، 'yamaha'،‬‬

‫ﺒ ﺔ ﻟ ﻲ‪.‬‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺜﻤﻦ‬
‫ﺑﺎ ﻫﻈ ﺔ اﻟ‬‫ﺗﻲ‬
‫دوﻛﺎ‬

‫ﺜﺮ ﻣﻦ ﻣﺮة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪،‬‬


‫ﺘﻤﺎل أنﺗﻈﻬﺮ اﻟﻘﻴﻤ ﺔ أﻛ‬
‫ﺘ ﻲﺗﺤﺪد ﻫﺎ ﻓﻘﻂ‪ .‬إذا ﻛﺎن ﻫﻨﺎك اﺣ‬
‫ﺘﻮاﺟﺪ اﻷول ﻟﻠﻘﻴﻤ ﺔ اﻟ‬
‫ﻻﺗﺤﺬف ﻃﺮﻳﻘ ﺔ اﻹزاﻟ ﺔ )(اﻟ‬
‫ﺑﺬﻟﻚ ﻓ ﻲ اﻟﻔﺼﻞ ‪7.‬‬‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ اﻟﻘﻴﺎم‬
‫ﺘ‬‫ﺘﻬﺎ‪.‬ﺳ‬
‫ﺘﺤﺪﻳﺪ ﻣﺎ إذا ﻛﺎﻧ ﺖ ﺟﻤﻴﻊﺗﻜﺮارا ت اﻟﻘﻴﻤ ﺔ ﻗﺪﺗﻤ ﺖ إزاﻟ‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ﻟ‬
‫ﺘﺎج إﱃ اﺳ‬
‫ﺘﺤ‬‫ﻓﺴ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺜﺮﺗﻌﻘﻴﺪًا ﻗﻠﻴ ﻼ ً ﻣﻦﺗﻠﻚ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻔﺼﻞ اﻟ‬


‫ﺜﺎﻧ ﻲ ‪ ،‬وﻟﻜﻨﻬﺎﺗﻤﻨﺤﻚ ﻓﺮﺻ ﺔ‬ ‫ﺘﺎﻟﻴ ﺔ أﻛ‬
‫ﺒﺎ ت اﻟ‬
‫ﺘﺪرﻳ‬
‫ﺒﺮ اﻟ‬
‫ﺘ‬‫ﺗﻌ‬
‫ﺑﺠﻤﻴﻊ اﻟﻄﺮق اﻟﻤﻮﺿﺤ ﺔ‪.‬‬‫ﺘﺨﺪام اﻟﻘﻮاﺋﻢ‬
‫ﻻﺳ‬

‫ﺘﻨﺎول اﻟﻌﺸﺎء ‪ ،‬ﻓﻤﻦ‬


‫ﺘﻮﻓﻰ ‪ ،‬ﻟ‬
‫ﺑﺈﻣﻜﺎﻧﻚ دﻋﻮة أي ﺷﺨﺺ ‪ ،‬ﻋﲆ ﻗﻴﺪ اﻟﺤﻴﺎة أو ﻣ‬‫‪3-4.‬ﻗﺎﺋﻤ ﺔ اﻟﻀﻴﻮف‪ :‬إذا ﻛﺎن‬
‫ﺘﺨﺪم‬
‫ﺛﻢ اﺳ‬‫ﺘﻨﺎول اﻟﻌﺸﺎء‪.‬‬
‫ﺗﻬﻢ ﻟ‬
‫ﺛ ﺔ أﺷﺨﺎص ﻋﲆ اﻷﻗﻞﺗﺮﻏ ﺐ ﻓ ﻲ دﻋﻮ‬
‫ﺛﻼ‬‫ﺘﻀﻤﻦ‬
‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔﺗ‬‫ﺘﺪﻋﻮه؟ ﻗﻢ‬
‫ﺳ‬
‫ﺘﻨﺎول اﻟﻌﺸﺎء‪.‬‬
‫ﺗﻬﻢ ﻟ‬
‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔ ﻟﻜﻞ ﺷﺨﺺ ‪ ،‬ودﻋﻮ‬
‫ﺘﻚ ﻟﻄ‬
‫ﻗﺎﺋﻤ‬

‫ﺘﻮ أن أﺣﺪ ﺿﻴﻮﻓﻚ ﻻﻳﻤﻜﻨﻪ إﻋﺪاد اﻟﻌﺸﺎء ‪ ،‬ﻟﺬﻟﻚ ﻋﻠﻴﻚ إرﺳﺎل‬


‫ﺗﻐﻴﻴﺮ ﻗﺎﺋﻤ ﺔ اﻟﻀﻴﻮف‪ :‬ﻟﻘﺪﺳﻤﻌ ﺖ ﻟﻠ‬
‫‪3-5.‬‬
‫ﺗﻪ‪.‬‬
‫ﺘﻔﻜﻴﺮ ﻓ ﻲ ﺷﺨﺺ آﺧﺮ ﻟﺪﻋﻮ‬
‫ﻣﺠﻤﻮﻋ ﺔ ﺟﺪﻳﺪة ﻣﻦ اﻟﺪﻋﻮا ت‪.‬ﺳﻴﻜﻮن ﻋﻠﻴﻚ اﻟ‬

‫ﺒﺮﻧﺎﻣﺞﻳﻮﺿﺢ اﺳﻢ اﻟﻀﻴﻒ اﻟﺬي ﻻﻳﻤﻜﻨﻪ‬


‫ﺒﺎﻋ ﺔ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟ‬
‫ﺑﻴﺎن ﻃ‬‫ﺘﻤﺮﻳﻦ ‪3-4.‬أﺿﻒ‬
‫ﺒﺮﻧﺎﻣﺠﻚ ﻣﻦ اﻟ‬
‫ﺑ‬‫ﺑﺪأ‬
‫•ا‬
‫اﻟﺤﻀﻮر‪.‬‬

‫ﺑﺎﺳﻢ اﻟﺸﺨﺺ اﻟﺠﺪﻳﺪ اﻟﺬيﺗﻘﻮم‬‫ﺘﻄﻴﻊ اﻟﺤﻀﻮر‬


‫ﺒﺪل اﺳﻢ اﻟﻀﻴﻒ اﻟﺬي ﻻﻳ ﺴ‬
‫ﺘ‬‫ﺘﻚ ‪ ،‬واﺳ‬
‫ﺘﻌﺪﻳﻞ ﻗﺎﺋﻤ‬
‫ﺑ‬‫•ﻗﻢ‬
‫ﺗﻪ‪.‬‬
‫ﺑﺪﻋﻮ‬

‫ﺛﺎﻧﻴ ﺔ ﻣﻦ رﺳﺎﺋﻞ اﻟﺪﻋﻮة ‪ ،‬واﺣﺪة ﻟﻜﻞ ﺷﺨﺺ ﻻﻳﺰال‬‫ﺒﻊ ﻣﺠﻤﻮﻋ ﺔ‬


‫•اﻃ‬
‫ﺘﻚ‪.‬‬
‫ﻓ ﻲ ﻗﺎﺋﻤ‬

‫ﺛﺔ‬
‫ﺛﻼ‬‫ﺒﺮ‪ .‬ﻓﻜﺮ ﻓ ﻲ‬
‫ﺘﻮﻓﺮ اﻵن ﻣ ﺴﺎﺣ ﺔ أﻛ‬
‫ﺒﺮ ‪ ،‬ﻟﺬاﺗ‬
‫ﺘﻮ ﻃﺎوﻟ ﺔ ﻋﺸﺎء أﻛ‬
‫‪3-6.‬اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻀﻴﻮف‪ :‬ﻟﻘﺪ وﺟﺪ ت ﻟﻠ‬
‫ﺘﻨﺎول اﻟﻌﺸﺎء‪.‬‬
‫ﺗﻬﻢ ﻟ‬
‫ﺿﻴﻮف آﺧﺮﻳﻦ ﻟﺪﻋﻮ‬

‫ﺒﻮﻋ ﺔ‬
‫ﺘﻤﺮﻳﻦ ‪3-5.‬أﺿﻒ ﻧ ﺴﺨ ﺔ ﻣﻄ‬
‫ﺘﻤﺮﻳﻦ ‪3-4‬أو اﻟ‬
‫ﺒﺮﻧﺎﻣﺠﻚ ﻣﻦ اﻟ‬
‫ﺑ‬‫ﺑﺪأ‬
‫•ا‬
‫ﺒﺮ‪.‬‬
‫ﺑﺄﻧﻚ وﺟﺪ ت ﻃﺎوﻟ ﺔ ﻋﺸﺎء أﻛ‬‫ﺑﺮﻧﺎﻣﺠﻚ ﻹﻋﻼم اﻟﻨﺎس‬‫ﺑﻴﺎن ﻓ ﻲ ﻧﻬﺎﻳ ﺔ‬

‫ﺘﻚ‪.‬‬
‫ﺑﺪاﻳ ﺔ ﻗﺎﺋﻤ‬‫ﺘﺨﺪم إدراج )(ﻹﺿﺎﻓ ﺔ ﺿﻴﻒ ﺟﺪﻳﺪ إﱃ‬
‫•اﺳ‬

‫ﺘﻚ‪.‬‬
‫ﺘﺼﻒ ﻗﺎﺋﻤ‬
‫ﺘﺨﺪم إدراج )(ﻹﺿﺎﻓ ﺔ ﺿﻴﻒ ﺟﺪﻳﺪ واﺣﺪ ﻓ ﻲ ﻣﻨ‬
‫•اﺳ‬

‫ﺘﻚ‪.‬‬
‫ﺘﺨﺪم )( ‪append‬ﻹﺿﺎﻓ ﺔ ﺿﻴﻒ ﺟﺪﻳﺪ إﱃ ﻧﻬﺎﻳ ﺔ ﻗﺎﺋﻤ‬
‫•اﺳ‬

‫ﺘﻚ‪.‬‬
‫ﺒﻊ ﻣﺠﻤﻮﻋ ﺔ ﺟﺪﻳﺪة ﻣﻦ رﺳﺎﺋﻞ اﻟﺪﻋﻮة ‪ ،‬واﺣﺪة ﻟﻜﻞ ﺷﺨﺺ ﻓ ﻲ ﻗﺎﺋﻤ‬
‫•اﻃ‬

‫‪46‬اﻟﻔﺼﻞ ‪3‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮ أن ﻣﺎﺋﺪة اﻟﻌﺸﺎء اﻟﺠﺪﻳﺪة ﻟﻦﺗﺼﻞ ﻓ ﻲ اﻟﻮﻗ ﺖ اﻟﻤﻨﺎﺳ ﺐ‬


‫ﺘﺸﻔ ﺖ ﻟﻠ‬
‫ﺗﻘﻠﺺ ﻗﺎﺋﻤ ﺔ اﻟﻀﻴﻮف‪ :‬ﻟﻘﺪ اﻛ‬
‫‪3-7.‬‬
‫ﺘﻨﺎول اﻟﻌﺸﺎء ‪ ،‬وﻟﺪﻳﻚ ﻣ ﺴﺎﺣ ﺔ ﻟﻀﻴﻔﻴﻦ ﻓﻘﻂ‪.‬‬
‫ﻟ‬

‫ﺑﺄﻧﻪﻳﻤﻜﻨﻚ دﻋﻮة ﺷﺨﺼﻴﻦ ﻓﻘﻂ‬‫ﺒﻊ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬


‫ﺘﻤﺮﻳﻦ ‪3-6.‬أﺿﻒﺳﻄ ﺮًا ﺟﺪﻳﺪًاﻳﻄ‬
‫ﺒﺮﻧﺎﻣﺠﻚ ﻣﻦ اﻟ‬
‫ﺑ‬‫ﺑﺪأ‬
‫•ا‬
‫ﺘﻨﺎول اﻟﻌﺸﺎء‪.‬‬
‫ﻟ‬

‫ﺛﻨﻴﻦ ﻓﻘﻂ‬
‫ﺘﻰ ا‬
‫ﺘﻚ واﺣﺪًاﺗﻠﻮ اﻵﺧﺮ ﺣ‬
‫ﺘﺨﺪم )( ‪pop‬ﻹزاﻟ ﺔ اﻟﻀﻴﻮف ﻣﻦ ﻗﺎﺋﻤ‬
‫•اﺳ‬
‫ﺒﻊ رﺳﺎﻟ ﺔ إﱃ ﻫﺬا اﻟﺸﺨﺺ‬
‫ﺘﻚ ‪ ،‬اﻃ‬
‫ﺳﻤﺎ ﻣﻦ ﻗﺎﺋﻤ‬
‫ﺒﺮز ﻓﻴﻬﺎ ا ً‬
‫ﺘﻚ‪ .‬ﻓ ﻲ ﻛﻞ ﻣﺮةﺗ‬
‫ﺒﻘﻰ اﻷﺳﻤﺎء ﻓ ﻲ ﻗﺎﺋﻤ‬
‫ﺗ‬
‫ﺘﻨﺎول اﻟﻌﺸﺎء‪.‬‬
‫ﺗﻪ ﻟ‬
‫ﺒﺎره أﻧﻚ آﺳﻒ ﻟﻌﺪمﺗﻤﻜﻨﻚ ﻣﻦ دﻋﻮ‬
‫ﻹﺧ‬

‫ﺘﻚ ‪ ،‬ﻹﻋﻼﻣﻬﻤﺎ أﻧﻬﻤﺎ ﻣﺎ زاﻻ ﻣﺪﻋﻮﻳﻦ‪.‬‬


‫ﺒﻊ رﺳﺎﻟ ﺔ إﱃ ﻛﻞ ﻣﻦ اﻟﺸﺨﺼﻴﻦ اﻟﻠﺬﻳﻦ ﻻﻳﺰاﻻن ﻋﲆ ﻗﺎﺋﻤ‬
‫•اﻃ‬

‫ﺘﺄﻛﺪ ﻣﻦ أن ﻟﺪﻳﻚ‬
‫ﺘﻚ ﻟﻠ‬
‫ﺒﻊ ﻗﺎﺋﻤ‬
‫ﺑﺤﻴ ﺚﻳﻜﻮن ﻟﺪﻳﻚ ﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ‪ .‬اﻃ‬‫ﺘﻚ ‪،‬‬
‫ﺘﺨﺪم ‪del‬ﻹزاﻟ ﺔ آﺧﺮ اﺳﻤﻴﻦ ﻣﻦ ﻗﺎﺋﻤ‬
‫•اﺳ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺑﺎﻟﻔﻌﻞ ﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟ‬

‫ﺗﻨﻈﻴﻢ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﺨﺪﻣﻮن‬
‫ﺑﻪ اﻟﻤ ﺴ‬‫ﺗﻴ ﺐ اﻟﺬيﻳﻘﺪم‬
‫ﺘﺮ‬‫ﺘﺤﻜﻢ ﻓ ﻲ اﻟ‬
‫ﺋﻤﺎ اﻟ‬
‫ﺘﻮﻗﻊ ‪،‬ﻷﻧﻪ ﻻﻳﻤﻜﻨﻚ دا ً‬
‫ﺗﻴ ﺐ ﻏﻴﺮ ﻣ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺘﻢ إﻧﺸﺎء ﻗﻮاﺋﻤﻚ‬
‫ﺒﺎ ﻣﺎﻳ‬
‫ﻏﺎﻟ ً‬
‫ﺗﻴ ﺐ ﻣﻌﻴﻦ‪.‬‬
‫ﺘﺮ‬‫ﺑ‬‫ﺗﻚ‬
‫ﺒﺎ ﻣﺎﺗﺮﻏ ﺐ ﻓ ﻲﺗﻘﺪﻳﻢ ﻣﻌﻠﻮﻣﺎ‬
‫ﺗﻬﻢ‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻫﺬا أﻣﺮ ﻻ ﻣﻔﺮ ﻣﻨﻪ ﻓ ﻲ ﻣﻌﻈﻢ اﻟﻈﺮوف ‪ ،‬ﻓﻐﺎﻟ ً‬
‫ﺑﻴﺎﻧﺎ‬
‫ﺗﻴ ﺐ‬
‫ﺘﺮ‬‫ﺘﺮﻏ ﺐ ﻓ ﻲﺗﻐﻴﻴﺮ اﻟ‬
‫ﺘﻚ ‪ ،‬وﻓ ﻲ أﺣﻴﺎن أﺧﺮىﺳ‬
‫ﺗﻴ ﺐ اﻷﺻﻠ ﻲ ﻟﻘﺎﺋﻤ‬
‫ﺘﺮ‬‫ﺘﺮﻏ ﺐ ﻓ ﻲ اﻟﺤﻔﺎظ ﻋﲆ اﻟ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﺳ‬‫ﻓﻲ‬
‫ﺘﻤﺎدًا ﻋﲆ اﻟﻤﻮﻗﻒ‪.‬‬
‫ﺘﻨﻈﻴﻢ ﻗﻮاﺋﻤﻚ ‪ ،‬اﻋ‬
‫ﺘﻠﻔ ﺔ ﻟ‬
‫اﻷﺻﻠ ﻲ‪.‬ﺗﻮﻓﺮ ‪Python‬ﻋﺪدًا ﻣﻦ اﻟﻄﺮق اﻟﻤﺨ‬

‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻟﻔﺮز )(‬


‫ﺑﺎﺳ‬‫ﺑﺸﻜﻞ داﺋﻢ‬‫ﻓﺮز ﻗﺎﺋﻤ ﺔ‬
‫ﺗﻴ ﺐ‬
‫ﺑﺎﻟ ﺴﻴﺎرا ت وﻧﺮﻳﺪﺗﻐﻴﻴﺮﺗﺮ‬‫ﺒ ًﻴﺎ ﻓﺮز اﻟﻘﺎﺋﻤ ﺔ‪.‬ﺗﺨﻴﻞ أن ﻟﺪﻳﻨﺎ ﻗﺎﺋﻤ ﺔ‬
‫ﺗﺠﻌﻞ ﻃﺮﻳﻘ ﺔ اﻟﻔﺮز )(ﻓ ﻲ ‪Python‬ﻣﻦ اﻟ ﺴﻬﻞ ﻧ ﺴ‬
‫ﺘﺮض أن ﺟﻤﻴﻊ اﻟﻘﻴﻢ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﺻﻐﻴﺮة‪.‬‬
‫ﺒ ﺴﻴﻂ اﻟﻤﻬﻤ ﺔ ‪ ،‬دﻋﻨﺎ ﻧﻔ‬
‫ﺘ‬‫ﺑﺠﺪﻳًﺎ‪ .‬ﻟ‬
‫ﺘﺨﺰﻳﻨﻬﺎ أ‬
‫اﻟﻘﺎﺋﻤ ﺔ ﻟ‬

‫ﺳﻴﺎرا ت‬ ‫ﺳﻴﺎرا ت ]'‪= ['bmw'، 'audi'، 'toyota'، 'subaru‬‬


‫)( ‪u cars.sort‬‬
‫ﺒﺎﻋ ﺔ )ﺳﻴﺎرا ت(‬
‫ﻃ‬

‫ﺑﺪًا‬
‫ﺑﺠﺪﻳًﺎ ‪ ،‬وﻻﻳﻤﻜﻨﻨﺎ أ‬
‫ﺒﺔ أ‬
‫ﺗ‬‫ﺑﺸﻜﻞ داﺋﻢ‪ .‬اﻟ ﺴﻴﺎرا ت اﻵن ﻣﺮ‬‫ﺗﻴ ﺐ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺗﻐﻴﺮﺗﺮ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻔﺮز ‪() ،‬اﻟﻤﻮﺿﺤ ﺔ ﻓ ﻲ ‪u ،‬‬
‫ﺗﻴ ﺐ اﻷﺻﻠ ﻲ‪:‬‬
‫ﺘﺮ‬‫اﻟﻌﻮدة إﱃ اﻟ‬

‫]'‪['audi'، 'bmw'، 'subaru'، 'toyota‬‬

‫ﺗﻘﺪﻳﻢ اﻟﻘﻮاﺋﻢ ‪47‬‬


‫‪Machine Translated by Google‬‬

‫ﺑﺠﺪي ﻋﻜ ﺴ ﻲ ﻋﻦ ﻃﺮﻳﻖﺗﻤﺮﻳﺮ اﻟﻮﺳﻴﻄ ﺔ ‪reverse = True‬إﱃ ﻃﺮﻳﻘ ﺔ‬


‫ﺗﻴ ﺐ أ‬
‫ﺘﺮ‬‫ﺑ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ ﻓﺮز ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺑﺠﺪي ﻋﻜ ﺴ ﻲ‪:‬‬
‫ﺗﻴ ﺐ أ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺘﺎﻟ ﻲ ﻗﺎﺋﻤ ﺔ اﻟ ﺴﻴﺎرا ت‬
‫ﺜﺎل اﻟ‬
‫اﻟﻔﺮز ‪() .‬ﻳﻔﺮز اﻟﻤ‬

‫ﺳﻴﺎرا ت ]'‪= ['bmw'، 'audi'، 'toyota'، 'subaru‬‬


‫‪)cars.sort‬ﻋﻜ ﺴ ﻲ = ﺻﺤﻴﺢ(‬
‫ﺒﺎﻋ ﺔ )ﺳﻴﺎرا ت(‬
‫ﻃ‬

‫ﺑﺸﻜﻞ داﺋﻢ‪:‬‬‫ﺗﻴ ﺐ اﻟﻘﺎﺋﻤ ﺔ‬


‫ﻣﺮة أﺧﺮى ‪،‬ﺗﻢﺗﻐﻴﻴﺮﺗﺮ‬

‫ﺑﺎرو" ‪""bmw" ، ،‬أودي"[‬


‫ﺗﺎ" ‪" ،‬ﺳﻮ‬
‫ﺗﻮﻳﻮ‬
‫]"‬

‫ﺘﺨﺪام اﻟﻮﻇﻴﻔ ﺔ )(‬


‫ﺑﺎﺳ‬‫ﺘًﺎ‬
‫ﻓﺮز ﻗﺎﺋﻤ ﺔ ﻣﺆﻗ‬
‫ﺘﻴﺢ ﻟﻚ اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺗ‬‫ﺘﺨﺪام اﻟﺪاﻟ ﺔ ‪Sorted () .‬‬
‫ﺗ ﺐ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺗﻴ ﺐ ﻣﺮ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺗﻴ ﺐ اﻷﺻﻠ ﻲ ﻟﻘﺎﺋﻤ ﺔ ﻣﺎ ﻣﻊﺗﻘﺪﻳﻤﻬﺎ‬
‫ﺘﺮ‬‫ﻟﻠﺤﻔﺎظ ﻋﲆ اﻟ‬
‫ﺗﻴ ﺐ اﻟﻔﻌﻠ ﻲ ﻟﻠﻘﺎﺋﻤ ﺔ‪.‬‬
‫ﺘﺮ‬‫ﺛﺮ ﻋﲆ اﻟ‬
‫ﺗﻴ ﺐ ﻣﻌﻴﻦ وﻟﻜﻨﻬﺎ ﻻﺗﺆ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺘﻚ‬
‫)( ‪Sorted‬ﻋﺮض ﻗﺎﺋﻤ‬

‫ﻟﻨﺠﺮ ب ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻟ ﺴﻴﺎرا ت‪.‬‬

‫ﺳﻴﺎرا ت ]'‪= ['bmw'، 'audi'، 'toyota'، 'subaru‬‬

‫‪ ")u print‬ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ‪(":‬‬


‫ﺒﺎﻋ ﺔ )ﺳﻴﺎرا ت(‬
‫ﻃ‬

‫ﺘ ﻲﺗﻢ ﻓﺮز ﻫﺎ‪(":‬‬


‫ﺒﺎﻋ ﺔ ‪ ("\ n‬ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ اﻟ‬
‫‪v‬ﻃ‬
‫ﺒ ﺔ )ﺳﻴﺎرا ت((‬
‫ﺗ‬‫ﺒﺎﻋ ﺔ )ﻣﺮ‬
‫ﻃ‬

‫‪ w print ("\ n‬ﻫﺎ ﻫ ﻲ اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ ﻣﺮة أﺧﺮى‪(":‬‬


‫ﺒﺎﻋ ﺔ )ﺳﻴﺎرا ت(‬
‫ﻃ‬

‫ﺗﻴ ﺐ اﻟﺠﺪﻳﺪ ‪ ،‬ﻧﻈﻬﺮ أن‬


‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺑﻌﺪ ﻋﺮض اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺑﺠﺪي ﻓ ﻲ ‪v.‬‬
‫ﺗﻴ ﺐ اﻷ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺛﻢ‬
‫ﺒﻬﺎ اﻷﺻﻠ ﻲ ﻓ ﻲ ‪u‬‬
‫ﺗﻴ‬‫ﺘﺮ‬
‫ﺑ‬‫ﺒﻊ اﻟﻘﺎﺋﻤ ﺔ أوﻻ ً‬
‫ﻧﻄ‬
‫ﺒﻬﺎ اﻷﺻﻠ ﻲ ﻓ ﻲ ‪w.‬‬
‫ﺗﻴ‬‫ﺘﺮ‬
‫ﺑ‬‫اﻟﻘﺎﺋﻤ ﺔ ﻻﺗﺰال ﻣﺨﺰﻧ ﺔ‬

‫ﻫﺎ ﻫ ﻲ اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ‪'audi'، 'toyota'، 'subaru'] :‬‬


‫‪['bmw'،‬‬

‫ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ اﻟﻤﺼﻨﻔ ﺔ‪'bmw'، 'subaru'، 'toyota'] :‬‬


‫‪['audi'،‬‬

‫‪ x‬ﻫﺎ ﻫ ﻲ اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ ﻣﺮة أﺧﺮى‪:‬‬


‫]'‪['bmw'، 'audi'، 'toyota'، 'subaru‬‬

‫ﺑﻌﺪ اﻟﻔﺮز )(‬


‫ﺒﻬﺎ اﻷﺻﻠ ﻲ ﻋﻨﺪ ‪x‬‬
‫ﺗﻴ‬‫ﺘﺮ‬
‫ﺑ‬‫ﻻﺣﻆ أن اﻟﻘﺎﺋﻤ ﺔ ﻻﺗﺰال ﻣﻮﺟﻮدة‬
‫ﺒﻞ اﻟﺪاﻟ ﺔ )( ‪Sorted‬أ ً‬
‫ﻳﻀﺎ اﻟﻌﻜ ﺲ ‪= True‬‬ ‫ﺘﺨﺪام اﻟﻮﻇﻴﻔ ﺔ‪.‬ﻳﻤﻜﻦ أنﺗﻘ‬
‫ﺗﻢ اﺳ‬
‫ﺑﺠﺪي ﻋﻜ ﺴ ﻲ‪.‬‬
‫ﺗﻴ ﺐ أ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺣﺠ ﺔ إذا ﻛﻨ ﺖﺗﺮﻳﺪ ﻋﺮض ﻗﺎﺋﻤ ﺔ‬

‫ﺜﺎﻟ ﺚ‬
‫‪48‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴﺮة ﻋﻨﺪﻣﺎ‬
‫ﺘﻔ ﺴﻴﺮ اﻷﺣﺮف اﻟﻜ‬
‫ﺑﺄﺣﺮف ﺻﻐﻴﺮة‪ .‬ﻫﻨﺎك ﻋﺪة ﻃﺮق ﻟ‬‫ﺑﻌﺾ اﻟﺸ ﻲء ﻋﻨﺪﻣﺎ ﻻﺗﻜﻮن ﺟﻤﻴﻊ اﻟﻘﻴﻢ‬‫ﺜﺮﺗﻌﻘﻴﺪًا‬
‫ﺑﺠﺪﻳًﺎ أﻛ‬
‫ﻳﻌﺪ ﻓﺮز اﻟﻘﺎﺋﻤ ﺔ أ‬
‫ﺘﻌﺎﻣﻞ ﻣﻌﻪ ﻓ ﻲ ﻫﺬا اﻟﻮﻗ ﺖ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﺈن ﻣﻌﻈﻢ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا ﻣﻤﺎ ﻧﺮﻳﺪ اﻟ‬
‫ﺗﻴ ﺐ اﻟﺪﻗﻴﻖ أﻛ‬
‫ﺘﺮ‬‫ﺗﻴ ﺐ اﻟﻔﺮز ‪ ،‬وﻳﻤﻜﻦ أنﻳﻜﻮنﺗﺤﺪﻳﺪ اﻟ‬
‫ﺗﻘﺮرﺗﺮ‬
‫ﺘﻪ ﻓ ﻲ ﻫﺬا اﻟﻘ ﺴﻢ‪.‬‬
‫ﺒﺎﺷﺮ ﻋﲆ ﻣﺎﺗﻌﻠﻤ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺒﻨ ﻲ‬
‫ﺘ‬‫أﺳﺎﻟﻴ ﺐ اﻟﻔﺮزﺳ‬

‫ﺗﻴ ﺐ ﻋﻜ ﺴ ﻲ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺒﺎﻋ ﺔ ﻗﺎﺋﻤ ﺔ‬
‫ﻃ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ ‪reverse () .‬‬
‫ﺗﻴ ﺐ اﻷﺻﻠ ﻲ ﻟﻠﻘﺎﺋﻤ ﺔ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﺮ‬‫ﻟﻌﻜ ﺲ اﻟ‬
‫ﺗﻴ ﺐ اﻟﻘﺎﺋﻤ ﺔ إﱃ‬
‫ﺑ ﺴﻬﻮﻟ ﺔ إﻋﺎدةﺗﺮ‬‫ﺘﻼﻛﻬﺎ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎ‬ ‫ﺗﻴ ﺐ زﻣﻨ ﻲ وﻓ ًﻘﺎ ﻟ‬
‫ﺘﺎرﻳﺦ اﻣ‬ ‫ﺘﺮ‬‫ﺑ‬‫ﺘﺨﺰﻳﻦ ﻗﺎﺋﻤ ﺔ اﻟ ﺴﻴﺎرا ت ﻓ ﻲ اﻷﺻﻞ‬
‫ﺑ‬‫إذا ﻗﻤﻨﺎ‬
‫ﺗﻴ ﺐ زﻣﻨ ﻲ ﻋﻜ ﺴ ﻲ‪:‬‬
‫ﺗﺮ‬

‫ﺳﻴﺎرا ت ]'‪= ['bmw'، 'audi'، 'toyota'، 'subaru‬‬


‫ﺒﺎﻋ ﺔ )ﺳﻴﺎرا ت(‬
‫ﻃ‬

‫اﻟ ﺴﻴﺎرا ت‪ .‬اﻟﻌﻜ ﺲ )(‬


‫ﺒﺎﻋ ﺔ )ﺳﻴﺎرا ت(‬
‫ﻃ‬

‫ﺗﻴ ﺐ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬


‫ﺒ ﺴﺎﻃ ﺔﻳﻌﻜ ﺲﺗﺮ‬
‫ﺑ‬‫ﺑﺠﺪﻳًﺎ ؛ إﻧﻪ‬
‫ﻻﺣﻆ أن اﻟﻌﻜ ﺲ )(ﻻﻳﻔﺮز إﱃ اﻟﻮراء أ‬

‫]'‪['bmw'، 'audi'، 'toyota'، 'subaru'] ['subaru'، 'toyota'، 'audi'، 'bmw‬‬

‫ﺗﻴ ﺐ اﻷﺻﻠ ﻲ ﻓ ﻲ أي‬


‫ﺘﺮ‬‫ﺑﺸﻜﻞ داﺋﻢ ‪ ،‬وﻟﻜﻦﻳﻤﻜﻨﻚ اﻟﻌﻮدة إﱃ اﻟ‬‫ﺗﻴ ﺐ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺗﻌﻤﻞ اﻟﻄﺮﻳﻘ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ )(ﻋﲆﺗﻐﻴﻴﺮﺗﺮ‬
‫ﺛﺎﻧﻴ ﺔ‪.‬‬‫ﺒﻴﻖ ﻋﻜ ﺲ )(ﻋﲆ ﻧﻔ ﺲ اﻟﻘﺎﺋﻤ ﺔ ﻣﺮة‬
‫وﻗ ﺖ ﻋﻦ ﻃﺮﻳﻖﺗﻄ‬

‫إﻳﺠﺎد ﻃﻮل اﻟﻘﺎﺋﻤ ﺔ‬


‫ﺑﻌ ﺔ ﻋﻨﺎﺻﺮ ‪ ،‬ﻟﺬا‬
‫ﺜﺎل ﻋﲆ أر‬
‫ﺘﻮي اﻟﻘﺎﺋﻤ ﺔ ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺗﺤ‬‫ﺘﺨﺪام وﻇﻴﻔ ﺔ ‪len () .‬‬
‫ﺑﺎﺳ‬‫ﺑ ﺴﺮﻋ ﺔ ﻋﲆ ﻃﻮل اﻟﻘﺎﺋﻤ ﺔ‬‫ﺜﻮر‬
‫ﻳﻤﻜﻨﻚ اﻟﻌ‬
‫ﺒﻠﻎ ﻃﻮﻟﻬﺎ ‪4:‬‬
‫ﻳ‬

‫>>>ﺳﻴﺎرا ت ]'‪= ['bmw'، 'audi'، 'toyota'، 'subaru‬‬


‫>>>ﻟﻴﻦ )ﺳﻴﺎرا ت(‬
‫‪4‬‬

‫ﺘﺎج إﱃﺗﺤﺪﻳﺪ ﻋﺪد اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ‬


‫ﺘﺠﺪ )( ‪len‬ﻣﻔﻴﺪًا ﻋﻨﺪﻣﺎﺗﺤ‬
‫ﺳ‬
‫ﺘﺼﻮر ‪،‬‬
‫ﺗﻬﺎ ﻓ ﻲ اﻟ‬
‫ﺘ ﻲﻳﺠ ﺐ ﻋﻠﻴﻚ إدار‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺑﺤﺎﺟ ﺔ إﱃ إﺳﻘﺎﻃﻬﺎ ﻓ ﻲ إﺣﺪى اﻷﻟﻌﺎ ب ‪ ،‬أوﺗﺤﺪﻳﺪ ﻣﻘﺪار اﻟ‬‫ﺘ ﻲ ﻻﺗﺰال‬
‫اﻟ‬
‫ﺑﻴﻦ ﻣﻬﺎم أﺧﺮى‪.‬‬‫ﺘﺨﺪﻣﻴﻦ اﻟﻤ ﺴﺠﻠﻴﻦ ﻋﲆ ﻣﻮﻗﻊ وﻳ ﺐ ‪ ،‬ﻣﻦ‬
‫أو ﻣﻌﺮﻓ ﺔ ﻋﺪد اﻟﻤ ﺴ‬

‫ﺑﻮاﺣﺪ ‪ ،‬ﻟﺬﻟﻚ ﻻﻳﺠ ﺐ أنﺗﻮاﺟﻪ أي أﺧﻄﺎء ﻓﺮدﻳ ﺔ ﻋﻨﺪﺗﺤﺪﻳﺪ ﻃﻮل اﻟﻘﺎﺋﻤ ﺔ‪.‬‬‫ﺒﺪأ‬
‫ﻳﺤ ﺴ ﺐ ‪N ote Python‬اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔﺗ‬

‫ﺗﻘﺪﻳﻢ اﻟﻘﻮاﺋﻢ ‪49‬‬


‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺗﻬﺎ‪.‬‬
‫‪3-8.‬رؤﻳ ﺔ اﻟﻌﺎﻟﻢ‪ :‬ﻓﻜﺮ ﻓ ﻲ ﺧﻤ ﺴ ﺔ أﻣﺎﻛﻦ ﻋﲆ اﻷﻗﻞ ﻓ ﻲ اﻟﻌﺎﻟﻢﺗﻮد زﻳﺎر‬

‫ﺑﺠﺪﻳًﺎ‪.‬‬
‫ﺒﺔ أ‬
‫ﺗ‬‫ﺗﺨﺰﻳﻦ اﻟﻤﻮاﻗﻊ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‪.‬ﺗﺄﻛﺪ ﻣﻦ أن اﻟﻘﺎﺋﻤ ﺔ ﻟﻴ ﺴ ﺖ ﻣﺮ‬
‫•‬

‫ﺜﻮن ﺧﺎم‪.‬‬
‫ﺑﺎﻳ‬‫ﺒﻌﻬﺎ ﻛﻘﺎﺋﻤ ﺔ‬
‫ﺑﺪﻗ ﺔ ‪ ،‬ﻓﻘﻂ اﻃ‬‫ﺒﺎﻋ ﺔ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺑﺸﺄن ﻃ‬‫ﺒﻬﺎ اﻷﺻﻠ ﻲ‪ .‬ﻻﺗﻘﻠﻖ‬
‫ﺗﻴ‬‫ﺘﺮ‬
‫ﺑ‬‫ﺘﻚ‬
‫ﺒﻊ ﻗﺎﺋﻤ‬
‫•اﻃ‬

‫ﺑﺠﺪي دونﺗﻌﺪﻳﻞ‬
‫ﺗﻴ ﺐ اﻷ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺘﻚ‬
‫ﺒﺎﻋ ﺔ ﻗﺎﺋﻤ‬
‫ﺘﺨﺪم )( ‪Sorted‬ﻟﻄ‬
‫•اﺳ‬
‫اﻟﻘﺎﺋﻤ ﺔ اﻟﻔﻌﻠﻴ ﺔ‪.‬‬

‫ﺘﻬﺎ‪.‬‬
‫ﺒﺎﻋ‬
‫ﺒﻬﺎ اﻷﺻﻠ ﻲ ﻋﻦ ﻃﺮﻳﻖ ﻃ‬
‫ﺗﻴ‬‫ﺘﻚ ﻻﺗﺰال ﻓ ﻲﺗﺮ‬
‫•أﻇﻬﺮ أن ﻗﺎﺋﻤ‬

‫ﺗﻴ ﺐ اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ‪.‬‬


‫ﺑﺪونﺗﻐﻴﻴﺮﺗﺮ‬‫ﺑﺠﺪي ﻋﻜ ﺴ ﻲ‬
‫ﺗﻴ ﺐ أ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺘﻚ‬
‫ﺒﺎﻋ ﺔ ﻗﺎﺋﻤ‬
‫ﺘﺨﺪم )( ‪Sorted‬ﻟﻄ‬
‫•اﺳ‬

‫ﺘﻬﺎ ﻣﺮة أﺧﺮى‪.‬‬


‫ﺒﺎﻋ‬
‫ﺒﻬﺎ اﻷﺻﻠ ﻲ ﻋﻦ ﻃﺮﻳﻖ ﻃ‬
‫ﺗﻴ‬‫ﺘﻚ ﻻﺗﺰال ﻓ ﻲﺗﺮ‬
‫•أﻇﻬﺮ أن ﻗﺎﺋﻤ‬

‫ﺒﻬﺎ ﻗﺪﺗﻐﻴﺮ‪.‬‬
‫ﺗﻴ‬‫ﺘﻈﻬﺮ أنﺗﺮ‬
‫ﺒﻊ اﻟﻘﺎﺋﻤ ﺔ ﻟ‬
‫ﺘﻚ‪ .‬اﻃ‬
‫ﺗﻴ ﺐ ﻗﺎﺋﻤ‬
‫ﺘﻐﻴﻴﺮﺗﺮ‬
‫ﺘﺨﺪم ﻋﻜ ﺲ )(ﻟ‬
‫•اﺳ‬

‫ﺒﻬﺎ اﻷﺻﻠ ﻲ‪.‬‬


‫ﺗﻴ‬‫ﺘﻈﻬﺮ أﻧﻬﺎ ﻋﺎد ت إﱃﺗﺮ‬
‫ﺒﻊ اﻟﻘﺎﺋﻤ ﺔ ﻟ‬
‫ﺘﻚ ﻣﺮة أﺧﺮى‪ .‬اﻃ‬
‫ﺗﻴ ﺐ ﻗﺎﺋﻤ‬
‫ﺘﻐﻴﻴﺮﺗﺮ‬
‫ﺘﺨﺪم ﻋﻜ ﺲ )(ﻟ‬
‫•اﺳ‬

‫ﺒﻬﺎ ﻗﺪﺗﻐﻴﺮ‪.‬‬
‫ﺗﻴ‬‫ﺘﻈﻬﺮ أنﺗﺮ‬
‫ﺒﻊ اﻟﻘﺎﺋﻤ ﺔ ﻟ‬
‫ﺑﺠﺪي‪ .‬اﻃ‬
‫ﺗﻴ ﺐ أ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺘﻢﺗﺨﺰﻳﻨﻬﺎ‬
‫ﺑﺤﻴ ﺚﻳ‬‫ﺘﻚ‬
‫ﺘﻐﻴﻴﺮ ﻗﺎﺋﻤ‬
‫ﺘﺨﺪم )( ‪sort‬ﻟ‬
‫•اﺳ‬

‫ﺑﺠﺪي ﻋﻜ ﺴ ﻲ‪.‬‬
‫ﺗﻴ ﺐ أ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺘﻢﺗﺨﺰﻳﻨﻬﺎ‬
‫ﺑﺤﻴ ﺚﻳ‬‫ﺘﻚ‬
‫ﺘﻐﻴﻴﺮ ﻗﺎﺋﻤ‬
‫ﺘﺨﺪم )( ‪sort‬ﻟ‬
‫•اﺳ‬
‫ﺒﻬﺎ ﻗﺪﺗﻐﻴﺮ‪.‬‬
‫ﺗﻴ‬‫ﺘﻈﻬﺮ أنﺗﺮ‬
‫ﺒﻊ اﻟﻘﺎﺋﻤ ﺔ ﻟ‬
‫اﻃ‬

‫ﺒﺎﻋ ﺔ‬
‫ﺘﺨﺪم )( ‪len‬ﻟﻄ‬
‫ﺒﺎ ت ‪3-4‬إﱃ ‪)3-7‬ﺻﻔﺤ ﺔ ‪46) ،‬اﺳ‬
‫ﺘﺪرﻳ‬
‫ﺒﺮاﻣﺞ ﻣﻦ اﻟ‬
‫‪ 3-9.‬ﺿﻴﻮف اﻟﻌﺸﺎء‪ :‬اﻟﻌﻤﻞ ﻣﻊ أﺣﺪ اﻟ‬
‫ﺘﻨﺎول اﻟﻌﺸﺎء‪.‬‬
‫رﺳﺎﻟ ﺔﺗﺸﻴﺮ إﱃ ﻋﺪد اﻷﺷﺨﺎص اﻟﺬﻳﻦﺗﺪﻋﻮ ﻫﻢ ﻟ‬

‫ﺒﺎل أو‬
‫ﺑﺎﻟﺠ‬‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ ﻋﻤﻞ ﻗﺎﺋﻤ ﺔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫‪3-10.‬ﻛﻞ وﻇﻴﻔ ﺔ‪ :‬ﻓﻜﺮ ﻓ ﻲ ﺷ ﻲءﻳﻤﻜﻨﻚﺗﺨﺰﻳﻨﻪ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺘﻮي ﻋﲆ ﻫﺬه‬
‫ﺑﺈﻧﺸﺎء ﻗﺎﺋﻤ ﺔﺗﺤ‬‫ﺑﺮﻧﺎﻣﺠًﺎﻳﻘﻮم‬‫ﺘﺐ‬
‫ﺒﻠﺪان أو اﻟﻤﺪن أو اﻟﻠﻐﺎ ت أو أي ﺷ ﻲء آﺧﺮﺗﺮﻳﺪه‪ .‬اﻛ‬
‫اﻷﻧﻬﺎر أو اﻟ‬
‫ﺘﺨﺪم ﻛﻞ وﻇﻴﻔ ﺔ ﻣﻘﺪﻣ ﺔ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻣﺮة واﺣﺪة ﻋﲆ اﻷﻗﻞ‪.‬‬
‫ﺛﻢﻳ ﺴ‬‫اﻟﻌﻨﺎﺻﺮ‬

‫ﺗﺠﻨ ﺐ أﺧﻄﺎء اﻟﻔﻬﺮس ﻋﻨﺪ اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ‬


‫ﺛﺔ‬
‫ﺛﻼ‬‫ﺘﻮي ﻋﲆ‬
‫ﺘﺮض أن ﻟﺪﻳﻚ ﻗﺎﺋﻤ ﺔﺗﺤ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻘﻮاﺋﻢﻷول ﻣﺮة‪ .‬ﻟﻨﻔ‬
‫ﻣﻦ اﻟﺸﺎﺋﻊ ﻣﻼﺣﻈ ﺔ أﺣﺪ أﻧﻮاع اﻷﺧﻄﺎء ﻋﻨﺪ اﻟ‬
‫ﺑﻊ‪:‬‬
‫ﻋﻨﺎﺻﺮ ‪ ،‬وأﻧﻚﺗﻄﻠ ﺐ اﻟﻌﻨﺼﺮ اﻟﺮا‬

‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت‬
‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]'‪= ['honda'، 'yamaha'، 'suzuki‬ﻃ‬
‫ﻧﺎرﻳ ﺔ )]‪[3‬‬

‫‪50‬اﻟﻔﺼﻞ ‪3‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﺎل ﺧﻄﺄ ﻓﻬﺮس‪:‬‬


‫ﺘﺞ ﻋﻦ ﻫﺬا اﻟﻤ‬
‫ﻳﻨ‬

‫‪)Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬


‫ﻣﻠﻒ ‪"motorcycles.py" ،‬اﻟ ﺴﻄﺮ ‪3 ،‬ﻓ ﻲ >‪<module‬‬
‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ )]‪[3‬‬
‫ﻃ‬
‫ﺧﻄﺄ ﻓ ﻲ اﻟﻔﻬﺮس‪ :‬ﻓﻬﺮس اﻟﻘﺎﺋﻤ ﺔ ﺧﺎرج اﻟﻨﻄﺎق‬

‫ﺒﺤ ﺚ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬ﻻﻳﻮﺟﺪ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﺪراﺟﺎ ت‬


‫ﺑﺎﻟﻌﻨﺼﺮ ﻓ ﻲ اﻟﻔﻬﺮس ‪3.‬وﻟﻜﻦ ﻋﻨﺪﻣﺎﺗ‬‫ﺗﺰوﻳﺪك‬
‫ﺗﺤﺎول ‪Python‬‬
‫ﺜﺎﻟ ﺚ‬
‫ﺘﻘﺪ اﻟﻨﺎس أن اﻟﻌﻨﺼﺮ اﻟ‬
‫ﺒﻴﻌ ﺔ اﻟﻔﻬﺮﺳ ﺔ ﻓ ﻲ اﻟﻘﻮاﺋﻢ ‪ ،‬ﻓﺈن ﻫﺬا اﻟﺨﻄﺄ ﻧﻤﻮذﺟ ﻲ‪.‬ﻳﻌ‬
‫ﺘﻮي ﻋﲆ ﻓﻬﺮس ‪3.‬ﻧﻈ ﺮًا ﻟﻄ‬
‫اﻟﻨﺎرﻳ ﺔﻳﺤ‬
‫ﺒﺪأ ﻓ ﻲ اﻟﻔﻬﺮﺳ ﺔ ﻋﻨﺪ‬
‫ﺜﺎﻟ ﺚ ﻫﻮ رﻗﻢ ‪2 ،‬ﻷﻧﻪﻳ‬
‫ﺜﻮن ‪ ،‬اﻟﻌﻨﺼﺮ اﻟ‬
‫ﺑﺎﻳ‬‫ﺒﺪأون ﻓ ﻲ اﻟﻌﺪ ﻋﻨﺪ ‪1.‬وﻟﻜﻦ ﻓ ﻲ‬
‫ﻫﻮ اﻟﻌﻨﺼﺮ رﻗﻢ ‪3 ،‬ﻷﻧﻬﻢﻳ‬
‫‪0.‬‬

‫ﺑﺮﻧﺎﻣﺠﻚ ‪ ،‬ﻓﺤﺎول‬‫ﺘﻪ‪ .‬إذا ﺣﺪ ث ﺧﻄﺄ ﻓ ﻲ اﻟﻔﻬﺮس ﻓ ﻲ‬


‫ﺒ‬‫ﺜﻮن ﻻﻳﻤﻜﻨﻬﺎ ﻣﻌﺮﻓ ﺔ اﻟﻔﻬﺮس اﻟﺬي ﻃﻠ‬
‫ﺑﺎﻳ‬‫ﻳﻌﻨ ﻲ ﺧﻄﺄ اﻟﻔﻬﺮس أن‬
‫ﺘﺎﺋﺞ ﺻﺤﻴﺤ ﺔ‪.‬‬
‫ﺒﺮﻧﺎﻣﺞ ﻣﺮة أﺧﺮى ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎﻧ ﺖ اﻟﻨ‬
‫ﺘﺸﻐﻴﻞ اﻟ‬
‫ﺑ‬‫ﺛﻢ ﻗﻢ‬‫ﺑﻮاﺣﺪ‪.‬‬‫ﺒﻪ‬
‫ﺗﻌﺪﻳﻞ اﻟﻔﻬﺮس اﻟﺬيﺗﻄﻠ‬

‫ﺘﺨﺪم اﻟﻔﻬﺮس ‪-1.‬ﺳﻴﻌﻤﻞ ﻫﺬا‬


‫ﺒﺎرك أﻧﻪ ﻋﻨﺪﻣﺎﺗﺮﻳﺪ اﻟﻮﺻﻮل إﱃ اﻟﻌﻨﺼﺮ اﻷﺧﻴﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬ﻓﺈﻧﻚﺗ ﺴ‬
‫ﺘ‬‫ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺑﺎﻟﻮﺻﻮل إﻟﻴﻬﺎ‪:‬‬‫ﺘﻚ ﻣﻨﺬ آﺧﺮ ﻣﺮة ﻗﻤ ﺖ ﻓﻴﻬﺎ‬
‫ﺘﻰ إذاﺗﻢﺗﻐﻴﻴﺮ ﺣﺠﻢ ﻗﺎﺋﻤ‬
‫ﺋﻤﺎ ‪ ،‬ﺣ‬
‫دا ً‬

‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ ]'‪= ['honda'، 'yamaha'، 'suzuki‬‬


‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ )]‪[-1‬‬
‫ﻃ‬

‫ﺑﺈرﺟﺎع اﻟﻌﻨﺼﺮ اﻷﺧﻴﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬وﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ اﻟﻘﻴﻤ ﺔ‬‫ﺋﻤﺎ‬


‫ﻳﻘﻮم اﻟﻔﻬﺮس ‪-1‬دا ً‬
‫"ﺳﻮزوﻛ ﻲ"‪:‬‬

‫"ﺳﻮزوﻛ ﻲ"‬

‫ﺒ ﺐ ﻓﻴﻬﺎ ﻫﺬا اﻷﺳﻠﻮ ب ﻓ ﻲ ﺣﺪو ث ﺧﻄﺄ ﻫ ﻲ ﻋﻨﺪﻣﺎﺗﻄﻠ ﺐ اﻟﻌﻨﺼﺮ اﻷﺧﻴﺮ ﻣﻦ ﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ‪:‬‬
‫ﺘﺴ‬‫ﺘ ﻲﻳ‬
‫اﻟﻤﺮة اﻟﻮﺣﻴﺪة اﻟ‬

‫ﺑﺨﺎرﻳ ﺔ )]‪[-1‬‬‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت‬


‫دراﺟﺎ ت ﻧﺎرﻳ ﺔ ][ =ﻃ‬

‫ُﺮﺟﻊ ‪Python‬ﺧﻄﺄ ﻓﻬﺮس آﺧﺮ‪:‬‬


‫ﻻﺗﻮﺟﺪ ﻋﻨﺎﺻﺮ ﻓ ﻲ اﻟﺪراﺟﺎ ت اﻟﻨﺎرﻳ ﺔ ‪ ،‬ﻟﺬﻟﻚﺗ‬

‫‪)Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪ :‬ﻣﻠﻒ ‪"motorcyles.py" ،‬اﻟ ﺴﻄﺮ ‪3 ،‬ﻓ ﻲ‬


‫>‪<module‬‬
‫ﺒﺎﻋ ﺔ )دراﺟﺎ ت ﻧﺎرﻳ ﺔ )]‪[-1‬‬
‫ﻃ‬
‫ﺧﻄﺄ ﻓ ﻲ اﻟﻔﻬﺮس‪ :‬ﻓﻬﺮس اﻟﻘﺎﺋﻤ ﺔ ﺧﺎرج اﻟﻨﻄﺎق‬

‫ﺒﺪو‬
‫ﺘﻚ‪ .‬ﻗﺪﺗ‬
‫ﺒﺎﻋ ﺔ ﻃﻮل ﻗﺎﺋﻤ‬
‫ﺘﻚ أو ﻣﺠﺮد ﻃ‬‫ﺒﺎﻋ ﺔ ﻗﺎﺋﻤ‬‫ﺘﻤﻜﻦ ﻣﻦ ﻣﻌﺮﻓ ﺔ ﻛﻴﻔﻴ ﺔ ﺣﻠﻪ ‪ ،‬ﻓﺤﺎول ﻃ‬ ‫ﻣﺎﻟﺤﻈ ﺔ إذا ﺣﺪ ث ﺧﻄﺄ ﻓ ﻲ اﻟﻔﻬﺮس وﻟﻢﺗ‬
‫ﺑﺮﻧﺎﻣﺠﻚ‪.‬‬ ‫ﺑﻮاﺳﻄ ﺔ‬ ‫ﺘﻘﺪه ‪ ،‬ﺧﺎﺻ ًﺔ إذاﺗﻤ ﺖ إدار‬
‫ﺗﻬﺎ دﻳﻨﺎﻣﻴﻜ ًﻴﺎ‬ ‫ﺜﻴ ًﺮا ﻋﻤﺎ ﻛﻨ ﺖﺗﻌ‬
‫ﺘﻠﻔ ﺔ ﻛ‬
‫ﺘﻚ ﻣﺨ‬‫ﻗﺎﺋﻤ‬

‫ﺜﻞ ﻫﺬه اﻷﺧﻄﺎء اﻟﻤﻨﻄﻘﻴ ﺔ‪.‬‬


‫ﺘﻚ ‪ ،‬ﻓ ﻲ ﻓﺮز ﻣ‬
‫ﻳﻤﻜﻦ أنﺗ ﺴﺎﻋﺪك رؤﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ اﻟﻔﻌﻠﻴ ﺔ ‪ ،‬أو اﻟﻌﺪد اﻟﺪﻗﻴﻖ ﻟﻠﻌﻨﺎﺻﺮ ﻓ ﻲ ﻗﺎﺋﻤ‬

‫ﺗﻘﺪﻳﻢ اﻟﻘﻮاﺋﻢ ‪51‬‬


‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ّﻴ ﺮ‬
‫ﺘﻰ اﻵن ‪ ،‬ﻓﺤﺎول أنﻳﺤﺪ ث ﺧﻄﺄ‪ .‬ﻏ‬
‫ﺑﺮاﻣﺠﻚ ﺣ‬ ‫ﺘﻌﻤﺪ‪ :‬إذا ﻟﻢﺗ َ‬
‫ﺘﻠﻖ ﺧﻄﺄ ﻓﻬﺮس ﻓ ﻲ أﺣﺪ‬ ‫‪3-11.‬اﻟﺨﻄﺄ اﻟﻤ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺒﻞ إﻏﻼق اﻟ‬
‫ﺘﺎج ﺧﻄﺄ ﻓﻬﺮس‪.‬ﺗﺄﻛﺪ ﻣﻦﺗﺼﺤﻴﺢ اﻟﺨﻄﺄ ﻗ‬
‫ﺗﻚ ﻹﻧ‬
‫ﺑﺮوﻏﺎﻣﺎ‬‫ﺳﺎ ﻓ ﻲ أﺣﺪ‬
‫ﻓﻬﺮ ً‬

‫ﻣﻠﺨﺺ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻌﻨﺎﺻﺮ اﻟﻔﺮدﻳ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔﺗﺤﺪﻳﺪ‬ ‫ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻣﺎ ﻫ ﻲ اﻟﻘﻮاﺋﻢ وﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺑﺸﻜﻞ داﺋﻢ وﻣﺆﻗ ﺖﻷﻏﺮاض اﻟﻌﺮض‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ أ ً‬
‫ﻳﻀﺎ ﻛﻴﻔﻴ ﺔ‬ ‫ﻗﺎﺋﻤ ﺔ وﻛﻴﻔﻴ ﺔ إﺿﺎﻓ ﺔ وإزاﻟ ﺔ اﻟﻌﻨﺎﺻﺮ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻓﺮز اﻟﻘﻮاﺋﻢ‬

‫ﺜﻮر ﻋﲆ ﻃﻮل اﻟﻘﺎﺋﻤ ﺔ وﻛﻴﻔﻴ ﺔﺗﺠﻨ ﺐ أﺧﻄﺎء اﻟﻔﻬﺮس ﻋﻨﺪ اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ‪.‬‬
‫اﻟﻌ‬

‫ﺜﺮ ﻓﻌﺎﻟﻴ ﺔ‪ .‬ﻣﻦ ﺧﻼلﺗﻜﺮار ﻛﻞ‬


‫ﺑﺸﻜﻞ أﻛ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬
‫ﺑﻊ ﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ اﻟﻔﺼﻞ اﻟﺮا‬
‫ﺘ‬‫ﺳ‬
‫ﺘﻮي‬
‫ﺘﻰ ﻋﻨﺪﻣﺎﺗﺤ‬
‫ﺑﻜﻔﺎءة ‪ ،‬ﺣ‬‫ﺘﻤﻜﻦ ﻣﻦ اﻟﻌﻤﻞ‬
‫ﺘ‬‫ﺒﺮﻣﺠﻴ ﺔ ‪،‬ﺳ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻀﻌ ﺔ أﺳﻄﺮ ﻓﻘﻂ ﻣﻦ اﻟ‬‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ﻋﻨﺼﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﻚ ﻋﲆ آﻻف أو ﻣﻼﻳﻴﻦ اﻟﻌﻨﺎﺻﺮ‪.‬‬
‫ﻗﺎﺋﻤ‬

‫‪52‬اﻟﻔﺼﻞ ‪3‬‬
‫‪Machine Translated by Google‬‬

‫‪4‬‬
‫اﻋﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ‬

‫ﺗﻌﻠﻤ ﺖ‬
‫ﺑ ﺴﻴﻄ ﺔ ‪ ،‬و‬‫ﺜﺎﻟ ﺚ ﻛﻴﻔﻴ ﺔ ﻋﻤﻞ ﻗﺎﺋﻤ ﺔ‬
‫ﺗﻌﻠﻤ ﺖ ﻓ ﻲ اﻟﻔﺼﻞ اﻟ‬
‫اﻟﻌﻤﻞ ﻣﻊ اﻟﻌﻨﺎﺻﺮ اﻟﻔﺮدﻳ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ‬

‫ﺑﻀﻌ ﺔ أﺳﻄﺮ ﻓﻘﻂ ﻣﻦ‬‫ﺘﺨﺪام‬


‫ﺑﺎﺳ‬‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔﺗﻜﺮار ﻗﺎﺋﻤ ﺔ ﻛﺎﻣﻠ ﺔ‬
‫ﺘ‬ ‫ﺛﺎﻟ ً‬
‫ﺜﺎ ‪،‬ﺳ‬
‫ﺗﺨﺎذ ﻧﻔ ﺲ اﻹﺟﺮاء ‪،‬‬
‫ﺘﻜﺮار ا‬
‫ﺘﻴﺢ ﻟﻚ اﻟ‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻃﻮل اﻟﻘﺎﺋﻤ ﺔ‪.‬ﻳ‬ ‫ﺒﺮﻣﺠﻴ ﺔ‬ ‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬‫اﻟ‬
‫ﺘﻤﻜﻦ ﻣﻦ اﻟﻌﻤﻞ‬ ‫ﺘ‬‫ﺘﻴﺠ ﺔ ﻟﺬﻟﻚ ‪،‬ﺳ‬ ‫أو ﻣﺠﻤﻮﻋ ﺔ اﻹﺟﺮاءا ت ‪ ،‬ﻣﻊ ﻛﻞ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻧ‬
‫ﺘﻰ ﻣﻼﻳﻴﻦ‬ ‫ﺘﻮي ﻋﲆ آﻻف أو ﺣ‬ ‫ﺘ ﻲﺗﺤ‬‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻟﻘﻮاﺋﻢ اﻟ‬ ‫ﺑﺄي ﻃﻮل ‪،‬‬ ‫ﺑﻜﻔﺎءة ﻣﻊ اﻟﻘﻮاﺋﻢ‬
‫اﻟﻌﻨﺎﺻﺮ‪.‬‬

‫ﺘﻜﺮار ﻣﻦ ﺧﻼل ﻗﺎﺋﻤ ﺔ ﻛﺎﻣﻠ ﺔ‬


‫اﻟ‬
‫ﺜﺎل ‪ ،‬ﻓ ﻲ إﺣﺪى‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒﺎ إﱃﺗﺸﻐﻴﻞ ﺟﻤﻴﻊ اﻹدﺧﺎﻻ ت ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪ ،‬ﻣﻊ أداء ﻧﻔ ﺲ اﻟﻤﻬﻤ ﺔ ﻣﻊ ﻛﻞ ﻋﻨﺼﺮ‪ .‬ﻋﲆﺳ‬
‫ﺘﺎج ﻏﺎﻟ ً‬
‫ﺘﺤ‬‫ﺳ‬
‫ﺑﻨﻔ ﺲ اﻟﻤﻘﺪار ‪ ،‬أو ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻷرﻗﺎم ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ إﺟﺮاء ﻧﻔ ﺲ‬‫اﻷﻟﻌﺎ ب ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲﺗﺤﺮﻳﻚ ﻛﻞ ﻋﻨﺼﺮ ﻋﲆ اﻟﺸﺎﺷ ﺔ‬
‫ﺋﻴ ﺴ ﻲ ﻣﻦ ﻗﺎﺋﻤ ﺔ ﻣﻘﺎﻻ ت ﻋﲆ ﻣﻮﻗﻊ وﻳ ﺐ‪ .‬ﻋﻨﺪﻣﺎﺗﺮﻳﺪ‬
‫ﺑﻤﺎﺗﺮﻳﺪ ﻋﺮض ﻛﻞ ﻋﻨﻮان ر‬
‫اﻟﻌﻤﻠﻴ ﺔ اﻹﺣﺼﺎﺋﻴ ﺔ ﻋﲆ ﻛﻞ ﻋﻨﺼﺮ‪ .‬أو ر‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪for‬ﻣﻦ ‪Python .‬‬
‫ﺑﻨﻔ ﺲ اﻹﺟﺮاء ﻣﻊ ﻛﻞ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬‫اﻟﻘﻴﺎم‬
‫‪Machine Translated by Google‬‬

‫ﺘﺮداد‬
‫ﺑﺬﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﺳ‬‫ﺒﺎﻋ ﺔ ﻛﻞ اﺳﻢ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬ﻳﻤﻜﻨﻨﺎ اﻟﻘﻴﺎم‬
‫ﺑﺄﺳﻤﺎء اﻟ ﺴﺤﺮة ‪ ،‬وﻧﺮﻳﺪ ﻃ‬‫ﺘﺮض أن ﻟﺪﻳﻨﺎ ﻗﺎﺋﻤ ﺔ‬
‫ﻟﻨﻔ‬
‫ﺜﺎل ‪ ،‬ﻗﺪﻳﻜﻮنﺗﻜﺮار‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒ ﺐ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﺸﺎﻛﻞ‪ .‬ﻋﲆﺳ‬
‫ﻛﻞ اﺳﻢ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ ﺣﺪة ‪ ،‬وﻟﻜﻦ ﻫﺬا اﻷﺳﻠﻮ ب ﻗﺪﻳ ﺴ‬
‫ﺘﻢ ﻓﻴﻬﺎﺗﻐﻴﻴﺮ ﻃﻮل‬
‫ﺑﻨﺎ ﻓ ﻲ ﻛﻞ ﻣﺮةﻳ‬‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎﺗﻐﻴﻴﺮ اﻟﻜﻮد اﻟﺨﺎص‬ ‫ﺑﺬﻟﻚ ﻣﻊ ﻗﺎﺋﻤ ﺔ ﻃﻮﻳﻠ ﺔ ﻣﻦ اﻷﺳﻤﺎء‪ .‬أ ً‬
‫ﻳﻀﺎ ‪،‬ﺳﻴ‬ ‫اﻟﻘﻴﺎم‬
‫ﺑﺈدارة ﻫﺬه اﻟﻤﺸﻜﻼ ت داﺧﻠ ًﻴﺎ‪.‬‬
‫ﺘﻴﻦ ﻋﻦ ﻃﺮﻳﻖ اﻟ ﺴﻤﺎح ﻟـ ‪Python‬‬
‫ﺗﻴﻦ اﻟﻤﺸﻜﻠ‬
‫ﺘﺎ ﻫﺎ‬
‫ﺘﺠﻨ ﺐ ﺣﻠﻘ ﺔ ‪for‬ﻛﻠ‬
‫اﻟﻘﺎﺋﻤ ﺔ‪.‬ﺗ‬

‫ﺒﺎﻋ ﺔ ﻛﻞ اﺳﻢ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻟ ﺴﺤﺮة‪:‬‬


‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬
‫دﻋﻨﺎ ﻧ ﺴ‬

‫‪magicians.py u magicians = ['alice'، 'david'، 'carolina'] v‬ﻟﻠ ﺴﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة‪print :‬‬


‫‪)w‬اﻟ ﺴﺎﺣﺮ(‬

‫ﺒﺮ ﻫﺬا اﻟ ﺴﻄﺮ ‪Python‬‬


‫ﺗﻤﺎﻣﺎ ﻛﻤﺎ ﻓﻌﻠﻨﺎ ﻓ ﻲ اﻟﻔﺼﻞ ‪3.‬ﻓ ﻲ ‪v ،‬ﻧﺤﺪد ﺣﻠﻘ ﺔ ‪for .‬ﻳﺨ‬
‫ً‬ ‫ﺘﺤﺪﻳﺪ ﻗﺎﺋﻤ ﺔ ﻋﻨﺪ ‪u ،‬‬
‫ﺑ‬‫ﺒﺪأ‬
‫ﻧ‬
‫ﺒﻊ اﻻﺳﻢ اﻟﺬيﺗﻢﺗﺨﺰﻳﻨﻪ‬
‫ﺒﺮﻧﺎ ‪Python‬أنﺗﻄ‬
‫ﺘﻐﻴﺮ اﻟ ﺴﺎﺣﺮ‪ .‬ﻓ ﻲ ‪w ،‬أﺧ‬
‫ﺗﺨﺰﻳﻨﻪ ﻓ ﻲ اﻟﻤ‬
‫ﺑ ﺴﺤ ﺐ اﺳﻢ ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟ ﺴﺤﺮة ‪ ،‬و‬
‫ﺜﻮن اﻷﺳﻄﺮ ‪v‬‬
‫ﺑﺎﻳ‬‫ﺛﻢﺗﻜﺮر‬‫ﺘﻮ ﻓ ﻲ اﻟ ﺴﺎﺣﺮ‪.‬‬
‫ﻟﻠ‬

‫و ‪w ،‬ﻣﺮة واﺣﺪة ﻟﻜﻞ اﺳﻢ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻗﺪﻳﻜﻮن ﻣﻦ اﻟﻤﻔﻴﺪ ﻗﺮاءة ﻫﺬا اﻟﺮﻣﺰ ﻋﲆ أﻧﻪ "ﻟﻜﻞﺳﺎﺣﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻟ ﺴﺤﺮة ‪،‬‬
‫ﺒﻊ اﺳﻢ اﻟ ﺴﺎﺣﺮ"‪.‬‬
‫اﻃ‬
‫ﺑ ﺴﻴﻄ ﺔ ﻟﻜﻞ اﺳﻢ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬‫ﺒﻮﻋ ﺔ‬
‫ﺒﺎرة ﻋﻦ ﻧ ﺴﺨ ﺔ ﻣﻄ‬
‫اﻹﺧﺮاج ﻋ‬

‫أﻟﻴ ﺲ‬
‫دﻳﻔﻴﺪ‬
‫ﻛﺎروﻟﻴﻨﺎ‬

‫ﻧﻈﺮة ﻓﺎﺣﺼ ﺔ ﻋﲆ اﻟﺤﻠﻘﺎ ت‬


‫ﺒﻴﻞ‬
‫ﺘﻜﺮرة‪ .‬ﻋﲆﺳ‬
‫ﺘ ﺔ اﻟﻤﻬﺎم اﻟﻤ‬
‫ﺗﻤ‬‫ﺑﺄ‬‫ﺗﺮ‬
‫ﺒﻴﻮ‬
‫ﺑﻬﺎ اﻟﻜﻤ‬‫ﺘ ﻲﻳﻘﻮم‬
‫ﺜﺮ اﻟﻄﺮق ﺷﻴﻮﻋً ﺎ اﻟ‬
‫ﻣﻬﻤﺎﻷﻧﻪ أﺣﺪ أﻛ‬
‫ً‬ ‫ﺘﻜﺮار اﻟﺤﻠﻘ ﻲ‬
‫ﻳﻌﺪ ﻣﻔﻬﻮم اﻟ‬
‫ﺒﺪاﻳ ﺔ اﻟ ﺴﻄﺮ اﻷول ﻣﻦ اﻟﺤﻠﻘ ﺔ‪:‬‬
‫ﺗﻘﺮأ ‪Python‬ﻓ ﻲ اﻟ‬
‫ﺘﺨﺪﻣﻨﺎ ﻫﺎ ﻓ ﻲ ‪magicians.py ،‬‬
‫ﺘ ﻲ اﺳ‬
‫ﺜﻞ اﻟ‬
‫ﺑ ﺴﻴﻄ ﺔ ﻣ‬‫ﺜﺎل ‪ ،‬ﻓ ﻲ ﺣﻠﻘ ﺔ‬
‫اﻟﻤ‬

‫ﻟﻠ ﺴﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة‪:‬‬

‫ﺘﺮداد اﻟﻘﻴﻤ ﺔ اﻷوﱃ ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟ ﺴﺤﺮة‬


‫ﺑﺎﺳ‬
‫ﺒﺮ ﻫﺬا اﻟ ﺴﻄﺮ ‪Python‬‬
‫ﻳﺨ‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺜﻮن اﻟ ﺴﻄﺮ اﻟ‬
‫ﺑﺎﻳ‬‫ﺛﻢﺗﻘﺮأ‬‫ﺘﻐﻴﺮ اﻟ ﺴﺎﺣﺮ‪ .‬ﻫﺬه اﻟﻘﻴﻤ ﺔ اﻷوﱃ ﻫ ﻲ "أﻟﻴ ﺲ"‪.‬‬
‫ﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ اﻟﻤ‬
‫و‬

‫ﺒﺎﻋ ﺔ )ﺳﺎﺣﺮ(‬
‫ﻃ‬

‫ﺘ ﻲ ﻻﺗﺰال "أﻟﻴ ﺲ"‪.‬ﻷن‬


‫ﺜﻮن اﻟﻘﻴﻤ ﺔ اﻟﺤﺎﻟﻴ ﺔ ﻟﻠ ﺴﺎﺣﺮ ‪ ،‬واﻟ‬
‫ﺑﺎﻳ‬‫ﺒﻊ‬
‫ﺗﻄ‬
‫ﺜﻮن إﱃ اﻟ ﺴﻄﺮ اﻷول ﻣﻦ اﻟﺤﻠﻘ ﺔ‪:‬‬
‫ﺑﺎﻳ‬‫ﺗﻌﻮد‬
‫ﺘﻮي اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻘﻴﻢ ‪ ،‬و‬
‫ﺗﺤ‬

‫ﻟﻠ ﺴﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة‪:‬‬

‫ﺜﻮن اﻟﺨﻂ‪:‬‬
‫ﺑﺎﻳ‬‫ﺛﻢﺗﻨﻔﺬ‬‫ﺗﺨﺰن ﻫﺬه اﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟ ﺴﺎﺣﺮ‪.‬‬
‫ﺘﺎﻟ ﻲ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪" ،‬دﻳﻔﻴﺪ" ‪ ،‬و‬
‫ﺜﻮن اﻻﺳﻢ اﻟ‬
‫ﺑﺎﻳ‬‫ﺘﺮﺟﻊ‬
‫ﺗﺴ‬

‫ﺒﺎﻋ ﺔ )ﺳﺎﺣﺮ(‬
‫ﻃ‬

‫ﺑﻊ‬
‫‪54‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫ﺒﺤ ﺖ اﻵن "دﻳﻔﻴﺪ"‪.‬‬


‫ﺘ ﻲ أﺻ‬
‫ﺜﻮن اﻟﻘﻴﻤ ﺔ اﻟﺤﺎﻟﻴ ﺔ ﻟﻠ ﺴﺎﺣﺮ ﻣﺮة أﺧﺮى ‪ ،‬واﻟ‬
‫ﺑﺎﻳ‬‫ﺒﻊ‬
‫ﺗﻄ‬
‫ﺑﺄﻛﻤﻠﻬﺎ ﻣﺮة أﺧﺮى ﻣﻊ اﻟﻘﻴﻤ ﺔ اﻷﺧﻴﺮة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪" ،‬ﻛﺎروﻟﻴﻨﺎ"‪ .‬ﻧﻈ ًﺮا ﻟﻌﺪم وﺟﻮد اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻘﻴﻢ ﻓ ﻲ‬‫ﻳﻜﺮر ‪Python‬اﻟﺤﻠﻘ ﺔ‬
‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﻬ ﻲ اﻟ‬
‫ﺑﻌﺪ ﺣﻠﻘ ﺔ ‪for ،‬ﻟﺬﻟﻚﻳﻨ‬‫ﺗﻲ‬
‫ﺒﺮﻧﺎﻣﺞ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ﻻ ﺷ ﻲءﻳﺄ‬
‫ﺘﺎﻟ ﻲ ﻓ ﻲ اﻟ‬
‫ﺘﻘﻞ ‪Python‬إﱃ اﻟ ﺴﻄﺮ اﻟ‬
‫اﻟﻘﺎﺋﻤ ﺔ ‪،‬ﺗﻨ‬
‫ﺒ ﺴﺎﻃ ﺔ‪.‬‬
‫ﺑ‬

‫ﺘﻜﺮر ﻣﺮة واﺣﺪة ﻟﻜﻞ ﻋﻨﺼﺮ ﻓ ﻲ‬


‫ﺒﺎرك أن ﻣﺠﻤﻮﻋ ﺔ اﻟﺨﻄﻮا تﺗ‬
‫ﺘ‬‫ﺘﺨﺪم اﻟﺤﻠﻘﺎ ت ﻟﻠﻤﺮة اﻷوﱃ ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﻋﻨﺪﻣﺎﺗ ﺴ‬
‫ﺗﻜﺮر‬
‫ﺘﻚ ‪ ،‬ﻓﺈن ‪Python‬‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻋﺪد اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬إذا ﻛﺎن ﻟﺪﻳﻚ ﻣﻠﻴﻮن ﻋﻨﺼﺮ ﻓ ﻲ ﻗﺎﺋﻤ‬‫اﻟﻘﺎﺋﻤ ﺔ ‪،‬‬
‫ﺒﻴﺮة‪.‬‬
‫ﺑ ﺴﺮﻋ ﺔ ﻛ‬‫ﻫﺬه اﻟﺨﻄﻮا ت ﻣﻠﻴﻮن ﻣﺮة —وﻋﺎدة ﻣﺎﺗﻜﻮن‬

‫ﺘﻐﻴﺮ اﻟﻤﺆﻗ ﺖ اﻟﺬي‬


‫ﺘﻴﺎر أي اﺳﻢﺗﺮﻳﺪه ﻟﻠﻤ‬
‫ﺑﻚ أﻧﻪﻳﻤﻜﻨﻚ اﺧ‬‫ﺑ ﺔ ﺣﻠﻘﺎ ت ‪for‬اﻟﺨﺎﺻ ﺔ‬
‫ﺘﺎ‬ ‫ﺒﺎرك أ ً‬
‫ﻳﻀﺎ ﻋﻨﺪ ﻛ‬ ‫ﺘ‬‫ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺒﻴﻞ‬
‫ﺜﻞ ﻋﻨﺼ ًﺮا واﺣﺪًا ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺘﻴﺎر اﺳﻢ ذي ﻣﻌﻨﻰﻳﻤ‬
‫ﻳﺤﻤﻞ ﻛﻞ ﻗﻴﻤ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻣﻦ اﻟﻤﻔﻴﺪ اﺧ‬
‫ﺑﺎﻟﻌﻨﺎﺻﺮ‪:‬‬‫ﺑﺎﻟﻜﻼ ب وﻗﺎﺋﻤ ﺔ ﻋﺎﻣ ﺔ‬‫ﺑﺎﻟﻘﻄﻂ وﻗﺎﺋﻤ ﺔ‬‫ﺒﺪء ﺣﻠﻘ ﺔ ‪for‬ﻟﻠﺤﺼﻮل ﻋﲆ ﻗﺎﺋﻤ ﺔ‬
‫ﺜﺎل ‪ ،‬إﻟﻴﻚ ﻃﺮﻳﻘ ﺔ ﺟﻴﺪة ﻟ‬
‫اﻟﻤ‬

‫ﻟﻠﻘﻄﻂ ﻓ ﻲ اﻟﻘﻄﻂ‪:‬‬

‫ﻟﻠﻜﻠ ﺐ ﻓ ﻲ اﻟﻜﻼ ب‪:‬‬


‫ﻟﻠﻌﻨﺼﺮ ﻓ ﻲ ‪list_of_items:‬‬

‫ﺘﻢ إﺟﺮاؤه ﻋﲆ ﻛﻞ ﻋﻨﺼﺮ داﺧﻞ ﺣﻠﻘ ﺔ ‪for .‬‬


‫ﺑﻌ ﺔ اﻹﺟﺮاء اﻟﺬيﻳ‬
‫ﺘﺎ‬
‫ﺘ ﺴﻤﻴ ﺔ ﻫﺬه ﻓ ﻲ ﻣ‬
‫ﻳﻤﻜﻦ أنﺗ ﺴﺎﻋﺪك اﺻﻄﻼﺣﺎ ت اﻟ‬
‫ﺒﺮﻣﺠﻴ ﺔﻳﻌﻤﻞ ﻣﻊ ﻋﻨﺼﺮ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﺨﺪام أﺳﻤﺎء اﻟﻤﻔﺮد واﻟﺠﻤﻊ ﻓ ﻲﺗﺤﺪﻳﺪ ﻣﺎ إذا ﻛﺎن ﻗ ﺴﻢ ﻣﻦ اﻟ‬
‫ﻳﻤﻜﻦ أنﻳ ﺴﺎﻋﺪك اﺳ‬
‫ﺑﺄﻛﻤﻠﻬﺎ‪.‬‬‫واﺣﺪ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ أو اﻟﻘﺎﺋﻤ ﺔ‬

‫ﺑﺎﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻌﻤﻞ ﺿﻤﻦ ﺣﻠﻘ ﺔ ‪for‬‬‫اﻟﻘﻴﺎم‬


‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔ ﻟﻜﻞﺳﺎﺣﺮ‬
‫ﺑﻖ ﻣﻦ ﺧﻼل ﻃ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺒﻨ ﻲ ﻋﲆ اﻟﻤ‬
‫ﺒﺎ ﻣﻊ ﻛﻞ ﻋﻨﺼﺮ ﻓ ﻲ ﺣﻠﻘ ﺔ ‪for .‬دﻋﻮﻧﺎ ﻧ‬
‫ﻳﻤﻜﻨﻚ ﻓﻌﻞ أي ﺷ ﻲءﺗﻘﺮﻳ ً‬
‫ﺑﻌﻤﻞ ﺧﺪﻋ ﺔ راﺋﻌ ﺔ‪:‬‬‫ﺒﺮ ﻫﻢ ﻓﻴﻪ أﻧﻬﻢ ﻗﺎﻣﻮا‬
‫ﺗﺨ‬

‫اﻟ ﺴﺤﺮة ]'‪= ['alice'، 'david'، 'carolina‬ﻟﻠ ﺴﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة‪(magician.title () + "، :‬‬
‫‪u print‬ﻛﺎﻧ ﺖ ﻫﺬه ﺧﺪﻋ ﺔ راﺋﻌ ﺔ!"(‬

‫ﺑﺪءًا ﻣﻦ اﺳﻢ ﻫﺬا اﻟ ﺴﺎﺣﺮ‪ .‬ﻓ ﻲ اﻟﻤﺮة اﻷوﱃ‬‫ﺘﻼف اﻟﻮﺣﻴﺪ ﻓ ﻲ ﻫﺬا اﻟﺮﻣﺰ ﻫﻮ ﻋﻨﺪ ‪u‬ﺣﻴ ﺚ ﻧﺆﻟﻒ رﺳﺎﻟ ﺔ ﻟﻜﻞﺳﺎﺣﺮ ‪،‬‬
‫اﻻﺧ‬
‫ﺜﺎﻧﻴ ﺔ ﻣﻦ ﺧﻼل‬
‫ﺒﺪأ اﻟﻤﺮة اﻟ‬
‫ﺘ‬‫ﺑﺎﺳﻢ "أﻟﻴ ﺲ"‪.‬ﺳ‬‫ﺜﻮن أول رﺳﺎﻟ ﺔ‬
‫ﺑﺎﻳ‬‫ﺒﺪأ‬
‫ﻣﻦ ﺧﻼل اﻟﺤﻠﻘ ﺔ ‪،‬ﺗﻜﻮن ﻗﻴﻤ ﺔ اﻟ ﺴﺎﺣﺮ "أﻟﻴ ﺲ" ‪ ،‬ﻟﺬﻟﻚﺗ‬
‫ﺑﻜﻠﻤ ﺔ ‪"Carolina".‬‬‫ﺒﺪأ‬
‫ﺘ‬‫ﺜ ﺔ ﻣﻦ ﺧﻼل اﻟﺮﺳﺎﻟ ﺔﺳ‬
‫ﺜﺎﻟ‬
‫ﺑﻜﻠﻤ ﺔ ‪"David" ،‬واﻟﻤﺮة اﻟ‬‫اﻟﺮﺳﺎﻟ ﺔ‬

‫ُﻈﻬﺮ اﻹﺧﺮاج رﺳﺎﻟ ﺔ ﻣﺨﺼﺼ ﺔ ﻟﻜﻞﺳﺎﺣﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬


‫ﻳ‬

‫أﻟﻴ ﺲ ‪،‬ﺗﻠﻚ ﻛﺎﻧ ﺖ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬


‫دﻳﻔﻴﺪ ‪ ،‬ﻛﺎﻧ ﺖﺗﻠﻚ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬
‫ﻛﺎروﻟﻴﻨﺎ ‪ ،‬ﻛﺎﻧ ﺖﺗﻠﻚ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬

‫ﺒﺮﻣﺠﻴ ﺔ ﻛﻤﺎﺗﺮﻳﺪ ﻓ ﻲ ﺣﻠﻘ ﺔ ‪for .‬‬


‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟﻌﺪﻳﺪ ﻣﻦﺳﻄﻮر اﻟ‬
‫ﺘﺎ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ ﻛ‬
‫ﺑﻪ ﻣ ﺴﺎﻓ ﺔ‬‫ﺘﻢﺗﻨﻔﻴﺬ ﻛﻞﺳﻄﺮ‬
‫ﺒﻊ ﺧﻂ اﻟ ﺴﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة داﺧﻞ اﻟﺤﻠﻘ ﺔ ‪ ،‬وﻳ‬
‫ﺘ‬‫ﺑﺎدﺋ ﺔﻳ‬‫ﺘﻢ اﻟﻨﻈﺮ ﻓ ﻲ ﻛﻞﺳﻄﺮ ذي ﻣ ﺴﺎﻓ ﺔ‬
‫ﻳ‬
‫ﺑﺎدﺋ ﺔ ﻣﺮة واﺣﺪة ﻟﻜﻞﺳﻄﺮ‬

‫_ ‪55‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺎﻟﻘﺪر اﻟﺬيﺗﺮﻳﺪه ﻣﻊ ﻛﻞ ﻗﻴﻤ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬‫اﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻟﺬﻟﻚ ‪،‬ﻳﻤﻜﻨﻚ اﻟﻘﻴﺎم‬

‫ﺒﺮ ﻛﻞﺳﺎﺣﺮ أﻧﻨﺎ‬


‫ﺘﻨﺎ ‪ ،‬وﻧﺨ‬
‫ﺛﺎﻧ ًﻴﺎ إﱃ رﺳﺎﻟ‬‫دﻋﻨﺎ ﻧﻀﻴﻒﺳﻄ ﺮًا‬
‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺘﻬﻢ اﻟ‬
‫ﺘﻄﻠﻊ إﱃ ﺧﺪﻋ‬
‫ﻧ‬

‫اﻟ ﺴﺤﺮة ]'‪= ['alice'، 'david'، 'carolina‬ﻟﻠ ﺴﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة‪:‬‬

‫‪print (magician.title () + "،‬ﻛﺎﻧ ﺖ ﻫﺬه ﺧﺪﻋ ﺔ راﺋﻌ ﺔ!"( )"‪+ magician.title () + ". \ n‬‬
‫"‬
‫ﺘﺎﻟﻴ ﺔ ‪،‬‬
‫ﺘﻚ اﻟ‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫‪")u print‬ﻻ أﻃﻴﻖ اﻻﻧ‬

‫ﺘﻢ ﻗﻄﻊ ﻛﻞﺳﻄﺮ ﻣﺮة واﺣﺪة ﻟﻜﻞﺳﺎﺣﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬


‫ﺒﺎﻋ ﺔ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺒﺎرا ت اﻟﻄ‬
‫ﺑﺎدﺋ ﺔ ﻟﻜﻞ ﻣﻦ ﻋ‬‫ﻧﻈ ﺮًاﻷﻧﻨﺎ وﺿﻌﻨﺎ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺒﺮ اﻟﺤﻠﻘ ﺔ‪.‬ﻳﺆدي ﻫﺬا إﱃ إﻧﺸﺎء ﻣﺠﻤﻮﻋ ﺔ‬
‫ﺑﻌﺪ ﻛﻞ ﻣﺮور ﻋ‬ ‫ً‬
‫ﻓﺎرﻏﺎ‬ ‫ﺜﺎﻧﻴ ﺔ ‪u‬ﺳﻄ ﺮًا‬
‫ﺒﺎﻋ ﺔ اﻟ‬
‫ﺒﺎرة اﻟﻄ‬
‫ُﺪرج اﻟ ﺴﻄﺮ اﻟﺠﺪﻳﺪ )"‪("\ n‬ﻓ ﻲ ﻋ‬
‫ﻳ‬
‫ﺑﺪﻗ ﺔ ﻟﻜﻞ ﺷﺨﺺ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬‫ﺘ ﻲﺗﻢﺗﺠﻤﻴﻌﻬﺎ‬
‫ﻣﻦ اﻟﺮﺳﺎﺋﻞ اﻟ‬

‫أﻟﻴ ﺲ ‪،‬ﺗﻠﻚ ﻛﺎﻧ ﺖ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬


‫ﺘﺎﻟﻴ ﺔ ‪ ،‬أﻟﻴ ﺲ‪.‬‬
‫ﺘﻚ اﻟ‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫ﻻ أﻃﻴﻖ اﻻﻧ‬

‫دﻳﻔﻴﺪ ‪ ،‬ﻛﺎﻧ ﺖﺗﻠﻚ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬


‫ﺘﺎﻟﻴ ﺔ ‪ ،‬دﻳﻔﻴﺪ‪.‬‬
‫ﺘﻚ اﻟ‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫ﻻ أﻃﻴﻖ اﻻﻧ‬

‫ﻛﺎروﻟﻴﻨﺎ ‪ ،‬ﻛﺎﻧ ﺖﺗﻠﻚ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬


‫ﺘﻚ اﻟﻘﺎدﻣ ﺔ ‪ ،‬ﻛﺎروﻟﻴﻨﺎ‪.‬‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫ﻻ أﻃﻴﻖ اﻻﻧ‬

‫ﺒﺎ أﻧﻪ ﻣﻦ اﻟﻤﻔﻴﺪ اﻟﻘﻴﺎم‬


‫ﺘﺠﺪ ﻏﺎﻟ ً‬
‫ﺘﺨﺪام أي ﻋﺪدﺗﺮﻳﺪه ﻣﻦ اﻟ ﺴﻄﻮر ﻓ ﻲ ﺣﻠﻘﺎ ت ‪for .‬ﻣﻦ اﻟﻨﺎﺣﻴ ﺔ اﻟﻌﻤﻠﻴ ﺔ ‪،‬ﺳ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪for .‬‬
‫ﺘﻠﻔ ﺔ ﻣﻊ ﻛﻞ ﻋﻨﺼﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ﻋﻨﺪ اﺳ‬
‫ﺑﻌﺪد ﻣﻦ اﻟﻌﻤﻠﻴﺎ ت اﻟﻤﺨ‬

‫ﺑﻌﺪ ﺣﻠﻘ ﺔ‬‫ﺑﺸ ﻲء ﻣﺎ‬‫اﻟﻘﻴﺎم‬


‫ﺘﻘﺎل إﱃ ﻋﻤﻞ‬
‫ﺘﻠ ﺔ ﻣﻦ اﻟﻤﺨﺮﺟﺎ ت أو اﻻﻧ‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲﺗﻠﺨﻴﺺ ﻛ‬
‫ﺘﻨﻔﻴﺬ؟ ﻋﺎدة ‪،‬ﺳ‬
‫ﺘﻬﺎء ﺣﻠﻘ ﺔ ‪for‬ﻣﻦ اﻟ‬
‫ﺑﻤﺠﺮد اﻧ‬‫ﻣﺎذاﻳﺤﺪ ث‬
‫ﺑﺮﻧﺎﻣﺠﻚ‪.‬‬‫آﺧﺮﻳﺠ ﺐ أنﻳﻨﺠﺰه‬

‫ﺑﺎدﺋ ﺔ ﻟﻬﺎ ﻣﺮة واﺣﺪة دون‬‫ﺘﻢ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬


‫ﺘ ﻲ ﻟﻢﻳ‬
‫ﺑﻌﺪ اﻟﺤﻠﻘ ﺔ ‪for‬اﻟ‬‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻢﺗﻨﻔﻴﺬ أي أﺳﻄﺮ ﻣﻦ اﻟ‬
‫ﻳ‬
‫ﺑﻌﺪ‬‫ﺘﺎز‪ .‬ﻟﻌﺮض ﻫﺬه اﻟﺮﺳﺎﻟ ﺔ اﻟﺠﻤﺎﻋﻴ ﺔ‬
‫ﺘ ﺐ ﺷﻜﺮ ﻟﻤﺠﻤﻮﻋ ﺔ اﻟ ﺴﺤﺮة ﻛﻜﻞ ‪ ،‬وﻧﺸﻜﺮ ﻫﻢ ﻋﲆﺗﻘﺪﻳﻢ ﻋﺮض ﻣﻤ‬
‫ﺗﻜﺮار‪ .‬دﻋﻨﺎ ﻧﻜ‬
‫ﺑﺎدﺋ ﺔ‪:‬‬‫ﺑﺪون ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﻌﺪ ﺣﻠﻘ ﺔ ‪for‬‬‫ﺒﺎﻋ ﺔ ﺟﻤﻴﻊ اﻟﺮﺳﺎﺋﻞ اﻟﻔﺮدﻳ ﺔ ‪ ،‬ﻧﻀﻊ رﺳﺎﻟ ﺔ اﻟﺸﻜﺮ‬
‫ﻃ‬

‫اﻟ ﺴﺤﺮة ]'‪= ['alice'، 'david'، 'carolina‬ﻟﻠ ﺴﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة‪:‬‬

‫ﺘﺎﻟﻴ ﺔ ‪+". \ n ") ،‬‬


‫ﺘﻚ اﻟ‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫‪print (magician.title () + "،‬ﻛﺎﻧ ﺖ ﻫﺬه ﺧﺪﻋ ﺔ راﺋﻌ ﺔ!"( ‪")print‬ﻻ أﻃﻴﻖ اﻻﻧ‬
‫"‬
‫)( ‪+ magician.title‬‬

‫ً‬
‫ﻋﺮﺿﺎﺳﺤﺮﻳًﺎ راﺋﻌً ﺎ!"(‬ ‫‪")u print‬ﺷﻜ ﺮًا ﻟﻠﺠﻤﻴﻊ‪ .‬ﻟﻘﺪ ﻛﺎن‬

‫ﺑﻊ‬
‫‪56‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫ﺑﺎدﺋ ﺔ ﻟﻠ ﺴﻄﺮ‬‫ﺑ ًﻘﺎ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻧﻈ ًﺮا ﻟﻌﺪم وﺟﻮد ﻣ ﺴﺎﻓ ﺔ‬
‫ﺘﻢﺳﺎ‬
‫ﺘﻴﻦ ﻣﺮة واﺣﺪة ﻟﻜﻞﺳﺎﺣﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬ﻛﻤﺎ رأﻳ‬
‫ﺒﻮﻋ‬
‫ﺗﻴﻦ ﻣﻄ‬
‫ﺒﺎر‬
‫ﺘﻜﺮر أول ﻋ‬
‫ﺗ‬

‫ﺘﻪ ﻣﺮة واﺣﺪة ﻓﻘﻂ‪:‬‬


‫ﺒﺎﻋ‬
‫ﺘﻢ ﻃ‬
‫ﻋﻨﺪ ‪u ،‬ﻳ‬

‫أﻟﻴ ﺲ ‪،‬ﺗﻠﻚ ﻛﺎﻧ ﺖ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬


‫ﺘﺎﻟﻴ ﺔ ‪ ،‬أﻟﻴ ﺲ‪.‬‬
‫ﺘﻚ اﻟ‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫ﻻ أﻃﻴﻖ اﻻﻧ‬

‫دﻳﻔﻴﺪ ‪ ،‬ﻛﺎﻧ ﺖﺗﻠﻚ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬


‫ﺘﺎﻟﻴ ﺔ ‪ ،‬دﻳﻔﻴﺪ‪.‬‬
‫ﺘﻚ اﻟ‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫ﻻ أﻃﻴﻖ اﻻﻧ‬

‫ﻛﺎروﻟﻴﻨﺎ ‪ ،‬ﻛﺎﻧ ﺖﺗﻠﻚ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬


‫ﺘﻚ اﻟﻘﺎدﻣ ﺔ ‪ ،‬ﻛﺎروﻟﻴﻨﺎ‪.‬‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫ﻻ أﻃﻴﻖ اﻻﻧ‬

‫ﺷﻜﺮا ﻟﻜﻞ ﺷﺨﺺ‪ .‬ﻛﺎن ﻫﺬا ﻋﺮضﺳﺤﺮي ﻋﻈﻴﻢ!‬

‫ﺑﻴﺎﻧﺎ ت ﻛﺎﻣﻠ ﺔ‪.‬‬‫ﺘﻠﺨﻴﺺ ﻋﻤﻠﻴ ﺔﺗﻢ إﺟﺮاؤ ﻫﺎ ﻋﲆ ﻣﺠﻤﻮﻋ ﺔ‬


‫ﺘﺠﺪ أن ﻫﺬه ﻃﺮﻳﻘ ﺔ ﺟﻴﺪة ﻟ‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪for ،‬ﺳ‬
‫ﺑﺎﺳ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺑﻤﻌﺎﻟﺠ ﺔ اﻟ‬‫ﻋﻨﺪﻣﺎﺗﻘﻮم‬

‫ﺒ ﺔ ﻣﻦ ﺧﻼلﺗﺸﻐﻴﻞ ﻗﺎﺋﻤ ﺔ ﻣﻦ اﻟﺸﺨﺼﻴﺎ ت وﻋﺮض ﻛﻞ ﺣﺮف ﻋﲆ اﻟﺸﺎﺷ ﺔ‪.‬‬


‫ﺘﻬﻴﺌ ﺔ ﻟﻌ‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪for‬ﻟ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫ﺑﻌﺪ رﺳﻢ ﺟﻤﻴﻊ اﻷﺣﺮف ﻋﲆ اﻟﺸﺎﺷ ﺔ‪.‬‬‫ﺘﺸﻐﻴﻞ اﻵن‬


‫ﺘ ﻲﺗﻌﺮض زر اﻟ‬
‫ﺑﻌﺪ ﻫﺬه اﻟﺤﻠﻘ ﺔ اﻟ‬‫ﺑﺎدﺋ ﺔ‬‫ﺑﺪون ﻣ ﺴﺎﻓ ﺔ‬‫ﺘﻠ ﺔ‬
‫ﺑﺔ ﻛ‬
‫ﺘﺎ‬
‫ﺑﻌﺪ ذﻟﻚ ﻛ‬‫ﻳﻤﻜﻨﻚ‬

‫ﺒﺎدﺋ ﺔ‬
‫ﺗﺠﻨ ﺐ أﺧﻄﺎء اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺑﻘ ﺔ ‪ ،‬ﻛﺎﻧ ﺖ‬
‫ﺜﻠ ﺔ اﻟ ﺴﺎ‬
‫ﺑﺎﻟﺨﻂ اﻟﻤﻮﺟﻮد ﻓﻮﻗﻪ‪ .‬ﻓ ﻲ اﻷﻣ‬‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻢﺗﻮﺻﻴﻞﺳﻄﺮ واﺣﺪ ﻣﻦ اﻟ‬
‫ﺘﻰﻳ‬
‫ﺘﺤﺪﻳﺪ ﻣ‬
‫ﺒﺎدﺋ ﺔ ﻟ‬
‫ﺘﺨﺪم ‪Python‬اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺗﺴ‬

‫ﺑﺎدﺋ ﺔ ﻟﻬﺎ‪.‬‬‫ﺒﻊ اﻟﺮﺳﺎﺋﻞ إﱃ اﻟ ﺴﺤﺮة اﻟﻔﺮدﻳﻴﻦ ﺟﺰءًا ﻣﻦ ﺣﻠﻘ ﺔ ‪for‬ﻷﻧﻪﺗﻢ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺘ ﻲﺗﻄ‬
‫اﻷﺳﻄﺮ اﻟ‬

‫ﺑﺮﻣﺠﻴ ﺔ‬‫ﺑ ﺔﺗﻌﻠﻴﻤﺎ ت‬


‫ﺘﺎ‬
‫ﺒﺎرك ﻋﲆ ﻛ‬
‫ﺒﻴﻀﺎء ﻹﺟ‬
‫ﺘﺨﺪم اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺒﺎدﺋ ﺔﻳﺠﻌﻞ اﻟﻜﻮدﺳﻬﻞ اﻟﻘﺮاءة‪ .‬ﻓ ﻲ اﻷﺳﺎس ‪،‬ﺗ ﺴ‬
‫ﺘﺨﺪام ‪Python‬ﻟﻠﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫اﺳ‬

‫ﺘﻮﻳﺎ ت‬
‫ﺒﺮﻣﺠﻴ ﺔ ﻋﲆ ﻋﺪة ﻣ ﺴ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻞ ﻣﻦ اﻟ‬
‫ﺑﺎدﺋ ﺔ ﻟﻜ‬‫ﺘﻼﺣﻆ وﺟﻮد ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﺮاﻣﺞ ‪Python‬اﻷﻃﻮل ‪،‬ﺳ‬‫ﺋﻴ ﺔ واﺿﺤ ﺔ‪ .‬ﻓ ﻲ‬
‫ﺑﻨﻴ ﺔ ﻣﺮ‬
‫ﺑﺪﻗ ﺔ و‬‫ﻣﻨ ﺴﻘ ﺔ‬

‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺘﻨﻈﻴﻢ اﻟﻌﺎم ﻟﻠ‬
‫ﺘ ﺴﺎ ب ﻓﻜﺮة ﻋﺎﻣ ﺔ ﻋﻦ اﻟ‬
‫ﺒﺎدﺋ ﺔ ﻫﺬه ﻋﲆ اﻛ‬
‫ﺘﻮﻳﺎ ت اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺘﻠﻔ ﺔ‪.‬ﺗ ﺴﺎﻋﺪك ﻣ ﺴ‬
‫ﻣﺨ‬

‫ﺒﺎدﺋ ﺔ‬
‫ﺑﻌﺾ أﺧﻄﺎء اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬‫ﺒﺔ‬
‫ﺘﺎج إﱃ ﻣﺮاﻗ‬
‫ﺘﺤ‬‫ﺒﺎدﺋ ﺔ اﻟﺼﺤﻴﺤ ﺔ ‪،‬ﺳ‬
‫ﺘﻤﺪ ﻋﲆ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺘ ﻲﺗﻌ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺒﺪأ ﻓ ﻲ ﻛ‬
‫ﻋﻨﺪﻣﺎﺗ‬

‫ﺑﺎدﺋ ﺔ أو ﻧ ﺴﻴﺎن‬‫ﺘﺎج إﱃ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬


‫ﺘ ﻲ ﻻﺗﺤ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻞ اﻟ‬
‫ﺑﺎدﺋ ﺔ ﻟﻜ‬‫ﺑﻮﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬‫ﺜﺎل ‪،‬ﻳﻘﻮم اﻷﺷﺨﺎص أﺣﻴﺎﻧًﺎ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫اﻟﺸﺎﺋﻌ ﺔ‪ .‬ﻋﲆﺳ‬

‫ﺗﺼﺤﻴﺤﻬﺎ ﻋﻨﺪ‬
‫ﺒﻞ و‬
‫ﺘﻘ‬‫ﺒﻬﺎ ﻓ ﻲ اﻟﻤ ﺴ‬
‫ﺜﻠ ﺔ ﻋﲆ ﻫﺬه اﻷﺧﻄﺎء اﻵن ﻋﲆﺗﺠﻨ‬
‫ﺘ ﺴﺎﻋﺪك رؤﻳ ﺔ أﻣ‬
‫ﺑﺎدﺋ ﺔ‪.‬ﺳ‬‫ﺘﺎج إﱃ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﻞ اﻟ‬
‫ﺑﺎدﺋ ﺔ ﻟﻠﻜ‬‫وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬

‫ﺑﺮاﻣﺠﻚ اﻟﺨﺎﺻ ﺔ‪.‬‬‫ﻇﻬﻮر ﻫﺎ ﻓ ﻲ‬

‫ﺜﺮ ﺷﻴﻮﻋً ﺎ‪.‬‬


‫ﺒﺎدﺋ ﺔ اﻷﻛ‬
‫ﺑﻌﺾ أﺧﻄﺎء اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬‫دﻋﻨﺎ ﻧﻔﺤﺺ‬

‫ﺒﺎدﺋ ﺔ‬
‫ﻧ ﺴﻴﺎن اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺜﻮن‪:‬‬
‫ﺑﺎﻳ‬‫ﺘﺬﻛﺮك‬
‫ﺒﺎرة ‪for‬ﻓ ﻲ ﺣﻠﻘ ﺔ‪ .‬إذا ﻧ ﺴﻴ ﺖ ‪ ،‬ﻓ ﺴ‬
‫ﺑﻌﺪ ﻋ‬‫ﺑﺎدﺋ ﺔ ﻟﻠ ﺴﻄﺮ‬‫ﺑﻮﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬‫ﺋﻤﺎ‬
‫ﻗﻢ دا ً‬

‫اﻟ ﺴﺤﺮة‪py .‬‬ ‫اﻟ ﺴﺤﺮة ]'‪= ['alice'، 'david'، 'carolina‬ﻟﻠ ﺴﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة‪)u print :‬اﻟ ﺴﺎﺣﺮ(‬

‫‪57-‬اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ‬
‫‪Machine Translated by Google‬‬

‫ﺑﺎدﺋ ﺔ وﻻ‬‫ﺘﻠ ﺔ ذا ت ﻣ ﺴﺎﻓ ﺔ‬


‫ﺘﻮﻗﻊ ‪Python‬ﻛ‬
‫ﺒﺎﻋ ﺔ ﻋﻨﺪ ‪u ،‬ﻟﻜﻨﻪ ﻟﻴ ﺲ ﻛﺬﻟﻚ‪ .‬ﻋﻨﺪﻣﺎﺗ‬
‫ﺒﻴﺎن اﻟﻄ‬
‫ﺑﺎدﺋ ﺔ ﻟ‬‫ﻳﺠ ﺐ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﻬﺎ ﻣﺸﻜﻠ ﺔ‪.‬‬‫ﺘﻴﺢ ﻟﻚ ﻣﻌﺮﻓ ﺔ اﻟﺨﻂ اﻟﺬيﺗﻮﺟﺪ‬
‫ﺗﺠﺪ واﺣﺪة ‪ ،‬ﻓﺈﻧﻬﺎﺗ‬

‫ﺒﺎﻋ ﺔ اﻟ ﺴﻄﺮ ‪3‬‬


‫ﻣﻠﻒ ‪"magicians.py" ،‬ﻃ‬
‫)اﻟ ﺴﺎﺣﺮ(‬
‫^‬

‫ﺘﻠ ﺔ‬
‫ﺑﺎدﺋ ﺔ ﻟﻜ‬‫ﺑﺎدﺋ ﺔ‪:‬ﺗﻮﻗﻊ وﺟﻮد ﻣ ﺴﺎﻓ ﺔ‬‫ﺧﻄﺄ ﻣ ﺴﺎﻓ ﺔ‬

‫ﺑﺎدﺋ ﺔ ﻟﻤﻠﻒ‬‫ﺒﺎدﺋ ﺔ ﻋﻦ ﻃﺮﻳﻖ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬ ‫ً‬


‫ﻋﺎدة ﺣﻞ ﻫﺬا اﻟﻨﻮع ﻣﻦ أﺧﻄﺎء اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬ ‫ﻳﻤﻜﻨﻚ‬
‫ﺒﺎرة ‪for .‬‬
‫ﺑﻌﺪ اﻟﻌ‬‫ﺒﺎﺷﺮة‬
‫اﻟ ﺴﻄﺮ أو اﻷﺳﻄﺮ ﻣ‬

‫ﺑﺎدﺋ ﺔﺳﻄﻮر إﺿﺎﻓﻴ ﺔ‬‫ﻧ ﺴﻴﺎن ﻣ ﺴﺎﻓ ﺔ‬


‫ﺘﻮﻗﻌ ﺔ‪.‬ﻳﻤﻜﻦ أنﻳﺤﺪ ث‬
‫ﺘﻴﺠ ﺔ اﻟﻤ‬
‫ﺑﻚ دون أي أﺧﻄﺎء وﻟﻜﻨﻬﺎ ﻟﻦﺗﺆدي إﱃ اﻟﻨ‬‫ﺘﻌﻤﻞ اﻟﺤﻠﻘ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن ‪،‬ﺳ‬‫ﻓﻲ‬
‫ﺒﻌﺾ أﺳﻄﺮ ﻫﺎ‪.‬‬
‫ﺑﺎدﺋ ﺔ ﻟ‬‫ﺗﻨ ﺴﻰ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﺎﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻬﺎم ﻓ ﻲ ﺣﻠﻘ ﺔ و‬‫ﻫﺬا ﻋﻨﺪﻣﺎﺗﺤﺎول اﻟﻘﻴﺎم‬

‫ﺒﺮ ﻛﻞﺳﺎﺣﺮ أﻧﻨﺎ‬


‫ﺘ ﻲﺗﺨ‬
‫ﺜﺎﻧ ﻲ ﻓ ﻲ اﻟﺤﻠﻘ ﺔ اﻟ‬
‫ﺑﺎدﺋ ﺔ ﻟﻠ ﺴﻄﺮ اﻟ‬‫ﺜﺎل ‪ ،‬ﻫﺬا ﻣﺎﻳﺤﺪ ث ﻋﻨﺪﻣﺎ ﻧﻨ ﺴﻰ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺘﻬﻢ اﻟ‬
‫ﺘﻄﻠﻊ إﱃ ﺧﺪﻋ‬
‫ﻧ‬

‫اﻟ ﺴﺤﺮة =]"أﻟﻴ ﺲ" ‪" ،‬دﻳﻔﻴﺪ" ‪" ،‬ﻛﺎروﻟﻴﻨﺎ"[‬


‫ﻟﻠ ﺴﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة‪:‬‬
‫‪print (magician.title () + "،‬ﻛﺎﻧ ﺖ ﻫﺬه ﺧﺪﻋ ﺔ راﺋﻌ ﺔ!"(‬
‫"‬
‫ﺘﺎﻟﻴ ﺔ ‪،‬‬
‫ﺘﻚ اﻟ‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬ ‫‪")u print‬ﻻ أﻃﻴﻖ اﻻﻧ‬
‫)"‪+ magician.title () + ". \ n‬‬

‫ﺗﺠﺪﺳﻄ ﺮًا واﺣﺪًا ﻋﲆ‬


‫ﺒﺎﻋ ﺔ ﻋﻨﺪ ‪u ،‬وﻟﻜﻦ ﻧﻈ ﺮًاﻷن ‪Python‬‬
‫ﺒﻴﺎن اﻟﻄ‬
‫ﺑﺎدﺋ ﺔ ﻟ‬‫ﺘﻢ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺘﺮض أنﻳ‬
‫ﻣﻦ اﻟﻤﻔ‬
‫ﺒﺎﻋ ﺔ ﻣﺮة واﺣﺪة ﻟﻜﻞ‬
‫ﺘﻢﺗﻨﻔﻴﺬ أولﺗﻌﻠﻴﻤ ﺔ ﻃ‬
‫ﺘﻴﺠ ﺔ ﻟﺬﻟﻚ ‪،‬ﻳ‬
‫ﺒﻠﻎ ﻋﻦ ﺧﻄﺄ‪ .‬ﻧ‬
‫ﺒﺎرة ‪for ،‬ﻓﺈﻧﻬﺎ ﻻﺗ‬
‫ﺑﻌﺪ اﻟﻌ‬‫ﺑﺎدﺋ ﺔ‬‫اﻷﻗﻞ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺘﻢﺗﻨﻔﻴﺬه ﻣﺮة‬
‫ﺜﺎﻧ ﻲ ‪ ،‬ﻟﺬﻟﻚﻳ‬
‫ﺒﺎﻋ ﺔ اﻟ‬
‫ﺒﻴﺎن اﻟﻄ‬
‫ﺑﺎدﺋ ﺔ ﻟ‬‫ﺘﻢ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﺎدﺋ ﺔ ﻟﻪ‪ .‬ﻻﻳ‬‫اﺳﻢ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔﻷﻧﻪﺗﻢ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺘﻠﻘﻰ‬
‫ﺘ ﻲﺗ‬
‫ﺘﻬﺎء اﻟﺤﻠﻘ ﺔ ﻣﻦﺗﺸﻐﻴﻞ ‪ning.‬ﻷن اﻟﻘﻴﻤ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ ﻟﻠ ﺴﺎﺣﺮ ﻫ ﻲ "ﻛﺎروﻟﻴﻨﺎ" ‪ ،‬ﻓﻬ ﻲ اﻟﻮﺣﻴﺪة اﻟ‬
‫ﺑﻌﺪ اﻧ‬‫واﺣﺪة ﻓﻘﻂ‬
‫ﺘﺎﻟﻴ ﺔ"‪:‬‬
‫ﺘﻄﻠﻊ إﱃ اﻟﺨﺪﻋ ﺔ اﻟ‬
‫رﺳﺎﻟ ﺔ "اﻟ‬

‫أﻟﻴ ﺲ ‪،‬ﺗﻠﻚ ﻛﺎﻧ ﺖ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬


‫دﻳﻔﻴﺪ ‪ ،‬ﻛﺎﻧ ﺖﺗﻠﻚ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬
‫ﻛﺎروﻟﻴﻨﺎ ‪ ،‬ﻛﺎﻧ ﺖﺗﻠﻚ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬
‫ﺘﻚ اﻟﻘﺎدﻣ ﺔ ‪ ،‬ﻛﺎروﻟﻴﻨﺎ‪.‬‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫ﻻ أﻃﻴﻖ اﻻﻧ‬

‫ﺘﻴﺠ ﺔ اﻟﻤﺮﺟﻮةﻷن ﻫﻨﺎك ﻣﺸﻜﻠ ﺔﺗﺤﺪ ث‬


‫ﺘﺞ اﻟﻨ‬
‫ﻫﺬا ﺧﻄﺄ ﻣﻨﻄﻘ ﻲ‪ .‬اﻟﺼﻴﻐ ﺔ ﻫ ﻲ ﻛﻮد ‪ Python‬ﺻﺎﻟﺢ ‪ ،‬ﻟﻜﻦ اﻟﻜﻮد ﻻﻳﻨ‬
‫ﺘﻢﺗﻨﻔﻴﺬه ﻣﺮة واﺣﺪة ﻓﻘﻂ ‪ ،‬ﻓﺤﺪد‬
‫ﺘﻜﺮر ﻣﺮة واﺣﺪة ﻟﻜﻞ ﻋﻨﺼﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ وﻳ‬
‫ﺘﻮﻗﻊ أنﺗﺮى إﺟﺮا ًء ﻣﻌﻴﻨًﺎﻳ‬
‫ﻓ ﻲ ﻣﻨﻄﻘﻬﺎ‪ .‬إذا ﻛﻨ ﺖﺗ‬
‫ﺑﺎدﺋ ﺔ ﻟ ﺴﻄﺮ أو ﻣﺠﻤﻮﻋ ﺔﺳﻄﻮر‪.‬‬‫ﺑﺤﺎﺟ ﺔ إﱃ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬‫ﻣﺎ إذا ﻛﻨ ﺖ‬

‫ﺑﻊ‬
‫‪58‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎدﺋ ﺔ دون داع‬


‫اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺒﺮك ﻋﻦ اﻟﻤ ﺴﺎﻓ ﺔ‬
‫ﺗﺨ‬‫ﺑﺎدﺋ ﺔ ‪ ،‬ﻓﺈن ‪Python‬‬‫ﺘﺎج إﱃ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﺎدﺋ ﺔ ﻟ ﺴﻄﺮ ﻻﻳﺤ‬‫ﺑﻮﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬‫إذا ﻗﻤ ﺖ ﻋﻦ ﻃﺮﻳﻖ اﻟﺨﻄﺄ‬
‫ﺘﻮﻗﻌ ﺔ‪:‬‬
‫ﺒﺎدﺋ ﺔ ﻏﻴﺮ اﻟﻤ‬
‫اﻟ‬

‫ﺑﻌﺎﻟﻢ "!‪Python‬‬‫ﺒﺎ‬
‫= ‪"hello_world.py message‬ﻣﺮﺣ ً‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫‪u‬ﻃ‬

‫ﺒﺎﻋ ﺔ ﻋﻨﺪ ‪u ،‬ﻷﻧﻬﺎ ﻻﺗﻔﻌﻞ ذﻟﻚ‬


‫ﺒﻴﺎن اﻟﻄ‬
‫ﺑﺎدﺋ ﺔ ﻟ‬‫ﺘﺎج إﱃ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﻻ ﻧﺤ‬
‫ﺜﻮن ﻋﻦ ﻫﺬا اﻟﺨﻄﺄ‪:‬‬
‫ﺑﺎﻳ‬‫ﺑﻠﻐ ﺖ‬
‫ﺛﻢ ‪ ،‬أ‬‫ﺘﻤ ﻲ إﱃ اﻟﺨﻂ اﻟﺬي ﻓﻮﻗﻪ ؛ وﻣﻦ‬
‫ﺗﻨ‬

‫ﻣﻠﻒ ‪"hello_world.py" ،‬اﻟ ﺴﻄﺮ ‪2‬‬


‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫ﻃ‬
‫^‬

‫ﺘﻮﻗﻌ ﺔ‬
‫ﺑﺎدﺋ ﺔ ﻏﻴﺮ ﻣ‬‫ﺑﺎدﺋ ﺔ‪ :‬ﻣ ﺴﺎﻓ ﺔ‬‫ﺧﻄﺄ ﻣ ﺴﺎﻓ ﺔ‬

‫ﺒﺐ‬
‫ﺑﺎدﺋ ﺔ ﻓﻘﻂ ﻋﻨﺪﻣﺎﻳﻜﻮن ﻟﺪﻳﻚﺳ‬‫ﺘﻮﻗﻌ ﺔ ﻋﻦ ﻃﺮﻳﻖ ﻋﻤﻞ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺒﺎدﺋ ﺔ ﻏﻴﺮ اﻟﻤ‬
‫ﻳﻤﻜﻨﻚﺗﺠﻨ ﺐ أﺧﻄﺎء اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺑﺎدﺋ ﺔ ﻫ ﻲ‬‫ﺘﺮك ﻣ ﺴﺎﻓ ﺔ‬
‫ﺘ ﻲﻳﺠ ﺐ أنﺗ‬
‫ﺒﻬﺎ ﻓ ﻲ ﻫﺬه اﻟﻤﺮﺣﻠ ﺔ ‪ ،‬اﻷﺳﻄﺮ اﻟﻮﺣﻴﺪة اﻟ‬
‫ﺘ‬‫ﺘ ﻲﺗﻜ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺑﺬﻟﻚ‪ .‬ﻓ ﻲ اﻟ‬‫ﻣﺤﺪد ﻟﻠﻘﻴﺎم‬
‫ﺘ ﻲﺗﺮﻳﺪﺗﻜﺮار ﻫﺎ ﻟﻜﻞ ﻋﻨﺼﺮ ﻓ ﻲ ﺣﻠﻘ ﺔ ‪for .‬‬
‫اﻹﺟﺮاءا ت اﻟ‬

‫ﺑﻌﺪ اﻟﺤﻠﻘ ﺔ‬‫ﺑﺎدﺋ ﺔ ﻏﻴﺮ ﺿﺮورﻳ ﺔ‬‫ﻣ ﺴﺎﻓ ﺔ‬


‫ﺘﻢﺗﻜﺮار ﻫﺬا اﻟﺮﻣﺰ ﻣﺮة واﺣﺪة‬
‫ﺘﻬﺎء ﺣﻠﻘ ﺔ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺑﻌﺪ اﻧ‬‫ﺘ ﻲﻳﺠ ﺐﺗﺸﻐﻴﻠﻬﺎ‬
‫ﺑﺎدﺋ ﺔ ﻟﻠﺸﻔﺮة اﻟ‬‫ﺑﻮﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬‫ﺑﻄﺮﻳﻖ اﻟﺨﻄﺄ‬‫إذا ﻗﻤ ﺖ‬
‫ﺘﻠﻘﻰ ﺧﻄﺄ ﻣﻨﻄﻘ ًﻴﺎ‬
‫ﺒﺎ ﻣﺎﺗ‬
‫ﺑﻼغ ﻋﻦ ﺧﻄﺄ ‪ ،‬وﻟﻜﻦ ﻏﺎﻟ ً‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن ‪،‬ﻳﻄﻠ ﺐ ﻫﺬا ﻣﻦ ‪Python‬اﻹ‬‫ﻟﻜﻞ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻓ ﻲ‬
‫ﺴﻴﻄﺎ‪.‬‬
‫ً‬ ‫ﺑ‬
‫ﺑﺎﻟﺨﻄﺄ ﻟﻠ ﺴﻄﺮ اﻟﺬي ﺷﻜﺮ اﻟ ﺴﺤﺮة ﻛﻤﺠﻤﻮﻋ ﺔ‬‫ﺑﺎدﺋ ﺔ‬‫ﺜﺎل ‪ ،‬دﻋﻨﺎ ﻧﺮى ﻣﺎﻳﺤﺪ ث ﻋﻨﺪﻣﺎ ﻧﻀﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﻘﺪﻳﻢ ﻋﺮض ﺟﻴﺪ‪:‬‬
‫ﻟ‬

‫اﻟ ﺴﺤﺮة ]'‪= ['alice'، 'david'، 'carolina‬ﻟﻠ ﺴﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة‪:‬‬

‫ﺘﺎﻟﻴ ﺔ ‪+". \ n ") ،‬‬


‫ﺘﻚ اﻟ‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫‪print (magician.title () + "،‬ﻛﺎﻧ ﺖ ﻫﺬه ﺧﺪﻋ ﺔ راﺋﻌ ﺔ!"( ‪")print‬ﻻ أﻃﻴﻖ اﻻﻧ‬
‫"‬
‫)( ‪+ magician.title‬‬

‫ً‬
‫ﻋﺮﺿﺎﺳﺤﺮﻳًﺎ راﺋﻌً ﺎ!"(‬ ‫‪")u print‬ﺷﻜ ﺮًا ﻟﻠﺠﻤﻴﻊ ‪ ،‬ﻟﻘﺪ ﻛﺎن‬

‫ﺘﻪ ﻣﺮة واﺣﺪة ﻟﻜﻞ ﺷﺨﺺ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬ﻛﻤﺎﺗﺮى ﻓ ﻲ ‪v:‬‬


‫ﺒﺎﻋ‬
‫ﺘﻢ ﻃ‬
‫ﺑﺎدﺋ ﺔ ﻟﻠ ﺴﻄﺮ ﻋﻨﺪ ‪u ،‬ﻳ‬‫ﻧﻈ ًﺮاﻷﻧﻪﺗﻢ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬

‫أﻟﻴ ﺲ ‪،‬ﺗﻠﻚ ﻛﺎﻧ ﺖ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬


‫ﺘﺎﻟﻴ ﺔ ‪ ،‬أﻟﻴ ﺲ‪.‬‬
‫ﺘﻚ اﻟ‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫ﻻ أﻃﻴﻖ اﻻﻧ‬

‫ً‬
‫ﻋﺮﺿﺎﺳﺤﺮﻳًﺎ راﺋﻌً ﺎ!‬ ‫ﺷﻜ ﺮًا ﻟﻠﺠﻤﻴﻊ ‪ ،‬ﻟﻘﺪ ﻛﺎن‬
‫دﻳﻔﻴﺪ ‪ ،‬ﻛﺎﻧ ﺖﺗﻠﻚ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬
‫ﺘﺎﻟﻴ ﺔ ‪ ،‬دﻳﻔﻴﺪ‪.‬‬
‫ﺘﻚ اﻟ‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫ﻻ أﻃﻴﻖ اﻻﻧ‬

‫ً‬
‫ﻋﺮﺿﺎﺳﺤﺮﻳًﺎ راﺋﻌً ﺎ!‬ ‫ﺷﻜ ﺮًا ﻟﻠﺠﻤﻴﻊ ‪ ،‬ﻟﻘﺪ ﻛﺎن‬
‫ﻛﺎروﻟﻴﻨﺎ ‪ ،‬ﻛﺎﻧ ﺖﺗﻠﻚ ﺧﺪﻋ ﺔ ﻋﻈﻴﻤ ﺔ!‬
‫ﺘﻚ اﻟﻘﺎدﻣ ﺔ ‪ ،‬ﻛﺎروﻟﻴﻨﺎ‪.‬‬
‫ﺘﻈﺎرﻷرى ﺧﺪﻋ‬
‫ﻻ أﻃﻴﻖ اﻻﻧ‬

‫ً‬
‫ﻋﺮﺿﺎﺳﺤﺮﻳًﺎ راﺋﻌً ﺎ!‬ ‫ﺷﻜ ﺮًا ﻟﻠﺠﻤﻴﻊ ‪ ،‬ﻟﻘﺪ ﻛﺎن‬

‫‪59-‬اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎدﺋ ﺔ‬
‫ﺑﻪ ﻟﻠﺨﻄﺄ اﻟﻤﻮﺟﻮد ﻓ ﻲ "ﻧ ﺴﻴﺎن اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﻫﺬا ﺧﻄﺄ ﻣﻨﻄﻘ ﻲ آﺧﺮ ‪ ،‬ﻣﺸﺎ‬
‫ﺑﻚ ‪،‬‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﺨﺪام اﻟ‬
‫ﺑﺎﺳ‬‫ﺧﻄﻮط إﺿﺎﻓﻴ ﺔ "ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪58.‬ﻧﻈ ﺮًاﻷن ‪Python‬ﻻﺗﻌﺮف ﻣﺎﺗﺤﺎولﺗﺤﻘﻴﻘﻪ‬
‫ﺑﺼﻴﻐ ﺔ ﺻﺤﻴﺤ ﺔ‪ .‬إذاﺗﻢﺗﻜﺮار أﺣﺪ اﻹﺟﺮاءا ت ﻋﺪة ﻣﺮا ت ﻋﻨﺪﻣﺎ ﻛﺎن‬‫ﺑﺔ‬
‫ﺘﻮ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻤﻜ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﺸﻐﻴﻞ ﺟﻤﻴﻊ اﻟ‬
‫ﺑ‬‫ﻓ ﺴﻮفﺗﻘﻮم‬
‫ﺘﺎج ﻓﻘﻂ إﱃ إﻟﻐﺎءﺗﺤﺪﻳﺪ رﻣﺰ ﻫﺬا اﻹﺟﺮاء‪.‬‬
‫ﻳﺠ ﺐﺗﻨﻔﻴﺬه ﻣﺮة واﺣﺪة ﻓﻘﻂ ‪ ،‬ﻓﺤﺪد ﻣﺎ إذا ﻛﻨ ﺖﺗﺤ‬

‫ﻧ ﺴﻴﺎن اﻟﻘﻮﻟﻮن‬
‫ﺑﺪاﻳ ﺔ ﺣﻠﻘ ﺔ‪.‬‬‫ﺘﺎﻟ ﻲ ﻋﲆ أﻧﻪ‬
‫ﺜﻮن أنﺗﻔ ﺴﺮ اﻟ ﺴﻄﺮ اﻟ‬
‫ﺑﺎﻳ‬
‫ﺘﺎن ﻓ ﻲ ﻧﻬﺎﻳ ﺔﺗﻌﻠﻴﻤ ﺔ ‪for‬‬
‫ﺒﺮ اﻟﻨﻘﻄ‬
‫ﻳﺨ‬

‫اﻟ ﺴﺤﺮة ]'‪= ['alice'، 'david'، 'carolina‬أﻧ ﺖﺳﺎﺣﺮ ﻓ ﻲ اﻟ ﺴﺤﺮة‬

‫ﺒﺎﻋ ﺔ )ﺳﺎﺣﺮ(‬
‫ﻃ‬

‫ﺘﻠﻘﻰ ﺧﻄﺄ ﻧﺤﻮﻳًﺎﻷن ‪Python‬ﻻﺗﻌﺮف ﻣﺎﺗﺤﺎول‬


‫ﺘ‬‫ﺘﻴﻦ ﻋﻦ ﻃﺮﻳﻖ اﻟﺨﻄﺄ ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ ‪u ،‬ﻓ ﺴ‬
‫إذا ﻧ ﺴﻴ ﺖ اﻟﻨﻘﻄ‬
‫ﺘﻨﺪ ﻫ ﺶ ﻣﻦ ﻣﻘﺪار‬
‫ﺜﻮر ﻋﻠﻴﻪ‪.‬ﺳ‬
‫ﺋﻤﺎ اﻟﻌ‬
‫ﺑﻪ‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻫﺬا ﺧﻄﺄﺳﻬﻞ اﻹﺻﻼح ‪ ،‬إﻻ أﻧﻪ ﻟﻴ ﺲ ﻣﻦ اﻟ ﺴﻬﻞ دا ً‬‫اﻟﻘﻴﺎم‬
‫ﺜﻞ ﻫﺬه اﻷﺧﻄﺎءﻷﻧﻨﺎ‬
‫ﺜﻮر ﻋﲆ ﻣ‬
‫ﺜﻞ ﻫﺬا‪.‬ﻳﺼﻌ ﺐ اﻟﻌ‬
‫ﺒﺮﻣﺠﻮن ﻓ ﻲﺗﻌﻘ ﺐ أﺧﻄﺎء اﻷﺣﺮف اﻟﻔﺮدﻳ ﺔ ﻣ‬
‫اﻟﻮﻗ ﺖ اﻟﺬيﻳﻘﻀﻴﻪ اﻟﻤ‬
‫ﺘﻪ‪.‬‬
‫ﺘﻮﻗﻊ رؤﻳ‬
‫ﺒﺎ ﻣﺎ ﻧﺮى ﻓﻘﻂ ﻣﺎ ﻧ‬
‫ﻏﺎﻟ ً‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺛﻢ‬‫ﺘﺰا ﻫﺬه ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪،‬‬


‫ﺒﻴ‬‫ﺘﺨﺰﻳﻦ أﺳﻤﺎء اﻟ‬
‫ﺑ‬‫ﺘﺰا اﻟﻤﻔﻀﻠ ﺔ ﻟﺪﻳﻚ‪ .‬ﻗﻢ‬
‫ﺒﻴ‬‫ﺛ ﺔ أﻧﻮاع ﻋﲆ اﻷﻗﻞ ﻣﻦ اﻟ‬
‫ﺛﻼ‬‫ﺘﺰا‪ :‬ﻓﻜﺮ ﻓ ﻲ‬
‫ﺒﻴ‬‫‪4-1.‬اﻟ‬
‫ﺘﺰا‪.‬‬
‫ﺑﻴ‬‫ﺒﺎﻋ ﺔ اﺳﻢ ﻛﻞ‬
‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬
‫اﺳ‬

‫ﺘﺰا‬
‫ﺒﻴ‬‫ﺘﺨﺪام اﺳﻢ اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﺎﻋ ﺔ ﺟﻤﻠ ﺔ‬
‫ﺘﻌﺪﻳﻞ ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬
‫ﺑ‬‫•ﻗﻢ‬
‫ﺑ ﺴﻴﻄ ﺔ‬‫ﺒﺎرة‬
‫ﺘﻮي ﻋﲆ ﻋ‬
‫ﺘﺰاﻳﺠ ﺐ أنﻳﻜﻮن ﻟﺪﻳﻚﺳﻄﺮ إﺧﺮاج واﺣﺪﻳﺤ‬
‫ﺑﻴ‬‫ﺘﺰا ﻓﻘﻂ‪ .‬ﻟﻜﻞ‬
‫ﺒﻴ‬ ‫ﺑﺪﻻ ً ﻣﻦ ﻃ‬
‫ﺒﺎﻋ ﺔ اﺳﻢ اﻟ‬
‫ﺒﺮوﻧ ﻲ‪.‬‬
‫ﺒﻴ‬‫ﺘﺰا اﻟ‬
‫ﺑﻴ‬‫ﺜﻞ أﻧﺎ أﺣ ﺐ‬
‫ﻣ‬

‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﺧﺎرج ﺣﻠﻘ ﺔ ‪for ،‬ﻳﻨﺺ ﻋﲆ ذﻟﻚ‬


‫•أﺿﻒﺳﻄ ﺮًا ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟ‬
‫ﺛﻢ ﺟﻤﻠ ﺔ إﺿﺎﻓﻴ ﺔ ‪،‬‬‫ﺘ ﻲﺗﻔﻀﻠﻬﺎ‬
‫ﺘﺰا اﻟ‬
‫ﺒﻴ‬‫ﺜﺮ ﺣﻮل أﻧﻮاع اﻟ‬
‫ﺛ ﺔ أﺳﻄﺮ أو أﻛ‬
‫ﺛﻼ‬‫ﺘﻜﻮن اﻹﺧﺮاج ﻣﻦ‬
‫ﺘﺰا‪.‬ﻳﺠ ﺐ أنﻳ‬
‫ﺒﻴ‬‫ﻛﻢﺗﺤ ﺐ اﻟ‬
‫ﺘﺰا ﺣ ًﻘﺎ!‬
‫ﺒﻴ‬‫ﺜﻞ أﺣ ﺐ اﻟ‬
‫ﻣ‬

‫ﺘﺨﺰﻳﻦ أﺳﻤﺎء ﻫﺬه اﻟﺤﻴﻮاﻧﺎ ت ﻓ ﻲ‬


‫ﺑ‬‫ﺘﺮك‪ .‬ﻗﻢ‬
‫ﺜﻞ ﻣﺸ‬
‫ﺘﻠﻔ ﺔ ﻋﲆ اﻷﻗﻞ ﻟﻬﺎ ﻣﻤ‬
‫ﺛ ﺔ ﺣﻴﻮاﻧﺎ ت ﻣﺨ‬
‫ﺛﻼ‬‫‪4-2.‬اﻟﺤﻴﻮاﻧﺎ ت‪ :‬ﻓﻜﺮ ﻓ ﻲ‬

‫ﺒﺎﻋ ﺔ اﺳﻢ ﻛﻞ ﺣﻴﻮان‪.‬‬


‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬
‫ﺛﻢ اﺳ‬‫ﻗﺎﺋﻤ ﺔ ‪،‬‬

‫ﺜﻞ أنﻳﻜﻮن اﻟﻜﻠ ﺐ ﺣﻴﻮاﻧًﺎ أﻟﻴ ًﻔﺎ راﺋﻌً ﺎ‪.‬‬


‫ﺑﻴﺎن ﺣﻮل ﻛﻞ ﺣﻴﻮان ‪ ،‬ﻣ‬‫ﺒﺎﻋ ﺔ‬
‫ﺑﻚ ﻟﻄ‬‫ﺒﺮﻧﺎﻣﺞ اﻟﺨﺎص‬
‫ﺘﻌﺪﻳﻞ اﻟ‬
‫ﺑ‬‫•ﻗﻢ‬

‫ﺜﻞ أي ﻣﻦ ﻫﺬه‬
‫ﺒﺎﻋ ﺔ ﺟﻤﻠ ﺔ ﻣ‬
‫ﺑﻴﻦ ﻫﺬه اﻟﺤﻴﻮاﻧﺎ ت‪.‬ﻳﻤﻜﻨﻚ ﻃ‬‫ﺘﺮﻛ ﺔ‬
‫ﺒﺮﻧﺎﻣﺞﻳﻮﺿﺢ اﻟﻘﻮاﺳﻢ اﻟﻤﺸ‬
‫•أﺿﻒﺳﻄ ﺮًا ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟ‬
‫ﺘﺠﻌﻞ ﺣﻴﻮاﻧًﺎ أﻟﻴ ًﻔﺎ راﺋﻌً ﺎ!‬
‫اﻟﺤﻴﻮاﻧﺎ تﺳ‬

‫ﺑﻊ‬
‫‪60‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫ﻋﻤﻞ ﻗﻮاﺋﻢ ﻋﺪدﻳ ﺔ‬


‫ﺒﺔ ‪،‬‬
‫ﺒﻊ ﻣﻮاﻗﻊ ﻛﻞ ﺷﺨﺼﻴ ﺔ ﻓ ﻲ اﻟﻠﻌ‬
‫ﺘ‬‫ﺘﺎج إﱃﺗ‬
‫ﺜﺎل ‪،‬ﺳﻮفﺗﺤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺨﺰﻳﻦ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷرﻗﺎم‪ .‬ﻋﲆﺳ‬
‫ﺒﺎ ب ﻋﺪﻳﺪة ﻟ‬
‫ﺗﻮﺟﺪ أﺳ‬
‫ﺒﺎ ﻣﻊ ﻣﺠﻤﻮﻋﺎ ت ﻣﻦ اﻷرﻗﺎم ‪،‬‬
‫ﺋﻤﺎﺗﻘﺮﻳ ً‬
‫ﺘﻌﻤﻞ دا ً‬
‫ﺒﻴﺎﻧﺎ ت ‪،‬ﺳ‬ ‫ﺘﺎﺋﺞ اﻟﻌﺎﻟﻴ ﺔ ﻟﻼﻋ ﺐ أ ً‬
‫ﻳﻀﺎ‪ .‬ﻓ ﻲﺗﺼﻮرا ت اﻟ‬ ‫ﺒﻊ اﻟﻨ‬
‫ﺘ‬‫وﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲﺗ‬
‫ﺑﻴﻦ أﻧﻮاع أﺧﺮى ﻣﻦ اﻟﻤﺠﻤﻮﻋﺎ ت‬‫ﺜﻞ درﺟﺎ ت اﻟﺤﺮارة أو اﻟﻤ ﺴﺎﻓﺎ ت أو أﺣﺠﺎم اﻟ ﺴﻜﺎن أو ﻗﻴﻢ ﺧﻄﻮط اﻟﻄﻮل واﻟﻌﺮض ‪ ،‬ﻣﻦ‬
‫ﻣ‬
‫اﻟﻌﺪدﻳ ﺔ‪.‬‬

‫ﺗﻮﻓﺮ ‪Python‬ﻋﺪدًا‬
‫ﺘﺨﺰﻳﻦ ﻣﺠﻤﻮﻋﺎ ت ﻣﻦ اﻷرﻗﺎم ‪ ،‬و‬
‫ﺜﺎﻟﻴ ﺔ ﻟ‬
‫ﺒﺮ اﻟﻘﻮاﺋﻢ ﻣ‬
‫ﺘ‬‫ﺗﻌ‬
‫ﺘﻌﻤﻞ‬
‫ﺑﺸﻜﻞ ﻓﻌﺎل ‪،‬ﺳ‬‫ﺘﺨﺪام ﻫﺬه اﻷدوا ت‬
‫ﺑﻤﺠﺮد أنﺗﻔﻬﻢ ﻛﻴﻔﻴ ﺔ اﺳ‬‫ﺑﻜﻔﺎءة ﻣﻊ ﻗﻮاﺋﻢ اﻷرﻗﺎم‪.‬‬‫أدوا تﺗ ﺴﺎﻋﺪك ﻋﲆ اﻟﻌﻤﻞ‬
‫ﺘﻮي ﻗﻮاﺋﻤﻚ ﻋﲆ ﻣﻼﻳﻴﻦ اﻟﻌﻨﺎﺻﺮ‪.‬‬
‫ﺘﻰ ﻋﻨﺪﻣﺎﺗﺤ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ ﺣ‬‫ﺑﻚ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟ‬

‫ﺘﺨﺪام وﻇﻴﻔ ﺔ اﻟﻨﻄﺎق )(‬


‫ﺑﺎﺳ‬
‫ﺜﻮن إﻧﺸﺎءﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻷرﻗﺎم‪.‬‬
‫ﺑﺎﻳ‬
‫ﺗ ﺴﻬﻞ وﻇﻴﻔ ﺔ ﻧﻄﺎق )(‬
‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﺒﺎﻋ ﺔﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻷرﻗﺎم ﻣ‬
‫ﺘﺨﺪام اﻟﺪاﻟ ﺔ )( ‪range‬ﻟﻄ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫‪number.py‬‬ ‫ﻟﻠﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻨﻄﺎق ‪(1،5):‬‬


‫ﺒﺎﻋ ﺔ )ﻗﻴﻤ ﺔ(‬‫ﻃ‬

‫ﺒﻊ اﻟﺮﻗﻢ ‪5:‬‬


‫ﺒﻊ اﻷرﻗﺎم ﻣﻦ ‪1‬إﱃ ‪5 ،‬إﻻ أﻧﻪ ﻻﻳﻄ‬
‫ﺒﺪو أﻧﻪﻳﺠ ﺐ أنﻳﻄ‬
‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻫﺬا اﻟﺮﻣﺰﻳ‬

‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬

‫ﺜﻴ ﺮًا‬
‫ﺘﺮاه ﻛ‬
‫ﺘﻴﺠ ﺔ أﺧﺮى ﻟﻠ ﺴﻠﻮك اﻟﻮاﺣﺪﺗﻠﻮ اﻵﺧﺮ اﻟﺬيﺳ‬
‫ﺒﻊ اﻟﻨﻄﺎق )(اﻷرﻗﺎم ﻣﻦ ‪1‬إﱃ ‪4.‬و ﻫﺬه ﻧ‬
‫ﺜﺎل ‪،‬ﻳﻄ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘﻮﻗﻒ ﻋﻨﺪﻣﺎ‬
‫ﺗ‬‫ﺘ ﻲﺗﻘﺪﻣﻬﺎ ﻟﻬﺎ ‪ ،‬و‬
‫ﺜﻮن ﻓ ﻲ اﻟﻌﺪ ﻣﻦ اﻟﻘﻴﻤ ﺔ اﻷوﱃ اﻟ‬
‫ﺑﺎﻳ‬‫ﺑﺪء‬‫ﺒ ﺐ اﻟﺪاﻟ ﺔ )( ‪range‬ﻓ ﻲ‬
‫ﺘﺴ‬‫ﺒﺮﻣﺠ ﺔ‪.‬ﺗ‬
‫ﻓ ﻲ ﻟﻐﺎ ت اﻟ‬
‫ﺘ ﻲﺗﻘﺪﻣﻬﺎ‪.‬‬
‫ﺜﺎﻧﻴ ﺔ اﻟ‬
‫ﺗﺼﻞ إﱃ اﻟﻘﻴﻤ ﺔ اﻟ‬

‫ﺘﻜﻮن ‪5‬ﻓ ﻲ ﻫﺬه‬


‫ﺘ ﻲ ﻛﺎﻧ ﺖﺳ‬
‫ﺑﺪًا ﻋﲆ اﻟﻘﻴﻤ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ ‪ ،‬واﻟ‬
‫ﺘﻮي أ‬
‫ﺜﺎﻧﻴ ﺔ ‪ ،‬ﻓﺈن اﻹﺧﺮاج ﻻﻳﺤ‬
‫ﺘﻮﻗﻒ ﻋﻨﺪﺗﻠﻚ اﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﻧﻈ ﺮًاﻷﻧﻪﻳ‬
‫اﻟﺤﺎﻟ ﺔ‪.‬‬
‫ﺘﺨﺪام اﻟﻨﻄﺎق ‪(1،6):‬‬
‫ﺒﺎﻋ ﺔ اﻷرﻗﺎم ﻣﻦ ‪1‬إﱃ ‪5 ،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﻟﻄ‬

‫ﻟﻠﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻨﻄﺎق ‪(1،6):‬‬


‫ﺒﺎﻋ ﺔ )ﻗﻴﻤ ﺔ(‬‫ﻃ‬

‫ﺘﻬ ﻲ ﻋﻨﺪ ‪5:‬‬


‫ﺒﺪأ اﻹﺧﺮاج ﻋﻨﺪ ‪1‬وﻳﻨ‬
‫ﻫﺬه اﻟﻤﺮةﻳ‬

‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬

‫ﺘﻴﻦ‬
‫‪61-‬اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﺎﺋﻤ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻤﻘﺪار ‪1.‬‬‫ﺒﻂ اﻟﻘﻴﻤ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ‬


‫ﺘﺨﺪام اﻟﻨﻄﺎق ‪() ،‬ﻓﺤﺎول ﺿ‬
‫ﺘﻮﻗﻌﻪ ﻋﻨﺪ اﺳ‬
‫ﺘﻠﻔ ﺔ ﻋﻤﺎﺗ‬
‫ﺗﻚ ﻣﺨ‬
‫إذا ﻛﺎن ﻣﺨﺮﺟﺎ‬

‫ﺑﺎﻷرﻗﺎم‬‫ﺘﺨﺪام اﻟﻨﻄﺎق )(ﻟﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬


‫اﺳ‬
‫ﺘﺎﺋﺞ اﻟﻨﻄﺎق )(‬
‫إذا ﻛﻨ ﺖﺗﺮﻳﺪ ﻋﻤﻞ ﻗﺎﺋﻤ ﺔ أرﻗﺎم ‪،‬ﻳﻤﻜﻨﻚﺗﺤﻮﻳﻞ ﻧ‬

‫ﺒﺎرة ﻋﻦ ﻗﺎﺋﻤ ﺔ ﻣﻦ اﻷرﻗﺎم‪.‬‬


‫ﺗﺞ ﻋ‬
‫ﺘﺪﻋﺎء ﻟﻮﻇﻴﻔ ﺔ ‪range () ،‬ﺳﻴﻜﻮن اﻟﻨﺎ‬
‫ﺘﻔﺎف )( ‪list‬ﺣﻮل اﺳ‬
‫ﺘﺨﺪام وﻇﻴﻔ ﺔ ‪list () .‬ﻋﻨﺪ اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﺎﺷﺮة ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬
‫ﻣ‬

‫ﺒﺎﻋ ﺔﺳﻠ ﺴﻠ ﺔ ﻣﻦ ﻣﻠﻔﺎ ت‬


‫ﺑﻄ‬‫ﺒ ﺴﺎﻃ ﺔ‬
‫ﺑ‬‫ﺑﻖ ‪ ،‬ﻗﻤﻨﺎ‬
‫ﺜﺎل اﻟﻮارد ﻓ ﻲ اﻟﻘ ﺴﻢ اﻟ ﺴﺎ‬
‫ﻓ ﻲ اﻟﻤ‬
‫ﺘﺤﻮﻳﻞ ﻧﻔ ﺲ ﻣﺠﻤﻮﻋ ﺔ اﻷرﻗﺎم إﱃ ﻗﺎﺋﻤ ﺔ‪:‬‬
‫ﺘﺨﺪام )( ‪list‬ﻟ‬
‫أﻋﺪاد‪.‬ﻳﻤﻜﻨﻨﺎ اﺳ‬

‫اﻷرﻗﺎم =ﻗﺎﺋﻤ ﺔ )اﻟﻤﺪى ))‪(1،6‬‬


‫ﺒﺎﻋ ﺔ )أرﻗﺎم(‬
‫ﻃ‬

‫ﺘﻴﺠ ﺔ‪:‬‬
‫و ﻫﺬه ﻫ ﻲ اﻟﻨ‬

‫]‪[1 ، 2 ، 3 ، 4 ، 5‬‬

‫ﺜﺎل ‪ ،‬إﻟﻴﻚ ﻛﻴﻔﻴ ﺔﺳﺮد اﻷرﻗﺎم‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺨﻄ ﻲ اﻷرﻗﺎم ﻓ ﻲ ﻧﻄﺎق ﻣﻌﻴﻦ‪ .‬ﻋﲆﺳ‬
‫ﺑ‬‫ﺒﺎر ‪Python‬‬
‫ﺘﺨﺪام اﻟﺪاﻟ ﺔ )( ‪range‬ﻹﺧ‬ ‫ﻳﻤﻜﻨﻨﺎ أ ً‬
‫ﻳﻀﺎ اﺳ‬

‫ﺑﻴﻦ ‪1‬و ‪10:‬‬‫اﻟﺰوﺟﻴ ﺔ‬

‫ﺒﺎﻋ ﺔ‬
‫))‪even_numbers.py even_numbers = list (range (2،11،2‬ﻃ‬
‫)‪(even_numbers‬‬

‫ﺘﺠﺎوز اﻟﻘﻴﻤ ﺔ‬
‫ﺘﻰﺗﺼﻞ أوﺗ‬
‫ﺘﻜﺮر ﺣ‬
‫ﺑﺸﻜﻞ ﻣ‬
‫ﺛﻢﺗﻀﻴﻒ ‪2‬إﱃﺗﻠﻚ اﻟﻘﻴﻤ ﺔ‪.‬ﺗﻀﻴﻒ ‪2‬‬
‫ﺑﺎﻟﻘﻴﻤ ﺔ ‪2‬‬
‫ﺒﺪأ اﻟﺪاﻟ ﺔ )( ‪range‬‬
‫ﺜﺎل ‪،‬ﺗ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬

‫ﺘﻴﺠ ﺔ‪:‬‬
‫ﺘﺞ ﻫﺬه اﻟﻨ‬
‫ﺗﻨ‬‫اﻟﻨﻬﺎﺋﻴ ﺔ ‪11 ، ،‬و‬

‫]‪[2 ، 4 ، 6 ، 8 ، 10‬‬

‫ﺘﺨﺪام اﻟﻨﻄﺎق )(‬


‫ﺑﺎﺳ‬‫ﺘﺨﺪاﻣﻬﺎ‬
‫ﺘ ﻲﺗﺮﻳﺪ اﺳ‬
‫ﺒﺎ ﻣﻦ اﻷرﻗﺎم اﻟ‬
‫ﻳﻤﻜﻨﻚ إﻧﺸﺎء أي ﻣﺠﻤﻮﻋ ﺔﺗﻘﺮﻳ ً‬
‫ﺑﻊ ﻛﻞ ﻋﺪد ﺻﺤﻴﺢ ﻣﻦ ‪1‬إﱃ‬
‫ﺑﻌﺎ ت اﻟﻌﺸﺮة اﻷوﱃ )أي ﻣﺮ‬
‫ﺑﺄﻋﺪاد اﻟﻤﺮ‬‫ﺒﺎرك ﻛﻴﻒﻳﻤﻜﻨﻚ إﻧﺸﺎء ﻗﺎﺋﻤ ﺔ‬
‫ﺘ‬‫ﺜﺎل ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫وﻇﻴﻔ ﺔ‪ .‬ﻋﲆﺳ‬

‫ﺑﻌ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‪:‬‬


‫ﺘﺎن )**(اﻷس‪ .‬إﻟﻴﻚ ﻛﻴﻔﻴ ﺔ وﺿﻊ أول ‪10‬أرﻗﺎم ﻣﺮ‬
‫ﺘﺎن ﻧﺠﻤﻴ‬
‫ﺜﻞ ﻋﻼﻣ‬
‫ﺜﻮن ‪،‬ﺗﻤ‬
‫ﺑﺎﻳ‬‫‪10).‬ﻓ ﻲ‬

‫ﺑﻌﺎ ت ][ =‬
‫‪squares.py u‬اﻟﻤﺮ‬
‫‪v‬ﻟﻠﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻨﻄﺎق ‪(1،11):‬‬
‫ﺑﻊ =اﻟﻘﻴﻤ ﺔ ‪** 2‬‬
‫ﻣﺮ‬
‫ﺑﻊ(‬
‫‪)x squares.append‬ﻣﺮ‬

‫ﺑﻌﺎ ت(‬
‫ﺒﺎﻋ ﺔ ص )ﻣﺮ‬
‫ﻃ‬

‫ﺑﻌﺎ ت ﻋﻨﺪ ‪u.‬ﻓ ﻲ ‪v ،‬ﻧﻄﻠ ﺐ ﻣﻦ ‪Python‬‬


‫ﺑﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔﺗ ﺴﻤﻰ اﻟﻤﺮ‬‫ﺒﺪأ‬
‫ﻧ‬

‫ﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ‬
‫ﺜﺎﻧﻴ ﺔ و‬
‫ﺘﻢ رﻓﻊ اﻟﻘﻴﻤ ﺔ اﻟﺤﺎﻟﻴ ﺔ إﱃ اﻟﻘﻮة اﻟ‬
‫ﺘﺨﺪام وﻇﻴﻔ ﺔ اﻟﻨﻄﺎق ‪() .‬داﺧﻞ اﻟﺤﻠﻘ ﺔ ‪،‬ﻳ‬
‫ﺑﺎﺳ‬
‫ﺣﻠﻘ ﺔ ﻣﻦ ﺧﻼل ﻛﻞ ﻗﻴﻤ ﺔ ﻣﻦ ‪1‬إﱃ ‪10‬‬

‫ﺑﻊ‬
‫‪62‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫ﺘﻢ‬
‫ﺘﻬﺎءﺗﺸﻐﻴﻞ اﻟﺤﻠﻘ ﺔ ‪،‬ﺗ‬
‫ﺑﻌﺎ ت اﻟﻘﺎﺋﻤ ﺔ‪ .‬أﺧﻴ ﺮًا ‪ ،‬ﻋﻨﺪ اﻧ‬
‫ﺑﻤﺮ‬‫ﺑﻊ‬
‫ﺘﻢ إﻟﺤﺎق ﻛﻞ ﻗﻴﻤ ﺔ ﺟﺪﻳﺪة ﻟﻠﻤﺮ‬
‫ﺑﻊ ﻓ ﻲ ‪w.‬ﻋﻨﺪ ‪x ،‬ﻳ‬
‫ﺘﻐﻴﺮ ﻣﺮ‬
‫ﻣ‬
‫ﺑﻌﺎ ت ﻋﲆ ‪y:‬‬
‫ﺒﺎﻋ ﺔ ﻗﺎﺋﻤ ﺔ اﻟﻤﺮ‬
‫ﻃ‬

‫]‪[1 ، 4 ، 9 ، 16 ، 25 ، 36 ، 49 ، 64 ، 81 ، 100‬‬

‫ﺘﻐﻴﺮ اﻟﻤﺆﻗ ﺖ‬ ‫ﺜﺮ إﻳﺠﺎ ًزا ‪ ،‬اﺣﺬف ﻣﺮ‬


‫ﺑﻊ اﻟﻤ‬ ‫ﺑﺸﻜﻞ أﻛ‬‫ﺑ ﺔ ﻫﺬا اﻟﺮﻣﺰ‬
‫ﺘﺎ‬
‫ﻟﻜ‬
‫ً‬
‫ﺒﺎﺷﺮة‪:‬‬
‫ﺑﺎﻟﻘﺎﺋﻤ ﺔ ﻣ‬‫وإﻟﺤﺎق ﻛﻞ ﻗﻴﻤ ﺔ ﺟﺪﻳﺪة‬

‫ﺑﻌﺎ ت ][ =‬
‫اﻟﻤﺮ‬
‫ﻟﻠﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻨﻄﺎق ‪(1،11):‬‬
‫‪)u squares.append‬اﻟﻘﻴﻤ ﺔ )‪** 2‬‬

‫ﺑﻌﺎ ت(‬
‫ﺒﺎﻋ ﺔ )ﻣﺮ‬
‫ﻃ‬

‫ﺑﻌﺎ ت‪.‬‬
‫ﺑﻨﻔ ﺲ ﻋﻤﻞ اﻷﺳﻄﺮ ﻓ ﻲ ‪w‬و ‪x‬ﻓ ﻲ اﻟﻤﺮ‬
‫ﻳﻘﻮم اﻟﻜﻮد ﻓ ﻲ ‪u‬‬
‫ﺑﻌﺎ ت‪.‬‬
‫ﺑﻘﺎﺋﻤ ﺔ اﻟﻤﺮ‬‫ﺘﻢ إﻟﺤﺎﻗﻬﺎ ﻋﲆ اﻟﻔﻮر‬
‫ﺛﻢﻳ‬‫ﺜﺎﻧﻴ ﺔ‬
‫ﺘﻢ رﻓﻊ ﻛﻞ ﻗﻴﻤ ﺔ ﻓ ﻲ اﻟﺤﻠﻘ ﺔ إﱃ اﻟﻘﻮة اﻟ‬
‫ﻳ‬

‫ﺘﻐﻴﺮ‬
‫ﺘﺨﺪام ﻣ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن ‪،‬ﻳﺆدي اﺳ‬‫ﺜﺮﺗﻌﻘﻴﺪًا‪ .‬ﻓ ﻲ‬
‫ﺘﻴﻦ ﻋﻨﺪ إﻧﺸﺎء ﻗﻮاﺋﻢ أﻛ‬
‫ﺗﻴﻦ اﻟﻄﺮﻳﻘ‬
‫ﺘﺨﺪام أي ﻣﻦ ﻫﺎ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺑﺔ‬‫ﺑﺸﻜﻞ ﻏﻴﺮ ﺿﺮوري‪ .‬رﻛﺰ أوﻻ ً ﻋﲆ ﻛ‬
‫ﺘﺎ‬ ‫ﺒﺮﻣﺠﻴ ﺔ ؛ ﻓ ﻲ أﺣﻴﺎن أﺧﺮىﻳﺠﻌﻞ اﻟﺸﻔﺮة ﻃﻮﻳﻠ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻣﺆﻗ ﺖ إﱃﺗ ﺴﻬﻴﻞ ﻗﺮاءة اﻟ‬
‫ﺑﻮﺿﻮح ‪ ،‬واﻟﺬيﻳﻔﻌﻞ ﻣﺎﺗﺮﻳﺪه أنﻳﻔﻌﻠﻪ‪.‬‬‫اﻟﻜﻮد اﻟﺬيﺗﻔﻬﻤﻪ‬

‫ﺑﻚ‪.‬‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺛﻨﺎء ﻣﺮاﺟﻌ ﺔ اﻟ‬
‫ﺜﺮ ﻓﺎﻋﻠﻴ ﺔ أ‬
‫ﺑﺤ ﺚ ﻋﻦ ﻃﺮق أﻛ‬
‫ﺛﻢ ا‬

‫ﺑﺎﻷرﻗﺎم‬‫ﺑ ﺴﻴﻄ ﺔ ﻣﻊ ﻗﺎﺋﻤ ﺔ‬‫إﺣﺼﺎﺋﻴﺎ ت‬


‫ﺜﻮر ﻋﲆ اﻟﺤﺪ اﻷدﻧﻰ‬
‫ﺑ ﺴﻬﻮﻟ ﺔ اﻟﻌ‬‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻘﻮاﺋﻢ اﻷرﻗﺎم‪ .‬ﻋﲆﺳ‬‫ﻫﻨﺎك ﻋﺪد ﻗﻠﻴﻞ ﻣﻦ وﻇﺎﺋﻒ ‪Python‬ﺧﺎﺻ ﺔ‬
‫واﻟﺤﺪ اﻷﻗﺼﻰ وﻣﺠﻤﻮع ﻗﺎﺋﻤ ﺔ اﻷرﻗﺎم‪:‬‬

‫>>>أرﻗﺎم ]‪= [1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9 ، 0‬‬


‫>>>دﻗﻴﻘ ﺔ )أرﻗﺎم(‬
‫‪0‬‬
‫>>>ﻣﺎﻛ ﺲ )أرﻗﺎم(‬
‫‪9‬‬
‫>>>ﻣﺠﻤﻮع )أرﻗﺎم(‬
‫‪45‬‬

‫ﺑ ﺴﻬﻮﻟ ﺔ ﻣﻊ‬‫ﺘﻨﺎﺳ ﺐ‬
‫ﺘﺼﺮة ﻣﻦ اأﻟﺮﻗﺎم ﻟﻜ ﻲﺗ‬
‫ﺜﻠ ﺔ اﻟﻮاردة ﻓ ﻲ ﻫﺬا اﻟﻘ ﺴﻢ ﻗﻮاﺋﻢ ﻣﺨ‬
‫ﺘﺨﺪم اأﻟﻤ‬
‫ال ﻣﺎﻟﺤﻈ ﺔﺗ ﺴ‬
‫ﺜﺮ ﻣﻦ اﻷرﻗﺎم‪.‬‬
‫ﺘﻮي ﻋﲆ ﻣﻠﻴﻮن أو أﻛ‬
‫ﺘﻚﺗﺤ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ إذا ﻛﺎﻧ ﺖ ﻗﺎﺋﻤ‬‫ﺻﻔﺤ ﺔ‪.‬ﺳﻴﻌﻤﻠﻮن‬

‫ﻗﺎﺋﻤ ﺔ اﻟﻔﻬﻢ‬
‫ﺘﻴﺢ ﻟﻚ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪.‬ﺗ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻌ ﺔ أﺳﻄﺮ ﻣﻦ اﻟ‬
‫ﺛ ﺔ أو أر‬
‫ﺛﻼ‬‫ﺘﺨﺪام‬ ‫ﺑ ًﻘﺎ ﻹﻧﺸﺎء ﻣﺮ‬
‫ﺑﻌﺎ ت اﻟﻘﺎﺋﻤ ﺔ ﻣﻦ اﺳ‬ ‫ﺘﻜﻮن اﻟﻨﻬﺞ اﻟﻤﻮﺻﻮفﺳﺎ‬
‫ﻳ‬
‫ﺑﻴﻦ ﺣﻠﻘ ﺔ ‪for‬‬‫ﺒﺮﻣﺠﻴ ﺔ‪.‬ﻳﺠﻤﻊ ﻓﻬﻢ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻗﺎﺋﻤ ﺔ اﻟﻔﻬﻢ إﻧﺸﺎء ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ ﻧﻔ ﺴﻬﺎ ﻓ ﻲﺳﻄﺮ واﺣﺪ ﻓﻘﻂ ﻣﻦ اﻟ‬
‫ﺘﺪﺋﻴﻦ ‪،‬‬
‫ﺒ‬‫ﺋﻤﺎ ﻟﻠﻤ‬
‫ﺘﻢﺗﻘﺪﻳﻢ ﻋﻤﻠﻴﺎ ت ﻓﻬﻢ اﻟﻘﺎﺋﻤ ﺔ دا ً‬
‫وإﻧﺸﺎء ﻋﻨﺎﺻﺮ ﺟﺪﻳﺪة ﻓ ﻲﺳﻄﺮ واﺣﺪ ‪ ،‬وﻳﻠﺤﻖﺗﻠﻘﺎﺋ ًﻴﺎ ﻛﻞ ﻋﻨﺼﺮ ﺟﺪﻳﺪ‪ .‬ﻻﻳ‬
‫ﺒﺤ ﺚ ﻓ ﻲ ﻛﻮد اﻷﺷﺨﺎص اﻵﺧﺮﻳﻦ‪.‬‬
‫ﺒﺪأ ﻓ ﻲ اﻟ‬
‫ﺑﻤﺠﺮد أنﺗ‬‫ﺘﺮا ﻫﺎ‬
‫ﺘﻀﻤﻴﻨﻬﺎ ﻫﻨﺎﻷﻧﻚ ﻋﲆ اﻷرﺟﺢﺳ‬
‫ﺑ‬‫وﻟﻜﻨ ﻲ ﻗﻤ ﺖ‬

‫ﺘﻴﻦ‬
‫‪63-‬اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﺎﺋﻤ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻬﺎ‬
‫ﺘ ﻲ رأﻳ‬
‫ﺑﻌﺎ ت اﻟ‬
‫ﺒﻨ ﻲ ﻧﻔ ﺲ ﻗﺎﺋﻤ ﺔ أرﻗﺎم اﻟﻤﺮ‬
‫ﺘﺎﻟ ﻲﻳ‬
‫ﺜﺎل اﻟ‬
‫اﻟﻤ‬
‫ﺘﺨﺪم ﻗﺎﺋﻤ ﺔ اﻟﻔﻬﻢ‪:‬‬
‫ﺑﻖ وﻟﻜﻨﻪﻳ ﺴ‬
‫ﻓ ﻲ وﻗ ﺖﺳﺎ‬

‫ﺑﻌﺎ ت‬
‫اﻟﻤﺮ‬ ‫ﺑﻌﺎ ت =]اﻟﻘﻴﻤ ﺔ ‪** 2‬ﻟﻠﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻨﻄﺎق ])‪(1،11‬‬
‫ﻣﺮ‬
‫ﺑﻌﺎ ت(‬
‫ﺒﺎﻋ ﺔ )ﻣﺮ‬
‫ﻃ‬

‫ﺘﺢ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷﻗﻮاس‬


‫ﺑﻌﺪ ذﻟﻚ ‪ ،‬اﻓ‬‫ﺑﻌﺎ ت‪.‬‬
‫ﺜﻞ اﻟﻤﺮ‬
‫ﺑﺎﺳﻢ وﺻﻔ ﻲ ﻟﻠﻘﺎﺋﻤ ﺔ ‪ ،‬ﻣ‬‫ﺑﺪأ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻫﺬا ‪ ،‬ا‬‫ﺘﺨﺪام‬
‫ﻻﺳ‬
‫ﺜﺎل ‪،‬ﻳﻜﻮن ‪ expres sion‬ﻫﻮ اﻟﻘﻴﻤ ﺔ ‪2 ،‬‬
‫ﺘ ﻲﺗﺮﻳﺪﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ اﻟﺠﺪﻳﺪة‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺒﻴﺮ اﻟﻘﻴﻢ اﻟ‬
‫ﺑﻌ ﺔ وﺣﺪدﺗﻌ‬
‫اﻟﻤﺮ‬
‫ﺒﻴﺮ ‪ ،‬وأﻏﻠﻖ‬
‫ﺘﻌ‬‫ﺘ ﻲﺗﺮﻳﺪ إدﺧﺎﻟﻬﺎ ﻓ ﻲ اﻟ‬
‫ﺘﻮﻟﻴﺪ اﻷرﻗﺎم اﻟ‬
‫ﺘ ﺐ ﺣﻠﻘ ﺔ ‪for‬ﻟ‬
‫ﺑﻌﺪ ذﻟﻚ ‪ ،‬اﻛ‬‫ﺜﺎﻧﻴ ﺔ‪.‬‬
‫ﺘ ﻲﺗﺮﻓﻊ اﻟﻘﻴﻤ ﺔ إﱃ اﻟﻘﻮة اﻟ‬
‫**واﻟ‬
‫ﺘ ﻲﺗﻐﺬي اﻟﻘﻴﻢ ﻣﻦ ‪1‬إﱃ ‪10‬ﻓ ﻲ‬
‫ﺜﺎل ﻫ ﻲ ﻟﻠﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻨﻄﺎق ‪(1،11) ،‬واﻟ‬
‫ﺑﻌ ﺔ‪ .‬اﻟﺤﻠﻘ ﺔ ‪for‬ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫اﻷﻗﻮاس اﻟﻤﺮ‬
‫ﺒﺎرة ‪for .‬‬
‫ﺘﻴﻦ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ ﻋ‬
‫ﺘﺨﺪام أي ﻧﻘﻄ‬
‫ﺒﻴﺮ ‪** 2.‬ﻻﺣﻆ ﻋﺪم اﺳ‬
‫ﺘﻌ‬‫ﻗﻴﻤ ﺔ اﻟ‬

‫ﺑ ًﻘﺎ‪:‬‬
‫ﺘﻬﺎﺳﺎ‬
‫ﺘ ﻲ رأﻳ‬
‫ﺑﻌ ﺔ اﻟ‬
‫ﺘﻴﺠ ﺔ ﻫ ﻲ ﻧﻔ ﺲ ﻗﺎﺋﻤ ﺔ اﻷرﻗﺎم اﻟﻤﺮ‬
‫اﻟﻨ‬

‫]‪[1 ، 4 ، 9 ، 16 ، 25 ، 36 ، 49 ، 64 ، 81 ، 100‬‬

‫ﺘﺠﺪ‬
‫ﺑﻚ ‪ ،‬ﻟﻜﻨﻚﺳ‬‫ﺑ ﺔ ﻗﺎﺋﻤ ﺔ اﻟﻔﻬﻢ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﺎ‬
‫ﺒﺎ ﻟﻜ‬
‫ﺘﻄﻠ ﺐ اﻷﻣﺮﺗﺪرﻳ ً‬
‫ﻳ‬
‫ﺑﺎﻟﺮاﺣ ﺔ ﻋﻨﺪ إﻧﺸﺎء ﻗﻮاﺋﻢ ﻋﺎدﻳ ﺔ‪.‬‬‫ﺑﻤﺠﺮد أنﺗﺸﻌﺮ‬‫ﺘﻤﺎم‬
‫ﺑﺎﻻ ﻫ‬‫إﻧﻬﺎ ﺟﺪﻳﺮة‬
‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺘﻜﺮار ‪ ،‬ﻓﻜﺮ ﻓ ﻲ ﻛ‬
‫ﺑﺎﻟ‬‫ﺒﺪأ ﻓ ﻲ اﻟﺸﻌﻮر‬
‫ﺗ‬‫ﺒﺮﻣﺠﻴ ﺔ ﻹﻧﺸﺎء ﻗﻮاﺋﻢ و‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻌ ﺔ أﺳﻄﺮ ﻣﻦ اﻟ‬
‫ﺛ ﺔ أو أر‬
‫ﺛﻼ‬‫ﺘﺐ‬
‫ﻋﻨﺪﻣﺎﺗﻜ‬
‫ﺑﻚ‪.‬‬‫ﻣﻔﺎ ﻫﻴﻢ اﻟﻘﺎﺋﻤ ﺔ اﻟﺨﺎﺻ ﺔ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺒﺎﻋ ﺔ اﻷرﻗﺎم ﻣﻦ ‪1‬إﱃ ‪ 20 ،‬ﺿﻤﻨﺎً‪.‬‬


‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬
‫‪4-3.‬اﻟﻌﺪ إﱃ ﻋﺸﺮﻳﻦ‪ :‬اﺳ‬

‫ﺘﻐﺮق‬
‫ﺒﺎﻋ ﺔ اﻷرﻗﺎم‪) .‬إذا اﺳ‬
‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬
‫ﺛﻢ اﺳ‬‫ﺑﺎﻷرﻗﺎم ﻣﻦ واﺣﺪ إﱃ ﻣﻠﻴﻮن ‪،‬‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫‪4-4.‬اﻟﻤﻠﻴﻮن‪ :‬ﻗﻢ‬
‫ﺑﺎﻟﻀﻐﻂ ﻋﲆ ‪ctrl-C‬أو ﻋﻦ ﻃﺮﻳﻖ إﻏﻼق ﻧﺎﻓﺬة اﻹﺧﺮاج‪(.‬‬‫ﺑﺈﻳﻘﺎﻓﻪ‬‫ﺘًﺎ ﻃﻮﻳ ﻼ ً ‪ ،‬ﻓﻘﻢ‬
‫اﻹﺧﺮاج وﻗ‬

‫ﺘﺄﻛﺪ ﻣﻦ أن‬
‫ﺘﺨﺪم )( ‪min‬و )( ‪max‬ﻟﻠ‬
‫ﺛﻢ اﺳ‬‫ﺑﺎﻷرﻗﺎم ﻣﻦ واﺣﺪ إﱃ ﻣﻠﻴﻮن ‪،‬‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫‪4-5.‬ﺟﻤﻊ اﻟﻤﻠﻴﻮن‪ :‬ﻗﻢ‬
‫ﺜﻮن ﻓ ﻲ‬
‫ﺑﺎﻳ‬ ‫ﺘﺨﺪم أ ً‬
‫ﻳﻀﺎ اﻟﺪاﻟ ﺔ )( ‪sum‬ﻟﻤﻌﺮﻓ ﺔ ﻣﺪىﺳﺮﻋ ﺔ‬ ‫ﺘﻬ ﻲ ﻋﻨﺪ ﻣﻠﻴﻮن‪ .‬اﺳ‬
‫ﺗﻨ‬‫ﺑﺎﻟﻔﻌﻞ ﻣﻦ واﺣﺪ و‬‫ﺒﺪأ‬
‫ﺘﻚﺗ‬
‫ﻗﺎﺋﻤ‬
‫إﺿﺎﻓ ﺔ ﻣﻠﻴﻮن رﻗﻢ‪.‬‬

‫ﺘﺨﺪم‬
‫ﺑﺎﻷرﻗﺎم اﻟﻔﺮدﻳ ﺔ ﻣﻦ ‪1‬إﱃ ‪20.‬اﺳ‬‫ﺜ ﺔ ﻟﻠﺪاﻟ ﺔ )( ‪range‬ﻟﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬
‫ﺜﺎﻟ‬
‫ﺘﺨﺪم اﻟﻮﺳﻴﻄ ﺔ اﻟ‬
‫‪4-6.‬اﻷرﻗﺎم اﻟﻔﺮدﻳ ﺔ‪ :‬اﺳ‬
‫ﺒﺎﻋ ﺔ ﻛﻞ رﻗﻢ‪.‬‬
‫ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬

‫ﺘﻚ‪.‬‬
‫ﺒﺎﻋ ﺔ اﻷرﻗﺎم ﻓ ﻲ ﻗﺎﺋﻤ‬
‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬
‫ﺑﻤﻀﺎﻋﻔﺎ ت ‪3‬ﻣﻦ ‪3‬إﱃ ‪30.‬اﺳ‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫ﺛﻴﺎ ت‪ :‬ﻗﻢ‬
‫ﺛﻼ‬‫‪4-7.‬‬

‫ﺑﺎﻟﺸﻜﻞ ‪** 3‬‬‫ﺘﻮ ب‬


‫ﺜﺎل ‪ ،‬ﻣﻜﻌ ﺐ ‪2‬ﻣﻜ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺜ ﺔﻳ ﺴﻤﻰ اﻟﻤﻜﻌ ﺐ‪ .‬ﻋﲆﺳ‬
‫ﺜﺎﻟ‬
‫ﺒﺎ ت‪ :‬اﻟﺮﻗﻢ اﻟﻤﺮﻓﻮع ﻟﻠﻘﻮة اﻟ‬
‫‪4-8.‬اﻟﻤﻜﻌ‬
‫ﺘﺨﺪم‬
‫ﺒﺎ ت اﻟﻌﺸﺮة اﻷوﱃ )أي ﻣﻜﻌ ﺐ ﻛﻞ ﻋﺪد ﺻﺤﻴﺢ ﻣﻦ ‪1‬إﱃ ‪10) ،‬واﺳ‬
‫ﺑﺎﻟﻤﻜﻌ‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫ﺜﻮن‪ .‬ﻗﻢ‬
‫ﺑﺎﻳ‬‫‪2‬ﻓ ﻲ‬
‫ﺒﺎﻋ ﺔ ﻗﻴﻤ ﺔ ﻛﻞ ﻣﻜﻌ ﺐ‪.‬‬
‫ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬

‫ﺒﺎ ت‪.‬‬
‫ﺑﺄول ‪10‬ﻣﻜﻌ‬‫ﺘﺨﺪم ﻗﺎﺋﻤ ﺔ اﻟﻔﻬﻢ ﻹﻧﺸﺎء ﻗﺎﺋﻤ ﺔ‬
‫ﺒﺎ ت(‪ :‬اﺳ‬
‫‪)4-9. Cube Comprehension‬ﻓﻬﻢ اﻟﻤﻜﻌ‬

‫ﺑﻊ‬
‫‪64‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫اﻟﻌﻤﻞ ﻣﻊ ﺟﺰء ﻣﻦ ﻗﺎﺋﻤ ﺔ‬


‫ﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔ اﻟﻮﺻﻮل إﱃ ﻋﻨﺎﺻﺮ ﻣﻔﺮدة ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪ ،‬وﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔ اﻟﻌﻤﻞ ﻣﻦ ﺧﻼل ﺟﻤﻴﻊ‬
‫ﻓ ﻲ اﻟﻔﺼﻞ ‪3‬‬
‫اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬
‫ﺘ ﻲﺗ ﺴﻤﻴﻬﺎ ‪Python‬ﺷﺮﻳﺤ ﺔ ‪.‬‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﻟﻌﻤﻞ ﻣﻊ ﻣﺠﻤﻮﻋ ﺔ ﻣﺤﺪدة ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪ ،‬واﻟ‬

‫ﺗﺸﺮﻳﺢ ﻗﺎﺋﻤ ﺔ‬

‫ﺑﻬﺎ‪ .‬ﻛﻤﺎ ﻫﻮ اﻟﺤﺎل ﻣﻊ وﻇﻴﻔ ﺔ ‪range () ،‬‬‫ﺘ ﻲﺗﺮﻳﺪ اﻟﻌﻤﻞ‬


‫ﻟﻌﻤﻞ ﺷﺮﻳﺤ ﺔ ‪ ،‬ﻓﺈﻧﻚﺗﺤﺪد ﻓﻬﺮس اﻟﻌﻨﺎﺻﺮ اﻷوﱃ واﻷﺧﻴﺮة اﻟ‬
‫ﺛ ﺔ اﻷوﱃ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪،‬ﻳﻤﻜﻨﻚ‬
‫ﺜﻼ‬‫ﺜﺎﻧ ﻲ اﻟﺬيﺗﺤﺪده‪ .‬ﻹﺧﺮاج اﻟﻌﻨﺎﺻﺮ اﻟ‬
‫ﺒﻞ اﻟﻔﻬﺮس اﻟ‬
‫ﺗﻮﻗﻒ ‪Python‬ﻋﻨﺼ ﺮًا واﺣﺪًا ﻗ‬
‫ﺘﻌﻴﺪ اﻟﻌﻨﺎﺻﺮ ‪0‬و ‪1‬و ‪2.‬‬
‫ﺘ ﻲﺳ‬
‫ﻃﻠ ﺐ اﻟﻔﻬﺎرس ﻣﻦ ‪0‬إﱃ ‪3 ،‬واﻟ‬

‫ﺒﻴﻦ ﻓ ﻲ ﻓﺮﻳﻖ‪:‬‬
‫ﺑﺎﻟﻼﻋ‬‫ﺘﺎﻟ ﻲ ﻗﺎﺋﻤ ﺔ‬
‫ﺜﺎل اﻟ‬
‫ﺘﻀﻤﻦ اﻟﻤ‬
‫ﻳ‬

‫‪)player.py player‬اﻟﻼﻋ‬
‫ﺒﻮن )]‪[0: 3‬‬ ‫]'‪u print = ['charles'، 'martina'، 'michael'، 'florence'، 'eli‬‬

‫ﺑﻬﻴﻜﻞ اﻟﻘﺎﺋﻤ ﺔ‬‫ﺘﻔﻆ‬


‫ﺒﻴﻦ ﻓﻘﻂ‪ .‬اﻹﺧﺮاجﻳﺤ‬
‫ﺛ ﺔ ﻻﻋ‬
‫ﺛﻼ‬‫ﺘﻀﻤﻦ أول‬
‫ﺘ ﻲﺗ‬
‫ﺒﻊ اﻟﻜﻮد ﻓ ﻲ ‪u‬ﺷﺮﻳﺤ ﺔ ﻣﻦ ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬واﻟ‬
‫ﻳﻄ‬
‫ﺒﻴﻦ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬
‫ﺛ ﺔ ﻻﻋ‬
‫ﺛﻼ‬‫ﺘﻀﻤﻦ أول‬
‫وﻳ‬

‫ﺗﻴﻨﺎ" ‪" ،‬ﻣﺎﻳﻜﻞ"[‬


‫ﺗﺸﺎرﻟﺰ" ‪" ،‬ﻣﺎر‬
‫]"‬

‫ﺑﻌ ﺔ ﻓ ﻲ‬
‫ﺜ ﺔ واﻟﺮا‬
‫ﺜﺎﻟ‬
‫ﺜﺎﻧﻴ ﺔ واﻟ‬
‫ﺜﺎل ‪ ،‬إذا ﻛﻨ ﺖﺗﺮﻳﺪ اﻟﻌﻨﺎﺻﺮ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻳﻤﻜﻨﻚ إﻧﺸﺎء أي ﻣﺠﻤﻮﻋ ﺔ ﻓﺮﻋﻴ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺘﻬ ﻲ ﻋﻨﺪ اﻟﻔﻬﺮس ‪4:‬‬
‫ﺗﻨ‬‫ﺒﺪأ اﻟﺸﺮﻳﺤ ﺔ ﻓ ﻲ اﻟﻔﻬﺮس ‪1‬و‬
‫ﺘ‬‫ﻗﺎﺋﻤ ﺔ ‪ ،‬ﻓ ﺴ‬

‫]'‪player = ['charles'، 'martina'، 'michael'، 'florence'، 'eli‬‬


‫ﺒﻮن )]‪[1: 4‬‬ ‫ﺒﺎﻋ ﺔ )ﻻﻋ‬‫ﻃ‬

‫ﺑـ "ﻓﻠﻮرﻧ ﺲ"‪:‬‬‫ﺘﻬ ﻲ‬


‫ﺗﻨ‬‫ﺗﻴﻨﺎ" و‬
‫ﺑـ "ﻣﺎر‬‫ﺒﺪأ اﻟﺸﺮﻳﺤ ﺔ‬
‫ﻫﺬه اﻟﻤﺮةﺗ‬

‫ﺗﻴﻨﺎ" ‪" ،‬ﻣﺎﻳﻜﻞ" ‪" ،‬ﻓﻠﻮرﻧ ﺴﺎ"[‬


‫]"ﻣﺎر‬

‫ﺗﻠﻘﺎﺋ ًﻴﺎ ﻣﻠﻒ‬


‫ﺒﺪأ ‪Python‬‬
‫إذا ﺣﺬﻓ ﺖ أول ﻓﻬﺮس ﻓ ﻲ ﺷﺮﻳﺤ ﺔ ﻣﺎ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺑﺪاﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬‫ﺷﺮﻳﺤ ﺔ ﻓ ﻲ‬

‫]'‪player = ['charles'، 'martina'، 'michael'، 'florence'، 'eli‬‬


‫ﺒﻴﻦ )]‪[: 4‬‬ ‫ﺒﺎﻋ ﺔ )اﻟﻼﻋ‬
‫ﻃ‬

‫ﺑﺪاﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬‫ﺜﻮن ﻓ ﻲ‬


‫ﺑﺎﻳ‬‫ﺒﺪأ‬
‫ﺑﺪاﻳ ﺔ ‪،‬ﺗ‬‫ﺑﺪون ﻓﻬﺮس‬

‫ﺗﻴﻨﺎ" ‪" ،‬ﻣﺎﻳﻜﻞ" ‪" ،‬ﻓﻠﻮرﻧ ﺴﺎ"[‬


‫ﺗﺸﺎرﻟﺰ" ‪" ،‬ﻣﺎر‬
‫]"‬

‫‪65-‬اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻀﻤﻦ ﻧﻬﺎﻳ ﺔ ﻗﺎﺋﻤ ﺔ‪.‬‬


‫ﺑﻬ ﺔ إذا ﻛﻨ ﺖﺗﺮﻳﺪ ﺷﺮﻳﺤ ﺔﺗ‬
‫ﺗﻌﻤﻞ ﺻﻴﻐ ﺔ ﻣﺸﺎ‬
‫ﺑﺎﻟﻔﻬﺮس ‪2‬وﺣﺬف‬‫ﺒﺪء‬
‫ﺘﻰ اﻟﻌﻨﺼﺮ اﻷﺧﻴﺮ ‪ ،‬ﻓﻴﻤﻜﻨﻚ اﻟ‬
‫ﺜﺎﻟ ﺚ ﺣ‬
‫ﺜﺎل ‪ ،‬إذا ﻛﻨ ﺖﺗﺮﻳﺪ ﻛﻞ اﻟﻌﻨﺎﺻﺮ ﻣﻦ اﻟﻌﻨﺼﺮ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺜﺎﻧ ﻲ‪:‬‬
‫اﻟﻔﻬﺮس اﻟ‬

‫]'‪player = ['charles'، 'martina'، 'michael'، 'florence'، 'eli‬‬


‫ﺒﻮن )]‪[2:‬‬
‫ﺒﺎﻋ ﺔ )ﻻﻋ‬
‫ﻃ‬

‫ﺘﻰ ﻧﻬﺎﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬


‫ﺜﺎﻟ ﺚ ﺣ‬
‫ﺑﺈرﺟﺎع ﺟﻤﻴﻊ اﻟﻌﻨﺎﺻﺮ ﻣﻦ اﻟﻌﻨﺼﺮ اﻟ‬
‫ﺗﻘﻮم ‪Python‬‬

‫]"ﻣﺎﻳﻜﻞ" ‪" ،‬ﻓﻠﻮرﻧ ﺴﺎ" ‪" ،‬إﻳﻠ ﻲ"[‬

‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻃﻮل اﻟﻘﺎﺋﻤ ﺔ‪.‬‬‫ﺘﻚ إﱃ اﻟﻨﻬﺎﻳ ﺔ‬


‫ﺑﺈﺧﺮاج ﺟﻤﻴﻊ اﻟﻌﻨﺎﺻﺮ ﻣﻦ أي ﻧﻘﻄ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ‬‫ﺗ ﺴﻤﺢ ﻟﻚ ﻫﺬه اﻟﺼﻴﻐ ﺔ‬
‫ﺗﺬﻛﺮ أن اﻟﻔﻬﺮس اﻟ ﺴﺎﻟ ﺐﻳﻌﻴﺪ ﻋﻨﺼ ًﺮا ﻣ ﺴﺎﻓ ﺔ ﻣﻌﻴﻨ ﺔ ﻣﻦ ﻧﻬﺎﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ ؛ ﻟﺬﻟﻚ ‪،‬ﻳﻤﻜﻨﻚ إﺧﺮاج أي ﺷﺮﻳﺤ ﺔ ﻣﻦ ﻧﻬﺎﻳ ﺔ‬
‫ﺘﺨﺪام ﻣﺸﻐﻼ ت اﻟﺸﺮاﺋﺢ ‪[-3:]:‬‬
‫ﺒﻴﻦ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎ اﺳ‬
‫ﺛ ﺔ ﻻﻋ‬
‫ﺛﻼ‬‫ﺜﺎل ‪ ،‬إذا أردﻧﺎ إﺧﺮاج آﺧﺮ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻋﲆﺳ‬

‫]'‪player = ['charles'، 'martina'، 'michael'، 'florence'، 'eli‬‬


‫ﺒﻮن )]‪[-3:‬‬
‫ﺒﺎﻋ ﺔ )ﻻﻋ‬
‫ﻃ‬

‫ﺒﻴﻦ‪.‬‬
‫ﺘﻤﺮ ﻓ ﻲ اﻟﻌﻤﻞ ﻣﻊﺗﻐﻴﺮ ﺣﺠﻢ ﻗﺎﺋﻤ ﺔ اﻟﻼﻋ‬
‫ﺒﻴﻦ وﺳﻴ ﺴ‬
‫ﺛ ﺔ ﻻﻋ‬
‫ﺛﻼ‬‫ﺒﺎﻋ ﺔ أﺳﻤﺎء آﺧﺮ‬
‫ﻳﺆدي ﻫﺬا إﱃ ﻃ‬

‫ﺘﻜﺮار ﺧﻼل ﺷﺮﻳﺤ ﺔ‬


‫اﻟ‬
‫ﺘﺨﺪام ﺷﺮﻳﺤ ﺔ ﻓ ﻲ ﺣﻠﻘ ﺔ ‪for‬إذا ﻛﻨ ﺖﺗﺮﻳﺪ إﺟﺮاءﺗﻜﺮار ﺧﻼل ﻣﺠﻤﻮﻋ ﺔ ﻓﺮﻋﻴ ﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻓ ﻲ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺑ ﺴﻴﻄ ﺔ‪:‬‬‫ﺒﻊ أﺳﻤﺎﺋﻬﻢ ﻛﺠﺰء ﻣﻦ ﻗﺎﺋﻤ ﺔ‬
‫ﺒﻴﻦ وﻧﻄ‬
‫ﺛ ﺔ ﻻﻋ‬
‫ﺛﻼ‬‫ﺒﺮ أول‬
‫ﺑﻌﻤﻞ ﺣﻠﻘ ﺔ ﻋ‬‫ﺘﺎﻟ ﻲ ‪ ،‬ﻧﻘﻮم‬
‫ﺜﺎل اﻟ‬
‫اﻟﻤ‬

‫]'‪player = ['charles'، 'martina'، 'michael'، 'florence'، 'eli‬‬

‫ﺒﻴﻦ ﻓ ﻲ ﻓﺮﻳﻘ ﻲ‪(":‬‬


‫ﺛ ﺔ ﻻﻋ‬
‫ﺛﻼ‬‫ﺒﺎﻋ ﺔ )" ﻫﻨﺎ أول‬
‫ﻃ‬
‫ﺒﻴﻦ ‪[: 3]:‬‬
‫ش ﻟﻼﻋ ﺐ ﻓ ﻲ اﻟﻼﻋ‬
‫ﺒﺎﻋ ﺔ ))( ‪(player.title‬‬
‫ﻃ‬

‫ﺘﻜﺮار‬
‫ﺑﺎﻟ‬
‫ﺗﻘﻮم ‪Python‬‬ ‫ﺑﺪﻻ ً ﻣﻦﺗﻜﺮار اﻟﻘﺎﺋﻤ ﺔ اﻟﻜﺎﻣﻠ ﺔ ﻟﻼﻋ‬
‫ﺒﻴﻦ ﻓ ﻲ ‪u ،‬‬
‫ﺛ ﺔ اﻷوﱃ ﻓﻘﻂ‪:‬‬
‫ﺜﻼ‬‫ﻣﻦ ﺧﻼل اﻷﺳﻤﺎء اﻟ‬

‫ﺒﻴﻦ ﻓ ﻲ ﻓﺮﻳﻘ ﻲ‪:‬‬


‫ﺛ ﺔ ﻻﻋ‬
‫ﺛﻼ‬‫ﻫﺎ ﻫﻢ أول‬
‫ﺗﺸﺎرﻟﺰ‬
‫ﺗﻴﻨﺎ‬
‫ﻣﺎر‬
‫ﻣﻴﺨﺎﺋﻴﻞ‬

‫ﺜﺎل ‪ ،‬ﻋﻨﺪﻣﺎﺗﻜﻮن‬
‫ﺒﻴﻞ اﻟﻤ‬
‫اﻟﺸﺮاﺋﺢ ﻣﻔﻴﺪة ﺟﺪًا ﻓ ﻲ ﻋﺪد ﻣﻦ اﻟﻤﻮاﻗﻒ‪ .‬ﻋﲆﺳ‬
‫ﺘﻬ ﻲ ﻓﻴﻬﺎ ﻫﺬا اﻟﻼﻋ ﺐ ﻣﻦ اﻟﻠﻌ ﺐ‪.‬ﻳﻤﻜﻨﻚ‬
‫ﺘﻴﺠ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ ﻟﻼﻋ ﺐ إﱃ ﻗﺎﺋﻤ ﺔ ﻓ ﻲ ﻛﻞ ﻣﺮةﻳﻨ‬
‫ﺒ ﺔ ‪،‬ﻳﻤﻜﻨﻚ إﺿﺎﻓ ﺔ اﻟﻨ‬
‫ﻋﻨﺪ إﻧﺸﺎء ﻟﻌ‬
‫ﺘﻀﻤﻦ اﻟﺪرﺟﺎ ت‬
‫ﺗﻴ ﺐﺗﻨﺎزﻟ ﻲ وأﺧﺬ ﺷﺮﻳﺤ ﺔﺗ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺛﻼ ث ﻧﻘﺎط ﻟﻼﻋ ﺐ ﻋﻦ ﻃﺮﻳﻖ ﻓﺮز اﻟﻘﺎﺋﻤ ﺔ‬‫ﺑﻌﺪ ذﻟﻚ اﻟﺤﺼﻮل ﻋﲆ أﻋﲆ‬
‫ﺘﺨﺪام اﻟﺸﺮاﺋﺢ ﻟﻠﻤﻌﺎﻟﺠ ﺔ‬
‫ﺒﻴﺎﻧﺎ ت ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺜﻼ ث اﻷوﱃ ﻓﻘﻂ‪ .‬ﻋﻨﺪﻣﺎﺗﻌﻤﻞ ﻣﻊ اﻟ‬
‫اﻟ‬

‫ﺑﻊ‬
‫‪66‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪام اﻟﺸﺮاﺋﺢ ﻟﻌﺮض اﻟﻤﻌﻠﻮﻣﺎ ت‬


‫ﺒﻴﻖ وﻳ ﺐ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺑﺈﻧﺸﺎءﺗﻄ‬‫ﺗﻚ ﻓ ﻲ أﺟﺰاء ذا ت ﺣﺠﻢ ﻣﻌﻴﻦ‪ .‬أو ‪ ،‬ﻋﻨﺪﻣﺎﺗﻘﻮم‬
‫ﺑﻴﺎﻧﺎ‬
‫ﻓ ﻲﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟﺼﻔﺤﺎ ت ﻣﻊ ﻗﺪر ﻣﻨﺎﺳ ﺐ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻓ ﻲ ﻛﻞ ﺻﻔﺤ ﺔ‪.‬‬

‫ﻧ ﺴﺦ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﻜﺸﻒ‬
‫ﺑﻨﺎ ًء ﻋﲆ اﻟﻘﺎﺋﻤ ﺔ اﻷوﱃ‪ .‬دﻋﻨﺎ ﻧ ﺴ‬‫ﺗﻤﺎﻣﺎ‬
‫ً‬ ‫ﺑﻘﺎﺋﻤ ﺔ ﺣﺎﻟﻴ ﺔ وإﻧﺸﺎء ﻗﺎﺋﻤ ﺔ ﺟﺪﻳﺪة‬‫ﺒﺪء‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲ اﻟ‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ‪،‬ﺳ‬
‫ﻓ ﻲﻛ‬
‫ﻛﻴﻒﻳﻌﻤﻞ ﻧ ﺴﺦ ﻗﺎﺋﻤ ﺔ وﻧﻔﺤﺺ ﻣﻮﻗ ًﻔﺎ واﺣﺪًاﻳﻜﻮن ﻓﻴﻪ ﻧ ﺴﺦ ﻗﺎﺋﻤ ﺔ ﻣﻔﻴﺪًا‪.‬‬

‫ﺜﺎﻧ ﻲ ‪([:]).‬‬
‫ﺑﺤﺬف اﻟﻔﻬﺮس اﻷول واﻟﻔﻬﺮس اﻟ‬‫ﺑﺄﻛﻤﻠﻬﺎ‬‫ﺘﻀﻤﻦ اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ‬
‫ﻟﻨ ﺴﺦ ﻗﺎﺋﻤ ﺔ ‪،‬ﻳﻤﻜﻨﻚ ﻋﻤﻞ ﺷﺮﻳﺤ ﺔﺗ‬
‫ﺑﺄﻛﻤﻠﻬﺎ‪.‬‬‫ﺘﺞ ﻧ ﺴﺨ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺗﻨ‬‫ﺑﺎﻟﻌﻨﺼﺮ اﻷﺧﻴﺮ ‪ ،‬و‬‫ﺘﻬ ﻲ‬
‫ﺗﻨ‬‫ﺒﺪأ ﻣﻦ اﻟﻌﻨﺼﺮ اﻷول و‬
‫ﺑﻌﻤﻞ ﺷﺮﻳﺤ ﺔﺗ‬
‫ﺒﺮ ‪Python‬‬
‫ﻫﺬاﻳﺨ‬

‫ﺘﻲ‬
‫ﺑﺎﻷﻃﻌﻤ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺪﻳﻨﺎ وﻧﺮﻳﺪ ﻋﻤﻞ ﻗﺎﺋﻤ ﺔ ﻣﻨﻔﺼﻠ ﺔ ﻣﻦ اﻷﻃﻌﻤ ﺔ اﻟ‬‫ﺜﺎل ‪،‬ﺗﺨﻴﻞ أن ﻟﺪﻳﻨﺎ ﻗﺎﺋﻤ ﺔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﻬﻢ ﻋﻦ ﻃﺮﻳﻖ ﻧ ﺴﺦ‬
‫ﺘﻤﻜﻦ ﻣﻦ إﻧﺸﺎء ﻗﺎﺋﻤ‬
‫ﺘﻰ ﻧ‬
‫ﺘﻰ اﻵن ‪ ،‬ﺣ‬
‫ﺘﻨﺎ ﺣ‬
‫ﺒﻬﺎ أﺣﺪ اﻷﺻﺪﻗﺎء‪ .‬ﻫﺬا اﻟﺼﺪﻳﻖﻳﺤ ﺐ ﻛﻞ ﺷ ﻲء ﻓ ﻲ ﻗﺎﺋﻤ‬
‫ﻳﺤ‬
‫ﺘﻨﺎ‪:‬‬
‫ﻗﺎﺋﻤ‬

‫]'‪foods.py u my_foods = ['pizza'، 'falafel'، 'carrot cake‬‬


‫]‪v friend_foods = my_foods [:‬‬

‫ﺘ ﻲ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‪(":‬‬
‫ﺒﺎﻋ ﺔ )"أﻃﻌﻤ‬
‫ﻃ‬
‫ﺒﺎﻋ ﺔ )‪(my_foods‬‬
‫ﻃ‬

‫ﺒﺎﻋ ﺔ ‪("\ n‬اﻷﻃﻌﻤ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺼﺪﻳﻘ ﻲ ﻫ ﻲ‪(":‬‬


‫ﻃ‬
‫ﺒﺎﻋ ﺔ )‪(friend_foods‬‬
‫ﻃ‬

‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ ﺟﺪﻳﺪةﺗ ﺴﻤﻰ‬‫ﺒﻬﺎﺗ ﺴﻤﻰ ‪my_foods.‬ﻓ ﻲ ‪v ،‬ﻧﻘﻮم‬


‫ﺘ ﻲ ﻧﺤ‬
‫ﺑﺎﻷﻃﻌﻤ ﺔ اﻟ‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫ﻓ ﻲ ‪u‬ﻧﺤﻦ ﻧﻘﻮم‬
‫ﺑﻌﻤﻞ ﻧ ﺴﺨ ﺔ ﻣﻦ ‪my_foods‬ﻋﻦ ﻃﺮﻳﻖ ﻃﻠ ﺐ ﺷﺮﻳﺤ ﺔ ﻣﻦ ‪my_foods‬دونﺗﺤﺪﻳﺪ أي ﻣﺆﺷﺮا ت‬‫‪friend_foods.‬ﻧﻘﻮم‬
‫ﺗﺨﺰﻳﻦ اﻟﻨ ﺴﺨ ﺔ ﻓ ﻲ ‪friend_foods.‬‬
‫و‬
‫ﺘﻮي ﻋﲆ ﻧﻔ ﺲ اﻷﻃﻌﻤ ﺔ‪:‬‬
‫ﺒﻊ ﻛﻞ ﻗﺎﺋﻤ ﺔ ‪ ،‬ﻧﺮى أن ﻛﻼ ﻫﻤﺎﻳﺤ‬
‫ﻋﻨﺪﻣﺎ ﻧﻄ‬

‫ﺘﺰا" و "ﻓﻼﻓﻞ" و "ﻛﻌﻜ ﺔ ﺟﺰر"[‬


‫ﺑﻴ‬‫ﺘ ﻲ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‪"] :‬‬
‫أﻃﻌﻤ‬

‫ﺘﺰا" ‪" ،‬ﻓﻼﻓﻞ" ‪" ،‬ﻛﻌﻜ ﺔ‬


‫ﺑﻴ‬‫اﻷﻃﻌﻤ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺼﺪﻳﻘ ﻲ ﻫ ﻲ‪"] :‬‬
‫اﻟﺠﺰر"[‬

‫ﺒﻊ‬
‫ﺘ‬‫ﺒﻴﻦ أن ﻛﻞ ﻗﺎﺋﻤ ﺔﺗ‬
‫ﻃﻌﺎﻣﺎ ﺟﺪﻳﺪًا إﱃ ﻛﻞ ﻗﺎﺋﻤ ﺔ وﻧ‬
‫ً‬ ‫ﺘﻴﻦ ‪،‬ﺳﻨﻀﻴﻒ‬
‫ﺘﻴﻦ ﻣﻨﻔﺼﻠ‬
‫ﺑﺎﻟﻔﻌﻞ ﻗﺎﺋﻤ‬‫ﺒﺎ ت أن ﻟﺪﻳﻨﺎ‬
‫ﺛ‬‫ﻹ‬
‫اﻷﻃﻌﻤ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﻠﺸﺨﺺ اﻟﻤﻨﺎﺳ ﺐ‪:‬‬

‫]‪= ['pizza'، 'falafel'، 'carrot cake'] u friend_foods = my_foods [:‬‬


‫‪my_foods‬‬

‫‪")v my_foods.append‬ﻛﺎﻧﻮﻟ ﻲ"(‬


‫‪")w friend_foods.append‬آﻳ ﺲ ﻛﺮﻳﻢ"(‬

‫ﺘ ﻲ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‪(":‬‬
‫ﺒﺎﻋ ﺔ )"أﻃﻌﻤ‬
‫ﻃ‬
‫ﺒﺎﻋ ﺔ )‪(my_foods‬‬
‫ﻃ‬

‫ﺘﻴﻦ‬
‫‪67-‬اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﺎﺋﻤ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎﻋ ﺔ ‪("\ n‬اﻷﻃﻌﻤ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺼﺪﻳﻘ ﻲ ﻫ ﻲ‪(":‬‬


‫ﻃ‬
‫ﺒﺎﻋ ﺔ )‪(friend_foods‬‬
‫ﻃ‬

‫ﺜﺎل‬
‫ﺑﻨ ﺴﺦ اﻟﻌﻨﺎﺻﺮ اﻷﺻﻠﻴ ﺔ ﻓ ﻲ ‪my_foods‬إﱃ اﻟﻘﺎﺋﻤ ﺔ اﻟﺠﺪﻳﺪة ‪friend_foods ،‬ﻛﻤﺎ ﻓﻌﻠﻨﺎ ﻓ ﻲ اﻟﻤ‬‫ﻓ ﻲ ‪u‬ﻧﻘﻮم‬
‫ﻃﻌﺎﻣﺎ ﺟﺪﻳﺪًا إﱃ ﻛﻞ ﻗﺎﺋﻤ ﺔ‪ :‬ﻓ ﻲ ‪v‬ﻧﻀﻴﻒ "‪"cannoli‬إﱃ ‪my_foods ،‬وﻓ ﻲ ‪w‬ﻧﻀﻴﻒ‬
‫ً‬ ‫ﺑﻌﺪ ذﻟﻚ ‪ ،‬ﻧﻀﻴﻒ‬‫ﺑﻖ‪.‬‬
‫اﻟ ﺴﺎ‬
‫ﺟﺎ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺘﻴﻦ ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن ﻛﻞ ﻣﻦ ﻫﺬه اﻷﻃﻌﻤ ﺔ ﻣﺪر ً‬
‫ﺒﺎﻋ ﺔ اﻟﻘﺎﺋﻤ‬
‫ﺑﻄ‬‫ﺛﻢ ﻧﻘﻮم‬
‫"آﻳ ﺲ ﻛﺮﻳﻢ" إﱃ ‪friend_foods.‬‬
‫ﺒ ﺔ‪.‬‬
‫اﻟﻤﻨﺎﺳ‬

‫ﺘ ﻲ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‪x ['pizza'، 'falafel'، 'carrot cake'، 'cannoli'] :‬‬


‫أﻃﻌﻤ‬

‫اﻷﻃﻌﻤ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺼﺪﻳﻘ ﻲ ﻫ ﻲ‪['pizza'، 'falafel'، 'carrot cake'، 'ice cream'] :‬‬
‫‪y‬‬

‫ُﻈﻬﺮ اﻹﺧﺮاج ﻓ ﻲ ‪x‬أن "‪"cannoli‬ﻳﻈﻬﺮ اﻵن ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻷﻃﻌﻤ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺪﻳﻨﺎ وﻟﻜﻦ "اﻵﻳ ﺲ ﻛﺮﻳﻢ" ﻻﻳﻈﻬﺮ‪.‬ﻳﻤﻜﻨﻨﺎ أن ﻧﺮى أن‬
‫ﻳ‬
‫ﺒ ﺴﺎﻃ ﺔ ﻣﺠﻤﻮﻋ ﺔ ‪friend_foods‬‬
‫ﺑ‬‫"اﻵﻳ ﺲ ﻛﺮﻳﻢ"ﻳﻈﻬﺮ اﻵن ﻓ ﻲ ﻗﺎﺋﻤ ﺔ أﺻﺪﻗﺎﺋﻨﺎ وﻟﻜﻦ "ﻛﺎﻧﻮﻟ ﻲ" ﻻﻳﻈﻬﺮ‪ .‬إذا ﻛﺎن ﻟﺪﻳﻨﺎ‬

‫ﺜﺎل ‪ ،‬إﻟﻴﻚ ﻣﺎﻳﺤﺪ ث ﻋﻨﺪﻣﺎﺗﺤﺎول ﻧ ﺴﺦ ﻗﺎﺋﻤ ﺔ دون‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻴﻦ‪ .‬ﻋﲆﺳ‬
‫ﺘﻴﻦ ﻣﻨﻔﺼﻠ‬
‫ﺘﺞ ﻗﺎﺋﻤ‬
‫ﻳ ﺴﺎوي ‪my_foods ،‬ﻓﻠﻦ ﻧﻨ‬
‫ﺘﺨﺪام ﺷﺮﻳﺤ ﺔ‪:‬‬
‫اﺳ‬

‫]'‪my_foods = ['pizza'، 'falafel'، 'carrot cake‬‬

‫‪ #‬ﻫﺬا ﻻﻳﻌﻤﻞ‪:‬‬
‫‪u friend_foods = my_foods‬‬

‫‪")my_foods.append‬ﻛﺎﻧﻮﻟ ﻲ"(‬
‫‪")friend_foods.append‬آﻳ ﺲ ﻛﺮﻳﻢ"(‬

‫ﺘ ﻲ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‪(":‬‬
‫ﺒﺎﻋ ﺔ )"أﻃﻌﻤ‬
‫ﻃ‬
‫ﺒﺎﻋ ﺔ )‪(my_foods‬‬
‫ﻃ‬

‫ﺒﺎﻋ ﺔ ‪("\ n‬اﻷﻃﻌﻤ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺼﺪﻳﻘ ﻲ ﻫ ﻲ‪(":‬‬


‫ﻃ‬
‫ﺒﺎﻋ ﺔ )‪(friend_foods‬‬
‫ﻃ‬

‫ﺴﺎو ﻟـ ‪my_foods.‬ﻓ ﻲ‬
‫ٍ‬ ‫ﺘﻌﻴﻴﻦ ‪friend_foods‬ﻋﲆ ﻣ‬
‫ﺑ‬‫ﺑﺪﻻ ً ﻣﻦﺗﺨﺰﻳﻦ ﻧ ﺴﺨ ﺔ ﻣﻦ ‪my_foods‬ﻓ ﻲ ‪friend_foods‬ﻓ ﻲ ‪u ،‬ﻗﻤﻨﺎ‬
‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ ‪my_foods ،‬ﻟﺬﻟﻚﻳﺸﻴﺮ‬‫ﺑﺎﻟﻘﺎﺋﻤ ﺔ اﻟﻤﻮﺟﻮدة‬
‫ﺘﻐﻴﺮ اﻟﺠﺪﻳﺪ ‪friend_foods‬‬
‫ﺑﻂ اﻟﻤ‬
‫ﺑﺮ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻫﺬا ‪Python‬‬‫ﺒﺮ‬
‫اﻟﻮاﻗﻊ ‪،‬ﻳﺨ‬
‫ﺘﻴﺠ ﺔ ﻟﺬﻟﻚ ‪ ،‬ﻋﻨﺪﻣﺎ ﻧﻀﻴﻒ "‪"cannoli‬إﱃ ‪my_foods ،‬ﺳﻴﻈﻬﺮ أ ً‬
‫ﻳﻀﺎ ﻓ ﻲ ‪friend_foods.‬‬ ‫ﺘﻐﻴﺮﻳﻦ اﻵن إﱃ ﻧﻔ ﺲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻧ‬
‫ﻛﻼ اﻟﻤ‬
‫ً‬
‫ﻣﻀﺎﻓﺎ إﱃ ‪friend_foods‬ﻓﻘﻂ‪.‬‬ ‫ﺒﺪو‬
‫ﺘﻴﻦ ‪ ،‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻪﻳ‬
‫ﺘﺎ اﻟﻘﺎﺋﻤ‬
‫ﺘﻈﻬﺮ ﻛﻠﻤ ﺔ "آﻳ ﺲ ﻛﺮﻳﻢ" ﻓ ﻲ ﻛﻠ‬
‫ﺜﻞ ‪،‬ﺳ‬
‫ﺑﺎﻟﻤ‬
‫و‬

‫ﺘﺎن اﻵن ‪ ،‬و ﻫﺬا ﻟﻴ ﺲ ﻣﺎ أردﻧﺎه‪:‬‬


‫ﺛﻠ‬‫ﺘﻤﺎ‬
‫ﺘﻴﻦ ﻣ‬
‫ﺗﺞ أن ﻛﻼ اﻟﻘﺎﺋﻤ‬
‫ُﻈﻬﺮ اﻟﻨﺎ‬
‫ﻳ‬

‫ﺘﺰا" و "ﻓﻼﻓﻞ" و "ﻛﻌﻜ ﺔ ﺟﺰر" و "ﻛﺎﻧﻮﻟ ﻲ" و "آﻳ ﺲ ﻛﺮﻳﻢ"[‬


‫ﺑﻴ‬‫ﺘ ﻲ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‪"] :‬‬
‫أﻃﻌﻤ‬

‫ﺘﺰا" و "ﻓﻼﻓﻞ" و "ﻛﻌﻜ ﺔ اﻟﺠﺰر" و "ﻛﺎﻧﻮﻟ ﻲ" و "آﻳ ﺲ ﻛﺮﻳﻢ"[‬


‫ﺑﻴ‬‫اﻷﻃﻌﻤ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺼﺪﻳﻘ ﻲ ﻫ ﻲ‪"] :‬‬

‫ﺑﻊ‬
‫‪68‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫ﺜﺎل ﻓ ﻲ اﻟﻮﻗ ﺖ اﻟﺤﺎﻟ ﻲ‪ .‬ﻓ ﻲ اﻷﺳﺎس ‪ ،‬إذا ﻛﻨ ﺖﺗﺤﺎول ذﻟﻚ‬


‫ﺘﻔﺎﺻﻴﻞ اﻟﻮاردة ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺑﺸﺄن اﻟ‬‫الﺗﻘﻠﻖ‬
‫ﺜﺎل اﻷول‪.‬‬
‫ﺘﺨﺪام ﺷﺮﻳﺤ ﺔ ‪ ،‬ﻛﻤﺎ ﻓﻌﻠﻨﺎ ﻓ ﻲ اﻟﻤ‬
‫ﺑﺎﺳ‬ ‫ﺘﺮىﺳﻠﻮ ًﻛﺎ ﻏﻴﺮ ﻣ‬
‫ﺘﻮﻗﻊ ‪،‬ﺗﺄﻛﺪ ﻣﻦ ﻧ ﺴﺦ اﻟﻘﺎﺋﻤ ﺔ‬ ‫اﻋﻤﻞ ﻣﻊ ﻧ ﺴﺨ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ وﺳ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺒﺮﻧﺎﻣﺞﺗﻘﻮم‬
‫ﺘﻬﺎ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ‪ ،‬أﺿﻒ ﻋﺪة أﺳﻄﺮ إﱃ ﻧﻬﺎﻳ ﺔ اﻟ‬
‫ﺒ‬‫ﺘ‬‫ﺘ ﻲﻛ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺘﺨﺪام أﺣﺪ اﻟ‬
‫ﺑﺎﺳ‬‫‪4-10.‬اﻟﺸﺮاﺋﺢ‪:‬‬
‫ﺑﻤﺎﻳﻠ ﻲ‪:‬‬

‫ﺘﺨﺪم ﺷﺮﻳﺤ ﺔ ل‬
‫ﺛﻢ اﺳ‬‫ﺛ ﺔ اﻷوﱃ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻫ ﻲ ‪.:‬‬
‫ﺜﻼ‬‫ﺒﻊ اﻟﺮﺳﺎﻟ ﺔ ‪ ،‬اﻟﻌﻨﺎﺻﺮ اﻟ‬
‫•اﻃ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺛ ﺔ اﻷوﱃ ﻣﻦ ﻗﺎﺋﻤ ﺔ ذﻟﻚ اﻟ‬
‫ﺜﻼ‬‫ﺒﺎﻋ ﺔ اﻟﻌﻨﺎﺻﺮ اﻟ‬
‫ﻃ‬

‫ﺘﺼﻒ‬
‫ﺛ ﺔ ﻋﻨﺎﺻﺮ ﻣﻦ ﻣﻨ‬
‫ﺛﻼ‬‫ﺒﺎﻋ ﺔ‬
‫ﺘﺨﺪم ﺷﺮﻳﺤ ﺔ ﻟﻄ‬
‫ﺘﺼﻒ اﻟﻘﺎﺋﻤ ﺔ ﻫ ﻲ‪ .:‬اﺳ‬
‫ﺛ ﺔ ﻋﻨﺎﺻﺮ ﻣﻦ ﻣﻨ‬
‫ﺛﻼ‬‫ﺒﻊ اﻟﺮﺳﺎﻟ ﺔ ‪،‬‬
‫•اﻃ‬
‫اﻟﻘﺎﺋﻤ ﺔ‪.‬‬

‫ﺛ ﺔ اﻷﺧﻴﺮة ﻓ ﻲ‬
‫ﺜﻼ‬‫ﺒﺎﻋ ﺔ اﻟﻌﻨﺎﺻﺮ اﻟ‬
‫ﺘﺨﺪم ﺷﺮﻳﺤ ﺔ ﻟﻄ‬
‫ﺛ ﺔ اﻷﺧﻴﺮة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻫ ﻲ ‪ .:‬اﺳ‬
‫ﺜﻼ‬‫ﺒﻊ اﻟﺮﺳﺎﻟ ﺔ ‪ ،‬اﻟﻌﻨﺎﺻﺮ اﻟ‬‫•اﻃ‬
‫اﻟﻘﺎﺋﻤ ﺔ‪.‬‬

‫ﺘﺰا ‪ ،‬وأﻃﻠﻖ‬
‫ﺒﻴ‬‫ﺑﻌﻤﻞ ﻧ ﺴﺨ ﺔ ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟ‬‫ﺘﻤﺮﻳﻦ ‪)4-1‬ﺻﻔﺤ ﺔ ‪60).‬ﻗﻢ‬
‫ﺒﺮﻧﺎﻣﺠﻚ ﻣﻦ اﻟ‬
‫ﺑ‬‫ﺑﺪأ‬
‫ﺘﺰاك‪ :‬ا‬
‫ﺑﻴ‬‫ﺘﺰاي ‪،‬‬
‫ﺑﻴ‬‫‪4-11.‬‬
‫ﻋﻠﻴﻬﺎ اﺳﻢ ‪friend_pizzas.‬‬
‫ﺑﻤﺎﻳﻠ ﻲ‪:‬‬‫ﺛﻢ ﻗﻢ‬

‫ﺘﺰا ﺟﺪﻳﺪة إﱃ اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ‪.‬‬


‫ﺑﻴ‬‫•إﺿﺎﻓ ﺔ‬

‫ﺘﻠﻔ ﺔ إﱃ ﻗﺎﺋﻤ ﺔ ‪friend_pizzas.‬‬


‫ﺘﺰا ﻣﺨ‬
‫ﺑﻴ‬‫•إﺿﺎﻓ ﺔ‬

‫ﺘﻲ‬
‫ﺒﻊ اﻟﺮﺳﺎﻟ ﺔﻳﺎ ﻣﻔﻀﻠ‬
‫ﺘﻴﻦ‪ .‬اﻃ‬
‫ﺘﻴﻦ ﻣﻨﻔﺼﻠ‬
‫ﺒﺎ ت أن ﻟﺪﻳﻚ ﻗﺎﺋﻤ‬
‫ﺛ‬‫•إ‬
‫ﺘﺰا اﻟﻤﻔﻀﻠ ﺔ ﻟﺼﺪﻳﻘ ﻲ‬
‫ﺒﻴ‬‫ﺒﻊ اﻟﺮﺳﺎﻟ ﺔ ‪ ،‬واﻟ‬
‫ﺒﺎﻋ ﺔ اﻟﻘﺎﺋﻤ ﺔ اﻷوﱃ‪ .‬اﻃ‬
‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬
‫ﺛﻢ اﺳ‬‫ﺘﺰا ﻫ ﻲ‪، :‬‬
‫ﺒﻴ‬‫اﻟ‬
‫ﺒ ﺔ‪.‬‬
‫ﺘﺰا ﺟﺪﻳﺪة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ اﻟﻤﻨﺎﺳ‬
‫ﺑﻴ‬‫ﺜﺎﻧﻴ ﺔ‪.‬ﺗﺄﻛﺪ ﻣﻦﺗﺨﺰﻳﻦ ﻛﻞ‬
‫ﺒﺎﻋ ﺔ اﻟﻘﺎﺋﻤ ﺔ اﻟ‬
‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬
‫ﺛﻢ اﺳ‬‫ﻫ ﻲ‪، :‬‬

‫ﺘﺨﺪام ﺣﻠﻘﺎ ت ‪for‬ﻋﻨﺪ‬


‫ﺒ ﺖ ﺟﻤﻴﻊ إﺻﺪارا ت ‪foods.py‬ﻓ ﻲ ﻫﺬا اﻟﻘ ﺴﻢ اﺳ‬
‫‪4-12.‬اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺤﻠﻘﺎ ت‪:‬ﺗﺠﻨ‬
‫ﺒﺎﻋ ﺔ ﻛﻞ ﻗﺎﺋﻤ ﺔ ﻣﻦ اﻷﻃﻌﻤ ﺔ‪.‬‬
‫ﺘ ﻲ ‪for‬ﻟﻄ‬
‫ﺘ ﺐ ﺣﻠﻘ‬
‫ﺘﺮ ﻧ ﺴﺨ ﺔ ﻣﻦ ‪foods.py ،‬واﻛ‬
‫ﺘﻮﻓﻴﺮ ﻣ ﺴﺎﺣ ﺔ‪ .‬اﺧ‬
‫ﺒﺎﻋ ﺔ ﻟ‬
‫اﻟﻄ‬

‫ﻣﺠﻤﻮﻋﺎ ت‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬ﺗﻌﺪ اﻟﻘﺪرة ﻋﲆﺗﻌﺪﻳﻞ اﻟﻘﻮاﺋﻢ‬
‫ﺘﻐﻴﺮ ﻃﻮال ﻋﻤﺮ اﻟ‬
‫ﺘ ﻲﻳﻤﻜﻦ أنﺗ‬
‫ﺘﺨﺰﻳﻦ ﻣﺠﻤﻮﻋﺎ ت اﻟﻌﻨﺎﺻﺮ اﻟ‬
‫ﺗﻌﻤﻞ اﻟﻘﻮاﺋﻢ ﺟﻴﺪًا ﻟ‬
‫ﺒ ﺔ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ‬
‫ﺘﺨﺪﻣﻴﻦ ﻋﲆ ﻣﻮﻗﻊ وﻳ ﺐ أو ﻗﺎﺋﻤ ﺔ ﺷﺨﺼﻴﺎ ت ﻓ ﻲ ﻟﻌ‬
‫ﺑﺸﻜﻞ ﺧﺎص ﻋﻨﺪ اﻟﻌﻤﻞ ﻣﻊ ﻗﺎﺋﻤ ﺔ ﻣ ﺴ‬‫ﻣﻬﻤ ﺔ‬
‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﺒﻂ‪.‬ﺗﺸﻴﺮ‬
‫ﺑﺎﻟﻀ‬‫ﺑﻔﻌﻞ ذﻟﻚ‬
‫ﺘ ﻲ ﻻﻳﻤﻜﻦﺗﻐﻴﻴﺮ ﻫﺎ‪.‬ﻳ ﺴﻤﺢ ﻟﻚ ‪Tuples‬‬
‫ﺑﺎﻟﻌﻨﺎﺻﺮ اﻟ‬‫ﺑﻌﺾ اﻷﺣﻴﺎن ﻓ ﻲ إﻧﺸﺎء ﻗﺎﺋﻤ ﺔ‬‫ﻓﻲ‬
‫ﺘﻐﻴﻴﺮ ﻣﺠﻤﻮﻋ ﺔ‪.‬‬
‫ﺑﻠ ﺔ ﻟﻠ‬
‫ﺗ ﺴﻤﻰ اﻟﻘﺎﺋﻤ ﺔ ﻏﻴﺮ اﻟﻘﺎ‬
‫ﺘﻐﻴﻴﺮ ‪ ،‬و‬
‫ﺑﻠ ﺔ ﻟﻠ‬
‫ﺘ ﻲ ﻻﻳﻤﻜﻦﺗﻐﻴﻴﺮ ﻫﺎ ﻋﲆ أﻧﻬﺎ ﻏﻴﺮ ﻗﺎ‬
‫إﱃ اﻟﻘﻴﻢ اﻟ‬

‫ﺗﺤﺪﻳﺪ ‪Tuple‬‬
‫ﺑﻤﺠﺮدﺗﺤﺪﻳﺪ ‪tuple ،‬ﻳﻤﻜﻨﻚ‬ ‫ﺑﺪﻻ ً ﻣﻦ اﻷﻗﻮاس اﻟﻤﺮ‬
‫ﺑﻌ ﺔ‪.‬‬ ‫ﺘﺨﺪام اﻷﻗﻮاس‬
‫ﺜﻨﺎء اﺳ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺜﻞ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫ﺒﺪو اﻟﻤﺠﻤﻮﻋ ﺔ‬
‫ﺗ‬
‫ﺗﻤﺎﻣﺎ ﻛﻤﺎﺗﻔﻌﻞ ﻣﻊ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬
‫ً‬ ‫ﺘﺨﺪام ﻓﻬﺮس ﻛﻞ ﻋﻨﺼﺮ ‪،‬‬
‫ﺑﺎﺳ‬‫اﻟﻮﺻﻮل إﱃ اﻟﻌﻨﺎﺻﺮ اﻟﻔﺮدﻳ ﺔ‬

‫اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ ‪69‬‬


‫‪Machine Translated by Google‬‬

‫ﺘﻐﻴﺮ‬
‫ﺘﺄﻛﺪ ﻣﻦ أن ﺣﺠﻤﻪ ﻻﻳ‬
‫ﺑﺤﺠﻢ ﻣﻌﻴﻦ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎ اﻟ‬‫ﺋﻤﺎ‬
‫ﺘﻄﻴﻞﻳﺠ ﺐ أنﻳﻜﻮن دا ً‬
‫ﺜﺎل ‪ ،‬إذا ﻛﺎن ﻟﺪﻳﻨﺎ ﻣ ﺴ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺑﻌﺎد ﻓ ﻲ ﻣﺠﻤﻮﻋ ﺔ‪:‬‬
‫ﻋﻦ ﻃﺮﻳﻖ وﺿﻊ اﻷ‬

‫ﺑﻌﺎد ش )‪= (200 ، 50‬‬ ‫ﺑﻌﺎد‪ .‬أ‬‫أ‬


‫ﺑﻌﺎد )]‪[0‬‬‫ﺒﺎﻋ ﺔ )اﻷ‬ ‫‪v‬اﻟﻄ‬
‫ﺑﻌﺎد )]‪[1‬‬ ‫ﺒﺎﻋ ﺔ )أ‬‫ﻃ‬

‫ﺑﺪﻻ ً ﻣﻦ اﻟﻤﺮ‬
‫ﺑﻊ‬ ‫ﺘﺨﺪام اﻷﻗﻮاس‬
‫ﺑﺎﺳ‬
‫ﺑﻌﺎد اﻟﺼﻒ ﻋﻨﺪ ‪u ،‬‬
‫ﻧﺤﺪد أ‬
‫ﺘﺨﺪﻣﻨﺎ ﻫﺎ ﻟﻠﻮﺻﻮل إﱃ‬
‫ﺘ ﻲ اﺳ‬
‫ﺘﺨﺪام ﻧﻔ ﺲ اﻟﺼﻴﻐ ﺔ اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﻊ ﻛﻞ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻤﺠﻤﻮﻋ ﺔ ﻋﲆ ﺣﺪة ‪،‬‬
‫اﻗﻮاس‪ .‬ﻓ ﻲ ‪v‬ﻧﻄ‬
‫اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬

‫‪200‬‬
‫‪50‬‬

‫ﻟﻨﺮى ﻣﺎذاﺳﻴﺤﺪ ث إذا ﺣﺎوﻟﻨﺎﺗﻐﻴﻴﺮ أﺣﺪ اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ اﻟﻤﺠﻤﻮﻋ ﺔ‬


‫ﺑﻌﺎد‪:‬‬
‫أ‬

‫ﺑﻌﺎد )‪= (200 ، 50‬‬


‫اﻷ‬
‫ﺑﻌﺎد ‪u [0] = 250‬‬
‫أ‬

‫ُﺮﺟﻊ ﺧﻄﺄ ﻓ ﻲ اﻟﻨﻮع‪ .‬ﻓ ﻲ اﻷﺳﺎس ‪ ،‬ﻧﻈ ﺮًاﻷﻧﻨﺎ ﻧﺤﺎول‬


‫ﺗ‬
‫ﺒﻌﺪ اﻷول ‪ ،‬ﻟﻜﻦ ‪Python‬‬
‫ﺗﻐﻴﻴﺮ ﻗﻴﻤ ﺔ اﻟ‬
‫ﻳﺤﺎول اﻟﻜﻮد ﻓ ﻲ ‪u‬‬
‫ﺒﺮﻧﺎ ‪Python‬أﻧﻪ ﻻﻳﻤﻜﻨﻨﺎﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ ﺟﺪﻳﺪة‬
‫ﺗﻐﻴﻴﺮ ‪tuple ،‬و ﻫﻮ ﻣﺎ ﻻﻳﻤﻜﻦ إﺟﺮاؤه ﻋﲆ ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻟﻜﺎﺋﻨﺎ ت ‪،‬ﺗﺨ‬
‫ﻟﻌﻨﺼﺮ ﻓ ﻲ ‪tuple:‬‬

‫‪)Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬


‫ﻣﻠﻒ ‪"features.py" ،‬اﻟ ﺴﻄﺮ ‪3 ،‬ﻓ ﻲ >‪<module‬‬
‫ﺑﻌﺎد ‪[0] = 250‬‬
‫اﻷ‬
‫‪TypeError:‬ﻛﺎﺋﻦ "‪"tuple‬ﻻﻳﺪﻋﻢﺗﻌﻴﻴﻦ اﻟﻌﻨﺼﺮ‬

‫ﺘﻄﻴﻞ‪.‬‬
‫ﺑﻌﺎد اﻟﻤ ﺴ‬
‫ﺒﺮﻣﺠﻴ ﺔﺗﻐﻴﻴﺮ أ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺜﻴﺮ ﺧﻄﺄ ﻋﻨﺪﻣﺎﻳﺤﺎولﺳﻄﺮ ﻣﻦ اﻟ‬
‫ﻫﺬا ﻣﻔﻴﺪﻷﻧﻨﺎ ﻧﺮﻳﺪ ﻣﻦ ‪Python‬أنﺗ‬

‫ﺒﺮ ﺟﻤﻴﻊ اﻟﻘﻴﻢ ﻓ ﻲ ‪Tuple‬‬


‫ﺘﻜﺮار ﻋ‬
‫اﻟ‬
‫ﺗﻤﺎﻣﺎ ﻛﻤﺎ ﻓﻌﻠ ﺖ ﻣﻊ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬
‫ً‬ ‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪for ،‬‬
‫ﺑﺎﺳ‬‫ﻳﻤﻜﻨﻚﺗﻜﺮار ﻛﻞ اﻟﻘﻴﻢ ﻓ ﻲ اﻟﻤﺠﻤﻮﻋ ﺔ‬

‫ﺑﻌﺎد )‪= (200 ، 50‬‬


‫اﻷ‬
‫ﺑﻌﺎد‪:‬‬
‫ﺑﻌﺎد ﻓ ﻲ اﻷ‬
‫ﻟﻸ‬

‫ﺒﻌﺪ(‬
‫ﺒﺎﻋ ﺔ )اﻟ‬
‫ﻃ‬

‫ﺗﻤﺎﻣﺎ ﻛﻤﺎﺗﻔﻌﻞ ﻣﻊ اﻟﻘﺎﺋﻤ ﺔ‪:‬‬


‫ً‬ ‫ُﺮﺟﻊ ‪Python‬ﺟﻤﻴﻊ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻤﺠﻤﻮﻋ ﺔ ‪،‬‬
‫ﺗ‬

‫‪200‬‬
‫‪50‬‬

‫ﺑﻊ‬
‫‪70‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺔ ﻓﻮق ‪Tuple‬‬
‫ﺘﺎ‬
‫اﻟﻜ‬
‫ﺘﻮي ﻋﲆ ﻣﺠﻤﻮﻋ ﺔ‪ .‬ﻟﺬﻟﻚ‬
‫ﺘﻐﻴﺮﻳﺤ‬
‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻪ ﻻﻳﻤﻜﻨﻚﺗﻌﺪﻳﻞ ﻣﺠﻤﻮﻋ ﺔ ‪ ،‬إﻻ أﻧﻪﻳﻤﻜﻨﻚﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ ﺟﺪﻳﺪة إﱃ ﻣ‬
‫ﺑﺄﻛﻤﻠﻬﺎ‪:‬‬‫ﺑﻌﺎدﻧﺎ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎ إﻋﺎدةﺗﻌﺮﻳﻒ اﻟﻤﺠﻤﻮﻋ ﺔ‬
‫إذا أردﻧﺎﺗﻐﻴﻴﺮ أ‬

‫ﺑﻌﺎد )‪u = (200 ، 50‬‬


‫أ‬
‫ﺑﻌﺎد اﻷﺻﻠﻴ ﺔ‪(":‬‬
‫ﺒﺎﻋ ﺔ )"اﻷ‬
‫ﻃ‬
‫ﺑﻌﺎد‪:‬‬
‫ﺑﻌﺎد ﻓ ﻲ اﻷ‬
‫ﻟﻸ‬

‫ﺒﻌﺪ(‬
‫ﺒﺎﻋ ﺔ )اﻟ‬
‫ﻃ‬

‫ﺑﻌﺎد اﻟﺨﺎﻣ ﺲ )‪= (400 ، 100‬‬


‫أ‬
‫ﺑﻌﺎد ﻣﻌﺪﻟ ﺔ‪(":‬‬
‫‪w print ("\ n‬أ‬
‫ﺑﻌﺎد‪:‬‬
‫ﺑﻌﺎد ﻓ ﻲ اﻷ‬
‫ﻟﻸ‬

‫ﺒﻌﺪ(‬
‫ﺒﺎﻋ ﺔ )اﻟ‬
‫ﻃ‬

‫ﺑﻌﺎد‬
‫ﺘﺨﺰﻳﻦ ﻣﺠﻤﻮﻋ ﺔ ﺟﺪﻳﺪة ﻓ ﻲ اﻷ‬
‫ﺑ‬‫ﺑﻌﺎد ﻫﺎ اﻷوﻟﻴ ﺔ‪ .‬ﻓ ﻲ ‪v ،‬ﻧﻘﻮم‬
‫ﺒﻊ أ‬
‫ﺗﻄ‬‫ﺘﻠ ﺔ ﻓ ﻲ ‪u‬اﻟﻤﺠﻤﻮﻋ ﺔ اﻷﺻﻠﻴ ﺔ و‬
‫ﺗﺤﺪد اﻟﻜ‬
‫ﺘﻐﻴﺮ أﻣﺮ ﺻﺎﻟﺢ‪:‬‬
‫ﺑ ﺔ ﻓﻮق اﻟﻤ‬
‫ﺘﺎ‬
‫ﺜﻴﺮ ‪Python‬أي أﺧﻄﺎء ﻫﺬه اﻟﻤﺮة ‪،‬ﻷن اﻟﻜ‬
‫ﺑﻌﺎد اﻟﺠﺪﻳﺪة ﻓ ﻲ ‪w.‬ﻻﺗ‬
‫ﺒﺎﻋ ﺔ اﻷ‬
‫ﺑﻄ‬‫ﺛﻢ ﻧﻘﻮم‬‫ﺘﻐﻴﺮة‪.‬‬
‫اﻟﻤ‬

‫ﺑﻌﺎد اﻷﺻﻠﻴ ﺔ‪:‬‬


‫اﻷ‬
‫‪200‬‬
‫‪50‬‬

‫ﺑﻌﺎد ﻣﻌﺪﻟ ﺔ‪:‬‬


‫أ‬

‫‪400100‬‬

‫ﺘﺨﺪﻣﻬﺎ ﻋﻨﺪﻣﺎﺗﺮﻳﺪﺗﺨﺰﻳﻦ ﻣﺠﻤﻮﻋ ﺔ‬


‫ﺑ ﺴﻴﻄ ﺔ‪ .‬اﺳ‬‫ﺑﻴﺎﻧﺎ ت‬‫ﺒﺎرة ﻋﻦ ﻫﻴﺎﻛﻞ‬
‫ﺑﺎﻟﻘﻮاﺋﻢ ‪،‬ﺗﻜﻮن اﻟﻤﺠﻤﻮﻋﺎ ت ﻋ‬‫ﺘﻬﺎ‬
‫ﻋﻨﺪ ﻣﻘﺎرﻧ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺒﻐ ﻲﺗﻐﻴﻴﺮ ﻫﺎ ﻃﻮال ﻣﺪة اﻟ‬
‫ﺘ ﻲ ﻻﻳﻨ‬
‫ﻣﻦ اﻟﻘﻴﻢ اﻟ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺑ ﺴﻴﻄ ﺔ ‪،‬‬‫ﺒﻮﻓﻴﻪﻳﻘﺪم ﺧﻤ ﺴ ﺔ أﻃﻌﻤ ﺔ أﺳﺎﺳﻴ ﺔ ﻓﻘﻂ‪ .‬ﻓﻜﺮ ﻓ ﻲ ﺧﻤ ﺴ ﺔ أﻃﻌﻤ ﺔ‬


‫ﺒﻮﻓﻴﻪ‪ :‬ﻣﻄﻌﻢ ﻋﲆ ﻃﺮاز اﻟ‬
‫‪4-13.‬اﻟ‬
‫واﺣﻔﻈﻬﺎ ﻓ ﻲ ﻣﺠﻤﻮﻋ ﺔ‪.‬‬

‫ﺒﺎﻋ ﺔ ﻛﻞ ﻃﻌﺎمﻳﻘﺪﻣﻪ اﻟﻤﻄﻌﻢ‪.‬‬


‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬ﻟﻄ‬
‫•اﺳ‬

‫ﺜﻮنﺗﺮﻓﺾ ﻣﻠﻒ‬
‫ﺑﺎﻳ‬‫ﺗﺄﻛﺪ ﻣﻦ أن‬
‫•ﺣﺎولﺗﻌﺪﻳﻞ أﺣﺪ اﻟﻌﻨﺎﺻﺮ ‪ ،‬و‬
‫ﺘﻐﻴﺮ‪.‬‬
‫ﻳ‬

‫ﺘﻲ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻠ ﺔ ﻣﻦ اﻟ‬
‫ﺘﻠﻔ ﺔ‪ .‬أﺿﻒ ﻛ‬
‫ﺑﺄﻃﻌﻤ ﺔ ﻣﺨ‬‫ﺒﺪال ﻋﻨﺼﺮﻳﻦ‬
‫ﺘ‬‫ﺘﻪ ‪ ،‬واﺳ‬
‫ﺘﻐﻴﻴﺮ ﻗﺎﺋﻤ‬
‫ﺑ‬‫•ﻳﻘﻮم اﻟﻤﻄﻌﻢ‬
‫ﺘﺨﺪم ‪for‬‬
‫ﺛﻢ اﺳ‬‫ﺑ ﺔ اﻟﻤﺠﻤﻮﻋ ﺔ ‪،‬‬
‫ﺘﺎ‬
‫ﺗﻌﻴﺪ ﻛ‬
‫ﺒﺎﻋ ﺔ ﻛﻞ ﻋﻨﺼﺮ ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ اﻟﻤﻨﻘﺤ ﺔ‪.‬‬
‫ﺣﻠﻘ ﺔ ﻟﻄ‬

‫‪71-‬اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻚ‬‫ﺗﺼﻤﻴﻢ اﻟﻜﻮد اﻟﺨﺎص‬

‫ﺘﺤﻖ أنﺗﻌﺮﻓﻬﺎ‪ .‬ﺧﺬ اﻟﻮﻗ ﺖ اﻟﻜﺎﻓ ﻲ‬


‫ﺑﻚﺗ ﺴ‬‫ﺑﺮاﻣﺞ أﻃﻮل ‪ ،‬ﻓﺈن اﻷﻓﻜﺎر ﺣﻮل ﻛﻴﻔﻴ ﺔﺗﺼﻤﻴﻢ اﻟﻜﻮد اﻟﺨﺎص‬‫ﺒﺖ‬
‫ﺘ‬‫ﺑﻌﺪ أن ﻛ‬‫اﻵن‬
‫ﺒﻊ ﻣﺎﻳﻔﻌﻠﻪ‬
‫ﺘ‬‫ﺑﺮﻣﺠﻴ ﺔﺳﻬﻠ ﺔ اﻟﻘﺮاءة ﻋﲆﺗ‬‫ﺑ ﺔﺗﻌﻠﻴﻤﺎ ت‬
‫ﺘﺎ‬
‫ﺑﻚﺳﻬﻞ اﻟﻘﺮاءة ﻗﺪر اﻹﻣﻜﺎن‪.‬ﺗ ﺴﺎﻋﺪك ﻛ‬‫ﻟﺠﻌﻞ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺗﻚ أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺘﺮﻓﻮن وﻳ ﺴﺎﻋﺪ اﻵﺧﺮﻳﻦ ﻋﲆ ﻓﻬﻢ ﺷﻔﺮ‬
‫اﻟﻤﺤ‬

‫ﺒﺎ‪.‬‬
‫ﺑﻨﻔ ﺲ اﻟﻄﺮﻳﻘ ﺔﺗﻘﺮﻳ ً‬‫ﺘﺄﻛﺪ ﻣﻦ أن ﻛﻮد ﻛﻞ ﺷﺨﺺ ﻣﻨﻈﻢ‬
‫ﺘﺼﻤﻴﻢ ﻟﻠ‬
‫ﺜﻮن ﻋﲆ ﻋﺪد ﻣﻦ أﺳﺎﻟﻴ ﺐ اﻟ‬
‫ﺑﺎﻳ‬‫ﺒﺮﻣﺠﻮ‬
‫ﺗﻔﻖ ﻣ‬
‫ا‬

‫ﺑﺄي‬‫ﺑ ﺔ ﻛﻮد ‪Python‬اﻟﻨﻈﻴﻒ ‪،‬ﻳﺠ ﺐ أنﺗﻜﻮن ﻗﺎد ًرا ﻋﲆ ﻓﻬﻢ اﻟﻬﻴﻜﻞ اﻟﻌﺎم ﻟﻜﻮد ‪Python‬اﻟﺨﺎص‬ ‫ﺘﺎ‬‫ﺘﻌﻠﻢ ﻛ‬‫ﺑﻤﺠﺮد أنﺗ‬
‫ﺒﺮﻣﺠًﺎ ﻣﺤ ً‬
‫ﺘﺮﻓﺎ ﻓ ﻲ وﻗ ﺖ ﻣﺎ ‪،‬ﻳﺠ ﺐ أن‬ ‫ﺒﺢ ﻣ‬
‫ﺒﻌﻮن ﻧﻔ ﺲ اﻹرﺷﺎدا ت‪ .‬إذا ﻛﻨ ﺖﺗﺄﻣﻞ ﻓ ﻲ أنﺗﺼ‬
‫ﺘ‬‫ﺷﺨﺺ آﺧﺮ ‪ ،‬ﻃﺎﻟﻤﺎ أﻧﻬﻢﻳ‬
‫ﺘﻄﻮﻳﺮ ﻋﺎدا ت ﺟﻴﺪة‪.‬‬
‫ﺒﺎع ﻫﺬه اﻹرﺷﺎدا ت ﻓ ﻲ أﻗﺮ ب وﻗ ﺖ ﻣﻤﻜﻦ ﻟ‬
‫ﺗ‬‫ﺒﺪأ ﻓ ﻲ ا‬
‫ﺗ‬

‫دﻟﻴﻞ اﻷﺳﻠﻮ ب‬
‫ﺘﺮاحﺗﺤ ﺴﻴﻦ ‪Python (PEP).‬ﻳﻌﺪ ‪PEP 8‬واﺣﺪًا ﻣﻦ‬
‫ﺘ ﺐ اﻗ‬
‫ﻋﻨﺪﻣﺎﻳﺮﻳﺪ ﺷﺨﺺ ﻣﺎ إﺟﺮاءﺗﻐﻴﻴﺮ ﻋﲆ ﻟﻐ ﺔ ‪Python ،‬ﻓﺈﻧﻪﻳﻜ‬
‫ﺜﻴﺮ‬
‫ﺑﻬﻢ‪PEP 8 .‬ﻃﻮﻳﻞ إﱃ ﺣﺪ ﻣﺎ ‪ ،‬ﻟﻜﻦ اﻟﻜ‬‫ﺒﺮﻣﺠ ﻲ ‪Python‬ﺣﻮل ﻛﻴﻔﻴ ﺔﺗﺼﻤﻴﻢ اﻟﻜﻮد اﻟﺨﺎص‬
‫أﻗﺪم ‪PEPs ،‬واﻟﺬيﻳﻮﺟﻪ ﻣ‬
‫ﺘﻰ اﻵن‪.‬‬
‫ﺘﻪ ﺣ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا ﻣﻤﺎ رأﻳ‬
‫ﺑﻬﻴﺎﻛﻞﺗﺸﻔﻴﺮ أﻛ‬‫ﺘﻌﻠﻖ‬
‫ﻣﻨﻪﻳ‬

‫ﺛﻢ‬‫ﺑﻚ ﻣﺮة واﺣﺪة‬‫ﺘ ﺐ اﻟﺮﻣﺰ اﻟﺨﺎص‬


‫ﺘﻜ‬‫ﺘ ﺐ‪.‬ﺳ‬
‫ُﻜ‬
‫ﺜﺮ ﻣﻤﺎﻳ‬
‫ُﻘﺮأ أﻛ‬
‫ﺜﻮن ﻋﲆ أﺳﺎس أن اﻟﻜﻮدﻳ‬
‫ﺑﺎﻳ‬‫ﺑ ﺔ دﻟﻴﻞ أﺳﻠﻮ ب‬
‫ﺘﺎ‬
‫ﺗﻤ ﺖ ﻛ‬
‫ﺘﻘﻀ ﻲ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻮﻗ ﺖ ﻓ ﻲ ﻗﺮاءة‬
‫ﺑﺮﻧﺎﻣﺞ ‪pro gram ،‬ﺳ‬‫ﺘﺼﺤﻴﺢ‪ .‬ﻋﻨﺪﻣﺎﺗﻀﻴﻒ ﻣﻴﺰا ت إﱃ‬
‫ﺑﺪء اﻟ‬‫ﺗﻪ ﻋﻨﺪ‬
‫ﺒﺪأ ﻓ ﻲ ﻗﺮاء‬
‫ﺗ‬
‫ﺑﻚ‬‫ﺒﺮﻣﺠﻴﻦ آﺧﺮﻳﻦ ‪ ،‬ﻓ ﺴﻮفﻳﻘﺮأون اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺑﻚ ﻣﻊ ﻣ‬‫ﺑﻚ‪ .‬ﻋﻨﺪﻣﺎﺗﺸﺎرك اﻟﻜﻮد اﻟﺨﺎص‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟ‬
‫أ ً‬
‫ﻳﻀﺎ‪.‬‬

‫ﺗﻪ ‪،‬ﺳﻴﺸﺠﻌﻚ‬
‫ﺘﻬﺎ أو اﻟﻜﻮد اﻟﺬيﻳ ﺴﻬﻞ ﻗﺮاء‬
‫ﺑ‬‫ﺘﺎ‬
‫ﺘ ﻲﻳ ﺴﻬﻞ ﻛ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺑﻴﻦ ﻛ‬‫ﺘﻴﺎر‬
‫ﺑﺎﻟﻨﻈﺮ إﱃ اﻻﺧ‬
‫ﺑ ﺔ رﻣﺰ‬
‫ﺘﺎ‬
‫ﺘﺎﻟﻴ ﺔ ﻋﲆ ﻛ‬
‫ﺘ ﺴﺎﻋﺪك اﻹرﺷﺎدا ت اﻟ‬
‫ﺗﻬﺎ‪.‬ﺳ‬
‫ﺘ ﻲﻳ ﺴﻬﻞ ﻗﺮاء‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺋﻤﺎ ﻋﲆ ﻛ‬
‫ﺒﺮﻣﺠﻮ ‪Python‬دا ً‬
‫ﻣ‬
‫ﺒﺪاﻳ ﺔ‪.‬‬
‫واﺿﺢ ﻣﻦ اﻟ‬

‫اﻟﻤ ﺴﺎﻓ ﺔ اﻟﻔﺎرﻏ ﺔ‬

‫ﺑﻊ ﻣ ﺴﺎﻓﺎ ت إﱃﺗﺤ ﺴﻴﻦ إﻣﻜﺎﻧﻴ ﺔ‬


‫ﺘﺨﺪام أر‬
‫ﺑﺎدﺋ ﺔ‪.‬ﻳﺆدي اﺳ‬‫ﺘﻮى ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﻊ ﻣ ﺴﺎﻓﺎ ت ﻟﻜﻞ ﻣ ﺴ‬
‫ﺘﺨﺪام أر‬
‫ﺑﺎﺳ‬
‫ﺗﻮﺻ ﻲ ‪PEP 8‬‬
‫ﺒﺎدﺋ ﺔ ﻓ ﻲ ﻛﻞﺳﻄﺮ‪.‬‬
‫ﺘﻌﺪدة ﻣﻦ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺘﻮﻳﺎ ت ﻣ‬
‫اﻟﻘﺮاءة ﻣﻊﺗﺮك ﻣ ﺴﺎﺣ ﺔ ﻟﻤ ﺴ‬

‫ﺑﺪﻻ ً ﻣﻦ اﻟﻤ ﺴﺎﻓﺎ ت ﻟﻮﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬‫ﺒﻮﻳ ﺐ‬


‫ﺘ‬‫ﺘﺨﺪم اﻷﺷﺨﺎص ﻋﻼﻣﺎ ت اﻟ‬
‫ﺒﺎ ﻣﺎﻳ ﺴ‬
‫ﺘﻨﺪ ﻣﻌﺎﻟﺠ ﺔ اﻟﻜﻠﻤﺎ ت ‪ ،‬ﻏﺎﻟ ً‬
‫ﻓ ﻲ ﻣﺴ‬
‫ﺘﻠﻂ ﻋﻼﻣﺎ ت‬
‫ﺒﺎك ﻋﻨﺪﻣﺎﺗﺨ‬
‫ﺗ‬‫ﺘﻌﺮض ﻟﻼر‬
‫ﺜﻮنﻳ‬
‫ﺑﺎﻳ‬‫ﺘﺮﺟﻢ‬
‫ﺘﻨﺪا ت ﻣﻌﺎﻟﺠ ﺔ اﻟﻜﻠﻤﺎ ت ‪ ،‬ﻟﻜﻦ ﻣ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ ﻣﻊ ﻣ ﺴ‬‫ﺑﺎدﺋ ﺔ‪.‬ﻳﻌﻤﻞ ﻫﺬا‬
‫ﺒﻮﻳ ﺐ إﱃ ﻋﺪد‬
‫ﺛﻢﻳﺤﻮل ﻛﻞ ﻋﻼﻣ ﺔﺗ‬‫ﺘﺎح اﻟﺠﺪوﻟ ﺔ‬
‫ﺘﺨﺪام ﻣﻔ‬
‫ﺘﻴﺢ ﻟﻚ اﺳ‬
‫ﺑﻤ ﺴﺎﻓﺎ ت‪.‬ﻳﻮﻓﺮ ﻛﻞ ﻣﺤﺮر ﻧﺼﻮص إﻋﺪادًاﻳ‬‫ﺒﻮﻳ ﺐ‬
‫ﺘ‬‫اﻟ‬
‫ﺒﻂ اﻟﻤﺤﺮر‬ ‫ﺑﻚ ‪ ،‬وﻟﻜﻦﺗﺄﻛﺪ أ ً‬
‫ﻳﻀﺎ ﻣﻦ ﺿ‬ ‫ﺒﻮﻳ ﺐ اﻟﺨﺎص‬
‫ﺘ‬‫ﺘﺎح ﻋﻼﻣ ﺔ اﻟ‬
‫ﺘﺨﺪام ﻣﻔ‬
‫ﺘﺄﻛﻴﺪ اﺳ‬
‫ﺑﺎﻟ‬‫ﻣﺤﺪد ﻣﻦ اﻟﻤ ﺴﺎﻓﺎ ت‪.‬ﻳﺠ ﺐ ﻋﻠﻴﻚ‬
‫ﺘﻨﺪ‪.‬‬
‫ﺒﻮﻳ ﺐ ﻓ ﻲ اﻟﻤ ﺴ‬
‫ﺘ‬‫ﺑﺪﻻ ً ﻣﻦ ﻋﻼﻣﺎ ت اﻟ‬‫ﺑﻚ ﻋﲆ إدراج ﻣ ﺴﺎﻓﺎ ت‬‫اﻟﺨﺎص‬

‫ﺒﻮﻳ ﺐ واﻟﻤ ﺴﺎﻓﺎ ت ﻓ ﻲ ﻣﻠﻔﻚ ﻓ ﻲ ﺣﺪو ث ﻣﺸﻜﻼ تﻳﺼﻌ ﺐ ﻟﻠﻐﺎﻳ ﺔﺗﺸﺨﻴﺼﻬﺎ‪.‬‬


‫ﺘ‬‫ﺒ ﺐ ﺧﻠﻂ ﻋﻼﻣﺎ ت اﻟ‬
‫ﺘﺴ‬‫ﻳﻤﻜﻦ أنﻳ‬
‫ﺒﻮﻳ ﺐ ﻓ ﻲ ﻣﻠﻒ إﱃ‬
‫ﺘ‬‫ﺒﻮﻳ ﺐ واﻟﻤ ﺴﺎﻓﺎ ت ‪،‬ﻳﻤﻜﻨﻚﺗﺤﻮﻳﻞ ﻛﻞ ﻋﻼﻣﺎ ت اﻟ‬
‫ﺘ‬‫ﺘﻘﺪ أن ﻟﺪﻳﻚ ﻣﺰﻳﺠًﺎ ﻣﻦ ﻋﻼﻣﺎ ت اﻟ‬
‫إذا ﻛﻨ ﺖﺗﻌ‬
‫ﺘﺤﺮﻳﺮ‪.‬‬
‫ﺑﺮاﻣﺞ اﻟ‬‫ﻣ ﺴﺎﻓﺎ ت ﻓ ﻲ ﻣﻌﻈﻢ‬

‫ﺑﻊ‬
‫‪72‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫ﻃﻮل اﻟﺨﻂ‬
‫ﺘﻮﺟﻴﻬ ﻲﻷن‬ ‫ﺣﺮﻓﺎ‪.‬ﺗﺎرﻳﺨﻴﺎ ً ‪،‬ﺗﻢﺗﻄﻮﻳﺮ ﻫﺬا اﻟﻤ‬
‫ﺒﺪأ اﻟ‬ ‫ﺑﺄنﻳﻜﻮن ﻛﻞﺳﻄﺮ أﻗﻞ ﻣﻦ ‪ً 80‬‬‫ﺜﻮن‬‫ﺑﺎﻳ‬‫ﺒﺮﻣﺠ ﻲ‬
‫ﻳﻮﺻ ﻲ اﻟﻌﺪﻳﺪ ﻣﻦ ﻣ‬
‫ﺘﻮي ﻋﲆ ‪ً 79‬‬
‫ﺣﺮﻓﺎ ﻓﻘﻂ ﻓ ﻲﺳﻄﺮ واﺣﺪ ﻓ ﻲ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ‪.‬‬ ‫ﻣﻌﻈﻢ أدوا ت وﺿﻊ ‪com‬ﻳﻤﻜﻦ أنﺗﺤ‬

‫ﺑﻄﻮل اﻟﺨﻂ‬‫ﺘﺰام‬
‫ﺑﻨﺎء ﺣﻘﻴﻘﻴﻮن آﺧﺮون ﻟﻼﻟ‬
‫ﺗﻬﻢ ‪ ،‬وﻟﻜﻦﻳﻮﺟﺪ أ‬
‫ﺜﻴﺮ ﻋﲆ ﺷﺎﺷﺎ‬
‫ﺑﻜ‬‫ﺣﺎﻟ ًﻴﺎ ‪،‬ﻳﻤﻜﻦ ﻟﻸﺷﺨﺎص وﺿﻊ ﺧﻄﻮط أﻃﻮل‬
‫ﺘﻮﺣ ﺔ ﻋﲆ ﻧﻔ ﺲ اﻟﺸﺎﺷ ﺔ ‪ ،‬وﻳ ﺴﻤﺢ‬
‫ﺘﺮﻓﻴﻦ ﻋﺪة ﻣﻠﻔﺎ ت ﻣﻔ‬
‫ﺒﺮﻣﺠﻴﻦ اﻟﻤﺤ‬
‫ﺒﺎ ﻣﺎﻳﻜﻮن ﻟﺪى اﻟﻤ‬ ‫اﻟﻘﻴﺎﺳ ﻲ اﻟﻤﻜﻮن ﻣﻦ ‪ً 79‬‬
‫ﺣﺮﻓﺎ‪ .‬ﻏﺎﻟ ً‬
‫ﺒﺎ إﱃ ﺟﻨ ﺐ ﻋﲆ اﻟﺸﺎﺷ ﺔ‪.‬‬
‫ﺘﻮﺣ ﺔ ﺟﻨ ً‬
‫ﺛ ﺔ ﻣﻠﻔﺎ ت ﻣﻔ‬
‫ﺛﻼ‬‫ﺑﺮؤﻳ ﺔﺳﻄﻮر ﻛﺎﻣﻠ ﺔ ﻓ ﻲ ﻣﻠﻔﻴﻦ أو‬‫ﺘﺨﺪام ﻃﻮل اﻟﺨﻂ اﻟﻘﻴﺎﺳ ﻲ ﻟﻬﻢ‬
‫اﺳ‬
‫ﺛﺎﺋﻖﺗﻠﻘﺎﺋﻴ ﺔ‬
‫ﺘ ﻲﺗﻨﺸ ﺊ و‬
‫ﺑﻌﺾ اﻷدوا ت اﻟ‬ ‫ﺗﻚ ﻋﲆ ‪ً 72‬‬
‫ﺣﺮﻓﺎ ﻟﻜﻞﺳﻄﺮ ‪،‬ﻷن‬ ‫ﺑﺄنﺗﻘﺼﺮ ﺟﻤﻴﻊﺗﻌﻠﻴﻘﺎ‬ ‫ﻳﻮﺻ ﻲ ‪PEP 8‬أ ً‬
‫ﻳﻀﺎ‬
‫ﺑﺪاﻳ ﺔ ﻛﻞﺳﻄﺮ ﻣﻌﻠﻖ‪.‬‬‫ﺒﺮﺗﻀﻴﻒ أﺣﺮفﺗﻨ ﺴﻴﻖ ﻓ ﻲ‬
‫ﻟﻠﻤﺸﺎرﻳﻊ اﻷﻛ‬

‫ﺑﺸﺄن ﻃﻮل‬‫ﺜﻴ ﺮًا‬ ‫ﺑﻌﺾ اﻟﻔﺮق ﺣﺪًا ﻣﻦ ‪ً 99‬‬


‫ﺣﺮﻓﺎ‪ .‬ﻻﺗﻘﻠﻖ ﻛ‬ ‫ﺗﻔﻀﻞ‬
‫ﺘﻢﺗﺤﺪﻳﺪ إرﺷﺎدا ت ‪PEP 8‬ﻟﻄﻮل اﻟ ﺴﻄﺮ ‪ ،‬و‬
‫ﻟﻢﻳ‬
‫ﺒﻌﻮن‬
‫ﺘ‬‫ﺑﺸﻜﻞﺗﻌﺎوﻧ ﻲﻳ‬‫ﺑﺄن اﻷﺷﺨﺎص اﻟﺬﻳﻦﻳﻌﻤﻠﻮن‬‫ﺛﻨﺎءﺗﻌﻠﻤﻚ ‪ ،‬وﻟﻜﻦ ﻛﻦ ﻋﲆ دراﻳ ﺔ‬
‫ﺒﺮﻣﺠﻴ ﺔ أ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟ ﺴﻄﺮ ﻓ ﻲ اﻟ‬
‫ﺘﻚ ‪،‬ﻳﻮﺿﺢ‬
‫ﺧﻄﺎ رأﺳ ًﻴﺎ ﻋﲆ ﺷﺎﺷ‬
‫ﺋ ﻲ ‪ ،‬ﻋﺎدة ﻣﺎﻳﻜﻮن ً‬
‫ﺑﺈﻋﺪادﺗﻠﻤﻴﺢ ﻣﺮ‬‫ﺋﻤﺎ إرﺷﺎدا ت ‪PEP 8.‬ﻳ ﺴﻤﺢ ﻟﻚ ﻣﻌﻈﻢ اﻟﻤﺤﺮرﻳﻦ‬
‫دا ً‬
‫ﻟﻚ ﻣﻜﺎن ﻫﺬه اﻟﺤﺪود‪.‬‬

‫ﺑﻊ ﻣ ﺴﺎﻓﺎ ت ﻓ ﻲ ﻛﻞ ﻣﺮة‬


‫ﺑﺈدراج أر‬‫ﺋﻤﺎ‬
‫ﺑﺤﻴ ﺚﻳﻘﻮم دا ً‬ ‫ﺑﻚ‬‫ﻳﻮﺿﺢ ﻟﻚ ‪N ote Appendix B‬ﻛﻴﻔﻴ ﺔﺗﻜﻮﻳﻦ ﻣﺤﺮر اﻟﻨﺼﻮص اﻟﺨﺎص‬
‫ﺒﺎع ﺣﺪ ‪ً 79‬‬
‫ﺣﺮﻓﺎ‪.‬‬ ‫ﺗ‬
‫ﺗﻚ ﻋﲆ ا‬
‫ﺘﺎح اﻟﺠﺪوﻟ ﺔ وﻳﻌﺮض إرﺷﺎدا ت رأﺳﻴ ﺔ ﻟﻤ ﺴﺎﻋﺪ‬
‫ﺗﻀﻐﻂ ﻓﻴﻬﺎ ﻋﲆ ﻣﻔ‬

‫ﺧﻄﻮط ﻓﺎرﻏ ﺔ‬
‫ﺗﻚ ‪ ،‬ﻟﻜﻦ ﻻ‬
‫ﺘﻨﻈﻴﻢ ﻣﻠﻔﺎ‬
‫ﺘﺨﺪام أﺳﻄﺮ ﻓﺎرﻏ ﺔ ﻟ‬
‫ﺘﺨﺪم أﺳﻄ ﺮًا ﻓﺎرﻏ ﺔ‪.‬ﻳﺠ ﺐ ﻋﻠﻴﻚ اﺳ‬
‫ﺋ ﻲ ‪ ،‬اﺳ‬
‫ﺑﺸﻜﻞ ﻣﺮ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﺠﻤﻴﻊ أﺟﺰاء ﻣﻦ اﻟ‬
‫ﻟ‬
‫ﺜﺎل ‪ ،‬إذا‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻮازن اﻟﺼﺤﻴﺢ‪ .‬ﻋﲆﺳ‬
‫ﺘﺎ ب ‪،‬ﻳﺠ ﺐ أنﺗﺤﻘﻖ اﻟ‬
‫ﺜﻠ ﺔ اﻟﻮاردة ﻓ ﻲ ﻫﺬا اﻟﻜ‬
‫ﺒﺎع اﻷﻣ‬
‫ﺗ‬‫ﺑﺎ‬‫ﺑﺸﻜﻞ ﻣﻔﺮط‪.‬‬‫ﺗﻔﻌﻞ ذﻟﻚ‬
‫ﺑﻬﺬه اﻟﻘﺎﺋﻤ ﺔ ‪،‬‬‫ﺑﺸ ﻲء ﻣﺎ‬‫ﺛ ﺔﺳﻄﻮر أﺧﺮىﺗﻘﻮم‬
‫ﺛﻼ‬‫ﺛﻢ‬‫ﺘ ﻲﺗﻨﺸ ﺊ ﻗﺎﺋﻤ ﺔ ‪،‬‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻛﺎن ﻟﺪﻳﻚ ﺧﻤ ﺴ ﺔ أﺳﻄﺮ ﻣﻦ اﻟ‬
‫ﺑﻴﻦ اﻟﻘ ﺴﻤﻴﻦ‪.‬‬‫ﺑﻌ ﺔ أﺳﻄﺮ ﻓﺎرﻏ ﺔ‬
‫ﺛ ﺔ أو أر‬
‫ﺛﻼ‬‫ﺑﻴﻦ اﻟﻘ ﺴﻤﻴﻦ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻻﻳﺠ ﺐ وﺿﻊ‬‫ﻓﻤﻦ اﻟﻤﻨﺎﺳ ﺐ وﺿﻊﺳﻄﺮ ﻓﺎرغ‬

‫ﺛﺮ ﻋﲆﺳﻬﻮﻟ ﺔ ﻗﺮاءة‬


‫ﺘﺆ‬‫ﺑﻚ ‪ ،‬وﻟﻜﻨﻬﺎﺳ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺛﺮ اﻷﺳﻄﺮ اﻟﻔﺎرﻏ ﺔ ﻋﲆ ﻛﻴﻔﻴ ﺔﺗﺸﻐﻴﻞ اﻟ‬
‫ﻟﻦﺗﺆ‬
‫ﺑﻚ ‪ ،‬ﻟﻜﻨﻪ‬‫ﺘﻔ ﺴﻴﺮ ﻣﻌﻨﻰ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺘﺮﺟﻢ ‪Python‬اﻟﻤ ﺴﺎﻓ ﺔ اﻷﻓﻘﻴ ﺔ ﻟ‬
‫ﺘﺨﺪم ﻣ‬
‫ﺑﻚ‪.‬ﻳ ﺴ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟ‬
‫ﺒﺎﻋﺪ اﻟﺮأﺳ ﻲ‪.‬‬
‫ﺘ‬‫ﺘﺠﺎ ﻫﻞ اﻟ‬
‫ﻳ‬

‫إرﺷﺎدا ت ﻧﻤﻂ أﺧﺮى‬


‫ﺜﺮﺗﻌﻘﻴﺪًا ﻣﻤﺎ‬
‫ﺑﺮاﻣﺞ أﻛ‬‫ﺘﺼﻤﻴﻢ اﻹﺿﺎﻓﻴ ﺔ ‪ ،‬ﻟﻜﻦ ﻣﻌﻈﻢ ﺧﻄﻮط اﻟﺪﻟﻴﻞﺗﺸﻴﺮ إﱃ‬
‫ﺘﻮي ‪PEP 8‬ﻋﲆ اﻟﻌﺪﻳﺪ ﻣﻦﺗﻮﺻﻴﺎ ت اﻟ‬
‫ﻳﺤ‬
‫ﺒﻪ ﻓ ﻲ ﻫﺬه اﻟﻤﺮﺣﻠ ﺔ‪.‬‬
‫ﺘ‬‫ﺗﻜ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا ‪،‬ﺳﺄﺷﺎرك اﻷﺟﺰاء ذا ت اﻟﺼﻠ ﺔ ﻣﻦ إرﺷﺎدا ت ‪PEP 8.‬‬
‫ﺘﻌﻠﻢ ﻫﻴﺎﻛﻞ ‪Python‬أﻛ‬
‫ﻋﻨﺪﻣﺎﺗ‬

‫‪73‬اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫‪4-14. PEP 8:‬اﻧﻈﺮ إﱃ دﻟﻴﻞ أﺳﻠﻮ ب ‪PEP 8‬اﻷﺻﻠ ﻲ ﻋﲆ ‪https://python.org/‬‬


‫ﺘﺼﻔﺤﻬﺎ‪.‬‬
‫ﺘﻤﺎم أنﺗ‬
‫ﺜﻴﺮ ﻟﻼ ﻫ‬
‫ﺜﻴﺮ ﻣﻨﻬﺎ اﻵن ‪ ،‬وﻟﻜﻦ ﻗﺪﻳﻜﻮن ﻣﻦ اﻟﻤ‬
‫ﺘﺨﺪم اﻟﻜ‬
‫ﺑﻴ ﺐ‪ ./ 8000-‬ﻟﻦﺗ ﺴ‬‫ﺒ ﺲ‪/‬‬
‫ﺑﻴ‬‫دﻳﻒ ‪/‬‬

‫ﺘﻮاﻓﻖ ﻣﻊ ‪PEP 8:‬‬


‫ﺘ‬‫ﺘﻌﺪﻳﻞ ﻛﻞ ﻣﻨﻬﺎ ﻟ‬
‫ﺑ‬‫ﺘﻬﺎ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ وﻗﻢ‬
‫ﺒ‬‫ﺘ‬‫ﺘ ﻲﻛ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺛ ﺔ ﻣﻦ اﻟ‬
‫ﺛﻼ‬‫ﺘﺮ‬
‫‪4-15.‬ﻣﺮاﺟﻌ ﺔ اﻟﻜﻮد‪ :‬اﺧ‬

‫ﺑﻊ ﻣ ﺴﺎﻓﺎ ت ﻓ ﻲ ﻛﻞ ﻣﺮة‬


‫ﺒﻂ ﻣﺤﺮر اﻟﻨﺼﻮص ﻹدراج أر‬
‫ﺑﺎدﺋ ﺔ‪ .‬اﺿ‬‫ﺘﻮى ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﻊ ﻣ ﺴﺎﻓﺎ ت ﻟﻜﻞ ﻣ ﺴ‬
‫ﺘﺨﺪم أر‬
‫•اﺳ‬
‫ﺑﺎﻟﻔﻌﻞ )اﻧﻈﺮ اﻟﻤﻠﺤﻖ ب ﻟﻠﺤﺼﻮل ﻋﲆ إرﺷﺎدا ت‬‫ﺒﻮﻳ ﺐ ‪ ،‬إذا ﻟﻢﺗﻜﻦ ﻗﺪ ﻓﻌﻠ ﺖ ذﻟﻚ‬
‫ﺘ‬‫ﺗﻀﻐﻂ ﻓﻴﻬﺎ ﻋﲆ ﻋﻼﻣ ﺔ اﻟ‬
‫ﺑﺬﻟﻚ(‪.‬‬‫ﺣﻮل ﻛﻴﻔﻴ ﺔ اﻟﻘﻴﺎم‬

‫ﺒﻂ اﻟﻤﺤﺮر ﻋﲆ ﻋﺮض ﻣﻠﻒ‬ ‫ﺘﺨﺪم أﻗﻞ ﻣﻦ ‪ً 80‬‬


‫ﺣﺮﻓﺎ ﻓ ﻲ ﻛﻞﺳﻄﺮ ‪ ،‬واﺿ‬ ‫•اﺳ‬
‫ﺘﻮﺟﻴﻪ اﻟﺮأﺳ ﻲ ﻓ ﻲ ﻣﻮﺿﻊ اﻟﺤﺮف ‪80.‬‬
‫اﻟ‬

‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺑﺸﻜﻞ ﻣﻔﺮط ﻓ ﻲ ﻣﻠﻔﺎ ت اﻟ‬‫ﺘﺨﺪم اﻷﺳﻄﺮ اﻟﻔﺎرﻏ ﺔ‬
‫•ﻻﺗ ﺴ‬

‫ﻣﻠﺨﺺ‬
‫ﺑﻜﻔﺎءة ﻣﻊ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔ اﻟﻌﻤﻞ ﻣﻦ ﺧﻼل ﻗﺎﺋﻤ ﺔ‬‫ﺗﻌﻠﻤ ﺖ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛﻴﻔﻴ ﺔ اﻟﻌﻤﻞ‬
‫ﺒﺎدﺋ ﺔ‬
‫ﺑﻌﺾ أﺧﻄﺎء اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬‫ﺑﺮﻧﺎﻣﺞ ‪ ،‬وﻛﻴﻔﻴ ﺔﺗﺠﻨ ﺐ‬‫ﺒﻨﺎء‬
‫ﺒﺎدﺋ ﺔ ﻟ‬
‫ﺘﺨﺪم ‪Python‬اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪for ،‬وﻛﻴﻒﺗ ﺴ‬
‫ﺑﺎﺳ‬
‫ﺘ ﻲﻳﻤﻜﻨﻚ إﺟﺮاؤ ﻫﺎ ﻋﲆ اﻟﻘﻮاﺋﻢ اﻟﺮﻗﻤﻴ ﺔ‪.‬‬
‫ﺑﻌﺾ اﻟﻌﻤﻠﻴﺎ ت اﻟ‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ‬‫ﺑ ﺴﻴﻄ ﺔ ‪،‬‬‫اﻟﺸﺎﺋﻌ ﺔ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ إﻧﺸﺎء ﻗﻮاﺋﻢ ﻋﺪدﻳ ﺔ‬
‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‬‫ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔﺗﻘ ﺴﻴﻢ ﻗﺎﺋﻤ ﺔ ﻟﻠﻌﻤﻞ ﻣﻊ ﻣﺠﻤﻮﻋ ﺔ ﻓﺮﻋﻴ ﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ وﻛﻴﻔﻴ ﺔ ﻧ ﺴﺦ اﻟﻘﻮاﺋﻢ‬
‫ﺒﻐ ﻲﺗﻐﻴﻴﺮ ﻫﺎ ‪ ،‬وﻛﻴﻔﻴ ﺔ‬
‫ﺘ ﻲ ﻻﻳﻨ‬
‫ﺘ ﻲﺗﻮﻓﺮ درﺟ ﺔ ﻣﻦ اﻟﺤﻤﺎﻳ ﺔ ﻟﻤﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻘﻴﻢ اﻟ‬ ‫ﺷﺮﻳﺤ ﺔ‪ .‬ﻟﻘﺪﺗﻌﺮﻓ ﺖ أ ً‬
‫ﻳﻀﺎ ﻋﲆ ‪tuples ،‬واﻟ‬
‫ﺗﻪ‪.‬‬
‫ﺘ ﺴﻬﻴﻞ ﻗﺮاء‬
‫ﺘﺰاﻳﺪ ﻟ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺗﺼﻤﻴﻢ ﻛﻮدك اﻟﻤﻌﻘﺪ‬

‫ﺘﻌﻠﻢﺗﺠﻤﻴﻊ‬
‫ﺘ‬‫ﺒﺎرا ت ‪if .‬ﺳ‬
‫ﺘﺨﺪام ﻋ‬
‫ﺑﺎﺳ‬‫ﺘﻠﻔ ﺔ‬
‫ﺑﺸﻜﻞ ﻣﻨﺎﺳ ﺐ ﻋﲆ اﻟﺸﺮوط اﻟﻤﺨ‬‫ﺘﻌﻠﻢ اﻟﺮد‬
‫ﺘ‬‫ﻓ ﻲ اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ ‪،‬ﺳ‬
‫ﺒﺤ ﺚ ﻋﻨﻬﺎ‬
‫ﺘ ﻲﺗ‬
‫ﺑﺸﻜﻞ ﻣﻨﺎﺳ ﺐ ﻟﻨﻮع اﻟﻤﻮﻗﻒ أو اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬‫ﺑﺔ‬
‫ﺘﺠﺎ‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ ﻟﻼﺳ‬
‫ﺘ‬‫ﺒ ًﻴﺎ ﻣﻦ اﻻﺧ‬
‫ﻣﺠﻤﻮﻋﺎ ت ﻣﻌﻘﺪة ﻧ ﺴ‬
‫ﺘﺨﺪام إذا‬ ‫ﺘﻌﻠﻢ أ ً‬
‫ﻳﻀﺎ اﺳ‬ ‫ﺘ‬‫ﺒﻂ‪.‬ﺳ‬
‫ﺑﺎﻟﻀ‬

‫ﺗﺨﺎذ إﺟﺮاءا ت ﻣﺤﺪدة ﻣﻊ ﻋﻨﺎﺻﺮ ﻣﺤﺪدة ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬


‫ﺒﺮ ﻗﺎﺋﻤ ﺔ ﻻ‬
‫ﺘﻨﻘﻞ ﻋ‬
‫ﺛﻨﺎء اﻟ‬
‫ﺒﺎرا ت أ‬
‫ﻋ‬

‫ﺑﻊ‬
‫‪74‬اﻟﻔﺼﻞ اﻟﺮا‬
‫‪Machine Translated by Google‬‬

‫‪5‬‬
‫ﺘﻌﻠﻴﻘﺎ ت‬
‫إذا ﻛﺎﻧ ﺖ اﻟ‬

‫ﺒﺮﻣﺠ ﺔ ﻓﺤﺺ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﺸﺮوط‬


‫ﺘﻀﻤﻦ اﻟ‬
‫ﺒﺎ ﻣﺎﺗ‬
‫ﻏﺎﻟ ً‬
‫ﺑﻨﺎ ًء ﻋﲆﺗﻠﻚ اﻟﺸﺮوط‪.‬‬‫ﺗﺨﺎذه‬
‫ﺗﺤﺪﻳﺪ اﻹﺟﺮاء اﻟﺬيﻳﺠ ﺐ ا‬
‫و‬

‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺑﻔﺤﺺ اﻟﺤﺎﻟ ﺔ اﻟﺤﺎﻟﻴ ﺔ ﻟﻠ‬
‫ﺒﺎرة ‪if‬ﻓ ﻲ ‪Python‬‬
‫ﺗ ﺴﻤﺢ ﻟﻚ ﻋ‬
‫ﺘﻠﻚ اﻟﺤﺎﻟ ﺔ‪.‬‬
‫ﺑﺸﻜﻞ ﻣﻨﺎﺳ ﺐ ﻟ‬‫ﺑﺔ‬
‫ﺘﺠﺎ‬
‫واﻻﺳ‬

‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺘﻌﻠﻢ ﻛ‬
‫ﺘ‬‫ﺘﺤﻘﻖ ﻣﻦ أي ﺣﺎﻟ ﺔﺗﻬﻤﻚ‪.‬ﺳ‬
‫ﺘﻴﺢ ﻟﻚ اﻟ‬
‫ﺘ ﻲﺗ‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ ‪ ،‬واﻟ‬
‫ﺘ‬‫ﺑ ﺔ اﻻﺧ‬
‫ﺘﺎ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛ‬
‫ﺘ‬‫ﺳ‬
‫ﺘﻲ‬
‫ﺘﻰﺗﻮﺟﺪ اﻟﺸﺮوط اﻟﺪﻗﻴﻘ ﺔ اﻟ‬
‫ﺘﺤﺪﻳﺪ ﻣ‬
‫ﺒﺎرا ت ‪if‬ﻟ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا ﻣﻦ ﻋ‬
‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ إﻧﺸﺎءﺳﻠ ﺴﻠ ﺔ أﻛ‬
‫ﺘ‬‫ﺑ ﺴﻴﻄ ﺔ ‪ ،‬وﺳ‬
‫ﺒﺎرا ت ‪if‬‬
‫ﻋ‬
‫ﺗﻌﺎﻟﺞ ﻣﻌﻈﻢ اﻟﻌﻨﺎﺻﺮ ﻓ ﻲ‬
‫ﺑ ﺔ ﺣﻠﻘ ﺔ ‪for‬‬
‫ﺘﺎ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﻛ‬
‫ﺘﻰﺗ‬
‫ﺒﻴﻖ ﻫﺬا اﻟﻤﻔﻬﻮم ﻋﲆ اﻟﻘﻮاﺋﻢ ‪ ،‬ﺣ‬
‫ﺘﻄ‬‫ﺑ‬‫ﺑﻌﺪ ذﻟﻚ‬‫ﺘﻘﻮم‬
‫ﺗﺮﻳﺪ ﻫﺎ‪.‬ﺳ‬
‫ﺘﻠﻔ ﺔ‪.‬‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﺨ‬‫ﺑﻘﻴﻢ ﻣﺤﺪدة‬‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻋﻨﺎﺻﺮ ﻣﻌﻴﻨ ﺔ‬
‫ﺑﻄﺮﻳﻘ ﺔ واﺣﺪة وﻟﻜﻨﻬﺎﺗ‬‫ﻗﺎﺋﻤ ﺔ‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺴﻴﻂ‬‫ﺜﺎل‬
‫ﻣ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬ﺗﺨﻴﻞ أن ﻟﺪﻳﻚ‬‫ﺑ ﺔ ﻟﻠﻤﻮاﻗﻒ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﺠﺎ‬
‫ﺑﺎﻻﺳ‬‫ﺒﺎرا ت‬
‫ﺘ‬‫ﺘﺎﻟ ﻲ ﻛﻴﻒ إذاﺳﻤﺤ ﺖ ﻟﻚ اﻻﺧ‬
‫ﺜﺎل اﻟﻘﺼﻴﺮ اﻟ‬
‫ﻳﻮﺿﺢ اﻟﻤ‬
‫ﺒﺎﻋ ﺔ أﺳﻤﺎء ﻣﻌﻈﻢ اﻟ ﺴﻴﺎرا ت‬
‫ﺒﺎﻋ ﺔ اﺳﻢ ﻛﻞﺳﻴﺎرة‪ .‬أﺳﻤﺎء اﻟ ﺴﻴﺎرا ت ﻫ ﻲ أﺳﻤﺎء ﻋﻠﻢ ‪ ،‬ﻟﺬﻟﻚﻳﺠ ﺐ ﻃ‬
‫ﺗﺮﻳﺪ ﻃ‬
‫ﺑﺎﻟ ﺴﻴﺎرا ت و‬‫ﻗﺎﺋﻤ ﺔ‬
‫ﺑﺄﺳﻤﺎء‬‫ﺒﺮ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﺎﻟ ﻲﻳﻤﺮ ﻋ‬
‫ﺒﻴﺮة‪ .‬اﻟﻜﻮد اﻟ‬
‫ﺑﺄﺣﺮف ﻛ‬‫ﺒﺎﻋ ﺔ اﻟﻘﻴﻤ ﺔ "‪"bmw‬ﻛﻠﻬﺎ‬
‫ﻓ ﻲ ﺣﺎﻟ ﺔ أﺣﺮف اﻟﻌﻨﻮان‪ .‬وﻣﻊ ذﻟﻚ ‪،‬ﻳﺠ ﺐ ﻃ‬
‫ﺑﺪﻻ ً ﻣﻦ ﺣﺎﻟ ﺔ اﻟﻌﻨﻮان‪:‬‬‫ﺒﻴﺮة‬
‫ﺑﺄﺣﺮف ﻛ‬‫ﺘﻬﺎ‬
‫ﺒﺎﻋ‬
‫ﺘﻢ ﻃ‬
‫ﺒﺤ ﺚ ﻋﻦ اﻟﻘﻴﻤ ﺔ ‪'bmw'.‬ﻋﻨﺪﻣﺎﺗﻜﻮن اﻟﻘﻴﻤ ﺔ ‪"bmw" ،‬ﻳ‬
‫اﻟ ﺴﻴﺎرا ت وﻳ‬

‫ﺳﻴﺎرا ت‬ ‫ﺳﻴﺎرا ت ]'‪= ['audi'، 'bmw'، 'subaru'، 'toyota‬‬

‫ﻟﻠ ﺴﻴﺎرة ﻓ ﻲ اﻟ ﺴﻴﺎرا ت‪:‬‬


‫‪u if car == 'bmw':‬‬

‫ﺒﺎﻋ ﺔ ))( ‪(car.upper‬‬


‫ﻃ‬
‫آﺧﺮ‪:‬‬

‫ﺒﺎﻋ ﺔ )ﻋﻨﻮان اﻟ ﺴﻴﺎرة ))(‬


‫ﻃ‬

‫ﺘﺤﻘﻖ أوﻻ ً ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻤ ﺔ اﻟﺤﺎﻟﻴ ﺔ ﻟﻠ ﺴﻴﺎرة ﻫ ﻲ ‪" bmw" u.‬‬
‫ﺜﺎلﺗ‬
‫اﻟﺤﻠﻘ ﺔ ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘﻬﺎ ﻓ ﻲ ﺣﺎﻟ ﺔ‬
‫ﺒﺎﻋ‬
‫ﺘﻢ ﻃ‬
‫ﺘ‬‫ﺒﻴﺮة‪ .‬إذا ﻛﺎﻧ ﺖ ﻗﻴﻤ ﺔ اﻟ ﺴﻴﺎرة ﻏﻴﺮ ‪bmw ،‬ﻓ ﺴ‬
‫ﺑﺄﺣﺮف ﻛ‬‫ﺒﺎﻋ ﺔ اﻟﻘﻴﻤ ﺔ‬
‫ﺘﻢ ﻃ‬
‫ﺘ‬‫إذا ﻛﺎن اﻷﻣﺮ ﻛﺬﻟﻚ ‪ ،‬ﻓ ﺴ‬
‫اﻟﻌﻨﻮان‪:‬‬

‫أودي‬

‫ﺑﻠﻴﻮ‬
‫ﺑ ﻲ ام د‬

‫ﺑﺎرو‬
‫ﺳﻮ‬

‫ﺗﺎ‬
‫ﺗﻮﻳﻮ‬

‫ﺘﻲ‬
‫ﺒﺎرا ت اﻟ‬
‫ﺘ‬‫ﺑﺎﻟﻨﻈﺮ ﻓ ﻲ أﻧﻮاع اﻻﺧ‬‫ﺒﺪأ‬
‫ﺘﻌﻠﻤﻬﺎ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ‪ .‬ﻟﻨ‬
‫ﺘ‬‫ﺘ ﻲﺳ‬
‫ﺑﻴﻦ ﻋﺪد ﻣﻦ اﻟﻤﻔﺎ ﻫﻴﻢ اﻟ‬‫ﺜﺎل‬
‫ﻳﺠﻤﻊ ﻫﺬا اﻟﻤ‬
‫ﺑﺮﻧﺎﻣﺠﻚ‪.‬‬‫ﺘﺨﺪاﻣﻬﺎ ﻟﻔﺤﺺ اﻟﺸﺮوط ﻓ ﻲ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬

‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ‬
‫ﺘ‬‫اﻻﺧ‬
‫ﺘﻴﻦ‬
‫ﺘﺨﺪم ‪Python‬اﻟﻘﻴﻤ‬
‫ﺒﺎ ًرا ﺷﺮﻃ ًﻴﺎ‪.‬ﺗ ﺴ‬
‫ﺘ‬‫ﺒﻴ ﺮًاﻳﻤﻜﻦﺗﻘﻴﻴﻤﻪ ﻋﲆ أﻧﻪ ﺻﺤﻴﺢ أو ﺧﻄﺄ وﻳ ﺴﻤﻰ اﺧ‬
‫ﺗﻌ‬‫ﺒﺎرة ‪if‬‬
‫ﻳﻮﺟﺪ ﻓ ﻲ ﻗﻠ ﺐ ﻛﻞ ﻋ‬
‫ﺒﺎر اﻟﺸﺮﻃ ﻲ إﱃ‬
‫ﺘ‬‫ﺒﺎرة ‪if .‬إذاﺗﻢﺗﻘﻴﻴﻢ اﻻﺧ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻋ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻘﺮﻳﺮ ﻣﺎ إذا ﻛﺎنﻳﺠ ﺐﺗﻨﻔﻴﺬ اﻟ‬
‫‪True‬و ‪False‬ﻟ‬
‫ﺗﻨﻔﺬ اﻟﻜﻮد اﻟﺬيﻳﻠ ﻲ ‪if‬‬
‫‪True ،‬ﻓﺈن ‪Python‬‬

‫ﺒﺎرة ‪if .‬‬


‫ﺘﺠﺎ ﻫﻞ اﻟﻜﻮد اﻟﺬيﻳﻠ ﻲ ﻋ‬
‫ﺗ‬‫ﺒﺎر إﱃ ‪False ،‬ﻓﺈن ‪Python‬‬
‫ﺘ‬‫إﻓﺎدة‪ .‬إذاﺗﻢﺗﻘﻴﻴﻢ اﻻﺧ‬

‫ﺘﺤﻘﻖ ﻣﻦ اﻟﻤ ﺴﺎواة‬


‫اﻟ‬
‫ﺒﺎر ﺷﺮﻃ ﻲ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ‬
‫ﺘ‬‫ﺑ ﺴﻂ اﺧ‬
‫ﺘﺤﻘﻖ أ‬
‫ﺑﻘﻴﻤ ﺔ ﻣﻌﻴﻨ ﺔ ﻣﻦ اﻟﻔﺎﺋﺪة‪.‬ﻳ‬‫ﺘﻐﻴﺮ‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ اﻟﻘﻴﻤ ﺔ اﻟﺤﺎﻟﻴ ﺔ ﻟﻤ‬
‫ﺘ‬‫ﺗﻘﺎرن ﻣﻌﻈﻢ اﻻﺧ‬
‫ﺘﻐﻴﺮﺗ ﺴﺎوي ﻗﻴﻤ ﺔ اﻟﻔﺎﺋﺪة‪:‬‬
‫ﻗﻴﻤ ﺔ اﻟﻤ‬

‫ﺑﻠﻴﻮ"‬
‫ﺑ ﻲ ام د‬
‫ش >>>ﺳﻴﺎرة ="‬
‫>>> ‪v‬ﺳﻴﺎرة '‪== 'bmw‬‬
‫ﺣﻘﻴﻘ ﻲ‬

‫‪76‬اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺑﺎﻟﻔﻌﻞ‪.‬‬‫ﺘﺨﺪام ﻋﻼﻣ ﺔﺗ ﺴﺎوي واﺣﺪة ‪ ،‬ﻛﻤﺎ رأﻳ ﺖ ﻋﺪة ﻣﺮا ت‬


‫ﺑﺎﺳ‬
‫ﺒﻂ اﻟ ﺴﻄﺮ ﻋﻨﺪ ‪u‬ﻗﻴﻤ ﺔ اﻟ ﺴﻴﺎرة ﻋﲆ "‪"bmw‬‬
‫ﻳﻀ‬
‫ُﺮﺟﻊ ﻋﺎﻣﻞ‬
‫ﺘﺨﺪام ﻋﻼﻣ ﺔ اﻟﻤ ﺴﺎواة اﻟﻤﺰدوﺟ ﺔ ‪(==).‬ﻳ‬
‫ﺑﺎﺳ‬
‫ﺘﺤﻘﻖ اﻟ ﺴﻄﺮ ﻓ ﻲ ‪v‬ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ ﻗﻴﻤ ﺔ اﻟ ﺴﻴﺎرة ﻫ ﻲ "‪"bmw‬‬
‫ﻳ‬
‫ﺑﻘ ﺔ ‪ ،‬و ‪False‬إذا ﻟﻢ‬
‫ﺘﻄﺎ‬
‫ﺘﺸﻐﻴﻞ ﻣ‬
‫اﻟﻤ ﺴﺎواة ﻫﺬا ‪True‬إذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻢ اﻟﻤﻮﺟﻮدة ﻋﲆ اﻟﺠﺎﻧ ﺐ اﻷﻳ ﺴﺮ واﻷﻳﻤﻦ ﻣﻦ ﻋﺎﻣﻞ اﻟ‬
‫ُﺮﺟﻊ ‪Python‬اﻟﻘﻴﻤ ﺔ ‪True.‬‬
‫ﺜﺎل ‪ ،‬ﻟﺬاﺗ‬
‫ﺑﻖ اﻟﻘﻴﻢ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘﻄﺎ‬
‫ﺑﻖ‪.‬ﺗ‬
‫ﺘﻄﺎ‬
‫ﺗ‬

‫ﺒﺎر‬
‫ﺘ‬‫ﻋﻨﺪﻣﺎﺗﻜﻮن ﻗﻴﻤ ﺔ اﻟ ﺴﻴﺎرة ﻏﻴﺮ ‪"bmw" ،‬ﻳﻌﻮد ﻫﺬا اﻻﺧ‬
‫ﺧﻄﺄ ﺷﻨﻴﻊ‪:‬‬

‫ش >>>ﺳﻴﺎرة ='أودي'‬

‫>>> ‪v‬ﺳﻴﺎرة '‪== 'bmw‬‬

‫ﺧﻄﺄ ﺷﻨﻴﻊ‬

‫ﺑﻴﺎن ؛ ﻗﺪﺗﻘﺮأ اﻟﻜﻮد ﻓ ﻲ ‪u‬‬‫ﻋﻼﻣ ﺔ اﻟﻤ ﺴﺎواة اﻟﻮﺣﻴﺪة ﻫ ﻲ ﻓ ﻲ اﻟﺤﻘﻴﻘ ﺔ‬


‫ﺜﻞﺗﻠﻚ اﻟﻤﻮﺟﻮدة ﻓ ﻲ‬
‫ﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ اﻟ ﺴﻴﺎرة ﻣ ﺴﺎوﻳ ﺔ ﻟـ "أودي ‪".‬ﻣﻦ ﻧﺎﺣﻴ ﺔ أﺧﺮى ‪،‬ﺗ ﺴﺄل ﻋﻼﻣ ﺔ اﻟﻤ ﺴﺎواة اﻟﻤﺰدوﺟ ﺔ ‪ ،‬ﻣ‬
‫ﺜﻞ "‬
‫ﻣ‬
‫‪v ،‬ﺳﺆاﻻً‪ " :‬ﻫﻞ ﻗﻴﻤ ﺔ اﻟ ﺴﻴﺎرةﺗ ﺴﺎوي "؟" ‪" bmw‬‬
‫ﺑﻬﺬه اﻟﻄﺮﻳﻘ ﺔ‪.‬‬‫ﺘ ﺴﺎوﻳ ﺔ‬
‫ﺒﺮﻣﺠ ﺔ ﻋﻼﻣﺎ ت ﻣ‬
‫ﺘﺨﺪم ﻣﻌﻈﻢ ﻟﻐﺎ ت اﻟ‬
‫ﺗﺴ‬

‫ﺘﺤﻘﻖ ﻣﻦ اﻟﻤ ﺴﺎواة‬


‫ﺗﺠﺎ ﻫﻞ اﻟﺤﺎﻟ ﺔ ﻋﻨﺪ اﻟ‬
‫ﺘ ﺴﺎوﻳ ﺔ‪:‬‬
‫ﺒﺮ ﻣ‬
‫ﺘ‬‫ﺘﻠﻔ ﺔ ﻻﺗﻌ‬
‫ﺒﻴﺮة ﻣﺨ‬
‫ﺑﺄﺣﺮف ﻛ‬‫ﺘﺎن‬
‫ﺜﺎل ‪ ،‬ﻗﻴﻤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺜﻮن‪ .‬ﻋﲆﺳ‬
‫ﺑﺎﻳ‬‫ﺒﺎر اﻟﻤ ﺴﺎواة ﺣ ﺴﺎس ﻟﺤﺎﻟ ﺔ اﻷﺣﺮف ﻓ ﻲ‬
‫ﺘ‬‫اﺧ‬

‫>>>ﺳﻴﺎرة ="أودي"‬

‫>>>ﺳﻴﺎرة =='أودي'‬

‫ﺧﻄﺄ ﺷﻨﻴﻊ‬

‫ﺒﺎر‬
‫ﺘ‬‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚﺗﺮﻳﺪ ﻓﻘﻂ اﺧ‬
‫إذا ﻛﺎﻧ ﺖ اﻟﻘﻀﻴ ﺔ ﻣﻬﻤ ﺔ ‪ ،‬ﻓﺈن ﻫﺬا اﻟ ﺴﻠﻮك ﻣﻔﻴﺪ‪ .‬وﻟﻜﻦ إذا ﻟﻢﺗﻜﻦ اﻟﺤﺎﻟ ﺔ ﻣﻬﻤ ﺔ ‪ ،‬و‬
‫ﺒﻞ إﺟﺮاء اﻟﻤﻘﺎرﻧ ﺔ‪:‬‬
‫ﺘﻐﻴﺮ إﱃ أﺣﺮف ﺻﻐﻴﺮة ﻗ‬
‫ﺘﻐﻴﺮ ‪،‬ﻳﻤﻜﻨﻚﺗﺤﻮﻳﻞ ﻗﻴﻤ ﺔ اﻟﻤ‬
‫ﻗﻴﻤ ﺔ اﻟﻤ‬

‫>>>ﺳﻴﺎرة ="أودي"‬

‫== )( ‪'>>> car.lower‬أودي'‬


‫ﺣﻘﻴﻘ ﻲ‬

‫ﺒﺎر اﻵن ﻏﻴﺮ ﺣ ﺴﺎس ﻟﺤﺎﻟ ﺔ‬


‫ﺘ‬‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻛﻴﻔﻴ ﺔﺗﻨ ﺴﻴﻖ ﻗﻴﻤ ﺔ "‪"Audi‬ﻷن اﻻﺧ‬
‫ﺒﺎر إﱃ ‪True‬‬
‫ﺘ‬‫ﺳﻴﻌﻮد ﻫﺬا اﻻﺧ‬

‫ﺑﻬﺬا اﻟﻨﻮع ﻣﻦ ‪parison‬‬‫ﺘ ﻲﺗﻢﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ اﻷﺻﻞ ﻓ ﻲ اﻟ ﺴﻴﺎرة ‪ ،‬ﻟﺬاﻳﻤﻜﻨﻚ اﻟﻘﻴﺎم‬


‫اﻷﺣﺮف‪ .‬ﻻﺗﻐﻴﺮ اﻟﺪاﻟ ﺔ )( ‪Lower‬اﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﺘﻐﻴﺮ اﻷﺻﻠ ﻲ‪:‬‬
‫ﺛﻴﺮ ﻋﲆ اﻟﻤ‬
‫ﺘﺄ‬
‫‪com‬دون اﻟ‬

‫ش >>>ﺳﻴﺎرة ='أودي'‬

‫== )( ‪'v >>> car.lower‬أودي'‬


‫ﺣﻘﻴﻘ ﻲ‬

‫>>> ‪w‬اﻟ ﺴﻴﺎرة‬

‫أودي‬

‫ﺘﻐﻴﺮة‪ .‬ﻓ ﻲ ‪v‬‬


‫ﺒﻴﺮة "‪"Audi‬ﻓ ﻲ اﻟ ﺴﻴﺎرة اﻟﻤ‬
‫ﺘﺨﺰﻳﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻜ‬
‫ﺑ‬‫ﻓ ﻲ ‪u‬ﻧﻘﻮم‬
‫ﺘﺤﻮﻳﻞ ﻗﻴﻤ ﺔ اﻟ ﺴﻴﺎرة إﱃ أﺣﺮف ﺻﻐﻴﺮة وﻣﻘﺎرﻧ ﺔ اﻟﻘﻴﻤ ﺔ اﻟﺼﻐﻴﺮة‬
‫ﺑ‬‫ﻧﻘﻮم‬

‫ﺒﻴﺎﻧﺎ ت ‪77‬‬
‫إذا ﻛﺎﻧ ﺖ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻠﻴﻮ‬
‫ﺜﻮن ‪True.‬ﻓ ﻲ د‬
‫ﺑﺎﻳ‬‫ﺘﺎن ‪ ،‬ﻟﺬاﺗﺮﺟﻊ‬
‫ﺑﻖ اﻟ ﺴﻠ ﺴﻠ‬
‫ﺘﻄﺎ‬
‫إﱃ اﻟ ﺴﻠ ﺴﻠ ﺔ "أودي"‪.‬ﺗ‬
‫ﺒﺎر اﻟﺸﺮط‪.‬‬
‫ﺘ‬‫ﺑﺎﺧ‬‫ﺛﺮ‬
‫ﺘﺄ‬
‫ﻳﻤﻜﻨﻨﺎ أن ﻧﺮى أن اﻟﻘﻴﻤ ﺔ اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ اﻟ ﺴﻴﺎرة ﻟﻢﺗ‬

‫ﺜﺎل ‪ ،‬ﻗﺪ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻬ ﺔ ﻟﻬﺬه‪ .‬ﻋﲆﺳ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﺸﺎ‬‫ﺘﺨﺪﻣﻮن‬
‫ﺘ ﻲﻳﺪﺧﻠﻬﺎ اﻟﻤ ﺴ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺗﻔﺮض ﻣﻮاﻗﻊ اﻟﻮﻳ ﺐ ﻗﻮاﻋﺪ ﻣﻌﻴﻨ ﺔ ﻟﻠ‬

‫ﺘﺨﺪم ﻓﺮﻳﺪ ﺣ ًﻘﺎ ‪ ،‬وﻟﻴ ﺲ ﻣﺠﺮد اﺧ‬


‫ﺘﻼف‬ ‫ﺘﺨﺪم ﻟﺪﻳﻪ اﺳﻢ ﻣ ﺴ‬
‫ﺘﺄﻛﺪ ﻣﻦ أن ﻛﻞ ﻣ ﺴ‬
‫ﺜﻞ ﻫﺬا ﻟﻠ‬
‫ﺒﺎ ًرا ﺷﺮﻃ ًﻴﺎ ﻣ‬
‫ﺘ‬‫ﺘﺨﺪم ﻣﻮﻗﻊ ﻣﺎ اﺧ‬
‫ﻳﺴ‬
‫ﺘﻢﺗﺤﻮﻳﻞ اﺳﻢ‬
‫ﺘﺨﺪم ﺟﺪﻳﺪًا ‪،‬ﻳ‬
‫ﺘﺨﺪم ﺷﺨﺺ آﺧﺮ‪ .‬ﻋﻨﺪﻣﺎﻳﺮﺳﻞ ﺷﺨﺺ ﻣﺎ اﺳﻢ ﻣ ﺴ‬
‫ﺒﻴﺮة ﻻﺳﻢ ﻣ ﺴ‬
‫ﺑﺎﻷﺣﺮف اﻟﻜ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﻓ ﻲ اﻟﻜ‬
‫ﺛﻨﺎء ﻫﺬا‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﺤﺎﻟﻴ ﺔ‪ .‬أ‬
‫ﺑﺎﻹﺻﺪارا ت اﻟﺼﻐﻴﺮة ﻟﺠﻤﻴﻊ أﺳﻤﺎء اﻟﻤ ﺴ‬‫ﺘﻪ‬
‫ﺘﺨﺪم اﻟﺠﺪﻳﺪ ﻫﺬا إﱃ أﺣﺮف ﺻﻐﻴﺮة وﻣﻘﺎرﻧ‬
‫اﻟﻤ ﺴ‬
‫ﺘﻼف ﻓ ﻲ "‪"john‬‬
‫ﺜﻞ "‪"John‬إذا ﻛﺎن ﻫﻨﺎك أي اﺧ‬
‫ﺘﺨﺪم ﻣ‬
‫ﺘﻢ رﻓﺾ اﺳﻢ ﻣ ﺴ‬
‫ﺘﺤﻘﻖ ‪،‬ﺳﻴ‬
‫اﻟ‬

‫ﺑﺎﻟﻔﻌﻞ‪.‬‬‫ﺘﺨﺪام‬
‫ﻗﻴﺪ اﻻﺳ‬

‫ﺘﺤﻘﻖ ﻣﻦ ﻋﺪم اﻟﻤ ﺴﺎواة‬


‫اﻟ‬
‫ﺑﻴﻦ ﻋﻼﻣ ﺔﺗﻌﺠ ﺐ وﻋﻼﻣ ﺔﻳ ﺴﺎوي ‪(! =).‬ﻻ‬‫ﺘﻴﻦ ‪،‬ﻳﻤﻜﻨﻚ اﻟﺠﻤﻊ‬
‫ﺘ ﺴﺎوﻳ‬
‫ﺘﺎن ﻏﻴﺮ ﻣ‬
‫ﻋﻨﺪﻣﺎﺗﺮﻳﺪﺗﺤﺪﻳﺪ ﻣﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻤ‬
‫ﺒﺮﻣﺠ ﺔ‪.‬‬
‫ﺘﻌﺠ ﺐ ‪ ،‬ﻛﻤﺎ ﻫﻮ اﻟﺤﺎل ﻓ ﻲ اﻟﻌﺪﻳﺪ ﻣﻦ ﻟﻐﺎ ت اﻟ‬
‫ﺜﻞ ﻋﻼﻣ ﺔ اﻟ‬
‫ﺗﻤ‬

‫ﺒ ﺔ اﻷوﱃ‬
‫ﺗ‬‫ﺘﻞ اﻟﻤﺮ‬
‫ﺑ ﺔﺗﺤ‬
‫ﺘﺰا ﻣﻄﻠﻮ‬
‫ﺑﻴ‬‫ﺘﺨﺪام ﻋﺎﻣﻞ ﻋﺪم اﻟﻤ ﺴﺎواة‪.‬ﺳﻨﺨﺰن‬
‫ﺒﺎرة ‪if‬أﺧﺮى ﻟﻔﺤﺺ ﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺘﺨﺪم ﻋ‬
‫دﻋﻨﺎ ﻧ ﺴ‬
‫ﺒﻊ رﺳﺎﻟ ﺔ إذا ﻟﻢﻳﻄﻠ ﺐ اﻟﺸﺨﺺ اﻷﻧﺸﻮﺟ ﺔ‪:‬‬
‫ﺛﻢ ﻧﻄ‬‫ﺘﻐﻴﺮ‬
‫ﻓ ﻲﻣ‬

‫‪toppings.py‬‬ ‫= ‪"request_topping‬ﻓﻄﺮ"‬

‫ﺘ ﺴﻮق! ='اﻷﻧﺸﻮﺟ ﺔ'‪:‬‬‫ﺒ ﺖ_اﻟ‬


‫‪u‬إذا ﻃﻠ‬
‫ﺒﺎﻋ ﺔ )"اﻣ ﺴﻚ اﻷﻧﺸﻮﺟ ﺔ!"(‬
‫ﻃ‬

‫ﺘﺎن ‪ ،‬ﻓ ﺴﻴﻘﻮم‬


‫ﺗﺎن اﻟﻘﻴﻤ‬
‫ﺑﻖ ﻫﺎ‬
‫ﺘﻄﺎ‬
‫ﺑﻘﻴﻤ ﺔ ‪"anchovies".‬إذا ﻟﻢﺗ‬
‫ﻳﻘﺎرن اﻟ ﺴﻄﺮ ﻋﻨﺪ ‪u‬ﻗﻴﻤ ﺔ ‪request_topping‬‬
‫ﺑﺈرﺟﺎع ‪False‬‬
‫ﺘﺎن ‪ ،‬ﻓ ﺴﻴﻘﻮم ‪Python‬‬
‫ﺑﻘ ﺖ اﻟﻘﻴﻤ‬
‫ﺒﺎرة ‪if .‬إذاﺗﻄﺎ‬
‫ﺑﺈرﺟﺎع ‪True‬و ‪exe cutes‬ﻟﻠﻜﻮد اﻟﺬيﻳﻠ ﻲ ﻋ‬
‫‪Python‬‬
‫ﺒﺎرة ‪if .‬‬
‫ﺒﻊ ﻋ‬
‫ﺘ‬‫ﺘﺸﻐﻴﻞ اﻟﻜﻮد اﻟﺬيﻳ‬
‫ﺑ‬‫وﻻﻳﻘﻮم‬

‫ﺒﺎﻋ ﺔ ‪:‬‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﺣﺎﻟ ﺔ اﻟﻄ‬
‫ﻧﻈ ﺮًاﻷن ﻗﻴﻤ ﺔ ‪request_topping‬ﻟﻴ ﺴ ﺖ ‪"anchovies" ،‬ﻳ‬

‫اﻣ ﺴﻚ اﻷﻧﺸﻮﺟ ﺔ!‬

‫ﺒﻬﺎ ﻣﻦ أﺟﻞ اﻟﻤ ﺴﺎواة ‪ ،‬ﻟﻜﻦ‬


‫ﺘ‬‫ﺘ ﻲﺗﻜ‬
‫ﺒﻴﺮا ت اﻟﺸﺮﻃﻴ ﺔ اﻟ‬
‫ﺘﻌ‬‫ﺒﺮ ﻣﻌﻈﻢ اﻟ‬
‫ﺘ‬‫ﺘﺨ‬
‫ﺳ‬
‫ﺒﺎر ﻋﺪم اﻟﻤ ﺴﺎواة‪.‬‬
‫ﺘ‬‫ﺘﺠﺪ أﻧﻪ ﻣﻦ اﻷﻓﻀﻞ اﺧ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﺳ‬‫ﻓﻲ‬

‫ﻣﻘﺎرﻧﺎ ت ﻋﺪدﻳ ﺔ‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ‬
‫ﺘﺎﻟ ﻲ ﻣﻤﺎ إذا ﻛﺎن اﻟﺸﺨﺺﻳ‬
‫ﺘﺤﻘﻖ اﻟﻜﻮد اﻟ‬
‫ﺜﺎل ‪،‬ﻳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺴﻴﻄﺎ ﺟﺪًا‪ .‬ﻋﲆﺳ‬
‫ً‬ ‫ﺑ‬‫ﺒﺎر اﻟﻘﻴﻢ اﻟﻌﺪدﻳ ﺔ أﻣ ﺮًا‬
‫ﺘ‬‫ﻳﻌﺪ اﺧ‬
‫ﻋﺎﻣﺎ‪:‬‬
‫‪ً 18‬‬

‫>>>اﻟﻌﻤﺮ ‪= 18‬‬
‫>>>اﻟﻌﻤﺮ ‪== 18‬‬
‫ﺣﻘﻴﻘ ﻲ‬

‫‪78‬اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺜﺎل ‪ ،‬ﻣﻠﻒ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘ ﺴﺎوﻳﻴﻦ‪ .‬ﻋﲆﺳ‬
‫ﺒﺎر ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن رﻗﻤﺎن ﻏﻴﺮ ﻣ‬
‫ﺘ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﺧ‬
‫ﺑ ﺔ ﻏﻴﺮ ﺻﺤﻴﺤ ﺔ‪:‬‬
‫ﺒﻊ رﺳﺎﻟ ﺔ إذا ﻛﺎﻧ ﺖ اﻹﺟﺎ‬
‫ﺘﺎﻟ ﻲﻳﻄ‬
‫اﻟﻜﻮد اﻟ‬

‫اﻟﺮﻗﻢ‬ ‫اﻟﺠﻮا ب ‪= 17‬‬

‫اﻟ ﺴﺤﺮي‬
‫ش ﻟﻮ اﻟﺠﻮا ب! ‪= 42:‬‬

‫ﺑ ﺔ اﻟﺼﺤﻴﺤ ﺔ‪.‬ﻳﺮﺟﻰ اﻟﻤﺤﺎوﻟ ﺔ ﻣﺮة أﺧﺮى!"(‬


‫ﺒﺎﻋ ﺔ )" ﻫﺬه ﻟﻴ ﺴ ﺖ اﻹﺟﺎ‬
‫ﻃ‬

‫ﺑ ﺔ )‪(17‬ﻟﻴ ﺴ ﺖ ﻛﺬﻟﻚ‬
‫ﺒﺎر اﻟﺸﺮﻃ ﻲ ﻋﻨﺪ ‪u ،‬ﻷن ﻗﻴﻤ ﺔ اﻹﺟﺎ‬
‫ﺘ‬‫ﺘﺎز اﻻﺧ‬
‫اﺟ‬
‫ﺒﺎدﺋ ﺔ‪:‬‬
‫ﺘﻠ ﺔ اﻟﺸﻔﺮة ذا ت اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻛ‬
‫ﺒﺎر ‪،‬ﻳ‬
‫ﺘ‬‫ﺘﻴﺎز اﻻﺧ‬
‫ﻳ ﺴﺎوي ‪42.‬ﻧﻈ ﺮًا ﻻﺟ‬

‫ﺑ ﺔ اﻟﺼﺤﻴﺤ ﺔ‪ .‬ﺣﺎول ﻣﺮة اﺧﺮى!‬


‫ﻫﺬه ﻟﻴ ﺴ ﺖ اﻹﺟﺎ‬

‫ﺒﺮ‬
‫ﺜﻞ أﺻﻐﺮ ﻣﻦ أو أﻗﻞ ﻣﻦ أوﻳ ﺴﺎوي أو أﻛ‬ ‫ﺗﻚ اﻟﺸﺮﻃﻴ ﺔ أ ً‬
‫ﻳﻀﺎ ‪ ،‬ﻣ‬ ‫ﺒﺎرا‬
‫ﺘﻨﻮﻋ ﺔ ﻓ ﻲ ﻋ‬
‫ﻳﻤﻜﻨﻚﺗﻀﻤﻴﻦ ﻣﻘﺎرﻧﺎ ت رﻳﺎﺿﻴ ﺔ ﻣ‬
‫ﺒﺮ ﻣﻦ أوﻳ ﺴﺎوي‪:‬‬
‫ﻣﻦ أو أﻛ‬

‫>>>اﻟﻌﻤﺮ ‪= 19‬‬
‫ﻋﺎﻣﺎ‬
‫>>>اﻟﻌﻤﺮ أﻗﻞ ﻣﻦ ‪ً 21‬‬
‫ﺣﻘﻴﻘ ﻲ‬

‫>>>اﻟﻌﻤﺮ ‪<= 21‬‬


‫ﺣﻘﻴﻘ ﻲ‬

‫>>>اﻟﻌﻤﺮ< ‪21‬‬
‫ﺧﻄﺄ ﺷﻨﻴﻊ‬

‫>>>اﻟﻌﻤﺮ< ‪= 21‬‬
‫ﺧﻄﺄ ﺷﻨﻴﻊ‬

‫ﺘﺸﺎف اﻟﺸﺮوط اﻟﺪﻗﻴﻘ ﺔ‬


‫ﺘ ﻲﻳﻤﻜﻦ أنﺗ ﺴﺎﻋﺪك ﻓ ﻲ اﻛ‬
‫ﺘﺨﺪام ﻛﻞ ﻣﻘﺎرﻧ ﺔ رﻳﺎﺿﻴ ﺔ ﻛﺠﺰء ﻣﻦﺗﻌﻠﻴﻤ ﺔ ‪if ،‬واﻟ‬
‫ﻳﻤﻜﻦ اﺳ‬
‫ﺘ ﻲﺗﻬﻤﻚ‪.‬‬
‫اﻟ‬

‫ﺘﻌﺪدة‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟﺸﺮوط اﻟﻤ‬
‫اﻟ‬
‫ﺘﺎج أﺣﻴﺎﻧًﺎ إﱃ ﺷﺮﻃﻴﻦ ﻟﻜ ﻲﺗﻜﻮن‬
‫ﺜﺎل ‪ ،‬ﻗﺪﺗﺤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻌﺪدة ﻓ ﻲ ﻧﻔ ﺲ اﻟﻮﻗ ﺖ‪ .‬ﻋﲆﺳ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺷﺮوط ﻣ‬
‫ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ اﻟ‬
‫ﺋﻴ ﺴﻴ ﺔ و ‪/‬‬
‫ﺗﺨﺎذ إﺟﺮاء‪ .‬ﻓ ﻲ أوﻗﺎ ت أﺧﺮى ‪ ،‬ﻗﺪﺗﻜﻮن راﺿ ًﻴﺎ ﻋﻦ ﺷﺮط واﺣﺪ ﻓﻘﻂ ﻫﻮ ﺻﻮا ب‪.‬ﻳﻤﻜﻦ ﻟﻠﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﻋﲆ ﺻﻮا ب ﻻ‬
‫ﺗﻚ ﻓ ﻲ ﻫﺬه اﻟﻤﻮاﻗﻒ‪.‬‬
‫أو ﻣ ﺴﺎﻋﺪ‬

‫ﺘﻌﺪدة‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺷﺮوط ﻣ‬
‫ﺘﺨﺪام واﻟ‬
‫اﺳ‬

‫ﺒﺎرﻳﻦ اﻟﺸﺮﻃﻴﻦ ؛ إذا‬


‫ﺘ‬‫ﺋﻴ ﺴﻴ ﺔ وﻟﺠﻤﻊ اﻻﺧ‬
‫ﺘﺨﺪم اﻟﻜﻠﻤ ﺔ اﻟﺮ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن ﻛﻼ اﻟﺸﺮﻃﻴﻦ ﺻﺤﻴﺤﻴﻦ ﻓ ﻲ وﻗ ﺖ واﺣﺪ ‪ ،‬اﺳ‬
‫ﻟﻠ‬
‫ﺘﻢﺗﻘﻴﻴﻢ‬
‫ﺒﺎرﻳﻦ ‪،‬ﻳ‬
‫ﺘ‬‫ﺒﺎرﻳﻦ أو إذا ﻓﺸﻞ ﻛﻼ اﻻﺧ‬
‫ﺘ‬‫ﺒﻴﺮ ‪over all‬إﱃ ‪True.‬إذا ﻓﺸﻞ أي ﻣﻦ اﻻﺧ‬
‫ﺘﻌ‬‫ﺘﻢﺗﻘﻴﻴﻢ اﻟ‬
‫ﺒﺎر ‪،‬ﻳ‬
‫ﺘ‬‫ﻧﺠﺢ ﻛﻞ اﺧ‬
‫ﺒﻴﺮ إﱃ ‪False.‬‬
‫ﺘﻌ‬‫اﻟ‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺒﺎر اﻟ‬
‫ﺘ‬‫ﺘﺨﺪام اﻻﺧ‬
‫ﺑﺎﺳ‬‫ﻋﺎﻣﺎ‬
‫ﺒﺮ ﻣﻦ ‪ً 21‬‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن ﻋﻤﺮ ﺷﺨﺼﻴﻦ أﻛ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫‪22 >>> age_1 = 18 v >>> age_0> = 21 and age_1> = 21‬‬


‫= ‪u >>> age_0‬‬

‫ﺧﻄﺄ ﺷﻨﻴﻊ‬

‫ﺒﻴﺎﻧﺎ ت ‪79‬‬
‫إذا اﻟ‬
‫‪Machine Translated by Google‬‬

‫‪age_1 = 22 >>> age_0> = 21 and age_1> = 21‬‬


‫>>> ‪w‬‬
‫ﺣﻘﻴﻘ ﻲ‬

‫ﺒﺎر اﻟﻤﻮﺟﻮد ﻋﲆ‬


‫ﺘ‬‫ﺒﺮ‪.‬ﻳﻨﺠﺢ اﻻﺧ‬
‫ﻋﺎﻣﺎ أو أﻛ‬
‫ﺒﻠﻎ ‪ً 21‬‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن ﻛﻼ اﻟﻌﻤﺮﻳﻦﻳ‬
‫ﻧﺤﺪد ﻓ ﻲ ‪u‬ﻋﻤﺮﻳﻦ ‪age_0 ،‬و ‪age_1.‬ﻓ ﻲ ‪v‬ﻧ‬
‫ﺒﻴﺮ اﻟﺸﺮﻃ ﻲ اﻟﻜﻠ ﻲ إﱃ ‪False.‬ﻓ ﻲ ‪w‬ﻧﻐﻴﺮ ‪age_1‬‬
‫ﺘﻌ‬‫ﺘﻢﺗﻘﻴﻴﻢ اﻟ‬
‫ﺒﺎر اﻟﻤﻮﺟﻮد ﻋﲆ اﻟﻴﻤﻴﻦﻳﻔﺸﻞ ‪ ،‬ﻟﺬﻟﻚﻳ‬
‫ﺘ‬‫اﻟﻴ ﺴﺎر ‪ ،‬ﻟﻜﻦ اﻻﺧ‬

‫ﺒﻴﺮ اﻟﺸﺮﻃ ﻲ اﻹﺟﻤﺎﻟ ﻲ ﻋﲆ أﻧﻪ‬


‫ﺘﻌ‬‫ﺒ ﺐ ﻓ ﻲﺗﻘﻴﻴﻢ اﻟ‬
‫ﺒﺎرﻳﻦ اﻟﻔﺮدﻳﻴﻦ ‪ ،‬ﻣﻤﺎﺗ ﺴ‬
‫ﺘ‬‫ﺒﺮ ﻣﻦ ‪21 ،‬ﻟﺬﻟﻚ ﻧﺠﺢ ﻛﻼ اﻻﺧ‬
‫إﱃ ‪22.‬ﻗﻴﻤ ﺔ ‪age_1‬اﻵن أﻛ‬
‫ﺻﺤﻴﺢ‪.‬‬
‫ﺘﺨﺪم‬
‫ﺑ ﺔ‪ .‬إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺒﺎرا ت اﻟﻔﺮدﻳ ﺔ ‪ ،‬ﻟﻜﻨﻬﺎ ﻏﻴﺮ ﻣﻄﻠﻮ‬
‫ﺘ‬‫ﺘﺨﺪام اﻷﻗﻮاس ﺣﻮل اﻻﺧ‬
‫ﺘﺤ ﺴﻴﻦ إﻣﻜﺎﻧﻴ ﺔ اﻟﻘﺮاءة ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﻟ‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺒﺎرك ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫ﺘ‬‫ﺒﺪو اﺧ‬
‫اﻷﻗﻮاس ‪ ،‬ﻓ ﺴﻴ‬

‫)‪(age_0> = 21‬و )‪(age_1> = 21‬‬

‫ﺘﻌﺪدة‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺷﺮوط ﻣ‬
‫ﺘﺨﺪام أو اﻟ‬
‫اﺳ‬

‫ﺒﺎرا ت اﻟﻔﺮدﻳ ﺔ أو‬


‫ﺘ‬‫ﺘﻴﺎز أي ﻣﻦ اﻻﺧ‬ ‫ﺘﻌﺪدة أ ً‬
‫ﻳﻀﺎ ‪ ،‬وﻟﻜﻨﻬﺎﺗﻤﺮ ﻋﻨﺪ اﺟ‬ ‫ﺘﺤﻘﻖ ﻣﻦ ﺷﺮوط ﻣ‬
‫ﺋﻴ ﺴﻴ ﺔ أو اﻟ‬
‫ﺘﻴﺢ ﻟﻚ اﻟﻜﻠﻤ ﺔ اﻟﺮ‬
‫ﺗ‬
‫ﺒﺎرﻳﻦ اﻟﻔﺮدﻳﻴﻦ‪.‬‬
‫ﺘ‬‫ﺒﻴﺮ ﻓﻘﻂ ﻋﻨﺪﻣﺎﻳﻔﺸﻞ ﻛﻼ اﻻﺧ‬
‫ﺘﻌ‬‫ﺒﻴﺮ أو اﻟ‬
‫ﺘﻌ‬‫ﻛﻠﻴﻬﻤﺎ‪.‬ﻳﻔﺸﻞ اﻟ‬

‫ﻋﺎﻣﺎ‪:‬‬
‫ﺑﻦﻳﺰﻳﺪ ﻋﻤﺮه ﻋﻦ ‪ً 21‬‬
‫ﺒﺤ ﺚ ﻋﻦ ﻋﻤﺮ واﺣﺪ ﻓﻘﻂ ﻟﻜﻞ ا‬
‫ﻟﻨﻔﻜﺮ ﻓ ﻲ ﻋﻤﺮان ﻣﺮة أﺧﺮى ‪ ،‬وﻟﻜﻦ ﻫﺬه اﻟﻤﺮةﺳﻨ‬

‫‪u >>> age_0 = 22 >>> age_1 = 18 v >>> age_0> = 21‬أو ‪age_1> = 21‬‬

‫ﺻﺤﻴﺢ ‪w >>> age_0 = 18 >>> age_0> = 21‬أو ‪age_1> = 21‬‬

‫ﺧﻄﺄ ﺷﻨﻴﻊ‬

‫ﺒﺎر ‪age_0‬ﻓ ﻲ ‪v‬‬


‫ﺘ‬‫ﺘﻐﻴﺮﻳﻦ ﻟﻠﻌﻤﺮ ﻣﺮة أﺧﺮى ﻋﻨﺪ ‪u.‬ﻷن اﺧ‬
‫ﺑﻤ‬‫ﺒﺪأ‬
‫ﻧ‬
‫ﺒﻴﺮ‬
‫ﺘﻌ‬‫ﺘﻢﺗﻘﻴﻴﻢ اﻟ‬
‫ﺒﺎرﻳﻦ اﻵن وﻳ‬
‫ﺘ‬‫ﺒﺎر ﻓ ﻲ ‪w ،‬ﻳﻔﺸﻞ ﻛﻼ اﻻﺧ‬
‫ﺘ‬‫ﺛﻢ ﺧﻔﻀﻨﺎ ‪age_0‬إﱃ ‪18.‬ﻓ ﻲ اﻻﺧ‬‫ﺒﻴﺮ اﻟﻌﺎم إﱃ ﺻﺤﻴﺢ‪.‬‬
‫ﺘﻌ‬‫ﺘﻢﺗﻘﻴﻴﻢ اﻟ‬
‫ﻳﻤﺮ ‪،‬ﻳ‬
‫اﻟﻌﺎم إﱃ ‪False.‬‬

‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻤ ﺔ ﻣﻮﺟﻮدة ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬


‫اﻟ‬
‫ﺜﺎل ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺗﺨﺎذ أي إﺟﺮاء‪ .‬ﻋﲆﺳ‬
‫ﺒﻞ ا‬
‫ﺘﻮي ﻋﲆ ﻗﻴﻤ ﺔ ﻣﻌﻴﻨ ﺔ ﻗ‬ ‫ﻣﻦ اﻟﻤﻬﻢ أﺣﻴﺎﻧًﺎ اﻟ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﺎﺋﻤ ﺔﺗﺤ‬
‫ﺒﻞ إﻛﻤﺎلﺗ ﺴﺠﻴﻞ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﺤﺎﻟﻴ ﺔ ﻗ‬
‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ أﺳﻤﺎء اﻟﻤ ﺴ‬‫ﺘﺨﺪم ﺟﺪﻳﺪ ﻣﻮﺟﻮدًا‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن اﺳﻢ ﻣ ﺴ‬
‫ﻓ ﻲ اﻟ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن اﻟﻤﻮﻗﻊ اﻟﺬيﺗﻢ إرﺳﺎﻟﻪ ﻣﻮﺟﻮدًا‬
‫ﺷﺨﺺ ﻣﺎ ﻋﲆ ﻣﻮﻗﻊ وﻳ ﺐ‪ .‬ﻓ ﻲ ﻣﺸﺮوع رﺳﻢ اﻟﺨﺮاﺋﻂ ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ اﻟ‬
‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻟﻤﻮاﻗﻊ اﻟﻤﻌﺮوﻓ ﺔ‪.‬‬

‫ﺘﺎح‬
‫ﺘﺨﺪم اﻟﻤﻔ‬
‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬اﺳ‬‫ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎﻧ ﺖ ﻗﻴﻤ ﺔ ﻣﻌﻴﻨ ﺔ ﻣﻮﺟﻮدة‬
‫ﺒﻬﺎ اﻟﻌﻤﻴﻞ‬
‫ﺘ ﻲ ﻃﻠ‬
‫ﺑﺎﻹﺿﺎﻓﺎ ت اﻟ‬‫ﺘﺰا‪.‬ﺳﻨﻀﻊ ﻗﺎﺋﻤ ﺔ‬
‫ﺑﻴ‬‫ﺒﻬﺎ ﻟﻤﻄﻌﻢ‬
‫ﺘ‬‫ﺘ ﻲ ﻗﺪﺗﻜ‬
‫ﺑﻌﺾ اﻟﺮﻣﻮز اﻟ‬‫ﻛﻠﻤ ﺔ ﻓﻴﻬﺎ‪ .‬دﻋﻨﺎ ﻧﻔﻜﺮ ﻓ ﻲ‬
‫ﺑﻌﺾ اﻹﺿﺎﻓﺎ ت ﻣﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ‬
‫ﺛﻢ ﻧ‬‫ﺘﺰا‬
‫ﺒﻴ‬‫ﻟ‬

‫‪80‬اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‬
‫‪Machine Translated by Google‬‬

‫]'‪>>> request_toppings = ['mushrooms'، 'onions'، 'pineapple‬‬


‫>>> ‪"u‬اﻟﻔﻄﺮ" ﻓ ﻲ ﻃﻠ ﺐ_اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺣﻘﻴﻘ ﻲ‬

‫ﺑﺔ‬
‫ﺒﺮوﻧ ﻲ" ﻓ ﻲ اﻟﻀﺨﺎﻣ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﺑﻴ‬‫>>> ‪"v‬‬
‫ﺧﻄﺄ ﺷﻨﻴﻊ‬

‫ﺒﺮوﻧ ﻲ" ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‬


‫ﺑﻴ‬‫ﺘﺤﻘﻖ ﻣﻦ وﺟﻮد "ﻋﻴ ﺶ اﻟﻐﺮا ب" و "‬
‫ﺋﻴ ﺴﻴ ﺔ ﻓ ﻲ ‪Python‬أنﺗ‬
‫ﺒﺮ اﻟﻜﻠﻤ ﺔ اﻟﺮ‬
‫ﺗﺨ‬‫ﻓ ﻲ ‪u‬و ‪v ،‬‬
‫ﺘﻲ‬
‫ﺑ ﺴﻬﻮﻟ ﺔ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻤ ﺔ اﻟ‬‫ﺘﺤﻘﻖ‬
‫ﺛﻢ اﻟ‬‫ﺑﺎﻟﻘﻴﻢ اﻷﺳﺎﺳﻴ ﺔ ‪،‬‬‫ﺘﻘﻨﻴ ﺔ ﻗﻮﻳ ﺔ ﺟﺪًاﻷﻧﻪﻳﻤﻜﻨﻚ إﻧﺸﺎء ﻗﺎﺋﻤ ﺔ‬
‫ﺑ ﺔ‪ .‬ﻫﺬه اﻟ‬
‫اﻟﻤﻄﻠﻮ‬
‫ﺑﻖ ﻣﻊ إﺣﺪى اﻟﻘﻴﻢ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬
‫ﺘﻄﺎ‬
‫ﺒﺮ ﻫﺎﺗ‬
‫ﺘ‬‫ﺗﺨ‬

‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻤ ﺔ ﻟﻴ ﺴ ﺖ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬


‫اﻟ‬
‫ﺘﺨﺪام اﻟﻜﻠﻤ ﺔ ﻟﻴ ﺴ ﺖ ﻓ ﻲ ﻫﺬه‬
‫ﻓ ﻲ أوﻗﺎ ت أﺧﺮى ‪ ،‬ﻣﻦ اﻟﻤﻬﻢ ﻣﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻤ ﺔ ﻻﺗﻈﻬﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﺪﻳﺎ ت‪.‬ﻳﻤﻜﻨﻚ‬
‫ﺘﻌﻠﻴﻖ ﻓ ﻲ أﺣﺪ اﻟﻤﻨ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﻤﻨﻮﻋﻴﻦ ﻣﻦ اﻟ‬
‫ﺒﺎرك ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬
‫ﺘ‬‫ﺜﺎل ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫اﻟﺤﺎﻟ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺑﺈرﺳﺎلﺗﻌﻠﻴﻖ‪:‬‬‫ﺒﻞ اﻟ ﺴﻤﺎح ﻟﻬﺬا اﻟﺸﺨﺺ‬
‫ﺘﺨﺪم ﻗ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذاﺗﻢ ﺣﻈﺮ ﻣ ﺴ‬
‫اﻟ‬

‫ﻣﺤﻈﻮر_‬ ‫]'‪banned_users = ['andrew'، 'carolina'، 'david‬‬


‫‪users.py‬‬ ‫ﺘﺨﺪم ='ﻣﺎري'‬
‫اﻟﻤ ﺴ‬

‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﺤﻈﻮرﻳﻦ‪:‬‬
‫ﺘﺨﺪم ﺿﻤﻦ اﻟﻤ ﺴ‬
‫‪u‬إذا ﻟﻢﻳﻜﻦ اﻟﻤ ﺴ‬
‫‪print (user.title () + "،‬ﻳﻤﻜﻨﻚ إرﺳﺎل رد إذا ﻛﻨ ﺖﺗﺮﻏ ﺐ ﻓ ﻲ ذﻟﻚ‪(".‬‬

‫ﺘﺨﺪم ﻟﻴ ﺴ ﺖ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺑﻮﺿﻮحﺗﺎم‪ .‬إذا ﻛﺎﻧ ﺖ ﻗﻴﻤ ﺔ اﻟﻤ ﺴ‬‫اﻟ ﺴﻄﺮ ﻋﻨﺪ ‪u‬ﻳﻘﺮأ‬
‫ﺒﺎدﺋ ﺔ‪.‬‬
‫ﺗﻨﻔﺬ اﻟ ﺴﻄﺮ ذي اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺑﺈرﺟﺎع ‪True‬و‬
‫ﺗﻘﻮم ‪Python‬‬
‫‪banned_users ،‬‬
‫ﺘﺨﺪم '‪'marie‬ﻏﻴﺮ ﻣﻮﺟﻮد ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪banned_users ،‬ﻟﺬﻟﻚﺗﺮى رﺳﺎﻟ ﺔ‬
‫اﻟﻤ ﺴ‬
‫ﺗﻬﺎ ﻟﻨﺸﺮ رد‪:‬‬
‫دﻋﻮ‬

‫ﻣﺎري ‪،‬ﻳﻤﻜﻨﻚ إرﺳﺎل رد إذا ﻛﻨ ﺖﺗﺮﻏ ﺐ ﻓ ﻲ ذﻟﻚ‪.‬‬

‫ﺒﻴﺮا ت اﻟﻤﻨﻄﻘﻴ ﺔ‬
‫ﺘﻌ‬‫اﻟ‬
‫ﺒﻴﺮ اﻟﻤﻨﻄﻘ ﻲ ﻫﻮ ﻣﺠﺮد اﺳﻢ آﺧﺮ‬
‫ﺘﻌ‬‫ﺒﻴﺮ اﻟﻤﻨﻄﻘ ﻲ ﻓ ﻲ ﻣﺮﺣﻠ ﺔ ﻣﺎ‪ .‬اﻟ‬
‫ﺘﻌ‬‫ﺘ ﺴﻤﻊ ﻣﺼﻄﻠﺢ اﻟ‬
‫ﺒﺮﻣﺠ ﺔ ‪،‬ﺳ‬
‫ﺘﻌﻠﻢ اﻟﻤﺰﻳﺪ ﻋﻦ اﻟ‬
‫ﻋﻨﺪﻣﺎﺗ‬
‫ﺘﻢﺗﻘﻴﻴﻤﻬﺎ‪.‬‬
‫ﺑﻌﺪ أنﻳ‬‫ﺒﻴﺮ اﻟﺸﺮﻃ ﻲ‬
‫ﺘﻌ‬‫ﺜﻞ ﻗﻴﻤ ﺔ اﻟ‬
‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫ﺒﺎر اﻟﺸﺮﻃ ﻲ‪ .‬اﻟﻘﻴﻤ ﺔ اﻟﻤﻨﻄﻘﻴ ﺔ ﻫ ﻲ إﻣﺎ ‪True‬أو ‪False ،‬‬
‫ﺘ‬‫ﻟﻼﺧ‬

‫ﺘﺸﻐﻴﻞ أو ﻣﺎ إذا ﻛﺎنﻳﻤﻜﻦ‬


‫ﺒ ﺔ ﻗﻴﺪ اﻟ‬
‫ﺜﻞ ﻣﺎ إذا ﻛﺎﻧ ﺖ اﻟﻠﻌ‬
‫ﺒﻊ ﺷﺮوط ﻣﻌﻴﻨ ﺔ ‪ ،‬ﻣ‬
‫ﺘ‬‫ﺘ‬ ‫ُﺴ‬
‫ﺘﺨﺪم اﻟﻘﻴﻢ اﻟﻤﻨﻄﻘﻴ ﺔ ﻟ‬ ‫ﺒﺎ ﻣﺎﺗ‬
‫ﻏﺎﻟ ً‬
‫ﺘﻮى ﻣﻌﻴﻦ ﻋﲆ ﻣﻮﻗﻊ وﻳ ﺐ‪:‬‬
‫ﺘﺨﺪمﺗﺤﺮﻳﺮ ﻣﺤ‬
‫ﻟﻠﻤ ﺴ‬

‫= ‪ game_active‬ﺻﺤﻴﺢ‬
‫= ‪can_edit‬ﺧﻄﺄ‬

‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺒﻊ ﺣﺎﻟ ﺔ اﻟ‬
‫ﺘ‬‫ﺘ‬‫ﺗﻮﻓﺮ اﻟﻘﻴﻢ اﻟﻤﻨﻄﻘﻴ ﺔ ﻃﺮﻳﻘ ﺔ ﻓﻌﺎﻟ ﺔ ﻟ‬
‫ﺑﺮﻧﺎﻣﺠﻚ‪.‬‬‫أو ﺣﺎﻟ ﺔ ﻣﻌﻴﻨ ﺔ ﻣﻬﻤ ﺔ ﻓ ﻲ‬

‫ﺒﻴﺎﻧﺎ ت ‪81‬‬
‫إذا ﻛﺎﻧ ﺖ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺒﺎر‪.‬‬
‫ﺘ‬‫ﺘﺎﺋﺞ ﻛﻞ اﺧ‬
‫ﺗﻮﻗﻌﻚ ﻟﻨ‬
‫ﺒﺎر و‬
‫ﺘ‬‫ﺑﻴﺎﻧًﺎﻳﺼﻒ ﻛﻞ اﺧ‬‫ﺒﻊ‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ‪ .‬اﻃ‬
‫ﺘ‬‫ﺘ ﺐﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻻﺧ‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ‪ :‬اﻛ‬
‫ﺘ‬‫‪5-1.‬اﻻﺧ‬

‫ﺑﻚ ﻛﻤﺎﻳﻠ ﻲ‪:‬‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬


‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺒﺪو اﻟ‬
‫ﻳﺠ ﺐ أنﺗ‬

‫ﺑﺎرو"‬
‫ﺳﻴﺎرة ="ﺳﻮ‬
‫ﺑ ًﺎ‪(".‬‬
‫ﺗﻮﻗﻊ ﺻﻮا‬
‫‪ ")print‬ﻫﻞ اﻟ ﺴﻴﺎرة ؟'‪== 'subaru‬أ‬
‫ﺑﺎرو"(‬
‫ﺒﺎﻋ ﺔ )ﺳﻴﺎرة =="ﺳﻮ‬
‫ﻃ‬

‫ﺗﻮﻗﻊ ﺧﻄﺄ‪(".‬‬
‫‪ print ("\ n‬ﻫﻞ اﻟ ﺴﻴﺎرة =='أودي'؟ أ‬
‫ﺒﺎﻋ ﺔ )ﺳﻴﺎرة =='أودي'(‬
‫ﻃ‬

‫ﺒ ﺐ ﻛﻞﺳﻄﺮ‬
‫ﺗﺄﻛﺪ ﻣﻦ أﻧﻚﺗﻔﻬﻢﺳ‬
‫ﺘﺎﺋﺠﻚ ‪ ،‬و‬
‫ﺜ ﺐ إﱃ ﻧ‬
‫•اﻧﻈﺮ ﻋﻦ ﻛ‬
‫ﺘﻘﻴﻴﻢ ﺻﺤﻴﺢ أو ﺧﻄﺄ‪.‬‬
‫ﺑ‬

‫ﺒﺎرا ت ﻋﲆ اﻷﻗﻞﺗﻘﻴﻴﻤﻬﺎ إﱃ ‪True‬وآﺧﺮ‬


‫ﺘ‬‫ﺒﺎرا ت ﻋﲆ اﻷﻗﻞ‪ .‬اﻃﻠ ﺐ ﻣﻦ ‪5‬اﺧ‬
‫ﺘ‬‫•إﻧﺸﺎء ‪10‬اﺧ‬
‫ﺒﺎرا تﺗﻘﻴﻢ إﱃ ‪False.‬‬
‫ﺘ‬‫‪5‬اﺧ‬

‫ﺑﺔ‬
‫ﺑـ ‪10.‬إذا ﻛﻨ ﺖﺗﺮﻳﺪﺗﺠﺮ‬‫ﺑﺈﻧﺸﺎﺋﻬﺎ‬‫ﺘ ﻲﺗﻘﻮم‬
‫ﺒﺎرا ت اﻟ‬
‫ﺘ‬‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ‪ :‬ﻟﻴ ﺲ ﻋﻠﻴﻚﺗﺤﺪﻳﺪ ﻋﺪد اﻻﺧ‬
‫ﺘ‬‫‪5-2.‬اﻟﻤﺰﻳﺪ ﻣﻦ اﻻﺧ‬
‫ﺘﻴﺠ ﺔ واﺣﺪة‬
‫ﺒﺎرا ت وأﺿﻔﻬﺎ إﱃ ‪conditional_tests.py.‬اﺣﺼﻞ ﻋﲆ ﻧ‬
‫ﺘ‬‫ﺘ ﺐ اﻟﻤﺰﻳﺪ ﻣﻦ اﻻﺧ‬
‫اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻘﺎرﻧﺎ ت ‪ ،‬ﻓﺎﻛ‬
‫ﻋﲆ اﻷﻗﻞ ﺻﺤﻴﺤ ﺔ وأﺧﺮى ﺧﻄﺄ ﻟﻜﻞ ﻣﻤﺎﻳﻠ ﻲ‪:‬‬

‫ﺑﺎﻟ ﺴﻼﺳﻞ‬‫ﺒﺎرا ت اﻟﻤ ﺴﺎواة وﻋﺪم اﻟﻤ ﺴﺎواة‬


‫ﺘ‬‫•اﺧ‬

‫ﺘﺨﺪام اﻟﻮﻇﻴﻔ ﺔ اﻟ ﺴﻔﻠﻴ ﺔ )(‬


‫ﺑﺎﺳ‬‫ﺒﺎرا ت‬
‫ﺘ‬‫•اﻻﺧ‬

‫ﺒﺮ ﻣﻦ أوﺗ ﺴﺎوي ‪ ،‬وأﻗﻞ ﻣﻦ أوﺗ ﺴﺎوي‬


‫ﺒﺮ ﻣﻦ وأﻗﻞ ﻣﻦ ‪ ،‬أﻛ‬
‫ﺘﻀﻤﻦ ﻣ ﺴﺎواة وﻋﺪم ﻣ ﺴﺎواة ‪ ،‬أﻛ‬
‫ﺘ ﻲﺗ‬
‫ﺒﺎرا ت اﻟﻌﺪدﻳ ﺔ اﻟ‬
‫ﺘ‬‫•اﻻﺧ‬

‫ﺘﺨﺪام اﻟﻜﻠﻤ ﺔ و اﻟﻜﻠﻤ ﺔ و أو اﻟﻜﻠﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ‬


‫ﺑﺎﺳ‬‫ﺒﺎرا ت‬
‫ﺘ‬‫•اﻻﺧ‬

‫ﺒﺎر ﻣﺎ إذا ﻛﺎن اﻟﻌﻨﺼﺮ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬


‫ﺘ‬‫•اﺧ‬

‫ﺒﺎر ﻣﺎ إذا ﻛﺎن اﻟﻌﻨﺼﺮ ﻟﻴ ﺲ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬


‫ﺘ‬‫•اﺧ‬

‫ﺒﻴﺎﻧﺎ ت‬
‫إذا اﻟ‬

‫ﺒﺎرا ت ‪if .‬‬


‫ﺑﺔ ﻋ‬
‫ﺘﺎ‬
‫ﺒﺪء ﻓ ﻲ ﻛ‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ ‪،‬ﻳﻤﻜﻨﻚ اﻟ‬
‫ﺘ‬‫ﻋﻨﺪﻣﺎﺗﻔﻬﻢ اﻻﺧ‬
‫ﺒﺎر ﻫﺎ‪ .‬ﻟﻘﺪ رأﻳ ﺖ‬
‫ﺘ‬‫ﺘﺎج إﱃ اﺧ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﻴﺎركﻷي ﻣﻨﻬﺎ ﻋﲆ ﻋﺪد اﻟﺸﺮوط اﻟ‬
‫ﺘﻤﺪ اﺧ‬
‫ﺒﺎرا ت ‪if ،‬وﻳﻌ‬
‫ﺘﻠﻔ ﺔ ﻣﻦ ﻋ‬
‫ﺗﻮﺟﺪ ﻋﺪة أﻧﻮاع ﻣﺨ‬
‫ﺘﻌﻤﻖ ﻓ ﻲ اﻟﻤﻮﺿﻮع‪.‬‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ ‪ ،‬وﻟﻜﻦ دﻋﻨﺎ اﻵن ﻧ‬
‫ﺘ‬‫ﺒﺎرا ت ‪if‬ﻓ ﻲ اﻟﻤﻨﺎﻗﺸ ﺔ ﺣﻮل اﻻﺧ‬
‫ﺜﻠ ﺔ ﻋﲆ ﻋ‬
‫اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﻣ‬

‫ﺑ ﺴﻴﻄ ﺔ إذا‬‫ﺒﺎرا ت‬
‫ﻋ‬
‫ﺒﺎر واﺣﺪ وإﺟﺮاء واﺣﺪ‪:‬‬
‫ﺘ‬‫ﺒﺎرة ‪if‬ﻟﻬﺎ اﺧ‬
‫ﺑ ﺴﻂ ﻧﻮع ﻣﻦ ﻋ‬
‫أ‬

‫ﺒﺎر اﻟﺸﺮﻃ ﻲ‪:‬‬


‫ﺘ‬‫إذا ﻛﺎن اﻻﺧ‬
‫ﺑﻌﻤﻞ ﻣﺎ‬‫ﻗﻢ‬

‫‪82‬اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎر‪ .‬إذاﺗﻢ‬
‫ﺘ‬‫ﺑﻌﺪ اﻻﺧ‬‫ﺒﺎدﺋ ﺔ‬
‫ﺘﻠ ﺔ ذا ت اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺒﺎر ﺷﺮﻃ ﻲ ﻓ ﻲ اﻟ ﺴﻄﺮ اﻷول وأي إﺟﺮاء ﻓ ﻲ اﻟﻜ‬
‫ﺘ‬‫ﻳﻤﻜﻨﻚ وﺿﻊ أي اﺧ‬
‫ﺒﺎرة ‪if .‬‬
‫ﺗﻨﻔﺬ اﻟﻜﻮد اﻟﺬيﻳﻠ ﻲ ﻋ‬
‫ﺒﺎر اﻟﺸﺮﻃ ﻲ إﱃ ‪True ،‬ﻓﺈن ‪Python‬‬
‫ﺘ‬‫ﺗﻘﻴﻴﻢ اﻻﺧ‬

‫ﺘﺠﺎ ﻫﻞ اﻟﻜﻮد اﻟﺬيﻳﻠ ﻲ ‪if‬‬


‫ﺗ‬‫ﺒﺎر إﱃ ‪False ،‬ﻓﺈن ‪Python‬‬
‫ﺘ‬‫إذاﺗﻢﺗﻘﻴﻴﻢ اﻻﺧ‬
‫إﻓﺎدة‪.‬‬

‫ﺘﺼﻮﻳ ﺖ‪.‬‬
‫ﺑﻤﺎﻳﻜﻔ ﻲ ﻟﻠ‬‫ﺒﻴ ﺮًا‬
‫ﺜﻞ ﻋﻤﺮ اﻟﺸﺨﺺ ‪ ،‬وﻧﺮﻳﺪ ﻣﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن ﻫﺬا اﻟﺸﺨﺺ ﻛ‬
‫ﺘﻐﻴ ﺮًاﻳﻤ‬
‫ﺘﺮض أن ﻟﺪﻳﻨﺎ ﻣ‬
‫ﻟﻨﻔ‬
‫ﺘﺼﻮﻳ ﺖ‪:‬‬
‫ﺑﺈﻣﻜﺎن اﻟﺸﺨﺺ اﻟ‬‫ﺘﺎﻟ ﻲ ﻣﺎ إذا ﻛﺎن‬
‫ﺒﺮ اﻟﻜﻮد اﻟ‬
‫ﺘ‬‫ﻳﺨ‬

‫ﺘﺼﻮﻳ ﺖ ‪= 19‬‬
‫ﻋﻤﺮ اﻟ‬
‫‪u‬إذا ﻛﺎن اﻟﻌﻤﺮ< ‪= 18:‬‬
‫ﺘﺼﻮﻳ ﺖ!"(‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ﻣﺎﻳﻜﻔ ﻲ ﻟﻠ‬
‫‪")v print‬أﻧ ﺖﺗ‬

‫ﺒﺮ ﻣﻦ أو‬
‫ﺘﺤﻘﻖ ‪Python‬ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻌﻤﺮ أﻛ‬
‫ﻓ ﻲ ‪u‬ﻳ‬
‫ﺒﺎدﺋ ﺔ ﻓ ﻲ ‪v:‬‬
‫ﺒﺎﻋ ﺔ ذي اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺑﻴﺎن اﻟﻄ‬
‫ﻳ ﺴﺎوي ‪18.‬إﻧﻪ ﻛﺬﻟﻚ ‪ ،‬ﻟﺬﻟﻚﺗﻨﻔﺬ ‪Python‬‬

‫ﺘﺼﻮﻳ ﺖ!‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ﻣﺎﻳﻜﻔ ﻲ ﻟﻠ‬
‫أﻧ ﺖﺗ‬

‫ﺒﺎرا ت ‪if‬ﻛﻤﺎ ﻓﻌﻠ ﺖ ﻓ ﻲ ﺣﻠﻘﺎ ت ‪for .‬‬


‫ﺒﺎدﺋ ﺔ ﻧﻔ ﺲ اﻟﺪور ﻓ ﻲ ﻋ‬
‫ﺗﻠﻌ ﺐ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺘﻠ ﺔ اﻷﺳﻄﺮ ذا ت اﻟﻤ ﺴﺎﻓ ﺔ‬
‫ﺘﻢﺗﺠﺎ ﻫﻞ ﻛ‬
‫ﺒﺎر ‪ ،‬وﺳﻴ‬
‫ﺘ‬‫ﺒﺎرة ‪if‬إذا ﻧﺠﺢ اﻻﺧ‬
‫ﺑﻌﺪ ﻋ‬‫ﺒﺎدﺋ ﺔ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﺟﻤﻴﻊ اﻷﺳﻄﺮ ذا ت اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺳﻴ‬
‫ﺒﺎر‪.‬‬
‫ﺘ‬‫ﺑﺄﻛﻤﻠﻬﺎ إذا ﻟﻢﻳﻨﺠﺢ اﻻﺧ‬‫ﺒﺎدﺋ ﺔ‬
‫اﻟ‬

‫ﺒﻊ ﺟﻤﻠ ﺔ ‪if .‬دﻋﻨﺎ ﻧﻀﻴﻒ‬


‫ﺘ‬‫ﺘ ﻲﺗ‬
‫ﺘﻠ ﺔ اﻟ‬
‫ﺒﺮﻣﺠﻴ ﺔ ﻛﻤﺎﺗﺮﻳﺪ ﻓ ﻲ اﻟﻜ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻳﻤﻜﻦ أنﻳﻜﻮن ﻟﺪﻳﻚ اﻟﻌﺪﻳﺪ ﻣﻦ أﺳﻄﺮ اﻟ‬
‫ﺑﻌﺪ‪:‬‬‫ﺘﺼﻮﻳ ﺖ‬
‫ﺘﺼﻮﻳ ﺖ ‪ ،‬ﻧ ﺴﺄل ﻋﻤﺎ إذا ﻛﺎن اﻟﻔﺮد ﻗﺪﺳﺠﻞ ﻟﻠ‬
‫ﺑﻤﺎﻳﻜﻔ ﻲ ﻟﻠ‬‫ﺒﻴ ﺮًا‬
‫ﺳﻄﺮ إﺧﺮاج آﺧﺮ إذا ﻛﺎن اﻟﺸﺨﺺ ﻛ‬

‫اﻟﻌﻤﺮ ‪= 19‬‬
‫إذا ﻛﺎن اﻟﻌﻤﺮ< ‪= 18:‬‬
‫ﺘﺼﻮﻳ ﺖ!"(‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ﻣﺎﻳﻜﻔ ﻲ ﻟﻠ‬
‫ﺒﺎﻋ ﺔ )"أﻧ ﺖﺗ‬
‫ﻃ‬
‫ﺘﻰ اﻵن؟"(‬
‫ﺘﺼﻮﻳ ﺖ ﺣ‬
‫ﺘ ﺴﺠﻴﻞ ﻟﻠ‬
‫ﺑﺎﻟ‬‫‪ ")print‬ﻫﻞ ﻗﻤ ﺖ‬

‫ﺒﺎﻋ ﺔ ﻛﻼ‬
‫ﺘﻢ ﻃ‬
‫ﺑﺤﻴ ﺚﺗ‬‫ﺒﺎﻋ ﺔ ‪،‬‬
‫ﺒﺎرا ت اﻟﻄ‬
‫ﺑﺎدﺋ ﺔ ﻟﻜﻞ ﻣﻦ ﻋ‬‫ﺘﻢ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺒﺎر اﻟﺸﺮﻃ ﻲ ‪ ،‬وﻳ‬
‫ﺘ‬‫ﺘﺎز اﻻﺧ‬
‫ﻳﺠ‬
‫اﻟ ﺴﻄﺮﻳﻦ‪:‬‬

‫ﺘﺼﻮﻳ ﺖ!‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ﻣﺎﻳﻜﻔ ﻲ ﻟﻠ‬
‫أﻧ ﺖﺗ‬
‫ﺘﻰ اﻵن؟‬
‫ﺘﺼﻮﻳ ﺖ ﺣ‬
‫ﺘ ﺴﺠﻴﻞ ﻟﻠ‬
‫ﺑﺎﻟ‬‫ﻫﻞ ﻗﻤ ﺖ‬

‫ﺒﺮﻧﺎﻣﺞ أي ﻣﺨﺮﺟﺎ ت‪.‬‬


‫ﺘﺞ ﻫﺬا اﻟ‬
‫إذا ﻛﺎﻧ ﺖ ﻗﻴﻤ ﺔ اﻟﻌﻤﺮ أﻗﻞ ﻣﻦ ‪18 ،‬ﻓﻠﻦﻳﻨ‬

‫ﺑﻴﺎﻧﺎ ت ‪if-else‬‬
‫ﺘﻠﻒ ﻓ ﻲ ﺟﻤﻴﻊ اﻟﺤﺎﻻ ت اﻷﺧﺮى‪.‬‬
‫ﺒﺎر ﺷﺮﻃ ﻲ وإﺟﺮاء ﻣﺨ‬
‫ﺘ‬‫ﺘﻴﺎز اﺧ‬
‫ﺗﺨﺎذ إﺟﺮاء واﺣﺪ ﻋﻨﺪ اﺟ‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲ ا‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ‪،‬ﺳ‬
‫ﻓ ﻲﻛ‬
‫ﺜﻮن ‪if-else‬ﻳﺠﻌﻞ ﻫﺬا ﻣﻤﻜﻨًﺎ‪.‬‬
‫ﺑﻴ‬‫ﺑﻨﺎء ﺟﻤﻠ ﺔ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ‬
‫ﺘ ﻲﻳ‬
‫ﺘﻌﺮﻳﻒ إﺟﺮاء أو ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻹﺟﺮاءا ت اﻟ‬
‫ﺑ‬‫ﺗ ﺴﻤﺢ ﻟﻚ‬
‫ﺒﺎرة ‪else‬‬
‫ﺒ ﺴﻴﻄ ﺔ ‪ ،‬ﻟﻜﻦ ﻋ‬
‫ﺘﻠ ﺔ ‪if-else‬ﺟﻤﻠ ﺔ ‪if‬اﻟ‬
‫ﺒﻪ ﻛ‬
‫ﺗﺸ‬
‫ﺒﺎر اﻟﺸﺮﻃ ﻲ‪.‬‬
‫ﺘ‬‫ﻋﻨﺪ ﻓﺸﻞ اﻻﺧ‬

‫ﺒﻴﺎﻧﺎ ت ‪83‬‬
‫إذا ﻛﺎﻧ ﺖ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺑ ًﻘﺎ إذا ﻛﺎن اﻟﺸﺨﺺ ﻛ‬


‫ﺒﻴ ﺮًا ﻓ ﻲ اﻟ ﺴﻦ‬ ‫ﺘ ﻲﺗﻠﻘﻴﻨﺎ ﻫﺎﺳﺎ‬
‫ﺳﻨﻌﺮض ﻧﻔ ﺲ اﻟﺮﺳﺎﻟ ﺔ اﻟ‬
‫ﺘﺼﻮﻳ ﺖ‪:‬‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ﻣﺎﻳﻜﻔ ﻲ ﻟﻠ‬
‫ﺘﺼﻮﻳ ﺖ ‪ ،‬وﻟﻜﻦ ﻫﺬه اﻟﻤﺮةﺳﻨﻀﻴﻒ رﺳﺎﻟ ﺔﻷي ﺷﺨﺺ ﻟﻢﻳ‬
‫ﻳﻜﻔ ﻲ ﻟﻠ‬

‫اﻟﻌﻤﺮ ‪= 17‬‬
‫‪u‬إذا ﻛﺎن اﻟﻌﻤﺮ< ‪= 18:‬‬
‫ﺘﺼﻮﻳ ﺖ!"(‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ﻣﺎﻳﻜﻔ ﻲ ﻟﻠ‬
‫ﺒﺎﻋ ﺔ )"أﻧ ﺖﺗ‬
‫ﻃ‬
‫ﺘﻰ اﻵن؟"(‬
‫ﺘﺼﻮﻳ ﺖ ﺣ‬
‫ﺘ ﺴﺠﻴﻞ ﻟﻠ‬
‫ﺑﺎﻟ‬‫‪ ")print‬ﻫﻞ ﻗﻤ ﺖ‬
‫‪v‬آﺧﺮ‪:‬‬

‫ﺘﺼﻮﻳ ﺖ‪(".‬‬
‫‪")print‬ﻋﺬ ًرا ‪ ،‬أﻧ ﺖ أﺻﻐﺮ ﻣﻦ اﻟ‬
‫ﻋﺎﻣﺎ!"(‬
‫ﺒﻠﻎ ‪ً 18‬‬
‫ﺑﻤﺠﺮد أنﺗ‬‫ﺘﺼﻮﻳ ﺖ‬
‫ﺘ ﺴﺠﻴﻞ ﻟﻠ‬
‫ﺒﺎﻋ ﺔ )"اﻟﺮﺟﺎء اﻟ‬
‫ﻃ‬

‫ﺒﺎدﺋ ﺔ‬
‫ﺒﺎﻋ ﺔ ذا ت اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺘﻠ ﺔ ﻣﻦ اﻟﻄ‬
‫ﺒﺎر اﻟﺸﺮﻃ ﻲ ﻋﻨﺪ ‪u ،‬ﻓﺈن أول ﻛ‬
‫ﺘ‬‫إذا ﻧﺠﺢ اﻻﺧ‬
‫ﻋﺎﻣﺎ ﻫﺬه اﻟﻤﺮة ‪،‬‬
‫ﺘﻠ ﺔ ‪else‬ﻓ ﻲ ‪v .‬ﻧﻈ ﺮًاﻷن اﻟﻌﻤﺮ أﻗﻞ ﻣﻦ ‪ً 18‬‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻛ‬
‫ﺒﺎر إﱃ ‪False ،‬ﻓ ﺴﻴ‬
‫ﺘ‬‫ﺒﺎرا ت‪ .‬إذاﺗﻢﺗﻘﻴﻴﻢ اﻻﺧ‬
‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﻌ‬
‫ﻳ‬
‫ﺘﻠ ﺔ ‪else :‬‬
‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓ ﻲ ﻛ‬
‫ﺒﺎر اﻟﺸﺮﻃ ﻲ وﻳ‬
‫ﺘ‬‫ﻳﻔﺸﻞ اﻻﺧ‬

‫آﺳﻒ ‪ ،‬أﻧ ﺖ أﺻﻐﺮ ﻣﻦ أنﺗﺼﻮ ت‪.‬‬


‫ﻋﺎﻣﺎ!‬
‫ﺑﻠﻮﻏﻚ ‪ً 18‬‬‫ﺑﻤﺠﺮد‬‫ﺘﺼﻮﻳ ﺖ‬
‫ﺘ ﺴﺠﻴﻞ ﻟﻠ‬
‫ﻳﺮﺟﻰ اﻟ‬

‫ﺘﺼﻮﻳ ﺖ أو‬
‫ﺑﻤﺎﻳﻜﻔ ﻲ ﻟﻠ‬‫ﺒﻴ ﺮًا‬
‫ﺘﻘﻴﻴﻤﻬﻤﺎ‪ :‬إﻣﺎ أنﻳﻜﻮن اﻟﺸﺨﺺ ﻛ‬
‫ﺘﻴﻦ ﻓﻘﻂ ﻟ‬
‫ﺘﻤﻠ‬
‫ﺘﻴﻦ ﻣﺤ‬
‫ﺘﻮي ﻋﲆ ﺣﺎﻟ‬
‫ﻳﻌﻤﻞ ﻫﺬا اﻟﺮﻣﺰﻷﻧﻪﻳﺤ‬
‫ﺘﺼﻮﻳ ﺖ‪ .‬إذا ﻛﺎن آﺧﺮ‬
‫ﺑﻤﺎﻳﻜﻔ ﻲ ﻟﻠ‬‫ﺒﻴ ﺮًا‬
‫ﻟﻴ ﺲ ﻛ‬
‫ﺘﻤﻠﻴﻦ‪ .‬ﻓ ﻲﺳﻠ ﺴﻠ ﺔ ‪if-else‬‬
‫ﺋﻤﺎ أﺣﺪ اﻹﺟﺮاءﻳﻦ اﻟﻤﺤ‬
‫ﺘ ﻲﺗﺮﻳﺪ ﻓﻴﻬﺎ أنﺗﻨﻔﺬ ‪Python‬دا ً‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ ﻓ ﻲ اﻟﻤﻮاﻗﻒ اﻟ‬‫ﺒﻨﻴ ﺔ‬
‫ﺗﻌﻤﻞ اﻟ‬
‫ﺋﻤﺎﺗﻨﻔﻴﺬ أﺣﺪ اﻹﺟﺮاءﻳﻦ‪.‬‬
‫ﺘﻢ دا ً‬
‫ﺜﻞ ﻫﺬه ‪،‬ﺳﻴ‬
‫ﺑ ﺴﻴﻄ ﺔ ﻣ‬

‫ﺳﻠ ﺴﻠ ﺔ ‪if-elif-else‬‬
‫ﺘﺨﺪام ﺻﻴﺎﻏ ﺔ ‪else .‬‬
‫ﺘﻘﻴﻴﻢ ﻫﺬه اﻟﺤﺎﻻ ت ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﻴﻦ ‪ ،‬وﻟ‬
‫ﺘﻤﻠ‬
‫ﺘﻴﻦ ﻣﺤ‬
‫ﺜﺮ ﻣﻦ ﺣﺎﻟ‬
‫ﺒﺎر أﻛ‬
‫ﺘ‬‫ﺘﺎج إﱃ اﺧ‬
‫ﺘﺤ‬‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ‪،‬ﺳ‬
‫ﻓ ﻲﻛ‬
‫ﺘﻰﻳﻤﺮ واﺣﺪ‪.‬‬
‫ﺗﻴ ﺐ ﺣ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺒﺎر ﺷﺮﻃ ﻲ‬
‫ﺘ‬‫ﺘﻢﺗﺸﻐﻴﻞ ﻛﻞ اﺧ‬ ‫ﺘﻠ ﺔ واﺣﺪة ﻓﻘﻂ ﻓ ﻲﺳﻠ ﺴﻠ ﺔ ‪if-elif-else .‬ﻳ‬
‫ﺗﻨﻔﺬ ‪Python‬ﻛ‬ ‫‪Python if-elif-‬‬
‫ﺒﺎرا ت‪.‬‬
‫ﺘ‬‫ﺑﺎﻗ ﻲ اﻻﺧ‬
‫ﺘﺨﻄﻰ ‪Python‬‬ ‫ﺗ‬‫ﺒﺎر و‬‫ﺘ‬‫ﺒﻊ ذﻟﻚ اﻻﺧ‬
‫ﺘ‬‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﻜﻮد اﻟﺬيﻳ‬
‫ﺒﺎر ‪،‬ﻳ‬‫ﺘ‬
‫ﺘﻴﺎز اﻻﺧ‬
‫ﻋﻨﺪ اﺟ‬

‫ﺘﻴﻦ‪.‬‬
‫ﺘﻤﻠ‬
‫ﺘﻴﻦ ﻣﺤ‬
‫ﺜﺮ ﻣﻦ ﺣﺎﻟ‬
‫ﺘﻀﻤﻦ اﻟﻌﺪﻳﺪ ﻣﻦ ﻣﻮاﻗﻒ اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ أﻛ‬
‫ﺗ‬
‫ﺘﻠﻒ اﻟﻔﺌﺎ ت اﻟﻌﻤﺮﻳ ﺔ‪:‬‬
‫ﺘﻠﻔ ﺔ ﻟﻤﺨ‬
‫ﺘﻘﺎﺿﻰ أﺳﻌﺎ ًرا ﻣﺨ‬
‫ﺒﺎرك ﻣﺪﻳﻨ ﺔ ﻣﻼ ﻫ ﻲﺗ‬
‫ﺘ‬‫ﺜﺎل ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫•اﻟﺪﺧﻮل ﻣﺠﺎﻧ ﻲﻷي ﺷﺨﺺﺗﺤ ﺖﺳﻦ ‪4‬ﺳﻨﻮا ت‪.‬‬

‫ﺑﻴﻦ ‪4‬و ‪ 18‬ﻫﻮ ‪5‬دوﻻرا ت‪.‬‬‫ﺘﺮاوح أﻋﻤﺎر ﻫﻢ‬


‫ﺒﻮلﻷي ﺷﺨﺺﺗ‬
‫•اﻟﻘ‬

‫ﺜﺮ ﻫﻮ ‪10‬دوﻻرا ت‪.‬‬


‫ﻋﺎﻣﺎ أو أﻛ‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ‪ً 18‬‬
‫ﺒﻮلﻷي ﺷﺨﺺﻳ‬
‫•اﻟﻘ‬

‫ﺒﻮل اﻟﺸﺨﺺ؟‬
‫ﺘﺤﺪﻳﺪ ﻣﻌﺪل ﻗ‬
‫ﺒﺎرة ‪if‬ﻟ‬
‫ﺘﺨﺪام ﻋ‬
‫ﻛﻴﻒﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﻮل‪:‬‬
‫ﺒﻊ رﺳﺎﻟ ﺔﺳﻌﺮ اﻟﻘ‬
‫ﺛﻢﺗﻄ‬‫ﺘﺎﻟ ﻲ ﻟﻠﻔﺌ ﺔ اﻟﻌﻤﺮﻳ ﺔ ﻟﻠﺸﺨﺺ‬
‫ﺒﺮ اﻟﻜﻮد اﻟ‬
‫ﺘ‬‫ﺗﺨ‬

‫اﻟﻌﻤﺮ ‪= 12‬‬ ‫‪amusement_ park.py‬‬

‫‪u‬إذا ﻛﺎن اﻟﻌﻤﺮ ‪<4:‬‬


‫ﺑﻚ ‪0‬دوﻻر‪(".‬‬‫ﺗﻜﻠﻔ ﺔ اﻟﺪﺧﻮل اﻟﺨﺎﺻ ﺔ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬

‫‪84‬اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‬
‫‪Machine Translated by Google‬‬

‫‪v‬ﻋﻤﺮ إﻟﻴﻒ أﻗﻞ ﻣﻦ ‪18:‬‬


‫ﺑﻚ ﻫ ﻲ ‪5‬دوﻻرا ت‪(".‬‬‫ﺗﻜﻠﻔ ﺔ اﻟﺪﺧﻮل اﻟﺨﺎﺻ ﺔ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬
‫‪w‬آﺧﺮ‪:‬‬

‫ﺑﻚ ﻫ ﻲ ‪10‬دوﻻرا ت‪(".‬‬‫ﺗﻜﻠﻔ ﺔ اﻟﺪﺧﻮل اﻟﺨﺎﺻ ﺔ‬


‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬

‫ﺒﺔ‬
‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔ ﻣﻨﺎﺳ‬
‫ﺘﻢ ﻃ‬
‫ﺘ‬‫ﺒﺎر ‪ ،‬ﻓ ﺴ‬
‫ﺘ‬‫ﺒﺎر ‪if at u‬ﻣﺎ إذا ﻛﺎن ﻋﻤﺮ اﻟﺸﺨﺺ أﻗﻞ ﻣﻦ ‪4‬ﺳﻨﻮا ت‪ .‬إذا ﻧﺠﺢ اﻻﺧ‬
‫ﺘ‬‫ﺒﺮ اﺧ‬
‫ﺘ‬‫ﻳﺨ‬
‫ﺘﻢﺗﺸﻐﻴﻠﻪ ﻓﻘﻂ ﻓ ﻲ ﺣﺎﻟ ﺔ‬
‫ﺒﺎر ‪ ،‬واﻟﺬيﻳ‬
‫ﺘ‬‫ﺒﺮ ﺧﻂ ‪elif‬ﻓ ﻲ ‪v‬ﺣ ًﻘﺎ آﺧﺮ إذا ﻛﺎن اﻻﺧ‬
‫ﺘ‬‫ﺒﺎرا ت‪.‬ﻳﻌ‬
‫ﺘ‬‫ﺑﺎﻗ ﻲ اﻻﺧ‬
‫ﺘﺨﻄﻰ ‪Python‬‬
‫ﺗ‬‫و‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ‪4‬ﺳﻨﻮا ت ﻋﲆ اﻷﻗﻞﻷن‬
‫ﺑﻖ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﻤﺮﺣﻠ ﺔ ﻣﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ ‪ ،‬ﻧﻌﻠﻢ أن اﻟﺸﺨﺺﻳ‬
‫ﺒﺎر اﻟ ﺴﺎ‬
‫ﺘ‬‫ﻓﺸﻞ اﻻﺧ‬
‫ﺘﻠ ﺔ‬
‫ﺘﺨﻄﻰ ‪Python‬ﻛ‬
‫ﺗ‬‫ﺒﺔ و‬
‫ﺒﺎﻋ ﺔ اﻟﺮﺳﺎﻟ ﺔ اﻟﻤﻨﺎﺳ‬
‫ﺘﻢ ﻃ‬
‫ﺘ‬‫ﻋﺎﻣﺎ ‪ ،‬ﻓ ﺴ‬
‫ﺒﺎر اﻷول ﻓﺸﻞ‪ .‬إذا ﻛﺎن ﻋﻤﺮ اﻟﺸﺨﺺ أﻗﻞ ﻣﻦ ‪ً 18‬‬
‫ﺘ‬‫اﻻﺧ‬
‫ﺘﻠ ﺔ ‪else‬ﻓ ﻲ ‪w.‬‬
‫ﺘﺸﻐﻴﻞ اﻟﻜﻮد ﻓ ﻲ ﻛ‬
‫ﺑ‬‫ﺗﻘﻮم‬
‫ﺒﺎرا ت ‪if‬و ‪elif ،‬ﻓﺈن ‪Python‬‬
‫ﺘ‬‫‪else .‬إذا ﻓﺸﻠ ﺖ ﻛﻞ ﻣﻦ اﺧ‬

‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻠ ﺔ اﻟ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻛ‬
‫ﺒﺎر ﻋﻨﺪ ‪u‬إﱃ ‪False ،‬ﻟﺬﻟﻚ ﻻﻳ‬
‫ﺘ‬‫ﺘﻢﺗﻘﻴﻴﻢ اﻻﺧ‬
‫ﺜﺎل ‪،‬ﻳ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺑﻪ‪ .‬اﻟﻤﺨﺮج‬‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺑﺤﻴ ﺚﻳ‬
‫ﺜﺎﻧ ﻲ إﱃ ‪True (12‬أﻗﻞ ﻣﻦ )‪18‬‬
‫ﺒﺎر اﻟ‬
‫ﺘ‬‫ﺘﻢﺗﻘﻴﻴﻢ اﻻﺧ‬
‫ﺑﻪ‪ .‬وﻣﻊ ذﻟﻚ ‪،‬ﻳ‬
‫ﺒﻮل‪:‬‬
‫ﺘﻜﻠﻔ ﺔ اﻟﻘ‬
‫ﺑ‬‫ﺘﺨﺪم‬
‫ﺒﺎرة ﻋﻦ ﺟﻤﻠ ﺔ واﺣﺪة ﻹﻋﻼم اﻟﻤ ﺴ‬
‫ﻋ‬

‫ﺒﻮﻟﻚ ﻫ ﻲ ‪5‬دوﻻرا ت‪.‬‬


‫ﺗﻜﻠﻔ ﺔ ﻗ‬

‫ﺘﻠ ﺔ ‪else‬وﺳﻴﻜﻮنﺳﻌﺮ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻛ‬
‫ﺒﺎرﻳﻦ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻻ ت ‪،‬ﺳﻴ‬
‫ﺘ‬‫ﺒﺮ ﻣﻦ ‪17‬إﱃ ﻓﺸﻞ أول اﺧ‬
‫ﻗﺪﻳﺆدي أي ﻋﻤﺮ أﻛ‬
‫ﺒﻮل ‪10‬دوﻻرا ت‪.‬‬
‫اﻟﻘ‬

‫ﺘﻠ ﺔ ‪if-elif-else ،‬‬ ‫ﺑﺪﻻ ً ﻣﻦ ﻃ‬


‫ﺒﺎﻋ ﺔﺳﻌﺮ اﻟﺪﺧﻮل داﺧﻞ ﻛ‬
‫ﺘﻢ‬
‫ﺑ ﺴﻴﻂﻳ‬‫ﺒﺎﻋ ﺔ‬
‫ﺑﻴﺎن ﻃ‬‫ﺛﻢ اﻟﺤﺼﻮل ﻋﲆ‬‫ﺜﺮ إﻳﺠﺎ ًزاﺗﺤﺪﻳﺪ اﻟ ﺴﻌﺮ ﻓﻘﻂ داﺧﻞﺳﻠ ﺴﻠ ﺔ ‪if-elif-else‬وﻣﻦ‬
‫ﺳﻴﻜﻮن ﻣﻦ اﻷﻛ‬
‫ﺑﻌﺪﺗﻘﻴﻴﻢ اﻟ ﺴﻠ ﺴﻠ ﺔ‪:‬‬‫ﺗﺸﻐﻴﻠﻪ‬

‫اﻟﻌﻤﺮ ‪= 12‬‬

‫إذا ﻛﺎن اﻟﻌﻤﺮ ‪<4:‬‬


‫ﺳﻌﺮ ‪u = 0‬‬
‫ﻋﺎﻣﺎ‪:‬‬
‫ﻋﻤﺮ إﻟﻴﻒ أﻗﻞ ﻣﻦ ‪ً 18‬‬
‫‪v‬اﻟ ﺴﻌﺮ ‪= 5‬‬
‫آﺧﺮ‪:‬‬

‫ﺳﻌﺮ ‪w = 10‬‬

‫ﺗﻜﻠﻔ ﺔ اﻟﺪﺧﻮل ﻫ ﻲ ‪)$" + str‬اﻟ ﺴﻌﺮ( )"‪+ ".‬‬


‫‪")x print‬‬

‫ﺑﻌﺪﺗﺤﺪﻳﺪ اﻟ ﺴﻌﺮ ﻣﻦ ﺧﻼل‬‫ﺑﻖ‪.‬‬ ‫ﺗﺤﺪد اﻟﺨﻄﻮط ﻓ ﻲ ‪u‬و ‪v‬و ‪w‬ﻗﻴﻤ ﺔ اﻟ ﺴﻌﺮ وﻓ ًﻘﺎ ﻟﻌﻤﺮ اﻟﺸﺨﺺ ‪ ،‬ﻛﻤﺎ ﻓ ﻲ اﻟﻤ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺒﻮل‬
‫ﺒﻠﻎ ﻋﻦﺳﻌﺮ ﻗ‬
‫ﻫﺬه اﻟﻘﻴﻤ ﺔ ﻟﻌﺮض ‪mes sage‬ﻳ‬ ‫ﺒﻮق‬
‫ﺒﺎﻋ ﺔ ﻣﻨﻔﺼﻞ ﻏﻴﺮ ﻣ ﺴ‬
‫ﺑﻴﺎن ﻃ‬‫ﺘﺨﺪم‬
‫ﺳﻠ ﺴﻠ ﺔ ‪if-elif-else ،‬ﻳ ﺴ‬
‫اﻟﺸﺨﺺ‪.‬‬

‫ﺑﺪﻻ ً ﻣﻦﺗﺤﺪﻳﺪ‬‫ﺑﻖ ‪ ،‬ﻟﻜﻦ اﻟﻐﺮض ﻣﻦﺳﻠ ﺴﻠ ﺔ ‪if-elif-else‬أﺿﻴﻖ‪.‬‬


‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺜﻞ اﻟﻤ‬
‫ﺘﺞ ﻫﺬا اﻟﺮﻣﺰ ﻧﻔ ﺲ اﻹﺧﺮاج ﻣ‬
‫ﻳﻨ‬
‫ﺒ ﺴﺎﻃ ﺔ‪.‬‬
‫ﺑ‬‫اﻟ ﺴﻌﺮ وﻋﺮض رﺳﺎﻟ ﺔ ‪ ،‬ﻓﺈﻧﻪﻳﺤﺪدﺳﻌﺮ اﻟﺪﺧﻮل‬

‫ﺘﻐﻴﻴﺮ ﻧﺺ رﺳﺎﻟ ﺔ اﻹﺧﺮاج ‪،‬‬


‫ﺘﻌﺪﻳﻞ ﻣﻦ اﻷﺳﻠﻮ ب اﻷﺻﻠ ﻲ‪ .‬ﻟ‬
‫ﺜﺮ ﻛﻔﺎءة ‪ ،‬ﻓﺈن ﻫﺬا اﻟﻜﻮد اﻟﻤﻌﺪل أﺳﻬﻞ ﻓ ﻲ اﻟ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ﻛﻮﻧﻬﺎ أﻛ‬
‫ﺒﺎﻋ ﺔ ﻣﻨﻔﺼﻠ ﺔ ‪.‬‬
‫ﺒﺎرا ت ﻃ‬
‫ﺛﻼ ث ﻋ‬‫ﺑﺪﻻ ً ﻣﻦ‬‫ﺒﺎﻋ ﺔ واﺣﺪة ﻓﻘﻂ‬
‫ﺒﺎرة ﻃ‬
‫ﺘﺎج إﱃﺗﻐﻴﻴﺮ ﻋ‬
‫ﺘﺤ‬‫ﺳ‬

‫ﺒﺎرا ت‬
‫‪85-‬إذا ﻛﺎﻧ ﺖ اﻟﻌ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻌﺪدة‬
‫ﺘﻞ ‪elif‬اﻟﻤ‬
‫ﺘﺨﺪام ﻛ‬
‫اﺳ‬

‫ﺜﺎل ‪ ،‬إذا ﻛﺎﻧ ﺖ ﻣﺪﻳﻨ ﺔ‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻚ ﻛﻤﺎﺗﺮﻳﺪ‪ .‬ﻋﲆﺳ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻞ ‪elif‬ﻓ ﻲ اﻟ‬
‫ﺘﺨﺪام اﻟﻌﺪﻳﺪ ﻣﻦ ﻛ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﻔﺎد‬
‫ﺘﺤﺪﻳﺪ ﻣﺎ إذا ﻛﺎن ﺷﺨﺺ ﻣﺎ ﻗﺪ اﺳ‬
‫ﺒﺎر ﺷﺮﻃ ﻲ آﺧﺮ إﱃ اﻟﻜﻮد ﻟ‬
‫ﺘ‬‫ﺒﺎر اﻟ ﺴﻦ ‪ ،‬ﻓﻴﻤﻜﻨﻚ إﺿﺎﻓ ﺔ اﺧ‬
‫ﺧﺼﻤﺎ ﻟﻜ‬
‫ً‬ ‫ﺘﻨﻔﺬ‬
‫اﻟﻤﻼ ﻫ ﻲﺳ‬
‫ﺘﺎد ‪ ،‬أو ‪5‬دوﻻرا ت‪:‬‬
‫ﺒﻮل اﻟﻤﻌ‬
‫ﺜﺮﻳﺪﻓﻊ ﻧﺼﻒ اﻟﻘ‬
‫ﻋﺎﻣﺎ أو أﻛ‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ‪ً 65‬‬
‫ﺘﺮض أن أي ﺷﺨﺺﻳ‬
‫ﺒﻴﺮ‪ .‬ﻟﻨﻔ‬
‫ﻣﻦ ﺧﺼﻢ ﻛ‬

‫اﻟﻌﻤﺮ ‪= 12‬‬

‫إذا ﻛﺎن اﻟﻌﻤﺮ ‪<4:‬‬


‫اﻟ ﺴﻌﺮ ‪= 0‬‬
‫ﻋﺎﻣﺎ‪:‬‬
‫ﻋﻤﺮ إﻟﻴﻒ أﻗﻞ ﻣﻦ ‪ً 18‬‬
‫اﻟ ﺴﻌﺮ ‪= 5‬‬
‫ﻋﻤﺮك أﻗﻞ ﻣﻦ ‪65‬ﺳﻨ ﺔ‪:‬‬
‫اﻟ ﺴﻌﺮ ‪= 10‬‬
‫‪v‬آﺧﺮ‪:‬‬

‫اﻟ ﺴﻌﺮ ‪= 5‬‬

‫ﺗﻜﻠﻔ ﺔ دﺧﻮﻟﻚ ‪)$" + str‬اﻟ ﺴﻌﺮ( )"‪+ ".‬‬


‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬

‫ﺜﺎﻧﻴ ﺔ ﻋﻨﺪ ‪u‬اﻵن‬


‫ﺘﻠ ﺔ ‪elif‬اﻟ‬
‫ﺘﻐﻴﺮ‪.‬ﺗﺤﻘﻖ ﻛ‬
‫ﻣﻌﻈﻢ ﻫﺬا اﻟﺮﻣﺰ ﻟﻢﻳ‬
‫ﺒﻮل اﻟﻜﺎﻣﻞ ﻟﻪ و ﻫﻮ ‪10‬دوﻻرا ت‪ .‬ﻻﺣﻆ أن اﻟﻘﻴﻤ ﺔ‬
‫ﺒﻞﺗﻌﻴﻴﻦ ﻣﻌﺪل اﻟﻘ‬
‫ﻋﺎﻣﺎ ﻗ‬
‫ﺘﺄﻛﺪ ﻣﻦ أن ﻋﻤﺮ اﻟﺸﺨﺺ أﻗﻞ ﻣﻦ ‪ً 65‬‬
‫ﻟﻠ‬
‫ﺘﻠ ﺔ ‪else‬ﻓ ﻲ ‪v‬‬
‫اﻟﻤﻌﻴﻨ ﺔ ﻓ ﻲ ﻛ‬
‫ﺒﻠﻐﻮن ﻣﻦ‬
‫ﺘ ﻲﺗﺼﻞ إﱃ ﻫﺬه اﻟﻤﺠﻤﻮﻋ ﺔ ﻫﻢ اﻷﺷﺨﺎص اﻟﺬﻳﻦﻳ‬
‫ﻳﺠ ﺐﺗﻐﻴﻴﺮه إﱃ ‪5‬دوﻻرا ت ‪،‬ﻷن اﻷﻋﻤﺎر اﻟﻮﺣﻴﺪة اﻟ‬
‫ﺒﺮ‪.‬‬
‫ﻋﺎﻣﺎ أو أﻛ‬
‫اﻟﻌﻤﺮ ‪ً 65‬‬

‫ﺑﻠﻮك‬‫ﺣﺬف آﺧﺮ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن‬‫ﺘﻠ ﺔ اﻷﺧﺮى ﻣﻔﻴﺪة ؛ ﻓ ﻲ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﺗﻜﻮن اﻟﻜ‬‫ﺘﻠ ﺔ أﺧﺮى ﻓ ﻲ ﻧﻬﺎﻳ ﺔﺳﻠ ﺴﻠ ﺔ ‪if-elif .‬ﻓ ﻲ‬
‫ﺘﻄﻠ ﺐ ‪Python‬ﻛ‬
‫ﻻﺗ‬
‫ﺘﻘﻂ اﻟﺸﺮط اﻟﻤﺤﺪد ﻟﻠﻔﺎﺋﺪة‪:‬‬
‫ﺒﺎرة ‪elif‬إﺿﺎﻓﻴ ﺔﺗﻠ‬
‫ﺘﺨﺪام ﻋ‬
‫ﻳﻜﻮن ﻣﻦ اﻟﻮاﺿﺢ اﺳ‬

‫اﻟﻌﻤﺮ ‪= 12‬‬

‫إذا ﻛﺎن اﻟﻌﻤﺮ ‪<4:‬‬


‫اﻟ ﺴﻌﺮ ‪= 0‬‬
‫ﻋﺎﻣﺎ‪:‬‬
‫ﻋﻤﺮ إﻟﻴﻒ أﻗﻞ ﻣﻦ ‪ً 18‬‬
‫اﻟ ﺴﻌﺮ ‪= 5‬‬
‫ﻋﺎﻣﺎ‪:‬‬
‫ﻋﻤﺮ إﻟﻴﻒ أﻗﻞ ﻣﻦ ‪ً 65‬‬
‫اﻟ ﺴﻌﺮ ‪= 10‬‬
‫ﺳﻦ اﻟﻴﻒ< ‪= 65:‬‬
‫اﻟ ﺴﻌﺮ ‪= 5‬‬

‫ﺗﻜﻠﻔ ﺔ دﺧﻮﻟﻚ ‪)$" + str‬اﻟ ﺴﻌﺮ( )"‪+ ".‬‬


‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬

‫ﺘﻠ ﺔ ‪elif‬اﻹﺿﺎﻓﻴ ﺔ ﻋﻨﺪ ‪u‬ﺳﻌ ﺮًا ﻗﺪره ‪5‬دوﻻرا ت أﻣﺮﻳﻜﻴ ﺔ ﻋﻨﺪﻣﺎﻳﻜﻮن اﻟﺸﺨﺺ ‪65‬أو‬
‫ﺗﺤﺪد ﻛ‬
‫ﺒﺎ ًرا ﻣﻌﻴﻨًﺎ‬
‫ﺘ‬‫ﺘﻠ ﺔ ﻣﻦ اﻟﻜﻮد اﺧ‬
‫ﺘﺎز ﻛﻞ ﻛ‬
‫ﺘﻐﻴﻴﺮ ‪،‬ﻳﺠ ﺐ أنﺗﺠ‬ ‫أﻗﺪم ‪ ،‬و ﻫ ﻲ أوﺿﺢ ﻗﻠﻴ ﻼ ً ﻣﻦ ﻛ‬
‫ﺘﻠ ﺔ اﻟﻌﻨﺎﺻﺮ اﻟﻌﺎﻣ ﺔ ‪ .‬ﻣﻊ ﻫﺬا اﻟ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ‪.‬‬
‫ﺘﻰﻳ‬
‫ﺣ‬

‫‪86‬اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻀﻤﻦ ذﻟﻚ‬
‫ﺒﺎر ‪if‬أو ‪elif‬ﻣﺤﺪد ‪ ،‬وﻳﻤﻜﻦ أنﻳ‬
‫ﺘ‬‫ﺑﻘﻪ اﺧ‬
‫ﺑﻖ ﻣﻊ أي ﺷﺮط ﻟﻢﻳﻄﺎ‬
‫ﺘﻄﺎ‬
‫ﺑﻴﺎن ﺷﺎﻣﻞ‪ .‬إﻧﻪﻳ‬‫ﺒﺎرة ﻋﻦ‬
‫ﺘﻠ ﺔ ‪else‬ﻋ‬
‫ﻛ‬
‫ﺘﻠ ﺔ ‪elif‬ﻧﻬﺎﺋﻴ ﺔ‬
‫ﺘﺨﺪام ﻛ‬
‫ﺒﺮ ﻫﺎ ‪ ،‬ﻓﻔﻜﺮ ﻓ ﻲ اﺳ‬
‫ﺘ‬‫ﺘﻰ ﺿﺎرة‪ .‬إذا ﻛﺎن ﻟﺪﻳﻚ ﺣﺎﻟ ﺔ ﻧﻬﺎﺋﻴ ﺔ ﻣﺤﺪدةﺗﺨ‬
‫ﺑﻴﺎﻧﺎ ت ﻏﻴﺮ ﺻﺎﻟﺤ ﺔ أو ﺣ‬‫أﺣﻴﺎﻧًﺎ‬
‫ﺘﻌﻤﻞ ﻓﻘﻂ ﻓ ﻲ ﻇﻞ‬
‫ﺑﻚﺳ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺒﺮ ﻓ ﻲ أن اﻟ‬
‫ﺛﻘ ﺔ أﻛ‬‫ﺘﺴ ﺐ‬
‫ﺘﻜ‬‫ﺘﻴﺠ ﺔ ﻟﺬﻟﻚ ‪،‬ﺳ‬
‫ﺘﻠ ﺔ ‪else .‬ﻧ‬
‫ﺗﺠﺎ ﻫﻞ ﻛ‬
‫و‬
‫اﻟﻈﺮوف اﻟﺼﺤﻴﺤ ﺔ‪.‬‬

‫ﺘﻌﺪدة‬
‫ﺒﺎر اﻟﺸﺮوط اﻟﻤ‬
‫ﺘ‬‫اﺧ‬
‫ﺑﻤﺠﺮد أنﺗﺠﺪ‬‫ﺒﺎر واﺣﺪ ﻟﻠﻨﺠﺎح‪.‬‬
‫ﺘ‬‫ﺘﺎج ﻓﻘﻂ إﱃ اﺧ‬
‫ﺘﺨﺪام ﻓﻘﻂ ﻋﻨﺪﻣﺎﺗﺤ‬
‫ﺒ ﺔ ﻟﻼﺳ‬
‫ﺒﺮﺳﻠ ﺴﻠ ﺔ ‪if-elif-else‬ﻗﻮﻳ ﺔ ‪ ،‬ﻟﻜﻨﻬﺎ ﻣﻨﺎﺳ‬
‫ﺘ‬‫ﺗﻌ‬
‫ﺒﺎر ﺣﺎﻟ ﺔ ﻣﻌﻴﻨ ﺔ‪.‬‬
‫ﺘ‬‫ﺑﺎﺧ‬‫ﺒﺎرا ت‪ .‬ﻫﺬا اﻟ ﺴﻠﻮك ﻣﻔﻴﺪ ‪،‬ﻷﻧﻪ ﻓﻌﺎل وﻳ ﺴﻤﺢ ﻟﻚ‬
‫ﺘ‬‫ﺑﻘﻴ ﺔ اﻻﺧ‬‫ﺘﺨﻄﻰ‬
‫ﺒﺎ ًرا واﺣﺪًا ﻧﺠﺢ ‪ ،‬ﻓﺈﻧﻬﺎﺗ‬
‫ﺘ‬‫‪Python‬اﺧ‬

‫ﺘﺨﺪام‬
‫ﺘﻤﺎم‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﻳﺠ ﺐ ﻋﻠﻴﻚ اﺳ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺟﻤﻴﻊ ﺷﺮوط اﻻ ﻫ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن اﻟ‬‫وﻣﻊ ذﻟﻚ ‪ ،‬ﻣﻦ اﻟﻤﻬﻢ ﻓ ﻲ‬
‫ﺜﺮ ﻣﻦ ﺷﺮط واﺣﺪ‬
‫ﺘﻞ ‪elif‬أو ‪else .‬ﻳﻜﻮن ﻫﺬا اﻷﺳﻠﻮ ب ﻣﻨﻄﻘ ًﻴﺎ ﻋﻨﺪﻣﺎﻳﻜﻮن أﻛ‬
‫ﺑﺪون ﻛ‬‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﺎرا ت ‪if‬اﻟ‬
‫ﺳﻠ ﺴﻠ ﺔ ﻣﻦ ﻋ‬
‫ﺘﺼﺮف وﻓ ًﻘﺎ ﻟﻜﻞ ﺣﺎﻟ ﺔ ﺻﺤﻴﺤ ﺔ‪.‬‬
‫ﺗﺮﻳﺪ اﻟ‬
‫ﺻﺤﻴﺤًﺎ ‪ ،‬و‬

‫ﺒ ﺔ اﻷوﱃ‬
‫ﺗ‬‫ﺘﻞ اﻟﻤﺮ‬
‫ﺛﻨﻴﻦﺗﺤ‬
‫ﺘﺰا‪ .‬إذا ﻃﻠ ﺐ ﺷﺨﺺ ﻣﺎ ا‬
‫ﺒﻴ‬‫ﺜﺎل ﻣﻄﻌﻢ اﻟ‬
‫دﻋﻮﻧﺎ ﻧﻌﻴﺪ اﻟﻨﻈﺮ ﻓ ﻲ ﻣ‬
‫ﺑﻬﻢ‪:‬‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﺎ اﻹﺿﺎﻓﺎ ت ﻋﲆ اﻟ‬
‫ﺘﺄﻛﺪ ﻣﻦﺗﻀﻤﻴﻦ ﻛﻠ‬
‫ﺘﺎج إﱃ اﻟ‬
‫ﺘﺤ‬‫ﺘﺰا ‪،‬ﺳ‬
‫ﺒﻴ‬‫اﻟ‬

‫]'‪toppings.py u request_toppings = ['mushrooms'، 'extra cheese‬‬

‫ﺑ ﺔ‪:‬‬
‫‪v‬إذا ﻛﺎﻧ ﺖ "اﻟﻔﻄﺮ" ﻓ ﻲ اﻟﻀﺨﺎﻣ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﺒﺎﻋ ﺔ )"إﺿﺎﻓ ﺔ اﻟﻔﻄﺮ‪(".‬‬‫ﻃ‬
‫ﺑ ﺔ‪:‬‬
‫ﺒﺮوﻧ ﻲ" ﻓ ﻲ اﻹﺿﺎﻓﺎ ت اﻟﻤﻄﻠﻮ‬ ‫ﺑﻴ‬‫إذا ﻛﺎﻧ ﺖ ﻛﻠﻤ ﺔ "‬
‫)"‪print ("Adding pepperoni.‬‬
‫ﺑ ﺔ‪:‬‬
‫ﺒﻦ اﻹﺿﺎﻓ ﻲ" ﻓ ﻲ اﻹﺿﺎﻓﺎ ت اﻟﻤﻄﻠﻮ‬ ‫‪x‬إذا ﻛﺎن "اﻟﺠ‬
‫ﺒﻦ‪(".‬‬ ‫ﺒﺎﻋ ﺔ )"إﺿﺎﻓ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺠ‬‫ﻃ‬

‫ﺑﻚ!"(‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻬﺎء ﻣﻦ ﺻﻨﻊ اﻟ‬
‫ﺗﻢ اﻻﻧ‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬‬
‫ﻃ‬

‫ﺑ ﺔ‪ .‬إذا _‬
‫ﺒﻘ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﺘﻮي ﻋﲆ اﻟﻄ‬
‫ﺑﻘﺎﺋﻤ ﺔﺗﺤ‬
‫ﺒﺪأ ﻣﻦ ‪u‬‬
‫ﻧ‬
‫ﺘﻢ‬
‫ﺘ‬‫ﺑﻪ‪ .‬إذا ﻛﺎن اﻷﻣﺮ ﻛﺬﻟﻚ ‪ ،‬ﻓ ﺴ‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﺤﻘﻖ ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن اﻟﺸﺨﺺ ﻗﺪ ﻃﻠ ﺐ ﻋﻴ ﺶ اﻟﻐﺮا ب ﻋﲆ اﻟ‬
‫ﺒﻴﺎن ﻓ ﻲ ‪v‬ﻳ‬
‫اﻟ‬
‫ﺑ ﺴﻴﻄ ﺔ ‪ ،‬وﻟﻴ ﺲ ‪elif‬أو ﻏﻴﺮ ذﻟﻚ‬‫ﺒﺎرة أﺧﺮى‬
‫ﺒﺮوﻧ ﻲ ﻓ ﻲ ‪ w‬ﻫﻮ ﻋ‬
‫ﺒﻴ‬‫ﺒﺎر اﻟ‬
‫ﺘ‬‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔﺗﺆﻛﺪ ذﻟﻚ‪ .‬اﺧ‬
‫ﻃ‬

‫ﺘﺤﻘﻖ اﻟﻜﻮد ﻓ ﻲ ‪x‬ﻣﻤﺎ إذا‬


‫ﺑﻖ ﻗﺪ ﻧﺠﺢ أم ﻻ‪.‬ﻳ‬
‫ﺒﺎر اﻟ ﺴﺎ‬
‫ﺘ‬‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻤﺎ إذا ﻛﺎن اﻻﺧ‬‫ﺒﺎر‬
‫ﺘ‬‫ﺘﻢﺗﺸﻐﻴﻞ ﻫﺬا اﻻﺧ‬
‫ﺒﻴﺎن ‪ ،‬ﻟﺬﻟﻚﻳ‬
‫اﻟ‬
‫ﺘﻘﻠ ﺔ ﻓ ﻲ‬
‫ﺛ ﺔ اﻟﻤ ﺴ‬
‫ﺜﻼ‬‫ﺒﺎرا ت اﻟ‬
‫ﺘ‬‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺬه اﻻﺧ‬
‫ﺒﺎرﻳﻦ اﻷوﻟﻴﻦ‪.‬ﻳ‬
‫ﺘ‬‫ﺘﺎﺋﺞ ﻣﻦ اﻻﺧ‬
‫ﺒﻦ إﺿﺎﻓ ﻲ ﻣﻊ ﻣﺮاﻋﺎة أﻗﻞ ﻟﻠﻨ‬
‫ﻛﺎن ﻗﺪﺗﻢ ﻃﻠ ﺐ ﺟ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺘﻢ ﻓﻴﻬﺎﺗﺸﻐﻴﻞ ﻫﺬا اﻟ‬
‫ﻛﻞ ﻣﺮةﻳ‬

‫ﺘﺰا‪:‬‬
‫ﺒﻴ‬‫ﺒﻦ اﻹﺿﺎﻓ ﻲ إﱃ اﻟ‬
‫ﺘﻢ إﺿﺎﻓ ﺔ ﻛﻞ ﻣﻦ اﻟﻔﻄﺮ واﻟﺠ‬
‫ﺜﺎل ‪،‬ﺗ‬
‫ﺘﻢﺗﻘﻴﻴﻢ ﻛﻞ ﺣﺎﻟ ﺔ ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﻧﻈ ًﺮاﻷﻧﻪﻳ‬

‫إﺿﺎﻓ ﺔ اﻟﻔﻄﺮ‪.‬‬
‫ﺒﻦ‪.‬‬
‫إﺿﺎﻓ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺠ‬

‫ﺑﻚ!‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻬﻴﻨﺎ ﻣﻦ ﺻﻨﻊ اﻟ‬
‫اﻧ‬

‫ﺒﻴﺎﻧﺎ ت ‪87‬‬
‫إذا اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎر‬
‫ﺘ‬‫ﺘﻴﺎز اﺧ‬
‫ﺑﻌﺪ اﺟ‬‫ﺘﻮﻗﻒ ﻋﻦ اﻟﻌﻤﻞ‬
‫ﺘﻠ ﺔ ‪if-elif-else ،‬ﻷن اﻟﻜﻮدﺳﻴ‬
‫ﺘﺨﺪﻣﻨﺎ ﻛ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ إذا اﺳ‬‫ﻟﻦﻳﻌﻤﻞ ﻫﺬا اﻟﺮﻣﺰ‬
‫ﺒﺪو ﻋﻠﻴﻪ ذﻟﻚ‪:‬‬
‫واﺣﺪ ﻓﻘﻂ‪ .‬إﻟﻴﻚ ﻣﺎﺳﻴ‬

‫]'‪request_toppings = ['mushrooms'، 'extra cheese‬‬

‫إذا ﻛﺎن "اﻟﻔﻄﺮ" ﻓ ﻲ اﻟﻄﻌﺎم اﻟﻤﻄﻠﻮ ب‪:‬‬


‫ﺒﺎﻋ ﺔ )"إﺿﺎﻓ ﺔ اﻟﻔﻄﺮ‪(".‬‬
‫ﻃ‬
‫ﺑ ﺔ‪:‬‬
‫ﺒﺮوﻧ ﻲ' ﻓ ﻲ اﻟﻀﺨﺎﻣ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﺑﻴ‬‫أﻟﻴﻒ '‬
‫)"‪print ("Adding pepperoni.‬‬
‫ﺑ ﺔ‪:‬‬
‫ﺒﻨ ﺔ إﺿﺎﻓﻴ ﺔ" ﻓ ﻲ اﻹﺿﺎﻓﺎ ت اﻟﻤﻄﻠﻮ‬
‫أﻟﻴﻒ "ﺟ‬
‫ﺒﻦ‪(".‬‬
‫ﺒﺎﻋ ﺔ )"إﺿﺎﻓ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺠ‬
‫ﻃ‬

‫ﺑﻚ!"(‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻬﺎء ﻣﻦ ﺻﻨﻊ اﻟ‬
‫ﺗﻢ اﻻﻧ‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬‬
‫ﻃ‬

‫ُﻀﺎف ﻋﻴ ﺶ اﻟﻐﺮا ب‬
‫ﺘﻴﺎزه ‪ ،‬ﻟﺬﻟﻚﻳ‬
‫ﺘﻢ اﺟ‬
‫ﺒﺎرﻳ‬
‫ﺘ‬‫ﺒﺎر "اﻟﻔﻄﺮ" ﻫﻮ أول اﺧ‬
‫ﺘ‬‫اﺧ‬
‫ﺘﺠﺎوز‬
‫ﺒﺎرا تﺗ‬
‫ﺘ‬‫ﺜﻮن ﻻﺗﺠﺮي أي اﺧ‬
‫ﺑﺎﻳ‬‫ﺑﺪًا ‪،‬ﻷن‬
‫ﺒﺮوﻧ ﻲ" أ‬
‫ﺒﻴ‬‫ﺒﻦ اﻹﺿﺎﻓ ﻲ" و "اﻟ‬
‫ﺘﻢ ﻓﺤﺺ ﻗﻴﻢ "اﻟﺠ‬
‫ﺘﺰا‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻻﻳ‬
‫ﺒﻴ‬‫ﻟﻠ‬
‫ﺘﻢﺗﻔﻮﻳ ﺖ ﺟﻤﻴﻊ‬
‫ﺒﻘ ﺔ اﻷوﱃ ﻟﻠﻌﻤﻴﻞ ‪ ،‬وﻟﻜﻦﺳﻴ‬
‫ﺘﻢ إﺿﺎﻓ ﺔ اﻟﻄ‬
‫ﺘ‬‫ﺒﺎر اﻷول اﻟﺬيﻳﻤﺮ ﻓ ﻲﺳﻠ ﺴﻠ ﺔ ‪if-elif-else .‬ﺳ‬
‫ﺘ‬‫اﻻﺧ‬
‫اﻹﺿﺎﻓﺎ ت اﻷﺧﺮى‪:‬‬

‫إﺿﺎﻓ ﺔ اﻟﻔﻄﺮ‪.‬‬

‫ﺑﻚ!‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻬﻴﻨﺎ ﻣﻦ ﺻﻨﻊ اﻟ‬
‫اﻧ‬

‫ﺘﺨﺪم ‪if-elif‬‬
‫ﺒﺮﻣﺠﻴ ﺔ ‪ ،‬ﻓﺎﺳ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻠ ﺔ واﺣﺪة ﻓﻘﻂ ﻣﻦ اﻟ‬
‫ﺘﺼﺎر ‪ ،‬إذا ﻛﻨ ﺖﺗﺮﻳﺪﺗﺸﻐﻴﻞ ﻛ‬
‫ﺑﺎﺧ‬
‫ﺒﺎرا ت ‪if‬‬
‫ﺘﺨﺪمﺳﻠ ﺴﻠ ﺔ ﻣﻦ ﻋ‬
‫ﺒﺮﻣﺠﻴ ﺔ ‪ ،‬ﻓﺎﺳ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻠ ﺔ واﺣﺪة ﻣﻦ اﻟ‬
‫ﺜﺮ ﻣﻦ ﻛ‬
‫ﺳﻠ ﺴﻠ ﺔ أﺧﺮى ‪ .‬إذا ﻛﺎنﻳﻠﺰمﺗﺸﻐﻴﻞ أﻛ‬
‫ﺘﻘﻠ ﺔ ‪.‬‬
‫اﻟﻤ ﺴ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻐﻴ ﺮًاﻳ ﺴﻤﻰ ‪alien_color‬‬


‫ﺘﻮ ﻓ ﻲ إﺣﺪى اﻷﻟﻌﺎ ب‪ .‬أﻧﺸ ﺊ ﻣ‬
‫ﺗﺨﻴﻞ أن ﻛﺎﺋﻨًﺎ ﻓﻀﺎﺋ ًﻴﺎﺗﻢ إﺳﻘﺎﻃﻪ ﻟﻠ‬
‫‪5-3. Alien Colors # 1:‬‬
‫ّﻴ ﻦ ﻟﻪ ﻗﻴﻤ ﺔ "أﺧﻀﺮ" أو "أﺻﻔﺮ" أو "أﺣﻤﺮ"‪.‬‬
‫وﻋ‬

‫ﺒﻊ رﺳﺎﻟ ﺔ ﻣﻔﺎد ﻫﺎ أن اﻟﻼﻋ ﺐ ﻗﺪ ﺣﺼﻞ‬


‫ﺒﺎر ﻣﺎ إذا ﻛﺎن ﻟﻮن اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ أﺧﻀﺮ‪ .‬إذا ﻛﺎن اﻷﻣﺮ ﻛﺬﻟﻚ ‪ ،‬اﻃ‬
‫ﺘ‬‫ﺒﺎرة ‪if‬ﻻﺧ‬
‫ﺘﺐ ﻋ‬
‫•اﻛ‬
‫ﺘﻮ ﻋﲆ ‪5‬ﻧﻘﺎط‪.‬‬
‫ﻟﻠ‬

‫ﺒﺎر ‪if‬وأﺧﺮىﺗﻔﺸﻞ‪) .‬ﻟﻦﻳﻜﻮن ﻟﻺﺻﺪار اﻟﺬيﻳﻔﺸﻞ أي ﻣﺨﺮﺟﺎ ت‪(.‬‬


‫ﺘ‬‫ﺘﺎز اﺧ‬
‫ﺒﺮﻧﺎﻣﺞﺗﺠ‬
‫ﺘ ﺐ ﻧ ﺴﺨ ﺔ واﺣﺪة ﻣﻦ ﻫﺬا اﻟ‬
‫•اﻛ‬

‫ﺘ ﺐﺳﻠ ﺴﻠ ﺔ ‪if-else .‬‬ ‫ﺘﺮ ﻟﻮﻧًﺎ ﻟﻜﺎﺋﻦ ﻓﻀﺎﺋ ﻲ ﻛﻤﺎ ﻓﻌﻠ ﺖ ﻓ ﻲ اﻟ‬
‫ﺘﻤﺮﻳﻦ ‪5-3 ،‬واﻛ‬ ‫‪5-4. Alien Colors # 2:‬اﺧ‬

‫ﺘﻮ ﻋﲆ ‪5‬ﻧﻘﺎط ﻹﻃﻼﻗﻪ ﻋﲆ اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ‪.‬‬


‫ﺑﺄن اﻟﻼﻋ ﺐ ﻗﺪ ﺣﺼﻞ ﻟﻠ‬‫ﺑﻴﺎﻧًﺎﻳﻔﻴﺪ‬‫ﺒﻊ‬
‫•إذا ﻛﺎن ﻟﻮن اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ أﺧﻀﺮ ‪ ،‬اﻃ‬

‫ﺘﻮ‬
‫ﺑﻴﺎن ﺣﺼﻞ ﻋﻠﻴﻪ اﻟﻼﻋ ﺐ ﻟﻠ‬‫ﺒﺎﻋ ﺔ‬
‫ﺑﻄ‬‫•إذا ﻟﻢﻳﻜﻦ ﻟﻮن اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ أﺧﻀﺮ ‪ ،‬ﻓﻘﻢ‬
‫‪10‬ﻧﻘﺎط‪.‬‬

‫ﺘﻠ ﺔ ‪else .‬‬


‫ﺘﺸﻐﻴﻞ ﻛ‬
‫ﺑ‬‫ﺘﻠ ﺔ ‪if‬وآﺧﺮﻳﻘﻮم‬
‫ﺘﺸﻐﻴﻞ ﻛ‬
‫ﺑ‬‫ﺒﺮﻧﺎﻣﺞﻳﻘﻮم‬
‫ﺘ ﺐ إﺻﺪا ًرا واﺣﺪًا ﻣﻦ ﻫﺬا اﻟ‬
‫•اﻛ‬

‫‪88‬اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻤﺮﻳﻦ ‪5-4‬إﱃﺳﻠ ﺴﻠ ﺔ ‪if-elif else .‬‬


‫ّﻮلﺳﻠ ﺴﻠ ﺔ ‪if-else‬ﻣﻦ اﻟ‬
‫‪5-5. Alien Colors # 3:‬ﺣ‬

‫ﺑﺢ ‪5‬ﻧﻘﺎط‪.‬‬
‫ﺑﺄن اﻟﻼﻋ ﺐ ﻗﺪ ر‬‫ﺒﻊ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬
‫•إذا ﻛﺎن اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ أﺧﻀﺮ ‪ ،‬اﻃ‬

‫ﺑﺢ ‪10‬ﻧﻘﺎط‪.‬‬
‫ﺑﺄن اﻟﻼﻋ ﺐ ﻗﺪ ر‬‫ﺒﻊ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬
‫ﺒ ﻲ أﺻﻔﺮ ‪ ،‬اﻃ‬
‫•إذا ﻛﺎن اﻷﺟﻨ‬

‫ﺑﺢ ‪15‬ﻧﻘﻄ ﺔ‪.‬‬


‫ﺑﺄن اﻟﻼﻋ ﺐ ﻗﺪ ر‬‫ﺒﻊ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬
‫•إذا ﻛﺎن اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ أﺣﻤﺮ ‪ ،‬اﻃ‬

‫ﺒﺎﻋ ﺔ ﻛﻞ رﺳﺎﻟ ﺔ ﻣﻦ أﺟﻞ اﻟﻠﻮن اﻟﻐﺮﻳ ﺐ اﻟﻤﻨﺎﺳ ﺐ‪.‬‬


‫ﺘﺄﻛﺪ ﻣﻦ ﻃ‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻣﻊ اﻟ‬
‫ﺛ ﺔ إﺻﺪارا ت ﻣﻦ ﻫﺬا اﻟ‬
‫ﺛﻼ‬‫ﺘﺐ‬
‫•اﻛ‬

‫ﺘﻌﻴﻴﻦ ﻗﻴﻤ ﺔ ﻟﻠﻌﻤﺮ‬


‫ﺑ‬‫ﺘ ﻲﺗﺤﺪد ﻣﺮﺣﻠ ﺔ ﺣﻴﺎة اﻟﺸﺨﺺ‪ .‬ﻗﻢ‬
‫ﺘ ﺐﺳﻠ ﺴﻠ ﺔ ‪if-elif-else‬اﻟ‬
‫‪5-6.‬ﻣﺮاﺣﻞ اﻟﺤﻴﺎة‪ :‬اﻛ‬
‫ﺛﻢ‪:‬‬‫ﺘﻐﻴﺮ ‪،‬‬
‫اﻟﻤ‬

‫ﺑﺄن اﻟﺸﺨﺺ ﻛﺬﻟﻚ‬‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬


‫ﺑﻄ‬‫•إذا ﻛﺎن ﻋﻤﺮ اﻟﺸﺨﺺ أﻗﻞ ﻣﻦ ﻋﺎﻣﻴﻦ ‪ ،‬ﻓﻘﻢ‬
‫رﺿﻴﻊ‪.‬‬

‫ﺒﻊ رﺳﺎﻟ ﺔ ذﻟﻚ‬


‫ﺘﺎن وﻟﻜﻦ أﻗﻞ ﻣﻦ ‪4 ،‬اﻃ‬
‫•إذا ﻛﺎن ﻋﻤﺮ اﻟﺸﺨﺺ ﻋﲆ اﻷﻗﻞﺳﻨ‬
‫ً‬
‫ﻃﻔﻼ ﺻﻐﻴ ﺮًا‪.‬‬ ‫ﻛﺎن اﻟﺸﺨﺺ‬

‫ﺒﻊ رﺳﺎﻟ ﺔ ﻣﻔﺎد ﻫﺎ أن ﻫﺬا اﻟﺸﺨﺺ‬


‫•إذا ﻛﺎن ﻋﻤﺮ اﻟﺸﺨﺺ ‪4‬ﺳﻨﻮا ت ﻋﲆ اﻷﻗﻞ وﻟﻜﻨﻪ أﻗﻞ ﻣﻦ ‪13‬ﺳﻨ ﺔ ‪ ،‬اﻃ‬
‫ﻃﻔﻞ‪.‬‬

‫ﺑﺬﻟﻚ‬‫ﺒﻊ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬


‫ﻋﺎﻣﺎ ‪ ،‬اﻃ‬
‫ﻋﺎﻣﺎ ﻋﲆ اﻷﻗﻞ وﻟﻜﻨﻪ أﻗﻞ ﻣﻦ ‪ً 20‬‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ‪ً 13‬‬
‫•إذا ﻛﺎن اﻟﺸﺨﺺﻳ‬
‫ﻛﺎن اﻟﺸﺨﺺ ﻣﺮا ﻫ ًﻘﺎ‪.‬‬

‫ﺒﻊ رﺳﺎﻟ ﺔ ﻣﻔﺎد ﻫﺎ أن اﻟﺸﺨﺺ‬


‫ﻋﺎﻣﺎ ‪ ،‬اﻃ‬
‫ﻋﺎﻣﺎ ﻋﲆ اﻷﻗﻞ وﻟﻜﻨﻪ أﻗﻞ ﻣﻦ ‪ً 65‬‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ‪ً 20‬‬
‫•إذا ﻛﺎن اﻟﺸﺨﺺﻳ‬
‫ﺑﺎﻟﻎ‪.‬‬

‫ﺑﺄن اﻟﺸﺨﺺ ﻫﻮ‬‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬


‫ﺑﻄ‬‫ﺜﺮ ‪ ،‬ﻓﻘﻢ‬
‫ﻋﺎﻣﺎ أو أﻛ‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ‪ً 65‬‬
‫•إذا ﻛﺎن اﻟﺸﺨﺺﻳ‬
‫اﻟﻤ ﺴﻨﻴﻦ‪.‬‬

‫ﺘﻲ‬
‫ﺘﻘﻠ ﺔ اﻟ‬
‫ﺒﺎرا ت ‪if‬اﻟﻤ ﺴ‬
‫ﺘ ﺐﺳﻠ ﺴﻠ ﺔ ﻣﻦ ﻋ‬
‫ﺛﻢ اﻛ‬‫ﺑﺎﻟﻔﻮاﻛﻪ اﻟﻤﻔﻀﻠ ﺔ ﻟﺪﻳﻚ ‪،‬‬‫ﺘ ﺐ ﻗﺎﺋﻤ ﺔ‬
‫‪5-7.‬اﻟﻔﺎﻛﻬ ﺔ اﻟﻤﻔﻀﻠ ﺔ‪ :‬اﻛ‬
‫ﺘﻚ‪.‬‬
‫ﺒﺤ ﺚ ﻋﻦ ﻓﻮاﻛﻪ ﻣﻌﻴﻨ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ‬
‫ﺗ‬

‫ﺘﻬﺎ ﻓﻮاﻛﻪ ﻣﻔﻀﻠ ﺔ‪.‬‬


‫ﺘ ﺴﻤﻴ‬
‫ﺑ‬‫ﺜﻼ ث ﻓﻮاﻛﻪ ﻣﻔﻀﻠ ﺔ ﻟﺪﻳﻚ وﻗﻢ‬
‫ﺑ‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫•ﻗﻢ‬
‫ﺘﻚ‪.‬‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن ﻫﻨﺎك ﻧﻮع ﻣﻌﻴﻦ ﻣﻦ اﻟﻔﺎﻛﻬ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ‬
‫ﺒﺎرا ت ‪if .‬ﻳﺠ ﺐ ﻋﲆ ﻛﻞ ﻣﻨﻬﻢ اﻟ‬
‫ﺘ ﺐ ﺧﻤ ﺴ ﺔ ﻋ‬
‫•اﻛ‬

‫ﺜﻞ أﻧﻚﺗﺤ ﺐ اﻟﻤﻮز ﺣ ًﻘﺎ!‬


‫ﺒﺎرة ‪ ،‬ﻣ‬
‫ﺘﻠ ﺔ ‪if‬ﻋ‬
‫ﺒﻊ ﻛ‬
‫ﺘﻚ ‪ ،‬ﻓﻴﺠ ﺐ أنﺗﻄ‬
‫إذا ﻛﺎﻧ ﺖ اﻟﻔﺎﻛﻬ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ‬

‫ﺒﺎرا ت ‪if‬ﻣﻊ اﻟﻘﻮاﺋﻢ‬


‫ﺘﺨﺪام ﻋ‬
‫اﺳ‬
‫ﺑﻴﻦ اﻟﻘﻮاﺋﻢ وإﺷﺎرا ت اﻟﺪوﻟ ﺔ‪.‬ﻳﻤﻜﻨﻚ ﻣﺸﺎ ﻫﺪة اﻟﻘﻴﻢ اﻟﺨﺎﺻ ﺔ‬‫ﺘﻤﺎم ﻋﻨﺪﻣﺎﺗﺠﻤﻊ‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺒﻌﺾ اﻷﻋﻤﺎل اﻟﻤ‬
‫ﺑ‬‫ﻳﻤﻜﻨﻚ اﻟﻘﻴﺎم‬
‫ﺜﻞﺗﻮاﻓﺮ ﻋﻨﺎﺻﺮ‬
‫ﺑﻜﻔﺎءة ‪ ،‬ﻣ‬‫ﺘﻐﻴﺮة‬
‫ﺘﻠﻒ ﻋﻦ اﻟﻘﻴﻢ اﻷﺧﺮى ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬ﻳﻤﻜﻨﻚ إدارة اﻟﻈﺮوف اﻟﻤ‬
‫ﺑﺸﻜﻞ ﻣﺨ‬‫ﺘ ﻲﻳﺠ ﺐ أنﺗﻌﺎﻣﻞ‬
‫اﻟ‬
‫ﺘﻮﻗﻌﻪ ﻓ ﻲ‬
‫ﺑﺎﻟﺸﻜﻞ اﻟﺬيﺗ‬‫ﺑﻚﻳﻌﻤﻞ‬‫ﺒﺎ ت أن اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺛ‬‫ﺒﺪأ ﻓ ﻲ إ‬ ‫ﺑ ﺔ اﻟﻌﻤﻞ‪.‬ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ أنﺗ‬ ‫ﻣﻌﻴﻨ ﺔ ﻓ ﻲ ﻣﻄﻌﻢ ﻃﻮال ﻧﻮ‬
‫ﺟﻤﻴﻊ اﻟﻤﻮاﻗﻒ اﻟﻤﻤﻜﻨ ﺔ‪.‬‬

‫ﺒﺎرا ت ‪89‬‬
‫إذا ﻛﺎﻧ ﺖ اﻟﻌ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺤﻘﻖ ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻟﺨﺎﺻ ﺔ‬


‫اﻟ‬
‫ﺘﻠﻒ‬
‫ﺘﻨ ﺴﻴﻖ ﻣﺨ‬
‫ﺑ‬‫ﺘﻬﺎ‬
‫ﺒﺎﻋ‬
‫ﺘ ﻲﻳﻠﺰم ﻃ‬
‫ﺜﻞ ‪"bmw" ،‬واﻟ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻴﻤ ﺔ ﺧﺎﺻ ﺔ ﻣ‬
‫ﺑ ﺴﻴﻂﻳﻮﺿﺢ ﻛﻴﻔﻴ ﺔ اﻟ‬‫ﺜﺎل‬
‫ﺑﻤ‬‫ﺑﺪأ ﻫﺬا اﻟﻔﺼﻞ‬
‫ﺒﺎرا ت ‪if ،‬دﻋﻨﺎ ﻧﻠﻘ ﻲ ﻧﻈﺮة‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ وﻋ‬
‫ﺘ‬‫ﺒﺢ ﻟﺪﻳﻚ ﻓﻬﻢ أﺳﺎﺳ ﻲ ﻟﻼﺧ‬
‫ﺑﻌﺪ أن أﺻ‬‫ﻋﻦ اﻟﻘﻴﻢ اﻷﺧﺮى ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬اﻵن‬
‫ﺑﺸﻜﻞ ﻣﻨﺎﺳ ﺐ‪.‬‬‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻫﺬه اﻟﻘﻴﻢ‬
‫ﺒ ﺔ اﻟﻘﻴﻢ اﻟﺨﺎﺻ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ واﻟ‬
‫ﻓﺎﺣﺼ ﺔ ﻋﲆ ﻛﻴﻔﻴ ﺔ ﻣﺮاﻗ‬

‫ﺑﻚ‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺒﻘ ﺔ ﻋﻠﻮﻳ ﺔ إﱃ اﻟ‬
‫ﺘﺰا رﺳﺎﻟ ﺔ ﻛﻠﻤﺎﺗﻤ ﺖ إﺿﺎﻓ ﺔ ﻃ‬
‫ﺒﻴ‬‫ﺘﺰا‪.‬ﻳﻌﺮض ﻣﻄﻌﻢ اﻟ‬
‫ﺒﻴ‬‫ﺜﺎل ﻣﻄﻌﻢ اﻟ‬
‫دﻋﻨﺎ ﻧﻮاﺻﻞ ﻣ‬
‫ﺒﻬﺎ اﻟﻌﻤﻴﻞ‬
‫ﺘ ﻲ ﻃﻠ‬
‫ﺒﻘﺎ ت اﻟ‬
‫ﺑﺎﻟﻄ‬‫ﺑﻜﻔﺎءة ﻋﺎﻟﻴ ﺔ ﻣﻦ ﺧﻼل ﻋﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫ﺑﻬﺬا اﻹﺟﺮاء‬‫ﺑ ﺔ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺘﺎ‬
‫ﺛﻨﺎء إﻋﺪاد ﻫﺎ‪.‬ﻳﻤﻜﻦ ﻛ‬
‫أ‬
‫ﺘﺰا‪:‬‬
‫ﺒﻴ‬‫ﺘﻬﺎ إﱃ اﻟ‬
‫ﺒﻘ ﺔ ﻋﻨﺪ إﺿﺎﻓ‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ﻟﻺﻋﻼن ﻋﻦ ﻛﻞ ﻃ‬
‫واﺳ‬

‫‪toppings.py‬‬ ‫]'‪request_toppings = ['mushrooms'، 'green peppers'، 'extra cheese‬‬

‫ﺑ ﺔ‪:‬‬
‫ﺘ ﺴﻮﻳ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﻟﻠﻄﻠ ﺐ_اﻟ‬
‫)"‪print ("Adding" + required_topping + ".‬‬

‫ﺑﻚ!"(‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻬﺎء ﻣﻦ ﺻﻨﻊ اﻟ‬
‫ﺗﻢ اﻻﻧ‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬‬
‫ﻃ‬

‫ﺑ ﺴﻴﻄ ﺔ ‪:‬‬
‫ﺒﺎﺷﺮﻷن ﻫﺬا اﻟﺮﻣﺰ ﻫﻮ ﻣﺠﺮد ﺣﻠﻘ ﺔ ‪for‬‬
‫اﻹﺧﺮاج واﺿﺢ وﻣ‬

‫إﺿﺎﻓ ﺔ اﻟﻔﻄﺮ‪.‬‬
‫اﺿﺎﻓ ﺔ اﻟﻔﻠﻔﻞ اﻻﺧﻀﺮ‪.‬‬
‫ﺒﻦ‪.‬‬
‫إﺿﺎﻓ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺠ‬

‫ﺘﺰا!‬
‫ﺒﻴ‬‫ﺘﻬﻴﻨﺎ ﻣﻦ ﺻﻨﻊ اﻟ‬
‫اﻧ‬

‫ﺑﻴﺎن إذا _‬‫ﺘﺰا؟‬


‫ﺒﻴ‬‫وﻟﻜﻦ ﻣﺎذا ﻟﻮ ﻧﻔﺪ اﻟﻔﻠﻔﻞ اﻷﺧﻀﺮ ﻓ ﻲ ﻣﻄﻌﻢ اﻟ‬
‫ﺑﺸﻜﻞ ﻣﻨﺎﺳ ﺐ‪:‬‬‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻫﺬا اﻟﻤﻮﻗﻒ‬
‫داﺧﻞ اﻟﺤﻠﻘ ﺔ ‪for‬ﻳﻤﻜﻨﻪ اﻟ‬

‫]'‪request_toppings = ['mushrooms'، 'green peppers'، 'extra cheese‬‬

‫ﺑ ﺔ‪:‬‬
‫ﺘ ﺴﻮﻳ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﻟﻠﻄﻠ ﺐ_اﻟ‬
‫ﺘ ﺴﻮق =='ﻓﻠﻔﻞ أﺧﻀﺮ'‪:‬‬
‫ﺒ ﺖ_اﻟ‬
‫‪u‬إذا ﻃﻠ‬
‫‪")print‬ﻋﺬ ًرا ‪ ،‬ﻧﻔﺪ اﻟﻔﻠﻔﻞ اﻷﺧﻀﺮ اﻵن‪(".‬‬
‫‪v‬آﺧﺮ‪:‬‬

‫)"‪print ("Adding" + required_topping + ".‬‬

‫ﺑﻚ!"(‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻬﺎء ﻣﻦ ﺻﻨﻊ اﻟ‬
‫ﺗﻢ اﻻﻧ‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬‬
‫ﻃ‬

‫ﺘﺰا‪.‬‬
‫ﺒﻴ‬‫ﺘﻪ إﱃ اﻟ‬
‫ﺒﻞ إﺿﺎﻓ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﻛﻞ ﻋﻨﺼﺮ ﻣﻄﻠﻮ ب ﻗ‬
‫ﻫﺬه اﻟﻤﺮة ﻧ‬
‫ﺘﺤﻘﻖ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓ ﻲ ‪u‬ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن اﻟﺸﺨﺺ ﻗﺪ ﻃﻠ ﺐ اﻟﻔﻠﻔﻞ اﻷﺧﻀﺮ‪ .‬إذا ﻛﺎن اﻷﻣﺮ ﻛﺬﻟﻚ ‪ ،‬ﻓﺈﻧﻨﺎ‬
‫ﻳ‬
‫ﺒ ﺐ ﻋﺪمﺗﻤﻜﻨﻬﻢ ﻣﻦﺗﻨﺎول اﻟﻔﻠﻔﻞ اﻷﺧﻀﺮ‪.‬‬
‫ﺒﺮ ﻫﻢ ﻋﻦﺳ‬
‫ﻧﻌﺮض رﺳﺎﻟ ﺔﺗﺨ‬
‫ﺘﺰا‪.‬‬
‫ﺒﻴ‬‫ﺘﻠ ﺔ ‪else‬ﻓ ﻲ ‪v‬إﺿﺎﻓ ﺔ ﺟﻤﻴﻊ اﻹﺿﺎﻓﺎ ت اﻷﺧﺮى إﱃ اﻟ‬
‫ﺗﻀﻤﻦ ﻛ‬

‫‪90‬اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺑﺸﻜﻞ ﻣﻨﺎﺳ ﺐ‪.‬‬‫ﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‬


‫ﺘﻢ اﻟ‬
‫ﺑ ﺔﻳ‬
‫ﻳﻮﺿﺢ اﻹﺧﺮاج أن ﻛﻞ ﻗﻤ ﺔ ﻣﻄﻠﻮ‬

‫إﺿﺎﻓ ﺔ اﻟﻔﻄﺮ‪.‬‬
‫ﻋﺬرا ‪ ،‬ﻟﻘﺪ ﻧﻔﺪ اﻟﻔﻠﻔﻞ اﻷﺧﻀﺮ ﻟﺪﻳﻨﺎ اﻵن‪.‬‬
‫ﺒﻦ‪.‬‬
‫إﺿﺎﻓ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺠ‬

‫ﺑﻚ!‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻬﻴﻨﺎ ﻣﻦ ﺻﻨﻊ اﻟ‬
‫اﻧ‬

‫ﺘﺤﻘﻖ ﻣﻦ أن اﻟﻘﺎﺋﻤ ﺔ ﻟﻴ ﺴ ﺖ ﻓﺎرﻏ ﺔ‬


‫اﻟ‬
‫ﺘﻮي ﻋﲆ ﻋﻨﺼﺮ واﺣﺪ ﻋﲆ‬ ‫ﺘﺮﺿﻨﺎ أن ﻛﻞ ﻗﺎﺋﻤ ﺔﺗﺤ‬ ‫ﺘﻰ اﻵن ؛ ﻟﻘﺪ اﻓ‬ ‫ﺴﻴﻄﺎ ﺣﻮل ﻛﻞ ﻗﺎﺋﻤ ﺔ ﻋﻤﻠﻨﺎ ﻣﻌﻬﺎ ﺣ‬
‫ً‬ ‫ﺑ‬ ‫ﻟﻘﺪ وﺿﻌﻨﺎ اﻓ ً‬
‫ﺘﺮاﺿﺎ‬
‫ﺘﻮي‬
‫ﺘﺮاض أن اﻟﻘﺎﺋﻤ ﺔﺗﺤ‬
‫ﺘﻤﻜﻦ ﻣﻦ اﻓ‬ ‫ﺘﻘﺪﻳﻢ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪ ،‬ﻟﺬﻟﻚ ﻟﻦ ﻧ‬ ‫ﺑ‬‫ﺘﺨﺪﻣﻴﻦ‬ ‫ﺒﺎ ﻟﻠﻤ ﺴ‬
‫اﻷﻗﻞ‪.‬ﺳﻨ ﺴﻤﺢ ﻗﺮﻳ ً‬
‫ﺒﻞ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ﻗ‬
‫ﺘﻢ ﻓﻴﻬﺎﺗﺸﻐﻴﻞ ﺣﻠﻘ ﺔ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬ﻣﻦ اﻟﻤﻔﻴﺪ اﻟ‬
‫ﻋﲆ أي ﻋﻨﺎﺻﺮ ﻓ ﻲ ﻛﻞ ﻣﺮةﻳ‬
‫ﺗﺸﻐﻴﻞ ﺣﻠﻘ ﺔ ‪for .‬‬

‫ﺘﺰا‪ .‬إذا ﻛﺎﻧ ﺖ اﻟﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ‪،‬‬


‫ﺒﻴ‬‫ﺑﻨﺎء اﻟ‬‫ﺒﻞ‬
‫ﺑ ﺔ ﻓﺎرﻏ ﺔ ﻗ‬
‫ﺒﻘ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ ﻗﺎﺋﻤ ﺔ اﻟﻄ‬
‫ﺜﺎل ‪ ،‬دﻋﻨﺎ ﻧ‬
‫ﻛﻤ‬
‫ﺜﻠ ﺔ‬
‫ﺘﺰا ﻛﻤﺎ ﻓﻌﻠﻨﺎ ﻓ ﻲ اﻷﻣ‬
‫ﺒﻴ‬‫ﺒﻨ ﻲ اﻟ‬
‫ﺘﺰا ﻋﺎدﻳ ﺔ‪ .‬إذا ﻟﻢﺗﻜﻦ اﻟﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ‪ ،‬ﻓ ﺴﻨ‬
‫ﺑﻴ‬‫ﺘﺄﻛﺪ ﻣﻦ أﻧﻪﻳﺮﻳﺪ‬
‫ﺑﺎﻟ‬‫ﺘﺨﺪم‬
‫ﻓ ﺴﻨﻄﺎﻟ ﺐ اﻟﻤ ﺴ‬
‫ﺑﻘ ﺔ‪:‬‬
‫اﻟ ﺴﺎ‬

‫][ = ‪u request_toppings‬‬

‫ﺒﺖ‬ ‫‪v‬إذا ﻃﻠ‬


‫ﺑ ﺔ‪:‬‬
‫ﺘ ﺴﻮﻳ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﻟﻠﻄﻠ ﺐ_اﻟ‬
‫)"‪print ("Adding" + required_topping + ".‬‬
‫ﺑﻚ!"(‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻬﺎء ﻣﻦ ﺻﻨﻊ اﻟ‬
‫ﺗﻢ اﻻﻧ‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬‬
‫ﻃ‬
‫‪w‬آﺧﺮ‪:‬‬

‫ﺘﺰا ﻋﺎدﻳ ﺔ؟"(‬


‫ﺑﻴ‬‫ﺘﺄﻛﺪ أﻧﻚﺗﺮﻳﺪ‬
‫‪ ")print‬ﻫﻞ أﻧ ﺖ ﻣ‬

‫ﺑ ﺔ ﻓ ﻲ ‪u.‬‬
‫ﺑﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ﻣﻦ اﻹﺿﺎﻓﺎ ت اﻟﻤﻄﻠﻮ‬‫ﺒﺪأ‬
‫ﻫﺬه اﻟﻤﺮة ﻧ‬
‫ﺗﺮﺟﻊ ‪True‬‬
‫ﺒﺎرة ‪if ،‬‬
‫ﺘﺨﺪام اﺳﻢ ﻗﺎﺋﻤ ﺔ ﻓ ﻲ ﻋ‬
‫ﺘﻢ اﺳ‬
‫ﺑﻔﺤﺺﺳﺮﻳﻊ ﻋﻨﺪ ‪v.‬ﻋﻨﺪﻣﺎﻳ‬ ‫ﺑﺪﻻ ً ﻣﻦ اﻟﻘﻔﺰ ﻣ‬
‫ﺒﺎﺷﺮة إﱃ ﺣﻠﻘ ﺔ ‪for ،‬ﻧﻘﻮم‬
‫ﺒﺖ‬
‫ﺘﻢﺗﻘﻴﻴﻢ اﻟﻘﺎﺋﻤ ﺔ اﻟﻔﺎرﻏ ﺔ إﱃ ‪False.‬إذا ﻃﻠ‬
‫ﺘﻮي ﻋﲆ ﻋﻨﺼﺮ واﺣﺪ ﻋﲆ اﻷﻗﻞ ؛ﻳ‬
‫‪Python‬إذا ﻛﺎﻧ ﺖ اﻟﻘﺎﺋﻤ ﺔﺗﺤ‬

‫ﺒﺎر اﻟﺸﺮﻃ ﻲ ‪،‬‬


‫ﺘ‬‫ﺑﻖ‪ .‬إذا ﻓﺸﻞ اﻻﺧ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺘﺨﺪﻣﻨﺎ ﻫﺎ ﻓ ﻲ اﻟﻤ‬
‫ﺘ ﻲ اﺳ‬
‫ﺘﺸﻐﻴﻞ ﻧﻔ ﺲ ﺣﻠﻘ ﺔ ‪for‬اﻟ‬
‫ﺑ‬‫ﺒﺎر اﻟﺸﺮﻃ ﻲ ‪ ،‬وﻧﻘﻮم‬
‫ﺘ‬‫ﺘﺎز اﻻﺧ‬
‫اﺟ‬
‫ﺑﺪون إﺿﺎﻓﺎ ت‪.‬‬‫ﺘﺰا ﻋﺎدﻳ ﺔ‬
‫ﺑﻴ‬‫ﺒﻊ رﺳﺎﻟ ﺔﺗ ﺴﺄل اﻟﻌﻤﻴﻞ ﻋﻤﺎ إذا ﻛﺎنﻳﺮﻳﺪ ﺣ ًﻘﺎ‬
‫ﻓﺈﻧﻨﺎ ﻧﻄ‬

‫ﺘﺰا ﻋﺎدﻳ ﺔ‪:‬‬


‫ﺑﻴ‬‫ﺘﺨﺪمﻳﺮﻳﺪ ﺣ ًﻘﺎ‬
‫ﺗﺞ ﻋﻤﺎ إذا ﻛﺎن اﻟﻤ ﺴ‬
‫اﻟﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬ﻟﺬاﻳ ﺴﺄل اﻟﻨﺎ‬

‫ﺘﺰا ﻋﺎدﻳ ﺔ؟‬


‫ﺑﻴ‬‫ﺘﺄﻛﺪ أﻧﻚﺗﺮﻳﺪ‬
‫ﻫﻞ أﻧ ﺖ ﻣ‬

‫ﺑ ًﺎ‬
‫ﺒ ﺔ اﻷوﱃ ﻣﻄﻠﻮ‬
‫ﺗ‬‫ﺘﻞ اﻟﻤﺮ‬
‫إذا ﻟﻢﺗﻜﻦ اﻟﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ‪ ،‬ﻓ ﺴﻴﻌﺮض اﻹﺧﺮاج ﻛﻞ ﻋﻨﺼﺮﺗﺤ‬
‫ﺘﺰا‪.‬‬
‫ﺒﻴ‬‫ﺘﻪ إﱃ اﻟ‬
‫ﺘﻢ إﺿﺎﻓ‬
‫ﻳ‬

‫ﺒﻴﺎﻧﺎ ت ‪91‬‬
‫إذا اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻌﺪدة‬
‫ﺘﺨﺪام ﻗﻮاﺋﻢ ﻣ‬
‫اﺳ‬

‫ﺑﻄﺎﻃ ﺲ ﻣﻘﻠﻴ ﺔ ﻋﲆ‬‫ﺑﺎﻟﻔﻌﻞ‬‫ﺘﺰا‪ .‬ﻣﺎذا ﻟﻮ أراد اﻟﻌﻤﻴﻞ‬


‫ﺒﻴ‬‫ﺒﻘ ﺔ اﻟ‬
‫ﺑﻄ‬ ‫ﺒﺎ ‪ ،‬ﺧﺎﺻ ًﺔ ﻋﻨﺪﻣﺎﻳ‬
‫ﺘﻌﻠﻖ اﻷﻣﺮ‬ ‫ﺳﻴﻄﻠ ﺐ اﻟﻨﺎس أي ﺷ ﻲءﺗﻘﺮﻳ ً‬
‫ﺘﺼﺮف ﻋﲆ أﺳﺎﺳﻬﺎ‪.‬‬
‫ﺒﻞ اﻟ‬
‫ﺗﻚ ﻣﻨﻄﻘﻴ ﺔ ﻗ‬
‫ﺘﺄﻛﺪ ﻣﻦ أن ﻣﺪﺧﻼ‬
‫ﺒﺎرا ت ‪if‬ﻟﻠ‬
‫ﺘﺨﺪام اﻟﻘﻮاﺋﻢ وﻋ‬
‫ﺑﻪ؟ﻳﻤﻜﻨﻚ اﺳ‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫اﻟ‬

‫ﺘﺰا‪.‬‬
‫ﺑﻴ‬‫ﺒﻨ ﻲ‬
‫ﺒﻞ أن ﻧ‬
‫ﺒﺎ ت اﻹﺿﺎﻓﺎ ت ﻏﻴﺮ اﻟﻌﺎدﻳ ﺔ ﻗ‬
‫ﺘﺮس ﻣﻦ ﻃﻠ‬
‫دﻋﻮﻧﺎ ﻧﺤ‬
‫ﺜﺎﻧ ﻲ ﻫﻮ ﻗﺎﺋﻤ ﺔ اﻹﺿﺎﻓﺎ ت‬
‫ﺘﺰا ‪ ،‬واﻟ‬
‫ﺒﻴ‬‫ﺘﺎﺣ ﺔ ﻓ ﻲ ﻣﻄﻌﻢ اﻟ‬
‫ﺑﺄﻋﲆ اﻷﺻﻮا ت اﻟﻤ‬‫ﺒﺎرة ﻋﻦ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﻴﻦ‪ .‬اﻷول ﻋ‬
‫ﺘﺎﻟ ﻲ ﻗﺎﺋﻤ‬
‫ﺜﺎل اﻟ‬
‫ﻳﺤﺪد اﻟﻤ‬
‫ﺒﻞ‬
‫ﺘﻮﻓﺮة ﻗ‬
‫ﺑﻞ ﻗﺎﺋﻤ ﺔ اﻹﺿﺎﻓﺎ ت اﻟﻤ‬
‫ﺘﻢ ﻓﺤﺺ ﻛﻞ ﻋﻨﺼﺮ ﻓ ﻲ ‪request_toppings‬ﻣﻘﺎ‬
‫ﺘﺨﺪم‪ .‬ﻫﺬه اﻟﻤﺮة ‪،‬ﻳ‬
‫ﺒﻬﺎ اﻟﻤ ﺴ‬
‫ﺘ ﻲ ﻃﻠ‬
‫اﻟ‬
‫ﺘﺰا‪:‬‬
‫ﺒﻴ‬‫ﺘﻪ إﱃ اﻟ‬
‫إﺿﺎﻓ‬

‫‪u available_toppings = ['mushrooms'، 'olives'، 'green peppers'،‬‬


‫ﺒﻨ ﺔ إﺿﺎﻓﻴ ﺔ"[‬
‫ﺒﺮوﻧ ﻲ" ‪" ،‬أﻧﺎﻧﺎس" ‪" ،‬ﺟ‬
‫ﺑﻴ‬‫"‬

‫]'‪v request_toppings = ['mushrooms'، 'fries'، 'extra cheese‬‬

‫ﺑ ﺔ‪:‬‬
‫ﺘ ﺴﻮق ﻓ ﻲ اﻟﻀﺨﻤﺎ ت اﻟﻤﻄﻠﻮ‬
‫‪w‬ﻟﻠﻄﻠ ﺐ_اﻟ‬
‫ﺘ ﺴﻮق ﻓ ﻲ ‪available_toppings:‬‬
‫ﺒ ﺖ_اﻟ‬
‫‪x‬إذا ﻃﻠ‬
‫)"‪print ("Adding" + required_topping + ".‬‬
‫ﻧﻌﻢ آﺧﺮ‪:‬‬
‫"‬
‫‪")print‬ﻣﻌﺬرة ‪ ،‬ﻟﻴ ﺲ ﻟﺪﻳﻨﺎ‬ ‫‪+‬ﻃﻠ ﺐ )"‪+ ".‬‬

‫ﺑﻚ!"(‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻬﺎء ﻣﻦ ﺻﻨﻊ اﻟ‬
‫ﺗﻢ اﻻﻧ‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬‬
‫ﻃ‬

‫ﺘﺰا‬
‫ﺒﻴ‬‫ﺘﺰا ﻫﺬا‪ .‬ﻻﺣﻆ أن ﻫﺬاﻳﻤﻜﻦ أنﻳﻜﻮن ﺻ ًﻔﺎ إذا ﻛﺎن ﻣﻄﻌﻢ اﻟ‬
‫ﺒﻴ‬‫ﺘﻮﻓﺮة ﻓ ﻲ ﻣﻄﻌﻢ اﻟ‬
‫ﺑﺎﻹﺿﺎﻓﺎ ت اﻟﻤ‬‫ﻧﺤﺪد ﻓ ﻲ ‪u‬ﻗﺎﺋﻤ ﺔ‬
‫ﺒﻬﺎ اﻟﻌﻤﻴﻞ‪ .‬ﻻﺣﻆ اﻟﻄﻠ ﺐ ﻏﻴﺮ‬
‫ﺘ ﻲ ﻃﻠ‬
‫ﺑﺎﻹﺿﺎﻓﺎ ت اﻟ‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫ﺘ ﺔ ﻣﻦ اﻹﺿﺎﻓﺎ ت‪ .‬ﻓ ﻲ ‪v ،‬ﻧﻘﻮم‬
‫ﺑ‬‫ﺛﺎ‬‫ﺘﻮي ﻋﲆ ﻣﺠﻤﻮﻋ ﺔ‬
‫ﻳﺤ‬
‫ﺑ ﺔ‪.‬‬
‫ﺒﻘ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﺑﻌﻤﻞ ﺣﻠﻘ ﺔ ﻣﻦ ﺧﻼل ﻗﺎﺋﻤ ﺔ اﻟﻄ‬‫ﺒﻄﺎﻃ ﺲ اﻟﻤﻘﻠﻴ ﺔ"‪ .‬ﻓ ﻲ ‪w ،‬ﻧﻘﻮم‬
‫ﺘﺎد "اﻟ‬
‫اﻟﻤﻌ‬

‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻹﺿﺎﻓﺎ ت‬‫ﺑ ﺔ ﻣﻮﺟﻮدة‬ ‫ﺘﺤﻘﻖ أوﻻ ً ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎﻧ ﺖ ﻛﻞ ﻃ‬
‫ﺒﻘ ﺔ ﻣﻦ اﻹﺿﺎﻓﺎ ت اﻟﻤﻄﻠﻮ‬ ‫داﺧﻞ اﻟﺤﻠﻘ ﺔ ‪ ،‬ﻧ‬
‫ﺘﺰا‪.‬‬
‫ﺒﻴ‬‫ﺘﺎﺣ ﺔ ‪x.‬إذا ﻛﺎن اﻷﻣﺮ ﻛﺬﻟﻚ ‪ ،‬ﻓﻨﺤﻦ ﻧﻀﻴﻒ ذﻟﻚ إﱃ اﻟ‬
‫اﻟﻤ‬
‫ﺒﺮ‬
‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔﺗﺨ‬
‫ﺑﻄ‬‫ﺘﻠ ﺔ ‪else‬‬
‫ﺗﻘﻮم ﻛ‬
‫ﺘﻠ ﺔ ‪else y.‬‬
‫ﺘﻢﺗﺸﻐﻴﻞ ﻛ‬
‫ﺘﺎﺣ ﺔ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺑ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻹﺿﺎﻓﺎ ت اﻟﻤ‬
‫إذا ﻟﻢﺗﻜﻦ اﻟﻘﻤ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﺘﻮﻓﺮة‪.‬‬
‫ﺒﻘ ﺔ ﻏﻴﺮ اﻟﻤ‬
‫ﺘﺨﺪم ﻋﻦ اﻟﻄ‬
‫اﻟﻤ ﺴ‬

‫ﺑﺎﻟﻤﻌﻠﻮﻣﺎ ت‪:‬‬‫ﺑﻨﺎء ﺟﻤﻠ ﺔ اﻟﺸﻔﺮة ﻫﺬا ﻣﺨﺮﺟﺎ ت ﻧﻈﻴﻔ ﺔ وﻏﻨﻴ ﺔ‬‫ﺘﺞ‬


‫ﻳﻨ‬

‫إﺿﺎﻓ ﺔ اﻟﻔﻄﺮ‪.‬‬
‫ﺑﻄﺎﻃ ﺲ ﻣﻘﻠﻴ ﺔ‪.‬‬‫ﻋﺬرا ‪ ،‬ﻟﻴ ﺲ ﻟﺪﻳﻨﺎ‬
‫ﺒﻦ‪.‬‬
‫إﺿﺎﻓ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﺠ‬

‫ﺑﻚ!‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺘﻬﻴﻨﺎ ﻣﻦ ﺻﻨﻊ اﻟ‬
‫اﻧ‬

‫ﺑﺸﻜﻞ ﻓﻌﺎل ﻟﻠﻐﺎﻳ ﺔ!‬‫ﺒﺮﻣﺠﻴ ﺔ ‪،‬ﺗﻤﻜﻨﺎ ﻣﻦ إدارة ﻣﻮﻗﻒ ﺣﻘﻴﻘ ﻲ‬


‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻀﻌ ﺔ أﺳﻄﺮ ﻣﻦ اﻟ‬‫ﻓﻲ‬

‫‪92‬اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺗﺨﻴﻞ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻻﺳﻢ ‪"admin".‬‬‫ﺜﺮ ‪،‬‬
‫ﺘﺨﺪﻣﻴﻦ أو أﻛ‬
‫ﺑﺨﻤ ﺴ ﺔ أﺳﻤﺎء ﻣ ﺴ‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫ﺒﺎ ‪Admin:‬ﻗﻢ‬
‫‪5-8.‬ﻣﺮﺣ ً‬
‫ﺒﻊ‬
‫ﺘﻜﺮار ﺧﻼل اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬واﻃ‬
‫ﺑﺎﻟ‬‫ﺑﻌﺪﺗ ﺴﺠﻴﻞ اﻟﺪﺧﻮل إﱃ ﻣﻮﻗﻊ وﻳ ﺐ‪ .‬ﻗﻢ‬‫ﺘﺨﺪم‬ ‫ﺘ ﺐ رﻣ ًﺰاﻳﻄ‬
‫ﺒﻊﺗﺤﻴ ﺔ ﻟﻜﻞ ﻣ ﺴ‬ ‫أﻧﻚﺗﻜ‬
‫ﺘﺨﺪم‪:‬‬
‫ﺗﺤﻴ ﺔ ﻟﻜﻞ ﻣ ﺴ‬

‫ﺜﻞ ‪Hello admin ،‬‬


‫ﺒﻊﺗﺤﻴ ﺔ ﺧﺎﺻ ﺔ ‪ ،‬ﻣ‬
‫ﺘﺨﺪم ﻫﻮ ‪"admin" ،‬اﻃ‬
‫•إذا ﻛﺎن اﺳﻢ اﻟﻤ ﺴ‬
‫ﻫﻞﺗﺮﻏ ﺐ ﻓ ﻲ رؤﻳ ﺔﺗﻘﺮﻳﺮ اﻟﺤﺎﻟ ﺔ؟‬

‫ﺜﻞ ‪Hello Eric ،‬ﺷﻜ ﺮًا ﻟﻚ ﻋﲆﺗ ﺴﺠﻴﻞ اﻟﺪﺧﻮل ﻣﺮة أﺧﺮى‪.‬‬
‫ﺒﻊﺗﺤﻴ ﺔ ﻋﺎﻣ ﺔ ‪ ،‬ﻣ‬
‫ﺑﺨﻼف ذﻟﻚ ‪ ،‬اﻃ‬
‫•‬

‫ﺘﺨﺪﻣﻴﻦ ﻟﻴ ﺴ ﺖ ﻓﺎرﻏ ﺔ‪.‬‬


‫ﺘﺄﻛﺪ ﻣﻦ أن ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬
‫ﺒﺎر ‪if‬إﱃ ‪hello_admin.py‬ﻟﻠ‬
‫ﺘ‬‫ﺘﺨﺪﻣﻮن‪ :‬أﺿﻒ اﺧ‬
‫‪5-9.‬ﻻ ﻣ ﺴ‬

‫ﺘﺨﺪﻣﻴﻦ!‬
‫ﺑﻌﺾ اﻟﻤ ﺴ‬‫ﺜﻮر ﻋﲆ‬
‫ﺑﺤﺎﺟ ﺔ ﻟﻠﻌ‬‫ﺒﻊ اﻟﺮﺳﺎﻟ ﺔ ﻧﺤﻦ‬
‫•إذا ﻛﺎﻧ ﺖ اﻟﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ‪ ،‬اﻃ‬

‫ﺒﺎﻋ ﺔ اﻟﺮﺳﺎﻟ ﺔ اﻟﺼﺤﻴﺤ ﺔ‪.‬‬


‫ﺗﺄﻛﺪ ﻣﻦ ﻃ‬
‫ﺘﻚ ‪ ،‬و‬
‫ﺘﺨﺪﻣﻴﻦ ﻣﻦ ﻗﺎﺋﻤ‬
‫ﺑﺈزاﻟ ﺔ ﺟﻤﻴﻊ أﺳﻤﺎء اﻟﻤ ﺴ‬‫•ﻗﻢ‬

‫ﺑﺮﻧﺎﻣﺞﻳﺤﺎﻛ ﻲ ﻛﻴﻒﺗﻀﻤﻦ ﻣﻮاﻗﻊ اﻟﻮﻳ ﺐ أن ﻟﻜﻞ‬‫ﺑﻤﺎﻳﻠ ﻲ ﻹﻧﺸﺎء‬‫ﺘﺨﺪﻣﻴﻦ‪ :‬ﻗﻢ‬


‫ﺘﺤﻘﻖ ﻣﻦ أﺳﻤﺎء اﻟﻤ ﺴ‬
‫‪5-10.‬اﻟ‬
‫ﺘﺨﺪم ﻓﺮﻳﺪ‪.‬‬
‫ﺷﺨﺺ اﺳﻢ ﻣ ﺴ‬

‫ﺘﺨﺪﻣﻴﻦﺗ ﺴﻤﻰ ‪current_users.‬‬


‫ﺜﺮ ﻣﻦ أﺳﻤﺎء اﻟﻤ ﺴ‬
‫ﺑﺨﻤ ﺴ ﺔ أو أﻛ‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫•ﻗﻢ‬

‫ﺛﻨﻴﻦ ﻣﻦ‬
‫ﺗﺄﻛﺪ ﻣﻦ وﺟﻮد واﺣﺪ أو ا‬
‫ﺘﺨﺪﻣﻴﻦﺗ ﺴﻤﻰ ‪new_users.‬‬
‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ أﺧﺮى ﻣﻦ ﺧﻤ ﺴ ﺔ أﺳﻤﺎء ﻣ ﺴ‬‫•ﻗﻢ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﺤﺎﻟﻴﻴﻦ ‪.‬‬ ‫ﺘﺨﺪﻣﻴﻦ اﻟﺠﺪﻳﺪة أ ً‬
‫ﻳﻀﺎ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬ ‫أﺳﻤﺎء اﻟﻤ ﺴ‬

‫ﺑﺎﻟﻔﻌﻞ‪.‬‬‫ﺘﺨﺪاﻣﻪ‬
‫ﺘﺨﺪم ﺟﺪﻳﺪ ﻗﺪﺗﻢ اﺳ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﺠﺪد ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن ﻛﻞ اﺳﻢ ﻣ ﺴ‬
‫ﺑﺈﺟﺮاءﺗﻜﺮار ﻟﻘﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬‫•ﻗﻢ‬
‫ﺘﻢ‬
‫ﺘﺨﺪم ﺟﺪﻳﺪ‪ .‬إذا ﻟﻢﻳ‬
‫ﺘﺎج إﱃ إدﺧﺎل اﺳﻢ ﻣ ﺴ‬
‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔ ﻣﻔﺎد ﻫﺎ أن اﻟﺸﺨﺺﺳﻴﺤ‬
‫ﺑﻄ‬‫إذا ﻛﺎن اﻷﻣﺮ ﻛﺬﻟﻚ ‪ ،‬ﻓﻘﻢ‬
‫ﺘﺎح‪.‬‬
‫ﺘﺨﺪم ﻣ‬
‫ﺑﺄن اﺳﻢ اﻟﻤ ﺴ‬‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬
‫ﺑﻄ‬‫ﺘﺨﺪم ‪ ،‬ﻓﻘﻢ‬
‫ﺘﺨﺪام اﺳﻢ ﻣ ﺴ‬
‫اﺳ‬

‫ﺒﻮل ‪"JOHN" .‬‬


‫ﺘﺨﺪام ‪"John" ،‬ﻓﻼﻳﺠ ﺐ ﻗ‬
‫ﺗﺄﻛﺪ ﻣﻦ أن اﻟﻤﻘﺎرﻧ ﺔ ﻏﻴﺮ ﺣ ﺴﺎﺳ ﺔ ﻟﺤﺎﻟ ﺔ اﻷﺣﺮف‪ .‬إذاﺗﻢ اﺳ‬
‫•‬

‫ﺘﻬ ﻲ ﻣﻌﻈﻢ‬
‫ﺜﺎﻧ ﻲ‪.‬ﺗﻨ‬
‫ﺜﻞ اﻷول أو اﻟ‬
‫ﺒﻴ ﺔ إﱃ ﻣﻮﺿﻌﻬﺎ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪ ،‬ﻣ‬
‫ﺗﻴ‬‫ﺘﺮ‬
‫ﺒﻴ ﺔ‪:‬ﺗﺸﻴﺮ اﻷرﻗﺎم اﻟ‬
‫ﺗﻴ‬‫ﺘﺮ‬
‫‪5-11.‬اﻷﻋﺪاد اﻟ‬
‫ﺜﻨﺎء ‪1‬و ‪2‬و ‪3.‬‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﺎﻟﺮﻗﻢ ‪،‬‬‫ﺒﻴ ﺔ‬
‫ﺗﻴ‬‫ﺘﺮ‬
‫اﻷﻋﺪاد اﻟ‬

‫ﺘﺨﺰﻳﻦ اﻷرﻗﺎم ﻣﻦ ‪1‬إﱃ ‪9‬ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‪.‬‬


‫ﺑ‬‫•ﻗﻢ‬

‫•ﺣﻠﻘ ﺔ ﻣﻦ ﺧﻼل اﻟﻘﺎﺋﻤ ﺔ‪.‬‬

‫ﺗﻚ‬
‫ﺒ ﺔ ﻟﻜﻞ رﻗﻢ‪.‬ﻳﺠ ﺐ أنﺗﻘﺮأ ﻣﺨﺮﺟﺎ‬
‫ﺒﻴ ﺔ اﻟﻤﻨﺎﺳ‬
‫ﺗﻴ‬‫ﺘﺮ‬
‫ﺒﺎﻋ ﺔ اﻟﻨﻬﺎﻳ ﺔ اﻟ‬
‫ﺘﺨﺪمﺳﻠ ﺴﻠ ﺔ ‪if-elif-else‬داﺧﻞ اﻟﺤﻠﻘ ﺔ ﻟﻄ‬
‫•اﺳ‬
‫ﺘﻴﺠ ﺔ ﻓ ﻲﺳﻄﺮ ﻣﻨﻔﺼﻞ‪.‬‬
‫‪"1st 2nd 3rd 4th 5th 6th 7th 8th 9th" ،‬وﻳﺠ ﺐ أنﺗﻜﻮن ﻛﻞ ﻧ‬

‫ﺒﺎرا ت ‪93‬‬
‫إذا ﻛﺎﻧ ﺖ اﻟﻌ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻚ‬‫ﺒﺎرا ت اﻟﺨﺎﺻ ﺔ‬
‫ﺗﺼﻤﻴﻢ اﻟﻌ‬
‫ﺒﺎرا ت‬
‫ﺘ‬‫ﺘﺼﻤﻴﻢ اﻻﺧ‬
‫ﺘ ﻲﻳﻮﻓﺮ ﻫﺎ ‪PEP 8‬ﻟ‬
‫ﺘﻮﺻﻴ ﺔ اﻟﻮﺣﻴﺪة اﻟ‬
‫ﺖ ﻋﺎدا تﺗﺼﻔﻴﻒ ﺟﻴﺪة‪ .‬اﻟ‬
‫ﺜﺎل ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ‪ ،‬رأﻳِ‬
‫ﻓ ﻲ ﻛﻞ ﻣ‬
‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺜﻞ ‪== ، > = ، <=.‬ﻋﲆﺳ‬
‫ﺘﺨﺪام ﻣ ﺴﺎﻓ ﺔ واﺣﺪة ﺣﻮل ﻋﻮاﻣﻞ اﻟﻤﻘﺎرﻧ ﺔ ‪ ،‬ﻣ‬
‫اﻟﺸﺮﻃﻴ ﺔ ﻫ ﻲ اﺳ‬

‫إذا ﻛﺎن اﻟﻌﻤﺮ ‪<4:‬‬

‫أﻓﻀﻞ ﻣﻦ‪:‬‬

‫إذا ﻛﺎن اﻟﻌﻤﺮ ‪<4:‬‬

‫ﺑﻚ ؛ ﻓﻘﻂ‬‫ﺛﺮ ﻫﺬه اﻟﻤ ﺴﺎﻓﺎ ت ﻋﲆ ﻃﺮﻳﻘ ﺔﺗﻔ ﺴﻴﺮ ‪Python‬ﻟﻠﻜﻮد اﻟﺨﺎص‬
‫ﻻﺗﺆ‬

‫ﺑﻚ أﺳﻬﻞ ﻟﻚ وﻟﻶﺧﺮﻳﻦ ﻓ ﻲ اﻟﻘﺮاءة‪.‬‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬


‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻳﺠﻌﻞ اﻟ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺗﻚ اﻟﺸﺮﻃﻴ ﺔ‬
‫ﺒﺎرا‬
‫ﺘ‬‫ﺗﺄﻛﺪ ﻣﻦﺗﺼﻤﻴﻢ اﺧ‬
‫ﺘﻬﺎ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ‪ ،‬و‬
‫ﺒ‬‫ﺘ‬‫ﺘ ﻲﻛ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺒﺎرا ت ‪Styling if :‬راﺟﻊ اﻟ‬
‫‪5-12.‬ﻋ‬
‫ﺑﺸﻜﻞ ﻣﻨﺎﺳ ﺐ‪.‬‬

‫ﺑﻌﺪ أن‬‫ﺘﺎ ب‪ .‬اﻵن‬


‫ﺑﺪأ ت ﻫﺬا اﻟﻜ‬‫ﺜﺮ ﻗﺪرة ﻣﻤﺎ ﻛﻨ ﺖ ﻋﻠﻴﻪ ﻋﻨﺪﻣﺎ‬
‫ﺒﺮﻣﺞ أﻛ‬
‫‪5-13.‬أﻓﻜﺎرك‪ :‬ﻓ ﻲ ﻫﺬه اﻟﻤﺮﺣﻠ ﺔ ‪ ،‬أﻧ ﺖ ﻣ‬
‫ﺑﻌﺾ اﻟﻤﺸﻜﻼ ت‬‫ﺒﺮاﻣﺞ ‪ ،‬ﻗﺪﺗﻔﻜﺮ ﻓ ﻲ‬
‫ﺑﻜﻴﻔﻴ ﺔﺗﺼﻤﻴﻢ ﻣﻮاﻗﻒ اﻟﻌﺎﻟﻢ اﻟﻮاﻗﻌ ﻲ ﻓ ﻲ اﻟ‬‫ﺒﺢ ﻟﺪﻳﻚ إﺣ ﺴﺎس أﻓﻀﻞ‬
‫أﺻ‬
‫ﺘ ﻲ ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ‬
‫ﺑﺮاﻣﺠﻚ اﻟﺨﺎﺻ ﺔ‪.‬ﺳﺠﻞ أي أﻓﻜﺎر ﺟﺪﻳﺪة ﻟﺪﻳﻚ ﺣﻮل اﻟﻤﺸﺎﻛﻞ اﻟ‬‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ﺘ ﻲﻳﻤﻜﻨﻚ ﺣﻠﻬﺎ‬
‫اﻟ‬
‫ﺘ ﻲ ﻗﺪﺗﺮﻏ ﺐ‬
‫ﺒﺎرك اﻷﻟﻌﺎ ب اﻟ‬
‫ﺘ‬‫ﺘﺤ ﺴﻦ‪ .‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺘﻤﺮ ﻓ ﻲ اﻟ‬
‫ﺘﺴ‬‫ﺑﻚﺳ‬‫ﺒﺮﻣﺠ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺣﻠﻬﺎ ﺣﻴ ﺚ أن ﻣﻬﺎرا ت اﻟ‬
‫ﺘ ﻲﺗﺮﻏ ﺐ ﻓ ﻲ إﻧﺸﺎﺋﻬﺎ‪.‬‬
‫ﺒﻴﻘﺎ ت اﻟﻮﻳ ﺐ اﻟ‬
‫ﺗﻄ‬‫ﺘﻜﺸﺎﻓﻬﺎ و‬
‫ﺘ ﻲ ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ اﺳ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻬﺎ وﻣﺠﻤﻮﻋﺎ ت اﻟ‬
‫ﺑ‬‫ﺘﺎ‬
‫ﻓ ﻲﻛ‬

‫ﻣﻠﺨﺺ‬
‫ﺑ ﺴﻴﻄ ﺔ ‪else ،‬‬
‫ﺒﺎرا ت ‪if‬‬
‫ﺑﺔ ﻋ‬
‫ﺘﺎ‬
‫ﺋﻤﺎ إﱃ ﺻﻮا ب أو ﺧﻄﺄ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛ‬
‫ﺘﻢﺗﻘﻴﻴﻤﻬﺎ دا ً‬
‫ﺘ ﻲﻳ‬
‫ﺒﺎرا ت اﻟﺸﺮﻃﻴ ﺔ ‪ ،‬واﻟ‬
‫ﺘ‬‫ﺑ ﺔ اﻻﺧ‬
‫ﺘﺎ‬
‫ﺗﻌﻠﻤ ﺖ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛﻴﻔﻴ ﺔ ﻛ‬

‫‪if-‬‬

‫ﺘﻴﻔﺎء‬
‫ﺘﻰﺗﻢ اﺳ‬
‫ﺒﺎر وﻣﻌﺮﻓ ﺔ ﻣ‬
‫ﺘ‬‫ﺘﺎﺟﻬﺎ ﻟﻼﺧ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﺤﺪﻳﺪ اﻟﺸﺮوط اﻟﺨﺎﺻ ﺔ اﻟ‬
‫ﺘﺨﺪام ﻫﺬه اﻟﻬﻴﺎﻛﻞ ﻟ‬
‫ﺑﺪأ ت ﻓ ﻲ اﺳ‬‫ﺳﻼﺳﻞ ‪ ،‬وﺳﻼﺳﻞ ‪if-elif-else .‬ﻟﻘﺪ‬

‫ﺘﻔﺎدة‬
‫ﺘﻤﺮار ﻓ ﻲ اﻻﺳ‬
‫ﺘﻠﻒ ﻋﻦ ﺟﻤﻴﻊ اﻟﻌﻨﺎﺻﺮ اﻷﺧﺮى ﻣﻊ اﻻﺳ‬
‫ﺑﺸﻜﻞ ﻣﺨ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻋﻨﺎﺻﺮ ﻣﻌﻴﻨ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‬
‫ﺑﺮاﻣﺠﻚ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ اﻟ‬‫ﻫﺬه اﻟﺸﺮوط ﻓ ﻲ‬

‫ﺘﻌﻘﻴﺪ ﻻﺗﺰالﺳﻬﻠ ﺔ اﻟﻘﺮاءة‬


‫ﺘﺰاﻳﺪة اﻟ‬
‫ﺑﺮاﻣﺠﻚ اﻟﻤ‬‫ﺘﺄﻛﺪ ﻣﻦ أن‬
‫ﺑﺈﻋﺎدة اﻟﻨﻈﺮ ﻓ ﻲﺗﻮﺻﻴﺎ ت أﺳﻠﻮ ب ‪Python‬ﻟﻠ‬ ‫ﻣﻦ ﻛﻔﺎءة ﺣﻠﻘ ﺔ ‪for .‬ﻟﻘﺪ ﻗﻤ ﺖ أ ً‬
‫ﻳﻀﺎ‬

‫ﺒ ًﻴﺎ‪.‬‬
‫واﻟﻔﻬﻢ ﻧ ﺴ‬

‫ﺘﻮﺻﻴﻞ أﺟﺰاء ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬


‫ﺑ‬‫ﺑﻪ ﻟﻠﻘﺎﺋﻤ ﺔ ‪ ،‬ﻟﻜﻨﻪﻳ ﺴﻤﺢ ﻟﻚ‬
‫ﺜﻮن‪ .‬اﻟﻘﺎﻣﻮس ﻣﺸﺎ‬
‫ﺑﺎﻳ‬‫ﺘﻌﺮف ﻓ ﻲ اﻟﻔﺼﻞ اﻟ ﺴﺎدس ﻋﲆ ﻗﻮاﻣﻴ ﺲ‬
‫ﺘ‬‫ﺳ‬

‫ﺘﻌﺮف ﻋﲆ اﻟﻘﻮاﻣﻴ ﺲ ﻣﻦﺗﺼﻤﻴﻢ‬


‫ﺒﺎرا ت ‪if .‬ﺳﻴﻤﻜﻨﻚ اﻟ‬
‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ دﻣﺠﻬﺎ ﻣﻊ اﻟﻘﻮاﺋﻢ وﻋ‬
‫ﺗﻜﺮار ﻫﺎ ‪ ،‬واﺳ‬
‫ﺑﻨﺎء اﻟﻘﻮاﻣﻴ ﺲ ‪ ،‬و‬‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ‬
‫ﺘ‬‫ﺳ‬

‫ﺘﻨﻮﻋ ﺔ ﻣﻦ ﻣﻮاﻗﻒ اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ‪.‬‬


‫ﻣﺠﻤﻮﻋ ﺔ ﻣ‬

‫‪94‬اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ‬
‫‪Machine Translated by Google‬‬

‫‪6‬‬ ‫ﺑﺎ ب اﻷﻳﻮﻧﻴ ﺔ ‪Dic t‬‬


‫اﻟﺬ‬

‫ﺑﻂ أﺟﺰاء ﻣﻦ‬


‫ﺑﺮ‬‫ﺘ ﻲﺗ ﺴﻤﺢ ﻟﻚ‬
‫ﺜﻮن ‪ ،‬واﻟ‬
‫ﺑﺎﻳ‬‫ﺘﺨﺪام ﻗﻮاﻣﻴ ﺲ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺘ‬‫ﺳ‬

‫اﻟﻤﻌﻠﻮﻣﺎ ت ذا ت اﻟﺼﻠ ﺔ‪.‬ﺳﻮف‬

‫ﺒﺢ‬
‫ﺑﻤﺠﺮد أنﺗﺼ‬‫ﺗﻌﻠﻢ ﻛﻴﻔﻴ ﺔ اﻟﻮﺻﻮل إﱃ اﻟﻤﻌﻠﻮﻣﺎ ت‬

‫ﻓ ﻲ اﻟﻘﺎﻣﻮس وﻛﻴﻔﻴ ﺔﺗﻌﺪﻳﻞﺗﻠﻚ اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬


‫ﺒﻴﺎﻧﺎ ت ﻓ ﻲ‬
‫ﺒﺎ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ‪ ،‬ﻓ ﺴﺄوﺿﺢ ﻟﻚ ﻛﻴﻔﻴ ﺔﺗﻜﺮار اﻟ‬
‫ﻧﻈ ﺮًاﻷن اﻟﻘﻮاﻣﻴ ﺲﻳﻤﻜﻨﻬﺎﺗﺨﺰﻳﻦ ﻛﻤﻴ ﺔ ﻏﻴﺮ ﻣﺤﺪودةﺗﻘﺮﻳ ً‬

‫ﺘﻰ اﻟﻘﻮاﻣﻴ ﺲ‬
‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ دﻣﺞ اﻟﻘﻮاﻣﻴ ﺲ داﺧﻞ اﻟﻘﻮاﺋﻢ واﻟﻘﻮاﺋﻢ داﺧﻞ اﻟﻘﻮاﻣﻴ ﺲ وﺣ‬
‫ﺘ‬‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪،‬ﺳ‬‫اﻟﻘﺎﻣﻮس‪.‬‬
‫داﺧﻞ اﻟﻘﻮاﻣﻴ ﺲ اﻷﺧﺮى‪.‬‬

‫ﺘﻤﻜﻦ ﻣﻦ إﻧﺸﺎء‬
‫ﺘ‬‫ﺜﺮ دﻗ ﺔ‪.‬ﺳ‬
‫ﺑﺸﻜﻞ أﻛ‬‫ﺘﻨﻮﻋ ﺔ ﻣﻦ اﻟﻜﺎﺋﻨﺎ ت اﻟﻮاﻗﻌﻴ ﺔ‬
‫ﺑﻨﻤﺬﺟ ﺔ ﻣﺠﻤﻮﻋ ﺔ ﻣ‬‫ﻳ ﺴﻤﺢ ﻟﻚ ﻓﻬﻢ اﻟﻘﻮاﻣﻴ ﺲ‬
‫ﺒﺮ ﻗﺪرﺗﺮﻳﺪه ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﺣﻮل ﻫﺬا اﻟﺸﺨﺺ‪.‬‬
‫ﺛﻢﺗﺨﺰﻳﻦ أﻛ‬‫ﺷﺨﺼﺎ ﻣﺎ‬
‫ً‬ ‫ﺜﻞ‬
‫ﻗﺎﻣﻮسﻳﻤ‬

‫ﺘﻜﻮن ﻗﺎد ًرا ﻋﲆﺗﺨﺰﻳﻦ‬


‫ﺘﻪ وأي ﺟﺎﻧ ﺐ آﺧﺮ ﻣﻦ ﺟﻮاﻧ ﺐ اﻟﺸﺨﺺﻳﻤﻜﻨﻚ وﺻﻔﻪ‪.‬ﺳ‬
‫ﻳﻤﻜﻨﻚﺗﺨﺰﻳﻦ اﺳﻤﻪ وﻋﻤﺮه وﻣﻮﻗﻌﻪ وﻣﻬﻨ‬
‫ﺑﺄﺳﻤﺎء اﻷﺷﺨﺎص وأرﻗﺎﻣﻬﻢ‬‫ﺜﻞ ﻗﺎﺋﻤ ﺔ اﻟﻜﻠﻤﺎ ت وﻣﻌﺎﻧﻴﻬﺎ ‪ ،‬وﻗﺎﺋﻤ ﺔ‬
‫ﺘﻬﺎ ‪ ،‬ﻣ‬
‫ﺑﻘ‬‫ﺘ ﻲﻳﻤﻜﻦ ﻣﻄﺎ‬
‫أي ﻧﻮﻋﻴﻦ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺗﻬﺎ ‪ ،‬وﻣﺎ إﱃ ذﻟﻚ‪. .‬‬
‫ﺗﻔﻌﺎ‬
‫ﺒﺎل وﻣﺮ‬
‫اﻟﻤﻔﻀﻠ ﺔ ‪ ،‬وﻗﺎﺋﻤ ﺔ اﻟﺠ‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺴﻴﻂ‬‫ﻗﺎﻣﻮس‬
‫ﺒ ﺴﻴﻂ‬
‫ﺘﻠﻔ ﺔ‪.‬ﻳﺨﺰن ﻫﺬا اﻟﻘﺎﻣﻮس اﻟ‬
‫ﺒ ﺔﺗﻀﻢ ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔﻳﻤﻜﻦ أنﻳﻜﻮن ﻟﻬﺎ أﻟﻮان وﻗﻴﻢ ﻣﺨ‬
‫ﺒﺎرك ﻟﻌ‬
‫ﺘ‬‫ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ ﻣﻌﻴﻦ‪:‬‬

‫‪alien_0 = {'color': 'green'، 'Points':‬‬ ‫}‪5‬‬


‫‪alien.py‬‬

‫ﺒﺎﻋ ﺔ )]'‪(alien_0 ['color‬‬


‫ﻃ‬
‫ﺒﺎﻋ ﺔ ‪"](alien_0‬ﻧﻘﺎط"[(‬ ‫ﻃ‬

‫ﺛﻨﺎن‬
‫ﺘﺨﺰﻳﻦ ﻟﻮن اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ وﻗﻴﻤ ﺔ اﻟﻨﻘﻄ ﺔ‪ .‬اﻻ‬
‫ﺑ‬‫ﻳﻘﻮم اﻟﻘﺎﻣﻮس ‪alien_0‬‬
‫ﺑﻴﺎﻧﺎ ت اﻟﻮﺻﻮل وﻋﺮض ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻫﻨﺎ‪:‬‬‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬

‫أﺧﻀﺮ‬
‫‪5‬‬

‫ﺑﻤﺠﺮد أنﺗﻌﻤﻞ ﻣﻊ‬‫ﺘﻄﻠ ﺐ ﻣﻤﺎرﺳ ﺔ‪.‬‬


‫ﺘﺨﺪام اﻟﻘﻮاﻣﻴ ﺲﻳ‬
‫ﺒﺮﻣﺠ ﺔ اﻟﺠﺪﻳﺪة ‪ ،‬ﻓﺈن اﺳ‬
‫ﻛﻤﺎ ﻫﻮ اﻟﺤﺎل ﻣﻊ ﻣﻌﻈﻢ ﻣﻔﺎ ﻫﻴﻢ اﻟ‬
‫ﺒﺎ ﻣﺪى ﻓﺎﻋﻠﻴ ﺔ ﻫﺬه اﻟﻘﻮاﻣﻴ ﺲ ﻓ ﻲ ﻧﻤﺬﺟ ﺔ ﻣﻮاﻗﻒ اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ‪.‬‬ ‫اﻟﻘﻮاﻣﻴ ﺲ ﻗﻠﻴ ﻼ ً ‪،‬ﺳ‬
‫ﺘﺮى ﻗﺮﻳ ً‬

‫اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﻣﻴ ﺲ‬
‫ﺘﺎح ﻟﻠﻮﺻﻮل‬
‫ﺘﺨﺪام ﻣﻔ‬
‫ﺑﻘﻴﻤ ﺔ ‪ ،‬وﻳﻤﻜﻨﻚ اﺳ‬‫ﺘﺼﻞ‬
‫ﺘﺎح ﻣ‬
‫ﺘﺎح واﻟﻘﻴﻤ ﺔ‪ .‬ﻛﻞ ﻣﻔ‬
‫ﺜﻮن ﻫﻮ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ أزواج اﻟﻤﻔ‬
‫ﺑﺎﻳ‬‫اﻟﻘﺎﻣﻮس ﻓ ﻲ‬
‫ﺘﺎح‪.‬‬
‫ﺑﻬﺬا اﻟﻤﻔ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫إﱃ اﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫ﺳﺎ آﺧﺮ‪.‬‬
‫ﺘﻰ ﻗﺎﻣﻮ ً‬
‫رﻗﻤﺎ أوﺳﻠ ﺴﻠ ﺔ أو ﻗﺎﺋﻤ ﺔ أو ﺣ‬
‫ً‬ ‫ﺘﺎح‬
‫ﻳﻤﻜﻦ أنﺗﻜﻮن ﻗﻴﻤ ﺔ اﻟﻤﻔ‬
‫ﺘﺨﺪام أي ﻛﺎﺋﻦﻳﻤﻜﻨﻚ إﻧﺸﺎؤه ﻓ ﻲ ‪Python‬ﻛﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻘﺎﻣﻮس‪.‬‬
‫ﻓ ﻲ اﻟﻮاﻗﻊ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬

‫ﺗﻴﺢ‬
‫ﺑﺄﻗﻮاس ‪{} ، ،‬ﻣﻊﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟﻤﻔﺎ‬‫ﺘﻢﺗﻐﻠﻴﻒ اﻟﻘﺎﻣﻮس‬
‫ﻓ ﻲ ‪Python ،‬ﻳ‬
‫ﺑﻖ‪:‬‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫أزواج اﻟﻘﻴﻢ داﺧﻞ اﻷﻗﻮاس ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﻤ‬

‫}‪alien_0 = {'color': 'green'، 'Points': 5‬‬

‫ُﺮﺟﻊ ‪Python‬اﻟﻘﻴﻤ ﺔ‬
‫ﺣﺎ ‪،‬ﺗ‬
‫ﺘﺎ ً‬
‫ﺒﻌﺾ‪ .‬ﻋﻨﺪﻣﺎﺗﻘﺪم ﻣﻔ‬
‫ﺒﻌﻀﻬﺎ اﻟ‬
‫ﺑ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﺎح واﻟﻘﻴﻤ ﺔ ﻫﻮ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻘﻴﻢ اﻟﻤﺮ‬
‫زوج اﻟﻤﻔ‬
‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ‬‫ﺘﺎح واﻟﻘﻴﻤ ﺔ اﻟﻔﺮدﻳ ﺔ‬
‫ﺘﻢﺗﺼﻨﻴﻒ أزواج اﻟﻤﻔ‬
‫ﺘﻴﻦ ‪ ،‬وﻳ‬
‫ﺑﻨﻘﻄ‬‫ﺘﻪ‬
‫ﺑﻘﻴﻤ‬‫ﺘﺎح‬
‫ﺒﻂ ﻛﻞ ﻣﻔ‬
‫ﺗ‬‫ﺘﺎح‪.‬ﻳﺮ‬
‫ﺑﻬﺬا اﻟﻤﻔ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫اﻟﻤﺮ‬
‫ﺘﺎح ﻓ ﻲ اﻟﻘﺎﻣﻮس‪.‬‬
‫ﻋﻦ ﻃﺮﻳﻖ اﻟﻔﻮاﺻﻞ‪.‬ﻳﻤﻜﻨﻚﺗﺨﺰﻳﻦ أي ﻋﺪدﺗﺮﻳﺪه ﻣﻦ أزواج اﻟﻘﻴﻤ ﺔ واﻟﻤﻔ‬

‫ﺒﻂ ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ ﻫﺬه اﻟﻨ ﺴﺨ ﺔ اﻟﻤﻌﺪﻟ ﺔ ﻣﻦ‬


‫ﺑﺎﻟﻀ‬‫ﺗﻴﺢ‬
‫ﺑ ﺴﻂ ﻗﺎﻣﻮس ﻋﲆ زوج واﺣﺪ ﻣﻦ ﻗﻴﻢ اﻟﻤﻔﺎ‬
‫ﺘﻮي أ‬
‫ﻳﺤ‬
‫ﻗﺎﻣﻮس ‪alien_0 :‬‬

‫}'‪alien_0 = {'color': 'green‬‬

‫ﺘﺎح ﻓ ﻲ‬
‫ﻳﺨﺰن ﻫﺬا اﻟﻘﺎﻣﻮس ﻣﻌﻠﻮﻣ ﺔ واﺣﺪة ﻋﻦ ‪alien_0 ،‬و ﻫ ﻲ ﻟﻮن اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ‪ .‬اﻟ ﺴﻠ ﺴﻠ ﺔ "‪ "color‬ﻫ ﻲ ﻣﻔ‬
‫ﺒﻄ ﺔ ﻫ ﻲ ‪"green".‬‬
‫ﺗ‬‫ﺘﻬﺎ اﻟﻤﺮ‬
‫ﻫﺬا اﻟﻘﺎﻣﻮس ‪ ،‬وﻗﻴﻤ‬

‫‪96‬اﻟﻔﺼﻞ ‪6‬‬
‫‪Machine Translated by Google‬‬

‫اﻟﻮﺻﻮل إﱃ اﻟﻘﻴﻢ ﻓ ﻲ اﻟﻘﺎﻣﻮس‬


‫ﺑﻌ ﺔ ‪ ،‬ﻛﻤﺎ‬
‫ﺘﺎح داﺧﻞ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷﻗﻮاس اﻟﻤﺮ‬
‫ﺛﻢ ﺿﻊ اﻟﻤﻔ‬‫ﺘ ﺐ اﺳﻢ اﻟﻘﺎﻣﻮس‬
‫ﺘﺎح ‪ ،‬اﻛ‬
‫ﺑﻤﻔ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﻟﻠﺤﺼﻮل ﻋﲆ اﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫ﻫﻮ ﻣﻮﺿﺢ ﻫﻨﺎ‪:‬‬

‫}'‪alien_0 = {'color': 'green‬‬


‫ﺒﺎﻋ ﺔ )]'‪(alien_0 ['color‬‬
‫ﻃ‬

‫ﺘﺎح "اﻟﻠﻮن" ﻣﻦ اﻹﻣﻼء ‪ary alien_0:‬‬


‫ﺑﺎﻟﻤﻔ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﻫﺬاﻳﻌﻴﺪ اﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬

‫أﺧﻀﺮ‬

‫ﺘﺎح واﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻘﺎﻣﻮس‪.‬‬


‫ﻳﻤﻜﻦ أنﻳﻜﻮن ﻟﺪﻳﻚ ﻋﺪد ﻏﻴﺮ ﻣﺤﺪود ﻣﻦ أزواج اﻟﻤﻔ‬
‫ﺗﻴﺢ‪:‬‬
‫ﺘﻮي ﻋﲆ زوﺟﻴﻦ ﻣﻦ ﻗﻴﻢ اﻟﻤﻔﺎ‬
‫ﺜﺎل ‪ ،‬إﻟﻴﻚ ﻗﺎﻣﻮس ‪alien_0‬اﻷﺻﻠ ﻲ اﻟﺬيﻳﺤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫}‪alien_0 = {'color': 'green'، 'Points': 5‬‬

‫ﺑﺈﻃﻼق اﻟﻨﺎر ﻋﲆ ﻫﺬا اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ ‪،‬‬‫ﻳﻤﻜﻨﻚ اﻵن اﻟﻮﺻﻮل إﱃ اﻟﻠﻮن أو ﻗﻴﻤ ﺔ اﻟﻨﻘﻄ ﺔ ﻟـ ‪alien_0.‬إذا ﻗﺎم ﻻﻋ ﺐ‬
‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﺘﺨﺪام رﻣﺰ ﻣ‬
‫ﺑﺎﺳ‬‫ﺑﺤﻬﺎ‬
‫ﺘ ﻲﻳﺠ ﺐ أنﻳﺮ‬
‫ﺒﺤ ﺚ ﻋﻦ ﻋﺪد اﻟﻨﻘﺎط اﻟ‬
‫ﻓﻴﻤﻜﻨﻚ اﻟ‬

‫}‪alien_0 = {'color': 'green'، 'Points': 5‬‬

‫‪']u new_points = alien_0‬ﻧﻘﺎط'[‬


‫"‬
‫ﺘﻮ "‪+ str (new_points) +‬ﻧﻘﺎط! )"‬‫ﺑﺤ ﺖ ﻟﻠ‬
‫‪")v print‬ﻟﻘﺪ ر‬

‫ﺑﻤﺠﺮدﺗﻌﺮﻳﻒ اﻟﻘﺎﻣﻮس ‪،‬ﻳ ﺴﺤ ﺐ اﻟﺮﻣﺰ اﻟﻤﻮﺟﻮد ﻋﻨﺪ ‪u‬اﻟﻘﻴﻤ ﺔ‬


‫ﺘﻐﻴﺮ ‪new_points.‬ﻳﺤﻮل اﻟ ﺴﻄﺮ ﻓ ﻲ ‪v‬‬
‫ﺘﻢﺗﺨﺰﻳﻦ ﻫﺬه اﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻤ‬
‫ﺛﻢﻳ‬‫ﺋﻴ ﺴﻴ ﺔ ﻣﻦ اﻟﻘﺎﻣﻮس‪.‬‬
‫ﺑﺎﻟﻨﻘﺎط" اﻟﺮ‬
‫ﺒﻄ ﺔ "‬
‫ﺗ‬‫اﻟﻤﺮ‬
‫ﺘﻮ‪:‬‬ ‫ﺑﻴﺎﻧًﺎ ﺣﻮل ﻋﺪد اﻟﻨﻘﺎط اﻟ‬
‫ﺘ ﻲ ﺣﺼﻞ ﻋﻠﻴﻬﺎ اﻟﻼﻋ ﺐ ﻟﻠ‬ ‫ﺒﻊ‬
‫ﻫﺬه اﻟﻘﻴﻤ ﺔ اﻟﺼﺤﻴﺤ ﺔ إﱃﺳﻠ ﺴﻠ ﺔ وﻳﻄ‬

‫ﺘﻮ ‪5‬ﻧﻘﺎط!‬
‫ﺑﺤ ﺖ ﻟﻠ‬
‫ﻟﻘﺪ ر‬

‫ﺒ ﻲ‪.‬‬
‫ﺘﺮداد ﻗﻴﻤ ﺔ ﻧﻘﻄ ﺔ اﻷﺟﻨ‬
‫ﺘﻢ اﺳ‬
‫ﺘﻢ ﻓﻴﻬﺎ إﺳﻘﺎط ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺘﺸﻐﻴﻞ ﻫﺬا اﻟﺮﻣﺰ ﻓ ﻲ ﻛﻞ ﻣﺮةﻳ‬
‫ﺑ‬‫إذا ﻗﻤ ﺖ‬

‫ﺘﺎح ﺟﺪﻳﺪة‬
‫إﺿﺎﻓ ﺔ أزواج ﻗﻴﻤ ﺔ ﻣﻔ‬
‫ﺗﻴﺢ واﻟﻘﻴﻤ ﺔ إﱃ اﻟﻘﺎﻣﻮس ﻓ ﻲ أي وﻗ ﺖ‪ .‬ﻋﲆ‬
‫اﻟﻘﻮاﻣﻴ ﺲ ﻫ ﻲ ﻫﻴﺎﻛﻞ دﻳﻨﺎﻣﻴﻜﻴ ﺔ ‪ ،‬وﻳﻤﻜﻨﻚ إﺿﺎﻓ ﺔ أزواج ﺟﺪﻳﺪة ﻣﻦ اﻟﻤﻔﺎ‬
‫ﺑﻴﻦ ﻗﻮﺳﻴﻦ‬‫ﺘﺎح اﻟﺠﺪﻳﺪ‬
‫ﺑﺎﻟﻤﻔ‬‫ﺒﻮﻋً ﺎ‬
‫ﺘ‬‫ﺗﻴﺢ ‪،‬ﻳﻤﻜﻨﻚ إﻋﻄﺎء اﺳﻢ اﻟﻘﺎﻣﻮس ﻣ‬
‫ﺜﺎل ‪ ،‬ﻹﺿﺎﻓ ﺔ زوج ﺟﺪﻳﺪ ﻣﻦ ﻗﻴﻢ اﻟﻤﻔﺎ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺳ‬
‫ﺑﻌﻴﻦ ﻣﻊ اﻟﻘﻴﻤ ﺔ اﻟﺠﺪﻳﺪة‪.‬‬
‫ﻣﺮ‬

‫ﺗﻴﻦ إﱃ ﻗﺎﻣﻮس ‪alien_0 :‬ﻣﻠﻒ‬


‫ﺘﻴﻦ ﺟﺪﻳﺪ‬
‫دﻋﻨﺎ ﻧﻀﻴﻒ ﻣﻌﻠﻮﻣ‬
‫ﺘ ﺴﺎﻋﺪﻧﺎ ﻓ ﻲ ﻋﺮض اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ ﻓ ﻲ ﻣﻮﺿﻊ ﻣﺤﺪد ﻋﲆ اﻟﺸﺎﺷ ﺔ‪ .‬ﻟﻨﻀﻊ‬
‫ﺘ ﻲﺳ‬
‫ﺛﻴﺎ ت ‪x‬و ‪y‬ﻟﻠﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ ‪ ،‬واﻟ‬
‫إﺣﺪا‬
‫ً‬
‫ﻋﺎدة ﻓ ﻲ‬ ‫ﺒﺪأ‬
‫ﺛﻴﺎ ت اﻟﺸﺎﺷ ﺔﺗ‬
‫ﺑﻜ ﺴﻞﻷﺳﻔﻞ ﻣﻦ اﻷﻋﲆ‪ .‬ﻧﻈ ًﺮاﻷن إﺣﺪا‬
‫اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ ﻋﲆ اﻟﺤﺎﻓ ﺔ اﻟﻴ ﺴﺮى ﻟﻠﺸﺎﺷ ﺔ ‪25 ،‬‬
‫اﻟﺰاوﻳ ﺔ اﻟﻌﻠﻮﻳ ﺔ اﻟﻴ ﺴﺮى ﻣﻦ اﻟﺸﺎﺷ ﺔ ‪ ،‬ﻓ ﺴﻨﻀﻊ اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ ﻋﲆ اﻟﻴ ﺴﺎر‬

‫‪97-‬ﻗﻮاﻣﻴ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺛﻴﺎ ت ‪y‬ﻋﲆ ﻣﻮﺟ ﺐ‬


‫ﺒﻂ إﺣﺪا‬
‫ﺑﻜ ﺴﻞ ﻣﻦ اﻷﻋﲆ ﻋﻦ ﻃﺮﻳﻖ ﺿ‬
‫ﺛ ﻲ ‪x‬ﻋﲆ ‪0‬و ‪25‬‬
‫ﺒﻂ اﻹﺣﺪا‬
‫ﺣﺎﻓ ﺔ اﻟﺸﺎﺷ ﺔ ﻋﻦ ﻃﺮﻳﻖ ﺿ‬
‫‪25 ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻫﻨﺎ‪:‬‬

‫}‪alien_0 = {'color': 'green'، 'Points': 5‬‬


‫ﺒﺎﻋ ﺔ )‪(alien_0‬‬
‫ﻃ‬

‫‪u alien_0 ['x_position'] = 0‬‬


‫‪v alien_0 ['y_position'] = 25‬‬
‫ﺒﺎﻋ ﺔ )‪(alien_0‬‬
‫ﻃ‬

‫ﺗﻪ‪ .‬ﻓ ﻲ ‪u‬ﻧﻀﻴﻒ‬


‫ﺒﻊ ﻫﺬا اﻟﻘﺎﻣﻮس ‪ ،‬وﻧﻌﺮض ﻟﻘﻄ ﺔ ﻟﻤﻌﻠﻮﻣﺎ‬
‫ﺛﻢ ﻧﻄ‬‫ﺘﺤﺪﻳﺪ ﻧﻔ ﺲ اﻟﻘﺎﻣﻮس اﻟﺬي ﻛﻨﺎ ﻧﻌﻤﻞ ﻣﻌﻪ‪.‬‬
‫ﺑ‬‫ﺒﺪأ‬
‫ﻧ‬
‫ﺘﺎح "‪"x_position‬‬
‫ﺗﻴﺢ واﻟﻘﻴﻤ ﺔ إﱃ اﻟﻘﺎﻣﻮس‪ :‬اﻟﻤﻔ‬
‫ﺟﺎ ﺟﺪﻳﺪًا ﻣﻦ اﻟﻤﻔﺎ‬
‫زو ً‬

‫ﺒﻊ اﻟﻘﺎﻣﻮس اﻟﻤﻌﺪل ‪ ،‬ﻧﺮى زوﺟ ﻲ اﻟﻘﻴﻤ ﺔ‬


‫ﺘﺎح "‪"y_position‬ﻓ ﻲ ‪v.‬ﻋﻨﺪﻣﺎ ﻧﻄ‬
‫ﺒ ﺔ ﻟﻠﻤﻔ‬
‫ﺑﺎﻟﻨ ﺴ‬‫واﻟﻘﻴﻤ ﺔ ‪0.‬ﻧﻔﻌﻞ اﻟﺸ ﻲء ﻧﻔ ﺴﻪ‬
‫ﺘﺎح اﻹﺿﺎﻓﻴﻴﻦ‪:‬‬
‫واﻟﻤﻔ‬

‫}‪{'color': 'green'، 'Points': 5‬‬


‫}‪{'color': 'green'، 'Points': 5، 'y_position': 25، 'x_position': 0‬‬

‫ﺛﻨﺎن اﻷﺻﻠﻴﺎن اﻟﻠﻮن وﻗﻴﻤ ﺔ‬


‫ﺗﻴﺢ واﻟﻘﻴﻤ ﺔ‪.‬ﻳﺤﺪد اﻻ‬
‫ﺑﻌ ﺔ أزواج ﻣﻦ اﻟﻤﻔﺎ‬
‫ﺘﻮي اﻹﺻﺪار اﻷﺧﻴﺮ ﻣﻦ اﻟﻘﺎﻣﻮس ﻋﲆ أر‬
‫ﻳﺤ‬
‫ﺗﻴ ﺐ اﻟﺬي‬
‫ﺘﺮ‬‫ﺑﻖ ﻣﻊ اﻟ‬
‫ﺘﻄﺎ‬
‫ﺘﺎح واﻟﻘﻴﻤ ﺔ ﻻﻳ‬
‫ﺗﻴ ﺐ أزواج اﻟﻤﻔ‬
‫ﺛﻨﺎن آﺧﺮان ﻣﻮﺿﻊ اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ‪ .‬ﻻﺣﻆ أنﺗﺮ‬
‫اﻟﻨﻘﻄ ﺔ ‪ ،‬وﻳﺤﺪد ا‬
‫ﺘﺎح‬
‫ﺑﻴﻦ ﻛﻞ ﻣﻔ‬‫ﺗﺼﺎل‬
‫ﺑﺎﻻ‬‫ﺘﻢ ﻓﻘﻂ‬
‫ﺗﻴﺢ ؛ إﻧﻪﻳﻬ‬
‫ﺑﻪ ﻛﻞ زوج ﻣﻦ ﻗﻴﻢ اﻟﻤﻔﺎ‬‫ﺗﻴ ﺐ اﻟﺬيﺗﺨﺰن‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬
‫ﺘﻢ ‪Python‬‬
‫ﺑﻪ‪ .‬ﻻﺗﻬ‬‫أﺿﻔﻨﺎه‬
‫ﺘﻪ‪.‬‬
‫وﻗﻴﻤ‬

‫ﺑﻘﺎﻣﻮس ﻓﺎرغ‬‫ﺒﺪء‬
‫اﻟ‬
‫ﺒﺪء ﻣﻞء ﻗﺎﻣﻮس ﻓﺎرغ ‪،‬‬
‫ﺛﻢ إﺿﺎﻓ ﺔ ﻛﻞ ﻋﻨﺼﺮ ﺟﺪﻳﺪ إﻟﻴﻬﺎ‪ .‬ﻟ‬‫ﺑﺈﻟﻘﺎء ﻛﻠﻤ ﺔ ﻓﺎرﻏ ﺔ‬‫ﺒﺪء‬ ‫ﻣﻦ اﻟﻤﻼﺋﻢ أﺣﻴﺎﻧًﺎ ‪ ،‬أو ﺣ‬
‫ﺘﻰ ﻣﻦ اﻟﻀﺮوري ‪ ،‬اﻟ‬
‫ﺒﻴﻞ‬
‫ﺑﻪ‪ .‬ﻋﲆﺳ‬‫ﺗﻴﺢ واﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟﺨﺎص‬
‫ﺛﻢ أﺿﻒ ﻛﻞ زوج ﻣﻦ اﻟﻤﻔﺎ‬‫ﺑﻤﺠﻤﻮﻋ ﺔ ﻓﺎرﻏ ﺔ ﻣﻦ اﻷﻗﻮاس‬‫ﺳﺎ‬
‫ﺣﺪد ﻗﺎﻣﻮ ً‬
‫ﺘﺨﺪام ﻫﺬا اﻷﺳﻠﻮ ب‪:‬‬
‫ﺑﺎﺳ‬
‫ﺜﺎل ‪ ،‬إﻟﻴﻚ ﻛﻴﻔﻴ ﺔ إﻧﺸﺎء ﻗﺎﻣﻮس ‪alien_0‬‬
‫اﻟﻤ‬

‫}{ = ‪alien_0‬‬

‫= ]'‪'alien_0 ['color‬أﺧﻀﺮ'‬
‫‪']alien_0‬ﻧﻘﺎط'[ ‪= 5‬‬

‫ﺒﺎﻋ ﺔ )‪(alien_0‬‬
‫ﻃ‬

‫ﺘﺨﺪﻣﻨﺎه‬
‫ﺘﻴﺠ ﺔ ﻫ ﻲ اﻟﻘﺎﻣﻮس اﻟﺬي اﺳ‬
‫ﺛﻢ ﻧﻀﻴﻒ ﻗﻴﻢ اﻟﻠﻮن واﻟﻨﻘﻄ ﺔ إﻟﻴﻪ‪ .‬واﻟﻨ‬ ‫ً‬
‫ﻓﺎرﻏﺎ ‪،‬‬ ‫ﻫﻨﺎ ﻧﺤﺪد ﻗﺎﻣﻮس ‪alien_0‬‬
‫ﺑﻘ ﺔ‪:‬‬
‫ﺜﻠ ﺔ اﻟ ﺴﺎ‬
‫ﻓ ﻲ اﻷﻣ‬

‫}‪{'color': 'green'، 'Points': 5‬‬

‫ﺘﺨﺪم‬
‫ﺘ ﻲﻳﻮﻓﺮ ﻫﺎ اﻟﻤ ﺴ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﺨﺪم ﻗﻮاﻣﻴ ﺲ ﻓﺎرﻏ ﺔ ﻋﻨﺪﺗﺨﺰﻳﻦ اﻟ‬
‫ﺘﺴ‬‫ﻋﺎدة ‪،‬ﺳ‬
‫ﺘﺎح واﻟﻘﻴﻤ ﺔﺗﻠﻘﺎﺋ ًﻴﺎ‪.‬‬ ‫ﺘ ﺐ رﻣ ًﺰاﻳﻮﻟﺪ ﻋﺪدًا ﻛ‬
‫ﺒﻴ ﺮًا ﻣﻦ أزواج اﻟﻤﻔ‬ ‫ﻓ ﻲ ﻗﺎﻣﻮس أو ﻋﻨﺪﻣﺎﺗﻜ‬

‫‪98‬اﻟﻔﺼﻞ ‪6‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻌﺪﻳﻞ ﻗﻴﻤ ﺔ ﻓ ﻲ ﻗﺎﻣﻮس ‪ ،‬أدﺧﻞ اﺳﻢ اﻟﻘﺎﻣﻮس ﻣﻊ وﺿﻊ‬


‫ﺗﻌﺪﻳﻞ اﻟﻘﻴﻢ ﻓ ﻲ ﻗﺎﻣﻮس ﻟ‬
‫ﺒﻴﻞ‬
‫ﺘﺎح‪ .‬ﻋﲆﺳ‬ ‫ﺑﻬﺬا اﻟﻤﻔ‬‫ﺑﻄﻬﺎ‬
‫ﺘ ﻲﺗﺮﻳﺪ ر‬
‫ﺛﻢ اﻟﻘﻴﻤ ﺔ اﻟﺠﺪﻳﺪة اﻟ‬ ‫ﺑﻌﻴﻦ‬ ‫ﺑﻴﻦ ﻗﻮﺳﻴﻦ ﻣﺮ‬ ‫ﺘﺎح‬ ‫اﻟﻤﻔ‬
‫ﺒ ﺔ‪:‬‬
‫ﺘﻐﻴﺮ ﻣﻦ اﻷﺧﻀﺮ إﱃ اﻷﺻﻔﺮ ﻣﻊﺗﻘﺪم اﻟﻠﻌ‬ ‫ﺒﺎرك ﻛﺎﺋﻨًﺎ ﻓﻀﺎﺋ ًﻴﺎﻳ‬‫ﺘ‬‫ﺜﺎل ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬‫اﻟﻤ‬

‫}'‪alien_0 = {'color': 'green‬‬


‫"‬
‫ﺒﺎﻋ ﺔ )"اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ ﻫﻮ )" ‪+ alien_0 ['color'] +".‬‬
‫ﻃ‬

‫= ]'‪'alien_0 ['color‬أﺻﻔﺮ'‬
‫"‬
‫ﺒﺎﻋ ﺔ )"اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ اﻵن )" ‪+ alien_0 ['color'] +".‬‬
‫ﻃ‬

‫ﺘﺎح‬
‫ﺑﺎﻟﻤﻔ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﻐﻴﻴﺮ اﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫ﺑ‬‫ﺛﻢ ﻧﻘﻮم‬‫ﺘﻮي ﻋﲆ ﻟﻮن اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ ﻓﻘﻂ ؛‬ ‫ﻧﺤﺪد أوﻻ ً ﻗﺎﻣﻮ ً‬
‫ﺳﺎ ﻟـ ‪alien_0‬ﻳﺤ‬
‫"اﻟﻠﻮن" إﱃ "اﻷﺻﻔﺮ"‪.‬‬
‫ﺑﺎﻟﻔﻌﻞ ﻣﻦ اﻷﺧﻀﺮ إﱃ اﻷﺻﻔﺮ‪:‬‬‫ﻳﻮﺿﺢ اﻹﺧﺮاج أن اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ ﻗﺪﺗﻐﻴﺮ‬

‫اﻟﻐﺮﻳ ﺐ أﺧﻀﺮ‪.‬‬
‫اﻟﻐﺮﻳ ﺐ اﻵن أﺻﻔﺮ‪.‬‬

‫ﺒﻊ ﻣﻮﻗﻊ ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ‬


‫ﺘ‬‫ﺘ‬‫ﺘﻤﺎم ‪ ،‬دﻋﻨﺎ ﻧ‬
‫ﺛﺎرة ﻟﻼ ﻫ‬
‫ﺜﺮ إ‬
‫ﺜﺎل أﻛ‬
‫ﻟﻠﺤﺼﻮل ﻋﲆ ﻣ‬
‫ﺘﺤﺪﻳﺪ اﻟﻤﺪى‬
‫ﺘﺨﺪﻣﻬﺎ ﻟ‬
‫ﺛﻢ ﻧ ﺴ‬‫ﺜﻞ اﻟ ﺴﺮﻋ ﺔ اﻟﺤﺎﻟﻴ ﺔ ﻟﻠﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ‬
‫ﺘﻠﻔ ﺔ‪.‬ﺳﻨﺨﺰن ﻗﻴﻤ ﺔﺗﻤ‬
‫ﺑ ﺴﺮﻋﺎ ت ﻣﺨ‬‫ﺘﺤﺮك‬
‫ﻳﻤﻜﻦ أنﺗ‬
‫ﺘﺤﺮك ﻓﻴﻪ اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ إﱃ اﻟﻴﻤﻴﻦ‪:‬‬
‫اﻟﺬيﻳﺠ ﺐ أنﻳ‬

‫}'‪alien_0 = {'x_position': 0، 'y_position': 25، 'speed': 'medium‬‬


‫"‬
‫))]'‪+ str (alien_0 ['x_position‬‬
‫ﺒﺎﻋ ﺔ )"ﻣﻮﺿﻊ ‪x‬أﺻﻠ ﻲ‪:‬‬
‫ﻃ‬

‫ﺒ ﻲ إﱃ اﻟﻴﻤﻴﻦ‪.‬‬
‫‪#‬اﻧﻘﻞ اﻷﺟﻨ‬
‫ﺘﻪ اﻟﺤﺎﻟﻴ ﺔ‪.‬‬
‫ﺑﻨﺎ ًء ﻋﲆﺳﺮﻋ‬‫ﺑﻬﺎ اﻟﻔﻀﺎﺋ ﻲ‬‫ﺘﺤﺮك‬
‫ﺘ ﻲﻳﺠ ﺐ أنﻳ‬
‫ﺗﺤﺪﻳﺪ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫‪#‬‬
‫ﺑﻄﻴﺌ ﺔ'‪:‬‬
‫== ]'‪'u if alien_0 ['speed‬‬
‫‪x_increment = 1‬‬
‫ﺘﻮﺳﻂ'‪:‬‬
‫== ]'‪'elif alien_0 ['speed‬ﻣ‬
‫‪x_increment = 2‬‬
‫آﺧﺮ‪:‬‬
‫ﺒ ﻲﺳﺮﻳﻊ‪.‬‬
‫‪#‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻫﺬا أﺟﻨ‬

‫‪x_increment = 3‬‬

‫‪#‬اﻟﻤﻮﺿﻊ اﻟﺠﺪﻳﺪ ﻫﻮ اﻟﻤﺮﻛﺰ اﻟﻘﺪﻳﻢ ﻣﻀﺎﻓﺎ إﻟﻴﻪ اﻟﺰﻳﺎدة‪.‬‬


‫‪v alien_0 ['x_position'] = alien_0 ['x_position'] + x_increment‬‬

‫"‬
‫ﺒﺎﻋ ﺔ )"ﻣﻮﺿﻊ ‪x‬ﺟﺪﻳﺪ‪:‬‬
‫ﻃ‬ ‫))]'‪+ str (alien_0 ['x_position‬‬

‫ﺘﻮﺳﻄ ﺔ"‪ .‬ﻟﻘﺪ ﺣﺬﻓﻨﺎ ﻗﻴﻢ اﻟﻠﻮن واﻟﻨﻘﻄ ﺔ ﻣﻦ أﺟﻞ‬


‫ﺑﻤﻮﻗﻊ ‪x‬اﻷوﻟ ﻲ وﻣﻮﺿﻊ ‪y ،‬وﺳﺮﻋ ﺔ "ﻣ‬‫ﺘﻌﺮﻳﻒ ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ‬
‫ﺑ‬‫ﺒﺪأ‬
‫ﻧ‬
‫ﺒﻊ أ ً‬
‫ﻳﻀﺎ اﻟﻘﻴﻤ ﺔ‬ ‫ﺋﻴ ﺴﻴ ﺔ ﻫﺬه أ ً‬
‫ﻳﻀﺎ‪ .‬ﻧﻄ‬ ‫ﺘﻀﻤﻴﻦ أزواج اﻟﻘﻴﻤ ﺔ اﻟﺮ‬
‫ﺑ‬‫ﺑﻨﻔ ﺲ اﻟﻄﺮﻳﻘ ﺔ إذا ﻗﻤ ﺖ‬‫ﺜﺎلﺳﻴﻌﻤﻞ‬
‫ﺒ ﺴﺎﻃ ﺔ ‪ ،‬وﻟﻜﻦ ﻫﺬا اﻟﻤ‬
‫اﻟ‬
‫ﺘﺤﺮك اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ إﱃ اﻟﻴﻤﻴﻦ‪.‬‬
‫اﻷﺻﻠﻴ ﺔ ﻟـ ‪x_position‬ﻟﻨﺮى إﱃ أي ﻣﺪىﻳ‬

‫ﺘﻐﻴﺮ‬
‫ﺗﺨﺰن ﻫﺬه اﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻤ‬
‫ﺘﺤﺮك اﻟﻔﻀﺎﺋ ﻲ إﱃ اﻟﻴﻤﻴﻦ و‬
‫ﺗﺤﺪدﺳﻠ ﺴﻠ ﺔ ‪if-elif-else‬إﱃ أي ﻣﺪىﻳﺠ ﺐ أنﻳ‬
‫ﻓ ﻲ ‪u،‬‬
‫ﺘﺤﺮك وﺣﺪة واﺣﺪة إﱃ اﻟﻴﻤﻴﻦ ؛ إذا ﻛﺎﻧ ﺖ اﻟ ﺴﺮﻋ ﺔ‬
‫ﺑﻄﻴﺌ ﺔ" ‪ ،‬ﻓﺈﻧﻪﻳ‬
‫‪x_increment.‬إذا ﻛﺎﻧ ﺖﺳﺮﻋ ﺔ اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ "‬
‫ﺗﻴﻦ‬
‫ﺘﺤﺮك ﻣﺮ‬
‫ﺘﻮﺳﻄ ﺔ" ‪ ،‬ﻓﺈﻧﻬﺎﺗ‬
‫"ﻣ‬

‫‪99-‬ﻗﻮاﻣﻴ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻬﺎ إﱃ‬
‫ﺘﻢ إﺿﺎﻓ‬
‫ﺑﻤﺠﺮد ﺣ ﺴﺎ ب اﻟﺰﻳﺎدة ‪،‬ﺗ‬‫ﺛﻼ ث وﺣﺪا ت إﱃ اﻟﻴﻤﻴﻦ‪.‬‬‫ﺘﺤﺮك‬
‫وﺣﺪا ت ﻋﲆ اﻟﻴﻤﻴﻦ وإذا ﻛﺎﻧ ﺖ "ﺳﺮﻳﻌ ﺔ" ‪ ،‬ﻓﺈﻧﻬﺎﺗ‬
‫ﺑﺎﻟﻘﺎﻣﻮس ‪.‬‬‫ﺘﻴﺠ ﺔ ﻓ ﻲ ‪x_position‬اﻟﺨﺎص‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟﻨ‬
‫ﻗﻴﻤ ﺔ ‪x_position‬ﻋﻨﺪ ‪v ،‬وﻳ‬

‫ﺗﻴﻦ إﱃ اﻟﻴﻤﻴﻦ‪:‬‬
‫ﺘﻮﺳﻂ اﻟ ﺴﺮﻋ ﺔ ‪ ،‬ﻓﺈن ﻣﻮﺿﻌﻪﻳﻨﻘﻞ وﺣﺪ‬
‫ﻧﻈ ﺮًاﻷن ﻫﺬا ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ ﻣ‬

‫اﻷﺻﻞ ‪x-position: 0‬‬


‫ﻣﻮﻗﻒ ‪x‬اﻟﺠﺪﻳﺪ‪2 :‬‬

‫ﺛﻨﺎﺋﻴ ﺔ اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ ‪،‬ﻳﻤﻜﻨﻚﺗﻐﻴﻴﺮ اﻟ ﺴﻠﻮك اﻟﻌﺎم‬‫ﺘﻘﻨﻴ ﺔ راﺋﻌ ﺔ ﺟﺪًا‪ :‬ﻣﻦ ﺧﻼلﺗﻐﻴﻴﺮ ﻗﻴﻤ ﺔ واﺣﺪة ﻓ ﻲ‬
‫ﻫﺬه اﻟ‬
‫ﺘﻮﺳﻂ اﻟ ﺴﺮﻋ ﺔ إﱃ ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲﺳﺮﻳﻊ ‪،‬ﻳﻤﻜﻨﻚ إﺿﺎﻓ ﺔ‬
‫ﺘﺤﻮﻳﻞ ﻫﺬا اﻟﻔﻀﺎﺋ ﻲ ﻣ‬
‫ﺜﺎل ‪ ،‬ﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻟﻠﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ‪ .‬ﻋﲆﺳ‬
‫اﻟ ﺴﻄﺮ‪:‬‬

‫= ]'‪alien_0 ['speed‬ﺳﺮﻳﻊ‬

‫ﺒﺮ ﻟـ ‪x_increment‬‬
‫ﺘﻌﻴﻴﻦ ﻗﻴﻤ ﺔ أﻛ‬
‫ﺑ‬‫ﺑﻌﺪ ذﻟﻚ‬
‫ﺘﻠ ﺔ ‪if-elif-else‬‬
‫ﺘﻘﻮم ﻛ‬
‫ﺳ‬
‫ﺘﻢ ﻓﻴﻬﺎﺗﺸﻐﻴﻞ اﻟﻜﻮد‪.‬‬
‫ﺘ ﻲﻳ‬
‫ﺘﺎﻟﻴ ﺔ اﻟ‬
‫ﻓ ﻲ اﻟﻤﺮة اﻟ‬

‫ﺘﺎح اﻟﻘﻴﻤ ﺔ‬
‫إزاﻟ ﺔ أزواج ﻣﻔ‬
‫ﺘﺎح‬
‫ﺒﺎرة ‪del‬ﻹزاﻟ ﺔ زوج اﻟﻤﻔ‬
‫ﺘﺨﺪام ﻋ‬
‫ﺑﺤﺎﺟ ﺔ إﱃ ﺟﺰء ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ ﺻﻴﻐ ﺔ إﻟﻘﺎء ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬‫ﻋﻨﺪﻣﺎ ﻟﻢﺗﻌﺪ‬
‫ﺗﻤﺎﻣﺎ‪.‬‬
‫ً‬ ‫واﻟﻘﻴﻤ ﺔ‬
‫ﺘﺎح اﻟﺬيﺗﺮﻳﺪه‬
‫ﺘﻴﺎﺟﺎ ت ‪ del‬ﻫﻮ اﺳﻢ اﻟﻘﺎﻣﻮس واﻟﻤﻔ‬
‫ﻛﻞ اﺣ‬
‫ﻳﺰﻳﻞ‪.‬‬

‫ﺘﻪ‪:‬‬
‫ﺘﺎح "اﻟﻨﻘﺎط" ﻣﻦ ﻗﺎﻣﻮس ‪alien_0‬ﻣﻊ ﻗﻴﻤ‬
‫ﺜﺎل ‪ ،‬دﻋﻨﺎ ﻧﺰﻳﻞ ﻣﻔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫}‪alien_0 = {'color': 'green'، 'Points': 5‬‬


‫ﺒﺎﻋ ﺔ )‪(alien_0‬‬
‫ﻃ‬

‫‪"]u del alien_0‬ﻧﻘﺎط"[‬


‫ﺒﺎﻋ ﺔ )‪(alien_0‬‬
‫ﻃ‬

‫ﺘﺎح‬
‫ﺑﻬﺬا اﻟﻤﻔ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺋﻴ ﺴﻴ ﺔ ﻣﻦ اﻟﻘﺎﻣﻮس ‪alien_0‬وإزاﻟ ﺔ اﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫ﺑﺤﺬف "اﻟﻨﻘﺎط" اﻟﺮ‬
‫ﺒﺮ اﻟ ﺴﻄﺮ ﻋﻨﺪ ‪u Python‬‬
‫ﻳﺨ‬
‫ﺛﺮ‪:‬‬
‫ﺘﺄ‬
‫ﺑﺎﻗ ﻲ اﻟﻘﺎﻣﻮس ﻟﻢﻳ‬‫ﺒﺎﻟﻐ ﺔ ‪5‬ﻣﻦ اﻟﻨﻄﻖ ‪ary ،‬ﻟﻜﻦ‬
‫ﺘﻬﺎ اﻟ‬
‫ﺋﻴ ﺴﻴ ﺔ وﻗﻴﻤ‬
‫ُﻈﻬﺮ اﻹﺧﺮاج أﻧﻪﺗﻢ ﺣﺬف "اﻟﻨﻘﺎط" اﻟﺮ‬ ‫أ ً‬
‫ﻳﻀﺎ‪.‬ﻳ‬

‫}‪{'color': 'green'، 'Points': 5‬‬


‫}'اﻟﻮن اﻻﺧﻀﺮ'{‬

‫ﺘﺎح واﻟﻘﻴﻤ ﺔ اﻟﻤﺤﺬوف ﻧﻬﺎﺋ ًﻴﺎ‪.‬‬


‫ﻣﺎﻟﺤﻈ ﺔﻳﺠ ﺐ أنﺗﺪرك أﻧﻪﺗﻤ ﺖ إزاﻟ ﺔ زوج اﻟﻤﻔ‬

‫ﺛﻠ ﺔ‬
‫ﻣﻌﺠﻢ ﻛﺎﺋﻨﺎ ت ﻣﻤﺎ‬
‫ﺘﺨﺪام‬ ‫ﺒ ﺔ‪.‬ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﺳ‬ ‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﺣﻮل ﻛﺎﺋﻦ واﺣﺪ ‪ ،‬ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ ﻓ ﻲ ﻟﻌ‬
‫ﺑﻖﺗﺨﺰﻳﻦ أﻧﻮاع ﻣﺨ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺗﻀﻤﻦ اﻟﻤ‬
‫ﺘﺼﻮﻳ ﺖ ﻋﲆ‬
‫ﺘﺮض أﻧﻚﺗﺮﻳﺪ اﻟ‬
‫ﺜﺎل ‪ ،‬ﻟﻨﻔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺨﺰﻳﻦ ﻧﻮع واﺣﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﺣﻮل اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻜﺎﺋﻨﺎ ت‪ .‬ﻋﲆﺳ‬
‫ﻗﺎﻣﻮس ﻟ‬
‫ﻣﻠﻒ‬

‫‪100‬اﻟﻔﺼﻞ اﻟ ﺴﺎدس‬
‫‪Machine Translated by Google‬‬

‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﺑ ﺴﻴﻂ ‪ ،‬ﻣ‬‫ﺘﻄﻼع‬
‫ﺘﺎﺋﺞ اﺳ‬
‫ﺘﺨﺰﻳﻦ ﻧ‬
‫ﺒﺮﻣﺠ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺪﻳﻬﻢ‪ .‬اﻟﻘﺎﻣﻮس ﻣﻔﻴﺪ ﻟ‬
‫ﻋﺪد اﻷﺷﺨﺎص واﺳﺄﻟﻬﻢ ﻋﻦ ﻟﻐ ﺔ اﻟ‬

‫اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ { =‬
‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﺟﻴﻦ"‪" :‬‬
‫"ﺳﺎرة"‪" :‬ج"‪،‬‬
‫ﺑ ﻲ"‪،‬‬
‫"إدوارد"‪" :‬رو‬
‫ﺜﻮن" ‪،‬‬‫ﺑﻴ‬‫"ﻓﻴﻞ"‪" :‬‬
‫}‬

‫ﺘﻄﻼع ‪ ،‬وﻛﻞ ﻗﻴﻤ ﺔ‬


‫ﺘﺎح ﻫﻮ اﺳﻢ اﻟﺸﺨﺺ اﻟﺬي رد ﻋﲆ اﻻﺳ‬
‫ﺒﺮ إﱃ ﻋﺪة أﺳﻄﺮ‪ .‬ﻛﻞ ﻣﻔ‬
‫ﺘﻘ ﺴﻴﻢ ﻗﺎﻣﻮس أﻛ‬
‫ﺑ‬‫ﻛﻤﺎﺗﺮى ‪ ،‬ﻗﻤﻨﺎ‬
‫ﺘﺢ‪.‬‬
‫ﺑﻌﺪ ﻗﻮس اﻟﻔ‬‫ﺘﺎح اﻹدﺧﺎل‬
‫ﺘﻌﺮﻳﻒ اﻟﻘﺎﻣﻮس ‪ ،‬اﺿﻐﻂ ﻋﲆ ﻣﻔ‬
‫ﺜﺮ ﻣﻦﺳﻄﺮ ﻟ‬
‫ﺘﺎج إﱃ أﻛ‬
‫ﺘﺤ‬‫ﺘﻪ‪ .‬ﻋﻨﺪﻣﺎﺗﻌﻠﻢ أﻧﻚﺳ‬
‫ﺘﻴﺎر ﻟﻐ‬
‫ﻫ ﻲ اﺧ‬
‫ﺑﻔﺎﺻﻠ ﺔ‪.‬‬‫ﺒﻮﻋً ﺎ‬
‫ﺘ‬‫ﺗﻴﺢ ‪ ،‬ﻣ‬
‫ﺘ ﺐ أول زوج ﻣﻦ ﻗﻴﻢ اﻟﻤﻔﺎ‬
‫ﺑﻊ ﻣ ﺴﺎﻓﺎ ت( ‪ ،‬واﻛ‬
‫ﺘﻮى واﺣﺪ )أر‬
‫ﺘﺎﻟ ﻲ ﻓ ﻲ ﻣ ﺴ‬
‫ﺑﺎدﺋ ﺔ ﻟﻠ ﺴﻄﺮ اﻟ‬‫ﺛﻢ ﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﻮﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬‫ﺑﻚﺗﻠﻘﺎﺋ ًﻴﺎ‬‫ﺘﺎح اﻹدﺧﺎل ‪،‬ﻳﺠ ﺐ أنﻳﻘﻮم ﻣﺤﺮر اﻟﻨﺼﻮص اﻟﺨﺎص‬
‫ﻣﻦ ﻫﺬه اﻟﻨﻘﻄ ﺔ ﻓﺼﺎﻋﺪًا ﻋﻨﺪ اﻟﻀﻐﻂ ﻋﲆ ﻣﻔ‬
‫ﺗﻴﺢ‪.‬‬
‫ﺑﻖ ﻣﻊ أول زوج ﻣﻦ ﻗﻴﻢ اﻟﻤﻔﺎ‬
‫ﺘﻄﺎ‬
‫ﺘ‬‫ﺘﺎﻟﻴ ﺔ ﻟ‬
‫ﺘﺎح اﻟ‬
‫ﺑﺎدﺋ ﺔ ﻟﺠﻤﻴﻊ أزواج ﻗﻴﻤ ﺔ اﻟﻤﻔ‬

‫ﺘﺎح وﻗﻢ‬
‫ﺑﻌﺪ آﺧﺮ زوج ﻣﻦ اﻟﻘﻴﻤ ﺔ واﻟﻤﻔ‬‫ﺘﻬﺎء ﻣﻦﺗﻌﺮﻳﻒ اﻟﻘﺎﻣﻮس ‪ ،‬أﺿﻒ ﻗﻮس إﻏﻼق ﻋﲆﺳﻄﺮ ﺟﺪﻳﺪ‬
‫ﺑﻤﺠﺮد اﻻﻧ‬
‫ﺑﻌﺪ آﺧﺮ‬‫ﺗﻴﺢ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﻣﻮس‪ .‬ﻣﻦ اﻟﻤﻤﺎرﺳﺎ ت اﻟﺠﻴﺪةﺗﻀﻤﻴﻦ ﻓﺎﺻﻠ ﺔ‬
‫ﺘﻤﺎﺷﻰ ﻣﻊ اﻟﻤﻔﺎ‬
‫ﺑﺤﻴ ﺚﻳ‬‫ﺘﻮى واﺣﺪ‬
‫ﺑﻤ ﺴ‬‫ﺘﻪ‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺘ‬‫ﺑ‬
‫ﺘﺎﻟ ﻲ‪.‬‬
‫ﺘﺎح ﺟﺪﻳﺪ ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟ‬
‫ﺘﻌﺪاد ﻹﺿﺎﻓ ﺔ زوج ﻗﻴﻢ ﻣﻔ‬ ‫ﺗﻴﺢ أ ً‬
‫ﻳﻀﺎ ‪ ،‬ﻟﺬا ﻓﺄﻧ ﺖ ﻋﲆ اﺳ‬ ‫زوج ﻣﻦ ﻗﻴﻢ اﻟﻤﻔﺎ‬

‫ﺘ ﻲﺗ ﺴﺎﻋﺪك ﻋﲆﺗﻨ ﺴﻴﻖ اﻟﻘﻮاﺋﻢ اﻟﻤﻮﺳﻌ ﺔ و ‪dic‬‬


‫ﺑﻌﺾ اﻟﻮﻇﺎﺋﻒ اﻟ‬‫ﻻﻳﻮﺟﺪ ﻟﺪى ﻣﻌﻈﻢ اﻟﻤﺤﺮرﻳﻦ‬
‫ﺘﻨ ﺴﻴﻖ اﻟﻘﻮاﻣﻴ ﺲ اﻟﻄﻮﻳﻠ ﺔ ‪ ،‬ﻟﺬﻟﻚ ﻗﺪﺗﺮىﺗﻨ ﺴﻴ ًﻘﺎ‬
‫ﺒﻮﻟ ﺔ ﻟ‬ ‫ﺘﻮﻓﺮ أ ً‬
‫ﻳﻀﺎ ﻃﺮق أﺧﺮى ﻣﻘ‬ ‫ﺜﺎل‪.‬ﺗ‬
‫ﺑﻬ ﺔ ﻟﻬﺬا اﻟﻤ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﺸﺎ‬
‫‪tionaries‬‬
‫ﺑﻚ أو ﻓ ﻲ ﻣﺼﺎدر أﺧﺮى‪.‬‬‫ﺘﻠ ًﻔﺎ ﻗﻠﻴ ﻼ ً ﻓ ﻲ اﻟﻤﺤﺮر اﻟﺨﺎص‬
‫ﻣﺨ‬

‫ﺘﻪ اﻟﻤﻔﻀﻠ ﺔ‪:‬‬


‫ﺒﺤ ﺚ ﻋﻦ ﻟﻐ‬
‫ﺑ ﺴﻬﻮﻟ ﺔ اﻟ‬‫ﺘﻄﻼع ‪،‬ﻳﻤﻜﻨﻚ‬
‫ﺘﺨﺪام ﻫﺬا اﻟﻘﺎﻣﻮس ‪ ،‬ﻧﻈ ﺮًا ﻻﺳﻢ اﻟﺸﺨﺺ اﻟﺬي ﺷﺎرك ﻓ ﻲ اﻻﺳ‬
‫ﻻﺳ‬

‫اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ { =‬
‫‪favour_ languages.py‬‬ ‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﺟﻴﻦ"‪" :‬‬
‫"ﺳﺎرة"‪" :‬ج"‪،‬‬
‫ﺑ ﻲ"‪،‬‬
‫"إدوارد"‪" :‬رو‬
‫ﺜﻮن" ‪،‬‬‫ﺑﻴ‬‫"ﻓﻴﻞ"‪" :‬‬
‫}‬

‫"‬
‫‪+‬‬
‫‪")u print‬ﻟﻐ ﺔﺳﺎرة اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ ‪favour_languages ['sarah'].‬‬
‫‪v‬اﻟﻌﻨﻮان ‪() +‬‬
‫ث )"‪".‬‬

‫ﺗﻬﺎﺳﺎرة ‪ ،‬ﻧ ﺴﺄل ﻋﻦ اﻟﻘﻴﻤ ﺔ ﻓ ﻲ‪:‬‬


‫ﺘﺎر‬
‫ﺘ ﻲ اﺧ‬
‫ﻟﻤﻌﺮﻓ ﺔ اﻟﻠﻐ ﺔ اﻟ‬

‫]'‪favour_languages ['sarah‬‬

‫ﺗﺞ‬
‫ﺒﺎﻋ ﺔ ﻓ ﻲ ‪v ،‬وﻳﻈﻬﺮ اﻟﻨﺎ‬
‫ﺑﻴﺎن اﻟﻄ‬‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻫﺬا ﻓ ﻲ‬‫ﺘﺨﺪام‬
‫ﺘﻢ اﺳ‬
‫ﻳ‬
‫ﻟﻐ ﺔﺳﺎرة اﻟﻤﻔﻀﻠ ﺔ‪:‬‬

‫ﻟﻐ ﺔﺳﺎرة اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ ‪C.‬‬

‫ﻗﻮاﻣﻴ ﺲ‬ ‫‪101‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎﻋ ﺔ أﻗﺼﺮ ﻣﻦ ﻣﻌﻈﻢ‬


‫ﺒﺮ ﻋﺪة أﺳﻄﺮ‪ .‬إن ﻛﻠﻤ ﺔ ﻃ‬
‫ﺒﺎﻋ ﺔ ﻃﻮﻳﻠ ﺔ ﻋ‬ ‫ﺜﺎل أ ً‬
‫ﻳﻀﺎ ﻛﻴﻒﻳﻤﻜﻨﻚﺗﻘ ﺴﻴﻢ ﺟﻤﻠ ﺔ ﻃ‬ ‫ﻳﻮﺿﺢ ﻫﺬا اﻟﻤ‬
‫ﺒﺔ‬
‫ﺘﺮ ﻧﻘﻄ ﺔ ﻣﻨﺎﺳ‬ ‫ً‬
‫ﺒﺎﺷﺮة‪ .‬اﺧ‬
‫ﺘﺢ ‪u‬ﻣ‬
‫ﺑﻌﺪ ﻗﻮس اﻟﻔ‬‫ﺘﻪ‬
‫ﺒﺎﻋ‬
‫أﺳﻤﺎء اﻟﻘﺎﻣﻮس ‪ ،‬ﻟﺬﻟﻚ ﻣﻦ اﻟﻤﻨﻄﻘ ﻲﺗﻀﻤﻴﻦ اﻟﺠﺰء اﻷول ﻣﻤﺎﺗﺮﻳﺪ ﻃ‬
‫ﺛﻢ اﺿﻐﻂ‬
‫ﺘﻪ ‪ ،‬وأﺿﻒ ﻋﺎﻣﻞﺗﺸﻐﻴﻞﺳﻠ ﺴﻠ ﺔ )‪(+‬ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟ ﺴﻄﺮ اﻷول‪v. .‬اﺿﻐﻂ ﻋﲆ ‪Enter‬‬
‫ﺒﺎﻋ‬
‫ﺘﻢ ﻃ‬
‫ﻟﻜ ﺴﺮ ﻋﻨﺪ ﻫﺎ ﻣﺎﻳ‬
‫ﺘﻬﺎء ﻣﻦ‬
‫ﺒﺎﻋ ﺔ ‪ .‬ﻋﻨﺪ اﻻﻧ‬
‫ﺑﻴﺎن اﻟﻄ‬‫ﺑﺎدﺋ ﺔ واﺣﺪة أﺳﻔﻞ‬‫ﺘﻮى ﻣ ﺴﺎﻓ ﺔ‬
‫ﺘﺎﻟﻴ ﺔ ﻋﻨﺪ ﻣ ﺴ‬
‫ﺘﺎح ‪Tab‬ﻟﻤﺤﺎذاة ﺟﻤﻴﻊ اﻷﺳﻄﺮ اﻟ‬
‫ﻋﲆ ﻣﻔ‬
‫ﺒﺎﻋ ﺔ ‪w.‬‬
‫ﺘﻠ ﺔ اﻟﻄ‬
‫ﺑﻚ ‪،‬ﻳﻤﻜﻨﻚ وﺿﻊ ﻗﻮس اﻹﻏﻼق ﻋﲆ اﻟ ﺴﻄﺮ اﻷﺧﻴﺮ ﻣﻦ ﻛ‬‫إﻧﺸﺎء اﻹﺧﺮاج اﻟﺨﺎص‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﺨﺰﻳﻦ ﻣﻌﻠﻮﻣﺎ ت ﻋﻦ ﺷﺨﺺﺗﻌﺮﻓﻪ‪.‬‬


‫ﺳﺎ ﻟ‬
‫ﺘﺨﺪم ﻗﺎﻣﻮ ً‬
‫‪6-1.‬اﻟﺸﺨﺺ‪ :‬اﺳ‬
‫ﺜﻞ‬
‫ﺗﻴﺢ ﻣ‬
‫ﺘ ﻲﻳﻌﻴﺸﻮن ﻓﻴﻬﺎ‪.‬ﻳﺠ ﺐ أنﻳﻜﻮن ﻟﺪﻳﻚ ﻣﻔﺎ‬
‫ﺘﺨﺰﻳﻦ اﻻﺳﻢ اﻷول واﺳﻢ اﻟﻌﺎﺋﻠ ﺔ واﻟﻌﻤﺮ واﻟﻤﺪﻳﻨ ﺔ اﻟ‬
‫ﺑ‬‫ﻗﻢ‬
‫ﺒﻊ ﻛﻞ ﻣﻌﻠﻮﻣ ﺔ ﻣﺨﺰﻧ ﺔ ﻓ ﻲ ﻗﺎﻣﻮﺳﻚ‪.‬‬
‫‪First_name‬و ‪last_name‬واﻟﻌﻤﺮ واﻟﻤﺪﻳﻨ ﺔ ‪ .‬اﻃ‬

‫ﺘﺨﺰﻳﻦ اﻷرﻗﺎم اﻟﻤﻔﻀﻠ ﺔ ﻟﻸﺷﺨﺎص‪.‬‬


‫ﺳﺎ ﻟ‬
‫ﺘﺨﺪم ﻗﺎﻣﻮ ً‬
‫‪6-2.‬اﻷرﻗﺎم اﻟﻤﻔﻀﻠ ﺔ‪ :‬اﺳ‬
‫ﺘﺨﺰﻳﻦ ﻛﻞ‬
‫ﺑ‬‫ﺗﻴﺢ ﻓ ﻲ ﻗﺎﻣﻮﺳﻚ‪ .‬ﻓﻜﺮ ﻓ ﻲ رﻗﻢ ﻣﻔﻀﻞ ﻟﻜﻞ ﺷﺨﺺ ‪ ،‬وﻗﻢ‬
‫ﺘﺨﺪﻣﻬﺎ ﻛﻤﻔﺎ‬
‫ﻓﻜﺮ ﻓ ﻲ ﺧﻤ ﺴ ﺔ أﺳﻤﺎء ‪ ،‬واﺳ‬
‫ﺑﻌﺾ‬‫ﺘﻄﻠﻊ آراء‬
‫ﺘﻌ ﺔ ‪ ،‬اﺳ‬
‫ﺒﻊ اﺳﻢ ﻛﻞ ﺷﺨﺺ ورﻗﻤﻪ اﻟﻤﻔﻀﻞ‪ .‬ﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤ‬
‫ﻣﻨﻬﺎ ﻛﻘﻴﻤ ﺔ ﻓ ﻲ ﻗﺎﻣﻮﺳﻚ‪ .‬اﻃ‬
‫ﺒﺮﻧﺎﻣﺠﻚ‪.‬‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻔﻌﻠﻴ ﺔ ﻟ‬
‫ﺑﻌﺾ اﻟ‬‫اﻷﺻﺪﻗﺎء واﺣﺼﻞ ﻋﲆ‬

‫ﺘﺨﺪام ﻗﺎﻣﻮس ‪Python‬ﻟﻨﻤﺬﺟ ﺔ ﻗﺎﻣﻮس ﻓﻌﻠ ﻲ‪.‬‬


‫‪6-3.‬اﻟﻤ ﺴﺮد‪:‬ﻳﻤﻜﻦ اﺳ‬
‫ﺒﺎس ‪ ،‬دﻋﻨﺎ ﻧ ﺴﻤﻴﻬﺎ ﻣ ﺴﺮدًا‪.‬‬
‫ﺘ‬‫ﺘﺠﻨ ﺐ اﻻﻟ‬
‫وﻣﻊ ذﻟﻚ ‪ ،‬ﻟ‬

‫ﺗﻴﺢ ﻓ ﻲ ﻣ ﺴﺮد‬
‫ﺘﺨﺪم ﻫﺬه اﻟﻜﻠﻤﺎ ت ﻛﻤﻔﺎ‬
‫ﺑﻘ ﺔ‪ .‬اﺳ‬
‫ﺘﻬﺎ ﻓ ﻲ اﻟﻔﺼﻮل اﻟ ﺴﺎ‬
‫ﺑﺮﻣﺠ ﺔﺗﻌﻠﻤ‬‫•ﻓﻜﺮ ﻓ ﻲ ﺧﻤ ﺲ ﻛﻠﻤﺎ ت‬
‫ﺘﺨﺰﻳﻦ ﻣﻌﺎﻧﻴﻬﺎ ﻛﻘﻴﻢ‪.‬‬
‫ﺑ‬‫ﺑﻚ ‪ ،‬وﻗﻢ‬‫اﻟﻤﺼﻄﻠﺤﺎ ت اﻟﺨﺎص‬

‫ﺑﺪﻗ ﺔ‪.‬ﻳﻤﻜﻨﻚ‬‫ﺒﺎﻋ ﺔ ﻛﻞ ﻛﻠﻤ ﺔ وﻣﻌﻨﺎ ﻫﺎ ﻛﺈﺧﺮاج ﻣﻨ ﺴﻖ‬


‫•ﻃ‬
‫ﺒﻊ ﻣﻌﻨﺎ ﻫﺎ ﻣﻊ وﺿﻊ‬
‫ﺛﻢ اﻃ‬‫ﺒﻊ اﻟﻜﻠﻤ ﺔ ﻋﲆﺳﻄﺮ واﺣﺪ‬
‫ﺛﻢ ﻣﻌﻨﺎ ﻫﺎ ‪ ،‬أو اﻃ‬‫ﺘﻴﻦ‬
‫ﺑﻨﻘﻄ‬‫ﺒﻮﻋ ﺔ‬
‫ﺘ‬‫ﺒﻊ اﻟﻜﻠﻤ ﺔ ﻣ‬
‫اﻃ‬
‫ﺑﻴﻦ ﻛﻞ زوج ذي‬‫ﺘﺨﺪم ﺣﺮف اﻟ ﺴﻄﺮ اﻟﺠﺪﻳﺪ )‪(\ n‬ﻹدراجﺳﻄﺮ ﻓﺎرغ‬
‫ﺜﺎﻧ ﻲ‪ .‬اﺳ‬
‫ﺑﺎدﺋ ﺔ ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟ‬‫ﻣ ﺴﺎﻓ ﺔ‬
‫ﻣﻌﻨﻰ ﻛﻠﻤ ﺔ ﻓ ﻲ اﻹﺧﺮاج‪.‬‬

‫ﺘﻜﺮار ﻣﻦ ﺧﻼل ﻗﺎﻣﻮس‬


‫اﻟ‬
‫ﺋﻴ ﺴﻴ ﺔ أو ﻣﻼﻳﻴﻦ اﻷزواج‪ .‬ﻧﻈ ًﺮاﻷن اﻟﻘﺎﻣﻮس‬
‫ﺘﻮي ﻗﺎﻣﻮس ‪Python‬اﻟﻔﺮدي ﻋﲆ ﻋﺪد ﻗﻠﻴﻞ ﻣﻦ أزواج اﻟﻘﻴﻢ اﻟﺮ‬
‫ﻳﻤﻜﻦ أنﻳﺤ‬
‫ﺘﺨﺪام‬
‫ﺘﻴﺢ ﻟﻚ إﺟﺮاء ﺣﻠﻘ ﺔ ﺧﻼل اﻟﻘﺎﻣﻮس‪.‬ﻳﻤﻜﻦ اﺳ‬
‫ﺗ‬‫ﺒﻴﺎﻧﺎ ت ‪ ،‬ﻓﺈن ‪Python‬‬
‫ﺒﻴﺮة ﻣﻦ اﻟ‬
‫ﺘﻮي ﻋﲆ ﻛﻤﻴﺎ ت ﻛ‬
‫ﻳﻤﻜﻦ أنﻳﺤ‬
‫ﺒﺮ ﺟﻤﻴﻊ‬
‫ﺘﻜﺮار ﻣﻦ ﺧﻼﻟﻬﺎ‪.‬ﻳﻤﻜﻨﻚ اﻟﻤﺮور ﻋ‬
‫ﺘﻠﻔ ﺔ ﻟﻠ‬
‫ﺑﻌﺪة ﻃﺮق ؛ ﻟﺬﻟﻚ ‪،‬ﺗﻮﺟﺪ ﻋﺪة ﻃﺮق ﻣﺨ‬‫ﺘﺨﺰﻳﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‬
‫اﻟﻘﻮاﻣﻴ ﺲ ﻟ‬
‫ﺗﻴﺤﻪ ‪ ،‬أو ﻣﻦ ﺧﻼل ﻗﻴﻤﻪ‪.‬‬
‫ﺘﺎح ﻟﻠﻘﺎﻣﻮس ‪ ،‬ﻣﻦ ﺧﻼل ﻣﻔﺎ‬
‫أزواج اﻟﻘﻴﻤ ﺔ واﻟﻤﻔ‬

‫‪102‬اﻟﻔﺼﻞ اﻟ ﺴﺎدس‬
‫‪Machine Translated by Google‬‬

‫ﺋﻴ ﺴﻴ ﺔ‬
‫ﺒﺮ ﺟﻤﻴﻊ أزواج اﻟﻘﻴﻤ ﺔ اﻟﺮ‬
‫ﺘﻜﺮار ﻋ‬
‫اﻟ‬
‫ﺘﺨﺪم ﻋﲆ ﻣﻮﻗﻊ‬
‫ﺘﺨﺰﻳﻦ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﻣ ﺴ‬
‫ﺘﻜﺮار اﻟﺤﻠﻘ ﻲ ‪ ،‬دﻋﻨﺎ ﻧﻔﻜﺮ ﻓ ﻲ ﻗﺎﻣﻮس ﺟﺪﻳﺪ ﻣﺼﻤﻢ ﻟ‬
‫ﺘﻠﻔ ﺔ ﻟﻠ‬
‫ﺘﻜﺸﻒ اﻟﻄﺮق اﻟﻤﺨ‬
‫ﺒﻞ أن ﻧ ﺴ‬
‫ﻗ‬
‫وﻳ ﺐ‪.‬‬
‫ﺘﺨﺪم واﻻﺳﻢ اﻷول واﻻﺳﻢ اﻷﺧﻴﺮ ﻟﺸﺨﺺ واﺣﺪ‪:‬‬
‫ﺘﺨﺰﻳﻦ اﺳﻢ اﻟﻤ ﺴ‬
‫ﺑ‬‫ﺘﺎﻟ ﻲ‬
‫ﻳﻘﻮم اﻟﻘﺎﻣﻮس اﻟ‬

‫{ = ‪user_0‬‬
‫ﺘﺨﺪم"‪"efermi"، :‬‬
‫"اﺳﻢ اﻟﻤ ﺴ‬
‫‪"first": "enrico"،‬‬
‫"آﺧﺮ"‪" :‬ﻓﻴﺮﻣ ﻲ"‪،‬‬
‫}‬

‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ‪ .‬وﻟﻜﻦ ﻣﺎذا ﻟﻮ أرد ت رؤﻳ ﺔ ﻛﻞ‬‫ﺘﻪ‬


‫ﺑﻨﺎ ًء ﻋﲆ ﻣﺎﺗﻌﻠﻤ‬
‫ﻳﻤﻜﻨﻚ اﻟﻮﺻﻮل إﱃ أي ﻣﻌﻠﻮﻣ ﺔ ﻓﺮدﻳ ﺔ ﺣﻮل ‪user_0‬‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪for :‬‬
‫ﺑﺎﺳ‬‫ﺒﺮ اﻟﻘﺎﻣﻮس‬
‫ﺑﺬﻟﻚ ‪،‬ﻳﻤﻜﻨﻚ اﻟﻤﺮور ﻋ‬‫ﺘﺨﺪم؟ ﻟﻠﻘﻴﺎم‬
‫ﺷ ﻲء ﻣﺨﺰن ﻓ ﻲ ﻗﺎﻣﻮس ﻫﺬا اﻟﻤ ﺴ‬

‫‪user.py‬‬ ‫{ = ‪user_0‬‬
‫ﺘﺨﺪم"‪"efermi"، :‬‬
‫"اﺳﻢ اﻟﻤ ﺴ‬
‫‪"first": "enrico"،‬‬
‫"آﺧﺮ"‪" :‬ﻓﻴﺮﻣ ﻲ"‪،‬‬
‫}‬

‫ﺘﺎح ‪ ،‬اﻟﻘﻴﻤ ﺔ ﻓ ﻲ ‪user_0.items ():‬‬


‫‪u‬ﻟﻠﻤﻔ‬
‫ﺘﺎح(‬
‫ﺘﺎح‪+ ":‬ﻣﻔ‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬اﻟﻤﻔ‬
‫‪v‬ﻃ‬
‫‪")w print‬اﻟﻘﻴﻤ ﺔ‪+ ":‬اﻟﻘﻴﻤ ﺔ(‬

‫ﺘﺎح واﻟﻘﻴﻤ ﺔ ﻓ ﻲ ﻛﻞ زوج‬


‫ﺘﻐﻴﺮﻳﻦ اﻟﻠﺬﻳﻦﺳﻴﺤﻤﻼن اﻟﻤﻔ‬
‫ﺑ ﺔ ﺣﻠﻘ ﺔ ‪for‬ﻟﻘﺎﻣﻮس ‪،‬ﻳﻤﻜﻨﻚ إﻧﺸﺎء أﺳﻤﺎء ﻟﻠﻤ‬
‫ﺘﺎ‬
‫ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ ‪u ،‬ﻟﻜ‬
‫ﺘﺼﺎرا تﻷﺳﻤﺎء‬
‫ﺘﺨﺪﻣ ﺖ اﻻﺧ‬ ‫ﺘﻐﻴﺮﻳﻦ‪.‬ﺳﻴﻌﻤﻞ ﻫﺬا اﻟﺮﻣﺰ أ ً‬
‫ﻳﻀﺎ إذا ﻛﻨ ﺖ ﻗﺪ اﺳ‬ ‫ﺘﻴﺎر أي أﺳﻤﺎءﺗﺮﻳﺪ ﻫﺎ ﻟﻬﺬﻳﻦ اﻟﻤ‬
‫ﺗﻴﺢ‪.‬ﻳﻤﻜﻨﻚ اﺧ‬
‫ﻣﻦ ﻗﻴﻢ اﻟﻤﻔﺎ‬
‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﺘﻐﻴﺮا ت ‪ ،‬ﻣ‬
‫اﻟﻤ‬

‫ﻟـ ‪k ، v‬ﻓ ﻲ )( ‪user_0.items‬‬

‫ﺒﺎرة ‪for at u‬اﺳﻢ ‪dic‬‬


‫ﺜﺎﻧ ﻲ ﻣﻦ ﻋ‬
‫ﺘﻀﻤﻦ اﻟﻨﺼﻒ اﻟ‬
‫ﻳ‬

‫ﺋﻴ ﺴﻴ ﺔ‪.‬‬
‫ﺑﺄزواج اﻟﻘﻴﻤ ﺔ اﻟﺮ‬‫ُﺮﺟﻊ ﻗﺎﺋﻤ ﺔ‬
‫ﺘ ﻲﺗ‬
‫ﺑﻌﻨﺎﺻﺮ اﻟﻄﺮﻳﻘ ﺔ ‪() ،‬واﻟ‬‫ﺒﻮﻋً ﺎ‬
‫ﺘ‬‫‪tionary‬ﻣ‬
‫ﺘﻐﻴﺮﻳﻦ اﻟﻤﻘﺪﻣﻴﻦ‪.‬‬
‫ﺘﺨﺰﻳﻦ ﻛﻞ ﻣﻦ ﻫﺬه اﻷزواج ﻓ ﻲ اﻟﻤ‬
‫ﺑ‬‫ﺛﻢﺗﻘﻮم ﺣﻠﻘ ﺔ ‪for‬‬
‫ﺒﺎﻋ ﺔ اﻷوﱃ‬
‫ﺒﻄ ﺔ ‪w .‬ﻳﻀﻤﻦ "‪" \ n‬ﻓ ﻲ ﺟﻤﻠ ﺔ اﻟﻄ‬
‫ﺗ‬‫ﺑﺎﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬‫ﺒﻮﻋً ﺎ‬
‫ﺘ‬‫ﺘﺎح ‪v ،‬ﻣ‬
‫ﺒﺎﻋ ﺔ ﻛﻞ ﻣﻔ‬
‫ﺘﻐﻴﺮا ت ﻟﻄ‬
‫ﺘﺨﺪم اﻟﻤ‬
‫ﺑﻖ ‪ ،‬ﻧ ﺴ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﻓ ﻲ اﻟﻤ‬
‫ﺗﻴﺢ واﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻹﺧﺮاج‪:‬‬
‫ﺒﻞ ﻛﻞ زوج ﻣﻦ اﻟﻤﻔﺎ‬
‫إدﺧﺎلﺳﻄﺮ ﻓﺎرغ ﻗ‬

‫ﺘﺎح‪ :‬اﻷﺧﻴﺮ‬
‫اﻟﻤﻔ‬
‫اﻟﻘﻴﻤ ﺔ‪ :‬ﻓﻴﺮﻣ ﻲ‬

‫ﺘﺎح‪ :‬أوﻻ‬ ‫اﻟﻤﻔ‬


‫اﻟﻘﻴﻤ ﺔ‪ :‬إﻧﺮﻳﻜﻮ‬

‫ﺘﺨﺪم‬
‫ﺘﺎح‪ :‬اﺳﻢ اﻟﻤ ﺴ‬
‫اﻟﻤﻔ‬
‫اﻟﻘﻴﻤ ﺔ‪efermi :‬‬

‫ـ‪103‬اﻟﻘﻮاﻣﻴ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺮ‬
‫ﺘﻨﻘﻞ ﻋ‬
‫ﺘﻰ ﻋﻨﺪ اﻟ‬
‫ﺑﻪ ‪ ،‬ﺣ‬‫ﺗﻴ ﺐ اﻟﺬيﺗﻢﺗﺨﺰﻳﻨﻬﺎ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺘﻢ إرﺟﺎﻋﻬﺎ‬
‫ﺗﻴﺢ واﻟﻘﻴﻤ ﺔ ﻻﻳ‬
‫ﻻﺣﻆ ﻣﺮة أﺧﺮى أن أزواج اﻟﻤﻔﺎ‬
‫ﺗﻴﺢ‬
‫ﺑﻴﻦ اﻟﻤﻔﺎ‬‫ﺗﺼﺎﻻ ت‬
‫ﺒﻊ ﻓﻘﻂ اﻻ‬
‫ﺘ‬‫ﺘ‬‫ﺋﻴ ﺴﻴ ﺔ ﻓﻴﻪ ؛ﻳ‬
‫ﺘﻢﺗﺨﺰﻳﻦ أزواج اﻟﻘﻴﻤ ﺔ اﻟﺮ‬
‫ﺗﻴ ﺐ اﻟﺬيﻳ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬
‫ﺘﻢ ‪Python‬‬
‫اﻟﻘﺎﻣﻮس‪ .‬ﻻﺗﻬ‬
‫اﻟﻔﺮدﻳ ﺔ وﻗﻴﻤﻬﺎ‪.‬‬

‫ﺑﺸﻜﻞ ﺧﺎص ﻓ ﻲ اﻹﻟﻘﺎء‬‫ﺋﻴ ﺴﻴ ﺔﻳﻌﻤﻞ ﺟﻴﺪًا‬


‫ﺒﺮ ﺟﻤﻴﻊ أزواج اﻟﻘﻴﻤ ﺔ اﻟﺮ‬
‫ﺘﻜﺮار ﻋ‬
‫اﻟ‬
‫ﺜﺎل ‪favour_languages.py‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪101 ،‬واﻟﺬيﻳﺨﺰن ﻧﻔ ﺲ اﻟﻨﻮع ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻟﻠﻌﺪﻳﺪ ﻣﻦ‬
‫ﺜﻞ ﻣ‬
‫‪aries‬ﻣ‬
‫ﺘﺤﺼﻞ ﻋﲆ اﺳﻢ ﻛﻞ ﺷﺨﺺ ﻓ ﻲ ‪tionary‬‬
‫ﺘﻜﺮار ﻣﻦ ﺧﻼل ﻗﺎﻣﻮس اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ ‪ ،‬ﻓ ﺴ‬
‫ﺑﺎﻟ‬‫ﺘﻠﻔ ﺔ‪ .‬إذا ﻗﻤ ﺖ‬
‫ﺗﻴﺢ اﻟﻤﺨ‬
‫اﻟﻤﻔﺎ‬
‫ﺘﺨﺪم‬
‫ﺋﻤﺎ ﻟﻐ ﺔ ‪ ،‬ﻓ ﺴﻨ ﺴ‬
‫ﺋﻤﺎ إﱃ اﺳﻢ اﻟﺸﺨﺺ واﻟﻘﻴﻤ ﺔ ﻫ ﻲ دا ً‬
‫ﺗﻴﺢﺗﺸﻴﺮ دا ً‬
‫ﺒﺮﻣﺠ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺪﻳﻬﻢ‪ .‬ﻧﻈ ﺮًاﻷن اﻟﻤﻔﺎ‬
‫‪dic‬وﻟﻐ ﺔ اﻟ‬
‫ﺑﻌ ﺔ ﻣﺎﻳﺤﺪ ث داﺧﻞ اﻟﺤﻠﻘ ﺔ‪:‬‬
‫ﺘﺎ‬ ‫ﺑﺪﻻ ً ﻣﻦ اﻟﻤﻔ‬
‫ﺘﺎح واﻟﻘﻴﻤ ﺔ ‪.‬ﺳﻴ ﺴﻬﻞ ﻫﺬا ﻣ‬ ‫ﺘﻐﻴﺮا ت واﻟﻠﻐ ﺔ ﻓ ﻲ اﻟﺤﻠﻘ ﺔ‬
‫اﺳﻢ اﻟﻤ‬

‫اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ { =‬
‫‪favour_ languages.py‬‬ ‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﺟﻴﻦ"‪" :‬‬
‫"ﺳﺎرة"‪" :‬ج"‪،‬‬
‫ﺑ ﻲ"‪،‬‬
‫"إدوارد"‪" :‬رو‬
‫ﺜﻮن" ‪،‬‬‫ﺑﻴ‬‫"ﻓﻴﻞ"‪" :‬‬
‫}‬

‫‪u‬ﻟﻼﺳﻢ واﻟﻠﻐ ﺔ ﻓ ﻲ ‪favour_languages.items ():‬‬


‫"‬
‫‪v print (name.title () +‬اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‬ ‫‪+‬‬
‫)"‪language.title () + ".‬‬

‫ﺗﻴﺢ ﻓ ﻲ اﻟﻘﺎﻣﻮس‪ .‬ﻧﻈ ﺮًاﻷﻧﻪﻳﻌﻤﻞ‬


‫ﺒﺮ ﻛﻞ زوج ﻣﻦ ﻗﻴﻢ اﻟﻤﻔﺎ‬
‫ﺘﻜﺮار ﻋ‬
‫ﺑﺎﻟ‬‫ﺒﺮ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓ ﻲ ‪u Python‬أنﻳﻘﻮم‬
‫ﻳﺨ‬
‫ﺘﻐﻴﺮة‪.‬ﺗ ﺴﻬﻞ ﻫﺬه اﻷﺳﻤﺎء‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻠﻐ ﺔ اﻟﻤ‬
‫ﺘﻐﻴﺮ ﻗﺎدر ‪ ،‬وﻳ‬
‫ﺘﺎح ﻓ ﻲ اﺳﻢ ﻣ‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟﻤﻔ‬
‫ﻣﻦ ﺧﻼل ﻛﻞ زوج ‪،‬ﻳ‬
‫ﺒﺎرة ‪print‬ﻓ ﻲ ‪v.‬‬
‫اﻟﻮﺻﻔﻴ ﺔ رؤﻳ ﺔ ﻣﺎﺗﻔﻌﻠﻪ ﻋ‬

‫ﺘﻄﻼع‪:‬‬
‫ﺒﺮﻣﺠﻴ ﺔ ‪،‬ﻳﻤﻜﻨﻨﺎ ﻋﺮض ﺟﻤﻴﻊ اﻟﻤﻌﻠﻮﻣﺎ ت ﻣﻦ اﻻﺳ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻀﻌ ﺔ أﺳﻄﺮ ﻣﻦ اﻟ‬‫اﻵن ‪ ،‬ﻓ ﻲ‬

‫ﺜﻮن‪.‬‬‫ﺑﺎﻳ‬‫ﻟﻐ ﺔ ﺟﻴﻦ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‬


‫ﻟﻐ ﺔﺳﺎرة اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ ‪C.‬‬
‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬ ‫ﻟﻐ ﺔ ﻓﻴﻞ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‬
‫ﺑ ﻲ‪.‬‬
‫ﻟﻐ ﺔ إدوارد اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ رو‬

‫ﺘﻰ ﻣﻠﻴﻮن ﺷﺨﺺ‪.‬‬


‫ﺘﻄﻼع أﻟﻒ أو ﺣ‬
‫ﺘﺎﺋﺞ ﻣﻦ اﺳ‬
‫ﺘﺨﺰﻳﻦ اﻟﻨ‬
‫ﺑ‬ ‫ﺳﻴﻌﻤﻞ ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻟﺤﻠﻘﺎ ت أ ً‬
‫ﻳﻀﺎ إذا ﻗﺎم ﻗﺎﻣﻮﺳﻨﺎ‬

‫ﺗﻴﺢ ﻓ ﻲ اﻟﻘﺎﻣﻮس‬
‫ﺘﻜﺮار ﻣﻦ ﺧﻼل ﺟﻤﻴﻊ اﻟﻤﻔﺎ‬
‫اﻟ‬
‫ﺘﻘﻞ ﻣﻦ ﺧﻼل‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻛﻞ اﻟﻘﻴﻢ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﻣﻮس‪ .‬دﻋﻨﺎ ﻧﻨ‬
‫ﺘﺎج إﱃ اﻟ‬
‫ﺗﻴﺢ )(ﻣﻔﻴﺪة ﻋﻨﺪﻣﺎ ﻻﺗﺤ‬
‫ﺗﻌﺪ ﻃﺮﻳﻘ ﺔ اﻟﻤﻔﺎ‬
‫ﺘﻄﻼع‪:‬‬
‫ﺒﻊ أﺳﻤﺎء ﻛﻞ ﻣﻦ ﺷﺎرك ﻓ ﻲ اﻻﺳ‬
‫ﻗﺎﻣﻮس اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ وﻧﻄ‬

‫اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ { =‬
‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﺟﻴﻦ"‪" :‬‬
‫"ﺳﺎرة"‪" :‬ج"‪،‬‬
‫ﺑ ﻲ"‪،‬‬
‫"إدوارد"‪" :‬رو‬
‫ﺜﻮن" ‪،‬‬‫ﺑﻴ‬‫"ﻓﻴﻞ"‪" :‬‬
‫}‬

‫‪104‬اﻟﻔﺼﻞ ‪6‬‬
‫‪Machine Translated by Google‬‬

‫ش ﻟﻼﺳﻢ ﻓ ﻲ ‪favourite_languages.keys ():‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(name.title‬‬
‫ﻃ‬

‫ﺘﻐﻴﺮ‪.‬ﻳﻈﻬﺮ‬
‫ﺗﻴﺢ ﻣﻦ ﻗﺎﻣﻮس اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ وﻳﺨﺰﻧﻬﺎ واﺣﺪًاﺗﻠﻮ اﻵﺧﺮ ﻓ ﻲ اﺳﻢ اﻟﻤ‬
‫ﺜﻮن أنﻳ ﺴﺤ ﺐ ﻛﻞ اﻟﻤﻔﺎ‬
‫ﺑﺎﻳ‬
‫ﺒﺮ اﻟ ﺴﻄﺮ ﻓ ﻲ ‪u‬‬
‫ﻳﺨ‬
‫ﺘﻄﻼع‪:‬‬
‫ﺗﺞ أﺳﻤﺎء ﻛﻞ ﻣﻦ ﺷﺎرك ﻓ ﻲ اﻻﺳ‬
‫اﻟﻨﺎ‬

‫ﺟﻴﻦ‬
‫ﺳﺎره‬
‫ﻓﻴﻞ‬
‫إدوارد‬

‫ﺗﻤﺎﻣﺎ إذا‬
‫ً‬ ‫ﺘﻜﺮار ﺧﻼل اﻟﻘﺎﻣﻮس ‪ ،‬ﻟﺬﻟﻚﺳﻴﻜﻮن ﻟﻬﺬا اﻟﺮﻣﺰ ﻧﻔ ﺲ اﻹﺧﺮاج‬
‫ﺘﺮاﺿ ﻲ ﻋﻨﺪ اﻟ‬
‫ﺗﻴﺢ ﻫﻮ ﻓ ﻲ اﻟﻮاﻗﻊ اﻟ ﺴﻠﻮك اﻻﻓ‬
‫ﺒﺮ اﻟﻤﻔﺎ‬
‫ﺘﻜﺮار ﻋ‬
‫اﻟ‬
‫ﻛﻨ ﺖ‬
‫ﺘ ﺐ‪. . .‬‬
‫ﻛ‬

‫ﺑﺎﻟﻠﻐﺎ ت اﻟﻤﻔﻀﻠ ﺔ‪:‬‬‫ﻟﻼﺳﻢ‬

‫‪ . .‬ﺑﺪﻻ ﻣﻦ ‪.‬‬

‫ﻟﻼﺳﻢ ﻓ ﻲ ‪favourite_languages.keys ():‬‬

‫ﺒﺮﻣﺠﻴ ﺔ أﺳﻬﻞ ‪ ،‬أوﻳﻤﻜﻨﻚ‬


‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﺸﻜﻞ ﺻﺮﻳﺢ إذا ﻛﺎﻧ ﺖﺗﺠﻌﻞ ﻗﺮاءة اﻟ‬
‫ﺗﻴﺢ )(‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻟﻤﻔﺎ‬
‫ﺘﻴﺎر اﺳ‬
‫ﻳﻤﻜﻨﻚ اﺧ‬
‫ﺣﺬﻓﻬﺎ إذا ﻛﻨ ﺖﺗﺮﻏ ﺐ ﻓ ﻲ ذﻟﻚ‪.‬‬
‫ﺒﻊ رﺳﺎﻟ ﺔ إﱃ زوﺟﻴﻦ ﻣﻦ‬
‫ﺘﺎح اﻟﺤﺎﻟ ﻲ‪ .‬دﻋﻨﺎ ﻧﻄ‬
‫ﺘﺨﺪام اﻟﻤﻔ‬
‫ﺑﺎﺳ‬‫ﺑﻪ داﺧﻞ اﻟﺤﻠﻘ ﺔ‬‫ﺘﻢ‬
‫ﺘﺎحﺗﻬ‬
‫ﺑﺄي ﻣﻔ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﻳﻤﻜﻨﻚ اﻟﻮﺻﻮل إﱃ اﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫ﺑﻖ اﻻﺳﻢ ﻣﻊ أﺣﺪ‬ ‫ﺑ ًﻘﺎ ‪ ،‬وﻟﻜﻦ ﻋﻨﺪﻣﺎﻳ‬
‫ﺘﻄﺎ‬ ‫ﺘﻜﺮار اﻷﺳﻤﺎء اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻨﻄﻖ ﻛﻤﺎ ﻓﻌﻠﻨﺎﺳﺎ‬
‫ﺑ‬‫ﺘﺎرو ﻫﺎ‪.‬ﺳﻨﻘﻮم‬
‫ﺘ ﻲ اﺧ‬
‫اﻷﺻﺪﻗﺎء ﺣﻮل اﻟﻠﻐﺎ ت اﻟ‬
‫ﺘﻬﻢ اﻟﻤﻔﻀﻠ ﺔ‪:‬‬
‫أﺻﺪﻗﺎﺋﻨﺎ ‪،‬ﺳﻨﻌﺮض رﺳﺎﻟ ﺔ ﺣﻮل ﻟﻐ‬

‫اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ { =‬
‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﺟﻴﻦ"‪" :‬‬
‫"ﺳﺎرة"‪" :‬ج"‪،‬‬
‫ﺑ ﻲ"‪،‬‬
‫"إدوارد"‪" :‬رو‬
‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﻓﻴﻞ"‪" :‬‬
‫}‬

‫]'‪u friends = ['phil'، 'sarah‬‬


‫ﻟﻼﺳﻢ ﻓ ﻲ ‪favourite_languages.keys ():‬‬
‫ﺒﺎﻋ ﺔ ))( ‪(name.title‬‬
‫ﻃ‬

‫‪v‬إذا ﻛﺎن اﻻﺳﻢ ﻓ ﻲ اﻷﺻﺪﻗﺎء‪:‬‬


‫"‬
‫ﺒﺎ‬
‫ﺒﺎﻋ ﺔ )"ﻣﺮﺣ ً‬
‫ﻃ‬ ‫‪+ name.title () +‬‬
‫"‬
‫‪+‬أرى أن ﻟﻐ‬
‫ﺘﻚ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ ‪]favour_languages‬اﻻﺳﻢ[‪.‬‬ ‫‪"،‬‬
‫ث‬ ‫اﻟﻌﻨﻮان )" !"‪() +‬‬

‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔ إﻟﻴﻬﻢ‪.‬‬


‫ﺑﺎﻷﺻﺪﻗﺎء اﻟﺬﻳﻦ ﻧﺮﻳﺪ ﻃ‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫ﻓ ﻲ ‪u‬ﻧﻘﻮم‬
‫ﺘﺤﻘﻖ ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن اﻻﺳﻢ اﻟﺬي ﻧﻌﻤﻞ ﻣﻌﻪ ﻣﻮﺟﻮدًا ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻷﺻﺪﻗﺎء‪ .‬إذا ﻛﺎن‬
‫ﺛﻢ ﻓ ﻲ ‪v ،‬ﻧ‬‫ﺒﻊ اﺳﻢ ﻛﻞ ﺷﺨﺺ‪.‬‬
‫داﺧﻞ اﻟﺤﻠﻘ ﺔ ‪ ،‬ﻧﻄ‬
‫ﺘﻬﻢ‪ .‬ﻟﻠﻮﺻﻮل‬
‫ﺘﻴﺎر ﻟﻐ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ إﺷﺎرة إﱃ اﺧ‬‫ﺒﻊﺗﺤﻴ ﺔ ﺧﺎﺻ ﺔ ‪،‬‬
‫اﻷﻣﺮ ﻛﺬﻟﻚ ‪ ،‬ﻓﻨﺤﻦ ﻧﻄ‬

‫ـ‪105‬اﻟﻘﻮاﻣﻴ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎﻋ ﺔ اﺳﻢ اﻟﺠﻤﻴﻊ ‪ ،‬وﻟﻜﻦ‬


‫ﺘﻢ ﻃ‬
‫ﺘﺎح ‪.‬ﺗ‬
‫ﺘﺨﺪم اﺳﻢ اﻟﻘﺎﻣﻮس وﻗﻴﻤ ﺔ اﻹﻳﺠﺎر اﻟﺤﺎﻟﻴ ﺔ ﻟﻼﺳﻢ ﻛﻤﻔ‬
‫اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻓ ﻲ ‪w ،‬ﻧ ﺴ‬
‫ﺘﻠﻘﻰ أﺻﺪﻗﺎؤﻧﺎ رﺳﺎﻟ ﺔ ﺧﺎﺻ ﺔ‪:‬‬
‫ﻳ‬

‫إدوارد‬
‫ﻓﻴﻞ‬
‫ﺘﻚ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ !‪Python‬‬
‫ﺒﺎ ﻓﻴﻞ ‪ ،‬أرى أن ﻟﻐ‬
‫ﻣﺮﺣ ً‬
‫ﺳﺎره‬
‫ﺘﻚ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ !‪C‬‬
‫ﺒﺎﺳﺎرة ‪ ،‬أرى أن ﻟﻐ‬
‫ﻣﺮﺣ ً‬
‫ﺟﻴﻦ‬

‫ﺘﺸﻒ‬
‫ﺘﻄﻼع رأي ﺷﺨﺺ ﻣﻌﻴﻦ‪ .‬ﻫﺬه اﻟﻤﺮة ‪ ،‬دﻋﻨﺎ ﻧﻜ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪keys‬ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذاﺗﻢ اﺳ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﺳ‬
‫ﺘﻄﻼع‪:‬‬
‫ﻣﺎ إذا ﻛﺎﻧ ﺖ إﻳﺮﻳﻦ ﻗﺪ أﺟﺮ ت اﻻﺳ‬

‫اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ { =‬
‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﺟﻴﻦ"‪" :‬‬
‫"ﺳﺎرة"‪" :‬ج"‪،‬‬
‫ﺑ ﻲ"‪،‬‬
‫"إدوارد"‪" :‬رو‬
‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﻓﻴﻞ"‪" :‬‬
‫}‬

‫‪u‬إذا ﻟﻢﺗﻜﻦ "‪"erin‬ﻓ ﻲ ‪favourite_languages.keys ():‬‬


‫ﺘﻄﻼع!"(‬
‫ﺒﺎﻋ ﺔ )"إﻳﺮﻳﻦ ‪ ،‬ﻣﻦ ﻓﻀﻠﻚ ﺷﺎرك ﻓ ﻲ اﻻﺳ‬
‫ﻃ‬

‫ﺑﺈرﺟﺎع ﻗﺎﺋﻤ ﺔ ﻣﻦ اﻟﻜﻞ‬‫ﺘﻜﺮار اﻟﺤﻠﻘ ﻲ‪ :‬إﻧﻬﺎﺗﻘﻮم ﻓ ﻲ اﻟﻮاﻗﻊ‬


‫ﺗﻴﺢ )(ﻟﻴ ﺴ ﺖ ﻓﻘﻂ ﻟﻠ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻤﻔﺎ‬
‫ﺒ ﺴﺎﻃ ﺔ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ "‪"erin‬ﻣﻮﺟﻮدة ﻓ ﻲ ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻧﻈ ﺮًاﻷﻧﻬﺎ ﻟﻴ ﺴ ﺖ ﻛﺬﻟﻚ ‪،‬‬
‫ﺑ‬‫ﺘﺤﻘﻖ اﻟ ﺴﻄﺮ ﻋﻨﺪ ‪u‬‬
‫ﺗﻴﺢ ‪ ،‬وﻳ‬
‫اﻟﻤﻔﺎ‬
‫ﺘﻄﻼع‪:‬‬
‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔﺗﺪﻋﻮ ﻫﺎ إﱃ اﻟﻤﺸﺎرﻛ ﺔ ﻓ ﻲ اﻻﺳ‬
‫ﺘﻢ ﻃ‬
‫ﺗ‬

‫ﺘﻄﻼع!‬
‫إﻳﺮﻳﻦ ‪ ،‬ﻣﻦ ﻓﻀﻠﻚ ﺷﺎرك ﻓ ﻲ اﻻﺳ‬

‫ﺗﻴ ﺐ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺗﻴﺢ اﻟﻘﺎﻣﻮس‬
‫ﺘﻜﺮار ﻣﻦ ﺧﻼل ﻣﻔﺎ‬
‫اﻟ‬
‫ﺑﺪًا ﻋﲆ اﻟﻌﻨﺎﺻﺮ ﻣﻦ‬
‫ﺑﻪ ‪ ،‬ﻟﻜﻨﻚ ﻻﺗﺤﺼﻞ أ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﺎح واﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫ﺑﻴﻦ ﻛﻞ ﻣﻔ‬‫ﺗﺼﺎل واﺿﺢ‬
‫ﺋﻤﺎ ﻋﲆ ا‬
‫ﻳﺤﺎﻓﻆ اﻟﻘﺎﻣﻮس دا ً‬
‫ﺑﻪ‪ .‬ﻫﺬه ﻟﻴ ﺴ ﺖ ﻣﺸﻜﻠ ﺔ ‪،‬ﻷﻧﻚ ﻋﺎدة ﻣﺎﺗﺮﻳﺪ ﻓﻘﻂ اﻟﺤﺼﻮل ﻋﲆ اﻟﻘﻴﻤ ﺔ اﻟﺼﺤﻴﺤ ﺔ‬‫ﺒﺆ‬
‫ﺘﻨ‬‫ﺗﻴ ﺐﻳﻤﻜﻦ اﻟ‬
‫ﺑﺄيﺗﺮ‬‫اﻟﻘﺎﻣﻮس‬
‫ﺘﺎح‪.‬‬
‫ﺑﻜﻞ ﻣﻔ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫اﻟﻤﺮ‬

‫ﺘﺨﺪام‬
‫ﺛﻨﺎء إرﺟﺎﻋﻬﺎ ﻓ ﻲ ﺣﻠﻘ ﺔ ‪for .‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺗﻴﺢ أ‬
‫ﺗﻴ ﺐ ﻣﻌﻴﻦ ﻓ ﻲ ﻓﺮز اﻟﻤﻔﺎ‬
‫ﺘﺮ‬‫ﺑ‬‫ﺜﻞ إﺣﺪى ﻃﺮق إرﺟﺎع اﻟﻌﻨﺎﺻﺮ‬
‫ﺘﻤ‬‫ﺗ‬
‫ﺗﻴ ﺐ‪:‬‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺗﻴﺢ‬
‫اﻟﻮﻇﻴﻔ ﺔ )( ‪Sorted‬ﻟﻠﺤﺼﻮل ﻋﲆ ﻧ ﺴﺨ ﺔ ﻣﻦ اﻟﻤﻔﺎ‬

‫اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ { =‬
‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﺟﻴﻦ"‪" :‬‬
‫"ﺳﺎرة"‪" :‬ج"‪،‬‬
‫ﺑ ﻲ"‪،‬‬
‫"إدوارد"‪" :‬رو‬
‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﻓﻴﻞ"‪" :‬‬
‫}‬

‫ﺑﺎﻟﻔﺮز ‪(favoured_languages.keys ()):‬‬‫ﻟﻼﺳﻢ‬


‫ﺘﻄﻼع‪(".‬‬
‫‪print (name.title () + "،‬ﺷﻜ ﺮًا ﻟﻚ ﻋﲆ اﻟﻤﺸﺎرﻛ ﺔ ﻓ ﻲ اﻻﺳ‬

‫‪106‬اﻟﻔﺼﻞ ‪6‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻠﻒ اﻟﺪاﻟ ﺔ )( ‪Sorted‬ﺣﻮل ﻃﺮﻳﻘ ﺔ ‪ Dictionary.keys () .‬ﻫﺬا‬‫ﺜﻨﺎء أﻧﻨﺎ ﻗﻤﻨﺎ‬


‫ﺘ‬‫ﺑﺎﺳ‬‫ﺒﺎرا ت اﻷﺧﺮى‬
‫ﺒﻪ اﻟﻌ‬
‫ﺒﻴﺎنﻳﺸ‬
‫ﻫﺬا اﻟ‬
‫ﺒﻞﺗﻜﺮار ﻫﺎ‪.‬‬
‫ﺗﻴﺢ ﻓ ﻲ اﻟﻘﺎﻣﻮس وﻓﺮزﺗﻠﻚ اﻟﻘﺎﺋﻤ ﺔ ﻗ‬
‫ﺑ ﺴﺮد ﺟﻤﻴﻊ اﻟﻤﻔﺎ‬
‫ﺒﺮ ‪Python‬‬
‫ﻳﺨ‬

‫ﺗﻴ ﺐ‪:‬‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺘﻄﻼع ﻣﻊ ﻋﺮض اﻷﺳﻤﺎء‬
‫ﺗﺞ ﻛﻞ ﻣﻦ ﺷﺎرك ﻓ ﻲ اﻻﺳ‬
‫ﻳﻈﻬﺮ اﻟﻨﺎ‬

‫إدوارد ‪ ،‬ﺷﻜﺮا ً ﻟﻚ ﻋﲆ إﺟﺮاء اﻻﺳ‬


‫ﺘﻄﻼع‪.‬‬
‫ﺘﻄﻼع‪.‬‬
‫ﺟﻴﻦ ‪ ،‬ﺷﻜﺮا ﻟﻚ ﻋﲆ اﻟﻤﺸﺎرﻛ ﺔ ﻓ ﻲ اﻻﺳ‬
‫ﺘﻄﻼع‪.‬‬
‫ﻓﻴﻞ ‪ ،‬ﺷﻜ ًﺮا ﻟﻚ ﻋﲆ إﺟﺮاء اﻻﺳ‬
‫ﺘﻄﻼع‪.‬‬‫ﺳﺎرة ‪ ،‬ﺷﻜﺮا ً ﻟﻚ ﻋﲆ إﺟﺮاء اﻻﺳ‬

‫ﺒﺮ ﻛﻞ اﻟﻘﻴﻢ ﻓ ﻲ اﻟﻘﺎﻣﻮس‬


‫ﺘﻜﺮار ﻋ‬
‫اﻟ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ اﻟﻘﻴﻢ )(ﻹرﺟﺎع ﻗﺎﺋﻤ ﺔ اﻟﻘﻴﻢ‬
‫ﺘﻮي ﻋﻠﻴﻬﺎ اﻟﻘﺎﻣﻮس ‪ ،‬ﻓﻴﻤﻜﻨﻚ اﺳ‬
‫ﺘ ﻲﻳﺤ‬
‫ﺑﺎﻟﻘﻴﻢ اﻟ‬‫ﺑﺸﻜﻞ أﺳﺎﺳ ﻲ‬‫ﺘﻤﺎ‬
‫إذا ﻛﻨ ﺖ ﻣﻬ ً‬
‫ﺗﻴﺢ‪.‬‬
‫ﺑﺪون أي ﻣﻔﺎ‬
‫ﺑﺪون‬‫ﺘﺮف ﻟﺪﻳﻨﺎ‬
‫ﺘﻄﻼع اﻟﻠﻐ ﺔ اﻟﻤﺤ‬
‫ﺘﺎرة ﻓ ﻲ اﺳ‬
‫ﺑﺠﻤﻴﻊ اﻟﻠﻐﺎ ت اﻟﻤﺨ‬‫ﺒ ﺴﺎﻃ ﺔ ﻗﺎﺋﻤ ﺔ‬
‫ﺑ‬‫ﺘﺮض أﻧﻨﺎ ﻧﺮﻳﺪ‬
‫ﺜﺎل ‪ ،‬ﻟﻨﻔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺎر ﻛﻞ ﻟﻐ ﺔ‪:‬‬
‫اﺳﻢ اﻟﺸﺨﺺ اﻟﺬي اﺧ‬

‫اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ { =‬
‫ﺜﻮن" ‪،‬‬‫ﺑﻴ‬
‫"ﺟﻴﻦ"‪" :‬‬
‫"ﺳﺎرة"‪" :‬ج"‪،‬‬
‫ﺑ ﻲ"‪،‬‬
‫"إدوارد"‪" :‬رو‬
‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﻓﻴﻞ"‪" :‬‬
‫}‬

‫ﺘﺎﻟﻴ ﺔ‪(":‬‬
‫ﺗﻢ ذﻛﺮ اﻟﻠﻐﺎ ت اﻟ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬
‫ﻟﻠﻐ ﺔ ﻓ ﻲ ‪favourite_languages.values ():‬‬
‫))( ‪print (language.title‬‬

‫ﺒﺎﻋ ﺔ ﻫﺬه اﻟﻘﻴﻢ ‪ ،‬ﻧﺤﺼﻞ ﻋﲆ‬


‫ﺘﻐﻴﺮة‪ .‬ﻋﻨﺪ ﻃ‬
‫ﺗﺨﺰﻧﻬﺎ ﻓ ﻲ اﻟﻠﻐ ﺔ اﻟﻤ‬
‫ﺗ ﺴﺤ ﺐﺗﻌﻠﻴﻤ ﺔ ‪ for‬ﻫﻨﺎ ﻛﻞ ﻗﻴﻤ ﺔ ﻣﻦ اﻟﻘﺎﻣﻮس و‬
‫ﺘﺎرة‪:‬‬
‫ﺑﺠﻤﻴﻊ اﻟﻠﻐﺎ ت اﻟﻤﺨ‬‫ﻗﺎﺋﻤ ﺔ‬

‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺗﻢ ذﻛﺮ اﻟﻠﻐﺎ ت اﻟ‬
‫ﺜﻮن‬
‫ﺑﺎﻳ‬
‫ج‬

‫ﺜﻮن‬
‫ﺑﺎﻳ‬
‫ﺑﻲ‬
‫رو‬

‫ﺘﺤﻘﻖ ﻣﻨﻬﺎ‬
‫ﻳ ﺴﺤ ﺐ ﻫﺬا اﻷﺳﻠﻮ ب ﺟﻤﻴﻊ اﻟﻘﻴﻢ ﻣﻦ اﻟﻘﺎﻣﻮس دون اﻟ‬
‫ﺘﺞ‬
‫ﺒﻴﻦ ‪ ،‬ﻗﺪﻳﻨ‬
‫ﺘﺠﻴ‬
‫ﺒﻴﺮ ﻣﻦ اﻟﻤ ﺴ‬
‫ﺘﻄﻼع ﻣﻊ ﻋﺪد ﻛ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ ﻣﻊ ﻋﺪد ﺻﻐﻴﺮ ﻣﻦ اﻟﻘﻴﻢ ‪ ،‬وﻟﻜﻦ ﻓ ﻲ اﺳ‬‫ﺘﻜﺮار‪ .‬ﻗﺪﻳﻌﻤﻞ ﻫﺬا‬
‫ﻟﻠ‬
‫ﺘﺨﺪام ﻣﺠﻤﻮﻋ ﺔ‪.‬‬
‫ﺘﻴﺎر ﻫﺎ دونﺗﻜﺮار ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﻜﺮرة ﻟﻠﻐﺎﻳ ﺔ‪ .‬ﻟﺮؤﻳ ﺔ ﻛﻞ ﻟﻐ ﺔﺗﻢ اﺧ‬
‫ﻋﻦ ذﻟﻚ ﻗﺎﺋﻤ ﺔ ﻣ‬

‫ﺒﻪ اﻟﻘﺎﺋﻤ ﺔ ﻓﻴﻤﺎ ﻋﺪا أن ﻛﻞ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻤﺠﻤﻮﻋ ﺔﻳﺠ ﺐ أنﻳﻜﻮن ﻓﺮﻳﺪًا‪:‬‬


‫اﻟﻤﺠﻤﻮﻋ ﺔﺗﺸ‬

‫اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ { =‬
‫ﺜﻮن" ‪،‬‬‫ﺑﻴ‬
‫"ﺟﻴﻦ"‪" :‬‬
‫"ﺳﺎرة"‪" :‬ج"‪،‬‬
‫ﺑ ﻲ"‪،‬‬
‫"إدوارد"‪" :‬رو‬

‫‪107-‬ﻗﻮاﻣﻴ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻮن" ‪،‬‬
‫ﺑﻴ‬‫"ﻓﻴﻞ"‪" :‬‬
‫}‬

‫ﺘﺎﻟﻴ ﺔ‪(":‬‬
‫ﺗﻢ ذﻛﺮ اﻟﻠﻐﺎ ت اﻟ‬
‫ﺒﺎﻋ ﺔ )"‬
‫ﻃ‬
‫‪u‬ﻟﻠﻐ ﺔ ﻓ ﻲ اﻟﻤﺠﻤﻮﻋ ﺔ ‪(favourite_languages.values ()):‬‬
‫))( ‪print (language.title‬‬

‫ﺗﺤﺪد اﻟﻌﻨﺎﺻﺮ اﻟﻔﺮﻳﺪة ﻓ ﻲ‬


‫ﺘﻮي ﻋﲆ ﻋﻨﺎﺻﺮ ﻣﻜﺮرة ‪ ،‬ﻓﺈن ‪Python‬‬
‫ﺑﻠﻒ )( ‪set‬ﺣﻮل ﻗﺎﺋﻤ ﺔﺗﺤ‬‫ﻋﻨﺪﻣﺎﺗﻘﻮم‬
‫ﺒﻨ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦﺗﻠﻚ اﻟﻌﻨﺎﺻﺮ‪ .‬ﻓ ﻲ ش‬
‫ﺗ‬‫اﻟﻘﺎﺋﻤ ﺔ و‬
‫ﺘﺨﺮاج اﻟﻠﻐﺎ ت اﻟﻔﺮﻳﺪة ﻓ ﻲ ‪favourites_languages.values ().‬‬
‫ﺘﺨﺪم )( ‪set‬ﻻﺳ‬
‫ﻧﺴ‬
‫ﺘ ﻲﺗﻢ ذﻛﺮ ﻫﺎ‬
‫ﺘﻜﺮرة ﻣﻦ اﻟﻠﻐﺎ ت اﻟ‬
‫ﺘﻴﺠ ﺔ ﻫ ﻲ ﻗﺎﺋﻤ ﺔ ﻏﻴﺮ ﻣ‬
‫واﻟﻨ‬
‫ﺘﻄﻼع‪:‬‬
‫ﺒﻞ اﻷﺷﺨﺎص اﻟﺬﻳﻦ ﺷﺎرﻛﻮا ﻓ ﻲ اﻻﺳ‬
‫ﻣﻦ ﻗ‬

‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺗﻢ ذﻛﺮ اﻟﻠﻐﺎ ت اﻟ‬
‫ﺜﻮن‬
‫ﺑﺎﻳ‬
‫ج‬

‫ﺑﻲ‬
‫رو‬

‫ﺒﺎ ﻣﻴﺰة ﻣﻀﻤﻨ ﺔ ﻟﻠﻐ ﺔﺗ ﺴﺎﻋﺪك ﻋﲆ ﻓﻌﻞ ﻣﺎﺗﺮﻳﺪه‬


‫ﺘﺠﺪ ﻏﺎﻟ ً‬
‫ﺘﻌﺮف ﻋﲆ ‪Python ،‬ﺳ‬
‫ﺘﻤﺮ ﻓ ﻲ اﻟ‬
‫ﺑﻴﻨﻤﺎﺗ ﺴ‬
‫ﺗﻚ‪.‬‬
‫ﺒﻴﺎﻧﺎ‬
‫ﺑ‬‫ﺒﻂ‬
‫ﺑﺎﻟﻀ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻨﻈﻴﻒ اﻟﻜﻮد‬
‫ﺑ‬‫ﺑﻌﺪ أن ﻋﺮﻓ ﺖ ﻛﻴﻔﻴ ﺔﺗﻨﻔﻴﺬ ﺣﻠﻘ ﺔ ﻣﻦ ﺧﻼل ﻗﺎﻣﻮس ‪ ،‬ﻗﻢ‬‫‪6-4.‬ﻣ ﺴﺮد اﻟﻤﺼﻄﻠﺤﺎ ت ‪2:‬اﻵن‬
‫ﺑﻚ‬‫ﺒﻮﻋﺎ ت اﻟﺨﺎﺻ ﺔ‬
‫ﺒﺪالﺳﻠ ﺴﻠ ﺔ اﻟﻤﻄ‬
‫ﺘ‬‫ﺘﻤﺮﻳﻦ ‪)6-3‬ﺻﻔﺤ ﺔ )‪102‬ﻋﻦ ﻃﺮﻳﻖ اﺳ‬
‫ﻣﻦ اﻟ‬
‫ﺗﻴﺢ اﻟﻘﺎﻣﻮس واﻟﻘﻴﻢ‪.‬‬
‫ﺒﺮ ﻣﻔﺎ‬
‫ﺒﺎرا ت ﻣﻊ ﺣﻠﻘ ﺔﺗﻤﺮ ﻋ‬
‫ﻋ‬
‫ﺑﻚﺗﻌﻤﻞ ‪ ،‬أﺿﻒ ﺧﻤ ﺴ ﺔ ﻣﺼﻄﻠﺤﺎ ت أﺧﺮى ﻓ ﻲ ‪Python‬إﱃ‬‫ﺘﺄﻛﺪًا ﻣﻦ أن اﻟﺤﻠﻘ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﻋﻨﺪﻣﺎﺗﻜﻮن ﻣ‬
‫ﺒﺮﻧﺎﻣﺞ ﻣﺮة أﺧﺮى ‪،‬ﻳﺠ ﺐﺗﻀﻤﻴﻦ ﻫﺬه اﻟﻜﻠﻤﺎ ت واﻟﻤﻌﺎﻧ ﻲ‬
‫ﺑﻚ‪ .‬ﻋﻨﺪﺗﺸﻐﻴﻞ اﻟ‬‫ﻣ ﺴﺮد اﻟﻤﺼﻄﻠﺤﺎ ت اﻟﺨﺎص‬
‫اﻟﺠﺪﻳﺪةﺗﻠﻘﺎﺋ ًﻴﺎ ﻓ ﻲ اﻹﺧﺮاج‪.‬‬

‫ﺒﺮه ﻛﻞ ﻧﻬﺮ‪ .‬زوج واﺣﺪ ذو ﻗﻴﻤ ﺔ‬


‫ﺒﻠﺪ اﻟﺬيﻳﻤﺮ ﻋ‬
‫ﺋﻴ ﺴﻴ ﺔ واﻟ‬
‫ﺛ ﺔ أﻧﻬﺎر ر‬
‫ﺛﻼ‬‫ﺘﻮي ﻋﲆ‬
‫ﺳﺎﻳﺤ‬
‫‪6-5.‬اﻷﻧﻬﺎر‪ :‬اﺻﻨﻊ ﻗﺎﻣﻮ ً‬
‫ﺋﻴ ﺴﻴ ﺔ ﻗﺪﻳﻜﻮن ‪"nile": "egypt".‬‬
‫ر‬

‫ﺒﺮ ﻣﺼﺮ‪.‬‬
‫ﺜﻞ ﻧﻬﺮ اﻟﻨﻴﻞﻳﻤﺮ ﻋ‬
‫ﺒﺎﻋ ﺔ ﺟﻤﻠ ﺔ ﺣﻮل ﻛﻞ ﻧﻬﺮ ‪ ،‬ﻣ‬
‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ﻟﻄ‬
‫•اﺳ‬

‫ﺒﺎﻋ ﺔ اﺳﻢ ﻛﻞ ﻧﻬﺮ ﻣﺪرج ﻓ ﻲ اﻟﻘﺎﻣﻮس‪.‬‬


‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ﻟﻄ‬
‫•اﺳ‬

‫ﺑﻠﺪ ﻣﺪرج ﻓ ﻲ اﻟﻘﺎﻣﻮس‪.‬‬‫ﺒﺎﻋ ﺔ اﺳﻢ ﻛﻞ‬


‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ﻟﻄ‬
‫•اﺳ‬

‫ﺘﺨﺪم اﻟﻜﻮد ﻓ ﻲ ‪)favourite_languages.py‬ﺻﻔﺤ ﺔ ‪104).‬‬


‫ﺘﺮاع‪ :‬اﺳ‬
‫‪6-6.‬اﻻﻗ‬

‫ﺘﻀﻤﻴﻦ‬
‫ﺑ‬‫ﺘﻄﻼع اﻟﻠﻐﺎ ت اﻟﻤﻔﻀﻠ ﺔ‪ .‬ﻗﻢ‬
‫ﺑﺎﻷﺷﺨﺎص اﻟﺬﻳﻦﻳﺠ ﺐ ﻋﻠﻴﻬﻢ اﻟﻤﺸﺎرﻛ ﺔ ﻓ ﻲ اﺳ‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ‬‫•ﻗﻢ‬
‫ﺑﻌﺾ اﻷﺳﻤﺎء ﻏﻴﺮ ﻣﻮﺟﻮدة‪.‬‬
‫ﺑﺎﻟﻔﻌﻞ ﻓ ﻲ اﻟﻘﺎﻣﻮس و‬‫ﺑﻌﺾ اﻷﺳﻤﺎء اﻟﻤﻮﺟﻮدة‬

‫ﺘﻄﻼع‬
‫ﺘﻄﻼع‪ .‬إذا ﻛﺎﻧﻮا ﻗﺪ ﺷﺎرﻛﻮا ﻓ ﻲ اﻻﺳ‬
‫ﺑﻌﻤﻞﺗﻜﺮار ﻟﻘﺎﺋﻤ ﺔ اﻷﺷﺨﺎص اﻟﺬﻳﻦﻳﺠ ﺐ ﻋﻠﻴﻬﻢ اﻟﻤﺸﺎرﻛ ﺔ ﻓ ﻲ اﻻﺳ‬‫•ﻗﻢ‬
‫ﺒﻊ رﺳﺎﻟ ﺔﺗﺸﻜﺮ ﻫﻢ ﻋﲆ اﻟﺮد‪.‬‬
‫ﺑﺎﻟﻔﻌﻞ ‪ ،‬اﻃ‬
‫ﺘﻄﻼع‪.‬‬
‫ﺒﻊ رﺳﺎﻟ ﺔﺗﺪﻋﻮ ﻫﻢ إﱃ اﻟﻤﺸﺎرﻛ ﺔ ﻓ ﻲ اﻻﺳ‬
‫ﺑﻌﺪ ‪ ،‬اﻃ‬‫ﺘﺮاع‬
‫إذا ﻟﻢﻳﺠﺮوا اﻻﻗ‬

‫‪108‬اﻟﻔﺼﻞ ‪6‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻌﺸﻴ ﺶ‬
‫اﻟ‬
‫ﺘﺎج أﺣﻴﺎﻧًﺎ إﱃﺗﺨﺰﻳﻦ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻘﻮاﻣﻴ ﺲ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ أو ﻗﺎﺋﻤ ﺔ ﻋﻨﺎﺻﺮ ﻛﻘﻴﻤ ﺔ ﻓ ﻲ ﻗﺎﻣﻮس‪ .‬و ﻫﺬا ﻣﺎﻳ ﺴﻤﻰ‬
‫ﺘﺤ‬‫ﺳ‬
‫ﺘﻰ ﻗﺎﻣﻮس داﺧﻞ‬
‫ﺘﻌﺸﻴ ﺶ‪.‬ﻳﻤﻜﻨﻚ دﻣﺞ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻘﻮاﻣﻴ ﺲ داﺧﻞ ﻗﺎﺋﻤ ﺔ ‪ ،‬أو ﻗﺎﺋﻤ ﺔ ﻋﻨﺎﺻﺮ داﺧﻞ ﻗﺎﻣﻮس ‪ ،‬أو ﺣ‬
‫اﻟ‬
‫ﺘﺎﻟﻴ ﺔ‪.‬‬
‫ﺜﻠ ﺔ اﻟ‬
‫ﺘﻮﺿﺢ اﻷﻣ‬
‫ﺘﻌﺸﻴ ﺶ ﻣﻴﺰة ﻗﻮﻳ ﺔ ‪ ،‬ﻛﻤﺎﺳ‬
‫ﺒﺮ اﻟ‬
‫ﺘ‬‫ﻗﺎﻣﻮس آﺧﺮ‪.‬ﻳﻌ‬

‫ﻗﺎﺋﻤ ﺔ اﻟﻘﻮاﻣﻴ ﺲ‬
‫ﺘﻮي ﻋﲆ ﻣ ﺴﺎﺣ ﺔ‬
‫ﺘﻨﻮﻋ ﺔ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﺣﻮل ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ واﺣﺪ ‪ ،‬وﻟﻜﻨﻪ ﻻﻳﺤ‬
‫ﺘﻮي ﻗﺎﻣﻮس ‪alien_0‬ﻋﲆ ﻣﺠﻤﻮﻋ ﺔ ﻣ‬
‫ﻳﺤ‬
‫ﺑﺎﻷﺟﺎﻧ ﺐ‪ .‬ﻛﻴﻒﻳﻤﻜﻨﻚ إدارة أﺳﻄﻮل ﻣﻦ اﻟﻔﻀﺎﺋﻴﻴﻦ؟‬‫ﺛﺎن ‪ ،‬ﻧﺎ ﻫﻴﻚ ﻋﻦ ﺷﺎﺷ ﺔ ﻣﻠﻴﺌ ﺔ‬
‫ﺘﺨﺰﻳﻦ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ ٍ‬
‫ﻟ‬
‫ﺜﺎل ‪،‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺳﺎ ﻟﻠﻤﻌﻠﻮﻣﺎ ت ﺣﻮل ﻫﺬا اﻟﻔﻀﺎﺋ ﻲ‪ .‬ﻋﲆﺳ‬
‫ﺒ ﻲ ﻗﺎﻣﻮ ً‬
‫ﺑﺎﻷﺟﺎﻧ ﺐﻳﻜﻮن ﻓﻴﻬﺎ ﻛﻞ أﺟﻨ‬‫إﺣﺪى اﻟﻄﺮق ﻫ ﻲ ﻋﻤﻞ ﻗﺎﺋﻤ ﺔ‬
‫ﺛ ﺔ أﺟﺎﻧ ﺐ‪:‬‬
‫ﺜﻼ‬‫ﺑ‬‫ﺘﺎﻟ ﻲ ﻗﺎﺋﻤ ﺔ‬
‫ُﻨﺸ ﺊ اﻟﻜﻮد اﻟ‬
‫ﻳ‬

‫اﻷﺟﺎﻧ ﺐ‬ ‫}‪alien_0 = {'color': 'green'، 'Points': 5‬‬


‫}‪alien_1 = {'color': 'yellow'، 'Points': 10‬‬
‫}‪alien_2 = {'color': 'red'، 'Points': 15‬‬

‫‪u‬اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ ]‪= [alien_0، alien_1، alien_2‬‬

‫ﻟﻸﺟﺎﻧ ﺐ ﻓ ﻲ اﻷﺟﺎﻧ ﺐ‪:‬‬

‫ﺒ ﻲ(‬
‫ﺒﺎﻋ ﺔ )أﺟﻨ‬
‫ﻃ‬

‫ﺘﻠ ًﻔﺎ‪.‬‬
‫ﺜﻞ ﻛﻞ ﻣﻨﻬﺎ ﻛﺎﺋﻨًﺎ ﻓﻀﺎﺋ ًﻴﺎ ﻣﺨ‬
‫ﺛ ﺔ ﻗﻮاﻣﻴ ﺲ ‪،‬ﻳﻤ‬
‫ﺛﻼ‬ ‫ﻧﻘﻮم أوﻻ ً‬
‫ﺑﺈﻧﺸﺎء‬
‫ﺒﻊ ﻛﻞ ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ‪:‬‬
‫ّر اﻟﻘﺎﺋﻤ ﺔ وﻧﻄ‬
‫ﻧﺤﻦ ﻧﺤﺰم ﻛﻞ ﻣﻦ ﻫﺬه اﻟﻘﻮاﻣﻴ ﺲ ﻓ ﻲ ﻗﺎﺋﻤ ﺔﺗ ﺴﻤﻰ اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ‪ .‬أﺧﻴ ﺮًا ‪ ،‬ﻧﻤ ﺮ‬

‫}‪{'color': 'green'، 'Points': 5} {'color': 'yellow'، 'Points': 10} {'color': 'red'، 'Points': 15‬‬

‫ﺘﺎﻟ ﻲ‬
‫ﺜﺎل اﻟ‬
‫ﺑﺮﻣﺰﻳﻮﻟﺪ ﻛﻞ ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲﺗﻠﻘﺎﺋ ًﻴﺎ‪ .‬ﻓ ﻲ اﻟﻤ‬‫ﺛ ﺔ ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ‬
‫ﺛﻼ‬‫ﺜﺮ ﻣﻦ‬
‫ﺜﺮ واﻗﻌﻴ ﺔ أﻛ‬
‫ﺜﺎل اﻷﻛ‬
‫ﺘﻀﻤﻦ اﻟﻤ‬
‫ﻗﺪﻳ‬
‫ﺒ ًﻴﺎ‪:‬‬
‫ﺘﺨﺪم اﻟﻨﻄﺎق )(ﻹﻧﺸﺎء أﺳﻄﻮل ﻣﻦ ‪30‬أﺟﻨ‬
‫ﻧﺴ‬

‫ﺘﺨﺰﻳﻦ اﻷﺟﺎﻧ ﺐ‪.‬‬


‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ﻟ‬‫‪#‬ﻗﻢ‬
‫ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ ][ =‬

‫‪#‬اﺻﻨﻊ ‪30‬ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ ﺧﻀﺮاء‪.‬‬


‫‪u‬ﻟـ ‪alien_number‬ﻓ ﻲ اﻟﻨﻄﺎق ‪(30):‬‬
‫}'‪v new_alien = {'color': 'green'، 'Points': 5، 'speed': 'slow‬‬
‫)‪w aliens.append (new_alien‬‬

‫‪#‬اﻋﺮض أول ‪5‬ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ‪:‬‬


‫‪x‬ﻟﻸﺟﺎﻧ ﺐ ﻓ ﻲ اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ ‪[: 5]:‬‬
‫ﺒ ﻲ(‬
‫ﺒﺎﻋ ﺔ )أﺟﻨ‬
‫ﻃ‬
‫ﺒﻌ ﺔ)"‪("...‬‬
‫ﻣﻄ‬

‫ﺘ ﻲﺗﻢ إﻧﺸﺎؤ ﻫﺎ‪.‬‬‫‪#‬أﻇﻬﺮ ﻋﺪد اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ اﻟ‬


‫"‬
‫‪")y print‬إﺟﻤﺎﻟ ﻲ ﻋﺪد اﻷﺟﺎﻧ ﺐ‪:‬‬ ‫‪)+ str‬ﻟﻴﻦ )اﻷﺟﺎﻧ ﺐ(((‬

‫‪109-‬ﻗﻮاﻣﻴ ﺲ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮي ﻋﲆ ﻛﻞ اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ‬


‫ﺑﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔﺗﺤ‬‫ﺜﺎل‬
‫ﺒﺪأ ﻫﺬا اﻟﻤ‬
‫ﻳ‬
‫ﺘ ﻲ ﻧﺮﻳﺪﺗﻜﺮار‬
‫ﺑﻌﺪد اﻟﻤﺮا ت اﻟ‬‫ﺒﺮ ‪Python‬ﻓﻘﻂ‬ ‫ُﺮﺟﻊ اﻟﺪاﻟ ﺔ )( ‪at u range‬ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷرﻗﺎم ‪ ،‬واﻟ‬
‫ﺘ ﻲﺗﺨ‬ ‫ﺘﻢ إﻧﺸﺎؤه‪.‬ﺗ‬
‫ﺳﻴ‬
‫ﺑﻘﺎﺋﻤ ﺔ‬‫ﺛﻢ ﻧﻠﺤﻖ ﻛﻞ ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ ﺟﺪﻳﺪ‬‫ﺑﺈﻧﺸﺎء ﻛﺎﺋﻦ ‪v‬ﺟﺪﻳﺪ ﺟﺪﻳﺪ‬‫ﺘﻢﺗﺸﻐﻴﻞ اﻟﺤﻠﻘ ﺔ ‪ ،‬ﻧﻘﻮم‬
‫اﻟﺤﻠﻘ ﺔ ﻓﻴﻬﺎ‪ .‬ﻓ ﻲ ﻛﻞ ﻣﺮةﻳ‬
‫ﺒﺎ ت‬
‫ﺛ‬‫ﺒﻊ ﻃﻮل اﻟﻘﺎﺋﻤ ﺔ ﻹ‬
‫ﺛﻢ ﻓ ﻲ ‪y‬ﻧﻄ‬‫ﺒﺎﻋ ﺔ أول ﺧﻤ ﺴ ﺔ ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ ‪،‬‬ ‫ﺘﺨﺪم ﺷﺮﻳﺤ ﺔ ﻟﻄ‬‫اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ ‪w.‬ﻓ ﻲ ‪x ،‬ﻧ ﺴ‬
‫ً‬
‫ﺳﻄﻮﻻ ﻛﺎﻣ ﻼ ً ﻣﻦ ‪30‬ﻛﺎﺋﻨًﺎ ﻓﻀﺎﺋ ًﻴﺎ‪:‬‬‫ﺑﺎﻟﻔﻌﻞ أ‬‫أﻧﻨﺎ أﻧﺸﺄﻧﺎ‬

‫}‪'color': 'green'، 'Points': 5} {'speed': 'slow'، 'color': 'green'، 'Points': 5} {'speed': 'slow' ، 'color': 'green'، 'Points': 5‬‬
‫‪{'speed': 'slow'، 'color': 'green'، 'Points': 5} {'speed': 'slow'، 'color': 'green'، 'Points': 5} {'speed' : 'slow'،‬‬

‫‪...‬‬

‫إﺟﻤﺎﻟ ﻲ ﻋﺪد اﻷﺟﺎﻧ ﺐ‪30 :‬‬

‫ﺒﺎر ﻫﺎ ﻛﻞ ﻣﻨﻬﺎ‬
‫ﺘ‬‫ﺜﻮنﺗﻀﻊ ﻓ ﻲ اﻋ‬
‫ﺑﺎﻳ‬‫ﻛﻞ ﻫﺬه اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ ﻟﻬﺎ ﻧﻔ ﺲ اﻟﺨﺼﺎﺋﺺ ‪ ،‬ﻟﻜﻦ‬
‫ﺒ ﻲ ﻋﲆ ﺣﺪة‪.‬‬
‫ﺘﻌﺪﻳﻞ ﻛﻞ أﺟﻨ‬
‫ﺑ‬‫واﺣﺪ ﻛﺎﺋﻦ ﻣﻨﻔﺼﻞ ‪ ،‬واﻟﺬيﻳ ﺴﻤﺢ ﻟﻨﺎ‬
‫ﺑﻌﺾ اﻷﺟﺎﻧ ﺐﻳﻐﻴﺮون‬‫ﺒ ﺔ ﻟﺪﻳﻪ‬
‫ﺜﻞ ﻫﺬا؟ﺗﺨﻴﻞ أن أﺣﺪ ﺟﻮاﻧ ﺐ اﻟﻠﻌ‬
‫ﻛﻴﻒﻳﻤﻜﻨﻚ اﻟﻌﻤﻞ ﻣﻊ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻔﻀﺎﺋﻴﻴﻦ ﻣ‬
‫ﺘﻐﻴﻴﺮ‬
‫ﺒﺎرة ‪if‬ﻟ‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪for‬وﻋ‬
‫ﺒ ﺔ‪ .‬ﻋﻨﺪﻣﺎﻳﺤﻴﻦ وﻗ ﺖﺗﻐﻴﻴﺮ اﻷﻟﻮان ‪،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺑﺸﻜﻞ أﺳﺮع ﻣﻊﺗﻘﺪم اﻟﻠﻌ‬‫ﺘﺤﺮﻛﻮن‬
‫ﻟﻮﻧﻬﻢ وﻳ‬
‫ﺘﻮﺳﻄ ﺔ‬
‫ﺛ ﺔ اﻷوﱃ إﱃ ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ ﺻﻔﺮاء ﻣ‬
‫ﺜﻼ‬‫ﺘﻐﻴﻴﺮ اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ اﻟ‬
‫ﺜﺎل ‪ ،‬ﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻟﻮن اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺑﺬﻟﻚ‪:‬‬‫ﺘﺤﻖ ﻛﻞ ﻣﻨﻬﺎ ‪10‬ﻧﻘﺎط ‪،‬ﻳﻤﻜﻨﻨﺎ اﻟﻘﻴﺎم‬
‫اﻟ ﺴﺮﻋ ﺔﺗ ﺴ‬

‫ﺘﺨﺰﻳﻦ اﻷﺟﺎﻧ ﺐ‪.‬‬


‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ﻟ‬‫‪#‬ﻗﻢ‬
‫ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ ][ =‬

‫‪#‬اﺻﻨﻊ ‪30‬ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ ﺧﻀﺮاء‪.‬‬


‫ﻟـ ‪alien_number‬ﻓ ﻲ اﻟﻨﻄﺎق ‪(0،30):‬‬
‫}'‪new_alien = {'color': 'green'، 'Points': 5، 'speed': 'slow‬‬
‫)‪aliens.append (new_alien‬‬

‫ﻟﻸﺟﺎﻧ ﺐ ﻓ ﻲ اﻷﺟﺎﻧ ﺐ ‪[0: 3]:‬‬


‫إذا ﻛﺎن ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ == ]'‪'['color‬أﺧﻀﺮ'‪:‬‬
‫ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ = ]'‪'['color‬أﺻﻔﺮ'‬
‫ﺘﻮﺳﻂ'‬
‫ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ = ]'‪'['speed‬ﻣ‬
‫ﺒ ﻲ ]'ﻧﻘﺎط'[ ‪= 10‬‬
‫أﺟﻨ‬

‫‪#‬اﻋﺮض أول ‪5‬ﻛﺎﺋﻨﺎ ت ﻓﻀﺎﺋﻴ ﺔ‪:‬‬


‫ﻟﻸﺟﺎﻧ ﺐ ﻓ ﻲ اﻷﺟﺎﻧ ﺐ ‪[0: 5]:‬‬
‫ﺒ ﻲ(‬
‫ﺒﺎﻋ ﺔ )أﺟﻨ‬
‫ﻃ‬
‫ﺒﻌ ﺔ)"‪("...‬‬
‫ﻣﻄ‬

‫ﺘﻀﻤﻦ اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ‬


‫ﺛ ﺔ اﻷوﱃ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﻌﻘﺪ ﺣﻠﻘ ﺔ ﻣﻦ ﺧﻼل ﺷﺮﻳﺤ ﺔﺗ‬
‫ﺜﻼ‬‫ﻧﻈ ﺮًاﻷﻧﻨﺎ ﻧﺮﻳﺪﺗﻌﺪﻳﻞ اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ اﻟ‬
‫ﺒﺎرة‬
‫ﺘﺐ ﻋ‬
‫ﺋﻤﺎ ‪ ،‬ﻟﺬﻟﻚ ﻧﻜ‬
‫ﺒﺤ ﺖ ﺧﻀﺮاء اﻵن وﻟﻜﻦ ﻫﺬا ﻟﻦﻳﻜﻮن ﻫﻮ اﻟﺤﺎل دا ً‬
‫ﺛ ﺔ اﻷوﱃ ﻓﻘﻂ‪ .‬ﺟﻤﻴﻊ اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ أﺻ‬
‫ﺜﻼ‬‫اﻟ‬
‫ﺘﺄﻛﺪ‬
‫‪if‬ﻟﻠ‬

‫‪110‬اﻟﻔﺼﻞ ‪6‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮﺳﻂ ‪ ،‬وﻗﻴﻤ ﺔ‬
‫ﻧﺤﻦ ﻧﻌﺪل اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ اﻟﺨﻀﺮاء ﻓﻘﻂ‪ .‬إذا ﻛﺎن اﻟﻜﺎﺋﻦ اﻟﻔﻀﺎﺋ ﻲ أﺧﻀﺮ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﻐﻴﺮ اﻟﻠﻮن إﱃ اﻟﻠﻮن اﻷﺻﻔﺮ ‪ ،‬واﻟ ﺴﺮﻋ ﺔ إﱃ اﻟﻤ‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫اﻟﻨﻘﻄ ﺔ إﱃ ‪10 ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻹﺧﺮاج اﻟ‬

‫}‪'color': 'green'، 'Points': 5} {'speed': 'slow' ، 'color': 'green'، 'Points': 5‬‬


‫‪10} {'speed' : 'medium'، 'color': 'yellow'، 'Points': 10} {'speed': 'slow'،‬‬
‫‪'color': 'yellow'، 'Points': 10} {'speed': 'medium'، 'color': 'yellow'، 'Points':‬‬
‫‪{'speed': 'medium'،‬‬

‫‪...‬‬

‫ﺑﻘﻴﻤ ﺔ ‪15‬ﻧﻘﻄ ﺔ‬‫ﺗﺤﻮل اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ اﻟﺼﻔﺮاء إﱃ ﻛﺎﺋﻨﺎ ت ﺣﻤﺮاءﺳﺮﻳﻌ ﺔ اﻟﺤﺮﻛ ﺔ‬


‫ﺘﻠ ﺔ ‪elif‬‬
‫ﻳﻤﻜﻨﻚﺗﻮﺳﻴﻊ ﻫﺬه اﻟﺤﻠﻘ ﺔ ﻋﻦ ﻃﺮﻳﻖ إﺿﺎﻓ ﺔ ﻛ‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺑﺎﻟﺸﻜﻞ اﻟ‬‫ﺒﺪو ﻫﺬه اﻟﺤﻠﻘ ﺔ‬
‫ﺘ‬‫ﺑﺎﻟﻜﺎﻣﻞ ﻣﺮة أﺧﺮى ‪،‬ﺳ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺑﺪون إﻇﻬﺎر اﻟ‬‫ﻟﻜﻞ ﻣﻨﻬﺎ‪.‬‬

‫ﻟﻸﺟﺎﻧ ﺐ ﻓ ﻲ اﻷﺟﺎﻧ ﺐ ‪[0: 3]:‬‬


‫إذا ﻛﺎن ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ == ]'‪'['color‬أﺧﻀﺮ'‪:‬‬
‫ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ = ]'‪'['color‬أﺻﻔﺮ'‬
‫ﺘﻮﺳﻂ'‬
‫ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ = ]'‪'['speed‬ﻣ‬
‫ﺒ ﻲ ]'ﻧﻘﺎط'[ ‪= 10‬‬
‫أﺟﻨ‬
‫ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ == ]'‪'elif ['color‬أﺻﻔﺮ'‪:‬‬
‫ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ = ]'‪'['color‬أﺣﻤﺮ'‬
‫ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ '‪['speed'] = 'fast‬‬
‫ﺒ ﻲ ]'ﻧﻘﺎط'[ ‪= 15‬‬
‫أﺟﻨ‬

‫ﻣﻦ اﻟﺸﺎﺋﻊﺗﺨﺰﻳﻦ ﻋﺪد ﻣﻦ اﻟﻘﻮاﻣﻴ ﺲ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ﻋﻨﺪ ﻛﻞ ‪dic‬‬

‫ﺘﺨﺪم ﻋﲆ ﻣﻮﻗﻊ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ إﻧﺸﺎء ﻗﺎﻣﻮس ﻟﻜﻞ ﻣ ﺴ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻮي ﻣﻮﻗﻊ ‪tionary‬ﻋﲆ أﻧﻮاع ﻋﺪﻳﺪة ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﺣﻮل ﻛﺎﺋﻦ واﺣﺪ‪ .‬ﻋﲆﺳ‬
‫ﻳﺤ‬

‫وﻳ ﺐ ‪ ،‬ﻛﻤﺎ ﻓﻌﻠﻨﺎ ﻓ ﻲ ‪user.py‬‬

‫ﺘﻮي ﺟﻤﻴﻊ اﻟﻘﻮاﻣﻴ ﺲ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ‬


‫ﺘﺨﺪﻣﻴﻦ‪.‬ﻳﺠ ﺐ أنﺗﺤ‬
‫ﺘﺨﺰﻳﻦ اﻟﻘﻮاﻣﻴ ﺲ اﻟﻔﺮدﻳ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ ﺔﺗ ﺴﻤﻰ اﻟﻤ ﺴ‬
‫ﺑ‬‫ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪103 ،‬وﻗﻢ‬

‫ﺑﻨﻔ ﺲ اﻟﻄﺮﻳﻘ ﺔ‪.‬‬‫ﺒﺮ اﻟﻘﺎﺋﻤ ﺔ واﻟﻌﻤﻞ ﻣﻊ ﻛﻞ ﻋﻨﺼﺮ ﻣﻦ ﻋﻨﺎﺻﺮ اﻟﻘﺎﻣﻮس‬


‫ﺘﻤﻜﻦ ﻣﻦ اﻟﻤﺮور ﻋ‬
‫ﺘﻰﺗ‬
‫ﺑﻘ ﺔ ﺣ‬
‫ﺘﻄﺎ‬
‫ﺑﻨﻴ ﺔ ﻣ‬

‫ﻗﺎﺋﻤ ﺔ ﻓ ﻲ ﻗﺎﻣﻮس‬
‫ﺒﺎرك ﻛﻴﻒﻳﻤﻜﻨﻚ وﺻﻒ‬
‫ﺘ‬‫ﺜﺎل ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬ ‫ﺑﺪﻻ ً ﻣﻦ وﺿﻊ ﻗﺎﻣﻮس داﺧﻞ ﻗﺎﺋﻤ ﺔ ‪ ،‬ﻣﻦ اﻟﻤﻔﻴﺪ أﺣﻴﺎﻧًﺎ وﺿﻊ ﻗﺎﺋﻤ ﺔ داﺧﻞ ﻗﺎﻣﻮس‪ .‬ﻋﲆﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬

‫ﺘﺨﺪام اﻟﻘﺎﻣﻮس ‪،‬ﻳﻤﻜﻦ‬


‫ﺑﺎﺳ‬‫ﺘﺰا‪.‬‬
‫ﺒﻴ‬‫ﺑﺈﺿﺎﻓﺎ ت اﻟ‬‫ﺘﺨﺪم ﻗﺎﺋﻤ ﺔ ﻓﻘﻂ ‪ ،‬ﻓﻜﻞ ﻣﺎﻳﻤﻜﻨﻚﺗﺨﺰﻳﻨﻪ ﺣ ًﻘﺎ ﻫﻮ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﺴ‬‫ﺒﻬﺎ ﺷﺨﺺ ﻣﺎ‪ .‬إذا ﻛﻨ ﺖﺳ‬
‫ﺘﺰاﻳﻄﻠ‬
‫ﺑﻴ‬

‫ﺘ ﻲﺗﺼﻔﻬﺎ‪.‬‬
‫ﺘﺰا اﻟ‬
‫ﺒﻴ‬‫ﺒﺎ واﺣﺪًا ﻣﻦ اﻟ‬
‫أنﺗﻜﻮن ﻗﺎﺋﻤ ﺔ أﻓﻀﻞ اﻷﺻﻮا ت ﺟﺎﻧ ً‬

‫ﺘﻢﺗﺨﺰﻳﻦ ﻧﻮﻋﻴﻦ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻟﻜﻞ ﻣﻨﻬﻤﺎ‬


‫ﺘﺎﻟ ﻲ ‪،‬ﻳ‬
‫ﺜﺎل اﻟ‬
‫ﻓ ﻲ اﻟﻤ‬

‫ﺘﺨﺪام اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪،‬‬


‫ﺋﻴ ﺴﻴ ﺔ‪ .‬ﻻﺳ‬
‫ﺒﻘ ﺔ" اﻟﺮ‬
‫ﺑـ "اﻟﻄ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺒﻘ ﺔ ﻫ ﻲ ﻗﻴﻤ ﺔ ﻣﺮ‬
‫ﺑﺎﻹﺿﺎﻓﺎ ت‪ .‬ﻗﺎﺋﻤ ﺔ اﻟﻄ‬‫ﺘﺰا‪ :‬ﻧﻮع ﻣﻦ اﻟﻌﺠﻴﻨ ﺔ وﻗﺎﺋﻤ ﺔ‬
‫ﺑﻴ‬

‫ﺑﺎﻹﺿﺎﻓﺎ ت‪:‬‬‫ﺑﺪﻻ ً ﻣﻦ إرﺟﺎع ﻗﻴﻤ ﺔ واﺣﺪة ‪ ،‬ﻧﺤﺼﻞ ﻋﲆ ﻗﺎﺋﻤ ﺔ‬‫ﺒﻘ ﺔ" ‪ ،‬ﻛﻤﺎ ﻧﻔﻌﻞ ﻣﻊ أي ﻗﻴﻤ ﺔ ﻓ ﻲ اﻟﻘﺎﻣﻮس‪.‬‬
‫ﺘﺎح "اﻟﻄ‬
‫ﻧﻌﻄ ﻲ اﺳﻢ اﻟﻘﺎﻣﻮس واﻟﻤﻔ‬

‫ﺒﻬﺎ‪.‬‬
‫ﺘﻢ ﻃﻠ‬
‫ﺘﺰاﻳ‬
‫ﺑﻴ‬‫ﺗﺨﺰﻳﻦ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل‬
‫‪pizza.py #‬‬
‫ﺘﺰا { =‬
‫ﺑﻴ‬‫‪u‬‬
‫"اﻟﻘﺸﺮة"‪" :‬ﺳﻤﻴﻜ ﺔ" ‪،‬‬
‫ﺒﻦ اﻹﺿﺎﻓ ﻲ"[ ‪،‬‬
‫ﺒﻘ ﺔ اﻟﻌﻠﻴﺎ"‪"] :‬اﻟﻔﻄﺮ" ‪" ،‬اﻟﺠ‬
‫"اﻟﻄ‬
‫}‬

‫ﻗﻮاﻣﻴ ﺲ‬ ‫‪111‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﻴ ﺐ‪.‬‬ ‫ﺘﺮ‬‫ﺗﻠﺨﻴﺺ اﻟ‬ ‫‪#‬‬


‫"‬ ‫"‬
‫ﺘﺎﻟﻴ ﺔ‪") :‬‬‫ﺒﻘ ﺔ اﻟ‬
‫ﺒ ﺖ" ﻣﻊ اﻟﻄ‬
‫ﺘﺰا ﻣﺤﺸﻮة ‪")v print‬ﻟﻘﺪ ﻃﻠ‬
‫ﺑﻴ‬‫ﺘﺰا ]'ﻗﺸﺮة'[ ‪"+‬‬
‫ﺑﻴ‬‫‪+‬‬ ‫‪+‬‬

‫ﺒﻘ ﺔ"[‪:‬‬
‫ﺘﺰا ]"اﻟﻄ‬
‫ﺒﻴ‬‫ﺒ ﺔ اﻷوﱃ ﻓ ﻲ اﻟ‬
‫ﺗ‬‫ﺘﻞ اﻟﻤﺮ‬
‫ﺘﺤ‬‫‪w‬ﻟ‬
‫ﺘﺼﺪر(‬
‫ﺗ‬‫ﺒﺎﻋ ﺔ ‪("\ t" +‬‬
‫ﻃ‬

‫ﺘﺎح واﺣﺪ ﻓ ﻲ اﻟﻘﺎﻣﻮس ﻫﻮ ‪"crust" ،‬‬


‫ﺒﻬﺎ‪ .‬ﻣﻔ‬
‫ﺘ ﻲﺗﻢ ﻃﻠ‬
‫ﺘﺰا اﻟ‬
‫ﺒﻴ‬‫ﺘﻮي ﻋﲆ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل اﻟ‬
‫ﺑﻘﺎﻣﻮسﻳﺤ‬
‫ﺒﺪأ ﻣﻦ ‪u‬‬
‫ﻧ‬
‫ﺘ ﻲﺗﺨﺰن ﺟﻤﻴﻊ‬
‫ﺘﻪ اﻟ‬
‫ﺑﻘﻴﻤ‬‫ﺒﻘ ﺔ" ‪ ،‬ﻋﲆ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﺎﻟ ﻲ ‪" ،‬اﻟﻄ‬
‫ﺘﺎح اﻟ‬
‫ﺘﻮي اﻟﻤﻔ‬
‫ﺒﻄ ﺔ ﻫ ﻲ اﻟ ﺴﻠ ﺴﻠ ﺔ "ﺳﻤﻴﻜ ﺔ"‪.‬ﻳﺤ‬
‫ﺗ‬‫واﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫ﺘ ﺐ ‪for loop w.‬ﻟﻠﻮﺻﻮل إﱃ ﻗﺎﺋﻤ ﺔ‬
‫ﺒﻘ ﺔ ‪ ،‬ﻧﻜ‬
‫ﺒﺎﻋ ﺔ اﻟﻄ‬
‫ﺘﺰا‪ .‬ﻟﻄ‬
‫ﺒﻴ‬‫ﺑﻨﺎء اﻟ‬‫ﺒﻞ‬
‫ﺑ ﺔ‪ .‬ﻓ ﻲ ‪v‬ﻧﻠﺨﺺ اﻟﻄﻠ ﺐ ﻗ‬
‫اﻹﺿﺎﻓﺎ ت اﻟﻤﻄﻠﻮ‬
‫ﺜﻮن ﻗﺎﺋﻤ ﺔ اﻹﺿﺎﻓﺎ ت ﻣﻦ اﻟﻘﺎﻣﻮس‪.‬‬
‫ﺑﺎﻳ‬‫ﺘﻘﻂ‬
‫ﺗﻠ‬‫ﺘﺎح "اﻹﺿﺎﻓﺎ ت" ‪ ،‬و‬
‫ﺘﺨﺪم ﻣﻔ‬
‫اﻹﺿﺎﻓﺎ ت ‪ ،‬ﻧ ﺴ‬

‫ﺒﻨﺎء ﻫﺎ‪:‬‬
‫ﺘ ﻲ ﻧﺨﻄﻂ ﻟ‬
‫ﺘﺰا اﻟ‬
‫ﺒﻴ‬‫ﺘﺎﻟ ﻲ اﻟ‬
‫ﺗﺞ اﻟ‬
‫ﻳﻠﺨﺺ اﻟﻨﺎ‬

‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺒﻘ ﺔ اﻟ‬
‫ﺘﺰاﺳﻤﻴﻜ ﺔ اﻟﻘﺸﺮة ﻣﻊ اﻟﻄ‬
‫ﺑﻴ‬‫ﺒﺖ‬
‫ﻟﻘﺪ ﻃﻠ‬
‫ﺒﻨ ﺔ اﺿﺎﻓﻴ ﺔ‬
‫ﻓﻄﺮ ﺟ‬

‫ﺜﺎل‬
‫ﺘﺎح واﺣﺪ ﻓ ﻲ اﻟﻘﺎﻣﻮس‪ .‬ﻓ ﻲ اﻟﻤ‬
‫ﺑﻤﻔ‬‫ﺜﺮ ﻣﻦ ﻗﻴﻤ ﺔ‬
‫ﺑﻂ أﻛ‬
‫ﻳﻤﻜﻨﻚ دﻣﺞ ﻗﺎﺋﻤ ﺔ داﺧﻞ ﻗﺎﻣﻮس ﻓ ﻲ أي وﻗ ﺖﺗﺮﻳﺪ ر‬
‫ﺜﺮ ﻣﻦ ﻟﻐ ﺔ‬
‫ﺘﻴﺎر أﻛ‬
‫ﺘﺨﺰﻳﻦ ردود ﻛﻞ ﺷﺨﺺ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪،‬ﻳﻤﻜﻦ ﻟﻸﺷﺨﺎص اﺧ‬
‫ﺑ‬‫ﺒﺮﻣﺠ ﺔ اﻟﻤﻔﻀﻠ ﺔ ‪ ،‬إذا ﻗﻤﻨﺎ‬
‫ﺑﻖ ﻟﻠﻐﺎ ت اﻟ‬
‫اﻟ ﺴﺎ‬
‫ﺑﺪﻻ ً ﻣﻦ ﻟﻐ ﺔ واﺣﺪة‪.‬‬‫ﺘﻜﻮن ﻗﺎﺋﻤ ﺔ ﻟﻐﺎ ت‬
‫ﺑﻜﻞ ﺷﺨﺺﺳ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﺼﻔﺢ اﻟﻘﺎﻣﻮس ‪ ،‬ﻓﺈن اﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫واﺣﺪة ﻣﻔﻀﻠ ﺔ‪ .‬ﻋﻨﺪﻣﺎ ﻧ‬

‫ﺑﻜﻞ ﺷﺨﺺ‪:‬‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﺸﻐﻴﻞ ﻗﺎﺋﻤ ﺔ اﻟﻠﻐﺎ ت اﻟﻤﺮ‬
‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬أﺧﺮى ﻟ‬
‫داﺧﻞ ﺣﻠﻘ ﺔ ‪for‬ﻓ ﻲ اﻟﻘﺎﻣﻮس ‪ ،‬ﻧ ﺴ‬

‫ﻣﻔﻀﻞ_‬
‫‪u favourite_languages‬‬ ‫{=‬
‫‪languages.py‬‬
‫‪"jen": ["python"،‬‬ ‫‪"ruby"]،‬‬
‫"ﺳﺎرة"‪"] :‬ج"[‪،‬‬
‫ﺑ ﻲ" ‪" ،‬اﻧﻄﻠﻖ"[ ‪،‬‬
‫"إدوارد"‪"] :‬رو‬
‫‪'phil': ['python'، 'haskell']،‬‬
‫}‬

‫‪v‬ﻟﻼﺳﻢ ‪ ،‬اﻟﻠﻐﺎ ت ﻓ ﻲ ‪favourite_languages.items ():‬‬


‫‪)print‬اﻟﻠﻐﺎ ت اﻟﻤﻔﻀﻠ ﺔ ‪ ""\ n" + name.title () +‬ﻫ ﻲ‪(":‬‬
‫‪w‬ﻟﻠﻐ ﺔ ﻓ ﻲ اﻟﻠﻐﺎ ت‪:‬‬
‫ﺒﺎﻋ ﺔ ))( ‪("\ t" + language.title‬‬
‫ﻃ‬

‫ﺑﻜﻞ اﺳﻢ ﻗﺎﺋﻤ ﺔ اﻵن‪.‬‬‫ﺒﻄ ﺔ‬


‫ﺗ‬‫ﺒﺤ ﺖ اﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫ﻛﻤﺎﺗﺮى ﻓ ﻲ ‪u ،‬أﺻ‬
‫ﺒﻌﺾ اﻵﺧﺮ ﻟﺪﻳﻬﻢ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻠﻐﺎ ت اﻟﻤﻔﻀﻠ ﺔ‪ .‬ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﺑﻌﺾ اﻷﺷﺨﺎص ﻟﺪﻳﻬﻢ ﻟﻐ ﺔ ﻣﻔﻀﻠ ﺔ واﺣﺪة واﻟ‬‫ﻻﺣﻆ أن‬
‫ﺑﻜﻞ ﻗﻴﻤ ﺔ ﻣﻦ اﻟﻘﺎﻣﻮس ‪،‬ﻷﻧﻨﺎ ﻧﻌﻠﻢ أن‬‫ﺘﻔﺎظ‬
‫ﺘﻐﻴﺮة ﻟﻼﺣ‬
‫ﺘﺨﺪم ﻟﻐﺎ ت اﻷﺳﻤﺎء اﻟﻤ‬
‫ﺘﻜﺮار ﺧﻼل اﻟﻘﺎﻣﻮس ﻓ ﻲ ‪v ،‬ﻓﺈﻧﻨﺎ ﻧ ﺴ‬
‫ﺑﺎﻟ‬
‫ﺘﺨﺪم‬
‫ﺋﻴ ﺴﻴ ﺔ ‪ ،‬ﻧ ﺴ‬
‫ﺘﻜﻮن ﻗﺎﺋﻤ ﺔ‪ .‬داﺧﻞ ﺣﻠﻘ ﺔ اﻟﻘﺎﻣﻮس اﻟﺮ‬
‫ﻛﻞ ﻗﻴﻤ ﺔﺳ‬

‫‪112‬اﻟﻔﺼﻞ اﻟ ﺴﺎدس‬
‫‪Machine Translated by Google‬‬

‫ﺘﺸﻐﻴﻞ ﻣﻦ ﺧﻼل ﻗﺎﺋﻤ ﺔ اﻟﻠﻐﺎ ت اﻟﻤﻔﻀﻠ ﺔ ﻟﻜﻞ ﺷﺨﺺ‪.‬‬


‫ﺣﻠﻘ ﺔ أﺧﺮى ﻟﻠ‬
‫اﻵنﻳﻤﻜﻦ ﻟﻜﻞ ﺷﺨﺺﺳﺮد اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻠﻐﺎ ت اﻟﻤﻔﻀﻠ ﺔ ﻛﻤﺎﻳﺤﻠﻮ ﻟﻪ‪:‬‬

‫ﻟﻐﺎ ت ﺟﻴﻦ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‪:‬‬


‫ﺜﻮن‬
‫ﺑﺎﻳ‬
‫ﺑﻲ‬
‫رو‬

‫اﻟﻠﻐﺎ ت اﻟﻤﻔﻀﻠ ﺔ ﻟ ﺴﺎرة ﻫ ﻲ‪:‬‬


‫ج‬

‫ﻟﻐﺎ ت ﻓﻴﻞ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‪:‬‬


‫ﺜﻮن‬
‫ﺑﺎﻳ‬
‫ﻫﺎﺳﻜﻞ‬

‫اﻟﻠﻐﺎ ت اﻟﻤﻔﻀﻠ ﺔ ﻟﺪى إدوارد ﻫ ﻲ‪:‬‬


‫ﺑﻲ‬
‫رو‬
‫ﻳﺬ ﻫ ﺐ‬

‫ﺑﺪاﻳ ﺔ ﺣﻠﻘ ﺔ ‪for‬ﻓ ﻲ اﻟﻘﺎﻣﻮس ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن ﻟﺪى‬‫ﺒﺎرة ‪if‬ﻓ ﻲ‬


‫ﺒﺮ ‪،‬ﻳﻤﻜﻨﻚﺗﻀﻤﻴﻦ ﻋ‬
‫ﺑﺸﻜﻞ أﻛ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﺤ ﺴﻴﻦ ﻫﺬا اﻟ‬
‫ﻟ‬
‫ﺜﺮ ﻣﻦ ﻟﻐ ﺔ ﻣﻔﻀﻠ ﺔ ﻋﻦ ﻃﺮﻳﻖ ﻓﺤﺺ ﻗﻴﻤ ﺔ ‪)len‬اﻟﻠﻐﺎ ت(‪.‬‬
‫ﻛﻞ ﺷﺨﺺ أﻛ‬

‫ﺜﺮ ﻣﻦ ﻣﻔﻀﻞ واﺣﺪ ‪ ،‬ﻓ ﺴﻴﻈﻞ اﻹﺧﺮاج ﻛﻤﺎ ﻫﻮ‪ .‬إذا ﻛﺎن اﻟﺸﺨﺺ ﻟﺪﻳﻪ ﻟﻐ ﺔ ﻣﻔﻀﻠ ﺔ واﺣﺪة ﻓﻘﻂ ‪،‬‬
‫إذا ﻛﺎن ﻟﺪى اﻟﺸﺨﺺ أﻛ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ اﻟﻘﻮل إن ﻟﻐ ﺔﺳﺎرة اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ ‪C.‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻌﻜ ﺲ ذﻟﻚ‪ .‬ﻋﲆﺳ‬
‫ﻓﻴﻤﻜﻨﻚﺗﻐﻴﻴﺮ اﻟﺼﻴﺎﻏ ﺔ ﻟ‬

‫ﺜﻠ ﺔ‬
‫ﺜﻴﺮ ﻣﻤﺎﺗﺮاه ﻓ ﻲ اﻷﻣ‬
‫ﺑﻜ‬‫ﺑﺸﻜﻞ أﻋﻤﻖ‬‫ﺘﺪاﺧﻞ اﻟﻌﻨﺎﺻﺮ‬
‫ﺑ‬‫الﻳﺠ ﺐ ﻋﻠﻴﻚ إﺟﺮاءﺗﺪاﺧﻞ ﺷﺪﻳﺪ ﻓ ﻲ اﻟﻘﻮاﺋﻢ واﻟﻘﻮاﻣﻴ ﺲ‪ .‬إذا ﻛﻨ ﺖﺗﻘﻮم‬
‫ﺑ ﺴﻂ ﻟﺤﻞ اﻟﻤﺸﻜﻠ ﺔ‪.‬‬
‫ﺘﺪاﺧﻞ ‪ ،‬ﻓﻤﻦ اﻟﻤﺮﺟﺢ أنﺗﻮﺟﺪ ﻃﺮﻳﻘ ﺔ أ‬
‫ﺒﻴﺮة ﻣﻦ اﻟ‬
‫ﺘﻮﻳﺎ ت ﻛ‬
‫ﺑﻤ ﺴ‬‫ﺑﻘ ﺔ أو إذا ﻛﻨ ﺖﺗﻌﻤﻞ ﻣﻊ رﻣﺰ ﺷﺨﺺ آﺧﺮ‬
‫اﻟ ﺴﺎ‬

‫ﻗﺎﻣﻮس ﻓ ﻲ ﻗﺎﻣﻮس‬
‫ﺑ ﺴﺮﻋ ﺔ ﻋﻨﺪﻣﺎﺗﻔﻌﻞ ذﻟﻚ‪.‬‬‫ﺒﺮﻣﺠﻴ ﺔ ﻣﻌﻘﺪة‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺒﺢ اﻟ‬
‫ﻳﻤﻜﻨﻚﺗﻀﻤﻴﻦ ﻗﺎﻣﻮس داﺧﻞ ﻗﺎﻣﻮس آﺧﺮ ‪ ،‬وﻟﻜﻦﻳﻤﻜﻦ أنﺗﺼ‬
‫ﺘﺨﺪام أﺳﻤﺎء‬
‫ﺘﺨﺪم ﻓﺮﻳﺪ ‪ ،‬ﻓﻴﻤﻜﻨﻚ اﺳ‬
‫ﺘﺨﺪﻣﻴﻦ ﻟﻤﻮﻗﻊ وﻳ ﺐ ‪ ،‬وﻟﻜﻞ ﻣﻨﻬﻢ اﺳﻢ ﻣ ﺴ‬
‫ﺜﺎل ‪ ،‬إذا ﻛﺎن ﻟﺪﻳﻚ ﻋﺪة ﻣ ﺴ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺨﺪام ﻗﺎﻣﻮس ﻛﻘﻴﻤ ﺔ‬
‫ﺑﺎﺳ‬‫ﺘﺨﺪم‬
‫ﺑﻌﺪ ذﻟﻚﺗﺨﺰﻳﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﺣﻮل ﻛﻞ ﻣ ﺴ‬‫ﺗﻴﺢ ﻓ ﻲ اﻟﻘﺎﻣﻮس‪.‬ﻳﻤﻜﻨﻚ‬
‫ﺘﺨﺪﻣﻴﻦ ﻛﻤﻔﺎ‬
‫اﻟﻤ ﺴ‬
‫ﺘﺨﺪم‪ :‬اﻻﺳﻢ اﻷول واﺳﻢ‬
‫ﺛﻼ ث ﻣﻌﻠﻮﻣﺎ ت ﻋﻦ ﻛﻞ ﻣ ﺴ‬‫ﺘﺨﺰﻳﻦ‬
‫ﺑ‬‫ﺘﺎﻟﻴ ﺔ ‪ ،‬ﻧﻘﻮم‬
‫ﺑﻪ‪ .‬ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ اﻟ‬‫ﺘﺨﺪم اﻟﺨﺎص‬
‫ﺑﺎﺳﻢ اﻟﻤ ﺴ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﻣﺮ‬
‫ﺑﻜﻞ اﺳﻢ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﺨﺪﻣﻴﻦ وﻗﺎﻣﻮس اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﺮ‬
‫اﻟﻌﺎﺋﻠ ﺔ واﻟﻤﻮﻗﻊ‪.‬ﺳﻨﺼﻞ إﱃ ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت ﻋﻦ ﻃﺮﻳﻖﺗﻜﺮار أﺳﻤﺎء اﻟﻤ ﺴ‬
‫ﺘﺨﺪم‪:‬‬
‫ﻣﺴ‬

‫‪many_users.py‬‬ ‫ﺘﺨﺪﻣﻮن { =‬
‫اﻟﻤ ﺴ‬
‫ﺘﺎﻳﻦ"‪{ :‬‬
‫"أﻳﻨﺸ‬
‫‪"first": "albert"،‬‬
‫ﺘﺎﻳﻦ" ‪،‬‬
‫"آﺧﺮ"‪" :‬أﻳﻨﺸ‬
‫ﺘﻮن"‪،‬‬
‫ﺑﺮﻳﻨ ﺴ‬
‫"اﻟﻤﻮﻗﻊ"‪" :‬‬
‫‪}،‬‬

‫‪113-‬ﻗﻮاﻣﻴ ﺲ‬
‫‪Machine Translated by Google‬‬

‫{ ‪'mcurie':‬‬
‫‪"first": "marie"،‬‬
‫"آﺧﺮ"‪" :‬ﻛﻮري"‪،‬‬
‫ﺑﺎرﻳ ﺲ"‪،‬‬
‫"اﻟﻤﻮﻗﻊ"‪" :‬‬
‫‪}،‬‬

‫}‬

‫ﺘﺨﺪم ‪user_info ،‬ﻓ ﻲ ‪users.items ():‬‬


‫‪u‬ﻻﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم(‬‫ﺘﺨﺪم‪+ ":‬اﺳﻢ اﻟﻤ ﺴ‬ ‫ﺒﺎﻋ ﺔ ‪("\ n‬اﺳﻢ اﻟﻤ ﺴ‬ ‫‪v‬ﻃ‬
‫""‬
‫ﺘﺨﺪم ]"آﺧﺮ"[]'‪full_name = user_info ['first'] + location = user_info ['location‬‬
‫‪+‬ﻣﻌﻠﻮﻣﺎ ت اﻟﻤ ﺴ‬
‫‪w‬‬

‫"‬
‫‪x print ("\ t‬اﻻﺳﻢ اﻟﻜﺎﻣﻞ‪+ full_name.title ()) :‬‬
‫ﺒﺎﻋ ﺔ ‪("\ t‬اﻟﻤﻮﻗﻊ‪+ location.title ()) ":‬‬
‫ﻃ‬

‫ﺘﺎﺣﻴﻦ‪ :‬واﺣﺪ ﻟﻜﻞ ﻣﻨﻬﻤﺎ‬


‫ﺑﻤﻔ‬‫ﺘﺨﺪﻣﻴﻦ‬ ‫ﻧﺤﺪد أوﻻ ً ﻗﺎﻣﻮ ً‬
‫ﺳﺎﻳ ﺴﻤﻰ اﻟﻤ ﺴ‬
‫ﺘﻀﻤﻦ اﻻﺳﻢ اﻷول ﻟﻜﻞ‬
‫ﺘﺎح ﻫ ﻲ ﻗﺎﻣﻮسﻳ‬
‫ﺑﻜﻞ ﻣﻔ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﺨﺪﻣﻴﻦ "‪"aeinstein‬و ‪"mcurie".‬اﻟﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫أﺳﻤﺎء اﻟﻤ ﺴ‬
‫ﺘﺨﺪم واﺳﻢ اﻟﻌﺎﺋﻠ ﺔ واﻟﻤﻮﻗﻊ‪.‬‬
‫ﻣﺴ‬
‫ﺘﻐﻴﺮ ‪،‬‬
‫ﺘﺨﺪم اﻟﻤ‬
‫ﺘﺎح ﻓ ﻲ اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺨﺪﻣﻴﻦ ‪.‬ﻳﺨﺰن ‪Python‬ﻛﻞ ﻣﻔ‬
‫ﺑﻌﻤﻞ ﺣﻠﻘ ﺔ ﻣﻦ ﺧﻼل ﻗﺎﻣﻮس اﻟﻤ ﺴ‬‫ﻓ ﻲ ‪u‬ﻧﻘﻮم‬
‫ﺒﻊ‬
‫ﺋﻴ ﺴﻴ ﺔ ‪ ،‬ﻧﻄ‬
‫ﺑﻤﺠﺮد دﺧﻮل ﺣﻠﻘ ﺔ اﻟﻘﺎﻣﻮس اﻟﺮ‬
‫ﺘﻐﻴﺮ ‪user_info.‬‬
‫ﺘﻘﻞ إﱃ اﻟﻤ‬
‫ﺘﺨﺪمﻳﻨ‬
‫ﺑﻜﻞ اﺳﻢ ﻣ ﺴ‬‫ﺒﻂ‬
‫ﺗ‬‫واﻟﻘﺎﻣﻮس اﻟﻤﺮ‬
‫ﺘﺨﺪم ﻋﲆ ‪v.‬‬
‫اﺳﻢ اﻟﻤ ﺴ‬

‫ﺘﻮي ﻋﲆ ﻗﺎﻣﻮس ﻣﻌﻠﻮﻣﺎ ت‬


‫ﺘﻐﻴﺮ ‪user_info ،‬اﻟﺬيﻳﺤ‬
‫ﺘﻮي اﻟﻤ‬
‫ﺒﺪأ ﻓ ﻲ اﻟﻮﺻﻮل إﱃ اﻟﻘﺎﻣﻮس اﻟﺪاﺧﻠ ﻲ‪.‬ﻳﺤ‬
‫ﻓ ﻲ ‪w‬ﻧ‬
‫ﺑﺪﻗ ﺔ وﻣﻮﻗﻊ‬‫ﺘﺎح ﻹﻧﺸﺎء اﺳﻢ ﻛﺎﻣﻞ ﻣﻨ ﺴﻖ‬
‫ﺘﺨﺪم ﻛﻞ ﻣﻔ‬
‫ﺗﻴﺢ‪" :‬اﻷول" و "اﻷﺧﻴﺮ" و "اﻟﻤﻮﻗﻊ"‪ .‬ﻧ ﺴ‬
‫ﺛ ﺔ ﻣﻔﺎ‬
‫ﺛﻼ‬‫ﺘﺨﺪم ‪ ،‬ﻋﲆ‬
‫اﻟﻤ ﺴ‬
‫ﺘﺨﺪم ‪x:‬‬
‫ﻣﻠﺨﺼﺎ ﻟﻤﺎ ﻧﻌﺮﻓﻪ ﻋﻦ ﻛﻞ ﻣ ﺴ‬
‫ً‬ ‫ﺒﻊ‬
‫ﺛﻢ ﻧﻄ‬‫ﻟﻜﻞ ﺷﺨﺺ ‪،‬‬

‫ﺘﺨﺪم‪aeinstein :‬‬
‫اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺎﻳﻦ‬
‫ﺒﺮ ت أﻳﻨﺸ‬
‫اﻻﺳﻢ اﻟﻜﺎﻣﻞ‪ :‬أﻟ‬

‫ﺘﻮن‬
‫ﺑﺮﻳﻨ ﺴ‬‫اﻟﻤﻮﻗﻊ‪:‬‬

‫ﺘﺨﺪم‪mcurie :‬‬
‫اﺳﻢ اﻟﻤ ﺴ‬
‫اﻻﺳﻢ اﻟﻜﺎﻣﻞ‪ :‬ﻣﺎري ﻛﻮري‬
‫ﺑﺎرﻳ ﺲ‬‫اﻟﻤﻮﻗﻊ‪:‬‬

‫ﺑﺎﻟﺮﻏﻢ ﻣﻦ‬‫ﺑﻘ ﺔ‪.‬‬


‫ﺘﻄﺎ‬
‫ﺘﺨﺪم ﻣ‬
‫ﺑﻨﻴ ﺔ ﻗﺎﻣﻮس ﻛﻞ ﻣ ﺴ‬‫ﻻﺣﻆ أن‬
‫ﺘﺪاﺧﻠ ﺔ أﺳﻬﻞ‪ .‬إذا ﻛﺎن ﻗﺎﻣﻮس ﻛﻞ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻘﻮاﻣﻴ ﺲ اﻟﻤ‬
‫ﺒﻨﻴ ﺔﺗﺠﻌﻞ اﻟ‬
‫ﺑﻮاﺳﻄ ﺔ ‪Python ،‬ﻓﻬﺬه اﻟ‬‫ﺑ ًﺎ‬
‫ﻟﻴ ﺲ ﻣﻄﻠﻮ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا‪.‬‬
‫ﺘﻠﻔ ﺔ ‪ ،‬ﻓ ﺴﻴﻜﻮن اﻟﺮﻣﺰ اﻟﻤﻮﺟﻮد داﺧﻞ ﺣﻠﻘ ﺔ ‪for‬أﻛ‬
‫ﺗﻴﺢ ﻣﺨ‬
‫ﺘﻮي ﻋﲆ ﻣﻔﺎ‬
‫ﺘﺨﺪمﻳﺤ‬
‫ﻣﺴ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻤﺮﻳﻦ ‪)6-1‬ﺻﻔﺤ ﺔ ‪102).‬‬


‫ﺘﻪ ﻟﻠ‬
‫ﺒ‬‫ﺘ‬‫ﺒﺮﻧﺎﻣﺞ اﻟﺬي ﻛ‬
‫ﺑﺎﻟ‬‫ﺑﺪأ‬
‫‪6-7.‬اﻷﺷﺨﺎص‪ :‬ا‬
‫ﺛ ﺔ ﺟﻤﻴﻌﻬﺎ ﻓ ﻲ ﻗﺎﺋﻤ ﺔﺗ ﺴﻤﻰ‬
‫ﺜﻼ‬‫ﺘﺨﺰﻳﻦ اﻟﻘﻮاﻣﻴ ﺲ اﻟ‬
‫ﺑ‬‫ﺘﻠﻔﻴﻦ ‪ ،‬وﻗﻢ‬
‫أﺷﺨﺎﺻﺎ ﻣﺨ‬
‫ً‬ ‫ﺜﻼن‬
‫ﺑﺈﻧﺸﺎء ﻗﺎﻣﻮﺳﻴﻦ ﺟﺪﻳﺪﻳﻦﻳﻤ‬‫ﻗﻢ‬
‫ﺒﻊ ﻛﻞ ﻣﺎﺗﻌﺮﻓﻪ ﻋﻦ ﻛﻞ ﺷﺨﺺ‪.‬‬
‫ﺛﻨﺎءﺗﻜﺮار اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬اﻃ‬
‫ﺑﻚ‪ .‬أ‬‫ﺑﻌﻤﻞﺗﻜﺮار ﻟﻘﺎﺋﻤ ﺔ اﻷﺷﺨﺎص اﻟﺨﺎﺻ ﺔ‬‫اﻷﺷﺨﺎص‪ .‬ﻗﻢ‬

‫‪114‬اﻟﻔﺼﻞ ‪6‬‬
‫‪Machine Translated by Google‬‬

‫‪6-8.‬اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ‪ :‬اﺻﻨﻊ ﻋﺪة ﻗﻮاﻣﻴ ﺲ ‪ ،‬ﺣﻴ ﺚﻳﻜﻮن اﺳﻢ ﻛﻞ ﻗﺎﻣﻮس ﻫﻮ اﺳﻢ ﺣﻴﻮان أﻟﻴﻒ‪ .‬ﻓ ﻲ ﻛﻞ‬
‫ﺘﺨﺰﻳﻦ ﻫﺬه اﻟﻘﻮاﻣﻴ ﺲ ﻓ ﻲ ﻗﺎﺋﻤ ﺔﺗ ﺴﻤﻰ اﻟﺤﻴﻮاﻧﺎ ت‬
‫ﺑ‬‫ﺘﻀﻤﻴﻦ ﻧﻮع اﻟﺤﻴﻮان واﺳﻢ اﻟﻤﺎﻟﻚ‪ .‬ﻗﻢ‬
‫ﺑ‬‫ﻗﺎﻣﻮس ‪ ،‬ﻗﻢ‬
‫ﺒﺎﻋ ﺔ ﻛﻞ ﻣﺎﺗﻌﺮﻓﻪ ﻋﻦ ﻛﻞ ﺣﻴﻮان أﻟﻴﻒ‪.‬‬
‫ﺑﻄ‬‫ﺛﻨﺎء ﻗﻴﺎﻣﻚ‬
‫ﺘﻚ وأ‬
‫ﺑﻌﻤﻞﺗﻜﺮار ﻟﻘﺎﺋﻤ‬‫ﺑﻌﺪ ذﻟﻚ ‪ ،‬ﻗﻢ‬‫اﻷﻟﻴﻔ ﺔ‪.‬‬

‫ﺘﺨﺪاﻣﻬﺎ‬
‫ﺛ ﺔ أﺳﻤﺎء ﻻﺳ‬
‫ﺛﻼ‬‫ﺑﻌﻤﻞ ﻗﺎﻣﻮسﻳ ﺴﻤﻰ ‪favourite_places.‬ﻓﻜﺮ ﻓ ﻲ‬‫‪6-9.‬اﻷﻣﺎﻛﻦ اﻟﻤﻔﻀﻠ ﺔ‪ :‬ﻗﻢ‬
‫ﺜﺮ‬
‫ﺘﻤﺮﻳﻦ أﻛ‬
‫ﺛ ﺔ أﻣﺎﻛﻦ ﻣﻔﻀﻠ ﺔ ﻟﻜﻞ ﺷﺨﺺ‪ .‬ﻟﺠﻌﻞ ﻫﺬا اﻟ‬
‫ﺛﻼ‬‫ﺘﺨﺰﻳﻦ ﻣﻜﺎن إﱃ‬
‫ﺑ‬‫ﺗﻴﺢ ﻓ ﻲ اﻟﻘﺎﻣﻮس ‪ ،‬وﻗﻢ‬
‫ﻛﻤﻔﺎ‬
‫ﺑﻌﻤﻞﺗﻜﺮار ﻓ ﻲ اﻟﻘﺎﻣﻮس ‪،‬‬‫ﺑﻌﺾ اﻷﻣﺎﻛﻦ اﻟﻤﻔﻀﻠ ﺔ ﻟﺪﻳﻬﻢ‪ .‬ﻗﻢ‬‫ﺑﻌﺾ اﻷﺻﺪﻗﺎءﺗ ﺴﻤﻴ ﺔ‬‫ﺗﺸﻮﻳ ًﻘﺎ ‪ ،‬اﻃﻠ ﺐ ﻣﻦ‬
‫ﺒﻊ اﺳﻢ ﻛﻞ ﺷﺨﺺ وأﻣﺎﻛﻨﻪ اﻟﻤﻔﻀﻠ ﺔ‪.‬‬
‫واﻃ‬

‫ﺑﺤﻴ ﺚﻳﻤﻜﻦ ﻟﻜﻞ ﺷﺨﺺ اﻟﺤﺼﻮل‬


‫ﺘﻤﺮﻳﻦ ‪)6-2‬ﺻﻔﺤ ﺔ )‪102‬‬
‫ﺑﺮﻧﺎﻣﺠﻚ ﻣﻦ اﻟ‬‫ﺘﻌﺪﻳﻞ‬
‫ﺑ‬‫‪6-10.‬اﻷرﻗﺎم اﻟﻤﻔﻀﻠ ﺔ‪ :‬ﻗﻢ‬
‫ﺒﻊ اﺳﻢ ﻛﻞ ﺷﺨﺺ ﻣﻊ أرﻗﺎﻣﻪ اﻟﻤﻔﻀﻠ ﺔ‪.‬‬
‫ﺛﻢ اﻃ‬‫ﺜﺮ ﻣﻦ رﻗﻢ واﺣﺪ ﻣﻔﻀﻞ‪.‬‬
‫ﻋﲆ أﻛ‬

‫ﺑﺈﻧﺸﺎء‬‫ﺗﻴﺢ ﻓ ﻲ ﻗﺎﻣﻮﺳﻚ‪ .‬ﻗﻢ‬


‫ﺛﻼ ث ﻣﺪن ﻛﻤﻔﺎ‬‫ﺘﺨﺪم أﺳﻤﺎء‬
‫ﺑﻌﻤﻞ ﻗﺎﻣﻮسﻳ ﺴﻤﻰ اﻟﻤﺪن‪ .‬اﺳ‬‫‪6-11.‬اﻟﻤﺪن‪ :‬ﻗﻢ‬
‫ﺒ ﻲ‪،‬‬
‫ﺘﻘﺮﻳ‬
‫ﺑﻬﺎ اﻟﻤﺪﻳﻨ ﺔ ‪ ،‬وﻋﺪدﺳﻜﺎﻧﻬﺎ اﻟ‬‫ﺘ ﻲﺗﻮﺟﺪ‬
‫ﺘﻀﻤﻴﻦ اﻟﺪوﻟ ﺔ اﻟ‬
‫ﺑ‬‫ﻗﺎﻣﻮس ﻟﻠﻤﻌﻠﻮﻣﺎ ت ﺣﻮل ﻛﻞ ﻣﺪﻳﻨ ﺔ وﻗﻢ‬
‫ﺒﻠﺪ واﻟ ﺴﻜﺎن واﻟﺤﻘﻴﻘ ﺔ ‪.‬‬ ‫ﺗﻴﺢ ﻗﺎﻣﻮس ﻛﻞ ﻣﺪﻳﻨ ﺔ ﺷﻴ ًﺌﺎ ﻣ‬
‫ﺜﻞ اﻟ‬ ‫وﺣﻘﻴﻘ ﺔ واﺣﺪة ﺣﻮلﺗﻠﻚ اﻟﻤﺪﻳﻨ ﺔ‪.‬ﻳﺠ ﺐ أنﺗﻜﻮن ﻣﻔﺎ‬
‫ﺘﺨﺰﻳﻨﻬﺎ ﻋﻨﻬﺎ‪.‬‬
‫ﺑ‬‫ﺘ ﻲ ﻗﻤ ﺖ‬
‫ﺒﻊ اﺳﻢ ﻛﻞ ﻣﺪﻳﻨ ﺔ وﻛﻞ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫اﻃ‬

‫ﺘﺨﺪم أﺣﺪ‬
‫ﺑﺄي ﻋﺪد ﻣﻦ اﻟﻄﺮق‪ .‬اﺳ‬‫ﺘﻮﺳﻴﻌﻬﺎ‬
‫ﺑﻤﺎﻳﻜﻔ ﻲ ﻟ‬‫ﺜﻠ ﺔ ﻣﻌﻘﺪة‬
‫‪6-12.‬اﻹﺿﺎﻓﺎ ت‪ :‬ﻧﺤﻦ ﻧﻌﻤﻞ اﻵن ﻣﻊ أﻣ‬
‫ﺒﺮﻧﺎﻣﺞ أوﺗﺤ ﺴﻴﻦ‬
‫ﺗﻴﺢ وﻗﻴﻢ ﺟﺪﻳﺪة أوﺗﻐﻴﻴﺮﺳﻴﺎق اﻟ‬
‫ﺑﺈﺿﺎﻓ ﺔ ﻣﻔﺎ‬‫ﺘﻮﺳﻴﻌﻪ‬
‫ﺑ‬‫ﺘﺮﻓ ﺔ ﻣﻦ ﻫﺬا اﻟﻔﺼﻞ وﻗﻢ‬
‫ﺜﻠ ﺔ اﻟﻤﺤ‬
‫اﻷﻣ‬
‫ﺗﻨ ﺴﻴﻖ اﻹﺧﺮاج‪.‬‬

‫ﻣﻠﺨﺺ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ اﻟﻘﺎﻣﻮس‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔ‬
‫ﺗﻌﻠﻤ ﺖ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛﻴﻔﻴ ﺔﺗﻌﺮﻳﻒ اﻟﻘﺎﻣﻮس وﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺗﻌﺪﻳﻠﻬﺎ ﻓ ﻲ اﻟﻘﺎﻣﻮس ‪ ،‬وﻛﻴﻔﻴ ﺔﺗﻜﺮار ﺟﻤﻴﻊ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﻣﻮس‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ‬
‫اﻟﻮﺻﻮل إﱃ اﻟﻌﻨﺎﺻﺮ اﻟﻔﺮدﻳ ﺔ و‬
‫ﺗﻴﺤﻪ ‪ ،‬وﻗﻴﻤﻪ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ أ ً‬
‫ﻳﻀﺎ ﻛﻴﻔﻴ ﺔﺗﻀﻤﻴﻦ ﻗﻮاﻣﻴ ﺲ‬ ‫ﺘﺎح ﻓ ﻲ اﻟﻘﺎﻣﻮس ‪ ،‬وﻣﻔﺎ‬
‫إﺟﺮاء ﺣﻠﻘ ﺔ ﻣﻦ ﺧﻼل أزواج اﻟﻘﻴﻤ ﺔ واﻟﻤﻔ‬
‫ﺗﺪاﺧﻞ ﻗﺎﻣﻮس داﺧﻞ ﻗﺎﻣﻮس‪.‬‬
‫ﺘﺪاﺧﻠ ﺔ ﻓ ﻲ ﻗﺎﻣﻮس ‪ ،‬و‬
‫ﺘﻌﺪدة ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪ ،‬وﻗﻮاﺋﻢ ﻣ‬
‫ﻣ‬

‫ﺑﺮاﻣﺠﻚ‪.‬‬ ‫ﺘﺨﺪﻣﻮن‬ ‫ﺒﻮل اﻟﻤﺪﺧﻼ ت ﻣﻦ اﻷﺷﺨﺎص اﻟﺬﻳﻦﻳ ﺴ‬


‫ﺘﻌﺮف ﻋﲆ ﺣﻠﻘﺎ ت ‪while‬وﻛﻴﻔﻴ ﺔ ﻗ‬ ‫ﺘ‬
‫ﺘﺎﻟ ﻲﺳ‬‫ﻓ ﻲ اﻟﻔﺼﻞ اﻟ‬
‫ﺘﺨﺪم‪.‬‬
‫ﺑ ﺔ ﻟﻤﺪﺧﻼ ت اﻟﻤ ﺴ‬
‫ﺘﺠﺎ‬‫ﺘﻤﻜﻦ ﻣﻦ اﻻﺳ‬
‫ﺘ‬‫ﺑﺮاﻣﺠﻚﺗﻔﺎﻋﻠﻴ ﺔ‪:‬ﺳ‬‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ ﺟﻌﻞ ﺟﻤﻴﻊ‬‫ﺘ‬‫ﺜﻴ ﺮًا ‪،‬ﻷﻧﻚﺳ‬ ‫ً‬
‫ﻓﺼﻼ ﻣ‬ ‫ﺳﻴﻜﻮن ﻫﺬا‬

‫‪115-‬ﻗﻮاﻣﻴ ﺲ‬
Machine Translated by Google
‫‪Machine Translated by Google‬‬

‫‪7‬‬ ‫ﺘﺨﺪم ﻓ ﻲ وﺿﻊ اﻟﻌﻤﻠﻴﺎ ت‬


‫اﻟﻤ ﺴ‬

‫ً‬
‫ﻋﺎدة إﱃ اﻟﺤﺼﻮل‬ ‫ﺘﺎج‬
‫ﺑﺬﻟﻚ ‪،‬ﺗﺤ‬‫ﺘﺨﺪم اﻟﻨﻬﺎﺋ ﻲ‪ .‬ﻟﻠﻘﻴﺎم‬
‫ﺒﺮاﻣﺞ ﻟﺤﻞ ﻣﺸﻜﻠ ﺔ اﻟﻤ ﺴ‬
‫ﺑ ﺔ ﻣﻌﻈﻢ اﻟ‬
‫ﺘﺎ‬
‫ﺘﻢ ﻛ‬
‫ﺗ‬

‫ﺷﺨﺼﺎ ﻣﺎﻳﺮﻳﺪ‬
‫ً‬ ‫ﺘﺮض أن‬
‫ﺑ ﺴﻴﻂ ‪ ،‬ﻟﻨﻔ‬‫ﺜﺎل‬
‫ﺘﺨﺪم‪ .‬ﻟﻠﺤﺼﻮل ﻋﲆ ﻣ‬
‫ﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎ ت ﻣﻦ اﻟﻤ ﺴ‬‫ﻋﲆ‬

‫ﺑ ﺔ ﻋﲆ ﻫﺬا اﻟ ﺴﺆال ‪ ،‬ﻓﺄﻧ ﺖ‬


‫ﺑﺮﻧﺎﻣﺠًﺎ ﻟﻺﺟﺎ‬‫ﺒﺖ‬
‫ﺘ‬‫ﺘﺼﻮﻳ ﺖ‪ .‬إذا ﻛ‬
‫ﺑﻤﺎﻳﻜﻔ ﻲ ﻟﻠ‬‫ﺒﻴ ﺮًا‬
‫ﻣﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن ﻛ‬

‫ﺘﺨﺪم‬
‫ﺒ ﺔ اﻟﻤ ﺴ‬
‫ﺒﺮﻧﺎﻣﺞ إﱃ ﻣﻄﺎﻟ‬
‫ﺘﺎج اﻟ‬
‫ﺑ ﺔ‪.‬ﺳﻴﺤ‬
‫ﺘﻤﻜﻦ ﻣﻦﺗﻘﺪﻳﻢ إﺟﺎ‬
‫ﺒﻞ أنﺗ‬
‫ﺘﺨﺪم ﻗ‬
‫ﺑﺤﺎﺟ ﺔ إﱃ ﻣﻌﺮﻓ ﺔ ﻋﻤﺮ اﻟﻤ ﺴ‬

‫ﺘﺤﺪﻳﺪ ﻣﺎ إذا‬
‫ﺘﺼﻮﻳ ﺖ ﻟ‬
‫ﺑﻌﻤﺮ اﻟ‬‫ﺘﻬﺎ‬
‫ﺒﺮﻧﺎﻣﺞ ﻋﲆ ﻫﺬه اﻟﻤﺪﺧﻼ ت ‪،‬ﻳﻤﻜﻨﻪ ﻣﻘﺎرﻧ‬
‫ﺘﻮي اﻟ‬
‫ﺑﻤﺠﺮد أنﻳﺤ‬‫ﺑﺈدﺧﺎل أو إدﺧﺎل ﻋﻤﺮه ؛‬
‫ﺘﻴﺠ ﺔ‪.‬‬
‫ﺑﻼغ ﻋﻦ اﻟﻨ‬
‫ﺛﻢ اﻹ‬‫ﺑﻤﺎﻳﻜﻔ ﻲ‬‫ﺒﻴ ﺮًا‬
‫ﺘﺨﺪم ﻛ‬
‫ﻛﺎن اﻟﻤ ﺴ‬

‫ﺘﺎج‬
‫ﺑﺮﻧﺎﻣﺠﻚ ﻣﻦ اﻟﻌﻤﻞ ﻣﻌﻬﺎ‪ .‬ﻋﻨﺪﻣﺎﻳﺤ‬‫ﺘﻤﻜﻦ‬
‫ﺘﻰﻳ‬
‫ﺘﺨﺪم ﺣ‬
‫ﺒﻮل ﻣﺪﺧﻼ ت اﻟﻤ ﺴ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛﻴﻔﻴ ﺔ ﻗ‬
‫ﺘ‬‫ﺳ‬
‫ﺘﻤﻜﻦ ﻣﻦ‬
‫ﺘ‬‫ﺑﺎﻷﺳﻤﺎء ‪،‬ﺳ‬‫ﺑﺮﻧﺎﻣﺠﻚ إﱃ ﻗﺎﺋﻤ ﺔ‬‫ﺘﺎج‬
‫ﺑﺎﻻﺳﻢ‪ .‬ﻋﻨﺪﻣﺎﻳﺤ‬‫ﺘﺨﺪم‬
‫ﺒ ﺔ اﻟﻤ ﺴ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﻣﻄﺎﻟ‬
‫ﺘ‬‫ﺑﺮﻧﺎﻣﺠﻚ إﱃ اﺳﻢ ‪،‬ﺳ‬
‫ﺘﺨﺪم وﻇﻴﻔ ﺔ اﻹدﺧﺎل ‪() .‬‬
‫ﺘﺴ‬‫ﺑﺬﻟﻚ ‪،‬ﺳ‬‫ﺑ ﺴﻠ ﺴﻠ ﺔ ﻣﻦ اﻷﺳﻤﺎء‪ .‬ﻟﻠﻘﻴﺎم‬‫ﺘﺨﺪم‬
‫ﺒ ﺔ اﻟﻤ ﺴ‬
‫ﻣﻄﺎﻟ‬

‫ﺒﺮ ﻗﺪر‬
‫ﺘﻤﻜﻨﻮا ﻣﻦ إدﺧﺎل أﻛ‬
‫ﺘﻰﻳ‬
‫ﺘﺨﺪﻣﻮن ذﻟﻚ ‪ ،‬ﺣ‬
‫ﺒﺮاﻣﺞ ﻃﺎﻟﻤﺎ أراد اﻟﻤ ﺴ‬ ‫ﺘﻌﻠﻢ أ ً‬
‫ﻳﻀﺎ ﻛﻴﻔﻴ ﺔ اﻟﺤﻔﺎظ ﻋﲆﺗﺸﻐﻴﻞ اﻟ‬ ‫ﺘ‬‫ﺳ‬
‫ﺘﺨﺪم ‪Python while loop‬‬
‫ﺘﺴ‬‫ﺒﺮﻧﺎﻣﺠﻚ اﻟﻌﻤﻞ ﻣﻊ ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬ﺳ‬
‫ﺑﻌﺪ ذﻟﻚ ‪،‬ﻳﻤﻜﻦ ﻟ‬‫ﻣﻤﻜﻦ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ؛‬
‫ﺑﻘﻴ ﺖ ﺷﺮوط ﻣﻌﻴﻨ ﺔ ﺻﺤﻴﺤ ﺔ‪.‬‬‫ﺒﺮاﻣﺞ ﻃﺎﻟﻤﺎ‬
‫ﻟﻠﺤﻔﺎظ ﻋﲆﺗﺸﻐﻴﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻤﻜﻦ ﻣﻦ‬
‫ﺘ‬‫ﺑﺮاﻣﺠﻚ ‪،‬ﺳ‬‫ﺘﺤﻜﻢ ﻓ ﻲ ﻣﺪةﺗﺸﻐﻴﻞ‬
‫ﺘﺨﺪم واﻟﻘﺪرة ﻋﲆ اﻟ‬
‫ﻣﻦ ﺧﻼل اﻟﻘﺪرة ﻋﲆ اﻟﻌﻤﻞ ﻣﻊ ﻣﺪﺧﻼ ت اﻟﻤ ﺴ‬
‫ﺑﺎﻟﻜﺎﻣﻞ‪.‬‬‫ﺑﺮاﻣﺞﺗﻔﺎﻋﻠﻴ ﺔ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﻛ‬

‫ﻛﻴﻒﺗﻌﻤﻞ وﻇﻴﻔ ﺔ اﻹدﺧﺎل )(‬


‫ﺘﻠﻘﻰ‬
‫ﺑﻤﺠﺮد أنﺗ‬‫ﺑﻌﺾ اﻟﻨﺼﻮص‪.‬‬‫ﺑﺈدﺧﺎل‬‫ﺘﺨﺪم‬
‫ﺘﻈﺮ أنﻳﻘﻮم اﻟﻤ ﺴ‬
‫ﺗﻨ‬‫ﺘًﺎ و‬
‫ﺒﺮﻧﺎﻣﺞ ﻣﺆﻗ‬
‫ﺑﺈﻳﻘﺎف اﻟ‬
‫ﺗﻘﻮم وﻇﻴﻔ ﺔ اﻹدﺧﺎل )(‬
‫ﺘ ﺴﻬﻴﻞ اﻟﻌﻤﻞ ﻣﻌﻬﺎ‪.‬‬
‫ﺘﻐﻴﺮ ﻟ‬
‫ﺘﺨﺪم ‪ ،‬ﻓﺈﻧﻬﺎﺗﺨﺰﻧﻬﺎ ﻓ ﻲ ﻣ‬
‫‪Python‬ﻣﺪﺧﻼ ت اﻟﻤ ﺴ‬

‫ﺛﻢﻳﻌﺮض ﻫﺬه اﻟﺮﺳﺎﻟ ﺔ ﻣﺮة‬‫ﺑﻌﺾ اﻟﻨﺼﻮص ‪،‬‬‫ﺘﺨﺪم إدﺧﺎل‬


‫ﺘﺎﻟ ﻲ ﻣﻦ اﻟﻤ ﺴ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫ﺜﺎل ‪،‬ﻳﻄﻠ ﺐ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺨﺪم‪:‬‬
‫أﺧﺮى ﻟﻠﻤ ﺴ‬

‫ﺒﻐﺎء‬
‫ﺑ‬ ‫‪")message = input‬ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ ‪ ،‬وﺳﺄﻛﺮره ﻟﻚ‪(":‬‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫ﻃ‬

‫ﺘﻰﻳﻌﺮف ﻣﺎﻳﺠ ﺐ‬
‫ﺘﺨﺪم ﺣ‬
‫ﺘ ﻲ ﻧﺮﻳﺪ ﻋﺮﺿﻬﺎ ﻟﻠﻤ ﺴ‬
‫ﺘﻌﻠﻴﻤﺎ ت ‪ ،‬اﻟ‬
‫ﺗﺄﺧﺬ وﻇﻴﻔ ﺔ اﻹدﺧﺎل )(وﺳﻴﻄ ﺔ واﺣﺪة‪ :‬اﻟﻤﻮﺟﻪ ‪ ،‬أو اﻟ‬
‫ﺑﺸ ﻲء ﻣﺎ ‪ ،‬وﺳﺄﻛﺮر ﻫﺎ‬‫ﺒﺮﻧ ﻲ‬
‫ﺒ ﺔ أﺧ‬
‫ﺘﺨﺪم اﻟﻤﻄﺎﻟ‬
‫ﺘﺸﻐﻴﻞ اﻟ ﺴﻄﺮ اﻷول ‪،‬ﻳﺮى اﻟﻤ ﺴ‬
‫ﺑ‬‫ﺜﺎل ‪ ،‬ﻋﻨﺪﻣﺎﺗﻘﻮم ‪Python‬‬
‫ﻓﻌﻠﻪ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺑﺔ ﻓ ﻲ‬
‫ﺘﺠﺎ‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻻﺳ‬
‫ﺘﺨﺪم ﻋﲆ إدﺧﺎل‪.‬ﻳ‬
‫ﺑﻌﺪ أنﻳﻀﻐﻂ اﻟﻤ ﺴ‬‫ﺘﻤﺮ‬
‫ﺘﺨﺪم رده وﻳ ﺴ‬
‫ﺑﻴﻨﻤﺎﻳﺪﺧﻞ اﻟﻤ ﺴ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﻈﺮ اﻟ‬
‫ﻟﻚ ‪.:‬ﻳﻨ‬
‫ﺘﺨﺪم‪:‬‬
‫ﺛﻢﺗﻌﺮض )‪print (message‬اﻹدﺧﺎل ﻣﺮة أﺧﺮى ﻟﻠﻤ ﺴ‬‫ﺘﻐﻴﺮة ‪،‬‬
‫اﻟﺮﺳﺎﻟ ﺔ اﻟﻤ‬

‫ﺑﺎﻟﺠﻤﻴﻊ!‬ ‫ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ ‪ ،‬وﺳﺄﻛﺮره ﻟﻚ‪ :‬ﻣﺮﺣ ً‬


‫ﺒﺎ‬
‫ﺑﺎﻟﺠﻤﻴﻊ!‬‫أ ﻫﻼ‬

‫ﺘﻲ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺘﺨﺪام ‪Sublime Text‬ﻟﻜ‬
‫ﺑﺎﻹدﺧﺎل‪.‬ﻳﻤﻜﻨﻚ اﺳ‬‫ﺘﺨﺪم‬
‫ﺘ ﻲﺗﻄﺎﻟ ﺐ اﻟﻤ ﺴ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺘﺸﻐﻴﻞ اﻟ‬
‫ﺑ‬‫ﻻﻳﻘﻮم ‪N ote Sublime Text‬‬
‫ﺑﺮاﻣﺞ ‪Python‬ﻣﻦ ﻣﺤﻄ ﺔ ﻃﺮﻓﻴ ﺔ" ﻓ ﻲ اﻟﺼﻔﺤ ﺔ‬‫ﺗﺸﻐﻴﻞ‬
‫ﺒﺮاﻣﺞ ﻣﻦ ﻣﺤﻄ ﺔ ﻃﺮﻓﻴ ﺔ‪ .‬راﺟﻊ "‬
‫ﺘﺎج إﱃﺗﺸﻐﻴﻞ ﻫﺬه اﻟ‬
‫ﺘﺤ‬‫ﺑﺎﻹدﺧﺎل ‪ ،‬وﻟﻜﻨﻚﺳ‬‫ﺗﻄﺎﻟ ﺐ‬
‫رﻗﻢ ‪16.‬‬

‫ﺑ ﺔ ﻣﻮﺟﻬﺎ ت واﺿﺤ ﺔ‬
‫ﺘﺎ‬
‫ﻛ‬
‫ﺒﻂ‬
‫ﺑﺎﻟﻀ‬‫ﺘﺨﺪم‬
‫ﺒﺮ اﻟﻤ ﺴ‬
‫ﺑﻌ ﺔﺗﺨ‬
‫ﺘﺎ‬
‫ﺒ ﺔ واﺿﺤ ﺔ وﺳﻬﻠ ﺔ اﻟﻤ‬
‫ﺘﺨﺪم ﻓﻴﻬﺎ وﻇﻴﻔ ﺔ اﻹدﺧﺎل ‪() ،‬ﻳﺠ ﺐ ﻋﻠﻴﻚﺗﻀﻤﻴﻦ ﻣﻄﺎﻟ‬
‫ﻓ ﻲ ﻛﻞ ﻣﺮةﺗ ﺴ‬
‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻤﺎﻳﺠ ﺐ إدﺧﺎﻟﻪ‪ .‬ﻋﲆﺳ‬‫ﺘﺨﺪم‬
‫ﺒﺮ اﻟﻤ ﺴ‬
‫ﺒﺎرةﺗﺨ‬
‫ﺒﺤ ﺚ ﻋﻨﻬﺎ‪.‬ﻳﺠ ﺐ أنﺗﻌﻤﻞ أي ﻋ‬
‫ﺘ ﻲﺗ‬
‫ﺑﻨﻮع اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬

‫ﺗﺮﺣﻴ ﺐ‬ ‫‪")name = input‬اﻟﺮﺟﺎء إدﺧﺎل اﺳﻤﻚ‪(":‬‬


‫ﺒﺎ ‪+ "،‬اﺳﻢ )"!" ‪+‬‬
‫ﺒﺎﻋ ﺔ )"ﻣﺮﺣ ً‬
‫ﻃ‬

‫ﺘﺨﺪم‬
‫ﺑ ﺔ اﻟﻤ ﺴ‬
‫ﺘﺠﺎ‬
‫ﺑﻖ( ﻟﻔﺼﻞ اﻟﻤﻮﺟﻪ ﻋﻦ اﺳ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺘﻴﻦ ﻓ ﻲ اﻟﻤ‬
‫ﺑﻌﺪ اﻟﻨﻘﻄ‬
‫ﺒﺎ ت )‬
‫أﺿﻒ ﻣ ﺴﺎﻓ ﺔ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟﻤﻄﺎﻟ‬
‫ﺜﺎل‪:‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺨﺪم‪ .‬ﻋﲆﺳ‬
‫ﺘﻮﺿﻴﺢ ﻣﻜﺎن إدﺧﺎل اﻟﻨﺺ ﻟﻠﻤ ﺴ‬
‫وﻟ‬

‫اﻟﺮﺟﺎء إدﺧﺎل اﺳﻤﻚ‪ :‬إﻳﺮﻳﻚ‬


‫ﺒﺎ اﻳﺮﻳﻚ!‬
‫ﻣﺮﺣ‬

‫ﺒﺐ‬
‫ﺑﺴ‬‫ﺘﺨﺪم‬
‫ﺒﺎر اﻟﻤ ﺴ‬
‫ﺜﺎل ‪ ،‬ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ إﺧ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒ ﺔ أﻃﻮل ﻣﻦﺳﻄﺮ واﺣﺪ‪ .‬ﻋﲆﺳ‬
‫ﺑ ﺔ ﻣﻄﺎﻟ‬‫ﺘﺎج أﺣﻴﺎﻧًﺎ إﱃ ﻛ‬
‫ﺘﺎ‬ ‫ﺘﺤ‬‫ﺳ‬
‫ﺑﺈدﺧﺎل ﻣﻌﻴﻦ‪.‬‬‫ﺘﻚ‬
‫ﺒ‬‫ﻣﻄﺎﻟ‬

‫‪118‬اﻟﻔﺼﻞ ‪7‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻐﻴﺮ إﱃ اﻹدﺧﺎل )(‬


‫ﺗﻤﺮﻳﺮ ﻫﺬا اﻟﻤ‬
‫ﺘﻐﻴﺮ و‬
‫ﻳﻤﻜﻨﻚﺗﺨﺰﻳﻦ ﻣﻮﺟﻬﻚ ﻓ ﻲ ﻣ‬
‫ﺒﺎرة إدﺧﺎل )(ﻧﻈﻴﻔ ﺔ ‪.‬‬
‫ﺑﺔ ﻋ‬
‫ﺘﺎ‬
‫ﺛﻢ ﻛ‬‫ﺒﺮ ﻋﺪة أﺳﻄﺮ ‪،‬‬
‫ﺘﻴﺢ ﻟﻚ ﻫﺬا إﻧﺸﺎء اﻟﻤﻮﺟﻪ ﻋ‬
‫وﻇﻴﻔ ﺔ‪.‬ﻳ‬

‫ﺗﺮﺣﻴ ﺐ‬ ‫ﺘ ﻲﺗﺮا ﻫﺎ‪".‬‬


‫ﺘﻚ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎﺗﺨﺼﻴﺺ اﻟﺮﺳﺎﺋﻞ اﻟ‬
‫ﺗﻨﺎ ﻋﻦ ﻫﻮﻳ‬
‫ﺒﺮ‬‫ﻣﻮﺟﻪ ="إذا أﺧ‬
‫"‬
‫ﻣﻮﺟﻪ ‪+ = "\ n‬ﻣﺎ ﻫﻮ اﺳﻤﻚ اﻷول؟‬

‫اﻻﺳﻢ =اﻹدﺧﺎل )ﻣﻮﺟﻪ(‬


‫ﺒﺎ" )"!" ‪+ name +‬‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻣﺮﺣ ً‬
‫ﻃ‬

‫ﺘﻌﺪدة اﻷﺳﻄﺮ‪.‬ﻳﺨﺰن اﻟ ﺴﻄﺮ اﻷول اﻟﺠﺰء اﻷول ﻣﻦ اﻟﺮﺳﺎﻟ ﺔ ﻓ ﻲ ﻣﻮﺟﻪ‬


‫ﺒﻨﺎءﺳﻠ ﺴﻠ ﺔ ﻣ‬
‫ﺜﺎل ﻃﺮﻳﻘ ﺔ واﺣﺪة ﻟ‬
‫ﻳﻮﺿﺢ ﻫﺬا اﻟﻤ‬
‫ﺘ ﻲﺗﻢﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ ﻣﻮﺟﻪ وﻳﻀﻴﻒ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﺠﺪﻳﺪة ﻓ ﻲ اﻟﻨﻬﺎﻳ ﺔ‪.‬‬
‫ﺜﺎﻧ ﻲ ‪،‬ﻳﺄﺧﺬ اﻟﻌﺎﻣﻞ = ‪+‬اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟ‬
‫ﺘﻐﻴﺮ‪ .‬ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟ‬
‫اﻟﻤ‬

‫ﺘﻮﺿﻴﺢ‪:‬‬
‫ﺘﻔﻬﺎم ﻟﻠ‬
‫ﺑﻌﺪ ﻋﻼﻣ ﺔ اﻻﺳ‬‫ﺑﻤ ﺴﺎﻓ ﺔ‬‫ﺘﺪ اﻟﻤﻮﺟﻪ اﻵن ﻋﲆﺳﻄﺮﻳﻦ ‪ ،‬ﻣﺮة أﺧﺮى‬
‫ﻳﻤ‬

‫ﺘ ﻲﺗﺮا ﻫﺎ‪.‬‬
‫ﺗﻨﺎ ﻣﻦ أﻧ ﺖ ‪،‬ﻳﻤﻜﻨﻨﺎﺗﺨﺼﻴﺺ اﻟﺮﺳﺎﺋﻞ اﻟ‬
‫ﺒﺮ‬‫إذا أﺧ‬
‫ﻣﺎ ﻫﻮ اﺳﻤﻚ اﻷول؟ إرﻳﻚ‬

‫ﺒﺎ اﻳﺮﻳﻚ!‬
‫ﻣﺮﺣ‬

‫ﺒﻮل اﻟﻤﺪﺧﻼ ت اﻟﻌﺪدﻳ ﺔ‬


‫ﺘﺨﺪام )( ‪int‬ﻟﻘ‬
‫اﺳ‬
‫ﺘﺮﺟﻢ اﻟﻔﻮري‬
‫ﺒﺎرك ﺟﻠ ﺴ ﺔ اﻟﻤ‬
‫ﺘ‬‫ﺘﺨﺪم ﻛ ﺴﻠ ﺴﻠ ﺔ‪ .‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺗﻔ ﺴﺮ ‪Python‬ﻛﻞ ﺷ ﻲءﻳﺪﺧﻠﻪ اﻟﻤ ﺴ‬
‫ﺘﺨﺪام داﻟ ﺔ ‪input () ،‬‬
‫ﻋﻨﺪ اﺳ‬
‫ﺘﺨﺪم‪:‬‬
‫ﺘ ﻲﺗ ﺴﺄل ﻋﻦ ﻋﻤﺮ اﻟﻤ ﺴ‬
‫ﺘﺎﻟﻴ ﺔ ‪ ،‬واﻟ‬
‫اﻟ‬

‫>>>اﻟﻌﻤﺮ =اﻹدﺧﺎل )"ﻛﻢ ﻋﻤﺮك؟"(‬


‫ﻛﻢ ﻋﻤﺮك؟ ‪21‬‬
‫>>>اﻟﻌﻤﺮ‬
‫"‪"21‬‬

‫ُﺮﺟﻊ ‪"21" ،‬و ﻫﻮﺗﻤ‬


‫ﺜﻴﻞ‬ ‫ﺑﺈدﺧﺎل اﻟﺮﻗﻢ ‪21 ،‬وﻟﻜﻦ ﻋﻨﺪﻣﺎ ﻧ ﺴﺄل ‪Python‬ﻋﻦ ﻗﻴﻤ ﺔ اﻟﻌﻤﺮ ‪ ،‬ﻓﺈﻧﻬﺎﺗ‬‫ﺘﺨﺪم‬
‫ﻳﻘﻮم اﻟﻤ ﺴ‬
‫ﺘ ﻲﺗﻢ إدﺧﺎﻟﻬﺎ‪.‬‬
‫اﻟ ﺴﻠ ﺴﻠ ﺔ ﻟﻠﻘﻴﻤ ﺔ اﻟﺮﻗﻤﻴ ﺔ اﻟ‬
‫ﺒﺎﻋ ﺔ‬
‫ﺑﻪ ﻫﻮ ﻃ‬‫ﺒﺎس‪ .‬إذا ﻛﺎن ﻛﻞ ﻣﺎﺗﺮﻳﺪ اﻟﻘﻴﺎم‬
‫ﺘ‬‫ﺑﻌﻼﻣﺎ ت اﻗ‬‫ﻧﻌﻠﻢ أن ‪Python‬ﻓ ﺴﺮ ت اﻹدﺧﺎل ﻛ ﺴﻠ ﺴﻠ ﺔﻷن اﻟﺮﻗﻢ اﻵن ﻣﺤﺎط‬
‫ﺘﻠﻘﻰ ﺧﻄﺄ‪:‬‬
‫ﺘ‬‫ﺘﺨﺪام اﻹدﺧﺎل ﻛﺮﻗﻢ ‪ ،‬ﻓ ﺴ‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ‪ .‬وﻟﻜﻦ إذا ﺣﺎوﻟ ﺖ اﺳ‬‫اﻹدﺧﺎل ‪ ،‬ﻓﻬﺬاﻳﻌﻤﻞ‬

‫>>>اﻟﻌﻤﺮ =اﻹدﺧﺎل )"ﻛﻢ ﻋﻤﺮك؟"(‬


‫ﻛﻢ ﻋﻤﺮك؟ ‪21‬‬
‫ش >>>اﻟﻌﻤﺮ< ‪= 18‬‬
‫‪)Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬
‫ﻣﻠﻒ ‪"<stdin>" ،‬اﻟ ﺴﻄﺮ ‪1 ،‬ﻓ ﻲ )( ‪unorderable types: str ()> = int‬‬
‫‪<module> v TypeError:‬‬

‫ﺑﻌﺪد‬‫ﺘﺞ ﻋﻦ ‪Python‬ﺧﻄﺄﻷﻧﻪ ﻻﻳﻤﻜﻦ ﻣﻘﺎرﻧ ﺔﺳﻠ ﺴﻠ ﺔ‬


‫ﺘﺨﺪام اﻹدﺧﺎل ﻹﺟﺮاء ﻣﻘﺎرﻧ ﺔ ﻋﺪدﻳ ﺔ ‪u ،‬ﻳﻨ‬
‫ﻋﻨﺪﻣﺎﺗﺤﺎول اﺳ‬
‫ﺑﺎﻟﻘﻴﻤ ﺔ اﻟﻌﺪدﻳ ﺔ ‪18 v .‬‬‫ﺻﺤﻴﺢ‪ :‬ﻻﻳﻤﻜﻦ ﻣﻘﺎرﻧ ﺔ اﻟ ﺴﻠ ﺴﻠ ﺔ "‪" 21‬اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ اﻟﻌﻤﺮ‬

‫ﺛﻨﺎء اﻟﺤﻠﻘﺎ ت ‪119‬‬


‫ﺘﺨﺪم وأ‬
‫إدﺧﺎل اﻟﻤ ﺴ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻤﻌﺎﻣﻠ ﺔ اﻹدﺧﺎل ﻛﻘﻴﻤ ﺔ ﻋﺪدﻳ ﺔ‪.‬ﺗﻘﻮم اﻟﺪاﻟ ﺔ‬


‫ﺒﺮ ‪Python‬‬
‫ﺘ ﻲﺗﺨ‬
‫ﺘﺨﺪام داﻟ ﺔ ‪int () ،‬اﻟ‬
‫ﺑﺎﺳ‬‫ﻳﻤﻜﻨﻨﺎ ﺣﻞ ﻫﺬه اﻟﻤﺸﻜﻠ ﺔ‬
‫ﺜﻴﻞ رﻗﻤ ﻲ ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻫﻨﺎ‪:‬‬
‫ﺜﻴﻞﺳﻠ ﺴﻠ ﺔ ﻟﺮﻗﻢ إﱃﺗﻤ‬
‫ﺘﺤﻮﻳﻞﺗﻤ‬
‫ﺑ‬‫)( ‪int‬‬

‫>>>اﻟﻌﻤﺮ =اﻹدﺧﺎل )"ﻛﻢ ﻋﻤﺮك؟"(‬


‫ﻛﻢ ﻋﻤﺮك؟ ‪21‬‬
‫ش >>>اﻟﻌﻤﺮ ‪)= int‬اﻟﻌﻤﺮ(‬
‫>>>اﻟﻌﻤﺮ< ‪= 18‬‬
‫ﺣﻘﻴﻘ ﻲ‬

‫ﺑﻌﺪ ذﻟﻚ‬‫ﺘﻢﺗﺤﻮﻳﻞ اﻟﻘﻴﻤ ﺔ‬


‫ﺜﺎل ‪ ،‬ﻋﻨﺪﻣﺎ ﻧﺪﺧﻞ ‪21‬ﻓ ﻲ اﻟﻤﻮﺟﻪ ‪،‬ﻳﻔ ﺴﺮ ‪Python‬اﻟﺮﻗﻢ ﻛ ﺴﻠ ﺴﻠ ﺔ ‪ ،‬وﻟﻜﻦﻳ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺒﺎر اﻟﺸﺮﻃ ﻲ‪ :‬ﻓﻬﻮﻳﻘﺎرن اﻟﻌﻤﺮ‬
‫ﺘ‬‫ﺜﻮن إﺟﺮاء اﻻﺧ‬
‫ﺒﺎﻳ‬
‫ﺑﻮاﺳﻄ ﺔ ‪int () u.‬اﻵنﻳﻤﻜﻦ ﻟ‬‫إﱃﺗﻜﺮار رﻗﻤ ﻲ‬

‫ﺒﺎر‬
‫ﺘ‬‫ﺘﻢﺗﻘﻴﻴﻢ ﻫﺬا اﻻﺧ‬
‫ﺒﺮ ﻣﻦ أوﻳ ﺴﺎوي ‪18.‬وﻳ‬
‫ﺘﻮي اﻵن ﻋﲆ اﻟﻘﻴﻤ ﺔ اﻟﻌﺪدﻳ ﺔ )‪21‬و ‪18‬ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن اﻟﻌﻤﺮ أﻛ‬
‫ﺘ ﻲﺗﺤ‬
‫)اﻟ‬
‫إﱃ ‪True.‬‬
‫ﺑﻤﺎ‬‫ﺑﺮﻧﺎﻣﺠًﺎﻳﺤﺪد ﻣﺎ إذا ﻛﺎن اﻷﺷﺨﺎص ﻃﻮﻳﻞ اﻟﻘﺎﻣ ﺔ‬‫ﺒﺎرك‬
‫ﺘ‬‫ﺑﺮﻧﺎﻣﺞ ﻓﻌﻠ ﻲ؟ ﺿﻊ ﻓ ﻲ اﻋ‬‫ﺘﺨﺪم داﻟ ﺔ )( ‪int‬ﻓ ﻲ‬
‫ﻛﻴﻒﺗ ﺴ‬
‫ﻳﻜﻔ ﻲ ﻟﺮﻛﻮ ب اﻷﺳﻄﻮاﻧ ﺔ‬
‫ﺘﺮ‪:‬‬
‫ﻛﻮﺳ‬

‫ﺒﻮﺻ ﺔ؟"(‬
‫ﺑﺎﻟ‬‫ﺒﻠﻎ ﻃﻮﻟﻚ‬
‫‪")rollercoaster.py height = input‬ﻛﻢﻳ‬
‫ﺗﻔﺎع(‬
‫ﺗﻔﺎع ‪)= int‬اﻻر‬
‫اﻻر‬

‫ﺗﻔﺎع< ‪= 36:‬‬
‫إذا ﻛﺎن اﻻر‬
‫ﺑﻤﺎﻳﻜﻔ ﻲ ﻟﻠﺮﻛﻮ ب!"(‬‫ﺒﺎﻋ ﺔ ‪("\ n‬أﻧ ﺖ ﻃﻮﻳﻞ‬
‫ﻃ‬
‫آﺧﺮ‪:‬‬

‫ﺒﺮ ﻗﻠﻴ ﻼً‪(".‬‬


‫ﺘﻜﻮن ﻗﺎد ًرا ﻋﲆ اﻟﺮﻛﻮ ب ﻋﻨﺪﻣﺎﺗﻜ‬
‫‪print ("\ n‬ﺳ‬

‫ﺗﻔﺎع(‬
‫ﺗﻔﺎع ‪)= int‬اﻻر‬
‫ﺑـ ‪36‬ﻷن اﻻر‬‫ﺗﻔﺎع‬
‫ﺒﺮﻧﺎﻣﺞ ﻣﻘﺎرﻧ ﺔ اﻻر‬
‫ﻳﻤﻜﻦ ﻟﻠ‬
‫ﺒﺮ ﻣﻦ أوﻳ ﺴﺎوي ‪36 ،‬ﻓﺈﻧﻨﺎ‬
‫ﺒﺎري‪ .‬إذا ﻛﺎن اﻟﺮﻗﻢ اﻟﺬيﺗﻢ إدﺧﺎﻟﻪ أﻛ‬
‫ﺑﻦ ﻛﻮﻣ‬
‫ﺒﻞ إﺟﺮاء ا‬
‫ﺜﻴﻞ ﻋﺪدي ﻗ‬
‫ﻳﺤﻮل ﻗﻴﻤ ﺔ اﻹدﺧﺎل إﱃﺗﻤ‬
‫ﺑﻤﺎﻳﻜﻔ ﻲ‪:‬‬‫ﺘﺨﺪم أﻧﻪ ﻃﻮﻳﻞ‬
‫ﺒﺮ اﻟﻤ ﺴ‬
‫ﻧﺨ‬

‫ﺒﻮﺻ ﺔ؟ ‪71‬‬
‫ﺑﺎﻟ‬‫ﻛﻢ ﻃﻮﻟﻚ‬

‫ﺑﻤﺎﻳﻜﻔ ﻲ ﻟﻠﺮﻛﻮ ب!‬‫أﻧ ﺖ ﻃﻮﻳﻞ‬

‫ﺑﻴ ﺔ واﻟﻤﻘﺎرﻧﺎ ت ‪،‬‬


‫ﺘﺨﺪام اﻟﻤﺪﺧﻼ ت اﻟﺮﻗﻤﻴ ﺔ ﻹﺟﺮاء اﻟﻌﻤﻠﻴﺎ ت اﻟﺤ ﺴﺎ‬
‫ﻋﻨﺪ اﺳ‬
‫ﺜﻴﻞ ﻋﺪدي أوﻻً‪.‬‬
‫ﺗﺄﻛﺪ ﻣﻦﺗﺤﻮﻳﻞ ﻗﻴﻤ ﺔ اﻹدﺧﺎل إﱃﺗﻤ‬

‫ﻣﺸﻐﻞ ‪Modulo‬‬
‫رﻗﻤﺎ واﺣﺪًا ﻋﲆ رﻗﻢ‬
‫ً‬ ‫ﺘﺸﻐﻴﻞ ‪modulo (٪) ،‬اﻟﺬيﻳﻘ ﺴﻢ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﺮﻗﻤﻴ ﺔ ﻋﺎﻣﻞ اﻟ‬
‫ﻣﻦ اﻷدوا ت اﻟﻤﻔﻴﺪة ﻓ ﻲ اﻟ‬
‫ﺒﺎﻗ ﻲ‪:‬‬
‫آﺧﺮ وﻳﻌﻴﺪ اﻟ‬

‫‪>>> 4٪ 3‬‬
‫‪1‬‬
‫‪>>> 5٪ 3‬‬
‫‪2‬‬
‫‪>>> 6٪ 3‬‬
‫‪0‬‬

‫ﺑﻊ‬
‫‪120‬اﻟﻔﺼﻞ اﻟ ﺴﺎ‬
‫‪Machine Translated by Google‬‬

‫‪>>> 7٪ 3‬‬
‫‪1‬‬

‫ﺒﺎﻗ ﻲ‪.‬‬
‫ﺒﺮك ﻓﻘﻂ ﻣﺎ ﻫﻮ اﻟ‬
‫ﺘﻨﺎﺳ ﺐ ﻓﻴﻬﺎ رﻗﻢ ﻣﻊ رﻗﻢ آﺧﺮ ؛ﻳﺨ‬
‫ﺘ ﻲﻳ‬
‫ﺑﻌﺪد اﻟﻤﺮا ت اﻟ‬
‫ﺒﺮك ﻋﺎﻣﻞ ‪modulo‬‬
‫ﻻﻳﺨ‬

‫ﺋﻤﺎ ‪0.‬ﻳﻤﻜﻨﻚ‬
‫ُﺮﺟﻊ ﻋﺎﻣﻞ ‪modulo‬دا ً‬ ‫ﺑ ﻼ ً ﻟﻠﻘ ﺴﻤ ﺔ ﻋﲆ رﻗﻢ آﺧﺮ ‪ ،‬ﻓﺈن اﻟ‬
‫ﺒﺎﻗ ﻲﻳﻜﻮن ‪0 ،‬ﻟﺬﻟﻚﻳ‬ ‫ﻋﻨﺪﻣﺎﻳﻜﻮن أﺣﺪ اﻷرﻗﺎم ﻗﺎ‬
‫ﺘﺤﺪﻳﺪ ﻣﺎ إذا ﻛﺎن اﻟﺮﻗﻢ زوﺟ ًﻴﺎ أم ﻓﺮدﻳًﺎ‪:‬‬
‫ﺘﺨﺪام ﻫﺬه اﻟﺤﻘﻴﻘ ﺔ ﻟ‬
‫اﺳ‬

‫ﺒﺮك ﻣﺎ إذا ﻛﺎن زوﺟ ًﻴﺎ أم ﻓﺮدﻳًﺎ‪(":‬‬


‫رﻗﻤﺎ ‪ ،‬وﺳﺄﺧ‬
‫ً‬ ‫‪")even_or_odd.py number = input‬أدﺧﻞ‬
‫)‪number = int (number‬‬

‫إذا ﻛﺎن اﻟﺮﻗﻢ‪2 == 0: ٪‬‬


‫"‬ ‫"‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬اﻟﺮﻗﻢ اﻵﺧﺮ‪:‬‬
‫ﻃ‬ ‫‪)+ str‬رﻗﻢ( ‪+‬‬ ‫ﺘﻰ‪") .‬‬
‫ﺑﻞ ﻫﻮ ﺣ‬

‫"‬ ‫"‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬اﻟﺮﻗﻢ‬
‫ﻃ‬ ‫أﻣﺮ ﻏﺮﻳ ﺐ‪(".‬‬ ‫‪)+ str‬رﻗﻢ( ‪+‬‬

‫ﺛﻨﻴﻦ ‪ ،‬ﻟﺬﻟﻚ إذا ﻛﺎن ﻣﻘﻴﺎس اﻟﺮﻗﻢ‬


‫ﺋﻤﺎ ﻋﲆ ا‬
‫ﺑﻠ ﺔ ﻟﻠﻘ ﺴﻤ ﺔ دا ً‬
‫اﻷرﻗﺎم اﻟﺰوﺟﻴ ﺔ ﻗﺎ‬
‫ﺛﻨﺎن ﻫﻮ ﺻﻔﺮ ) ﻫﻨﺎ ‪ ،‬إذا ﻛﺎن اﻟﺮﻗﻢ‪2 == 0) ٪‬ﻳﻜﻮن اﻟﺮﻗﻢ زوﺟ ًﻴﺎ‪ .‬ﺧﻼف ذﻟﻚ ‪ ،‬إﻧﻪ أﻣﺮ ﻏﺮﻳ ﺐ‪.‬‬
‫وا‬

‫ﺒﺮك إذا ﻛﺎن زوﺟ ًﻴﺎ أم ﻓﺮدﻳًﺎ‪42 :‬‬


‫رﻗﻤﺎ ‪ ،‬وﺳﺄﺧ‬
‫ً‬ ‫أدﺧﻞ‬

‫اﻟﻌﺪد ‪42‬زوﺟ ﻲ‪.‬‬

‫ﺒﻮل اﻟﻤﺪﺧﻼ ت ﻓ ﻲ ‪Python 2.7‬‬


‫ﻗ‬
‫ﺘﺨﺪم‪.‬ﺗﻔ ﺴﺮ ﻫﺬه‬
‫ﺑﺈدﺧﺎل اﻟﻤ ﺴ‬‫ﺒﺔ‬
‫ﺘﺨﺪام اﻟﺪاﻟ ﺔ )( ‪raw_input‬ﻋﻨﺪ اﻟﻤﻄﺎﻟ‬
‫ﺘﺨﺪم ‪Python 2.7 ،‬ﻓﻴﺠ ﺐ ﻋﻠﻴﻚ اﺳ‬
‫إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺗﻤﺎﻣﺎ ﻛﻤﺎﻳﻔﻌﻞ اﻟﻤﺪﺧﻼ ت )(ﻓ ﻲ ‪Python 3.‬‬
‫ً‬ ‫اﻟﻮﻇﻴﻔ ﺔ ﻛﻞ اﻟﻤﺪﺧﻼ ت ﻛ ﺴﻠ ﺴﻠ ﺔ ‪،‬‬

‫ﺗﺤﺎول‬
‫ﺘﺨﺪم ﻋﲆ أﻧﻪ ﻛﻮد ‪Python‬و‬ ‫ﺘﻮي ‪Python 2.7‬ﻋﲆ وﻇﻴﻔ ﺔ إدﺧﺎل )(أ ً‬
‫ﻳﻀﺎ ‪ ،‬ﻟﻜﻦ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔﺗﻔ ﺴﺮ إدﺧﺎل اﻟﻤ ﺴ‬ ‫ﻳﺤ‬
‫ﺘﺸﻐﻴﻞ رﻣﺰ‬
‫ﺑ‬‫ﺘﻘﻮم‬
‫ﺜﻮن ﻻﺗﻔﻬﻢ اﻟﻤﺪﺧﻼ ت ؛ ﻓ ﻲ أﺳﻮأ اﻷﺣﻮال ‪،‬ﺳ‬
‫ﺑﺎﻳ‬‫ﺘﺤﺼﻞ ﻋﲆ ﺧﻄﺄ ﻣﻔﺎده أن‬
‫ﺗﺸﻐﻴﻞ اﻹدﺧﺎل‪ .‬ﻓ ﻲ أﺣ ﺴﻦ اﻷﺣﻮالﺳ‬
‫ﺘﺨﺪم )( ‪raw_input‬‬
‫ﺘﺨﺪم ‪Python 2.7 ،‬ﻓﺎﺳ‬
‫ﻟﻢﺗﻜﻦﺗﻨﻮيﺗﺸﻐﻴﻠﻪ‪ .‬إذا ﻛﻨ ﺖﺗ ﺴ‬

‫ﺑﺪﻻ ً ﻣﻦ اﻹدﺧﺎل ‪().‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺒﻊ رﺳﺎﻟ ﺔ ﺣﻮلﺗﻠﻚ‬


‫ﺘ ﻲﻳﺮﻳﺪ ﻫﺎ‪ .‬اﻃ‬
‫ﺘﺄﺟﺮة اﻟ‬
‫ﺘﺨﺪم ﻋﻦ ﻧﻮع اﻟ ﺴﻴﺎرة اﻟﻤ ﺴ‬
‫ﺑﺮﻧﺎﻣﺠًﺎﻳ ﺴﺄل اﻟﻤ ﺴ‬‫ﺘﺐ‬
‫ﺗﺄﺟﻴﺮ اﻟ ﺴﻴﺎرا ت‪ :‬اﻛ‬
‫‪7-1.‬‬
‫ﺑﺎرو‪".‬‬
‫ﺜﻮر ﻋﻠﻴﻚ ﻣﻦﺳﻮ‬
‫ﺑﺈﻣﻜﺎﻧ ﻲ اﻟﻌ‬‫ﺜﻞ "دﻋﻨ ﻲ أرى ﻣﺎ إذا ﻛﺎن‬
‫اﻟ ﺴﻴﺎرة ‪ ،‬ﻣ‬

‫ﺑﻬﻢ‪ .‬إذا‬‫ﺘﺨﺪم ﻋﻦ ﻋﺪد اﻷﺷﺨﺎص ﻓ ﻲ ﻣﺠﻤﻮﻋ ﺔ اﻟﻌﺸﺎء اﻟﺨﺎﺻ ﺔ‬


‫ﺑﺮﻧﺎﻣﺠًﺎﻳ ﺴﺄل اﻟﻤ ﺴ‬‫ﺘﺐ‬
‫‪7-2.‬اﻟﺠﻠﻮس ﻓ ﻲ اﻟﻤﻄﻌﻢ‪ :‬اﻛ‬
‫ﺘﻬﻢ‬
‫ﺑﻠﻎ ﻋﻦ أن ﻃﺎوﻟ‬
‫ﺘﻈﺎر ﻃﺎوﻟ ﺔ‪ .‬ﺧﻼف ذﻟﻚ ‪ ،‬أ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻬﻢ اﻧ‬
‫ﺑﺄﻧﻪﺳﻴ‬‫ﺒﻊ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬
‫ﺛﻤﺎﻧﻴ ﺔ ‪ ،‬اﻃ‬‫ﺜﺮ ﻣﻦ‬
‫ﺑ ﺔ أﻛ‬
‫ﻛﺎﻧ ﺖ اﻹﺟﺎ‬
‫ﺟﺎ ﻫﺰة‪.‬‬

‫ﺑﻠﻎ ﻋﻤﺎ إذا ﻛﺎن اﻟﺮﻗﻢ ﻣﻀﺎﻋ ًﻔﺎ ﻟـ ‪10‬أم ﻻ‪.‬‬


‫ﺛﻢ أ‬‫ﺘﺨﺪم ﻋﻦ رﻗﻢ ‪،‬‬
‫‪7-3.‬ﻣﻀﺎﻋﻔﺎ ت اﻟﻌﺸﺮة‪ :‬اﺳﺄل اﻟﻤ ﺴ‬

‫ﺛﻨﺎء اﻟﺤﻠﻘﺎ ت‬
‫ﺘﺨﺪم وأ‬
‫إدﺧﺎل اﻟﻤ ﺴ‬ ‫‪121‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻴﻨﻤﺎ اﻟﺤﻠﻘﺎ ت‬‫إدﺧﺎل‬


‫ﺒﺮﻣﺠﻴ ﺔ ﻣﺮة واﺣﺪة ﻟﻜﻞ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻤﺠﻤﻮﻋ ﺔ ‪ .‬ﻓ ﻲ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻠ ﺔ ﻣﻦ اﻟ‬
‫ﺗﻨﻔﺬ ﻛ‬
‫ﺗﺄﺧﺬ ﺣﻠﻘ ﺔ ‪for‬ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ و‬
‫ﺛﻨﺎءه ‪.‬‬
‫ﺷﺮﻃﺎ ﻣﻌﻴﻨًﺎ ﺻﺤﻴﺤًﺎ أو أ‬
‫ً‬ ‫ﺑﻞ ‪،‬ﺗﻌﻤﻞ ﺣﻠﻘ ﺔ ‪while‬ﻃﺎﻟﻤﺎ أن‬
‫اﻟﻤﻘﺎ‬

‫ﺛﻨﺎءﺗﺸﻐﻴﻞ اﻟﺤﻠﻘ ﺔ‬
‫أ‬
‫ﺘﺎﻟﻴ ﺔ ﻣﻦ ‪1‬إﱃ ‪5:‬‬
‫ﺜﺎل ‪،‬ﺗﻌﺪ ﺣﻠﻘ ﺔ ‪while‬اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒﺮﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻷرﻗﺎم‪ .‬ﻋﲆﺳ‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪while‬ﻟﻠﻌﺪ ﻋ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬

‫‪counting.py‬‬ ‫‪Current_number = 1‬‬


‫ﺑﻴﻨﻤﺎ ‪current_number <= 5:‬‬
‫ﺒﺎﻋ ﺔ )‪(current_number‬‬
‫ﻃ‬
‫‪Current_number + = 1‬‬

‫ﺘﻢﺗﻌﻴﻴﻦ ﺣﻠﻘ ﺔ ‪while‬‬


‫ﺛﻢﻳ‬
‫ﺒﺪأ اﻟﻌﺪ ﻣﻦ ‪1‬ﻋﻦ ﻃﺮﻳﻖﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ ‪current_number‬إﱃ ‪1.‬‬
‫ﻓ ﻲ اﻟ ﺴﻄﺮ اﻷول ‪ ،‬ﻧ‬
‫ﺒﻊ اﻟﻜﻮد اﻟﻤﻮﺟﻮد داﺧﻞ اﻟﺤﻠﻘ ﺔ‬
‫ﺘﻤﺮار ﻓ ﻲ اﻟﻌﻤﻞ ﻃﺎﻟﻤﺎ أن ﻗﻴﻤ ﺔ ‪current_number‬أﻗﻞ ﻣﻦ أوﺗ ﺴﺎوي ‪5.‬ﻳﻄ‬
‫ﻟﻼﺳ‬
‫ﺘﺸﻐﻴﻞ = ‪ +‬ﻫﻮ‬
‫ﺛﻢﺗﻀﻴﻒ ‪1‬إﱃﺗﻠﻚ اﻟﻘﻴﻤ ﺔ ﻣﻊ ‪ )current_number + = 1.‬ﻋﺎﻣﻞ اﻟ‬
‫ﻗﻴﻤ ﺔ ‪current_number‬‬
‫ﺘﺼﺎر ﻟـ )‪current_number = current_number + 1.‬‬
‫اﺧ‬

‫ﺒﻊ ‪1‬‬
‫ﺗﻄ‬‫ﻳﻜﺮر ‪Python‬اﻟﺤﻠﻘ ﺔ ﻃﺎﻟﻤﺎ أن اﻟﺸﺮط ‪ current_number <= 5‬ﺻﺤﻴﺢ‪ .‬ﻧﻈ ﺮًاﻷن ‪1‬أﻗﻞ ﻣﻦ ‪5 ،‬‬
‫ﺒﻊ ‪Python 2‬‬
‫ﺗﻄ‬‫ﺛﻢﺗﻀﻴﻒ ‪1 ،‬ﻣﻤﺎﻳﺠﻌﻞ اﻟﺮﻗﻢ اﻟﺤﺎﻟ ﻲ ‪2.‬ﻧﻈ ﺮًاﻷن ‪2‬أﻗﻞ ﻣﻦ ‪5 ،‬‬
‫‪Python‬‬

‫ﺒﺮ ﻣﻦ ‪5 ،‬‬
‫ﺑﻤﺠﺮد أنﺗﻜﻮن ﻗﻴﻤ ﺔ ‪current_number‬أﻛ‬‫وﻳﻀﻴﻒ ‪1‬ﻣﺮة أﺧﺮى ‪ ،‬ﻣﻤﺎﻳﺠﻌﻞ اﻟﺮﻗﻢ اﻟﺤﺎﻟ ﻲ ‪3 ،‬و ﻫﻜﺬا‪.‬‬
‫ﺒﺮﻧﺎﻣﺞ‪:‬‬
‫ﺘﻬ ﻲ اﻟ‬
‫ﺘﻮﻗﻒ اﻟﺤﻠﻘ ﺔ ﻋﻦ اﻟﻌﻤﻞ وﻳﻨ‬
‫ﺗ‬

‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬

‫ﺘﺮة‬
‫ﺒ ﺔ إﱃ ﻓ‬
‫ﺘﺎج اﻟﻠﻌ‬
‫ﺜﺎل ‪،‬ﺗﺤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺨﺪﻣﻬﺎ ﻛﻞﻳﻮم ﻋﲆ اﻷرﺟﺢ ﻋﲆ ﺣﻠﻘﺎ ت ‪while .‬ﻋﲆﺳ‬
‫ﺘ ﻲﺗ ﺴ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺘﻮي اﻟ‬
‫ﺗﺤ‬
‫ﺑﻤﺠﺮد أن‬‫ﺘﻮﻗﻒ ﻋﻦ اﻟﻌﻤﻞ‬
‫ﺘﺎﻟ ﻲﻳﻤﻜﻦ أنﺗ‬
‫ﺑﺎﻟ‬
‫ﺘﻤﺮ ﻓ ﻲ اﻟﻌﻤﻞ ﻃﺎﻟﻤﺎ ﻛﻨ ﺖﺗﺮﻏ ﺐ ﻓ ﻲ ﻣﻮاﺻﻠ ﺔ اﻟﻠﻌ ﺐ ‪ ،‬و‬
‫ﺘﺴ‬‫ﺘﻜﺮار ﻟ‬
‫ﻣﻦ اﻟ‬
‫ﺗﻄﻠ ﺐ ﻣﻨﻬﺎ اﻹﻗﻼع‪.‬‬
‫ﺑﻌﺪ أن أردﻧﺎ‬‫ﺘﻰ‬
‫ﺘﻤﺮوا ﻓ ﻲ اﻟﻌﻤﻞ ﺣ‬
‫ﺑﺬﻟﻚ أو اﺳ‬‫ﺒﺮ ﻫﻢ‬
‫ﺒﻞ أن ﻧﺨ‬
‫ﺘﻌً ﺎ إذاﺗﻮﻗﻔ ﺖ ﻋﻦ اﻟﻌﻤﻞ ﻗ‬
‫ﺒﺮاﻣﺞ ﻣﻤ‬
‫ﺘﺨﺪام اﻟ‬
‫ﻟﻦﻳﻜﻮن اﺳ‬
‫اﻹﻗﻼع ‪ ،‬ﻟﺬا ﻓﺈن اﻟﺤﻠﻘﺎ ت ﻣﻔﻴﺪة ﺟﺪًا‪.‬‬

‫ﺘﻴﺎر وﻗ ﺖ اﻹﻧﻬﺎء‬
‫ﺑﺎﺧ‬‫ﺘﺨﺪم‬
‫اﻟ ﺴﻤﺎح ﻟﻠﻤ ﺴ‬
‫ﺒﺮﻧﺎﻣﺞ داﺧﻞ ﺣﻠﻘ ﺔ ‪while .‬ﺳﻨﺤﺪد ﻗﻴﻤ ﺔ‬
‫ﺘﺨﺪم ﻣﻦ ﺧﻼل وﺿﻊ ﻣﻌﻈﻢ اﻟ‬
‫ﺑﺮﻧﺎﻣﺞ ‪parrot.py‬ﻃﺎﻟﻤﺎ أراد اﻟﻤ ﺴ‬‫ﻳﻤﻜﻨﻨﺎﺗﺸﻐﻴﻞ‬
‫ﺑﺈدﺧﺎل ﻗﻴﻤ ﺔ ‪quit:‬‬‫ﺘﺨﺪم‬
‫ﺒﺮﻧﺎﻣﺞ ﻃﺎﻟﻤﺎ ﻟﻢﻳﻘﻢ اﻟﻤ ﺴ‬
‫ﺘﻤﺮ ﻓ ﻲﺗﺸﻐﻴﻞ اﻟ‬
‫ﺛﻢ ﻧ ﺴ‬
‫‪quit‬‬

‫‪parrot.py u‬ﻣﻮﺟﻪ ‪= "\ n‬ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ وﺳﺄﻛﺮره ﻟﻚ‪":‬‬


‫"‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﻣﻮﺟﻪ ‪+ = "\ n‬أدﺧﻞ" إﻧﻬﺎء "ﻹﻧﻬﺎء اﻟ‬

‫‪122‬اﻟﻔﺼﻞ ‪7‬‬
‫‪Machine Translated by Google‬‬

‫""‬
‫ﺛﻨﺎء اﻟﺮﺳﺎﻟ ﺔ! ‪= 'quit':‬‬
‫‪v message = w‬أ‬

‫رﺳﺎﻟ ﺔ =إدﺧﺎل )ﻣﻮﺟﻪ(‬


‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫ﻃ‬

‫ﺛﻢ‬‫ﺑﺨﻴﺎرﻳﻦ ﻟﻬﻤﺎ‪ :‬إدﺧﺎل رﺳﺎﻟ ﺔ أو إدﺧﺎل ﻗﻴﻤ ﺔ إﻧﻬﺎء )ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪" ،‬إﻧﻬﺎء"(‪.‬‬‫ﺘﺨﺪم‬
‫ﺒﺮ اﻟﻤ ﺴ‬
‫ﻓ ﻲ ‪u ،‬ﻧﺤﺪد ﻣﻮﺟﻬً ﺎﻳﺨ‬
‫ّ ف اﻟﺮﺳﺎﻟ ﺔ ﻛ ﺴﻠ ﺴﻠ ﺔ ﻓﺎرﻏ ﺔ ‪"" ، ،‬ﻟﺬﻟﻚ ﻟﺪى‬
‫ﺘﺨﺪم‪ .‬ﻧﺤﻦ ﻧﻌ ﺮ‬
‫ﺘﺨﺰﻳﻦ أي ﻗﻴﻤ ﺔﻳﺪﺧﻠﻬﺎ اﻟﻤ ﺴ‬
‫ﺘﻐﻴﺮة ‪v‬ﻟ‬
‫ﺑﺈﻋﺪاد رﺳﺎﻟ ﺔ ﻣ‬‫ﻧﻘﻮم‬
‫ﺘﻢ ﻓﻴﻬﺎﺗﺸﻐﻴﻞ‬
‫ﺘ ﻲﻳ‬
‫ﺘ ﻲﺗﺼﻞ ﻓﻴﻬﺎ إﱃ اﻟ ﺴﻄﺮ ‪while .‬ﻓ ﻲ اﻟﻤﺮة اﻷوﱃ اﻟ‬
‫ﺘﺤﻘﻖ ﻣﻨﻪ ﻓ ﻲ اﻟﻤﺮة اﻷوﱃ اﻟ‬
‫‪Python‬ﺷ ﻲء ﻟﻠ‬
‫ﺘﻢ إدﺧﺎل أي إدﺧﺎل‬
‫ﺑـ ‪"quit" ،‬وﻟﻜﻦ ﻟﻢﻳ‬‫ﺒﺎرة ‪while ،‬ﻳﺠ ﺐ أنﺗﻘﺎرن ﻗﻴﻤ ﺔ اﻟﺮﺳﺎﻟ ﺔ‬
‫ﺒﺮﻧﺎﻣﺞ ووﺻﻮل ‪Python‬إﱃ اﻟﻌ‬
‫اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ‪ .‬ﻟﺤﻞ ﻫﺬه‬
‫ﺑﻌ ﺔﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘﺎ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﻣ‬
‫ﺘﻪ ‪ ،‬ﻓﻠﻦﺗ‬
‫ﺘﻰ اﻵن‪ .‬إذا ﻟﻢﻳﻜﻦ ﻟﺪى ‪Python‬ﻣﺎﻳﻤﻜﻦ ﻣﻘﺎرﻧ‬
‫ﺘﺨﺪم ﺣ‬
‫ﻟﻠﻤ ﺴ‬
‫ﺜﻮن‬
‫ﺒﺎﻳ‬
‫ﺘﻜﻮن ﻣﻨﻄﻘﻴ ﺔ ﻟ‬
‫ﺘﺄﻛﺪ ﻣﻦ إﻋﻄﺎء اﻟﺮﺳﺎﻟ ﺔ ﻗﻴﻤ ﺔ أوﻟﻴ ﺔ‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻬﺎ ﻣﺠﺮدﺳﻠ ﺴﻠ ﺔ ﻓﺎرﻏ ﺔ ‪ ،‬إﻻ أﻧﻬﺎﺳ‬
‫اﻟﻤﺸﻜﻠ ﺔ ‪ ،‬ﻧ‬
‫ﺗﻌﻤﻞ‪.‬ﻳﻌﻤﻞ ﻫﺬا ‪while loop w‬ﻃﺎﻟﻤﺎ أن ﻗﻴﻤ ﺔ اﻟﺮﺳﺎﻟ ﺔ‬
‫ﺘﻨﻔﻴﺬ ‪com parison‬اﻟﺬيﻳﺠﻌﻞ ﺣﻠﻘ ﺔ ‪while‬‬
‫ﺑ‬‫ﺗ ﺴﻤﺢ ﻟﻬﺎ‬
‫و‬
‫ﻟﻴ ﺴ ﺖ ‪"quit".‬‬

‫ﺜﻮن اﻟﺤﻠﻘ ﺔ‪ .‬ﻓ ﻲ ‪message = input‬‬


‫ﺑﺎﻳ‬‫ﺒﺎرة ﻋﻦﺳﻠ ﺴﻠ ﺔ ﻓﺎرﻏ ﺔ ﻓﻘﻂ ‪ ،‬ﻟﺬﻟﻚﺗﺪﺧﻞ‬
‫ﻓ ﻲ اﻟﻤﺮة اﻷوﱃ ﻣﻦ ﺧﻼل اﻟﺤﻠﻘ ﺔ ‪،‬ﺗﻜﻮن اﻟﺮﺳﺎﻟ ﺔ ﻋ‬
‫ﺘﻢﺗﺨﺰﻳﻨﻪ ﻓ ﻲ اﻟﺮﺳﺎﻟ ﺔ‬
‫ﺗﻪ‪ .‬ﻛﻞ ﻣﺎﻳﺪﺧﻠﻮﻧﻪﻳ‬
‫ﺑﺈدﺧﺎل ﻣﺪﺧﻼ‬‫ﺘﺨﺪم‬
‫ﺘﻰﻳﻘﻮم اﻟﻤ ﺴ‬
‫ﺘﻈﺮ ﺣ‬
‫ﺗﻨ‬‫ﺒﺔ و‬
‫)ﻣﻮﺟﻪ( ‪،‬ﺗﻌﺮض ‪Python‬اﻟﻤﻄﺎﻟ‬

‫ﺑﻴﺎن ‪while .‬‬‫ﺜﻮنﺗﻘﻴﻴﻢ اﻟﺤﺎﻟ ﺔ ﻓ ﻲ‬


‫ﺑﺎﻳ‬‫ﺛﻢﺗﻌﻴﺪ‬‫ﺘﻬﺎ‬
‫ﺒﺎﻋ‬
‫وﻃ‬
‫ﺜﻮن اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﺪﺧﻼ ت‪ .‬ﻋﻨﺪﻣﺎ‬
‫ﺑﺎﻳ‬‫ﺘﻈﺮ‬
‫ﺗﻨ‬‫ﺒ ﺔ ﻣﺮة أﺧﺮى و‬
‫ﺘﻢ ﻋﺮض اﻟﻤﻄﺎﻟ‬
‫ﺘﺨﺪم ﻟﻢﻳﺪﺧﻞ ﻛﻠﻤ ﺔ "إﻧﻬﺎء" ‪،‬ﻳ‬
‫ﻃﺎﻟﻤﺎ أن اﻟﻤ ﺴ‬
‫ﺒﺮﻧﺎﻣﺞ‪:‬‬
‫ﺘﻬ ﻲ اﻟ‬
‫ﺘﻮﻗﻒ ‪Python‬ﻋﻦﺗﻨﻔﻴﺬ ﺣﻠﻘ ﺔ ‪while‬وﻳﻨ‬
‫ﺗ‬‫ﺘﺨﺪم أﺧﻴ ﺮًا ‪"quit" ،‬‬
‫ﻳﺪﺧﻞ اﻟﻤ ﺴ‬

‫ﺑﺎﻟﺠﻤﻴﻊ!‬ ‫ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ ‪ ،‬وﺳﺄﻛﺮره ﻟﻚ‪ :‬أدﺧﻞ "إﻧﻬﺎء" ﻹﻧﻬﺎء اﻟ‬


‫ﺒﺮﻧﺎﻣﺞ‪ .‬أ ﻫﻼ‬

‫ﺑﺎﻟﺠﻤﻴﻊ!‬‫أ ﻫﻼ‬

‫ﺒﺎ ﻣﺠﺪدا‪.‬‬ ‫ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ ‪ ،‬وﺳﺄﻛﺮره ﻟﻚ‪ :‬أدﺧﻞ "إﻧﻬﺎء" ﻹﻧﻬﺎء اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ‪ .‬ﻣﺮﺣ‬

‫ﺒﺎ ﻣﺠﺪدا‪.‬‬
‫ﻣﺮﺣ‬

‫ﺘﺮك‬ ‫ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ ‪ ،‬وﺳﺄﻛﺮره ﻟﻚ‪ :‬أدﺧﻞ "إﻧﻬﺎء" ﻹﻧﻬﺎء اﻟ‬


‫ﺒﺮﻧﺎﻣﺞ‪.‬ﻳ‬

‫ﺘﺮك‬
‫ﻳ‬

‫ﺒﺎر‬
‫ﺘ‬‫ﺑ ﺴﻴﻂ إذا ﻛﺎن اﻻﺧ‬‫ﺒﻊ ﻛﻠﻤ ﺔ "إﻧﻬﺎء" ﻛﻤﺎ ﻟﻮ ﻛﺎﻧ ﺖ رﺳﺎﻟ ﺔ ﻓﻌﻠﻴ ﺔ‪.‬‬
‫ﺜﻨﺎء أﻧﻪﻳﻄ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺒﺮﻧﺎﻣﺞ ﺟﻴﺪًا ‪،‬‬
‫ﻳﻌﻤﻞ ﻫﺬا اﻟ‬
‫ﻳﻌﻤﻞ ﻋﲆ إﺻﻼح ﻫﺬا‪:‬‬

‫ﻣﻮﺟﻪ ‪= "\ n‬ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ ‪ ،‬وﺳﺄﻛﺮره ﻟﻚ‪":‬‬


‫"‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﻣﻮﺟﻪ ‪+ = "\ n‬أدﺧﻞ" إﻧﻬﺎء "ﻹﻧﻬﺎء اﻟ‬

‫""‬
‫‪message = while message! = 'quit':‬‬

‫رﺳﺎﻟ ﺔ =إدﺧﺎل )ﻣﻮﺟﻪ(‬

‫إذا ﻛﺎﻧ ﺖ اﻟﺮﺳﺎﻟ ﺔ! ‪= 'quit':‬‬


‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫ﻃ‬

‫ﺛﻨﺎء اﻟﺤﻠﻘﺎ ت ‪123‬‬


‫ﺘﺨﺪم وأ‬
‫إدﺧﺎل اﻟﻤ ﺴ‬
‫‪Machine Translated by Google‬‬

‫ﺒﻞ ﻋﺮض اﻟﺮﺳﺎﻟ ﺔ‬


‫ﺑﺈﺟﺮاء ﻓﺤﺺﺳﺮﻳﻊ ﻗ‬‫ﺒﺮﻧﺎﻣﺞ اﻵن‬
‫ﻳﻘﻮم اﻟ‬
‫ﺑﻖ ﻣﻊ ﻗﻴﻤ ﺔ ‪quit:‬‬
‫ﺘﻄﺎ‬
‫ﺒﻊ اﻟﺮﺳﺎﻟ ﺔ ﻓﻘﻂ إذا ﻟﻢﺗ‬
‫وﻳﻄ‬

‫ﺑﺎﻟﺠﻤﻴﻊ!‬ ‫ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ ‪ ،‬وﺳﺄﻛﺮره ﻟﻚ‪ :‬أدﺧﻞ "إﻧﻬﺎء" ﻹﻧﻬﺎء اﻟ‬


‫ﺒﺮﻧﺎﻣﺞ‪ .‬أ ﻫﻼ‬

‫ﺑﺎﻟﺠﻤﻴﻊ!‬‫أ ﻫﻼ‬

‫ﺒﺎ ﻣﺠﺪدا‪.‬‬ ‫ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ ‪ ،‬وﺳﺄﻛﺮره ﻟﻚ‪ :‬أدﺧﻞ "إﻧﻬﺎء" ﻹﻧﻬﺎء اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ‪ .‬ﻣﺮﺣ‬

‫ﺒﺎ ﻣﺠﺪدا‪.‬‬
‫ﻣﺮﺣ‬

‫ﺘﺮك‬ ‫ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ ‪ ،‬وﺳﺄﻛﺮره ﻟﻚ‪ :‬أدﺧﻞ "إﻧﻬﺎء" ﻹﻧﻬﺎء اﻟ‬


‫ﺒﺮﻧﺎﻣﺞ‪.‬ﻳ‬

‫ﺘﺨﺪام اﻟﻌﻠﻢ‬
‫اﺳ‬

‫ﺜﺮ‬
‫ﺒﺮاﻣﺞ اﻷﻛ‬
‫ﺑﻴﻨﻤﺎ ﻛﺎن ﺷﺮط ﻣﻌﻴﻦ ﺻﺤﻴﺤًﺎ‪ .‬وﻟﻜﻦ ﻣﺎذا ﻋﻦ اﻟ‬‫ﺒﺮﻧﺎﻣﺞﻳﺆدي ﻣﻬﺎم ﻣﻌﻴﻨ ﺔ‬
‫ﺑﻖ ‪ ،‬ﻛﺎن ﻟﺪﻳﻨﺎ اﻟ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﻓ ﻲ اﻟﻤ‬
‫ﺒﺮﻧﺎﻣﺞ ﻋﻦ اﻟﻌﻤﻞ؟‬
‫ﺘﻠﻔ ﺔ إﱃﺗﻮﻗﻒ اﻟ‬
‫ﺘ ﻲ ﻗﺪﺗﺆدي ﻓﻴﻬﺎ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺣﺪا ث اﻟﻤﺨ‬
‫ﺗﻌﻘﻴﺪًا واﻟ‬

‫ﺒ ﺔ‪.‬‬
‫ﺘﻠﻔ ﺔ إﻧﻬﺎء اﻟﻠﻌ‬
‫ﺒ ﺔ ﻣﺎ ‪،‬ﻳﻤﻜﻦ ﻟﻠﻌﺪﻳﺪ ﻣﻦ اﻷﺣﺪا ث اﻟﻤﺨ‬
‫ﺜﺎل ‪ ،‬ﻓ ﻲ ﻟﻌ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺮض أنﻳﺤﻤﻴﻬﺎ ‪،‬ﻳﺠ ﺐ أن‬
‫ﺘ ﻲ ﻛﺎن ﻣﻦ اﻟﻤﻔ‬
‫ﺘﻢﺗﺪﻣﻴﺮ ﺟﻤﻴﻊ اﻟﻤﺪن اﻟ‬
‫ﺘﻪ ‪ ،‬أوﻳ‬
‫ﻋﻨﺪﻣﺎﻳﻨﻔﺪ اﻟﻼﻋ ﺐ ﻣﻦ اﻟ ﺴﻔﻦ ‪ ،‬أوﻳﻨﻔﺪ وﻗ‬
‫ﺘﻤﻠ ﺔ ﻹﻳﻘﺎف‬
‫ﺘﻬ ﻲ إذا ﺣﺪ ث أي ﻣﻦ ﻫﺬه اﻷﺣﺪا ث‪ .‬ﻓ ﻲ ﺣﺎﻟ ﺔ ﺣﺪو ث اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺣﺪا ث اﻟﻤﺤ‬
‫ﺒ ﺔ‪.‬ﻳﺠ ﺐ أنﻳﻨ‬
‫ﺘﻬ ﻲ اﻟﻠﻌ‬
‫ﺗﻨ‬
‫ﺒﺎر ﻛﻞ ﻫﺬه اﻟﺸﺮوط ﻓ ﻲ وﻗ ﺖ واﺣﺪ‬
‫ﺘ‬‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻓ ﻲ ﻣﺤﺎوﻟ ﺔ ﻻﺧ‬
‫اﻟ‬

‫ﺒﺎ‪.‬‬
‫ﺒﻴﺎن ﻣﻌﻘﺪًا وﺻﻌ ً‬
‫ﺒﺢ اﻟ‬
‫ﻳﺼ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﺬيﻳﺠ ﺐﺗﺸﻐﻴﻠﻪ ﻓﻘﻂ ﻃﺎﻟﻤﺎ أن اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺸﺮوط ﺻﺤﻴﺤ ﺔ ‪،‬‬
‫ﺒ ﺔ ﻟﻠ‬
‫ﺑﺎﻟﻨ ﺴ‬
‫ﺘﻐﻴﺮ ‪ ،‬اﻟﻤ ﺴﻤﻰ اﻟﻌﻠﻢ ‪،‬ﻳﻌﻤﻞ ﻛﺈﺷﺎرة‬
‫ﻧﺸﻄﺎ أم ﻻ‪ .‬ﻫﺬا اﻟﻤ‬
‫ً‬ ‫ﺑﺄﻛﻤﻠﻪ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﻐﻴﺮ واﺣﺪﻳﺤﺪد ﻣﺎ إذا ﻛﺎن اﻟ‬
‫ﻳﻤﻜﻨﻚﺗﺤﺪﻳﺪ ﻣ‬
‫ﺛﻨﺎءﺗﻌﻴﻴﻦ اﻟﻌﻠﻢ ﻋﲆ ‪True‬وإﻳﻘﺎفﺗﺸﻐﻴﻞ ‪ning‬ﻋﻨﺪﻣﺎﻳﻘﻮم أي ﻣﻦ‬
‫ﺘﻢﺗﺸﻐﻴﻠﻬﺎ أ‬
‫ﺑﺤﻴ ﺚﻳ‬‫ﺑﺮاﻣﺠﻨﺎ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬ﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﻟﻠ‬
‫ﺑﻨﺎ ﻣﻦ ﺷﺮط‬‫ﺒﺎرة ‪while‬اﻟﻌﺎﻣ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﺤﻘﻖ ﻋ‬
‫ﺘﻴﺠ ﺔ ﻟﺬﻟﻚ ‪،‬ﻳﺠ ﺐ أنﺗ‬
‫ﺘﻌﻴﻴﻦ ﻗﻴﻤ ﺔ اﻟﻌﻠﻢ إﱃ ‪False.‬ﻧ‬
‫ﺑ‬‫اﻷﺣﺪا ث اﻟﻌﺪﻳﺪة‬
‫ﺗﻨﺎ اﻷﺧﺮى )ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن‬
‫ﺒﺎرا‬
‫ﺘ‬‫ﺑﻌﺪ ذﻟﻚ ‪،‬ﻳﻤﻜﻦﺗﻨﻈﻴﻢ ﺟﻤﻴﻊ اﺧ‬‫واﺣﺪ ﻓﻘﻂ‪ :‬ﻣﺎ إذا ﻛﺎﻧ ﺖ اﻟﻌﻼﻣ ﺔ ﺻﺤﻴﺤ ﺔ ﺣﺎﻟ ًﻴﺎ أم ﻻ‪.‬‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺑﻘﻴ ﺔ اﻟ‬‫ﺑﺪﻗ ﺔ ﻓ ﻲ‬
‫ﺒﻂ اﻟﻌﻼﻣ ﺔ ﻋﲆ )‪False‬‬
‫ﺣﺪ ث ﻣﺎﻳﺠ ﺐ أنﻳﻀ‬

‫ﺘ ﻲﺳﻨ ﺴﻤﻴﻬﺎ ﻧﺸﻄ ﺔ )ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻪ‬


‫ﺑﻖ‪ .‬ﻫﺬه اﻟﻌﻼﻣ ﺔ ‪ ،‬اﻟ‬
‫ﻋﻠﻤﺎ إﱃ ‪parrot.py‬ﻣﻦ اﻟﻘ ﺴﻢ اﻟ ﺴﺎ‬
‫ً‬ ‫دﻋﻨﺎ ﻧﻀﻴﻒ‬
‫ﺘﻤﺮ ﻓ ﻲ اﻟﻌﻤﻞ أم ﻻ‪:‬‬
‫ﺒﺮﻧﺎﻣﺞﺳﻴ ﺴ‬
‫ﺘﺮاﻗ ﺐ ﻣﺎ إذا ﻛﺎن اﻟ‬
‫ﺑﺄي ﺷ ﻲء( ‪،‬ﺳ‬‫ﺘﻬﺎ‬
‫ﻳﻤﻜﻨﻚﺗ ﺴﻤﻴ‬

‫ﻣﻮﺟﻪ ‪= "\ n‬ﻗﻞ ﻟ ﻲ ﺷﻴ ًﺌﺎ ‪ ،‬وﺳﺄﻛﺮره ﻟﻚ‪":‬‬


‫"‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﻣﻮﺟﻪ ‪+ = "\ n‬أدﺧﻞ" إﻧﻬﺎء "ﻹﻧﻬﺎء اﻟ‬

‫ش ﻧﺸﻂ = ﺻﺤﻴﺢ‬
‫ﺛﻨﺎء اﻟﻨﺸﺎط‪:‬‬
‫‪v‬أ‬

‫رﺳﺎﻟ ﺔ =إدﺧﺎل )ﻣﻮﺟﻪ(‬

‫‪w‬إذا ﻛﺎﻧ ﺖ اﻟﺮﺳﺎﻟ ﺔ ‪== 'quit':‬‬


‫ﻧﺸﻂ =ﺧﻄﺄ‬
‫‪x‬آﺧﺮ‪:‬‬

‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬


‫ﻃ‬

‫‪124‬اﻟﻔﺼﻞ ‪7‬‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺴﻂ‬
‫ﺑﺬﻟﻚﻳﺠﻌﻞﺗﻌﻠﻴﻤ ﺔ ‪while‬أ‬‫ﺒﺮﻧﺎﻣﺞ ﻓ ﻲ ﺣﺎﻟ ﺔ ﻧﺸﻄ ﺔ‪ .‬اﻟﻘﻴﺎم‬
‫ﺒﺪأ اﻟ‬
‫ﺘﻰﻳ‬
‫ﺘﻐﻴﺮ اﻟﻨﺸﻂ إﱃ ‪True u‬ﺣ‬
‫ﺘﻌﻴﻴﻦ اﻟﻤ‬
‫ﺑ‬‫ﻗﻤﻨﺎ‬
‫ﺘﻐﻴﺮ‬
‫ﺒﺮﻧﺎﻣﺞ‪ .‬ﻃﺎﻟﻤﺎ ﻇﻞ اﻟﻤ‬
‫ﺑﺎﻟﻤﻨﻄﻖ ﻓ ﻲ أﺟﺰاء أﺧﺮى ﻣﻦ اﻟ‬‫ﺘﻤﺎم‬
‫ﺘﻢ اﻻ ﻫ‬
‫ﺒﺎرة ‪while‬ﻧﻔ ﺴﻬﺎ ؛ﻳ‬
‫ﺘﻢ إﺟﺮاء ﻣﻘﺎرﻧ ﺔ ﻓ ﻲ ﻋ‬
‫ﻷﻧﻪ ﻻﻳ‬
‫ﺘﻤﺮ اﻟﺤﻠﻘ ﺔ ﻓ ﻲﺗﺸﻐﻴﻞ ‪v.‬‬
‫ﺘﺴ‬‫اﻟﻨﺸﻂ ﺻﺤﻴﺤًﺎ ‪،‬ﺳ‬

‫ﺘﺤﻘﻖ ﻣﻦ ﻗﻴﻤ ﺔ اﻟﺮﺳﺎﻟ ﺔ‬


‫ﻓ ﻲﺗﻌﻠﻴﻤ ﺔ ‪if‬داﺧﻞ اﻟﺤﻠﻘ ﺔ ‪while ،‬ﻧ‬
‫ﺘﻌﻴﻴﻦ ﻧﺸﻂ‬
‫ﺑ‬‫ﺑﺈدﺧﺎل "إﻧﻬﺎء" ‪ ،‬ﻧﻘﻮم‬‫ﺘﺨﺪم‬
‫ﺗﻪ‪ .‬إذا ﻗﺎم اﻟﻤ ﺴ‬
‫ﺑﺈدﺧﺎل ﻣﺪﺧﻼ‬‫ﺘﺨﺪم‬
‫ﺑﻤﺠﺮد أنﻳﻘﻮم اﻟﻤ ﺴ‬
‫ﺗﻪ ﻛﺮﺳﺎﻟ ﺔ‪.‬‬
‫ﺒﻊ ﻣﺪﺧﻼ‬
‫ﺑﺨﻼف "إﻧﻬﺎء" ‪x ،‬ﻓﺈﻧﻨﺎ ﻧﻄ‬‫ﺘﺨﺪم أي ﺷ ﻲء‬
‫ﺘﻮﻗﻒ اﻟﺤﻠﻘ ﺔ ‪while .‬إذا أدﺧﻞ اﻟﻤ ﺴ‬
‫ﺗ‬‫إﱃ ‪False ،‬و‬

‫ﺑﻌﺪ‬‫ﺑﻴﺎن ‪while .‬وﻟﻜﻦ اﻵن‬‫ﺒﺎﺷﺮة ﻓ ﻲ‬


‫ﺒﺎر اﻟﺸﺮﻃ ﻲ ﻣ‬
‫ﺘ‬‫ﺑﻖ ﺣﻴ ﺚ وﺿﻌﻨﺎ اﻻﺧ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺒﺮﻧﺎﻣﺞ ﻟﻪ ﻧﻔ ﺲ إﺧﺮاج اﻟﻤ‬
‫ﻫﺬا اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ ﻛﻜﻞ ﻓ ﻲ ﺣﺎﻟ ﺔ ﻧﺸﻄ ﺔ ‪،‬ﺳﻴﻜﻮن ﻣﻦ اﻟ ﺴﻬﻞ إﺿﺎﻓ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ‬
‫ﺒﺢ ﻟﺪﻳﻨﺎ ﻋﻼﻣ ﺔ ﻟﻺﺷﺎرة إﱃ ﻣﺎ إذا ﻛﺎن اﻟ‬
‫أن أﺻ‬
‫ﺒﺮاﻣﺞ‬
‫ﺒﺢ ﺧﻄﺄ‪ .‬ﻫﺬا ﻣﻔﻴﺪ ﻓ ﻲ اﻟ‬
‫ﺘﺼ‬‫ﺒﺢ ﻧﺸﻄ ﺔ ﻟ‬
‫ﺒ ﺐ ﻓ ﻲ أنﺗﺼ‬
‫ﺘﺴ‬‫ﺘ ﻲﻳﺠ ﺐ أنﺗ‬
‫ﺒﺎرا ت ) ‪elif‬ﻟﻸﺣﺪا ث اﻟ‬
‫ﺜﻞ ﻋ‬
‫ﺒﺎرا ت )ﻣ‬
‫ﺘ‬‫اﻻﺧ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺘ ﻲﻳﺠ ﺐ أنﺗﺆدي ﻛﻞ ﻣﻨﻬﺎ إﱃ إﻳﻘﺎفﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘ ﻲ ﻗﺪﻳﻜﻮن ﻓﻴﻬﺎ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺣﺪا ث اﻟ‬
‫ﺜﻞ اﻷﻟﻌﺎ ب اﻟ‬
‫اﻟﻤﻌﻘﺪة ﻣ‬
‫ﺋﻴ ﺴﻴ ﺔ ‪ ،‬وﻳﻤﻜﻦ ﻋﺮض‬
‫ﺒ ﺔ اﻟﺮ‬
‫ﺘﺨﺮج ﺣﻠﻘ ﺔ اﻟﻠﻌ‬
‫ﺒﺢ اﻟﻌﻼﻣ ﺔ اﻟﻨﺸﻄ ﺔ ‪False ،‬ﺳ‬
‫ﺒ ﺐ أي ﻣﻦ ﻫﺬه اﻷﺣﺪا ث ﻓ ﻲ أنﺗﺼ‬
‫ﺘﺴ‬‫ﻋﻨﺪﻣﺎﻳ‬
‫رﺳﺎﻟ ﺔ ‪Game Over ،‬وﻳﻤﻜﻦ ﻣﻨﺢ اﻟﻼﻋ ﺐ ﺧﻴﺎر اﻟﻠﻌ ﺐ ﻣﺮة أﺧﺮى‪.‬‬

‫ﺘﺨﺪام ﻛ ﺴﺮ ﻟﻠﺨﺮوج ﻣﻦ ﺣﻠﻘ ﺔ‬


‫اﺳ‬
‫ﺒﺎر‬
‫ﺘ‬‫ﺘﺎﺋﺞ أي اﺧ‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻧ‬‫ﺒﻘﻴ ﺔ ﻓ ﻲ اﻟﺤﻠﻘ ﺔ ‪،‬‬
‫ﺘ‬‫ﺑﺮﻣﺠﻴ ﺔ ﻣ‬‫ﻟﻠﺨﺮوج ﻣﻦ ﺣﻠﻘ ﺔ ‪while‬ﻋﲆ اﻟﻔﻮر دونﺗﺸﻐﻴﻞ أيﺗﻌﻠﻴﻤﺎ ت‬
‫ﺘﺨﺪمﺗﻌﻠﻴﻤ ﺔ ‪break .‬‬
‫ﺷﺮﻃ ﻲ ‪ ،‬اﺳ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ‬
‫ﺘ ﻲﻳ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﺤﻜﻢ ﻓ ﻲﺳﻄﻮر اﻟ‬
‫ﺘﺨﺪاﻣﻪ ﻟﻠ‬
‫ﺑﻚ ؛ﻳﻤﻜﻨﻚ اﺳ‬‫ﺒﺮﻧﺎﻣﺞ اﻟﺨﺎص‬
‫ﺑﻴﺎن ﻛ ﺴﺮﻳﻮﺟﻪﺗﺪﻓﻖ اﻟ‬
‫ﺘ ﻲﺗﺮﻳﺪ ﻫﺎ ﻓﻘﻂ ‪ ،‬ﻋﻨﺪﻣﺎﺗﺮﻳﺪ ذﻟﻚ‪.‬‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻨﻔﻴﺬ اﻟ‬
‫ﺑ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ ‪ ،‬ﻟﺬﻟﻚﻳﻘﻮم اﻟ‬
‫ﺘ ﻲ ﻻﻳ‬
‫واﻟ‬

‫ﺘﺨﺪم ﻋﻦ اﻷﻣﺎﻛﻦ اﻟﻤﻮﺟﻮدة ﻟﺪﻳﻪ‬


‫ﺑﺮﻧﺎﻣﺠًﺎﻳ ﺴﺄل اﻟﻤ ﺴ‬‫ﺒﺎرك‬
‫ﺘ‬‫ﺜﺎل ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺨﺪم ﻗﻴﻤ ﺔ ‪"quit" :‬‬
‫ﺑﻤﺠﺮد أنﻳﺪﺧﻞ اﻟﻤ ﺴ‬
‫ﺘﺪﻋﺎء ‪break‬‬
‫ﺒﺮﻧﺎﻣﺞ ﻋﻦ ﻃﺮﻳﻖ اﺳ‬
‫زار‪.‬ﻳﻤﻜﻨﻨﺎ إﻳﻘﺎف ﺣﻠﻘ ﺔ ‪while‬ﻓ ﻲ ﻫﺬا اﻟ‬

‫‪city.py‬‬ ‫ﺗﻬﺎ‪":‬‬
‫ﺑﺰﻳﺎر‬‫ﺘ ﻲ ﻗﻤ ﺖ‬
‫ﻣﻮﺟﻪ ‪= "\ n‬اﻟﺮﺟﺎء إدﺧﺎل اﺳﻢ اﻟﻤﺪﻳﻨ ﺔ اﻟ‬
‫ﺘﻬﺎء‪"(.‬‬
‫ﻣﻮﺟﻪ ‪)+ = "\ n‬أدﺧﻞ" إﻧﻬﺎء "ﻋﻨﺪ اﻻﻧ‬

‫ﺑﻴﻨﻤﺎ ﺻﺤﻴﺢ‪:‬‬
‫‪u‬‬

‫اﻟﻤﺪﻳﻨ ﺔ =اﻟﻤﺪﺧﻼ ت )ﻣﻮﺟﻪ(‬

‫إذا ﻛﺎﻧ ﺖ اﻟﻤﺪﻳﻨ ﺔ ‪== 'quit':‬‬


‫ﺘﺮاﺣ ﺔ‬
‫اﺳ‬

‫آﺧﺮ‪:‬‬
‫"‬
‫‪")print‬أﺣ ﺐ أن أذ ﻫ ﺐ إﱃ‬ ‫)"!" ‪+ city.title () +‬‬

‫ﺒﺮﻧﺎﻣﺞ ﻓ ﻲ‬
‫ﺘﻤﺮ اﻟﺤﻠﻘ ﺔ ﻓ ﻲ ﻫﺬا اﻟ‬
‫ﺗﺴ‬‫ﺑﺪ ﻣﺎ ﻟﻢﺗﺼﻞ إﱃﺗﻌﻠﻴﻤ ﺔ ‪break .‬‬
‫ﺛﻨﺎءﺗﺸﻐﻴﻞ ‪True u‬إﱃ اﻷ‬
‫ﺒﺪأ أ‬
‫ﺘ ﻲﺗ‬
‫اﻟﺤﻠﻘ ﺔ اﻟ‬
‫ﺘﻢﺗﺸﻐﻴﻞﺗﻌﻠﻴﻤ ﺔ‬
‫ﺘﻰﻳﺪﺧﻠﻮا "إﻧﻬﺎء"‪ .‬ﻋﻨﺪﻣﺎﻳﺪﺧﻠﻮن ‪'quit' ،‬ﻳ‬
‫ﺘ ﻲ زارو ﻫﺎ ﺣ‬
‫ﺑﺈدﺧﺎل أﺳﻤﺎء اﻟﻤﺪن اﻟ‬‫ﺘﺨﺪم‬
‫ﺒ ﺔ اﻟﻤ ﺴ‬
‫ﻣﻄﺎﻟ‬
‫ﺒ ﺐ ﻓ ﻲ ﺧﺮوج ‪Python‬ﻣﻦ اﻟﺤﻠﻘ ﺔ‪:‬‬
‫ﺘﺴ‬‫‪break ،‬ﻣﻤﺎﻳ‬

‫ﺘﻬﺎء‪ (.‬ﻧﻴﻮﻳﻮرك‬
‫ﺗﻬﺎ‪) :‬أدﺧﻞ "إﻧﻬﺎء" ﻋﻨﺪ اﻻﻧ‬
‫ﺑﺰﻳﺎر‬‫ﺘ ﻲ ﻗﻤ ﺖ‬
‫اﻟﺮﺟﺎء إدﺧﺎل اﺳﻢ اﻟﻤﺪﻳﻨ ﺔ اﻟ‬

‫أﺣ ﺐ أن أذ ﻫ ﺐ إﱃ ﻧﻴﻮﻳﻮرك!‬

‫ﺛﻨﺎء اﻟﺤﻠﻘﺎ ت ‪125‬‬


‫ﺘﺨﺪم وأ‬
‫إدﺧﺎل اﻟﻤ ﺴ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻬﺎء‪(.‬ﺳﺎن‬
‫ﺗﻬﺎ‪) :‬أدﺧﻞ "إﻧﻬﺎء" ﻋﻨﺪ اﻻﻧ‬
‫ﺑﺰﻳﺎر‬‫ﺘ ﻲ ﻗﻤ ﺖ‬
‫اﻟﺮﺟﺎء إدﺧﺎل اﺳﻢ اﻟﻤﺪﻳﻨ ﺔ اﻟ‬
‫ﻓﺮاﻧ ﺴﻴ ﺴﻜﻮ ‪ ،‬أرﻏ ﺐ ﻓ ﻲ اﻟﺬ ﻫﺎ ب إﱃﺳﺎن ﻓﺮاﻧ ﺴﻴ ﺴﻜﻮ!‬

‫ﺘﻬﺎء‪ (.‬إﻧﻬﺎء‬
‫ﺗﻬﺎ‪) :‬أدﺧﻞ "إﻧﻬﺎء" ﻋﻨﺪ اﻻﻧ‬
‫ﺑﺰﻳﺎر‬‫ﺘ ﻲ ﻗﻤ ﺖ‬
‫اﻟﺮﺟﺎء إدﺧﺎل اﺳﻢ اﻟﻤﺪﻳﻨ ﺔ اﻟ‬

‫ﺘﺨﺪام‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺨﺪامﺗﻌﻠﻴﻤ ﺔ ‪break‬ﻓ ﻲ أي ﺣﻠﻘ ﺔ ﻣﻦ ﺣﻠﻘﺎ ت ‪Python.‬ﻋﲆﺳ‬
‫‪N ote‬ﻳﻤﻜﻨﻚ اﺳ‬

‫ﺘ ﻲﺗﻌﻤﻞ ﻣﻦ ﺧﻼل ﻗﺎﺋﻤ ﺔ أو ﻗﺎﻣﻮس‪.‬‬


‫ﻛ ﺴﺮ ﻟﻠﺨﺮوج ﻣﻦ ﺣﻠﻘ ﺔ ‪for‬اﻟ‬

‫ﺘﻤﺮار ﻓ ﻲ ﺣﻠﻘ ﺔ‬
‫ﺘﺨﺪام اﻻﺳ‬
‫ﺑﺎﺳ‬

‫ﺑﻌ ﺔ ﻟﻠﻌﻮدة إﱃ‬


‫ﺘﺎ‬
‫ﺒﺎرة اﻟﻤ‬
‫ﺘﺨﺪام ﻋ‬
‫ﺑﻬﺎ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻘﻴ ﺔ اﻟ‬‫ﺑﺎﻟﻜﺎﻣﻞ دونﺗﻨﻔﻴﺬ‬‫ﺑﺪﻻ ً ﻣﻦ ﻛ ﺴﺮ اﻟﺤﻠﻘ ﺔ‬
‫ﺒﻊ ﻓﻘﻂ‬
‫ﺒﺎرك ﺣﻠﻘ ﺔ ﻣﻦ ‪1‬إﱃ ‪10‬وﻟﻜﻨﻬﺎﺗﻄ‬
‫ﺘ‬‫ﺜﺎل ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺒﺎر اﻟﺸﺮﻃ ﻲ‪ .‬ﻋﲆﺳ‬
‫ﺘ‬‫ﺘﻴﺠ ﺔ اﻻﺧ‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻧ‬‫ﺑﺪاﻳ ﺔ اﻟﺤﻠﻘ ﺔ‬
‫اﻷرﻗﺎم اﻟﻔﺮدﻳ ﺔ ﻓ ﻲ ﻫﺬا اﻟﻨﻄﺎق‪:‬‬

‫‪counting.py‬‬ ‫‪Current_number = 0‬‬


‫ﺑﻴﻨﻤﺎ ‪current_number <10:‬‬
‫‪u current_number + = 1‬‬
‫إذا ﻛﺎن ‪Current_number٪ 2 == 0:‬‬
‫ﻳﻜﻤﻞ‬

‫ﺒﺎﻋ ﺔ )‪(current_number‬‬
‫ﻃ‬

‫ﺑﻤﺠﺮد دﺧﻮﻟﻨﺎ‬
‫ﺗﺪﺧﻞ ‪Python‬ﻓ ﻲ ﺣﻠﻘ ﺔ ‪while .‬‬
‫ﺘﻌﻴﻴﻦ ‪current_number‬إﱃ ‪0.‬وﻷﻧﻪ أﻗﻞ ﻣﻦ ‪10 ،‬‬
‫ﺑ‬‫أوﻻ ً ﻗﻤﻨﺎ‬
‫ﺒﺎرة ‪if‬ﻣﻦ ﻧﻤﻮذج ‪current_number‬‬
‫ﺘﺤﻘﻖ ﻋ‬
‫ﺗ‬‫ﺑﻤﻘﺪار ‪1‬ﻋﻨﺪ ‪u ،‬ﻟﺬا ﻓﺈن ‪ current_number‬ﻫ ﻲ ‪1.‬‬‫اﻟﺤﻠﻘ ﺔ ‪ ،‬ﻧﺰﻳﺪ اﻟﻌﺪد‬
‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﺒﺮ‬
‫ﺑﻌ ﺔﺗﺨ‬
‫ﺘﺎ‬
‫ﺒﺎرة اﻟﻤ‬
‫ﺑﻞ ﻟﻠﻘ ﺴﻤ ﺔ ﻋﲆ ‪2) ،‬ﻓﺈن ﻋ‬
‫و ‪2.‬إذا ﻛﺎن ‪ modulo‬ﻫﻮ ‪)0‬ﻣﻤﺎﻳﻌﻨ ﻲ أن ‪current_number‬ﻗﺎ‬
‫ﺑﺎﻗ ﻲ اﻟﺤﻠﻘ ﺔ‬ ‫ﺑ ﻼ ً ﻟﻠﻘ ﺴﻤ ﺔ ﻋﲆ ‪2 ،‬ﻓ ﺴﻴ‬
‫ﺘﻢﺗﻨﻔﻴﺬ‬ ‫ﺒﺪاﻳ ﺔ‪ .‬إذا ﻟﻢﻳﻜﻦ اﻟﺮﻗﻢ اﻟﺤﺎﻟ ﻲ ﻗﺎ‬
‫ﺑﻘﻴ ﺔ اﻟﺤﻠﻘ ﺔ واﻟﻌﻮدة إﱃ اﻟ‬‫ﺘﺠﺎ ﻫﻞ‬
‫ﻟ‬
‫ﺒﺎﻋ ﺔ اﻟﺮﻗﻢ اﻟﺤﺎﻟ ﻲ‪:‬‬
‫ﺑﻄ‬‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﺘﻘﻮم‬
‫وﺳ‬

‫‪1‬‬
‫‪5‬‬
‫‪3‬‬
‫‪9‬‬
‫‪7‬‬

‫ﺗﺠﻨ ﺐ اﻟﺤﻠﻘﺎ ت اﻟﻼﻧﻬﺎﺋﻴ ﺔ‬

‫ﺘﻢ ﺣ ﺴﺎ ب‬
‫ﺜﺎل ‪،‬ﻳﺠ ﺐ أنﻳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﺪ‪ .‬ﻋﲆﺳ‬
‫ﺘﻤﺮ ﻓ ﻲ اﻟﻌﻤﻞ إﱃ اﻷ‬
‫ﺘﻰ ﻻﺗ ﺴ‬
‫ﺘﻮﻗﻒ ﻋﻦ اﻟﺠﺮي ﺣ‬
‫ﺘﺎج ﻛﻞ ﺣﻠﻘ ﺔ إﱃ ﻃﺮﻳﻘ ﺔ ﻟﻠ‬
‫ﺗﺤ‬
‫ﺣﻠﻘ ﺔ اﻟﻌﺪ ﻫﺬه ﻣﻦ ‪1‬إﱃ ‪5:‬‬

‫‪counting.py‬‬ ‫س‪=1‬‬

‫ﺑﻴﻨﻤﺎ س ‪<= 5:‬‬


‫ﺒﺎﻋ ﺔ )‪(x‬‬
‫ﻃ‬
‫س‪+=1‬‬

‫ﺑﻊ‬
‫‪126‬اﻟﻔﺼﻞ اﻟ ﺴﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺑﺪ‪:‬‬
‫ﺘﻤﺮ اﻟﺤﻠﻘ ﺔ إﱃ اﻷ‬
‫ﺘﺴ‬‫ﺑﺎﻟﺨﻄﺄ اﻟ ﺴﻄﺮ ‪)x + = 1‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻻﺣ ًﻘﺎ( ‪،‬ﺳ‬‫ﻟﻜﻦ إذا ﺣﺬﻓ ﺖ‬

‫ﺑﺪ!‬
‫‪ #‬ﻫﺬه اﻟﺤﻠﻘ ﺔﺗﻌﻤﻞ إﱃ اﻷ‬
‫س‪=1‬‬

‫ﺑﻴﻨﻤﺎ س ‪<= 5:‬‬


‫ﺒﺎﻋ ﺔ )‪(x‬‬
‫ﻃ‬

‫ﺋﻤﺎ إﱃ ‪True‬‬
‫ﺒﺎر اﻟﺸﺮﻃ ﻲ ‪x <= 5‬دا ً‬
‫ﺘ‬‫ﺘﻢﺗﻘﻴﻴﻢ اﻻﺧ‬
‫ﺘﻴﺠ ﺔ ﻟﺬﻟﻚ ‪،‬ﺳﻴ‬
‫ﺑﺪًا‪ .‬ﻧ‬
‫ﺘﻐﻴﺮ أ‬
‫ﺒﺪأ ﻗﻴﻤ ﺔ ‪x‬ﻣﻦ ‪1‬ﻟﻜﻨﻬﺎ ﻻﺗ‬
‫ﺘ‬‫اﻵنﺳ‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺒﺎﻋ ﺔﺳﻠ ﺴﻠ ﺔ ﻣﻦ ‪1s ،‬ﻋﲆ اﻟﻨﺤﻮ اﻟ‬
‫ﺑﺪ ‪ ،‬وﻃ‬
‫ﺘﻌﻤﻞ ﺣﻠﻘ ﺔ ‪while‬إﱃ اﻷ‬
‫وﺳ‬

‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪--‬ﻗﺺ‪--‬‬

‫ﺛﻨﺎء ﻻﻧﻬﺎﺋﻴ ﺔ ﻣﻦ وﻗ ﺖ‬ ‫ﺑﻄﺮﻳﻖ اﻟﺨﻄﺄ ﺣﻠﻘ ﺔ أ‬‫ﺒﺮﻣﺞ‬‫ﺘ ﺐ ﻛﻞ ﻣ‬


‫ﻳﻜ‬
‫ﺑﺮﻧﺎﻣﺠﻚ ﻓ ﻲ ﺣﻠﻘ ﺔ ﻻ ﻧﻬﺎﺋﻴ ﺔ ‪ ،‬ﻓﺎﺿﻐﻂ‬‫ﺒﺮﻧﺎﻣﺞ ﻟﻬﺎ ﺷﺮوط ﺧﺮوج دﻗﻴﻘ ﺔ‪ .‬إذاﺗﻮﻗﻒ‬ ‫إﱃ وﻗ ﺖ ‪ ،‬ﺧﺎﺻ ًﺔ ﻋﻨﺪﻣﺎﺗﻜﻮن ﺣﻠﻘﺎ ت اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺘ ﻲﺗﻌﺮض إﺧﺮاج اﻟ‬
‫ﻋﲆ ‪ctrl-C‬أو أﻏﻠﻖ اﻟﻨﺎﻓﺬة اﻟﻄﺮﻓﻴ ﺔ اﻟ‬

‫ﺘﻮﻗﻌﻬﺎ‪ .‬إذا ﻛﻨ ﺖﺗﺮﻳﺪ‬


‫ﺘﻮﻗﻒ ﻋﻨﺪﻣﺎﺗ‬
‫ﺗﺄﻛﺪ ﻣﻦ أن اﻟﺤﻠﻘ ﺔﺗ‬
‫ﺒﺮ ﻛﻞ ﺣﻠﻘ ﺔ ‪while‬و‬
‫ﺘ‬‫ﺑ ﺔ ﺣﻠﻘﺎ ت ﻻ ﻧﻬﺎﺋﻴ ﺔ ‪ ،‬اﺧ‬
‫ﺘﺎ‬
‫ﺘﺠﻨ ﺐ ﻛ‬
‫ﻟ‬
‫ﺘﻬ ﻲ‬
‫ﺒﺮﻧﺎﻣﺞ وأدﺧﻞ ﻫﺬه اﻟﻘﻴﻤ ﺔ‪ .‬إذا ﻟﻢﻳﻨ‬
‫ﺘﺸﻐﻴﻞ اﻟ‬
‫ﺑ‬‫ﺑﺈدﺧﺎل ﻗﻴﻤ ﺔ إدﺧﺎل ﻣﻌﻴﻨ ﺔ ‪ ،‬ﻓﻘﻢ‬‫ﺘﺨﺪم‬
‫ﺒﺮﻧﺎﻣﺞ ﻋﻨﺪ ﻗﻴﺎم اﻟﻤ ﺴ‬
‫إﻧﻬﺎء اﻟ‬
‫ﺒ ﺐ ﻓ ﻲ إﻧﻬﺎء اﻟﺤﻠﻘ ﺔ‪.‬ﺗﺄﻛﺪ ﻣﻦ أن‬
‫ﺘﺴ‬‫ﺘ ﻲﻳﺠ ﺐ أنﺗ‬
‫ﺒﺮﻧﺎﻣﺞ ﻣﻊ اﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﺑﻬﺎ اﻟ‬‫ﺘﻌﺎﻣﻞ‬
‫ﺘ ﻲﻳ‬
‫ﺑﻔﺤﺺ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻓﻘﻢ‬
‫اﻟ‬
‫ﺒ ﺐ ﻓ ﻲ وﺻﻮﻟﻬﺎ إﱃﺗﻌﻠﻴﻤ ﺔ ﻛ ﺴﺮ ‪.‬‬
‫ﺘﺴ‬‫ﺒﺮﻧﺎﻣﺞﻳﻤﻜﻦ أنﻳﺠﻌﻞ ﺣﺎﻟ ﺔ اﻟﺤﻠﻘ ﺔ ﺧﺎﻃﺌ ﺔ أوﻳ‬
‫ﺟﺰءًا واﺣﺪًا ﻋﲆ اﻷﻗﻞ ﻣﻦ اﻟ‬

‫ﺜﻞ ‪Sublime Text ،‬ﻋﲆ ﻧﺎﻓﺬة إﺧﺮاج ﻣﻀﻤﻨ ﺔ‪ .‬ﻫﺬاﻳﻤﻜﻦ أنﻳﺠﻌﻞ ﻣﻦ اﻟﺼﻌ ﺐ إﻳﻘﺎف‬
‫ﺘﺤﺮﻳﺮ ‪ ،‬ﻣ‬
‫ﺑﺮاﻣﺞ اﻟ‬‫ﺑﻌﺾ‬‫ﺘﻮي‬
‫ﻣﻼﺣﻈ ﺔ‪:‬ﺗﺤ‬
‫ﺣﻠﻘ ﺔ ﻻ ﻧﻬﺎﺋﻴ ﺔ ‪ ،‬وﻗﺪﺗﻀﻄﺮ إﱃ إﻏﻼق اﻟﻤﺤﺮر ﻹﻧﻬﺎء اﻟﺤﻠﻘ ﺔ‪.‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻰﻳﺪﺧﻞ ﻗﻴﻤ ﺔ‬
‫ﺘﺰا ﺣ‬
‫ﺒﻴ‬‫ﺒﻘﺎ ت اﻟ‬
‫ﺑﺈدﺧﺎلﺳﻠ ﺴﻠ ﺔ ﻣﻦ ﻃ‬‫ﺘﺨﺪم‬
‫ﺘ ﺐ ﺣﻠﻘ ﺔﺗﻄﺎﻟ ﺐ اﻟﻤ ﺴ‬
‫‪7-4. Pizza Toppings:‬اﻛ‬
‫ﺑﻬﻢ‪.‬‬‫ﺘﺰا اﻟﺨﺎﺻ ﺔ‬
‫ﺒﻴ‬‫ﺒﻘ ﺔ إﱃ اﻟ‬
‫ﺘﻀﻴﻒ ﻫﺬه اﻟﻄ‬
‫ﺑﺄﻧﻚﺳ‬‫ﺒﻊ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬
‫ﺒﻘ ﺔ ‪ ،‬اﻃ‬
‫‪"quit" .‬ﻋﻨﺪﻣﺎﻳﺪﺧﻠﻮن ﻛﻞ ﻃ‬

‫ﺘﻠﻔ ﺔ ﺣ ﺴ ﺐ ﻋﻤﺮ اﻟﺸﺨﺺ‪ .‬إذا ﻛﺎن اﻟﺸﺨﺺ أﻗﻞ‬


‫ﺘﻘﺎﺿﻰ دار اﻟ ﺴﻴﻨﻤﺎ أﺳﻌﺎرﺗﺬاﻛﺮ ﻣﺨ‬
‫ﺗﺬاﻛﺮ اﻟ ﺴﻴﻨﻤﺎ‪:‬ﺗ‬
‫‪7-5.‬‬
‫ﺘﺬﻛﺮة ﻫ ﻲ ‪10‬دوﻻرا ت ؛ وإذا ﻛﺎن ﻋﻤﺮ ﻫﻢ‬
‫ﺑﻴﻦ ‪3‬و ‪12 ،‬ﻓﺈن اﻟ‬‫ﺘﺬﻛﺮة ﻣﺠﺎﻧﻴ ﺔ ؛ إذا ﻛﺎﻧﻮا‬
‫ﻣﻦ ‪3‬ﺳﻨﻮا ت ‪ ،‬ﻓﺈن اﻟ‬
‫ﺒﺮ ﻫﻢ‬
‫ﺛﻢﺗﺨ‬‫ﺘﺨﺪﻣﻴﻦ ﻋﻦ أﻋﻤﺎر ﻫﻢ ‪،‬‬
‫ﺘ ﺐ ﺣﻠﻘ ﺔﺗ ﺴﺄل ﻓﻴﻬﺎ اﻟﻤ ﺴ‬
‫ﺘﺬﻛﺮة ‪15‬دوﻻ ًرا‪ .‬اﻛ‬
‫ﺘﻜﻮن اﻟ‬
‫ﻋﺎﻣﺎ ‪ ،‬ﻓ ﺴ‬
‫ﺒﺮ ﻣﻦ ‪ً 12‬‬
‫أﻛ‬
‫ﺑﻬﻢ‪.‬‬‫ﺘﻜﻠﻔ ﺔﺗﺬﻛﺮة اﻟﻔﻴﻠﻢ اﻟﺨﺎﺻ ﺔ‬
‫ﺑ‬

‫)واﺻﻠ ﺖ(‬

‫ﺛﻨﺎء اﻟﺤﻠﻘﺎ ت ‪127‬‬


‫ﺘﺨﺪم وأ‬
‫إدﺧﺎل اﻟﻤ ﺴ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻜﻞ ﻣﻤﺎﻳﻠ ﻲ ﻣﺮة‬‫ﺑﺤﻴ ﺚﺗﻘﻮم‬


‫ﺘﻤﺮﻳﻦ ‪7-5‬‬
‫ﺘﻤﺮﻳﻦ ‪7-4‬أو اﻟ‬
‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟ‬
‫ﺘ ﺐ إﺻﺪارا ت ﻣﺨ‬
‫ﺛ ﺔ ﻣﺨﺎرج‪ :‬اﻛ‬
‫ﺛﻼ‬‫‪7-6.‬‬

‫واﺣﺪة ﻋﲆ اﻷﻗﻞ‪:‬‬

‫ﺒﺎرة ‪while‬ﻹﻳﻘﺎف اﻟﺤﻠﻘ ﺔ‪.‬‬


‫ﺒﺎ ًرا ﺷﺮﻃ ًﻴﺎ ﻓ ﻲ اﻟﻌ‬
‫ﺘ‬‫ﺘﺨﺪم اﺧ‬
‫•اﺳ‬

‫ﺘﺤﻜﻢ ﻓ ﻲ ﻣﺪةﺗﺸﻐﻴﻞ اﻟﺤﻠﻘ ﺔ‪.‬‬


‫ﻧﺸﻄﺎ ﻟﻠ‬
‫ً‬ ‫ﺘﻐﻴ ﺮًا‬
‫ﺘﺨﺪم ﻣ‬
‫•اﺳ‬

‫ﺑﺈدﺧﺎل ﻗﻴﻤ ﺔ ‪"quit" .‬‬‫ﺘﺨﺪم‬


‫ﺘﺨﺪمﺗﻌﻠﻴﻤ ﺔ ‪break‬ﻟﻠﺨﺮوج ﻣﻦ اﻟﺤﻠﻘ ﺔ ﻋﻨﺪﻣﺎﻳﻘﻮم اﻟﻤ ﺴ‬
‫•اﺳ‬

‫ﺘﻲ‬
‫ﺘﺸﻐﻴﻠﻬﺎ‪) .‬ﻹﻧﻬﺎء اﻟﺤﻠﻘ ﺔ ‪ ،‬اﺿﻐﻂ ﻋﲆ ‪ctrl-C‬أو أﻏﻠﻖ اﻟﻨﺎﻓﺬة اﻟ‬
‫ﺑ‬‫ﺑﺪًا ‪ ،‬وﻗﻢ‬
‫ﺘﻬ ﻲ أ‬
‫ﺘ ﺐ ﺣﻠﻘ ﺔ ﻻﺗﻨ‬
‫ﺘ ﻲ‪ :‬اﻛ‬
‫‪7-7.‬إﻧﻔﻴﻨﻴ‬
‫ﺗﻌﺮض اﻹﺧﺮاج‪(.‬‬

‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪while‬ﻣﻊ اﻟﻘﻮاﺋﻢ واﻟﻘﻮاﻣﻴ ﺲ‬


‫اﺳ‬
‫ﺒﻌﻨﺎ اﻹدﺧﺎل‬
‫ﺛﻢ ﻃ‬‫ﺘﺨﺪم‬
‫ﺘﺨﺪم ﻓ ﻲ ﻛﻞ ﻣﺮة‪.‬ﺗﻠﻘﻴﻨﺎ ﻣﺪﺧﻼ ت اﻟﻤ ﺴ‬
‫ﺘﻰ اﻵن ‪ ،‬ﻋﻤﻠﻨﺎ ﻣﻊ ﺟﺰء واﺣﺪ ﻓﻘﻂ ﻣﻦ ﻣﻌﻠﻮﻣﺎ ت اﻟﻤ ﺴ‬
‫ﺣ‬
‫أو اﻟﺮد ﻋﻠﻴﻪ‪.‬‬
‫ﺒﻊ اﻟﻌﺪﻳﺪ ﻣﻦ‬
‫ﺘ‬‫ﺘ‬‫ﺘﺠﻴ ﺐ ﻟﺬﻟﻚ‪ .‬وﻟﻜﻦ ﻟ‬
‫ﺘﻠﻘﻰ ﻗﻴﻤ ﺔ إدﺧﺎل أﺧﺮى وﻧ ﺴ‬
‫ﺘﺎﻟﻴ ﺔ ﺧﻼل ﺣﻠﻘ ﺔ ‪while loop ،‬ﺳﻨ‬
‫ﻓ ﻲ اﻟﻤﺮة اﻟ‬
‫ﺘﺨﺪام اﻟﻘﻮاﺋﻢ واﻟﻘﻮاﻣﻴ ﺲ ﻣﻊ ﺣﻠﻘﺎ ت ‪while .‬‬
‫ﺘﺎج إﱃ اﺳ‬
‫ﺘﺨﺪﻣﻴﻦ واﻟﻤﻌﻠﻮﻣﺎ ت ‪،‬ﺳﻨﺤ‬
‫اﻟﻤ ﺴ‬

‫ﺘﻜﺮار ﺧﻼل اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬ﻟﻜﻦ ﻻﻳﺠ ﺐﺗﻌﺪﻳﻠﻬﺎ‬


‫ﺣﻠﻘ ﺔ ‪for‬ﻓﻌﺎﻟ ﺔ ﻟﻠ‬
‫ﺛﻨﺎء اﻟﻌﻤﻞ‬
‫ﺘﻌﺪﻳﻞ ﻗﺎﺋﻤ ﺔ أ‬
‫ﺒﻊ اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻟ‬
‫ﺘ‬‫ﺘﻮاﺟﻪ ﻣﺸﻜﻠ ﺔ ﻓ ﻲﺗ‬
‫ﻗﺎﺋﻤ ﺔ داﺧﻞ ﺣﻠﻘ ﺔ ‪for‬ﻷن ‪Python‬ﺳ‬
‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪while .‬‬
‫ﻋﻠﻴﻬﺎ ‪ ،‬اﺳ‬
‫ﺗﻨﻈﻴﻤﻬﺎ ﻟﻔﺤﺼﻬﺎ وإﻋﺪاد‬
‫ﺗﺨﺰﻳﻨﻬﺎ و‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻤﺪﺧﻼ ت و‬
‫ﺘﺨﺪام ﺣﻠﻘﺎ ت ‪while‬ﻣﻊ اﻟﻘﻮاﺋﻢ واﻟﻘﻮاﻣﻴ ﺲ ﺟﻤﻊ اﻟﻜ‬
‫ﺘﻴﺢ ﻟﻚ اﺳ‬
‫ﻳ‬
‫ﺗﻘﺮﻳﺮ ﻋﻨﻬﺎ ﻻﺣ ًﻘﺎ‪.‬‬

‫ﻧﻘﻞ اﻟﻌﻨﺎﺻﺮ ﻣﻦ ﻗﺎﺋﻤ ﺔ إﱃ أﺧﺮى‬


‫ﺘﺤﻘﻖ ﻣﻦ ﻫﺆﻻء‬
‫ﺑﻌﺪ أن ﻧ‬‫ﺘﺤﻘﻖ ﻣﻨﻬﻢ ﻟﻤﻮﻗﻊ اﻟﻮﻳ ﺐ‪.‬‬
‫ﺘﻢ اﻟ‬ ‫ﺘﺨﺪﻣﻴﻦ اﻟﻤ ﺴﺠﻠﻴﻦ ﺣﺪﻳ ً‬
‫ﺜﺎ وﻟﻜﻦ ﻟﻢﻳ‬ ‫ﺑﺎﻟﻤ ﺴ‬‫ﺒﺎرك ﻗﺎﺋﻤ ﺔ‬
‫ﺘ‬‫ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺘﺨﺪام ﺣﻠﻘ ﺔ‬
‫ﺜﻞ إﺣﺪى اﻟﻄﺮق ﻓ ﻲ اﺳ‬
‫ﺘﻤ‬‫ﺘﻤﺪﻳﻦ؟ﺗ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﻌ‬
‫ﺑﺎﻟﻤ ﺴ‬‫ﺘﺨﺪﻣﻴﻦ ‪ ،‬ﻛﻴﻒﻳﻤﻜﻨﻨﺎ ﻧﻘﻠﻬﻢ إﱃ ﻗﺎﺋﻤ ﺔ ﻣﻨﻔﺼﻠ ﺔ‬
‫اﻟﻤ ﺴ‬
‫ﺘﻬﻢ إﱃ ﻗﺎﺋﻤ ﺔ‬
‫ﺛﻢ إﺿﺎﻓ‬‫ﺘﺤﻘﻖ ﻣﻨﻬﻢ‬
‫ﺑﺎﻟ‬‫ﺛﻨﺎء ﻗﻴﺎﻣﻨﺎ‬
‫ﺘﺨﺪﻣﻴﻦ ﻏﻴﺮ اﻟﻤﺆﻛﺪﻳﻦ أ‬
‫ﺘﺨﺪﻣﻴﻦ ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬
‫‪while‬ﻟ ﺴﺤ ﺐ اﻟﻤ ﺴ‬
‫ﺒﺪو ﻋﻠﻴﻪ ﻫﺬا اﻟﺮﻣﺰ‪:‬‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﺆﻛﺪﻳﻦ‪ .‬إﻟﻴﻚ ﻣﺎ ﻗﺪﻳ‬
‫ﻣﻨﻔﺼﻠ ﺔ ﻣﻦ اﻟﻤ ﺴ‬

‫ﻣﺆﻛﺪ_‬ ‫ﺘﻮاء‬
‫ﺘﺤﻘﻖ ‪# ،‬وﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ﻻﺣ‬
‫ﺘﺎﺟﻮن إﱃ اﻟ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﺬﻳﻦﻳﺤ‬
‫ﺑﺎﻟﻤ ﺴ‬‫ﺑﺪأ‬
‫‪#‬ا‬
‫‪users.py‬‬ ‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﺆﻛﺪﻳﻦ‪.‬‬
‫اﻟﻤ ﺴ‬
‫]'‪u unconfirmed_users = ['alice'، 'brian'، 'candace‬‬
‫ﺘﺨﺪﻣﻮن اﻟﻤﺆﻛﺪون ][ =‬
‫اﻟﻤ ﺴ‬

‫ﺘﺨﺪﻣﻴﻦ ﻏﻴﺮ اﻟﻤﺆﻛﺪﻳﻦ‪.‬‬


‫ﺘﻰ ﻻﻳﻜﻮن ﻫﻨﺎك اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم ﺣ‬
‫ﺗﺤﻘﻖ ﻣﻦ ﻛﻞ ﻣ ﺴ‬
‫‪#‬‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﺆﻛﺪﻳﻦ‪.‬‬
‫ﺘﺤﻘﻖ ﻣﻨﻪ إﱃ ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬
‫ﺘﺨﺪمﺗﻢ اﻟ‬
‫‪#‬اﻧﻘﻞ ﻛﻞ ﻣ ﺴ‬

‫ﺑﻴﻨﻤﺎ ‪unconfirmed_users:‬‬
‫‪v‬‬
‫)( ‪w current_user = unconfirmed_users.pop‬‬

‫"‬
‫ﺘﺨﺪم‪:‬‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟﻤ ﺴ‬
‫ﺒﺎﻋ ﺔ )"اﻟ‬
‫ﻃ‬ ‫))( ‪+ current_user.title‬‬
‫)‪x Confirm_users.append (current_user‬‬

‫‪128‬اﻟﻔﺼﻞ ‪7‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﺆﻛﺪﻳﻦ‪.‬‬
‫‪#‬ﻋﺮض ﺟﻤﻴﻊ اﻟﻤ ﺴ‬
‫ﺘﺎﻟﻴﻦ‪(":‬‬
‫ﺘﺨﺪﻣﻴﻦ اﻟ‬
‫ﺗﻢﺗﺄﻛﻴﺪ اﻟﻤ ﺴ‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬‬
‫ﻃ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﺆﻛﺪﻳﻦ‪:‬‬
‫ﺘﺨﺪم اﻟﻤﺆﻛﺪ ﻓ ﻲ اﻟﻤ ﺴ‬
‫ﻟﻠﻤ ﺴ‬
‫ﺘﺨﺪم ))(‬
‫ﺒﺎﻋ ﺔ )ﻣﺆﻛﺪ_اﻟﻤ ﺴ‬
‫ﻃ‬

‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺘﻮاء اﻟﻤ ﺴ‬
‫ﺘﺨﺪﻣﻴﻦ ﻏﻴﺮ اﻟﻤﺆﻛﺪﻳﻦ ﻓ ﻲ ‪u (Alice‬و ‪Brian‬و )‪Candace‬وﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ﻻﺣ‬
‫ﺑﻘﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬‫ﺒﺪأ‬
‫ﻧ‬
‫اﻟﻤﺆﻛﺪﻳﻦ‪ .‬ﺣﻠﻘ ﺔ ‪while‬ﻓ ﻲ ‪v‬‬
‫ﻳﻌﻤﻞ ﻃﺎﻟﻤﺎ أن اﻟﻘﺎﺋﻤ ﺔ ‪unconfirmed_users‬ﻟﻴ ﺴ ﺖ ﻓﺎرﻏ ﺔ‪ .‬ﺿﻤﻦ ﻫﺬه اﻟﺤﻠﻘ ﺔ ‪،‬ﺗﺰﻳﻞ وﻇﻴﻔ ﺔ )( ‪pop‬ﻓ ﻲ ‪w‬‬
‫ﺘﺤﻘﻖ ﻣﻨﻬﻢ واﺣﺪًاﺗﻠﻮ اﻵﺧﺮ ﻣﻦ ﻧﻬﺎﻳ ﺔ ‪ unconfirmed_users.‬ﻫﻨﺎ ‪ ،‬ﻧﻈ ﺮًاﻷن ‪Candace‬‬
‫ﺘﻢ اﻟ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﺬﻳﻦ ﻟﻢﻳ‬
‫اﻟﻤ ﺴ‬
‫ﺘﻪ‬
‫ﺗﺨﺰﻳﻨﻪ ﻓ ﻲ ‪current_user‬وإﺿﺎﻓ‬
‫ﺘﻪ و‬
‫ﺘﻢ إزاﻟ‬
‫ﻫ ﻲ اﻷﺧﻴﺮة ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪unconfirmed_users ،‬ﺳﻴﻜﻮن اﺳﻤﻬﺎ أول اﺳﻢﺗ‬
‫ﺛﻢ أﻟﻴ ﺲ‪.‬‬‫ﺑﺮاﻳﺎن ‪،‬‬‫ﺘﺎﻟ ﻲ ﻫﻮ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﺆﻛﺪﻳﻦ ﻓ ﻲ ‪x.‬اﻟ‬
‫إﱃ ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬

‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﺆﻛﺪﻳﻦ‪ .‬ﻣﻊ‬


‫ﺘﻬﺎ إﱃ ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬
‫ﺛﻢ إﺿﺎﻓ‬‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔﺗﺤﻘﻖ‬
‫ﺘﺨﺪم ﻋﻦ ﻃﺮﻳﻖ ﻃ‬
‫ﻧﺤﻦ ﻧﺤﺎﻛ ﻲﺗﺄﻛﻴﺪ ﻛﻞ ﻣ ﺴ‬
‫ﺘﺨﺪﻣﻴﻦ ﻏﻴﺮ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﺆﻛﺪﻳﻦ‪ .‬ﻋﻨﺪﻣﺎﺗﻜﻮن ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬
‫ﺘﺨﺪﻣﻴﻦ ﻏﻴﺮ اﻟﻤﺆﻛﺪﻳﻦ ‪،‬ﺗﺰداد ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬
‫ﺗﻘﻠﺺ ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬
‫ﺘﺨﺪﻣﻴﻦ اﻟﻤﺆﻛﺪﻳﻦ‪:‬‬
‫ﺒﺎﻋ ﺔ ﻗﺎﺋﻤ ﺔ اﻟﻤ ﺴ‬
‫ﺘﻢ ﻃ‬
‫ﺘﻮﻗﻒ اﻟﺤﻠﻘ ﺔ وﻳ‬
‫اﻟﻤﺆﻛﺪﻳﻦ ﻓﺎرﻏ ﺔ ‪،‬ﺗ‬

‫ﺘﺨﺪم‪ :‬ﻛﺎﻧﺪﻳ ﺲ‬
‫ﺘﺤﻘﻖ ﻣﻦ اﻟﻤ ﺴ‬
‫اﻟ‬
‫ﺑﺮاﻳﻦ‬‫ﺘﺤﻘﻖ ﻣﻨﻪ‪:‬‬
‫اﻟﻤ‬
‫ﺘﺨﺪم ُ‬
‫اﻟﻤ ﺴ‬
‫ﺘﺤﻘﻖ ﻣﻨﻪ‪ :‬أﻟﻴ ﺲ‬
‫اﻟﻤ‬
‫ﺘﺨﺪم ُ‬
‫اﻟﻤ ﺴ‬

‫ﺘﺎﻟﻴﻦ‪:‬‬
‫ﺘﺨﺪﻣﻴﻦ اﻟ‬
‫ﺗﻢﺗﺄﻛﻴﺪ اﻟﻤ ﺴ‬
‫ﻛﺎﻧﺪﻳ ﺲ‬
‫ﺑﺮﻳﺎن‬
‫أﻟﻴ ﺲ‬

‫ﺜﻴﻼ ت ﻗﻴﻢ ﻣﺤﺪدة ﻣﻦ ﻗﺎﺋﻤ ﺔ‬


‫إزاﻟ ﺔ ﻛﺎﻓ ﺔ ﻣ‬
‫ﺘﻤﻴﻦ‬
‫ﺘ ﻲ ﻛﻨﺎ ﻣﻬ‬
‫ﺘﺨﺪﻣﻨﺎ اﻹزاﻟ ﺔ )(ﻹزاﻟ ﺔ ﻗﻴﻤ ﺔ ﻣﻌﻴﻨ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻧﺠﺤ ﺖ وﻇﻴﻔ ﺔ )( ‪remove‬ﻷن اﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﻓ ﻲ اﻟﻔﺼﻞ ‪3 ،‬اﺳ‬
‫ﺜﻴﻼ ت اﻟﻘﻴﻤ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ؟‬
‫ﺑﻬﺎ ﻇﻬﺮ ت ﻣﺮة واﺣﺪة ﻓﻘﻂ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪ .‬وﻟﻜﻦ ﻣﺎذا ﻟﻮ ﻛﻨ ﺖﺗﺮﻳﺪ إزاﻟ ﺔ ﺟﻤﻴﻊ ﻣ‬

‫ﺜﻴﻼ ت ﻫﺬه اﻟﻘﻴﻤ ﺔ ‪،‬‬


‫ﺑﺎﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ ﻣﻊﺗﻜﺮار ﻛﻠﻤ ﺔ "ﻗﻄ ﺔ" ﻋﺪة ﻣﺮا ت‪ .‬ﻹزاﻟ ﺔ ﺟﻤﻴﻊ ﻣ‬‫ﺘﺮض أن ﻟﺪﻳﻚ ﻗﺎﺋﻤ ﺔ‬
‫ﻟﻨﻔ‬
‫ﺘﻔ ﻲ ﻛﻠﻤ ﺔ "‪"cat‬ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻫﻨﺎ‪:‬‬
‫ﺘﻰﺗﺨ‬
‫ﻳﻤﻜﻨﻚﺗﺸﻐﻴﻞ ﺣﻠﻘ ﺔ ‪while loop‬ﺣ‬

‫اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ‬ ‫ﺒﻴ ﺔ' ‪' ،‬ﻗﻄ ﺔ' ‪' ،‬أرﻧ ﺐ' ‪' ،‬ﻗﻄ ﺔ'[‬
‫ﺣﻴﻮاﻧﺎ ت أﻟﻴﻔ ﺔ =]'ﻛﻠ ﺐ' ‪' ،‬ﻗﻄ ﺔ' ‪' ،‬ﻛﻠ ﺐ' ‪' ،‬ﺳﻤﻜ ﺔ ذ ﻫ‬
‫ﺒﺎﻋ ﺔ )ﺣﻴﻮاﻧﺎ ت أﻟﻴﻔ ﺔ(‬
‫ﻃ‬

‫ﺑﻴﻨﻤﺎ "اﻟﻘﻂ" ﻓ ﻲ اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ‪:‬‬


‫اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ‪ .‬إزاﻟ ﺔ )"اﻟﻘﻂ"(‬

‫ﺒﺎﻋ ﺔ )ﺣﻴﻮاﻧﺎ ت أﻟﻴﻔ ﺔ(‬


‫ﻃ‬

‫ﺜﺮ‬
‫ﺒﺎﻋ ﺔ اﻟﻘﺎﺋﻤ ﺔ ‪،‬ﺗﺪﺧﻞ ‪Python‬اﻟﺤﻠﻘ ﺔ ‪while‬ﻷﻧﻬﺎﺗﻌ‬
‫ﺑﻌﺪ ﻃ‬‫ﺘﻌﺪدة ﻣﻦ "اﻟﻘﻂ"‪.‬‬
‫ﺘﻮي ﻋﲆ ﺣﺎﻻ ت ﻣ‬
‫ﺑﻘﺎﺋﻤ ﺔﺗﺤ‬‫ﺒﺪأ‬
‫ﻧ‬
‫ﻋﲆ اﻟﻘﻴﻤ ﺔ "‪"cat‬ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‬

‫ﺛﻨﺎء اﻟﺤﻠﻘﺎ ت ‪129‬‬


‫ﺘﺨﺪم وأ‬
‫إدﺧﺎل اﻟﻤ ﺴ‬
‫‪Machine Translated by Google‬‬

‫ﺛﻢﺗﻌﻴﺪ إدﺧﺎل‬
‫ﺗﻌﻮد إﱃ اﻟ ﺴﻄﺮ ‪while ،‬‬
‫ﺜﻴﻞ اﻷول ﻣﻦ ‪'cat' ،‬و‬
‫ﺑﻤﺠﺮد دﺧﻮل اﻟﺤﻠﻘ ﺔ ‪،‬ﺗﺰﻳﻞ ‪Python‬اﻟﻤ‬‫ﻣﺮة ﻋﲆ اﻻﻗﻞ‪.‬‬
‫ﺒﺢ اﻟﻘﻴﻤ ﺔ ﻏﻴﺮ ﻣﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬وﻋﻨﺪ‬
‫ﺘﻰﺗﺼ‬
‫ﺜﻴﻞ ﻟـ '‪'cat‬ﺣ‬
‫اﻟﺤﻠﻘ ﺔ ﻋﻨﺪﻣﺎﺗﺠﺪ أن '‪'cat‬ﻻﺗﺰال ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬ﻳﺰﻳﻞ ﻛﻞ ﻣ‬
‫ﺒﻊ اﻟﻘﺎﺋﻤ ﺔ ﻣﺮة أﺧﺮى‪:‬‬
‫ﺗﻄ‬‫ﻫﺬه اﻟﻨﻘﻄ ﺔﺗﺨﺮج ‪Python‬ﻣﻦ اﻟﺤﻠﻘ ﺔ و‬

‫ﺒﻴ ﺔ" ‪" ،‬ﻗﻄ ﺔ" ‪" ،‬أرﻧ ﺐ" ‪" ،‬ﻗﻄ ﺔ"[ ]"ﻛﻠ ﺐ" ‪" ،‬ﻛﻠ ﺐ" ‪" ،‬ﺳﻤﻜ ﺔ‬
‫]"ﻛﻠ ﺐ" ‪" ،‬ﻗﻄ ﺔ" ‪" ،‬ﻛﻠ ﺐ" ‪" ،‬ﺳﻤﻜ ﺔ ذ ﻫ‬
‫ﺒﻴ ﺔ" ‪" ،‬أرﻧ ﺐ"[‬
‫ذﻫ‬

‫ﺘﺨﺪم‬
‫ﺑﺈدﺧﺎل اﻟﻤ ﺴ‬‫ﻣﻞء ﻗﺎﻣﻮس‬
‫ﺘﺎﺟﻪ ﻣﻦ اﻟﻤﺪﺧﻼ ت ﻓ ﻲ ﻛﻞ ﻣﺮة‬
‫ﺑﺎﻟﻘﺪر اﻟﺬيﺗﺤ‬‫ﺒﺔ‬
‫ﻳﻤﻜﻨﻚ اﻟﻤﻄﺎﻟ‬
‫ﺘﻪ‪.‬ﺳﻨﺨﺰن‬
‫ﺑ‬‫ﺘﺠﺎ‬
‫ﺑﺎﺳﻢ اﻟﻤﺸﺎرك واﺳ‬‫ﺒﺔ‬
‫ﺑﺎﻟﻤﻄﺎﻟ‬‫ﺒﺮ اﻟﺤﻠﻘ ﺔ‬
‫ﺑﺎﻟﻤﺮور ﻋ‬‫ﺘﺮاعﻳﻘﻮم ﻓﻴﻪ ﻛﻞ واﺣﺪ‬
‫ﺑﺮﻧﺎﻣﺞ اﻗ‬‫ﺑﻌﻤﻞ‬‫ﺣﻠﻘ ﺔ‪ .‬ﻟﻨﻘﻢ‬
‫ﺘﺨﺪم ﻣﻌﻴﻦ‪:‬‬
‫ﺑﻤ ﺴ‬‫ﺑﺔ‬
‫ﺘﺠﺎ‬
‫ﺑﻂ ﻛﻞ اﺳ‬
‫ﺘ ﻲ ﻧﺠﻤﻌﻬﺎ ﻓ ﻲ ﻗﺎﻣﻮس ‪،‬ﻷﻧﻨﺎ ﻧﺮﻳﺪ ر‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫اﻟ‬

‫اﻟﺮدود }{ =‬
‫ﺘﻄﻼع‬
‫ﺒﻞ_اﻻﺳ‬
‫ﺟ‬
‫ﺘﺮاع ﻧﺸﻂ‪.‬‬
‫ﺘﻌﻴﻴﻦ ﻋﻼﻣ ﺔ ﻟﻺﺷﺎرة إﱃ أن اﻻﻗ‬
‫ﺑ‬‫‪#‬ﻗﻢ‬
‫= ‪ polling_active‬ﺻﺤﻴﺢ‬

‫ﺘﻘﺼﺎء_ﻧﺸﻂ‪:‬‬
‫ﺛﻨﺎء اﻻﺳ‬
‫أ‬
‫‪#‬ﻣﻮﺟﻪ ﻻﺳﻢ اﻟﺸﺨﺺ واﻟﺮد‪.‬‬
‫‪u name = input ("\ n‬ﻣﺎ اﺳﻤﻚ؟"(‬
‫ﻳﻮﻣﺎ ﻣﺎ؟"(‬
‫ﺘ ﺴﻠﻘﻪ ً‬
‫ﺒﻞﺗﺮﻳﺪ أنﺗ‬
‫‪")response = input‬أي ﺟ‬

‫ﺑ ﺔ ﻓ ﻲ اﻟﻘﺎﻣﻮس‪:‬‬
‫ﺘﺠﺎ‬
‫ﺗﺨﺰﻳﻦ اﻻﺳ‬
‫‪#‬‬
‫ردود ‪]v‬اﻻﺳﻢ[ =رد‬

‫ﺘﻄﻼع‪.‬‬
‫ﺘﺸﻒ ﻣﺎ إذا ﻛﺎن أي ﺷﺨﺺ آﺧﺮﺳﻴﺸﺎرك ﻓ ﻲ اﻻﺳ‬
‫‪#‬اﻛ‬
‫ﺑﺎﻟﺮد؟ )ﻧﻌﻢ ‪ /‬ﻻ("(‬‫ﺘﻜﺮار =اﻹدﺧﺎل )" ﻫﻞﺗﺮﻏ ﺐ ﻓ ﻲ اﻟ ﺴﻤﺎح ﻟﺸﺨﺺ آﺧﺮ‬
‫‪w‬اﻟ‬
‫إذا ﻛﺮر =='ﻻ'‪:‬‬
‫= ‪polling_active‬ﺧﻄﺄ‬

‫ﺘﺎﺋﺞ‪.‬‬
‫ﺘﻤﻞ‪ .‬اﻋﺮض اﻟﻨ‬
‫ﺘﺮاع اﻛ‬
‫‪#‬اﻻﻗ‬
‫ﺘﻄﻼع )"‪---‬‬
‫ﺘﺎﺋﺞ اﻻﺳ‬
‫ﺒﺎﻋ ﺔ ‪("\ n ---‬ﻧ‬
‫ﻃ‬
‫ﺑ ﺔ ﻓ ﻲ اﻟﺮدود‪ .‬اﻟﻌﻨﺎﺻﺮ ‪():‬‬
‫ﺘﺠﺎ‬
‫‪x‬ﻟﻼﺳﻢ واﻻﺳ‬
‫"‬ ‫"‬
‫ﺑ ﺔ )"‪+ ".‬‬
‫ﺘﺠﺎ‬
‫ﺗﺮﻏ ﺐ ﻓ ﻲ اﻟﺼﻌﻮد ‪+‬اﺳ‬
‫ﺒﺎﻋ ﺔ )اﻻﺳﻢ ‪+‬‬
‫ﻃ‬

‫ﺘﺮاع ﻧﺸﻂ‪.‬‬
‫ﺘﻌﺮﻳﻒ ﻗﺎﻣﻮس ﻓﺎرغ )اﻟﺮدود( وﻳﻀﻊ ﻋﻼﻣ ﺔ )‪(Polling_active‬ﻟﻺﺷﺎرة إﱃ أن اﻻﻗ‬
‫ﺑ‬‫ﺒﺮﻧﺎﻣﺞ أوﻻ ً‬
‫ﻳﻘﻮم اﻟ‬
‫ﺘﺸﻐﻴﻞ اﻟﻜﻮد ﻓ ﻲ ﺣﻠﻘ ﺔ ‪while .‬‬
‫ﺑ‬‫ﺘﻘﻮم‬
‫ﻃﺎﻟﻤﺎ أن ‪ polling_active‬ﻫﻮ ‪True ،‬ﻓﺈن ‪Python‬ﺳ‬

‫ﺘﻢﺗﺨﺰﻳﻦ‬
‫ﺒﻞ اﻟﺬيﻳﺮﻏ ﺐ ﻓ ﻲ ﺻﻌﻮده‪.‬ﻳ‬
‫ﺑﻪ واﻟﺠ‬‫ﺘﺨﺪم اﻟﺨﺎص‬
‫ﺘﺨﺪم إدﺧﺎل اﺳﻢ اﻟﻤ ﺴ‬
‫ُﻄﻠ ﺐ ﻣﻦ اﻟﻤ ﺴ‬
‫داﺧﻞ اﻟﺤﻠﻘ ﺔ ‪،‬ﻳ‬
‫ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت ﻓ ﻲ اﻟﺮدود‬
‫ﺑﺈدﺧﺎل "ﻧﻌﻢ" ‪،‬ﻳﺪﺧﻞ‬‫ﺘﻄﻼع أم ﻻ‪ .‬إذا ﻗﺎﻣﻮا‬
‫ﺘﺨﺪم ﻋﻤﺎ إذا ﻛﺎنﺳﻴﺤﺎﻓﻆ ﻋﲆﺗﺸﻐﻴﻞ اﻻﺳ‬
‫ﺳ ﺌﻞ اﻟﻤ ﺴ‬
‫اﻟﻘﺎﻣﻮس اﻟﺨﺎﻣ ﺲ ‪ ،‬وُ‬
‫ﺘﻮﻗﻒ ﺣﻠﻘ ﺔ‬
‫ﺗ‬‫ﺘﻢﺗﻌﻴﻴﻦ ﻋﻼﻣ ﺔ "‪"Polling_active‬ﻋﲆ ‪False ،‬و‬
‫ﺑﺈدﺧﺎل "ﻻ" ‪،‬ﻳ‬‫ﺒﺮﻧﺎﻣﺞ ﺣﻠﻘ ﺔ ‪while‬ﻣﺮة أﺧﺮى‪ .‬إذا ﻗﺎﻣﻮا‬
‫اﻟ‬
‫ﺘﻄﻼع‪.‬‬
‫ﺘﺎﺋﺞ اﻻﺳ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ ﻋﻨﺪ ‪x‬ﻧ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻠ ﺔ اﻟ‬
‫ﺗﻌﺮض ﻛ‬
‫‪while‬ﻋﻦ اﻟﻌﻤﻞ ‪ ،‬و‬

‫ﺑﻊ‬
‫‪130‬اﻟﻔﺼﻞ اﻟ ﺴﺎ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﺘﺮى اﻹﺧﺮاج ﻣ‬
‫ﺑﺎ ت ‪ ،‬ﻓ ﺴ‬
‫ﺘﺠﺎ‬
‫ﺒﺮﻧﺎﻣﺞ وأدﺧﻠ ﺖ ﻧﻤﺎذج اﻻﺳ‬
‫ﺘﺸﻐﻴﻞ ﻫﺬا اﻟ‬
‫ﺑ‬‫إذا ﻗﻤ ﺖ‬

‫ﻣﺎ اﺳﻤﻚ؟ إرﻳﻚ‬


‫ﺘ ﺴﻠﻘﻪﻳﻮﻣﺎ ﻣﺎ؟ دﻳﻨﺎﻟ ﻲ‬
‫ﺒﻞﺗﺮﻳﺪ أنﺗ‬
‫أي ﺟ‬
‫ﺑﺎﻟﺮد؟ )ﻧﻌﻢ ‪ /‬ﻻ( ﻧﻌﻢ‬‫ﻫﻞﺗﺮﻏ ﺐ ﻓ ﻲ اﻟ ﺴﻤﺎح ﻟﺸﺨﺺ آﺧﺮ‬

‫ﻣﺎ اﺳﻤﻚ؟ ﻟﻴﻦ‬


‫ﺑﺎﻟﺮد؟ )ﻧﻌﻢ ‪ /‬ﻻ( ﻻ‬‫ﺑﻬﺎم اﻟﺸﻴﻄﺎن ﻫﻞﺗﻮد اﻟ ﺴﻤﺎح ﻟﺸﺨﺺ آﺧﺮ‬
‫ﺘ ﺴﻠﻘﻪﻳﻮﻣﺎ ﻣﺎ؟ إ‬
‫ﺒﻞﺗﺮﻳﺪ أنﺗ‬
‫أي ﺟ‬

‫ﺑﻬﺎم اﻟﺸﻴﻄﺎن‪.‬‬
‫ﺘﻄﻼع ‪---‬ﻳﺮﻏ ﺐ ﻟﻴﻦ ﻓ ﻲﺗ ﺴﻠﻖ إ‬
‫ﺘﺎﺋﺞ اﻻﺳ‬
‫ﻧ‬

‫ﻳﻮد "إرﻳﻚ"ﺗ ﺴﻠﻖ "دﻳﻨﺎﻟ ﻲ"‪.‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ‬‫ﺛﻢ ﻗﻢ‬‫ﺘﻠﻔ ﺔ‪.‬‬


‫ﺑﺄﺳﻤﺎء اﻟ ﺴﻨﺪوﻳﺸﺎ ت اﻟﻤﺨ‬‫ﺑﻌﻤﻞ ﻗﺎﺋﻤ ﺔﺗ ﺴﻤﻰ ‪sandwich_orders‬واﻣﻸ ﻫﺎ‬‫‪7-8. Deli:‬ﻗﻢ‬

‫ﺜﻞ ﻟﻘﺪ ﺻﻨﻌ ﺖ ﺷﻄﻴﺮة‬


‫ﺒﻊ رﺳﺎﻟ ﺔ ﻟﻜﻞ ﻃﻠ ﺐ ‪ ،‬ﻣ‬
‫ﺘ ﺶ واﻃ‬
‫ﺒﺎ ت اﻟ ﺴﺎﻧﺪوﻳ‬
‫ﺘﻜﺮار ﻗﺎﺋﻤ ﺔ ﻃﻠ‬
‫ﺑ‬‫ﺗ ﺴﻤﻰ ‪finish_sandwiches.‬ﻗﻢ‬
‫ﺗﺸﺎ ت ‪،‬‬
‫ﺘﻬﺎء ﻣﻦ ﺟﻤﻴﻊ اﻟ ﺴﻨﺪو‬
‫ﺑﻌﺪ اﻻﻧ‬‫ﺑﻚ‪ .‬ﻋﻨﺪﺗﺤﻀﻴﺮ ﻛﻞ ﺷﻄﻴﺮة ‪ ،‬اﻧﻘﻠﻬﺎ إﱃ ﻗﺎﺋﻤ ﺔ اﻟ ﺴﻨﺪوﻳﺸﺎ ت اﻟﺠﺎ ﻫﺰة‪.‬‬‫ﺘﻮﻧ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫اﻟ‬
‫ﺒﻊ رﺳﺎﻟ ﺔﺗ ﺴﺮد ﻛﻞ ﺷﻄﻴﺮةﺗﻢﺗﺤﻀﻴﺮ ﻫﺎ‪.‬‬
‫اﻃ‬

‫ﺑ ﺴﻄﺮﻣ ﺔ" ﻓ ﻲ‬
‫ﺗﺄﻛﺪ ﻣﻦ ﻇﻬﻮر ﺷﻄﻴﺮة "‬
‫ﺘﻤﺮﻳﻦ ‪7-8 ،‬‬
‫ﺘﺨﺪام ﻗﺎﺋﻤ ﺔ ‪sandwich_orders‬ﻣﻦ اﻟ‬
‫ﺑﺎﺳ‬
‫‪7-9. No Pastrami:‬‬
‫ﺘﺨﺪم‬
‫ﺛﻢ اﺳ‬‫ﺒ ﺴﻄﺮﻣ ﺔ ﻗﺪ ﻧﻔﺪ ‪،‬‬
‫ﺑﺄن اﻟ‬‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬
‫ﺒﺮﻧﺎﻣﺞ ﻟﻄ‬
‫ﺑﺪاﻳ ﺔ اﻟ‬‫ﺑﺎﻟﻘﺮ ب ﻣﻦ‬‫ﺛﻼ ث ﻣﺮا ت ﻋﲆ اﻷﻗﻞ‪ .‬أﺿﻒ رﻣ ًﺰا‬‫اﻟﻘﺎﺋﻤ ﺔ‬
‫ﺒ ﺴﻄﺮﻣ ﺔ إﱃ‬
‫ﺗﺄﻛﺪ ﻣﻦ ﻋﺪم وﺻﻮل ﺷﻄﺎﺋﺮ اﻟ‬
‫ﺑ ﺴﻄﺮﻣ ﺔ" ﻣﻦ ‪sandwich_orders.‬‬
‫ﺣﻠﻘ ﺔ ‪while‬ﻹزاﻟ ﺔ ﺟﻤﻴﻊﺗﻜﺮارا ت "‬
‫اﻟ ﺴﻨﺪوﻳﺸﺎ ت اﻟﺠﺎ ﻫﺰة‪.‬‬

‫ﺘ ﺐ ﻣﻮﺟﻬً ﺎ‬
‫ﺘﺨﺪﻣﻴﻦ ﺣﻮل إﺟﺎزة أﺣﻼﻣﻬﻢ‪ .‬اﻛ‬
‫ﺘﻄﻼع آراء اﻟﻤ ﺴ‬
‫ﺑﺎﺳ‬‫ﺑﺮﻧﺎﻣﺠًﺎﻳﻘﻮم‬‫ﺘﺐ‬
‫‪7-10. Dream Vacation:‬اﻛ‬
‫ﺘﻌﻠﻴﻤﺎ ت‬
‫ﺘﻠ ﺔ ﻣﻦ اﻟ‬
‫ﺘﻀﻤﻴﻦ ﻛ‬
‫ﺑ‬‫ﺘﺬ ﻫ ﺐ؟ ﻗﻢ‬
‫ﺑﺈﻣﻜﺎﻧﻚ زﻳﺎرة ﻣﻜﺎن واﺣﺪ ﻓ ﻲ اﻟﻌﺎﻟﻢ ‪ ،‬ﻓﺄﻳﻦﺳ‬‫ﺑﻬً ﺎ ﻟﻤﺎ إذا ﻛﺎن‬
‫ﻣﺸﺎ‬
‫ﺘﻄﻼع‪.‬‬
‫ﺘﺎﺋﺞ اﻻﺳ‬
‫ﺒﻊ ﻧ‬
‫ﺘ ﻲﺗﻄ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫اﻟ‬

‫ﻣﻠﺨﺺ‬
‫ﺑﺮاﻣﺠﻚ‪ .‬ﻟﻘﺪ‬‫ﺗﻬﻢ اﻟﺨﺎﺻ ﺔ ﻓ ﻲ‬
‫ﺘﻘﺪﻳﻢ ﻣﻌﻠﻮﻣﺎ‬
‫ﺑ‬‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺘﺨﺪام اﻹدﺧﺎل )(ﻟﻠ ﺴﻤﺎح ﻟﻠﻤ ﺴ‬
‫ﺗﻌﻠﻤ ﺖ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺘﺨﺪﻣﻮن‬
‫ﺑﺮاﻣﺠﻚ ﻃﺎﻟﻤﺎ أراد اﻟﻤ ﺴ‬‫ﺛﻨﺎءﺗﺸﻐﻴﻞ‬
‫ﺘﻜﺮارا ت أ‬
‫ﺘﺨﺪام اﻟ‬
‫ﺗﻌﻠﻤ ﺖ اﻟﻌﻤﻞ ﻣﻊ ﻛﻞ ﻣﻦ اﻹدﺧﺎل اﻟﻨﺼ ﻲ واﻟﺮﻗﻤ ﻲ وﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺘﺨﺪامﺗﻌﻠﻴﻤ ﺔ ‪break ،‬و‬
‫ﺑﺎﺳ‬‫ﺘﺤﻜﻢ ﻓ ﻲﺗﺪﻓﻖ ﺣﻠﻘ ﺔ ‪while‬ﻣﻦ ﺧﻼلﺗﻌﻴﻴﻦ ﻋﻼﻣ ﺔ ﻧﺸﻄ ﺔ ‪،‬‬
‫ذﻟﻚ‪ .‬ﻟﻘﺪ رأﻳ ﺖ ﻋﺪة ﻃﺮق ﻟﻠ‬

‫ﺛﻨﺎء اﻟﺤﻠﻘﺎ ت‬
‫ﺘﺨﺪم وأ‬
‫إدﺧﺎل اﻟﻤ ﺴ‬ ‫‪131‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪while‬ﻟﻨﻘﻞ اﻟﻌﻨﺎﺻﺮ ﻣﻦ ﻗﺎﺋﻤ ﺔ إﱃ أﺧﺮى وﻛﻴﻔﻴ ﺔ إزاﻟ ﺔ ﺟﻤﻴﻊ‬


‫ﺑﻌ ﺔ ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔ اﺳ‬‫ﺘﺎ‬ ‫ﺒﺎرة اﻟﻤ‬
‫ﺘﺨﺪام ﻋ‬‫ﺑﺎﺳ‬
‫ﺘﺨﺪام ﺣﻠﻘﺎ ت ‪while‬ﻣﻊ اﻟﻘﻮاﻣﻴ ﺲ‪.‬‬ ‫ﻳﻀﺎ ﻛﻴﻒﻳﻤﻜﻦ اﺳ‬ ‫ﺜﻴﻼ ت اﻟﻘﻴﻤ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ أ ً‬
‫ﻣ‬

‫ﺑﺎﻟﻜ ﺴﺮ‬‫ﺘﻌﺮف ﻋﲆ اﻟﻮﻇﺎﺋﻒ‪ .‬وﻇﺎﺋﻒﺗ ﺴﻤﺢ ﻟﻚ‬


‫ﺘ‬‫ﻓ ﻲ اﻟﻔﺼﻞ ‪8‬ﺳ‬
‫ﺘﺪﻋﺎء وﻇﻴﻔ ﺔ ﻋﺪة ﻣﺮا ت ﻛﻤﺎﺗﺮﻳﺪ ‪ ،‬وﻳﻤﻜﻨﻚ‬
‫ﺑﻌﻤﻞ واﺣﺪ ﻣﺤﺪد‪.‬ﻳﻤﻜﻨﻚ اﺳ‬‫ﺑﺮاﻣﺠﻚ إﱃ أﺟﺰاء ﺻﻐﻴﺮة ‪ ،‬ﻛﻞ ﻣﻨﻬﺎﻳﻘﻮم‬
‫ﺜﺮ ﻓﺎﻋﻠﻴ ﺔﻳ ﺴﻬﻞ‬
‫ﺑﺮﻣﺠﻴ ﺔ أﻛ‬‫ﺑ ﺔﺗﻌﻠﻴﻤﺎ ت‬
‫ﺘﺎ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﻛ‬
‫ﺘ‬‫ﺘﺨﺪام اﻟﻮﻇﺎﺋﻒ ‪،‬ﺳ‬
‫ﺑﺎﺳ‬‫ﺗﺨﺰﻳﻦ وﻇﺎﺋﻔﻚ ﻓ ﻲ ﻣﻠﻔﺎ ت ﻣﻨﻔﺼﻠ ﺔ‪.‬‬
‫ﺘﻠﻔ ﺔ‪.‬‬
‫ﺒﺮاﻣﺞ اﻟﻤﺨ‬
‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟ‬
‫ﺘﻬﺎ وﻳﻤﻜﻦ إﻋﺎدة اﺳ‬
‫ﺘﻜﺸﺎﻓﻬﺎ وإﺻﻼﺣﻬﺎ وﺻﻴﺎﻧ‬
‫اﺳ‬

‫ﺑﻊ‬
‫‪132‬اﻟﻔﺼﻞ اﻟ ﺴﺎ‬
‫‪Machine Translated by Google‬‬

‫‪8‬‬ ‫اﻟﻤﻬﺎم‬

‫ﺘﻞ ﻣﻦ‬
‫ﺘ ﻲﺗ ﺴﻤﻰ ﻛ‬
‫ﺑ ﺔ اﻟﻮﻇﺎﺋﻒ ‪ ،‬واﻟ‬
‫ﺘﺎ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛ‬
‫ﺘ‬‫ﺳ‬
‫ﺑﻌﻤﻞ واﺣﺪ ﻣﺤﺪد‪.‬‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻤﺼﻤﻤ ﺔ ﻟﻠﻘﻴﺎم‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟ‬

‫ﺘﺪﻋ ﻲ‬
‫ﺘﺤﺪﻳﺪ ﻫﺎ ﻓ ﻲ داﻟ ﺔ ﻣﺎ ‪ ،‬ﻓﺈﻧﻚﺗ ﺴ‬
‫ﺑ‬‫ﻋﻨﺪﻣﺎﺗﺮﻳﺪﺗﻨﻔﻴﺬ ﻣﻬﻤ ﺔ ﻣﻌﻴﻨ ﺔ ﻗﻤ ﺖ‬
‫ﺑﺤﺎﺟ ﺔ إﱃﺗﻨﻔﻴﺬ ﻫﺬه اﻟﻤﻬﻤ ﺔ ﻋﺪة ﻣﺮا ت ﺧﻼل‬‫اﺳﻢ اﻟﻮﻇﻴﻔ ﺔ اﻟﻤ ﺴﺆوﻟ ﺔ ﻋﻨﻬﺎ‪ .‬إذا ﻛﻨ ﺖ‬
‫ﺗﻜﺮا ًرا ؛‬
‫ﺒﺮﻣﺠﻴ ﺔ ﻟﻨﻔ ﺲ اﻟﻤﻬﻤ ﺔ ﻣﺮا ًرا و‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬‫ﺑ ﺔ ﻛﻞ اﻟ‬
‫ﺘﺎ‬‫ﺘﺎج إﱃ ﻛ‬‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻓﻠﻦﺗﺤ‬
‫اﻟ‬
‫ﺗﻄﻠ ﺐ‬ ‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻫﺬه اﻟﻤﻬﻤ ﺔ ‪ ،‬و‬ ‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ اﻟﻤﺨﺼﺼ ﺔ ﻟﻠ‬ ‫ﻣﺎ ﻋﻠﻴﻚﺳﻮى اﺳ‬
‫ﺘﺨﺪام اﻟﻮﻇﺎﺋﻒ‬ ‫ﺘﺠﺪ أن اﺳ‬ ‫ﺗﺸﻐﻴﻞ اﻟﻜﻮد داﺧﻞ اﻟﻮﻇﻴﻔ ﺔ‪.‬ﺳ‬ ‫اﻟﻤﻜﺎﻟﻤ ﺔ ﻣﻦ ‪Python‬‬
‫ﺒﺎر واﻹﺻﻼح‪.‬‬
‫ﺘ‬ ‫ﺑ ﺔ واﻟﻘﺮاءة واﻻﺧ‬
‫ﺘﺎ‬
‫ﺑﺮاﻣﺠﻚ أﺳﻬﻞ ﻓ ﻲ اﻟﻜ‬‫ﻳﺠﻌﻞ‬

‫ﺘﻤﺮﻳﺮ اﻟﻤﻌﻠﻮﻣﺎ ت إﱃ اﻟﻮﻇﺎﺋﻒ‪.‬‬ ‫ً‬


‫ﻃﺮﻗﺎ ﻟ‬ ‫ﺘﻌﻠﻢ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺘ‬‫ﺳ‬
‫ﺘﻬﺎ اﻷﺳﺎﺳﻴ ﺔ ﻓ ﻲ ﻋﺮض اﻟﻤﻌﻠﻮﻣﺎ ت واﻟﻮﻇﺎﺋﻒ اﻷﺧﺮى اﻟﻤﺼﻤﻤ ﺔ ﻟﻤﻌﺎﻟﺠ ﺔ‬
‫ﺜﻞ ﻣﻬﻤ‬
‫ﺘﻤ‬‫ﺑ ﺔ وﻇﺎﺋﻒ ﻣﻌﻴﻨ ﺔﺗ‬
‫ﺘﺎ‬
‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ ﻛ‬
‫ﺘ‬‫ﺳ‬
‫ﺘﻌﻠﻢﺗﺨﺰﻳﻦ اﻟﻮﻇﺎﺋﻒ ﻓ ﻲ ﻣﻠﻔﺎ ت ﻣﻨﻔﺼﻠ ﺔﺗ ﺴﻤﻰ اﻟﻮﺣﺪا ت اﻟﻨﻤﻄﻴ ﺔ‬
‫ﺘ‬‫ﺒﻴﺎﻧﺎ ت وإرﺟﺎع ﻗﻴﻤ ﺔ أو ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻘﻴﻢ‪ .‬أﺧﻴ ﺮًا ‪،‬ﺳ‬
‫اﻟ‬
‫ﺋﻴ ﺴﻴ ﺔ‪.‬‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﺮ‬
‫ﻟﻠﻤ ﺴﺎﻋﺪة ﻓ ﻲﺗﻨﻈﻴﻢ ﻣﻠﻔﺎ ت اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺗﺤﺪﻳﺪ اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘﺤﻴ ﺔ‪:‬‬
‫ﺒﺎﻋ ﺔ اﻟ‬
‫ﺑﻄ‬‫ﺗﻘﻮم‬
‫ﺘﺨﺪم )(‬
‫ﺘﺮﺣﻴ ﺐ اﻟﻤ ﺴ‬
‫ﯩ‬‫ﺑ ﺴﻴﻄ ﺔﺗ ﺴﻤ‬‫ﻓﻴﻤﺎﻳﻠ ﻲ وﻇﻴﻔ ﺔ‬

‫‪reeter.py u defreet_user ():‬‬


‫ﺑ ﺴﻴﻄ ﺔ‪"" ".‬‬‫"" ‪"v‬اﻋﺮضﺗﺤﻴ ﺔ‬
‫ﺒﺎ!"(‬‫‪")w print‬ﻣﺮﺣ ً‬

‫ﺘﺨﺪم )(‬
‫ﺗﺮﺣﻴ ﺐ_اﻟﻤ ﺴ‬
‫‪x‬‬

‫ﺑ ﺴﻂ ﻫﻴﻜﻞ ﻟﻠﺪاﻟ ﺔ‪ .‬اﻟﺨﻂ ﻋﻨﺪ ‪u‬‬


‫ﺜﺎل أ‬
‫ﻳﻮﺿﺢ ﻫﺬا اﻟﻤ‬
‫ﺑﺎﺳﻢ‬
‫ﺒﺮ ‪Python‬‬
‫ﺑﺄﻧﻚﺗﺤﺪد وﻇﻴﻔ ﺔ‪ .‬ﻫﺬا ﻫﻮﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬اﻟﺬيﻳﺨ‬
‫ﺘﺨﺪم اﻟﻜﻠﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ ‪def‬ﻹﻋﻼم ‪Python‬‬
‫ﻳﺴ‬
‫ﺘﻬﺎ‪ .‬اﻷﻗﻮاسﺗﺤﻤﻞﺗﻠﻚ اﻟﻤﻌﻠﻮﻣﺎ ت‪ .‬ﻓ ﻲ ﻫﺬه‬
‫ﺘﺎﺟﻬﺎ اﻟﻮﻇﻴﻔ ﺔﻷداء وﻇﻴﻔ‬
‫ﺘ ﻲﺗﺤ‬
‫اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬وإذا أﻣﻜﻦ ‪ ،‬ﻧﻮع اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺑﻌﻤﻠﻬﺎ ‪ ،‬ﻟﺬا ﻓﺈن أﻗﻮاﺳﻬﺎ ﻓﺎرﻏ ﺔ‪) .‬وﻣﻊ ذﻟﻚ ‪،‬‬‫ﺘﺎج إﱃ ﻣﻌﻠﻮﻣﺎ ت ﻟﻠﻘﻴﺎم‬
‫اﻟﺤﺎﻟ ﺔ ‪ ،‬اﺳﻢ اﻟﻮﻇﻴﻔ ﺔ ﻫﻮ ‪() (reet_user) ،‬وﻻﺗﺤ‬
‫ﺘﻴﻦ‪.‬‬
‫ﺑﻨﻘﻄ‬‫ﺘﻌﺮﻳﻒ‬
‫ﺘﻬ ﻲ اﻟ‬
‫ﺑ ﺔ‪ (.‬وأﺧﻴ ﺮًا ‪،‬ﻳﻨ‬
‫ﻓﺈن اﻷﻗﻮاس ﻣﻄﻠﻮ‬

‫ﺗﺸﻜﻞ ﺟ ﺴﻢ اﻟﻮﻇﻴﻔ ﺔ‪ .‬اﻟﻨﺺ ﻓ ﻲ ‪ v‬ﻫﻮﺗﻌﻠﻴﻖﻳ ﺴﻤﻰ‬


‫ﺒﻊ ‪defreet_user ():‬‬
‫ﺘ‬‫ﺑﺎدﺋ ﺔﺗ‬‫أيﺳﻄﻮر ذا ت ﻣ ﺴﺎﻓ ﺔ‬
‫ﺒﺤ ﺚ ﻋﻨﻬﺎ‬
‫ﺘ ﻲﺗ‬
‫ﺛﻴ ﺔ ‪ ،‬واﻟ‬
‫ﺛﻼ‬‫ﺒﺎس‬
‫ﺘ‬‫ﺘﻢﺗﻀﻤﻴﻦ ‪Docstrings‬ﻓ ﻲ ﻋﻼﻣﺎ ت اﻗ‬
‫‪docstring ،‬واﻟﺬيﻳﺼﻒ وﻇﻴﻔ ﺔ اﻟﻮﻇﻴﻔ ﺔ‪.‬ﻳ‬
‫ﺑﺮاﻣﺠﻚ‪.‬‬‫ﺛﺎﺋﻖ ﻟﻠﻮﻇﺎﺋﻒ ﻓ ﻲ‬
‫ﺑﺈﻧﺸﺎء و‬‫‪Python‬ﻋﻨﺪﻣﺎﺗﻘﻮم‬

‫)"!‪ ("Hello‬ﻫﻮ اﻟ ﺴﻄﺮ اﻟﻮﺣﻴﺪ ﻣﻦ اﻟﻜﻮد اﻟﻔﻌﻠ ﻲ ﻓ ﻲ اﻟﺠ ﺴﻢ‬ ‫ﺒﺎﻋ ﺔ‬


‫ﺳﻄﺮ اﻟﻄ‬
‫ﺒﺎ!"(‪.‬‬
‫ﺒﺎﻋ ﺔ )"ﻣﺮﺣ ً‬
‫ﻣﻦ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬ﻟﺬا ﻓﺈن ﻣﻮﻗﻊ )(أﺣﻴ ﺖ_وﺳﺮ ﻟﺪﻳﻪ وﻇﻴﻔ ﺔ واﺣﺪة ﻓﻘﻂ‪ :‬ﻃ‬
‫ﺘﺪﻋﺎء‬
‫ﺘﻨﻔﻴﺬ اﻟﻜﻮد ﻓ ﻲ اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﻻﺳ‬
‫ﺑ‬‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ‪Python‬‬
‫ﺒﺮ اﺳ‬
‫ﺘﺨﺪام ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ‪،‬ﺗ ﺴﻤﻴﻬﺎ‪.‬ﻳﺨ‬
‫ﻋﻨﺪﻣﺎﺗﺮﻳﺪ اﺳ‬
‫ﺑﺄي ﻣﻌﻠﻮﻣﺎ ت ﺿﺮورﻳ ﺔ ﻓ ﻲ أﻃﺮوﺣﺎ ت اﻟﻘﻮس ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ ‪x .‬ﻧﻈ ﺮًا ﻟﻌﺪم‬‫ﺒﻮﻋً ﺎ‬
‫ﺘ‬‫ﺘ ﺐ اﺳﻢ اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬ﻣ‬
‫وﻇﻴﻔ ﺔ ‪ ،‬اﻛ‬
‫ﺒﻊ‬
‫ﺘﻮﻗﻊ ‪،‬ﻳﻄ‬
‫ﺜﻞ إدﺧﺎل ﻣﻠﻒ ‪() .reet_user.‬ﻛﻤﺎ ﻫﻮ ﻣ‬
‫ﺑ ﺴﻴﻂ ﻣ‬‫ﺘﻨﺎ أﻣﺮ‬
‫ﺘﺪﻋﺎء وﻇﻴﻔ‬
‫اﻟﺤﺎﺟ ﺔ إﱃ ﻣﻌﻠﻮﻣﺎ ت ﻫﻨﺎ ‪ ،‬ﻓﺈن اﺳ‬
‫‪Hello !:‬‬

‫ﺒﺎ!‬
‫ﻣﺮﺣ ً‬

‫ﺗﻤﺮﻳﺮ اﻟﻤﻌﻠﻮﻣﺎ ت إﱃ اﻟﻮﻇﻴﻔ ﺔ‬


‫ﺒﺎ!‬
‫ﺘﺨﺪم ﻣﺮﺣ ً‬
‫ﺒﺮ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم )(ﻓﻘﻂ أنﺗﺨ‬
‫ﺗﺮﺣﻴ ﺐ اﻟﻤ ﺴ‬
‫ﺑﺸﻜﻞ ﻃﻔﻴﻒ ‪ ،‬ﻻﻳﻤﻜﻦ ﻟﻠﻮﻇﻴﻔ ﺔ‬‫ﺑﻌﺪﺗﻌﺪﻳﻠﻬﺎ‬
‫ﺘﺨﺪم‬
‫ﺑﺈدﺧﺎل اﺳﻢ اﻟﻤ ﺴ‬‫ﺑﺬﻟﻚ ‪،‬ﺗﻘﻮم‬‫ﺑﺎﻻﺳﻢ‪ .‬ﻟﻠﻘﻴﺎم‬‫وﻟﻜﻦ أﻳﻀﺎﺳﻠﻢ ﻋﻠﻴﻬﻢ‬
‫ﺒﻮل‬
‫ﺑﻘ‬‫ﺘﺨﺪم ﻫﻨﺎ ‪ ،‬ﻓﺈﻧﻚﺗ ﺴﻤﺢ ﻟﻠﻮﻇﻴﻔ ﺔ‬
‫ﺑﻴﻦ أﻗﻮاسﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ ﻓ ﻲ ‪defreet_user ().‬ﻣﻦ ﺧﻼل إﺿﺎﻓ ﺔ اﺳﻢ اﻟﻤ ﺴ‬
‫ﺗﻚ‬
‫ﺑﻬﺎ‪ .‬ﻋﻨﺪ ﻣﻨﺎدا‬‫ﺘﺼﻞ‬
‫ﺘﺨﺪم ﻓ ﻲ ﻛﻞ ﻣﺮةﺗ‬
‫ﺘﻮﻗﻊ اﻟﻮﻇﻴﻔ ﺔ اﻵنﺗﻮﻓﻴﺮ ﻗﻴﻤ ﺔ ﻻﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺨﺪمﺗﺤﺪد ﻫﺎ‪.‬ﺗ‬
‫أي ﻗﻴﻤ ﺔ ﻻﺳﻢ اﻟﻤ ﺴ‬
‫ﺜﻞ "ﺟﻴ ﺴ ﻲ" ‪ ،‬داﺧﻞ اﻷﻗﻮاس‪:‬‬
‫‪() ،reet_user ،‬ﻳﻤﻜﻨﻚﺗﻤﺮﻳﺮ اﺳﻢ ﻟﻬﺎ ‪ ،‬ﻣ‬

‫ﺘﺨﺪم(‪:‬‬
‫‪)defreet_user‬اﺳﻢ اﻟﻤ ﺴ‬
‫ﺑ ﺴﻴﻄ ﺔ‪"" ".‬‬‫"""ﻋﺮضﺗﺤﻴ ﺔ‬
‫ﺒﺎﻋ ﺔ )"!" ‪("Hello،" + username.title () +‬‬
‫ﻃ‬

‫ﺘﺨﺪم )"ﺟﻴ ﺴ ﻲ"(‬


‫ﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬

‫ﺜﺎﻣﻦ‬
‫‪134‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺪاد‬
‫ﺘﺨﺪم" )( وإﻋﻄﺎء اﻟﻮﻇﻴﻔ ﺔ اﻻﻣ‬
‫ﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬
‫ﺘﺪﻋﺎء "‬
‫ﺘﺨﺪم" )"ﺟﻴ ﺴ ﻲ"( إﱃ اﺳ‬
‫ﺗﺤﻴ ﺔ ﻣ ﺴ‬
‫ﻳﺆدي إدﺧﺎل "‬
‫ﺘﺤﻴ ﺔ ﻟﻬﺬا اﻻﺳﻢ‪:‬‬
‫ﺗﻌﺮض اﻟ‬
‫ﺗﻪ و‬
‫ﺒﻞ اﻟﻮﻇﻴﻔ ﺔ اﻻﺳﻢ اﻟﺬي ﻣﺮر‬
‫ﺒﺎﻋ ﺔ ‪.‬ﺗﻘ‬
‫ﺑﻴﺎن اﻟﻄ‬‫ﺘﻨﻔﻴﺬ‬
‫ﺘﺎﺟﻬﺎ ﻟ‬
‫ﺘ ﻲﻳﺤ‬
‫اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬

‫ﺒﺎ ﺟﻴ ﺴ ﻲ!‬
‫ﻣﺮﺣ‬

‫ﺘﺨﺪم )(وﻳﻤﺮر ﻫﺎﺳﺎره ‪،‬‬


‫ﺘﺨﺪم )ﺳﺎره(ﻳﺪﻋﻮﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬
‫ﺜﻞ ‪ ،‬ﻓﺈن إدﺧﺎلﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬
‫ﺑﺎﻟﻤ‬
‫و‬
‫ﺑﻬﺎ‬‫ﺒﺆ‬
‫ﺘﻨ‬‫ﺘﺎج ﻣﺨﺮﺟﺎ تﻳﻤﻜﻦ اﻟ‬
‫ﺗﻤﺮﻳﺮه أي اﺳﻢﺗﺮﻳﺪ إﻧ‬
‫ﺑﻘﺪر ﻣﺎﺗﺮﻳﺪ و‬
‫ﺒﺎ ‪،‬ﺳﺎرة!ﻳﻤﻜﻨﻚ ﻣﻨﺎدا ت ‪()reet_user‬‬
‫ﺒﻊ ﻣﺮﺣ‬
‫وﻳﻄ‬
‫ﻓ ﻲ ﻛﻞ ﻣﺮة‪.‬‬

‫اﻟﺤﺠﺞ واﻟﻤﻌﻠﻤﺎ ت‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺑﻤﺠﺮد اﺳ‬‫ﺘﻐﻴﺮ‪.‬‬
‫ﺘﺨﺪم اﻟﻤ‬
‫ﺑﻘﻴﻤ ﺔ ﻻﺳﻢ اﻟﻤ ﺴ‬‫ﺒﺔ‬
‫ﺑﻘ ﺔ ‪ ،‬ﺣﺪدﻧﺎﺗﺤﻴ ﺖ_وﺳﺮ )(ﻟﻠﻤﻄﺎﻟ‬
‫ﺗﺤﻴ ﺖ اﻟ ﺴﺎ‬
‫ﻓ ﻲ اﻟﺪاﻟ ﺔ )(‬
‫ﺘﺤﻴ ﺔ اﻟﺼﺤﻴﺤ ﺔ‪.‬‬
‫ﺒﺎﻋ ﺔ اﻟ‬
‫ﺑﻄ‬‫وإﻋﻄﺎﺋﻬﺎ اﻟﻤﻌﻠﻮﻣﺎ ت )اﺳﻢ اﻟﺸﺨﺺ( ‪ ،‬ﻗﺎﻣ ﺖ‬

‫ﺘﺎﺟﻬﺎ‬ ‫ﺜﺎﻻ ً ﻋﲆ ﻣﻌﻠﻤ ﺔ ‪ ،‬و ﻫ ﻲ ﺟﺰء ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬


‫ﺘ ﻲﺗﺤ‬ ‫ﺘﺎﻟ ﻲ )(ﻣ‬
‫ﺘﻐﻴﺮ ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻤﻠﻒ اﻟ‬
‫ﺘﺨﺪم اﻟﻤ‬
‫ُﻌﺪ اﺳﻢ اﻟﻤ ﺴ‬
‫ﻳ‬
‫ﺜﺎﻻ ً ﻋﲆ اﻟﺤﺠ ﺔ‪ .‬اﻟﻮﺳﻴﻄ ﺔ ﻫ ﻲ ﺟﺰء ﻣﻦ‬
‫ﺗﺤﻴ ﺖ_وﺳﺮ" )"ﺟﻴ ﺴ ﻲ"( ﻣ‬
‫ﺒﺮ ﻗﻴﻤ ﺔ "‪"jesse‬ﻓ ﻲ ﻣﻠﻒ "‬
‫ﺘ‬‫ﺘﻬﺎ‪.‬ﺗﻌ‬
‫اﻟﻮﻇﻴﻔ ﺔﻷداء وﻇﻴﻔ‬
‫ﺘﺪﻋﺎء داﻟ ﺔ إﱃ داﻟ ﺔ‪.‬‬
‫ﺘﻢﺗﻤﺮﻳﺮه ﻣﻦ اﺳ‬
‫اﻟﻤﻌﻠﻮﻣﺎ تﻳ‬

‫ﺑﻴﻦ ﻗﻮﺳﻴﻦ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﺗﻢﺗﻤﺮﻳﺮ اﻟﻮﺳﻴﻄ ﺔ '‪'jesse‬‬‫ﺘ ﻲ ﻧﺮﻳﺪ أنﺗﻌﻤﻞ اﻟﺪاﻟ ﺔ ﻣﻌﻬﺎ‬
‫ﻋﻨﺪﻣﺎ ﻧ ﺴﻤ ﻲ اﻟﺪاﻟ ﺔ ‪ ،‬ﻧﻀﻊ اﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﺗﻢﺗﺨﺰﻳﻦ اﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻤﻌﺎﻣﻞ ‪username.‬‬
‫إﱃ اﻟﺪاﻟ ﺔ ‪reet_user () ،‬و‬

‫ﺘﻐﻴﺮا ت أو‬
‫ﺑﺎﻟﻤ‬‫ُﺸﺎر إﻟﻴﻬﺎ‬
‫ﺘﻐﻴﺮا ت ﻓ ﻲﺗﻌﺮﻳﻒ داﻟ ﺔﻳ‬
‫ﺒﺎدل‪ .‬ﻻﺗﻜﻦ ﻣﺆﻛﺪًا إذا رأﻳ ﺖ اﻟﻤ‬
‫ﺘ‬‫ﺑﺎﻟ‬‫ﺘﺤﺪ ث اﻟﻨﺎس أﺣﻴﺎﻧًﺎ ﻋﻦ اﻟﺤﺠﺞ واﻟﻤﻌﺎﻳﻴﺮ‬
‫ﻻﻳ‬
‫ﺑﺎﻟﻤﻌﻠﻤﺎ ت‪.‬‬‫ُﺸﺎر إﻟﻴﻬﺎ‬
‫ﺘﺪﻋﺎء داﻟ ﺔﻳ‬
‫ﺘﻐﻴﺮا ت ﻓ ﻲ اﺳ‬
‫اﻟﻤ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻌﻠﻤﻪ ﻓ ﻲ‬
‫ﺑﻤﺎﺗ‬‫ﺒﺮ اﻟﺠﻤﻴﻊ‬
‫ﺒﻊ ﺟﻤﻠ ﺔ واﺣﺪةﺗﺨ‬
‫ﺗﻄ‬‫ﺘ ﺐ وﻇﻴﻔ ﺔﺗ ﺴﻤﻰ )( ‪display_message‬‬
‫‪8-1.‬اﻟﺮﺳﺎﻟ ﺔ‪ :‬اﻛ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺗﺄﻛﺪ ﻣﻦ ﻋﺮض اﻟﺮﺳﺎﻟ ﺔ‬
‫ﺑﺎﻟﻮﻇﻴﻔ ﺔ ‪ ،‬و‬‫ﺗﺼﻞ‬
‫ﻫﺬا اﻟﻔﺼﻞ‪ .‬ا‬

‫ﺒﻞ ﻣﻌﻠﻤ ﺔ واﺣﺪة ‪ ،‬اﻟﻌﻨﻮان‪.‬ﻳﺠ ﺐ أن‬


‫ﺗﻘ‬‫ﺘ ﺐ وﻇﻴﻔ ﺔﺗ ﺴﻤﻰ )( ‪favourite_book‬‬
‫ﺘﺎ ب اﻟﻤﻔﻀﻞ‪ :‬اﻛ‬
‫‪8-2.‬اﻟﻜ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ‪،‬‬
‫ﺑﺎﺳ‬‫ﺒ ﻲ اﻟﻤﻔﻀﻠ ﺔ‪ .‬ﻗﻢ‬
‫ﺘ‬‫ﺑﻼد اﻟﻌﺠﺎﺋ ﺐ" أﺣﺪ ﻛ‬‫ﺜﻞ "أﻟﻴ ﺲ ﻓ ﻲ‬
‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔ ‪ ،‬ﻣ‬
‫ﺑﻄ‬‫ﺗﻘﻮم اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‪.‬‬
‫ﺘﺎ ب ﻛﻮﺳﻴﻄ ﺔ ﻓ ﻲ اﺳ‬
‫ﺘﺄﻛﺪ ﻣﻦﺗﻀﻤﻴﻦ ﻋﻨﻮان اﻟﻜ‬
‫ﻣﻊ اﻟ‬

‫ﺑﺮة‬
‫اﻟﺤﺠﺞ اﻟﻌﺎ‬
‫ﺘﻌﺪدة‪.‬ﻳﻤﻜﻨﻚ‬
‫ﺘﺪﻋﺎء اﻟﺪاﻟ ﺔ إﱃ وﺳﻴﻄﺎ ت ﻣ‬
‫ﺘﺎج اﺳ‬
‫ﺘﻌﺪدة ‪ ،‬ﻓﻘﺪﻳﺤ‬
‫ﺘﻮي ﻋﲆ ﻣﻌﻠﻤﺎ ت ﻣ‬
‫ﻧﻈ ﺮًاﻷنﺗﻌﺮﻳﻒ اﻟﺪاﻟ ﺔﻳﻤﻜﻦ أنﻳﺤ‬
‫ﺘ ﻲﻳﺠ ﺐ أنﺗﻜﻮن ﻣﻮﺟﻮدة‬
‫ﺘﺨﺪام اﻟﺤﺠﺞ اﻟﻤﻮﺿﻌﻴ ﺔ اﻟ‬
‫ﺑﻌﺪة ﻃﺮق‪.‬ﻳﻤﻜﻨﻚ اﺳ‬‫ﺗﻤﺮﻳﺮ اﻟﺤﺠﺞ إﱃ وﻇﺎﺋﻔﻚ‬

‫وﻇﺎﺋﻒ ‪135‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻐﻴﺮ وﻗﻴﻤ ﺔ ؛‬
‫ﺘﻜﻮن ﻛﻞ وﺳﻴﻄ ﺔ ﻣﻦ اﺳﻢ ﻣ‬
‫ﺋﻴ ﺴﻴ ﺔ ‪ ،‬ﺣﻴ ﺚﺗ‬
‫ﺑ ﺔ اﻟﻤﻌﻠﻤﺎ ت ؛ وﺳﻴﻄﺎ ت اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﺘﺎ‬
‫ﺗﻴ ﺐﺗﻤ ﺖ ﻛ‬
‫ﺘﺮ‬‫ﻧﻔ ﺲ اﻟ‬
‫ﺑﺪور ﻫﺎ‪.‬‬‫وﻗﻮاﺋﻢ وﻣﻌﺎﺟﻢ اﻟﻘﻴﻢ‪ .‬دﻋﻮﻧﺎ ﻧﻠﻘ ﻲ ﻧﻈﺮة ﻋﲆ ﻛﻞ ﻣﻦ ﻫﺬه‬

‫اﻟﺤﺠﺞ اﻟﻤﻮﺿﻌﻴ ﺔ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ﻣﻊ ﻣﻌﻠﻤ ﺔ ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ‪ .‬إن‬
‫ﺑﻖ ‪Python‬ﻛﻞ وﺳﻴﻄ ﺔ ﻓ ﻲ اﺳ‬
‫ﺘﺪﻋﺎء داﻟ ﺔ ‪،‬ﻳﺠ ﺐ أنﺗﻄﺎ‬
‫ﻋﻨﺪ اﺳ‬
‫ﺑﻬﺬه اﻟﻄﺮﻳﻘ ﺔﺗ ﺴﻤﻰ اﻟﺤﺠﺞ اﻟﻤﻮﺿﻌﻴ ﺔ‪.‬‬‫ﺑﻘ ﺔ‬
‫ﺗﻴ ﺐ اﻟﺤﺠﺞ اﻟﻤﻘﺪﻣ ﺔ‪ .‬اﻟﻘﻴﻢ اﻟﻤﻄﺎ‬
‫ﺘﻤﺪ ﻋﲆﺗﺮ‬
‫ﺑﺬﻟﻚﺗﻌ‬‫ﺑ ﺴﻂ ﻃﺮﻳﻘ ﺔ ﻟﻠﻘﻴﺎم‬
‫أ‬

‫ﺒﺮﻧﺎ اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺒﺎرك وﻇﻴﻔ ﺔﺗﻌﺮض ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ‪.‬ﺗﺨ‬
‫ﺘ‬‫ﻟﻤﻌﺮﻓ ﺔ ﻛﻴﻔﻴ ﺔ ﻋﻤﻞ ذﻟﻚ ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺜﻠﻪ ﻛﻞ ﺣﻴﻮان أﻟﻴﻒ واﺳﻢ اﻟﺤﻴﻮان اﻷﻟﻴﻒ ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻫﻨﺎ‪:‬‬
‫ﺑﻨﻮع اﻟﺤﻴﻮان اﻟﺬيﻳﻤ‬

‫‪)pets.py u def description_pet‬ﻧﻮع_اﻟﺤﻴﻮان ‪ ،‬اﺳﻢ_اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ(‪:‬‬


‫"""ﻋﺮض ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﺣﻴﻮان أﻟﻴﻒ‪"" ".‬‬
‫"‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻟﺪي ‪+‬ﻧﻮع_ﺣﻴﻮان )" ‪+".‬‬
‫ﻃ‬
‫"‬
‫‪)print‬اﺳﻢ ‪ ""My" + animal_type +‬ﻫﻮ‬ ‫)"‪+ pet_name.title () + ".‬‬

‫ﺘﺮ" ‪ " ،‬ﻫﺎري"(‬


‫‪")v description_pet‬اﻟﻬﺎﻣ ﺴ‬

‫ﺘﺎج إﱃ ﻧﻮع ﻣﻦ اﻟﺤﻴﻮاﻧﺎ ت و‬


‫ﺘﻌﺮﻳﻒ أن ﻫﺬه اﻟﻮﻇﻴﻔ ﺔﺗﺤ‬
‫ﻳﻮﺿﺢ اﻟ‬
‫ﺗﻴ ﺐ‪ .‬ﻋﲆ‬
‫ﺘﺮ‬‫ﺑﻬﺬا اﻟ‬‫ﺘﺎج إﱃﺗﻮﻓﻴﺮ ﻧﻮع ‪ani mal‬واﺳﻢ‬
‫اﺳﻢ اﻟﺤﻴﻮان ‪u.‬ﻋﻨﺪﻣﺎ ﻧﻄﻠﻖ ﻋﲆ ‪description_pet () ،‬ﻧﺤ‬
‫ﺘﻢﺗﺨﺰﻳﻦ‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟﻮﺳﻴﻄ ﺔ "‪"hamster‬ﻓ ﻲ اﻟﻤﻌﻠﻤ ﺔ ‪animal_type‬وﻳ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ‪،‬ﻳ‬
‫ﺜﺎل ‪ ،‬ﻓ ﻲ اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺳ‬
‫ﺘﻴﻦ ﻟﻌﺮض ﻣﻌﻠﻮﻣﺎ ت‬
‫ﺗﻴﻦ اﻟﻤﻌﻠﻤ‬
‫ﺘﺨﺪام ﻫﺎ‬
‫ﺘﻢ اﺳ‬
‫اﻟﻮﺳﻴﻄ ﺔ "‪"harry‬ﻓ ﻲ اﻟﻤﻌﻠﻤ ﺔ ‪pet_name v.‬ﻓ ﻲ ﺟ ﺴﻢ اﻟﻮﻇﻴﻔ ﺔ ‪،‬ﻳ‬
‫ﺣﻮل اﻟﺤﻴﻮان اﻷﻟﻴﻒﻳﺠﺮي وﺻﻔﻬﺎ‪.‬‬

‫ﺘﺮ اﻟﻤ ﺴﻤﻰ ﻫﺎري‪:‬‬


‫ﻳﺼﻒ اﻹﺧﺮاج اﻟﻬﺎﻣ ﺴ‬

‫ﺘﺮ‪.‬‬
‫ﻟﺪي ﻫﺎﻣ ﺴ‬

‫ﺑ ﻲ ﻫﻮ ﻫﺎري‪.‬‬‫ﺘﺮ اﻟﺨﺎص‬
‫اﺳﻢ اﻟﻬﺎﻣ ﺴ‬

‫ﺘﻌﺪدة اﻟﻮﻇﺎﺋﻒ‬
‫ﻣﻜﺎﻟﻤﺎ ت ﻣ‬

‫ﺘﻠ ًﻔﺎ ا‬
‫ﺗﺼﺎﻻ ً واﺣﺪًا إﺿﺎﻓ ًﻴﺎ‬ ‫ﺘﻠﻒ ﻣﺨ‬
‫ﺘﻄﻠ ﺐ وﺻﻒ ﺣﻴﻮان أﻟﻴﻒ ﻣﺨ‬
‫ﺘﺪﻋﺎء وﻇﻴﻔ ﺔ ﻋﺪة ﻣﺮا ت ﺣ ﺴ ﺐ اﻟﺤﺎﺟ ﺔ‪.‬ﻳ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﻟﻮﺻﻒ_‪(): teP‬‬

‫‪)def description_pet‬ﻧﻮع_اﻟﺤﻴﻮان ‪ ،‬اﺳﻢ_اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ(‪:‬‬


‫"""ﻋﺮض ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﺣﻴﻮان أﻟﻴﻒ‪"" ".‬‬
‫"‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻟﺪي ‪+‬ﻧﻮع_ﺣﻴﻮان )" ‪+".‬‬
‫ﻃ‬
‫"‬
‫‪)print‬اﺳﻢ ‪ ""My" + animal_type +‬ﻫﻮ‬ ‫)"‪+ pet_name.title () + ".‬‬

‫ﺘﺮ" ‪ " ،‬ﻫﺎري"(‬


‫‪")description_pet‬اﻟﻬﺎﻣ ﺴ‬
‫‪")description_pet‬ﻛﻠ ﺐ"‪" ،‬وﻳﻠ ﻲ"(‬

‫ﺜﺎﻧ ﻲ ﻫﺬا ‪ ،‬ﻧﻤﺮر )( ‪description_pet‬اﻟﻮﺳﻴﻄﺎ ت '‪'dog‬‬


‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﻓ ﻲ اﺳ‬
‫ﺑﻖ "‪Python "dog‬ﻣﻊ اﻟﻤﻌﻠﻤ ﺔ‬
‫ﺘﺨﺪﻣﻨﺎ ﻫﺎ ‪،‬ﻳﻄﺎ‬
‫ﺘ ﻲ اﺳ‬
‫ﺑﻘ ﺔ اﻟ‬
‫و "وﻳﻠ ﻲ"‪ .‬ﻛﻤﺎ ﻫﻮ اﻟﺤﺎل ﻣﻊ ﻣﺠﻤﻮﻋ ﺔ اﻟﻮﺳﺎﺋﻂ اﻟ ﺴﺎ‬
‫‪animal_type‬و "‪"willie‬ﻣﻊ اﻟﻤﻌﻠﻤ ﺔ ‪pet_name.‬‬

‫ﺜﺎﻣﻦ‬
‫‪136‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺮ اﺳﻤﻪ ﻫﺎري‬


‫ﻗﻴﻤﺎ ﻟﻜﻠ ﺐ اﺳﻤﻪ وﻳﻠ ﻲ‪ .‬اﻵن ﻟﺪﻳﻨﺎ ﻫﺎﻣ ﺴ‬
‫ً‬ ‫ﺒﻊ‬
‫ﺑﻌﻤﻠﻬﺎ ‪ ،‬ﻟﻜﻨﻬﺎ ﻫﺬه اﻟﻤﺮةﺗﻄ‬‫ﺒﻞ ‪،‬ﺗﻘﻮم اﻟﻮﻇﻴﻔ ﺔ‬
‫ﻛﻤﺎ ﻛﺎن ﻣﻦ ﻗ‬
‫وﻛﻠ ﺐ اﺳﻤﻪ وﻳﻠ ﻲ‪:‬‬

‫ﺘﺮ‪.‬‬
‫ﻟﺪي ﻫﺎﻣ ﺴ‬

‫ﺑ ﻲ ﻫﻮ ﻫﺎري‪.‬‬‫ﺘﺮ اﻟﺨﺎص‬
‫اﺳﻢ اﻟﻬﺎﻣ ﺴ‬

‫ﻟﺪي ﻛﻠ ﺐ‪.‬‬
‫ﺒ ﻲ ﻫﻮ وﻳﻠ ﻲ‪.‬‬
‫اﺳﻢ ﻛﻠ‬

‫ﺑ ﺔ اﻟﻜﻮد اﻟﺬيﻳﺼﻒ ﺣﻴﻮاﻧًﺎ أﻟﻴ ًﻔﺎ ﻣﺮة واﺣﺪة‬


‫ﺘﺎ‬
‫ﺘﻢ ﻛ‬
‫ﺘﺪﻋﺎء وﻇﻴﻔ ﺔ ﻋﺪة ﻣﺮا ت ﻃﺮﻳﻘ ﺔ ﻓﻌﺎﻟ ﺔ ﻟﻠﻐﺎﻳ ﺔ ﻟﻠﻌﻤﻞ‪.‬ﺗ‬
‫ﻳﻌﺪ اﺳ‬
‫ﺑﻤﻌﻠﻮﻣﺎ ت اﻟﺤﻴﻮان‬ ‫ﺛﻢ ‪ ،‬ﻓ ﻲ أي وﻗ ﺖﺗﺮﻳﺪ أنﺗﺼﻒ ﻓﻴﻪ ﺣﻴﻮاﻧًﺎ أﻟﻴ ًﻔﺎ ﺟﺪﻳﺪًا ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‬ ‫ﻓ ﻲ اﻟﻮﻇﻴﻔ ﺔ‪.‬‬
‫ﺑﺈﻣﻜﺎﻧﻚ وﺻﻒ ﺣﻴﻮان أﻟﻴﻒ ﺟﺪﻳﺪ ﻓ ﻲ‬‫ﺘﻰ ﻟﻮﺗﻢﺗﻮﺳﻴﻊ رﻣﺰ وﺻﻒ ﺣﻴﻮان أﻟﻴﻒ إﱃ ﻋﺸﺮة أﺳﻄﺮ ‪ ،‬ﻓﻼﻳﺰال‬
‫اﻟﺠﺪﻳﺪ‪ .‬ﺣ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ﻣﺮة أﺧﺮى‪.‬‬
‫ﺳﻄﺮ واﺣﺪ ﻓﻘﻂ ﻋﻦ ﻃﺮﻳﻖ اﺳ‬

‫ﺘﺎﺟﻬﺎ ﻓ ﻲ وﻇﺎﺋﻔﻚ‪.‬ﺗﻌﻤﻞ ‪Python‬ﻣﻦ ﺧﻼل اﻟﻮﺳﻴﻄﺎ ت‬


‫ﺘ ﻲﺗﺤ‬
‫ﺘﺨﺪام اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺤﺠﺞ اﻟﻤﻮﺿﻌﻴ ﺔ اﻟ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺑﻠ ﺔ ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ‪.‬‬
‫ﺑﻖ ﻛﻞ واﺣﺪة ﻣﻊ اﻟﻤﻌﻠﻤ ﺔ اﻟﻤﻘﺎ‬
‫ﺗﻄﺎ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ و‬
‫ﺘ ﻲﺗﻘﺪﻣﻬﺎ ﻋﻨﺪ اﺳ‬
‫اﻟ‬

‫ﺗﻴ ﺐ اﻟﻤ ﺴﺎﺋﻞ ﻓ ﻲ اﻟﺤﺠﺞ اﻟﻤﻮﺿﻌﻴ ﺔ‬


‫ﺗﺮ‬

‫ﺘﺨﺪام اﻟﻮﺳﺎﺋﻂ اﻟﻤﻮﺿﻌﻴ ﺔ‪:‬‬


‫ﺘﺪﻋﺎء داﻟ ﺔ ﻋﻨﺪ اﺳ‬
‫ﺗﻴ ﺐ اﻟﻮﺳﺎﺋﻂ ﻓ ﻲ اﺳ‬
‫ﺑﺨﻠﻂﺗﺮ‬‫ﺘﻮﻗﻌ ﺔ إذا ﻗﻤ ﺖ‬
‫ﺘﺎﺋﺞ ﻏﻴﺮ ﻣ‬
‫ﻳﻤﻜﻨﻚ اﻟﺤﺼﻮل ﻋﲆ ﻧ‬

‫‪)def description_pet‬ﻧﻮع_اﻟﺤﻴﻮان ‪ ،‬اﺳﻢ_اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ(‪:‬‬


‫"""ﻋﺮض ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﺣﻴﻮان أﻟﻴﻒ‪"" ".‬‬
‫"‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻟﺪي ‪+‬ﻧﻮع_ﺣﻴﻮان )" ‪+".‬‬
‫ﻃ‬
‫"‬
‫‪)print‬اﺳﻢ ‪ ""My" + animal_type +‬ﻫﻮ‬ ‫)"‪+ pet_name.title () + ".‬‬

‫)"‪description_pet ("harry"، "hamster‬‬

‫ﺛﺎﻧ ًﻴﺎ‪.‬‬‫ﻓ ﻲ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬ﻧﺪرج اﻻﺳﻢ أوﻻ ً وﻧﻮع اﻟﺤﻴﻮان‬


‫ﺘﻢ‬
‫ﺜﻞ ‪،‬ﻳ‬
‫ﺑﺎﻟﻤ‬ ‫ﻧﻈ ﺮًاﻷﻧﻪﺗﻢ إدراج اﻟﻮﺳﻴﻄ ﺔ "‪"harry‬أوﻻ ً ﻫﺬه اﻟﻤﺮة ‪،‬ﻳ‬
‫ﺘﻢﺗﺨﺰﻳﻦ ﻫﺬه اﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻤﻌﻠﻤ ﺔ ‪animal_type.‬و‬
‫ﺘﺮ"‪:‬‬
‫ﺘﺮ" ﻓ ﻲ ‪pet_name.‬اﻵن ﻟﺪﻳﻨﺎ " ﻫﺎري" اﺳﻤﻪ " ﻫﺎﻣ ﺴ‬
‫ﺗﺨﺰﻳﻦ "اﻟﻬﺎﻣ ﺴ‬

‫ﻟﺪي ﻫﺎري‪.‬‬
‫ﺘﺮ‪.‬‬
‫اﺳﻢ ﻫﺎري ﻫﻮ اﻟﻬﺎﻣ ﺴ‬

‫ﺗﻴ ﺐ‬
‫ﺑﻖﺗﺮ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔﻳﻄﺎ‬
‫ﺗﻴ ﺐ اﻟﻮﺳﺎﺋﻂ ﻓ ﻲ اﺳ‬
‫ﺘﺄﻛﺪ ﻣﻦ أنﺗﺮ‬
‫ﺘﺤﻘﻖ ﻟﻠ‬
‫ﺜﻞ ﻫﺬه ‪ ،‬ﻓ‬
‫ﺘﺎﺋﺞ ﻣﻀﺤﻜ ﺔ ﻣ‬
‫إذا ﺣﺼﻠ ﺖ ﻋﲆ ﻧ‬
‫اﻟﻤﻌﻠﻤﺎ ت ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ‪.‬‬

‫ﺋﻴ ﺴﻴ ﺔ‬
‫وﺳﻴﻄﺎ ت اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﺒﺎﺷﺮة داﺧﻞ اﻟﻮﺳﻴﻄ ﺔ ‪،‬‬
‫ﺑﻂ اﻻﺳﻢ واﻟﻘﻴﻤ ﺔ ﻣ‬
‫ﺑﺮ‬‫ﺘﻤﺮﻳﺮه إﱃ داﻟ ﺔ‪.‬ﺗﻘﻮم‬
‫ﺑ‬‫وﺳﻴﻄ ﺔ اﻟﻜﻠﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ ﻫ ﻲ زوج اﺳﻢ‪-‬ﻗﻴﻤ ﺔﺗﻘﻮم‬
‫ﺑﻚ اﻷﻣﺮ‬‫ﺘﻬ ﻲ‬
‫ﺒﺎك )ﻟﻦﻳﻨ‬
‫ﺗ‬‫ﻟﺬﻟﻚ ﻋﻨﺪﻣﺎﺗﻤﺮر اﻟﻮﺳﻴﻄ ﺔ إﱃ اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬ﻻﻳﻮﺟﺪ أي ار‬

‫اﻟﻤﻬﺎم‬ ‫‪137‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺪﻋﺎء‬
‫ﺗﻴ ﺐ اﻟﺼﺤﻴﺢ ﻟﻠﻮﺳﻴﻄﺎ ت ﻓ ﻲ اﺳ‬
‫ﺘﺮ‬‫ﺑﺸﺄن اﻟ‬‫ﺋﻴ ﺴﻴ ﺔ ﻣﻦ اﻟﻘﻠﻖ‬
‫ﺘﺮ(‪.‬ﺗﺤﺮرك وﺳﻴﻄﺎ ت اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﻣﻊ ﻫﺎري اﺳﻤﻪ اﻟﻬﺎﻣ ﺴ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‪.‬‬
‫ﺗﻮﺿﺢ دور ﻛﻞ ﻗﻴﻤ ﺔ ﻓ ﻲ اﺳ‬
‫اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬و‬

‫ﺘﺪﻋﺎء ‪description_pet ():‬‬


‫ﺋﻴ ﺴﻴ ﺔ ﻻﺳ‬
‫ﺘﺨﺪام وﺳﻴﻄﺎ ت اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﺑﺎﺳ‬
‫ﺑ ﺔ ‪pets.py‬‬
‫ﺘﺎ‬
‫دﻋﻨﺎ ﻧﻌﻴﺪ ﻛ‬

‫‪)def description_pet‬ﻧﻮع_اﻟﺤﻴﻮان ‪ ،‬اﺳﻢ_اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ(‪:‬‬


‫"""ﻋﺮض ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﺣﻴﻮان أﻟﻴﻒ‪"" ".‬‬
‫"‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻟﺪي ‪+‬ﻧﻮع_ﺣﻴﻮان )" ‪+".‬‬
‫ﻃ‬
‫"‬
‫‪)print‬اﺳﻢ ‪ ""My" + animal_type +‬ﻫﻮ‬ ‫)"‪+ pet_name.title () + ".‬‬

‫)'‪description_pet (animal_type = 'hamster'، pet_name = 'harry‬‬

‫ﺘﻐﻴﺮ‪ .‬وﻟﻜﻦ ﻋﻨﺪﻣﺎ ﻧ ﺴﻤ ﻲ ‪func‬‬


‫اﻟﻮﻇﻴﻔ ﺔ )( ‪description_pet‬ﻟﻢﺗ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ‪،‬‬
‫ﺑﻖ ﻣﻌﻪ ﻛﻞ وﺳﻴﻄ ﺔ‪ .‬ﻋﻨﺪﻣﺎﺗﻘﺮأ ‪Python‬اﺳ‬
‫ﺘﻄﺎ‬
‫ﺑﺎﻟﻤﻌﺎﻣﻞ اﻟﺬيﻳﺠ ﺐ أنﺗ‬‫ﺒﺮ ‪ Python‬ﺻﺮاﺣ ًﺔ‬
‫ﻧﺸﻮﺋﻬﺎ ‪ ،‬ﻧﺨ‬
‫ﻓﺈﻧﻬﺎﺗﻌﺮفﺗﺨﺰﻳﻦ اﻟﻮﺳﻴﻄ ﺔ '‪'hamster‬ﻓ ﻲ اﻟﻤﻌﻠﻤ ﺔ ‪animal_type‬واﻟﻮﺳﻴﻄ ﺔ '‪'harry‬‬

‫ﺘﺮ اﺳﻤﻪ ﻫﺎري‪.‬‬


‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ أن ﻟﺪﻳﻨﺎ ﻫﺎﻣ ﺴ‬‫ﻓ ﻲ ‪pet_name.‬ﻳﻮﺿﺢ اﻹﺧﺮاج‬

‫ﺘﺎﻟﻴﺎن‬
‫ﺗﻌﺮف أﻳﻦﻳﺠ ﺐ أنﺗﺬ ﻫ ﺐ ﻛﻞ ﻗﻴﻤ ﺔ‪ .‬ﻧﺪاء اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺋﻴ ﺴﻴ ﺔﻷن ‪Python‬‬
‫ﺗﻴ ﺐ وﺳﻴﻄﺎ ت اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﻻﻳﻬﻢﺗﺮ‬
‫ﺘﻜﺎﻓﺌﺎن‪:‬‬
‫ﻣ‬

‫)'‪description_pet (animal_type = 'hamster'، pet_name = 'harry‬‬


‫)'‪description_pet (pet_name = 'harry'، animal_type = 'hamster‬‬

‫ﺘﺨﺪام اﻷﺳﻤﺎء اﻟﺪﻗﻴﻘ ﺔ ﻟﻠﻤﻌﻠﻤﺎ ت ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ‪.‬‬


‫ﺘﺨﺪام وﺳﻴﻄﺎ ت اﻟﻜﻠﻤﺎ ت اﻷﺳﺎﺳﻴ ﺔ ‪،‬ﺗﺄﻛﺪ ﻣﻦ اﺳ‬
‫ﻣﻼﺣﻈ ﺔ ﻋﻨﺪ اﺳ‬

‫ﺘﺮاﺿﻴ ﺔ‬
‫ﻗﻴﻢ اﻓ‬

‫ﺘﺮاﺿﻴ ﺔ ﻟﻜﻞ ﻣﻌﻠﻤ ﺔ‪.‬‬


‫ﺑ ﺔ داﻟ ﺔ ‪،‬ﻳﻤﻜﻨﻚﺗﺤﺪﻳﺪ ﻗﻴﻤ ﺔ اﻓ‬
‫ﺘﺎ‬
‫ﻋﻨﺪ ﻛ‬
‫ﺘﺨﺪم‬
‫ﺘﺨﺪم ﻗﻴﻤ ﺔ اﻟﻮﺳﻴﻄ ﺔ‪ .‬إذا ﻟﻢﻳﻜﻦ ﻛﺬﻟﻚ ‪ ،‬ﻓﺈﻧﻪﻳ ﺴ‬
‫ﺗﺴ‬‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬ﻓﺈن ‪Python‬‬
‫إذاﺗﻢﺗﻮﻓﻴﺮ وﺳﻴﻄ ﺔ ﻟﻠﻤﻌﻠﻤ ﺔ ﻓ ﻲ اﺳ‬
‫ﺘ ﻲ ﻋﺎدة ﻣﺎ‬
‫ﺑﻠ ﺔ اﻟ‬
‫ﺒﻌﺎد اﻟﻮﺳﻴﻄ ﺔ اﻟﻤﻘﺎ‬
‫ﺘ‬‫ﺘﺮاﺿﻴ ﺔ ﻟﻠﻤﻌﺎﻣﻞ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﺮاﺿﻴ ﺔ ﻟﻠﻤﻌﻠﻤ ﺔ‪ .‬ﻟﺬﻟﻚ ﻋﻨﺪﻣﺎﺗﺤﺪد ﻗﻴﻤ ﺔ اﻓ‬
‫اﻟﻘﻴﻤ ﺔ اﻻﻓ‬
‫ﺗﻮﺿﻴﺢ اﻟﻄﺮق‬
‫ﺘﺪﻋﺎءا ت اﻟﻮﻇﺎﺋﻒ و‬
‫ﺒ ﺴﻴﻂ اﺳ‬
‫ﺘﺮاﺿﻴ ﺔ إﱃﺗ‬
‫ﺘﺨﺪام اﻟﻘﻴﻢ اﻻﻓ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‪.‬ﻳﻤﻜﻦ أنﻳﺆدي اﺳ‬
‫ﺒﻬﺎ ﻓ ﻲ اﺳ‬
‫ﺘ‬‫ﺗﻜ‬
‫ً‬
‫ﻋﺎدة‪.‬‬ ‫ﺑﻬﺎ وﻇﺎﺋﻔﻚ‬ ‫ُﺴ‬
‫ﺘﺨﺪم‬ ‫ﺘ ﻲﺗ‬
‫اﻟ‬

‫ُﺴ‬
‫ﺘﺨﺪم ﻟﻮﺻﻒ اﻟﻜﻼ ب ‪ ،‬ﻓﻴﻤﻜﻨﻚ‬ ‫ﺗ‬
‫ﺘﺪﻋﺎءا ت )( ‪description_pet‬‬
‫ﺜﺎل ‪ ،‬إذا ﻻﺣﻈ ﺖ أن ﻣﻌﻈﻢ اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺑﻜﻠ ﺐ أن‬
‫ﺑـ )( ‪description_pet‬‬‫ﺘﺼﻞ‬
‫ﺘﺮاﺿﻴ ﺔ ﻟـ ‪animal_type‬ﻋﲆ ‪"dog".‬اﻵنﻳﻤﻜﻦﻷي ﺷﺨﺺﻳ‬
‫ﺗﻌﻴﻴﻦ اﻟﻘﻴﻤ ﺔ اﻻﻓ‬
‫ﻳﺤﺬف ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت‪:‬‬

‫‪)def description_pet‬اﺳﻢ_اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ‪ ،‬ﻧﻮع_اﻟﺤﻴﻮان ="ﻛﻠ ﺐ"(‪:‬‬


‫"""ﻋﺮض ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﺣﻴﻮان أﻟﻴﻒ‪"" ".‬‬
‫"‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻟﺪي ‪+‬ﻧﻮع_ﺣﻴﻮان )" ‪+".‬‬‫ﻃ‬
‫"‬
‫‪)print‬اﺳﻢ ‪ ""My" + animal_type +‬ﻫﻮ‬ ‫)"‪+ pet_name.title () + ".‬‬

‫)'‪description_pet (pet_name = 'willie‬‬

‫ﺜﺎﻣﻦ‬
‫‪138‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺮاﺿﻴ ﺔ ‪"dog" ، ،‬ﻣﻦ أﺟﻞ ‪animal_type.‬اﻵن ﻋﻨﺪﻣﺎ‬


‫ّﻴ ﺮﻧﺎﺗﻌﺮﻳﻒ )( ‪description_pet‬ﻟﻴﺸﻤﻞ اﻟﻘﻴﻤ ﺔ اﻻﻓ‬
‫ﻟﻘﺪ ﻏ‬
‫ﺑﺪون ﻧﻮع ‪animal‬‬‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘﻢ اﺳ‬
‫ﻳ‬
‫ﺘﺨﺪام اﻟﻘﻴﻤ ﺔ "‪"dog‬ﻟﻬﺬه اﻟﻤﻌﻠﻤ ﺔ‪:‬‬
‫ﺗﺤﺪﻳﺪًا ‪،‬ﺗﻌﻠﻢ ‪Python‬اﺳ‬

‫ﻟﺪي ﻛﻠ ﺐ‪.‬‬
‫ﺒ ﻲ ﻫﻮ وﻳﻠ ﻲ‪.‬‬
‫اﺳﻢ ﻛﻠ‬

‫ﺘﺮاﺿﻴ ﺔﺗﺠﻌﻞ ﻣﻦ ﻏﻴﺮ اﻟﻀﺮوري‬


‫ﺗﻴ ﺐ اﻟﻤﻌﻠﻤﺎ ت ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﻧﻈ ﺮًاﻷن اﻟﻘﻴﻤ ﺔ اﻻﻓ‬
‫ﻻﺣﻆ أﻧﻪﻳﺠ ﺐﺗﻐﻴﻴﺮﺗﺮ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ﻫ ﻲ اﺳﻢ اﻟﺤﻴﻮان اﻷﻟﻴﻒ‪ .‬ﻻﺗﺰال‬
‫ﺒﻘﻴ ﺔ ﻓ ﻲ اﺳ‬
‫ﺘ‬‫ﺗﺤﺪﻳﺪ ﻧﻮع اﻟﺤﻴﻮان ﻛﻮﺳﻴﻄ ﺔ ‪ ،‬ﻓﺈن اﻟﻮﺳﻴﻄ ﺔ اﻟﻮﺣﻴﺪة اﻟﻤ‬
‫ﺑﻖ ﻫﺬه‬
‫ﺘﻄﺎ‬
‫ﺘ‬‫ﺑﺎﺳﻢ ﺣﻴﻮان أﻟﻴﻒ ﻓﻘﻂ ‪ ،‬ﻓ ﺴ‬‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺗﻔ ﺴﺮ ﻫﺬا ﻋﲆ أﻧﻪ وﺳﻴﻂ ﻣﻮﺿﻌ ﻲ ‪ ،‬ﻟﺬﻟﻚ إذاﺗﻢ اﺳ‬
‫‪Python‬‬
‫ﺑﻦ اﻟﺤﻘﻴﻘ ﻲ اﻟﺬيﻳﺠ ﺐ أنﻳﻜﻮن اﺳﻢ اﻟﻤﻌﻠﻤ ﺔ اﻷول‬
‫اﻟﻮﺳﻴﻄ ﺔ ﻣﻊ اﻟﻤﻌﻠﻤ ﺔ اﻷوﱃ اﻟﻤﺪرﺟ ﺔ ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﻫﺬا ﻫﻮ اﻻ‬
‫ﻫﻮ ‪pet_name.‬‬

‫ﺘﺨﺪام ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ اﻵن ﻫ ﻲﺗﻮﻓﻴﺮ ﻛﻠ ﺐ ﻓﻘﻂ‬


‫ﺑ ﺴﻂ ﻃﺮﻳﻘ ﺔ ﻻﺳ‬
‫إن أ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‪:‬‬
‫اﻻﺳﻢ ﻓ ﻲ اﺳ‬

‫‪")description_pet‬وﻳﻠ ﻲ"(‬

‫ﺑﻖ‪.‬‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺜﻞ اﻟﻤ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ﻫﺬا ﻧﻔ ﺲ اﻹﺧﺮاج ﻣ‬
‫ﺳﻴﻜﻮن ﻻﺳ‬
‫ﺘﻌﺮﻳﻒ ‪pet_name. ،‬ﻧﻈ ﺮًا ﻟﻌﺪم‬
‫ﺘﻬﺎ ﻣﻊ اﻟﻤﻌﺎﻣﻞ اﻷول ﻓ ﻲ اﻟ‬
‫ﺑﻘ‬‫ﺘﻢ ﻣﻄﺎ‬
‫ﺘﻮﻓﺮة ﻫ ﻲ ‪"willie" ،‬ﻟﺬﻟﻚﻳ‬
‫اﻟﻮﺳﻴﻄ ﺔ اﻟﻮﺣﻴﺪة اﻟﻤ‬
‫ﺘﺮاﺿﻴ ﺔ ‪"dog".‬‬
‫ﺘﺨﺪم ‪Python‬اﻟﻘﻴﻤ ﺔ اﻻﻓ‬
‫ﺗﺴ‬‫ﺗﻮﻓﻴﺮ وﺳﻴﻄ ﺔ ﻟـ ‪animal_type ،‬‬

‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﺘﺪﻋﺎء وﻇﻴﻔ ﻲ ﻣ‬
‫ﺘﺨﺪام اﺳ‬
‫ﻟﻮﺻﻒ ﺣﻴﻮان ﻏﻴﺮ اﻟﻜﻠ ﺐ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬

‫)'‪description_pet (pet_name = 'harry'، animal_type = 'hamster‬‬

‫ﺑﺬﻟﻚ‬‫ﺘﻘﻮم‬
‫ﺘﻮﻓﻴﺮ ﺣﺠ ﺔ ﺻﺮﻳﺤ ﺔ ﻟـ ‪animal_type ،‬ﻓﺈن ‪Python‬ﺳ‬
‫ﻧﻈ ﺮًا ﻟ‬
‫ﺘﺮاﺿﻴ ﺔ ﻟﻠﻤﻌﻠﻤ ﺔ‪.‬‬
‫ﺗﺠﺎ ﻫﻞ اﻟﻘﻴﻤ ﺔ اﻻﻓ‬

‫ﺘﻮي ﻋﲆ ﻗﻴﻢ‬
‫ﺘ ﻲ ﻻﺗﺤ‬
‫ﺑﻌﺪ ﺟﻤﻴﻊ اﻟﻤﻌﻠﻤﺎ ت اﻟ‬‫ﺘﺮاﺿﻴ ﺔ‬
‫ﺘﺮاﺿﻴ ﺔ ‪،‬ﻳﺠ ﺐ إدراج أي ﻣﻌﻠﻤ ﺔ ذا ت ﻗﻴﻤ ﺔ اﻓ‬
‫ﺘﺨﺪام اﻟﻘﻴﻢ اﻻﻓ‬
‫ﻣﻼﺣﻈ ﺔ ﻋﻨﺪ اﺳ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺑﻤﻮاﺻﻠ ﺔﺗﻔ ﺴﻴﺮ اﻟﺤﺠﺞ اﻟﻤﻮﺿﻌﻴ ﺔ‬‫ﺜﻮن‬
‫ﺒﺎﻳ‬
‫ﺘﺮاﺿﻴ ﺔ‪.‬ﻳ ﺴﻤﺢ ﻫﺬا ﻟ‬
‫اﻓ‬

‫ﻣﻜﺎﻟﻤﺎ ت اﻟﻮﻇﻴﻔ ﺔ اﻟﻤﻜﺎﻓﺌ ﺔ‬


‫ﺒﺎ ﻣﺎﻳﻜﻮن ﻟﺪﻳﻚ‬
‫ﺘﺮاﺿﻴ ﺔ ﻣﻌً ﺎ ‪ ،‬ﻓﻐﺎﻟ ً‬
‫ﺘﺨﺪام اﻟﻮﺳﺎﺋﻂ اﻟﻤﻮﺿﻌﻴ ﺔ ووﺳﺎﺋﻂ اﻟﻜﻠﻤﺎ ت اﻷﺳﺎﺳﻴ ﺔ واﻟﻘﻴﻢ اﻻﻓ‬
‫ﻧﻈ ﺮًاﻷﻧﻪﻳﻤﻜﻦ اﺳ‬
‫ﺘﺮاﺿﻴ ﺔ‬
‫ﺘﺎﻟ ﻲ ﻟـ )( ‪description_pets‬ﻣﻊﺗﻮﻓﻴﺮ ﻗﻴﻤ ﺔ اﻓ‬
‫ﺘﻌﺮﻳﻒ اﻟ‬
‫ﺒﺎرك اﻟ‬
‫ﺘ‬‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﻋﺪة ﻃﺮق ﻣﻜﺎﻓﺌ ﺔ ﻻﺳ‬
‫واﺣﺪة‪:‬‬

‫‪)def description_pet‬اﺳﻢ_اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ‪ ،‬ﻧﻮع_اﻟﺤﻴﻮان ="ﻛﻠ ﺐ"(‪:‬‬

‫ﺘﺨﺪام اﻟﻤﻮﺿﻊ أو‬


‫ﺑﺎﺳ‬‫ﺋﻤﺎﺗﻮﻓﻴﺮ وﺳﻴﻄ ﺔ ﻟـ ‪pet_name ،‬وﻳﻤﻜﻦﺗﻮﻓﻴﺮ ﻫﺬه اﻟﻘﻴﻤ ﺔ‬
‫ﺘﻌﺮﻳﻒ ‪،‬ﻳﺠ ﺐ دا ً‬
‫ﻣﻊ ﻫﺬا اﻟ‬
‫اﻟﻜﻠﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ‬

‫وﻇﺎﺋﻒ ‪139‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎ ‪ ،‬ﻓﻴﺠ ﺐﺗﻀﻤﻴﻦ وﺳﻴﻄ ﺔ ﻟـ ‪animal_type‬ﻓ ﻲ اﻟﻤﻜﺎﻟﻤ ﺔ ‪ ،‬وﻳﻤﻜﻦ أ ً‬


‫ﻳﻀﺎﺗﺤﺪﻳﺪ ﻫﺬه‬ ‫ﺷﻜﻞ‪ .‬إذا ﻟﻢﻳﻜﻦ اﻟﺤﻴﻮان اﻟﻤﻮﺻﻮف ﻛﻠ ً‬
‫ﺘﺨﺪامﺗﻨ ﺴﻴﻖ اﻟﻤﻮﺿﻊ أو اﻟﻜﻠﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ‪.‬‬
‫ﺑﺎﺳ‬‫اﻟﻮﺳﻴﻄ ﺔ‬

‫ﺘﺎﻟﻴ ﺔ ﻣﻊ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‪:‬‬


‫ﺘﻌﻤﻞ ﺟﻤﻴﻊ اﻟﻤﻜﺎﻟﻤﺎ ت اﻟ‬
‫ﺳ‬

‫‪#‬ﻛﻠ ﺐ اﺳﻤﻪ وﻳﻠ ﻲ‪.‬‬


‫‪")description_pet‬وﻳﻠ ﻲ"(‬
‫)'‪description_pet (pet_name = 'willie‬‬

‫ﺘﺮ اﺳﻤﻪ ﻫﺎري‪.‬‬


‫‪ #‬ﻫﺎﻣ ﺴ‬
‫)"‪description_pet ("harry"، "hamster‬‬
‫)'‪description_pet (pet_name = 'harry'، animal_type = 'hamster‬‬
‫)'‪description_pet (animal_type = 'hamster'، pet_name = 'harry‬‬

‫ﺑﻘ ﺔ‪.‬‬
‫ﺜﻠ ﺔ اﻟ ﺴﺎ‬
‫ﺜﻞ اﻷﻣ‬
‫ﺘﺪﻋﺎءا ت اﻟﻮﻇﺎﺋﻒ ﻫﺬه ﻧﻔ ﺲ اﻹﺧﺮاج ﻣ‬
‫ﺳﻴﻜﻮن ﻟﻜﻞ ﻣﻦ اﺳ‬

‫ﺘﺨﺪام‬
‫ﺘ ﻲﺗﺮﻳﺪ ﻫﺎ ‪ ،‬ﻓﻤﺎ ﻋﻠﻴﻚﺳﻮى اﺳ‬
‫ﺘﺮﻓﻴﻦ اﻟﻤﺨﺮﺟﺎ ت اﻟ‬
‫ﺘﺪﻋ ﻲ اﻟﻤﺤ‬
‫ﺘﻚﺗ ﺴ‬
‫ﺘﺨﺪﻣﻪ‪ .‬ﻃﺎﻟﻤﺎ أن وﻇﻴﻔ‬ ‫ﻻﻳﻬﻢ ﺣ ًﻘﺎ أﺳﻠﻮ ب اﻻ‬
‫ﺗﺼﺎل اﻟﺬيﺗ ﺴ‬
‫اﻟﻨﻤﻂ اﻟﺬيﺗﺠﺪه أﺳﻬﻞ ﻓ ﻲ اﻟﻔﻬﻢ‪.‬‬

‫ﺗﺠﻨ ﺐ أﺧﻄﺎء اﻟﺤﺠ ﺔ‬


‫ﺑﻘ ﺔ ﻋﻨﺪﻣﺎ‬
‫ﺘﻄﺎ‬
‫ﺑﻘ ﺔ‪.‬ﺗﺤﺪ ث اﻟﻮﺳﻴﻄﺎ ت ﻏﻴﺮ اﻟﻤ‬
‫ﺘﻄﺎ‬
‫ﺘﻔﺎﺟﺄ إذا واﺟﻬ ﺖ أﺧﻄﺎء ﺣﻮل اﻟﻮﺳﻴﻄﺎ ت ﻏﻴﺮ اﻟﻤ‬
‫ﺘﺨﺪام اﻟﺪوال ‪ ،‬ﻻﺗ‬
‫ﺒﺪأ ﻓ ﻲ اﺳ‬
‫ﻋﻨﺪﻣﺎﺗ‬
‫ﺑﻌﻤﻠﻬﺎ‪.‬‬‫ﺘﺎﺟﻪ اﻟﻮﻇﻴﻔ ﺔ ﻟﻠﻘﻴﺎم‬
‫ﺜﺮ ﻣﻤﺎﺗﺤ‬
‫ﺗﻘﺪم وﺳﻴﻄﺎ ت أﻗﻞ أو أﻛ‬

‫ﺑﺪون وﺳﻴﻄﺎ ت‪:‬‬


‫ﺘﺪﻋﺎء )( ‪description_pet‬‬
‫ﺜﺎل ‪ ،‬إﻟﻴﻚ ﻣﺎﻳﺤﺪ ث إذا ﺣﺎوﻟﻨﺎ اﺳ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬

‫‪)def description_pet‬ﻧﻮع_اﻟﺤﻴﻮان ‪ ،‬اﺳﻢ_اﻟﺤﻴﻮاﻧﺎ ت اﻷﻟﻴﻔ ﺔ(‪:‬‬


‫"""ﻋﺮض ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﺣﻴﻮان أﻟﻴﻒ‪"" ".‬‬
‫"‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻟﺪي ‪+‬ﻧﻮع_ﺣﻴﻮان )" ‪+".‬‬
‫ﻃ‬
‫"‬
‫‪)print‬اﺳﻢ ‪ ""My" + animal_type +‬ﻫﻮ‬ ‫)"‪+ pet_name.title () + ".‬‬

‫)( ‪description_pet‬‬

‫ﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎ ت ﻣﻔﻘﻮدة ﻣﻦ اﻟﻮﻇﻴﻔ ﺔ‬‫ﺗﺪرك ‪Python‬أن‬


‫ﺒﻊ أن‪:‬‬
‫ﺘ‬‫ﺘ‬‫ﺒﺮﻧﺎ اﻟ‬
‫‪call ،‬وﻳﺨ‬

‫‪)Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪u File "pets.py" ، :‬اﻟ ﺴﻄﺮ ‪6 ،‬ﻓ ﻲ >‪<module‬‬

‫ﺘﺎن‪'animal_ :‬‬
‫ﺑ‬‫ﺘﺎن اﻟﻤﻄﻠﻮ‬
‫ﺘﺎن اﻟﻤﻮﺿﻌﻴ‬
‫)( ‪v description_pet () w TypeError: description_pet‬ﻳﻨﻘﺺ اﻟﻮﺳﻴﻄ‬

‫ﺘ ﺐ "و" اﺳﻢ ﺣﻴﻮان أﻟﻴﻒ "‬


‫اﻛ‬

‫ﺑﺬﻟﻚ‬‫ﺒﻊ ﻋﻦ ﻣﻜﺎن اﻟﻤﺸﻜﻠ ﺔ ‪ ،‬ﻣﻤﺎﻳ ﺴﻤﺢ ﻟﻨﺎ‬


‫ﺘ‬‫ﺘ‬‫ﺒﺮﻧﺎ اﻟ‬
‫ﻓ ﻲ ‪u‬ﻳﺨ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﻓ ﻲ ‪v‬‬
‫اﻧﻈﺮ إﱃ اﻟﻮراء وﻻﺣﻆ ﺣﺪو ث ﺧﻄﺄ ﻣﺎ ﻓ ﻲ اﺳ‬
‫ﺘﻪ‪ .‬ﻓ ﻲ ث ‪traceback‬‬
‫ﺘﻤﻜﻦ ﻣﻦ رؤﻳ‬
‫ﺘﻰ ﻧ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ اﻟﻤﺨﺎﻟﻒ ﺣ‬
‫ﺑ ﺔ اﺳ‬
‫ﺘﺎ‬
‫ﺗﻢ ﻛ‬

‫ﺜﺎﻣﻦ‬
‫‪140‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺗﻘﺮﻳﺮ أﺳﻤﺎء اﻟﻮﺳﺎﺋﻂ اﻟﻤﻔﻘﻮدة‪ .‬إذا ﻛﺎﻧ ﺖ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻓ ﻲ ﻣﻠﻒ ﻣﻨﻔﺼﻞ ‪ ،‬ﻓﻤﻦ‬
‫ﺘﻘﺪ إﱃ وﺳﻴﻄﻴﻦ و‬
‫ﺒﺮﻧﺎ أن اﻟﻤﻜﺎﻟﻤ ﺔﺗﻔ‬
‫ﻳﺨ‬
‫ﺘﺢ ﻫﺬا اﻟﻤﻠﻒ وﻗﺮاءة اﻟﻜﻮد اﻟﻮﻇﻴﻔ ﻲ‪.‬‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ دون اﻟﺤﺎﺟ ﺔ إﱃ ﻓ‬‫ﺑ ﺔ اﻟﻤﻜﺎﻟﻤ ﺔ‬
‫ﺘﺎ‬
‫ﺘﻤﻞ أن ﻧﻌﻴﺪ ﻛ‬
‫اﻟﻤﺤ‬

‫ﺒﺮﻧﺎ‬
‫ﺗﺨ‬‫ﺗﻌﺪ ‪Python‬ﻣﻔﻴﺪةﻷﻧﻬﺎﺗﻘﺮأ رﻣﺰ اﻟﻮﻇﻴﻔ ﺔ ﻟﻨﺎ و‬
‫ﺑﺬﻟﻚ ‪،‬‬‫ﺘﻐﻴﺮا ت واﻟﻮﻇﺎﺋﻒ‪ .‬إذا ﻗﻤ ﺖ‬
‫ﺘﺎج إﱃﺗﻘﺪﻳﻤﻬﺎ‪ .‬ﻫﺬا داﻓﻊ آﺧﺮ ﻹﻋﻄﺎء أﺳﻤﺎء وﺻﻔﻴ ﺔ ﻟﻠﻤ‬
‫ﺘ ﻲ ﻧﺤ‬
‫أﺳﻤﺎء اﻟﺤﺠﺞ اﻟ‬
‫ﺑﻚ‪.‬‬‫ﺘﺨﺪم اﻟﺮﻣﺰ اﻟﺨﺎص‬
‫ﺜﺮ ﻓﺎﺋﺪة ﻟﻚ وﻷي ﺷﺨﺺ آﺧﺮ ﻗﺪﻳ ﺴ‬
‫ﺘﻜﻮن رﺳﺎﺋﻞ ﺧﻄﺄ ‪Python‬أﻛ‬
‫ﻓﺴ‬

‫ﺑﻘ ﺔ‬
‫ﺛﻞﻳﻤﻜﻦ أنﻳ ﺴﺎﻋﺪك ﻓ ﻲ ﻣﻄﺎ‬
‫ﺒﻊ ﻣﻤﺎ‬
‫ﺘ‬‫ﺒﻴ ًﺮا ﺟﺪًا ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت ‪ ،‬ﻓﻴﺠ ﺐ أنﺗﺤﺼﻞ ﻋﲆﺗ‬
‫إذا ﻗﺪﻣ ﺖ ﻋﺪدًا ﻛ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻣﻊﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ‪.‬‬‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‬
‫اﺳ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻬﺎ ﻋﲆ اﻟﻘﻤﻴﺺ‪.‬‬
‫ﺒﺎﻋ‬
‫ﺘ ﻲﻳﺠ ﺐ ﻃ‬
‫ﺒﻞ اﻟﺤﺠﻢ وﻧﺺ اﻟﺮﺳﺎﻟ ﺔ اﻟ‬
‫ﺗﻘ‬‫ﺘ ﺐ وﻇﻴﻔ ﺔﺗ ﺴﻤﻰ )( ‪make_shirt‬‬
‫‪8-3. T-Shirt:‬اﻛ‬
‫ﺒﻮﻋ ﺔ ﻋﻠﻴﻪ‪.‬‬
‫ﺒﻊ اﻟﻮﻇﻴﻔ ﺔ ﺟﻤﻠ ﺔﺗﻠﺨﺺ ﺣﺠﻢ اﻟﻘﻤﻴﺺ واﻟﺮﺳﺎﻟ ﺔ اﻟﻤﻄ‬
‫ﻳﺠ ﺐ أنﺗﻄ‬

‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺑﺎﺳ‬‫ﺘﺨﺪام اﻟﺤﺠﺞ اﻟﻤﻮﺿﻌﻴ ﺔ ﻟﻌﻤﻞ ﻗﻤﻴﺺ‪ .‬ﻗﻢ‬
‫ﺑﺎﺳ‬‫ﺑﺎﻟﻮﻇﻴﻔ ﺔ ﻣﺮة واﺣﺪة‬‫ﺗﺼﻞ‬
‫ا‬
‫ﺘﺨﺪام وﺳﻴﻄﺎ ت اﻟﻜﻠﻤﺎ ت اﻷﺳﺎﺳﻴ ﺔ‪.‬‬
‫ﺑﺎﺳ‬‫ﺛﺎﻧﻴ ﺔ‬‫ﻣﺮة‬

‫ﺑﺮﺳﺎﻟ ﺔ‬‫ﺘﺮاﺿ ﻲ‬
‫ﺑﺸﻜﻞ اﻓ‬‫ﺒﻴﺮة‬
‫ﺑﺤﻴ ﺚﺗﻜﻮن اﻟﻘﻤﺼﺎن ﻛ‬
‫ﺘﻌﺪﻳﻞ وﻇﻴﻔ ﺔ )( ‪make_shirt‬‬
‫ﺑ‬‫ﺒﻴﺮة‪ :‬ﻗﻢ‬
‫‪8-4.‬اﻟﻘﻤﺼﺎن اﻟﻜ‬
‫ﺑﻘﻴﺎس‬‫وﻗﻤﻴﺼﺎ ﻣﻦ أي ﺣﺠﻢ‬
‫ً‬ ‫ﺘﺮاﺿﻴ ﺔ‬
‫ﺑﺮﺳﺎﻟ ﺔ اﻓ‬‫ﺘﻮﺳﻂ اﻟﺤﺠﻢ‬
‫وﻗﻤﻴﺼﺎ ﻣ‬
‫ً‬ ‫ﺒﻴ ﺮًا‬
‫ﻗﻤﻴﺼﺎ ﻛ‬
‫ً‬ ‫ﺜﻮن"‪ .‬اﺻﻨﻊ‬
‫ﺑﺎﻳ‬‫ﺗﻘﻮل "أﺣ ﺐ‬
‫ﺘﻠﻒ‬
‫ﻣﺨ‬
‫رﺳﺎﻟ ﺔ‪.‬‬

‫ﺒﻊ اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺑﻠﺪ ﻫﺎ‪.‬ﻳﺠ ﺐ أنﺗﻄ‬
‫ﺒﻞ اﺳﻢ اﻟﻤﺪﻳﻨ ﺔ و‬
‫ﺘ ﻲﺗﻘ‬
‫ﺘ ﺐ داﻟ ﺔﺗ ﺴﻤﻰ )( ‪description_city‬واﻟ‬
‫‪8-5.‬اﻟﻤﺪن‪ :‬اﻛ‬
‫ﺘﺮاﺿﻴ ﺔ‪.‬‬
‫ﺒﻠﺪ ﻗﻴﻤ ﺔ اﻓ‬
‫ﺑﺎﻟ‬‫ﺜﻞ أنﺗﻜﻮن رﻳﻜﻴﺎﻓﻴﻚ ﻓ ﻲ أﻳ ﺴﻠﻨﺪا‪ .‬اﻣﻨﺢ اﻟﻤﻌﻠﻤ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺑ ﺴﻴﻄ ﺔ ‪ ،‬ﻣ‬‫ﺟﻤﻠ ﺔ‬

‫ﺘﺮاﺿ ﻲ‪.‬‬
‫ﺒﻠﺪ اﻻﻓ‬
‫ﺘﻠﻔ ﺔ ‪ ،‬واﺣﺪة ﻣﻨﻬﺎ ﻋﲆ اﻷﻗﻞ ﻟﻴ ﺴ ﺖ ﻓ ﻲ اﻟ‬
‫ﺜﻼ ث ﻣﺪن ﻣﺨ‬
‫ﺘﻚ ﻟ‬
‫ﺑﻮﻇﻴﻔ‬‫ﺗﺼﻞ‬
‫ا‬

‫إرﺟﺎع اﻟﻘﻴﻢ‬

‫ﺛﻢ إرﺟﺎع ﻗﻴﻤ ﺔ‬‫ﺒﻴﺎﻧﺎ ت‬


‫ﺑﻌﺾ اﻟ‬‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ‪،‬ﻳﻤﻜﻨﻪ ﻣﻌﺎﻟﺠ ﺔ‬ ‫ً‬
‫ﺒﺎﺷﺮة‪.‬‬
‫ﺋﻤﺎ أنﺗﻌﺮض اﻟﻮﻇﻴﻔ ﺔ إﺧﺮاﺟﻬﺎ ﻣ‬
‫ﻟﻴ ﺲ ﻣﻦ اﻟﻀﺮوري دا ً‬
‫ﺗﺮﺳﻠﻬﺎ‬
‫ﺑﺎﻟﻘﻴﻤ ﺔ اﻟﻤﺮﺟﻌ ﺔ‪.‬ﺗﺄﺧﺬﺗﻌﻠﻴﻤ ﺔ اﻹرﺟﺎع ﻗﻴﻤ ﺔ ﻣﻦ داﺧﻞ داﻟ ﺔ و‬‫ﺘ ﻲﺗﺮﺟﻌﻬﺎ اﻟﺪاﻟ ﺔ‬ ‫أو ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻘﻴﻢ‪.‬ﺗ ﺴﻤﻰ اﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﻣﺮة أﺧﺮى إﱃ اﻟ ﺴﻄﺮ اﻟﺬيﻳ ﺴﻤﻰ اﻟﺪاﻟ ﺔ‪.‬‬

‫ﺑﺮﻧﺎﻣﺠﻚ‪.‬‬‫ﺒ ﺴﻂ ﻫﻴﻜﻞ‬
‫ﺘ ﻲﻳﻤﻜﻦ أنﺗ‬
‫ﺒﺮﻧﺎﻣﺠﻚ إﱃ وﻇﺎﺋﻒ ‪ ،‬واﻟ‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻌﻤﻞ اﻟﺸﺎق ﻟ‬
‫ﺑﻨﻘﻞ اﻟﻜ‬‫ﺗ ﺴﻤﺢ ﻟﻚ ﻗﻴﻢ اﻹرﺟﺎع‬

‫اﻟﻤﻬﺎم‬ ‫‪141‬‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺴﻴﻄ ﺔ‬‫إرﺟﺎع ﻗﻴﻤ ﺔ‬


‫ﺑﺪﻗ ﺔ‪:‬‬‫ُﺮﺟﻊ اﻻﺳﻢ اﻟﻜﺎﻣﻞ اﻟﻤﻨ ﺴﻖ‬
‫ﺗ‬
‫ﻟﻨﻠﻖ ﻧﻈﺮة ﻋﲆ داﻟ ﺔﺗﺄﺧﺬ اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ‪ ،‬و‬
‫ِ‬

‫‪formatted_ u def get_formatted_name (first_name، last_name):‬‬


‫‪name.py‬‬ ‫ﺘﻨ ﺴﻴﻖ أﻧﻴﻖ‪"" ".‬‬
‫ﺑ‬‫"""إرﺟﺎع اﻻﺳﻢ اﻟﻜﺎﻣﻞ‬
‫"‬ ‫"‬
‫‪v full_name = first_name + + last_name‬‬
‫‪w‬إرﺟﺎع )( ‪full_name.title‬‬

‫‪x‬ﻣﻮﺳﻴﻘ ﻲ )'‪= get_formatted_name ('jimi'، 'hendrix‬‬


‫ﺒﺎﻋ ﺔ )ﻣﻮﺳﻴﻘ ﻲ(‬
‫ﻃ‬

‫إنﺗﻌﺮﻳﻒ )( ‪get_formatted_name‬ﻳﺄﺧﺬ ﻛﻤﻌﻠﻤﺎ ت ﻣﻦ اﻷول واﻷﺧﻴﺮ‬


‫ﺘﻢﺗﺤﻮﻳﻞ‬
‫ﺘﻴﺠ ﺔ ﻓ ﻲ ‪full_name v.‬ﻳ‬
‫ﺗﺨﺰن اﻟﻨ‬
‫ﺑﻴﻨﻬﻤﺎ ‪ ،‬و‬‫ﺗﻀﻴﻒ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺑﻴﻦ ﻫﺬﻳﻦ اﻻﺳﻤﻴﻦ ‪ ،‬و‬‫اﺳﻢ ش‪.‬ﺗﺠﻤﻊ اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘﺪﻋﺎء ﻓ ﻲ ‪w.‬‬
‫ﺘﻢ إرﺟﺎﻋﻬﺎ إﱃﺳﻄﺮ اﻻﺳ‬
‫ﺛﻢﻳ‬‫ﻗﻴﻤ ﺔ ‪full_name‬إﱃ ﺣﺎﻟ ﺔ اﻟﻌﻨﻮان ‪،‬‬

‫ﺘﻐﻴﺮ ﺣﻴ ﺚﻳﻤﻜﻦﺗﺨﺰﻳﻦ اﻟﻘﻴﻤ ﺔ اﻟﻤﺮﺟﻌ ﺔ‪ .‬ﻓ ﻲ ﻫﺬه‬


‫ﺑﺤﺎﺟ ﺔ إﱃﺗﻮﻓﻴﺮ ﻣ‬‫ُﺮﺟﻊ ﻗﻴﻤ ﺔ ‪ ،‬ﻓﺄﻧ ﺖ‬
‫ﺘﺪﻋ ﻲ داﻟ ﺔﺗ‬
‫ﻋﻨﺪﻣﺎﺗ ﺴ‬
‫ﺑﺸﻜﻞ أﻧﻴﻖ اﺳﻢ ﻏﻴﺮ ﻻﻣﻊ ﻣﻜﻮن ﻣﻦ‬‫ُﻈﻬﺮ اﻹﺧﺮاج‬
‫ﺘﻐﻴﺮ اﻟﻤﻮﺳﻴﻘ ﻲ ﻋﻨﺪ ‪x.‬ﻳ‬
‫اﻟﻤﻌﺎدة ﻓ ﻲ اﻟﻤ‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟﻘﻴﻤ ﺔ ُ‬
‫اﻟﺤﺎﻟ ﺔ ‪،‬ﻳ‬
‫أﺟﺰاء ﻣﻦ اﺳﻢ اﻟﺸﺨﺺ‪:‬‬

‫ﺟﻴﻤ ﻲ ﻫﻨﺪرﻳﻜ ﺲ‬

‫ﺑﺪﻗ ﺔ ﻋﻨﺪﻣﺎ‬‫ﺜﻴ ﺮًا ﻣﻦ اﻟﻌﻤﻞ ﻟﻠﺤﺼﻮل ﻋﲆ اﺳﻢ ﻣﻨ ﺴﻖ‬


‫ﺒﺪو ﻫﺬا ﻛ‬
‫ﻗﺪﻳ‬
‫ﺘﻮ‪:‬‬
‫ﺘ ﺐ ﻟﻠ‬
‫ﻛﺎن ﻣﻦ اﻟﻤﻤﻜﻦ أن ﻧﻜ‬

‫ﺒﺎﻋ ﺔ )"ﺟﻴﻤ ﻲ ﻫﻨﺪرﻳﻜ ﺲ"(‬


‫ﻃ‬

‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ ‪،‬‬‫ﺘﺎج إﱃﺗﺨﺰﻳﻦ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺳﻤﺎء اﻷوﱃ واﻷﺧﻴﺮة‬


‫ﺒﻴﺮﻳﺤ‬
‫ﺑﺮﻧﺎﻣﺞ ﻛ‬‫وﻟﻜﻦ ﻋﻨﺪﻣﺎﺗﻔﻜﺮ ﻓ ﻲ اﻟﻌﻤﻞ ﻣﻊ‬
‫ﺜﻞ )( ‪get_formatted_name‬‬
‫ﻓﺈن وﻇﺎﺋﻒ ﻣ‬
‫ﺘﻰ أرد ت ﻋﺮض اﻻﺳﻢ‬
‫ﺘﺪﻋﺎء ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻣ‬
‫ﺛﻢ اﺳ‬‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ‬‫ﺘﺨﺰﻳﻦ اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ‬
‫ﺑ‬‫ﺒﺢ ﻣﻔﻴﺪة ﺟﺪا‪.‬ﺗﻘﻮم‬
‫ﺗﺼ‬
‫اﻟﻜﺎﻣﻞ‪.‬‬

‫ﺘﻴﺎرﻳ ﺔ‬
‫ﺟﻌﻞ اﻟﺤﺠ ﺔ اﺧ‬
‫ﺘﻴﺎر‬
‫ﺘﺨﺪﻣﻮن اﻟﻮﻇﻴﻔ ﺔ ﻣﻦ اﺧ‬
‫ﺘﻤﻜﻦ اﻷﺷﺨﺎص اﻟﺬﻳﻦﻳ ﺴ‬
‫ﺘﻰﻳ‬
‫ﺘﻴﺎرﻳ ﺔ ﺣ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﻳﻜﻮن ﻣﻦ اﻟﻤﻨﻄﻘ ﻲ ﺟﻌﻞ اﻟﺤﺠ ﺔ اﺧ‬‫ﻓﻲ‬
‫ﺘﻴﺎرﻳ ﺔ‪.‬‬
‫ﺘﺮاﺿﻴ ﺔ ﻟﺠﻌﻞ اﻟﻮﺳﻴﻄ ﺔ اﺧ‬
‫ﺘﺨﺪام اﻟﻘﻴﻢ اﻻﻓ‬
‫ﺗﻘﺪﻳﻢ ﻣﻌﻠﻮﻣﺎ ت إﺿﺎﻓﻴ ﺔ ﻓﻘﻂ إذا أرادوا ذﻟﻚ‪.‬ﻳﻤﻜﻨﻚ اﺳ‬

‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ أ ً‬


‫ﻳﻀﺎ‪.‬‬ ‫ﺘﺮض أﻧﻨﺎ ﻧﺮﻳﺪﺗﻮﺳﻴﻊ )( ‪get_formatted_name‬ﻟﻠ‬
‫ﺜﺎل ‪ ،‬ﻟﻨﻔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﻀﻤﻴﻦ اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ ﻛﻤﺎﻳﻠ ﻲ‪:‬‬
‫ﺒﺪو اﻟﻤﺤﺎوﻟ ﺔ اﻷوﱃ ﻟ‬
‫ﻗﺪﺗ‬

‫‪def get_formatted_name (First_name، middle_name، last_name):‬‬


‫ﺘﻨ ﺴﻴﻖ أﻧﻴﻖ‪"" ".‬‬
‫ﺑ‬‫"""إرﺟﺎع اﻻﺳﻢ اﻟﻜﺎﻣﻞ‬
‫"‬ ‫"‬ ‫"‬ ‫"‬
‫ﺘﺼﻒ ‪+‬إرﺟﺎع )( ‪full_name.title‬‬
‫ﺳﻢ_اﻟﻤﻨ‬
‫ﻷﺧﻴﺮ‬
‫ﺳﻢ_ا‪+ +‬ا‬
‫ﻷول‬
‫‪+‬ا‬
‫= ‪full_name‬اﻻﺳﻢ_ا‬

‫)'‪musician = get_formatted_name ('john'، 'lee'، 'hooker‬‬


‫ﺒﺎﻋ ﺔ )ﻣﻮﺳﻴﻘ ﻲ(‬
‫ﻃ‬

‫ﺜﺎﻣﻦ‬
‫‪142‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺒﻨ ﻲ‬
‫ﺛﻢﺗ‬‫ﺛ ﺔ ﻣﻦ اﻻﺳﻢ‬
‫ﺜﻼ‬‫ﺗﻌﻤﻞ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻋﻨﺪ إﻋﻄﺎء اﻻﺳﻢ اﻷول واﻷوﺳﻂ واﻷﺧﻴﺮ‪.‬ﺗﺄﺧﺬ اﻟﻮﻇﻴﻔ ﺔ اﻷﺟﺰاء اﻟ‬
‫ﺗﺤﻮل اﻻﺳﻢ اﻟﻜﺎﻣﻞ إﱃ ﺣﺎﻟ ﺔ اﻟﻌﻨﻮان‪:‬‬
‫ﺘﻀﺎء و‬
‫ﺳﻠ ﺴﻠ ﺔ ﻣﻨﻬﺎ‪.‬ﺗﻀﻴﻒ اﻟﻮﻇﻴﻔ ﺔ ﻣ ﺴﺎﻓﺎ ت ﻋﻨﺪ اﻻﻗ‬

‫ﺟﻮن ﻟ ﻲ ﻫﻮﻛﺮ‬

‫ﺗﺼﺎل‬
‫ﺑ ﺔ إذا ﺣﺎوﻟ ﺖ اﻻ‬
‫ﺘﻮ‬‫ﺋﻤﺎ إﱃ اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ ‪ ،‬وﻟﻦﺗﻌﻤﻞ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻛﻤﺎ ﻫ ﻲ ﻣﻜ‬
‫وﻟﻜﻦ ﻟﻴ ﺴ ﺖ ﻫﻨﺎك ﺣﺎﺟ ﺔ دا ً‬
‫ﺑﺎﻻﺳﻢ اﻷول واﻻﺳﻢ اﻷﺧﻴﺮ ﻓﻘﻂ‪.‬‬‫ﺑﻬﺎ‬
‫ﺗﺠﺎ ﻫﻞ اﻟﻮﺳﻴﻄ ﺔ ﻣﺎ ﻟﻢ‬
‫ﺘﺮاﺿﻴ ﺔ ﻓﺎرﻏ ﺔ و‬
‫ﺘﻴﺎرﻳًﺎ ‪،‬ﻳﻤﻜﻨﻨﺎ إﻋﻄﺎء اﻟﻮﺳﻴﻄ ﺔ ‪middle_name‬ﻗﻴﻤ ﺔ اﻓ‬
‫ﻟﺠﻌﻞ اﻻﺳﻢ اﻷوﺳﻂ اﺧ‬
‫ﺘﺮاﺿﻴ ﺔ ﻟﻼﺳﻢ‬
‫ﺘﻌﻴﻴﻦ اﻟﻘﻴﻤ ﺔ اﻻﻓ‬
‫ﺑ‬‫ﺑﺪون اﺳﻢ وﺳﻂ ‪ ،‬ﻗﻤﻨﺎ‬‫ﺘﺨﺪم ﻗﻴﻤ ﺔ‪ .‬ﻟﺠﻌﻞ )( ‪get_formatted_name‬ﻳﻌﻤﻞ‬
‫ﻳﻘﺪم اﻟﻤ ﺴ‬
‫اﻷوﺳﻂ إﱃﺳﻠ ﺴﻠ ﺔ ﻓﺎرﻏ ﺔ وﻧﻘﻠﻬﺎ إﱃ ﻧﻬﺎﻳ ﺔ ﻗﺎﺋﻤ ﺔ اﻟﻤﻌﻠﻤﺎ ت‪:‬‬

‫‪u def get_formatted_name (first_name، last_name، middle_name = ''):‬‬


‫ﺘﻨ ﺴﻴﻖ أﻧﻴﻖ‪"" ".‬‬
‫ﺑ‬‫"""إرﺟﺎع اﻻﺳﻢ اﻟﻜﺎﻣﻞ‬
‫‪v‬إذا ﻛﺎن ‪Middle_name:‬‬
‫"‬ ‫"‬ ‫"‬ ‫"‬
‫‪+full_name‬آﺧﺮ‪:‬‬
‫‪mid_name‬‬‫‪= first_name‬‬
‫‪+‬‬ ‫‪+w‬‬
‫‪+‬اﺳﻢ_اﻷﺧﻴﺮ‬

‫"‬ ‫"‬
‫= ‪full_name‬اﻻﺳﻢ_اﻷول ‪+‬‬ ‫‪+‬اﺳﻢ_اﻷﺧﻴﺮ‬
‫اﻟﻌﻮدة )( ‪full_name.title‬‬

‫ﻣﻮﺳﻴﻘ ﻲ )'‪= get_formatted_name ('jimi'، 'hendrix‬‬


‫ﺒﺎﻋ ﺔ )ﻣﻮﺳﻴﻘ ﻲ(‬
‫ﻃ‬

‫‪x‬ﻣﻮﺳﻴﻘ ﻲ )'‪= get_formatted_name ('john'، 'hooker'، 'lee‬‬


‫ﺒﺎﻋ ﺔ )ﻣﻮﺳﻴﻘ ﻲ(‬
‫ﻃ‬

‫ﺘﻢﺳﺮد ﻫﺬه‬
‫ﺋﻤﺎ ‪،‬ﻳ‬
‫ﺛ ﺔ أﺟﺰاء ﻣﻤﻜﻨ ﺔ‪ .‬ﻧﻈ ﺮًا ﻟﻮﺟﻮد اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ دا ً‬
‫ﺛﻼ‬‫ﺑﻨﺎء اﻻﺳﻢ ﻣﻦ‬‫ﺜﺎل ‪،‬ﺗﻢ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘﺮاﺿﻴ ﺔ ﻫ ﻲ‬
‫ﺘﻪ اﻻﻓ‬
‫ﺘﻌﺮﻳﻒ ‪ ،‬وﻗﻴﻤ‬ ‫اﻟﻤﻌﻠﻤﺎ ت أوﻻ ً ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ‪ .‬اﻻﺳﻢ اﻷوﺳﻂ اﺧ‬
‫ﺘﻴﺎري ‪ ،‬ﻟﺬﻟﻚﺗﻢ إدراﺟﻪ أﺧﻴ ﺮًا ﻓ ﻲ اﻟ‬
‫ﺳﻠ ﺴﻠ ﺔ ﻓﺎرﻏ ﺔ ‪u.‬‬

‫ﺘﺤﻘﻖ ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن اﻻﺳﻢ اﻷوﺳﻂ ﻣﻮﺟﻮدًا‬


‫ﻓ ﻲ ﺟ ﺴﻢ اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬ﻧ‬
‫ﺘﺎح‪.‬ﻳﻔ ﺴﺮ ‪Python‬اﻟ ﺴﻼﺳﻞ ﻏﻴﺮ اﻟﻔﺎرﻏ ﺔ ﻋﲆ أﻧﻬﺎ ‪True ،‬ﻟﺬﻟﻚ إذا ﻛﺎن ‪middle_name‬‬
‫ﻣ‬
‫ﺘﻢ دﻣﺞ‬
‫ﺘﻮﺳﻂ ‪،‬ﻳ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ‪v.‬إذاﺗﻢﺗﻮﻓﻴﺮ اﺳﻢ ﻣ‬
‫ّﻴﻢ إﱃ ‪True‬إذا ﻛﺎﻧ ﺖ وﺳﻴﻄ ﺔ اﻻﺳﻢ اﻷوﺳﻂ ﻣﻮﺟﻮدة ﻓ ﻲ اﺳ‬
‫ﻳﻘ‬
‫ﺗﻪ إﱃﺳﻄﺮ‬
‫ﺑﻌﺪ ذﻟﻚﺗﻐﻴﻴﺮ ﻫﺬا اﻻﺳﻢ إﱃ ﺣﺎﻟ ﺔ اﻟﻌﻨﻮان وإﻋﺎد‬‫ﺘﻢ‬
‫ﺘﺸﻜﻴﻞ اﺳﻢ ﻛﺎﻣﻞ‪.‬ﻳ‬
‫ﺘﻮﺳﻄ ﺔ واﻷﺧﻴﺮة ﻟ‬
‫اﻷﺳﻤﺎء اﻷوﱃ واﻟﻤ‬
‫ﺘﻪ‪.‬‬
‫ﺒﺎﻋ‬
‫ﺘﻐﻴﺮ وﻃ‬
‫ﺘﻢﺗﺨﺰﻳﻨﻪ ﻓ ﻲ اﻟﻤﻮﺳﻴﻘ ﻲ اﻟﻤ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ﺣﻴ ﺚﻳ‬
‫اﺳ‬

‫ﺒﺎر ‪if‬واﻵﺧﺮ‬
‫ﺘ‬‫ﺘﻢﺗﻮﻓﻴﺮ اﺳﻢ وﺳﻂ ‪ ،‬ﻓﺈن اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻔﺎرﻏ ﺔﺗﻔﺸﻞ ﻓ ﻲ اﺧ‬
‫إذا ﻟﻢﻳ‬
‫ﺗﺼﺎل ﺣﻴ ﺚ‬
‫ﺘﻢ إرﺟﺎع اﻻﺳﻢ اﻟﻤﻨ ﺴﻖ إﱃﺳﻄﺮ اﻻ‬
‫ﺘﻜﻮن اﻻﺳﻢ اﻟﻜﺎﻣﻞ ﻣﻦ اﻻﺳﻢ اﻷول واﻻﺳﻢ اﻷﺧﻴﺮ ﻓﻘﻂ ‪ ،‬وﻳ‬
‫ﺘﻠ ﺔﻳﺪﻳﺮ ث‪.‬ﻳ‬
‫ﻛ‬
‫ﺘﻢﺗﺨﺰﻳﻨﻪ ﻓ ﻲ اﻟﻤﻮﺳﻴﻘ ﻲ‬
‫ﻳ‬
‫ﺒﻊ‪.‬‬
‫وﻃ‬
‫ﺒﺎﺷﺮ‪ .‬ﻟﻮ‬
‫ﺑﺎﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ﻫﻮ أﻣﺮ ﻣ‬‫ﺘﺪﻋﺎء ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‬
‫اﺳ‬
‫ﺘ ﻲﺗﻢ‬
‫ﺘﺄﻛﺪ ﻣﻦ أن اﻻﺳﻢ اﻷوﺳﻂ ﻫﻮ اﻟﻮﺳﻴﻄ ﺔ اﻷﺧﻴﺮة اﻟ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ اﻟ‬
‫ﺳﻄﺎ ‪ ،‬وﻣﻊ ذﻟﻚ ‪،‬ﻳ‬
‫ﺘﻮ ً‬
‫ﺳﻤﺎ ﻣ‬
‫ﺘﺨﺪم ا ً‬
‫ﻧﺤﻦ ﻧ ﺴ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪x.‬‬‫ﺑﻖ اﻟﻮﺳﻴﻄﺎ ت اﻟﻤﻮﺿﻌﻴ ﺔ‬
‫ﺘﻄﺎ‬
‫ﺗﻤﺮﻳﺮ ﻫﺎ ‪ ،‬ﻟﺬا ﻓﺈن ‪Python‬ﺳ‬

‫وﻇﺎﺋﻒ ‪143‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻨﺎ ﻟﻸﺷﺨﺎص اﻟﺬﻳﻦ ﻟﺪﻳﻬﻢ ً‬


‫أوﻻ ﻓﻘﻂ‬ ‫ﺗﻌﻤﻞ ﻫﺬه اﻟﻨ ﺴﺨ ﺔ اﻟﻤﻌﺪﻟ ﺔ ﻣﻦ وﻇﻴﻔ‬
‫ﺘﻮﺳﻂ‪:‬‬ ‫واﺳﻢ اﻟﻌﺎﺋﻠ ﺔ ‪ ،‬و ﻫﻮﻳﻌﻤﻞ أ ً‬
‫ﻳﻀﺎ ﻟﻸﺷﺨﺎص اﻟﺬﻳﻦ ﻟﺪﻳﻬﻢ اﺳﻢ ﻣ‬

‫ﺟﻴﻤ ﻲ ﻫﻨﺪرﻳﻜ ﺲ‬
‫ﺟﻮن ﻟ ﻲ ﻫﻮﻛﺮ‬

‫ﺘﺪﻋﺎءا ت‬
‫ﺑﺎﺳ‬‫ﺘﺨﺪام ﻣﻊ اﻟ ﺴﻤﺎح‬
‫ﺑﻤﻌﺎﻟﺠ ﺔ ﻣﺠﻤﻮﻋ ﺔ واﺳﻌ ﺔ ﻣﻦ ﺣﺎﻻ ت اﻻﺳ‬‫ﺘﻴﺎرﻳ ﺔ ﻟﻠﻮﻇﺎﺋﻒ‬
‫ﺗ ﺴﻤﺢ اﻟﻘﻴﻢ اﻻﺧ‬
‫ﺑ ﺴﻂ ﻣﺎﻳﻤﻜﻦ‪.‬‬
‫ﺑﺄ‬‫اﻟﻮﻇﺎﺋﻒ‬

‫إﻋﺎدة اﻟﻘﺎﻣﻮس‬
‫ﺜﻞ اﻟﻘﻮاﺋﻢ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻌﻘﺪة ﻣ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ اﻟﻤﺰﻳﺪ ﻣﻦ ﻫﻴﺎﻛﻞ اﻟ‬‫ﺘﺎﺟﻬﺎ إﻟﻴﻬﺎ ‪،‬‬
‫ﺘ ﻲﺗﺤ‬
‫ﻳﻤﻜﻦ ﻟﻠﺪاﻟ ﺔ أنﺗﺮﺟﻊ أي ﻧﻮع ﻣﻦ اﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﺷﺨﺼﺎ‪:‬‬
‫ً‬ ‫ﺜﻞ‬
‫ﺳﺎﻳﻤ‬
‫ﺗﻌﻴﺪ ﻗﺎﻣﻮ ً‬
‫ﺜﺎل ‪،‬ﺗﺄﺧﺬ وﻇﻴﻔ ﺔ ‪follow ing‬أﺟﺰا ًء ﻣﻦ اﻻﺳﻢ و‬
‫ﺒﻴﻞ اﻟﻤ‬
‫واﻟﻘﻮاﻣﻴ ﺲ‪ .‬ﻋﲆﺳ‬

‫‪person.py‬‬ ‫‪)def build_person‬اﻻﺳﻢ_اﻷول ‪ ،‬اﻻﺳﻢ_اﻷﺧﻴﺮ(‪:‬‬


‫"""إﻋﺎدة ﻗﺎﻣﻮس ﻣﻌﻠﻮﻣﺎ ت ﻋﻦ ﺷﺨﺺ ﻣﺎ‪"" ".‬‬
‫}‪u person = {'first': first_name، 'last': last_name‬‬
‫‪v‬ﻋﻮدة اﻟﺸﺨﺺ‬

‫ﻣﻮﺳﻴﻘ ﻲ )'‪= build_person ('jimi'، 'hendrix‬‬


‫ﺒﺎﻋ ﺔ ث )ﻣﻮﺳﻴﻘ ﻲ(‬
‫ﻃ‬

‫ﺘﻢﺗﺨﺰﻳﻦ ﻗﻴﻤ ﺔ‬
‫ﺗﺤﺰم ﻫﺬه اﻟﻘﻴﻢ ﻓ ﻲ ﻗﺎﻣﻮس ﻋﲆ ‪u.‬ﻳ‬
‫ﺗﺄﺧﺬ اﻟﻮﻇﻴﻔ ﺔ )( ‪build_person‬اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ‪ ،‬و‬
‫ﺜﻞ‬
‫ﺘﻢ إرﺟﺎع اﻟﻘﺎﻣﻮس اﻟﻜﺎﻣﻞ اﻟﺬيﻳﻤ‬
‫ﺘﺎح ‪"last".‬ﻳ‬
‫ﺑﺎﻟﻤﻔ‬
‫ﺘﻢﺗﺨﺰﻳﻦ ﻗﻴﻤ ﺔ ‪last_name‬‬
‫ﺘﺎح ‪"first" ،‬وﻳ‬
‫ﺑﺎﻟﻤﻔ‬
‫‪first_name‬‬
‫ﺒﺎﻋ ﺔ اﻟﻘﻴﻤ ﺔ اﻟﻤﻌﺎدة ﻓ ﻲ ‪w‬ﻣﻊ اﻟﺠﺰأﻳﻦ اﻷﺻﻠﻴﻴﻦ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻨﺼﻴ ﺔ اﻟﻤﺨﺰﻧ ﺔ اﻵن ﻓ ﻲ ﻗﺎﻣﻮس‪:‬‬
‫ﺘﻢ ﻃ‬
‫ﺗ‬‫اﻟﺸﺨﺺ ﻓ ﻲ ‪v.‬‬

‫}'‪{'first': 'jimi'، 'last': 'hendrix‬‬

‫ﺘﻴﺢ ﻟﻚ اﻟﻌﻤﻞ ﻣﻊ‬


‫ﺣﺎﺗ‬
‫ﺜﺮ وﺿﻮ ً‬
‫ﺑﻴﺎﻧﺎ ت أﻛ‬‫ﺑﻨﻴ ﺔ‬‫ﺗﻀﻌﻬﺎ ﻓ ﻲ‬
‫ﺑ ﺴﻴﻄ ﺔ و‬‫ﺘﻮﻋ ﺐ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻣﻌﻠﻮﻣﺎ ت ﻧﺼﻴ ﺔ‬
‫ﺗﺴ‬
‫ﺘﻢ اﻵنﺗﺼﻨﻴﻒ اﻟ ﺴﻼﺳﻞ "‪"jimi‬و "‪"hendrix‬ﻋﲆ أﻧﻬﺎ اﻻﺳﻢ اﻷول واﻻﺳﻢ اﻷﺧﻴﺮ‪.‬‬
‫ﺘﻬﺎ‪.‬ﻳ‬
‫ﺒﺎﻋ‬
‫ﺑﺨﻼف ﻣﺠﺮد ﻃ‬‫اﻟﻤﻌﻠﻮﻣﺎ ت‬
‫ﺜﻞ اﻻﺳﻢ اﻷوﺳﻂ أو اﻟﻌﻤﺮ أو اﻟﻮﻇﻴﻔ ﺔ أو أي ﻣﻌﻠﻮﻣﺎ ت‬
‫ﺘﻴﺎرﻳ ﺔ ﻣ‬
‫ﺒﻮل اﻟﻘﻴﻢ اﻻﺧ‬
‫ﺑ ﺴﻬﻮﻟ ﺔﺗﻮﺳﻴﻊ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻟﻘ‬‫ﻳﻤﻜﻨﻚ‬
‫ﺘﺨﺰﻳﻦ ﻋﻤﺮ اﻟﺸﺨﺺ أ ً‬
‫ﻳﻀﺎ‪:‬‬ ‫ﺑ‬‫ﺘﺎﻟ ﻲ‬
‫ﺘﻐﻴﻴﺮ اﻟ‬
‫ﺜﺎل ‪،‬ﻳ ﺴﻤﺢ ﻟﻚ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫أﺧﺮىﺗﺮﻳﺪﺗﺨﺰﻳﻨﻬﺎ ﻋﻦ ﺷﺨﺺ ﻣﺎ‪ .‬ﻋﲆﺳ‬

‫‪)def build_person‬اﻻﺳﻢ_اﻷول ‪ ،‬اﺳﻢ_اﻷﺧﻴﺮ ‪ ،‬اﻟﻌﻤﺮ ‪= "):‬‬


‫"""إﻋﺎدة ﻗﺎﻣﻮس ﻣﻌﻠﻮﻣﺎ ت ﻋﻦ ﺷﺨﺺ ﻣﺎ‪"" ".‬‬
‫}‪person = {'first': first_name، 'last': last_name‬‬
‫إذا ﻛﺎن اﻟﻌﻤﺮ‪:‬‬
‫اﻟﺸﺨﺺ = ]'‪['age‬اﻟﻌﻤﺮ‬
‫ﻋﻮدة اﻟﺸﺨﺺ‬

‫اﻟﻤﻮﺳﻴﻘ ﻲ ‪")= build_person‬ﺟﻴﻤ ﻲ" ‪ " ،‬ﻫﻨﺪرﻳﻜ ﺲ" ‪ ،‬اﻟﻌﻤﺮ )‪= 27‬‬
‫ﺒﺎﻋ ﺔ )ﻣﻮﺳﻴﻘ ﻲ(‬
‫ﻃ‬

‫‪144‬اﻟﻔﺼﻞ ‪8‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺮاﺿﻴ ﺔ ﻓﺎرﻏ ﺔ ﻟﻠﻤﻌﺎﻣﻞ‪ .‬إذاﺗﻀﻤﻦ‬


‫ﺘﻴﺎرﻳ ﺔ إﱃﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ وﻧﺨﺼﺺ ﻗﻴﻤ ﺔ اﻓ‬
‫ﻧﻀﻴﻒ ﻋﻤ ًﺮا ﺟﺪﻳﺪًا ﻟﻠﻤﻌﻠﻤ ﺔ اﻻﺧ‬
‫ﺋﻤﺎ اﺳﻢ اﻟﺸﺨﺺ ‪ ،‬وﻟﻜﻦ‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟﻘﻴﻤ ﺔ ﻓ ﻲ اﻟﻘﺎﻣﻮس‪.‬ﺗﺨﺰن ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ دا ً‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ﻗﻴﻤ ﺔ ﻟﻬﺬه اﻟﻤﻌﻠﻤ ﺔ ‪،‬ﻳ‬
‫اﺳ‬
‫ﺘﺨﺰﻳﻦ أي ﻣﻌﻠﻮﻣﺎ ت أﺧﺮىﺗﺮﻳﺪ ﻫﺎ ﻋﻦ اﻟﺸﺨﺺ‪.‬‬ ‫ﻳﻤﻜﻦ أ ً‬
‫ﻳﻀﺎﺗﻌﺪﻳﻠﻬﺎ ﻟ‬

‫ﺘﺨﺪام وﻇﻴﻔ ﺔ ﻣﻊ ﺣﻠﻘ ﺔ اﻟﻮﻗ ﺖ‬


‫اﺳ‬
‫ﺘﺨﺪم وﻇﻴﻔ ﺔ )(‬
‫ﺜﺎل ‪ ،‬دﻋﻨﺎ ﻧ ﺴ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻰ اﻵن‪ .‬ﻋﲆﺳ‬
‫ﺘﻬﺎ ﺣ‬
‫ﺘ ﻲﺗﻌﻠﻤ‬
‫ﺘﺨﺪام اﻟﻮﻇﺎﺋﻒ ﻣﻊ ﺟﻤﻴﻊ ﻫﻴﺎﻛﻞ ‪Python‬اﻟ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺑﻌﺾ اﻟﻮﻗ ﺖ‬‫‪get_formatted_name‬ﻣﻊ‬
‫ﺘﺨﺪام أﺳﻤﺎﺋﻬﻢ اﻷوﱃ واﻷﺧﻴﺮة‪:‬‬
‫ﺑﺎﺳ‬‫ﺘﺤﻴ ﺔ اﻷﺷﺨﺎص‬
‫ﺜﺮ‪ .‬إﻟﻴﻚ اﻟﻤﺤﺎوﻟ ﺔ اﻷوﱃ ﻟ‬
‫ﺑﺸﻜﻞ رﺳﻤ ﻲ أﻛ‬‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺘﺤﻴ ﺔ اﻟﻤ ﺴ‬
‫ﺣﻠﻘ ﺔ ﻟ‬

‫ﺗﺮﺣﻴ ﺐ‬ ‫‪def get_formatted_name (first_name، last_name):‬‬


‫ﺘﻨ ﺴﻴﻖ أﻧﻴﻖ‪"" ".‬‬
‫ﺑ‬‫"""إرﺟﺎع اﻻﺳﻢ اﻟﻜﺎﻣﻞ‬
‫"‬ ‫"‬
‫= ‪full_name‬اﻻﺳﻢ_اﻷول ‪+ +‬اﻻﺳﻢ_اﻷﺧﻴﺮ‬
‫اﻟﻌﻮدة )( ‪full_name.title‬‬

‫‪ #‬ﻫﺬه ﺣﻠﻘ ﺔ ﻻ ﻧﻬﺎﺋﻴ ﺔ!‬


‫اﺣﻴﺎﻧﺎ ﺻﺤﻴﺢ‪:‬‬

‫‪u print ("\ n‬ﻣﻦ ﻓﻀﻠﻚ ﻗﻞ ﻟ ﻲ اﺳﻤﻚ‪(":‬‬


‫‪")f_name = input‬اﻻﺳﻢ اﻷول‪(":‬‬
‫‪")l_name = input‬اﺳﻢ اﻟﻌﺎﺋﻠ ﺔ‪(":‬‬

‫)‪formatted_name = get_formatted_name (f_name ، l_name‬‬


‫ﺒﺎ ‪+ formatted_name + "!") "،‬‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻣﺮﺣ ً‬
‫ﻃ‬

‫ﺘﻀﻤﻦ اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ‪.‬ﺗﻄﻠ ﺐ‬


‫ﺴﻴﻄﺎ ﻣﻦ )( ‪get_formatted_name‬ﻻﻳ‬
‫ً‬ ‫ﺑ‬‫ﺘﺨﺪم إﺻﺪا ًرا‬
‫ﺜﺎل ‪ ،‬ﻧ ﺴ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ ‪u.‬‬‫ﺑﺈدﺧﺎل اﺳﻤﻪ اﻷول واﺳﻢ اﻟﻌﺎﺋﻠ ﺔ‬‫ﺘﺨﺪم إدﺧﺎل اﺳﻤﻪ ‪ ،‬وﻧﻄﺎﻟ ﺐ‬
‫ﺣﻠﻘ ﺔ ‪while‬ﻣﻦ اﻟﻤ ﺴ‬

‫ﺘﺪﺧﻴﻦ ﻋﻨﺪﻣﺎﺗﻄﻠ ﺐ‬
‫ﻟﻜﻦ ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ واﺣﺪة ﻓ ﻲ ﺣﻠﻘ ﺔ ‪while :‬ﻟﻢ ﻧﺤﺪد ﺷﺮط إﻧﻬﺎء‪ .‬أﻳﻦﺗﻀﻊ ﺷﺮط اﻹﻗﻼع ﻋﻦ اﻟ‬
‫ﺒﺔ‬
‫ﺑﺄﺳﺮع ﻣﺎﻳﻤﻜﻦ ‪ ،‬ﻟﺬﻟﻚﻳﺠ ﺐ أنﺗﻘﺪم ﻛﻞ ﻣﻄﺎﻟ‬‫ﺘﺨﺪم ﻗﺎد ًرا ﻋﲆ اﻹﻗﻼع‬
‫ﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟﻤﺪﺧﻼ ت؟ ﻧﺮﻳﺪ أنﻳﻜﻮن اﻟﻤ ﺴ‬
‫ﺒﺎﺷﺮة إﱃ اﻷﻣﺎم ﻟﻠﺨﺮوج ﻣﻦ اﻟﺤﻠﻘ ﺔ ﻓ ﻲ أي ﻣﻦ اﻟﻤﻮﺟﻬﻴﻦ‪:‬‬
‫ﻃﺮﻳﻘ ﺔ ﻟﻺﻗﻼع‪.‬ﺗﻘﺪمﺗﻌﻠﻴﻤ ﺔ ‪break‬ﻃﺮﻳﻘ ﺔ ﻣ‬

‫‪def get_formatted_name (first_name، last_name):‬‬


‫ﺘﻨ ﺴﻴﻖ أﻧﻴﻖ‪"" ".‬‬
‫ﺑ‬‫"""إرﺟﺎع اﻻﺳﻢ اﻟﻜﺎﻣﻞ‬
‫"‬ ‫"‬
‫= ‪full_name‬اﻻﺳﻢ_اﻷول ‪+ +‬اﻻﺳﻢ_اﻷﺧﻴﺮ‬
‫اﻟﻌﻮدة )( ‪full_name.title‬‬

‫اﺣﻴﺎﻧﺎ ﺻﺤﻴﺢ‪:‬‬

‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻣﻦ ﻓﻀﻠﻚ ﻗﻞ ﻟ ﻲ اﺳﻤﻚ‪(":‬‬


‫ﻃ‬
‫ﺒﺎﻋ ﺔ )")أدﺧﻞ '‪'q‬ﻓ ﻲ أي وﻗ ﺖ ﻟﻺﻧﻬﺎء("(‬
‫ﻃ‬

‫‪")f_name = input‬اﻻﺳﻢ اﻷول‪(":‬‬


‫إذا ﻛﺎن ‪f_name == 'q':‬‬
‫ﺘﺮاﺣ ﺔ‬
‫اﺳ‬

‫‪")l_name = input‬اﺳﻢ اﻟﻌﺎﺋﻠ ﺔ‪(":‬‬


‫إذا ﻛﺎن ‪l_name == 'q':‬‬
‫ﺘﺮاﺣ ﺔ‬
‫اﺳ‬

‫اﻟﻤﻬﺎم‬ ‫‪145‬‬
‫‪Machine Translated by Google‬‬

‫)‪formatted_name = get_formatted_name (f_name ، l_name‬‬


‫ﺒﺎ ‪+ formatted_name + "!") "،‬‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻣﺮﺣ ً‬
‫ﻃ‬

‫ﺑﺈدﺧﺎل ﻗﻴﻤ ﺔ إﻧﻬﺎء ﻋﻨﺪ أي ﻣﻮﺟﻪ‪.‬‬‫ﺘﺨﺪم‬


‫ﺛﻢ ﻧﺨﺮج ﻣﻦ اﻟﺤﻠﻘ ﺔ إذا ﻗﺎم اﻟﻤ ﺴ‬‫ﺑﻜﻴﻔﻴ ﺔ اﻹﻗﻼع ‪،‬‬‫ﺘﺨﺪم‬
‫ﺒﺮ اﻟﻤ ﺴ‬
‫ﻧﻀﻴﻒ رﺳﺎﻟ ﺔﺗﺨ‬

‫ﺘﻰﻳﺪﺧﻞ أﺣﺪ ﻫﻢ ‪"q".‬‬


‫ﺒﺮﻧﺎﻣﺞ ﻓ ﻲﺗﺤﻴ ﺔ اﻟﻨﺎس ﺣ‬
‫ﺘﻤﺮ اﻟ‬
‫اﻵنﺳﻴ ﺴ‬
‫ﻷي ﻣﻦ اﻻﺳﻤﻴﻦ‪:‬‬

‫ﻣﻦ ﻓﻀﻠﻚ ﻗﻞ ﻟ ﻲ اﺳﻤﻚ‪) :‬أدﺧﻞ "‪"q‬ﻓ ﻲ أي وﻗ ﺖ‬


‫ﻟﻺﻧﻬﺎء(‬
‫اﻻﺳﻢ اﻷول‪ :‬إﻳﺮﻳﻚ‬

‫اﻻﺳﻢ اﻷﺧﻴﺮ‪matthes :‬‬

‫ﺗﻴ ﺲ!‬
‫ﺒﺎ ‪ ،‬إرﻳﻚ ﻣﺎ‬
‫ﻣﺮﺣ ً‬

‫ﻣﻦ ﻓﻀﻠﻚ ﻗﻞ ﻟ ﻲ اﺳﻤﻚ‪) :‬أدﺧﻞ "‪"q‬ﻓ ﻲ أي وﻗ ﺖ‬


‫ﻟﻺﻧﻬﺎء(‬
‫اﻻﺳﻢ اﻷول‪q :‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ُﺮﺟﻊ اﻟﺪاﻟ ﺔﺳﻠ ﺴﻠ ﺔ ﻧﺼﻴ ﺔ‬


‫ﺑﻠﺪ ﻫﺎ‪.‬ﻳﺠ ﺐ أنﺗ‬
‫ﺗﺄﺧﺬ اﺳﻢ ﻣﺪﻳﻨ ﺔ و‬
‫ﺘ ﺐ داﻟ ﺔﺗ ﺴﻤﻰ )( ‪city_country‬‬
‫‪8-6.‬أﺳﻤﺎء اﻟﻤﺪن‪ :‬اﻛ‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﻣﻨ ﺴﻘ ﺔ ﻛﺎﻟ‬

‫ﺘﻴﺎﺟﻮ ﺷﻴﻠ ﻲ"‬


‫"ﺳﺎﻧ‬

‫ﺒﻊ اﻟﻘﻴﻤ ﺔ‬
‫ﺒﻠﺪ ‪ ،‬واﻃ‬
‫ﺛ ﺔ أزواج ﻋﲆ اﻷﻗﻞ ﻣﻦ اﻟﻤﺪﻳﻨ ﺔ واﻟ‬
‫ﺛﻼ‬‫ﺘﻚ ﻣﻊ‬
‫ﺑﻮﻇﻴﻔ‬‫ﺗﺼﻞ‬
‫ا‬
‫ﻋﺎد‪.‬‬

‫ﺒﻮﻣﺎ ﻣﻮﺳﻴﻘ ًﻴﺎ‪.‬ﻳﺠ ﺐ أنﺗﺄﺧﺬ اﻟﻮﻇﻴﻔ ﺔ‬


‫ﺳﺎﻳﺼﻒ أﻟ ً‬
‫ﺗﻨﺸ ﺊ ﻗﺎﻣﻮ ً‬
‫ﺘ ﺐ وﻇﻴﻔ ﺔﺗ ﺴﻤﻰ )( ‪make_album‬‬
‫ﺒﻮم‪ :‬اﻛ‬
‫‪8-7.‬اﻷﻟ‬
‫ﺘﺨﺪم اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘﻴﻦ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪ .‬اﺳ‬
‫ﺗﻴﻦ اﻟﻘﻄﻌ‬
‫ﺘﻮي ﻋﲆ ﻫﺎ‬
‫ﺳﺎﻳﺤ‬
‫ﺒﻮم ‪ ،‬وﻳﺠ ﺐ أنﺗﻌﻴﺪ ﻗﺎﻣﻮ ً‬
‫اﺳﻢ اﻟﻔﻨﺎن وﻋﻨﻮان اﻷﻟ‬
‫ﺒﻮم‬
‫ﺒﻊ ﻛﻞ ﻗﻴﻤ ﺔ إرﺟﺎع ﻹﻇﻬﺎر أن اﻟﻘﻮاﻣﻴ ﺲﺗﺨﺰن ﻣﻌﻠﻮﻣﺎ ت اﻷﻟ‬
‫ﺘﻠﻔ ﺔ‪ .‬اﻃ‬
‫ﺒﻮﻣﺎ ت ﻣﺨ‬
‫ﺜﻞ أﻟ‬
‫ﺛ ﺔ ﻗﻮاﻣﻴ ﺲﺗﻤ‬
‫ﺛﻼ‬‫ﻟﻌﻤﻞ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬

‫ﺒﻮم‪ .‬إذاﺗﻀﻤﻦﺳﻄﺮ‬
‫ﺘﺨﺰﻳﻦ ﻋﺪد اﻟﻤ ﺴﺎرا ت ﻓ ﻲ اﻷﻟ‬
‫ﺑ‬‫ﺗ ﺴﻤﺢ ﻟﻚ‬
‫ﺘﻴﺎرﻳ ﺔ إﱃ )( ‪make_album‬‬
‫أﺿﻒ ﻣﻌﻠﻤ ﺔ اﺧ‬
‫ﺑﺈﺟﺮاء ﻣﻜﺎﻟﻤ ﺔ وﻇﻴﻔ ﺔ ﺟﺪﻳﺪة واﺣﺪة‬‫ﺒﻮم‪ .‬ﻗﻢ‬
‫ﺘﺪﻋﺎء ﻗﻴﻤ ﺔ ﻟﻌﺪد اﻟﻤ ﺴﺎرا ت ‪ ،‬أﺿﻒ ﻫﺬه اﻟﻘﻴﻤ ﺔ إﱃ ﻗﺎﻣﻮس اﻷﻟ‬
‫اﻻﺳ‬
‫ﺒﻮم‪.‬‬
‫ﺘﻀﻤﻦ ﻋﺪد اﻟﻤ ﺴﺎرا ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻷﻟ‬
‫ﻋﲆ اﻷﻗﻞﺗ‬

‫ﺑﻌﺾ اﻟﻮﻗ ﺖ‬‫ﺘﺐ‬


‫ﺘﻤﺮﻳﻦ ‪8-7.‬اﻛ‬
‫ﺒﺮﻧﺎﻣﺠﻚ ﻣﻦ اﻟ‬
‫ﺑ‬‫ﺑﺪأ‬
‫ﺘﺨﺪم‪ :‬ا‬
‫ﺒﻮﻣﺎ ت اﻟﻤ ﺴ‬
‫‪8-8.‬أﻟ‬
‫ﺗﺼﻞ‬
‫ﺑﻤﺠﺮد ﺣﺼﻮﻟﻚ ﻋﲆ ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت ‪ ،‬ا‬‫ﺒﻮم‪.‬‬
‫ﺑﺈدﺧﺎل اﺳﻢ اﻟﻔﻨﺎن وﻋﻨﻮان اﻷﻟ‬‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺣﻠﻘ ﺔﺗ ﺴﻤﺢ ﻟﻠﻤ ﺴ‬
‫ﺒﻊ اﻟﻘﺎﻣﻮس اﻟﺬيﺗﻢ إﻧﺸﺎؤه‪.‬ﺗﺄﻛﺪ ﻣﻦﺗﻀﻤﻴﻦ ﻗﻴﻤ ﺔ ‪quit‬ﻓ ﻲ‬
‫ﺘﺨﺪم واﻃ‬
‫ﺑﺈدﺧﺎل اﻟﻤ ﺴ‬
‫ﺑـ )( ‪make_album‬‬
‫ﺣﻠﻘ ﺔ ‪while .‬‬

‫ﺜﺎﻣﻦ‬
‫‪146‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺗﻤﺮﻳﺮ ﻗﺎﺋﻤ ﺔ‬
‫ﺜﻞ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا ‪ ،‬ﻣ‬
‫ﺑﺄﺳﻤﺎء أو أرﻗﺎم أو ﻛﺎﺋﻨﺎ ت أﻛ‬‫ﺒﺎ أﻧﻪ ﻣﻦ اﻟﻤﻔﻴﺪﺗﻤﺮﻳﺮ ﻗﺎﺋﻤ ﺔ إﱃ داﻟ ﺔ ‪،‬ﺳﻮاء ﻛﺎﻧ ﺖ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﺠﺪ ﻏﺎﻟ ً‬
‫ﺳ‬
‫ﺘﺨﺪم اﻟﺪوال‬
‫ﺘﻮﻳﺎ ت اﻟﻘﺎﺋﻤ ﺔ‪ .‬دﻋﻨﺎ ﻧ ﺴ‬
‫ﺒﺎﺷﺮ إﱃ ﻣﺤ‬
‫اﻟﻘﻮاﻣﻴ ﺲ‪ .‬ﻋﻨﺪﺗﻤﺮﻳﺮ ﻗﺎﺋﻤ ﺔ إﱃ وﻇﻴﻔ ﺔ ‪،‬ﺗﺤﺼﻞ اﻟﻮﻇﻴﻔ ﺔ ﻋﲆ وﺻﻮل ﻣ‬
‫ﺜﺮ ﻛﻔﺎءة‪.‬‬
‫ﻟﺠﻌﻞ اﻟﻌﻤﻞ ﻣﻊ اﻟﻘﻮاﺋﻢ أﻛ‬

‫ﺑﺎﻷﺳﻤﺎء إﱃ داﻟ ﺔ‬‫ﺘﺎﻟ ﻲ ﻗﺎﺋﻤ ﺔ‬


‫ﺜﺎل اﻟ‬
‫ُﺮﺳﻞ اﻟﻤ‬
‫ﺒﺎﻋ ﺔﺗﺤﻴ ﺔ ﻟﻜﻞ ﻣﻨﻬﻢ‪.‬ﻳ‬
‫ﺘﺨﺪﻣﻴﻦ وﻧﺮﻳﺪ ﻃ‬
‫ﺑﺎﻟﻤ ﺴ‬‫ﺘﺮض أن ﻟﺪﻳﻨﺎ ﻗﺎﺋﻤ ﺔ‬
‫ﻟﻨﻔ‬
‫ُﺤﻴ ﻲ ﻛﻞ ﺷﺨﺺ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ ﺣﺪة‪:‬‬
‫ُﺪﻋﻰ ‪()reet_users ،‬‬
‫ﺗ‬ ‫ﺗ‬

‫أﺣﻴﻴﻴﻴﻴﻴﻴ ﻲ‬ ‫‪)defreet_users‬أﺳﻤﺎء(‪:‬‬
‫ﺘﺨﺪم ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪"" ".‬‬
‫ﺑ ﺴﻴﻄ ﺔ ﻟﻜﻞ ﻣ ﺴ‬‫ﺒﻊﺗﺤﻴ ﺔ‬
‫"""اﻃ‬
‫ﺑﺎﻷﺳﻤﺎء‪:‬‬‫ﻋﻦ اﻻﺳﻢ‬

‫ﺒﺎ ‪+ name.title () + "!" "،‬‬


‫= ‪"msg‬ﻣﺮﺣ ً‬
‫ﺒﺎﻋ ﺔ )‪(msg‬‬
‫ﻃ‬

‫]'‪u usernames = ['hannah'، 'ty'، 'Margot‬‬


‫ﺘﺨﺪﻣﻴﻦ(‬
‫ﺘﺨﺪﻣﻴﻦ )أﺳﻤﺎء اﻟﻤ ﺴ‬
‫ﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬

‫ﺑﻬﺎ‬‫ﺘ ﻲﻳﺨﺰن‬
‫ﺑﺎﻷﺳﻤﺎء اﻟ‬‫ﺘﻮﻗﻊ ﻗﺎﺋﻤ ﺔ‬
‫ﺘﺨﺪﻣﻴﻦ ﻟﺬﻟﻚﻳ‬
‫ﺗﺤﻴ ﺔ ﻣ ﺴ‬
‫ﻧﺤﺪد )(‬
‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺑﺎﻟﻤ ﺴ‬‫ﺘﺨﺪم‪ .‬ﻧﺤﺪد ﻓ ﻲ ‪u‬ﻗﺎﺋﻤ ﺔ‬
‫ﺒﻊﺗﺤﻴ ﺔ ﻟﻜﻞ ﻣ ﺴ‬
‫ﺗﻄ‬‫ﺘﻠﻘﺎ ﻫﺎ و‬
‫ﺘ ﻲﺗ‬
‫ﺒﺮ اﻟﻘﺎﺋﻤ ﺔ اﻟ‬
‫ﺘﻜﺮر اﻟﻮﻇﻴﻔ ﺔ ﻋ‬
‫أﺳﻤﺎء اﻟﻤﻌﻠﻤﺎ ت ‪.‬ﺗ‬
‫ﺘﻨﺎ‪:‬‬
‫ﺘﺪﻋﺎء وﻇﻴﻔ‬
‫ﺘﺨﺪﻣﻴﻦ إﱃ ‪()reet_users‬ﻓ ﻲ اﺳ‬
‫ﺛﻢ ﻧﻤﺮر ﻗﺎﺋﻤ ﺔ أﺳﻤﺎء اﻟﻤ ﺴ‬

‫ﺒﺎ ﻫﺎﻧﺎ!‬
‫ﻣﺮﺣ‬
‫ﺒﺎﺗﺎي!‬‫ﻣﺮﺣ‬
‫ﺒﺎﻳﺎ ﻣﺎرﻏﻮ!‬
‫ﻣﺮﺣ‬

‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ﻓ ﻲ أي وﻗ ﺖﺗﺮﻳﺪ ﻓﻴﻪ‬


‫ﺘﺨﺪمﺗﺤﻴ ﺔ ﺷﺨﺼﻴ ﺔ ‪ ،‬وﻳﻤﻜﻨﻚ اﺳ‬
‫ﺗﺞ اﻟﺬي أردﻧﺎه‪.‬ﻳﺮى ﻛﻞ ﻣ ﺴ‬
‫ﻫﺬا ﻫﻮ اﻟﻨﺎ‬
‫ﺘﺨﺪﻣﻴﻦ‪.‬‬
‫ﺗﺤﻴ ﺔ ﻣﺠﻤﻮﻋ ﺔ ﻣﻌﻴﻨ ﺔ ﻣﻦ اﻟﻤ ﺴ‬

‫ﺗﻌﺪﻳﻞ ﻗﺎﺋﻤ ﺔ ﻓ ﻲ وﻇﻴﻔ ﺔ‬


‫ﺘﻢ إﺟﺮاؤ ﻫﺎ ﻋﲆ اﻟﻘﺎﺋﻤ ﺔ داﺧﻞ ﺟ ﺴﻢ اﻟﻮﻇﻴﻔ ﺔ‬
‫ﻋﻨﺪﺗﻤﺮﻳﺮ ﻗﺎﺋﻤ ﺔ إﱃ وﻇﻴﻔ ﺔ ‪،‬ﻳﻤﻜﻦ ﻟﻠﻮﻇﻴﻔ ﺔﺗﻌﺪﻳﻞ اﻟﻘﺎﺋﻤ ﺔ‪ .‬أيﺗﻐﻴﻴﺮا تﻳ‬
‫ﺒﻴﺎﻧﺎ ت‪.‬‬
‫ﺒﻴﺮة ﻣﻦ اﻟ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻛﻤﻴﺎ ت ﻛ‬
‫ﺘﻰ ﻋﻨﺪ اﻟ‬
‫ﺑﻜﻔﺎءة ﺣ‬‫ﺑﺎﻟﻌﻤﻞ‬‫ﺗﻜﻮن داﺋﻤ ﺔ ‪ ،‬ﻣﻤﺎﻳ ﺴﻤﺢ ﻟﻚ‬

‫ﺘﻢ‬
‫ﺘﺨﺪﻣﻮن‪.‬ﻳ‬
‫ﺘ ﻲﻳﺮﺳﻠﻬﺎ اﻟﻤ ﺴ‬
‫ﺘﺼﺎﻣﻴﻢ اﻟ‬
‫ﺑﻌﺎد ﻣﻦ اﻟ‬
‫ﺛﻴ ﺔ اﻷ‬
‫ﺛﻼ‬‫ﺒﻮﻋ ﺔ‬
‫ﺑﺈﻧﺸﺎء ﻧﻤﺎذج ﻣﻄ‬‫ﺒﺎرك ﺷﺮﻛ ﺔﺗﻘﻮم‬
‫ﺘ‬‫ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺑﺬﻟﻚ‬‫ﺘﺎﻟ ﻲ‬
‫ﺘﻢ ﻧﻘﻠﻬﺎ إﱃ ﻗﺎﺋﻤ ﺔ ﻣﻨﻔﺼﻠ ﺔ‪.‬ﻳﻘﻮم اﻟﻜﻮد اﻟ‬
‫ﺘﻬﺎﻳ‬
‫ﺒﺎﻋ‬
‫ﺑﻌﺪ ﻃ‬
‫ﺘﻬﺎ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪ ،‬و‬
‫ﺒﺎﻋ‬
‫ﺘﺎج إﱃ ﻃ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﺼﻤﻴﻤﺎ ت اﻟ‬
‫ﺗﺨﺰﻳﻦ اﻟ‬
‫ﺘﺨﺪام اﻟﻮﻇﺎﺋﻒ‪:‬‬
‫ﺑﺪون اﺳ‬

‫‪Models.py‬‬ ‫ﺘﻬﺎ‪.‬‬
‫ﺒﺎﻋ‬
‫ﺘﺎج إﱃ ﻃ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﺼﻤﻴﻤﺎ ت اﻟ‬
‫ﺒﻌﺾ اﻟ‬
‫ﺑ‬‫ﺑﺪأ‬
‫‪#‬ا‬
‫_‪printing‬‬ ‫]'‪uninted_designs = ['iphone case'، 'robot pendant'، 'dodecahedron‬‬
‫ﺘﻤﻠ ﺔ ][ =‬
‫ﻧﻤﺎذج ﻣﻜ‬

‫ﺒﻘﻰ ﻣﻨﻪ ﺷ ﻲء‪.‬‬ ‫ﺘ‬‫ﺘﻰ ﻻﻳ‬ ‫ﺒﺎﻋ ﺔ ﻛﻞﺗﺼﻤﻴﻢ ‪ ،‬ﺣ‬ ‫‪#‬ﻣﺤﺎﻛﺎة ﻃ‬


‫ﺒﺎﻋ ﺔ‪.‬‬
‫ﺑﻌﺪ اﻟﻄ‬‫ﺘﻤﻠ ﺔ‬‫‪#‬اﻧﻘﻞ ﻛﻞﺗﺼﻤﻴﻢ إﱃ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﺒﻮﻋ ﺔ‪:‬‬
‫ﺘﺼﻤﻴﻤﺎ ت ﻏﻴﺮ اﻟﻤﻄ‬ ‫ﺛﻨﺎء اﻟ‬
‫أ‬
‫)( ‪current_design = uninted_designs.pop‬‬

‫اﻟﻤﻬﺎم‬ ‫‪147‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺼﻤﻴﻢ‪.‬‬ ‫ﺑﻌﺎد ﻣﻦ اﻟ‬


‫ﺛﻴ ﺔ اﻷ‬
‫ﺛﻼ‬‫ﺒﺎﻋ ﺔ‬‫‪#‬ﻣﺤﺎﻛﺎة إﻧﺸﺎء ﻃ‬
‫"‬
‫ﺒﺎﻋ ﺔ‪+ current_design) :‬‬ ‫ﺒﺎﻋ ﺔ )"ﻧﻤﻮذج اﻟﻄ‬
‫ﻃ‬
‫)‪Complete_models.append (current_design‬‬

‫ﺘﻤﻠ ﺔ‪.‬‬
‫‪#‬ﻋﺮض ﺟﻤﻴﻊ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﺘﺎﻟﻴ ﺔ‪(":‬‬
‫ﺒﺎﻋ ﺔ اﻟﻨﻤﺎذج اﻟ‬
‫ﺗﻤ ﺖ ﻃ‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬‬
‫ﻃ‬
‫ﺘﻤﻠ ﺔ‪:‬‬
‫ﺘﻤﻞ ﻓ ﻲ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﻟﻠﻨﻤﻮذج اﻟﻤﻜ‬
‫ﺘﻤﻞ(‬
‫ﺒﺎﻋ ﺔ )ﻧﻤﻮذج_ﻣﻜ‬
‫ﻃ‬

‫ﺘﻢ ﻧﻘﻞ ﻛﻞ‬


‫ﺘ ﻲﺳﻴ‬
‫ﺘﻤﻠ ﺔ اﻟ‬
‫ﺘﻬﺎ وﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔﺗ ﺴﻤﻰ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﺒﺎﻋ‬
‫ﺘ ﻲﻳﺠ ﺐ ﻃ‬
‫ﺘﺼﺎﻣﻴﻢ اﻟ‬
‫ﺑﻘﺎﺋﻤ ﺔ ﻣﻦ اﻟ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺒﺪأ ﻫﺬا اﻟ‬
‫ﻳ‬
‫ﺬ‬
‫ﺒﻮﻋ ﺔ ‪ ،‬ﻓﺤﻴﻨﺌ ٍ‬
‫ﺘﺼﻤﻴﻤﺎ ت ﻓ ﻲﺗﺼﻤﻴﻤﺎ ت ﻏﻴﺮ ﻣﻄ‬
‫ﺑﻘﻴ ﺖ اﻟ‬‫ﺘﻪ‪ .‬ﻃﺎﻟﻤﺎ‬
‫ﺒﺎﻋ‬
‫ﺑﻌﺪ ﻃ‬‫ﺗﺼﻤﻴﻢ إﻟﻴﻬﺎ‬

‫ﺘﺼﻤﻴﻢ اﻟﺤﺎﻟ ﻲ ‪ ،‬وﻋﺮض رﺳﺎﻟ ﺔ‬


‫ﺗﺨﺰﻳﻨﻪ ﻓ ﻲ اﻟ‬
‫ﺒﺎﻋ ﺔ ﻛﻞﺗﺼﻤﻴﻢ ﻋﻦ ﻃﺮﻳﻖ إزاﻟ ﺔﺗﺼﻤﻴﻢ ﻣﻦ ﻧﻬﺎﻳ ﺔ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬و‬
‫ﺣﻠﻘ ﺔﺗﺤﺎﻛ ﻲ ﻃ‬
‫ﺘﻬﺎءﺗﺸﻐﻴﻞ اﻟﺤﻠﻘ ﺔ ‪،‬‬
‫ﺘﻤﻠ ﺔ‪ .‬ﻋﻨﺪ اﻧ‬
‫ﺘﺼﻤﻴﻢ إﱃ ﻗﺎﺋﻤ ﺔ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﺛﻢﻳﻀﻴﻒ اﻟ‬‫ﺘﻪ‪.‬‬
‫ﺒﺎﻋ‬
‫ﺘﻢ ﻃ‬
‫ﺑﺄنﺗﺼﻤﻴﻢ اﻹﻳﺠﺎر اﻟﺤﺎﻟ ﻲﻳ‬‫ﺗﻔﻴﺪ‬
‫ﺘﻬﺎ‪:‬‬
‫ﺒﺎﻋ‬
‫ﺘ ﻲﺗﻤ ﺖ ﻃ‬
‫ﺘﺼﺎﻣﻴﻢ اﻟ‬
‫ﺑﺎﻟ‬‫ﺘﻢ ﻋﺮض ﻗﺎﺋﻤ ﺔ‬
‫ﻳ‬

‫ﺒﺎﻋ ﺔ‪dodecahedron :‬‬


‫ﻧﻤﻮذج اﻟﻄ‬
‫ﺑﻮ ت‬
‫ﺒﺎﻋ ﺔ‪ :‬ﻗﻼدة اﻟﺮو‬
‫ﻧﻤﻮذج اﻟﻄ‬
‫ﺒﺎﻋ ﺔ‪ :‬ﺟﺮا ب ‪iphone‬‬
‫ﻧﻤﻮذج اﻟﻄ‬

‫ﺛﻨﺎﺋ ﻲ اﻟﻮﺟﻮه‬‫ﺘﺎﻟﻴ ﺔ‪:‬‬


‫ﺒﺎﻋ ﺔ اﻟﻨﻤﺎذج اﻟ‬
‫ﺗﻢ ﻃ‬

‫ﺑﻮ ت ﺣﺎﻟ ﺔ ﻗﻼدة ﻓﻮن‬


‫اﻟﺮو‬

‫ﺘﻐﻴﺮ ﻣﻌﻈﻢ‬
‫ﺘﻴﻦ ‪ ،‬ﻛﻞ ﻣﻨﻬﻤﺎﺗﺆدي وﻇﻴﻔ ﺔ واﺣﺪة ﻣﺤﺪدة‪ .‬ﻟﻦﻳ‬
‫ﺑ ﺔ وﻇﻴﻔ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻨﻨﺎ إﻋﺎدةﺗﻨﻈﻴﻢ ﻫﺬا اﻟﻜﻮد ﻋﻦ ﻃﺮﻳﻖ ﻛ‬
‫ﺜﺎﻧﻴ ﺔ‬
‫ﺘﻠﺨﺺ اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺘﺼﻤﻴﻤﺎ ت ‪ ،‬وﺳ‬
‫ﺒﺎﻋ ﺔ اﻟ‬
‫ﺘﻌﺎﻣﻞ اﻟﻮﻇﻴﻔ ﺔ اﻷوﱃ ﻣﻊ ﻃ‬
‫ﺘ‬‫ﺜﺮ ﻛﻔﺎءة‪.‬ﺳ‬
‫اﻟﻜﻮد ؛ ﻧﺤﻦ ﻓﻘﻂ ﻧﺠﻌﻠﻪ أﻛ‬
‫ﺘ ﻲﺗﻢ إﺟﺮاؤ ﻫﺎ‪:‬‬
‫ﺒﻮﻋﺎ ت اﻟ‬
‫اﻟﻤﻄ‬

‫‪u def print_models (uninted_designs، complete_models):‬‬


‫""‬

‫ﺒﻘﻰ ﻣﻨﻪ ﺷ ﻲء‪.‬‬


‫ﺘ‬‫ﺘﻰ ﻻﻳ‬
‫ﺒﺎﻋ ﺔ ﻛﻞﺗﺼﻤﻴﻢ ‪ ،‬ﺣ‬
‫ﻣﺤﺎﻛﺎة ﻃ‬
‫ﺒﺎﻋ ﺔ‪.‬‬
‫ﺑﻌﺪ اﻟﻄ‬‫ﺘﻤﻠ ﺔ‬
‫اﻧﻘﻞ ﻛﻞﺗﺼﻤﻴﻢ إﱃ ﻧﻤﺎذج ﻣﻜ‬
‫""‬

‫ﺒﻮﻋ ﺔ‪:‬‬
‫ﺘﺼﻤﻴﻤﺎ ت ﻏﻴﺮ اﻟﻤﻄ‬
‫ﺛﻨﺎء اﻟ‬
‫أ‬
‫)( ‪current_design = uninted_designs.pop‬‬

‫ﺘﺼﻤﻴﻢ‪.‬‬ ‫ﺑﻌﺎد ﻣﻦ اﻟ‬


‫ﺛﻴ ﺔ اﻷ‬
‫ﺛﻼ‬‫ﺒﺎﻋ ﺔ‬‫‪#‬ﻣﺤﺎﻛﺎة إﻧﺸﺎء ﻃ‬
‫"‬
‫ﺒﺎﻋ ﺔ‪+ current_design) :‬‬ ‫ﺒﺎﻋ ﺔ )"ﻧﻤﻮذج اﻟﻄ‬
‫ﻃ‬
‫)‪Complete_models.append (current_design‬‬

‫ﺘﻤﻠ ﺔ_ﻧﻤﺎذج(‪:‬‬
‫‪)v def show_completed_models‬ﻣﻜ‬
‫ﺘﻬﺎ‪"" ".‬‬
‫ﺒﺎﻋ‬
‫ﺘ ﻲﺗﻢ ﻃ‬
‫"""إﻇﻬﺎر ﻛﺎﻓ ﺔ اﻟﻨﻤﺎذج اﻟ‬
‫ﺘﺎﻟﻴ ﺔ‪(":‬‬
‫ﺒﺎﻋ ﺔ اﻟﻨﻤﺎذج اﻟ‬
‫ﺗﻤ ﺖ ﻃ‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬‬
‫ﻃ‬
‫ﺘﻤﻠ ﺔ‪:‬‬
‫ﺘﻤﻞ ﻓ ﻲ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﻟﻠﻨﻤﻮذج اﻟﻤﻜ‬
‫ﺘﻤﻞ(‬
‫ﺒﺎﻋ ﺔ )ﻧﻤﻮذج_ﻣﻜ‬
‫ﻃ‬

‫]'‪uninted_designs = ['iphone case'، 'robot pendant'، 'dodecahedron‬‬


‫ﺘﻤﻠ ﺔ ][ =‬
‫ﻧﻤﺎذج ﻣﻜ‬

‫ﺜﺎﻣﻦ‬
‫‪148‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫)‪print_models (uninted_designs، complete_models‬‬


‫ﺘﻤﻠ ﺔ(‬
‫‪)show_completed_models‬ﻧﻤﺎذج_ﻣﻜ‬

‫ﺘﻤﻠ ﺔ‪.‬‬
‫ﺑﺎﻟﻨﻤﺎذج اﻟﻤﻜ‬‫ﺘﻬﺎ وﻗﺎﺋﻤ ﺔ‬
‫ﺒﺎﻋ‬
‫ﺘ ﻲﻳﺠ ﺐ ﻃ‬
‫ﺘﺼﺎﻣﻴﻢ اﻟ‬
‫ﺑﺎﻟ‬‫ﺘﻴﻦ‪ :‬ﻗﺎﺋﻤ ﺔ‬
‫ﺑﻤﻌﻠﻤ‬
‫ﻧﺤﺪد ﻓ ﻲ ‪u‬اﻟﻮﻇﻴﻔ ﺔ )( ‪print_models‬‬
‫ﺒﻮﻋ ﺔ وﻣﻞء‬
‫ﺘﺼﻤﻴﻤﺎ ت ﻏﻴﺮ اﻟﻤﻄ‬
‫ﺒﺎﻋ ﺔ ﻛﻞﺗﺼﻤﻴﻢ ﻋﻦ ﻃﺮﻳﻖ إﻓﺮاغ ﻗﺎﺋﻤ ﺔ اﻟ‬
‫ﺘﻴﻦ ‪،‬ﺗﺤﺎﻛ ﻲ اﻟﻮﻇﻴﻔ ﺔ ﻃ‬
‫ﺗﻴﻦ اﻟﻘﺎﺋﻤ‬
‫ﺑﺎﻟﻨﻈﺮ إﱃ ﻫﺎ‬
‫ﺘﻤﻠ ﺔ‪.‬‬
‫ﺑﻤﻌﺎﻣﻞ واﺣﺪ‪ :‬ﻗﺎﺋﻤ ﺔ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﺘﻤﻠ ﺔ‪ .‬ﻓ ﻲ ‪v‬ﻧﺤﺪد اﻟﻮﻇﻴﻔ ﺔ )( ‪show_completed_models‬‬
‫ﻗﺎﺋﻤ ﺔ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﺘﻪ‪.‬‬
‫ﺒﺎﻋ‬
‫ﺑﺎﻟﻨﻈﺮ إﱃ ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ ‪،‬ﻳﻌﺮض )( ‪show_completed_models‬اﺳﻢ ﻛﻞ ﻧﻤﻮذجﺗﻤ ﺖ ﻃ‬

‫ﺑﻤﻌﻈﻢ اﻟﻌﻤﻞ‬‫ﺜﺮﺗﻨﻈﻴﻤﺎً‪.‬ﺗﻢ ﻧﻘﻞ اﻟﻜﻮد اﻟﺬيﻳﻘﻮم‬


‫ﺑﺪون وﻇﺎﺋﻒ ‪ ،‬ﻟﻜﻦ اﻟﻜﻮد أﻛ‬‫ﺒﺮﻧﺎﻣﺞ ﻟﻪ ﻧﻔ ﺲ إﺧﺮاج اﻹﺻﺪار‬
‫ﻫﺬا اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ ﻟﻤﻌﺮﻓ ﺔ ﻣﺪى‬
‫ﺒﺮﻧﺎﻣﺞ أﺳﻬﻞ ﻓ ﻲ اﻟﻔﻬﻢ‪ .‬اﻧﻈﺮ إﱃ ﺟ ﺴﻢ اﻟ‬
‫ﺋﻴ ﺴ ﻲ ﻣﻦ اﻟ‬
‫ﺘﻴﻦ ‪ ،‬ﻣﻤﺎﻳﺠﻌﻞ اﻟﺠﺰء اﻟﺮ‬
‫ﺘﻴﻦ ﻣﻨﻔﺼﻠ‬
‫إﱃ وﻇﻴﻔ‬
‫ﺒﺮﻧﺎﻣﺞ‪:‬‬
‫ﺳﻬﻮﻟ ﺔ ﻓﻬﻢ ﻣﺎﻳﻔﻌﻠﻪ ﻫﺬا اﻟ‬

‫]'‪uninted_designs = ['iphone case'، 'robot pendant'، 'dodecahedron‬‬


‫ﺘﻤﻠ ﺔ ][ =‬
‫ﻧﻤﺎذج ﻣﻜ‬

‫)‪print_models (uninted_designs، complete_models‬‬


‫ﺘﻤﻠ ﺔ(‬
‫‪)show_completed_models‬ﻧﻤﺎذج_ﻣﻜ‬

‫ﺑﻌﺪ ذﻟﻚ ‪ ،‬ﻧﻈ ﺮًاﻷﻧﻨﺎ‬‫ﺘﻤﻠ ﺔ‪.‬‬


‫ﺘﻮي ﻋﲆ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﺒﻮﻋ ﺔ وﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔﺗﺤ‬
‫ﺘﺼﺎﻣﻴﻢ ﻏﻴﺮ اﻟﻤﻄ‬
‫ﺑﺎﻟ‬‫ﺑﺈﻋﺪاد ﻗﺎﺋﻤ ﺔ‬‫ﻗﻤﻨﺎ‬
‫ﺗﻤﺮﻳﺮ اﻟﻤﻌﻄﻴﺎ ت اﻟﺼﺤﻴﺤ ﺔ ﻟﻬﻤﺎ‪ .‬ﻧ ﺴﻤ ﻲ )(‬
‫ﺘﺪﻋﺎء ﻫﻤﺎ و‬
‫ﺑﺎﻟﻔﻌﻞ ‪ ،‬ﻓﻜﻞ ﻣﺎ ﻋﻠﻴﻨﺎ ﻓﻌﻠﻪ ﻫﻮ اﺳ‬‫ﺘﻴﻦ‬
‫ﺣﺪدﻧﺎ وﻇﻴﻔ‬
‫ﺘﻮﻗﻊ ‪print_models () ،‬‬
‫ﺘﺎﺟﻬﻤﺎ ؛ ﻛﻤﺎ ﻫﻮ ﻣ‬
‫ﺘﻴﻦﺗﺤ‬
‫ﺘﻴﻦ اﻟﻠ‬
‫‪print_models‬وﻧﻤﺮره ﻋﲆ اﻟﻘﺎﺋﻤ‬

‫ﺘﻤﻜﻦ ﻣﻦ‬
‫ﺘﻰﺗ‬
‫ﺘﻤﻠ ﺔ ﺣ‬
‫ﺛﻢ ﻧ ﺴﻤ ﻲ )( ‪show_completed_models‬وﻧﻤﺮر ﻟﻬﺎ ﻗﺎﺋﻤ ﺔ اﻟﻨﻤﺎذج اﻟﻤﻜ‬‫ﺘﺼﺎﻣﻴﻢ‪.‬‬
‫ﺒﺎﻋ ﺔ اﻟ‬
‫ﻳﺤﺎﻛ ﻲ ﻃ‬
‫ﺑﺪون‬‫ﺘﻰ‬
‫ﺑﻘﺮاءة ﻫﺬا اﻟﺮﻣﺰ وﻓﻬﻤﻪ ‪ ،‬ﺣ‬‫ﺘﻬﺎ‪.‬ﺗ ﺴﻤﺢ أﺳﻤﺎء اﻟﻮﻇﺎﺋﻒ اﻟﻮﺻﻔﻴ ﺔ ﻟﻶﺧﺮﻳﻦ‬
‫ﺒﺎﻋ‬
‫ﺘ ﻲﺗﻤ ﺖ ﻃ‬
‫ﺑﻼغ ﻋﻦ اﻟﻨﻤﺎذج اﻟ‬
‫اﻹ‬
‫ﺗﻌﻠﻴﻘﺎ ت‪.‬‬

‫ﺘﺼﻤﻴﻤﺎ ت‬
‫ﺒﺎﻋ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬
‫ﺘﺠﻨﺎ إﱃ ﻃ‬
‫ﺑﺪون وﻇﺎﺋﻒ‪ .‬إذا اﺣ‬‫ﺘﻤﺪﻳﺪ واﻟﺼﻴﺎﻧ ﺔ ﻣﻦ اﻹﺻﺪار‬
‫ﺒﺮﻧﺎﻣﺞ أﺳﻬﻞ ﻓ ﻲ اﻟ‬
‫ﻫﺬا اﻟ‬
‫ﺑﺤﺎﺟ ﺔ إﱃﺗﻌﺪﻳﻞ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎﺗﻐﻴﻴﺮ‬‫ﺒﺎﻋ ﺔ‬
‫ﺘﺪﻋﺎء )( ‪print_models‬ﻣﺮة أﺧﺮى‪ .‬إذا أدرﻛﻨﺎ أن ﻛﻮد اﻟﻄ‬
‫ﺒ ﺴﺎﻃ ﺔ اﺳ‬
‫ﺑ‬‫ﻻﺣ ًﻘﺎ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎ‬
‫ﺜﺮ ﻓﺎﻋﻠﻴ ﺔ ﻣﻦ اﻻﺿﻄﺮار إﱃ‬
‫ﺘﻘﻨﻴ ﺔ أﻛ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ﻓﻴﻪ‪ .‬ﻫﺬه اﻟ‬
‫ﺘﻢ اﺳ‬
‫ﺗﻨﺎ ﻓ ﻲ ﻛﻞ ﻣﻜﺎنﻳ‬
‫ﺘﺤﺪ ثﺗﻐﻴﻴﺮا‬
‫اﻟﻜﻮد ﻣﺮة واﺣﺪة ‪ ،‬وﺳ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ ﻓ ﻲ ﻋﺪة أﻣﺎﻛﻦ ﻓ ﻲ اﻟ‬‫ﺗﺤﺪﻳ ﺚ اﻟﻜﻮد‬

‫ﺒﺎﻋ ﺔ ﻛﻞ‬
‫ﺑﻄ‬ ‫ﺜﺎل أ ً‬
‫ﻳﻀﺎ ﻓﻜﺮة أن ﻛﻞ وﻇﻴﻔ ﺔﻳﺠ ﺐ أنﻳﻜﻮن ﻟﻬﺎ وﻇﻴﻔ ﺔ واﺣﺪة ﻣﺤﺪدة‪.‬ﺗﻘﻮم اﻟﻮﻇﻴﻔ ﺔ اﻷوﱃ‬ ‫ﻳﻮﺿﺢ ﻫﺬا اﻟﻤ‬
‫ﺘﻴﻦ‪ .‬إذا‬
‫ﺘﺎ اﻟﻮﻇﻴﻔ‬
‫ﺑﻜﻠ‬‫ﺘﺨﺪام وﻇﻴﻔ ﺔ واﺣﺪة ﻟﻠﻘﻴﺎم‬
‫ﺜﺮ ﻓﺎﺋﺪة ﻣﻦ اﺳ‬
‫ﺘﻤﻠ ﺔ‪ .‬ﻫﺬا أﻛ‬
‫ﺜﺎﻧﻴ ﺔ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﺗﻌﺮض اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺗﺼﻤﻴﻢ ‪ ،‬و‬
‫ﺘﻴﻦ‪.‬‬
‫ﺘﻠﻔ ﺔ ‪ ،‬ﻓﺤﺎولﺗﻘ ﺴﻴﻢ اﻟﻜﻮد إﱃ وﻇﻴﻔ‬
‫ﺑﺎﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻬﺎم اﻟﻤﺨ‬‫ﺘ ﺐ داﻟ ﺔ وﻻﺣﻈ ﺖ أن اﻟﻮﻇﻴﻔ ﺔﺗﻘﻮم‬
‫ﻛﻨ ﺖﺗﻜ‬

‫ﺘﺪﻋﺎء داﻟ ﺔ ﻣﻦ وﻇﻴﻔ ﺔ أﺧﺮى ‪ ،‬ﻣﻤﺎ ﻗﺪﻳﻜﻮن ﻣﻔﻴﺪًا ﻋﻨﺪﺗﻘ ﺴﻴﻢ ﻣﻬﻤ ﺔ ﻣﻌﻘﺪة إﱃﺳﻠ ﺴﻠ ﺔ ﻣﻦ‬
‫ﺋﻤﺎ اﺳ‬
‫ﺗﺬﻛﺮ أﻧﻪﻳﻤﻜﻨﻚ دا ً‬
‫اﻟﺨﻄﻮا ت‪.‬‬

‫ﻣﻨﻊ وﻇﻴﻔ ﺔ ﻣﻦﺗﻌﺪﻳﻞ ﻗﺎﺋﻤ ﺔ‬


‫ﺑﻘﺎﺋﻤ ﺔ ﻣﻦ‬‫ﺑﺪأ ت‬‫ﺘﺮض أﻧﻚ‬
‫ﺜﺎل ‪ ،‬ﻟﻨﻔ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲ ﻣﻨﻊ وﻇﻴﻔ ﺔ ﻣﻦﺗﻌﺪﻳﻞ اﻟﻘﺎﺋﻤ ﺔ‪ .‬ﻋﲆﺳ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﺳ‬‫ﻓﻲ‬
‫ﺘ ﺐ ﻣﻠﻒ‬
‫ﺒﻮﻋ ﺔ واﻛ‬
‫ﺘﺼﺎﻣﻴﻢ ﻏﻴﺮ اﻟﻤﻄ‬
‫اﻟ‬

‫اﻟﻤﻬﺎم‬ ‫‪149‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎﻋ ﺔ ﺟﻤﻴﻊ‬
‫ﺑﻄ‬‫ﺑﻖ‪ .‬ﻗﺪﺗﻘﺮر أﻧﻪ ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ ﻗﻴﺎﻣﻚ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺘﻤﻠ ﺔ ‪ ،‬ﻛﻤﺎ ﻓ ﻲ اﻟﻤ‬
‫ﺗﻌﻤﻞ ﻋﲆ ﻧﻘﻠﻬﺎ إﱃ ﻗﺎﺋﻤ ﺔ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﺑﻨﻘﻞ ﺟﻤﻴﻊ‬‫ﺗﻚ‪ .‬وﻟﻜﻦ ﻧﻈ ﺮًاﻷﻧﻚ ﻗﻤ ﺖ‬
‫ﺒﻮﻋ ﺔ ﻟ ﺴﺠﻼ‬
‫ﺘﺼﺎﻣﻴﻢ ﻏﻴﺮ اﻟﻤﻄ‬
‫ﺑﺎﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ ﻟﻠ‬‫ﺘﻔﺎظ‬
‫ﺘﺼﻤﻴﻤﺎ ت ‪ ،‬ﻓﺈﻧﻚﺗﺮﻳﺪ اﻻﺣ‬
‫اﻟ‬
‫ﺘﺼﻤﻴﻢ ﻣﻦ ‪uninted_designs ،‬ﻓﺈن اﻟﻘﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ اﻵن ‪ ،‬واﻟﻘﺎﺋﻤ ﺔ اﻟﻔﺎرﻏ ﺔ ﻫ ﻲ اﻹﺻﺪار اﻟﻮﺣﻴﺪ اﻟﺬي ﻟﺪﻳﻚ ؛‬
‫أﺳﻤﺎء اﻟ‬
‫ﺘﻤﺮﻳﺮ اﻟﻮﻇﻴﻔ ﺔ ﻧ ﺴﺨ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ ‪ ،‬وﻟﻴ ﺲ اﻟﻨ ﺴﺨ ﺔ اﻷﺻﻠﻴ ﺔ‪.‬‬
‫ﺑ‬‫ذ ﻫ ﺐ اﻷﺻﻞ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﻳﻤﻜﻨﻚ ﻣﻌﺎﻟﺠ ﺔ ﻫﺬه اﻟﻤﺸﻜﻠ ﺔ‬
‫ﺛﺮ أيﺗﻐﻴﻴﺮا تﺗﺠﺮﻳﻬﺎ اﻟﻮﻇﻴﻔ ﺔ ﻋﲆ اﻟﻘﺎﺋﻤ ﺔ ﻋﲆ اﻟﻨ ﺴﺨ ﺔ ﻓﻘﻂ ‪ ،‬ﻣﻊﺗﺮك اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔﺳﻠﻴﻤ ﺔ‪.‬‬
‫ﺘﺆ‬‫ﺳ‬

‫ﺜﻞ ﻫﺬا‪:‬‬
‫ﻳﻤﻜﻨﻚ إرﺳﺎل ﻧ ﺴﺨ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ إﱃ وﻇﻴﻔ ﺔ ﻣ‬

‫)]‪function_name (list_name [:‬‬

‫ﺗﺪوﻳﻦ اﻟﺸﺮﻳﺤ ﺔ ]‪[:‬ﻳﺠﻌﻞ ﻧ ﺴﺨ ﺔ ﻣﻦ اﻟﻘﺎﺋﻤ ﺔ ﻹرﺳﺎﻟﻬﺎ إﱃ اﻟﻮﻇﻴﻔ ﺔ‪.‬‬


‫ﺘﺪﻋﺎء )( ‪print_models‬‬
‫ﺒﻮﻋ ﺔ ﻓ ﻲ ‪print_models.py ،‬ﻓﻴﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﺼﻤﻴﻤﺎ ت ﻏﻴﺮ اﻟﻤﻄ‬
‫إذا ﻟﻢ ﻧﺮﻏ ﺐ ﻓ ﻲ إﻓﺮاغ ﻗﺎﺋﻤ ﺔ اﻟ‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﻋﲆ اﻟﻨﺤﻮ اﻟ‬

‫ﺘﻤﻠ ﺔ(‬
‫‪print_models (uninted_designs [:] ،‬ﻧﻤﺎذج_ﻣﻜ‬

‫ﺘﺪاد‬
‫ﺘﻠﻘﻰ اﻻﻣ‬
‫ﺑﻌﻤﻠﻬﺎﻷﻧﻬﺎ ﻻﺗﺰالﺗ‬‫ﻳﻤﻜﻦ ﻟﻠﺪاﻟ ﺔ )( ‪print_models‬اﻟﻘﻴﺎم‬
‫ﺒﻮﻋ ﺔ ‪،‬‬
‫ﺘﺼﻤﻴﻤﺎ ت اﻷﺻﻠﻴ ﺔ ﻏﻴﺮ اﻟﻤﻄ‬
‫ﺘﺨﺪم ﻧ ﺴﺨ ﺔ ﻣﻦ ﻗﺎﺋﻤ ﺔ اﻟ‬
‫ﺒﻮﻋ ﺔ‪ .‬ﻟﻜﻦ ﻫﺬه اﻟﻤﺮةﺗ ﺴ‬
‫ﺘﺼﺎﻣﻴﻢ ﻏﻴﺮ اﻟﻤﻄ‬
‫أﺳﻤﺎء ﺟﻤﻴﻊ اﻟ‬
‫ﺒﻮﻋ ﺔ ﻛﻤﺎ ﻓﻌﻠ ﺖ ﻣﻦ‬
‫ﺑﺄﺳﻤﺎء اﻟﻨﻤﺎذج اﻟﻤﻄ‬‫ﺘﻤﻠ ﺔ‬
‫ﺘﻤﻸ ﻗﺎﺋﻤ ﺔ اﻟﻨﻤﺎذج اﻟﻤﻜ‬
‫ﺒﻮﻋ ﺔ اﻟﻔﻌﻠﻴ ﺔ ‪.‬ﺳ‬
‫ﺘﺼﺎﻣﻴﻢ ﻏﻴﺮ اﻟﻤﻄ‬
‫وﻟﻴ ﺲ ﻗﺎﺋﻤ ﺔ اﻟ‬
‫ﺑﺎﻟﻮﻇﻴﻔ ﺔ‪.‬‬‫ﺛﺮ‬
‫ﺘﺄ‬
‫ﺒﻮﻋ ﺔ ﻟﻦﺗ‬
‫ﺘﺼﺎﻣﻴﻢ ﻏﻴﺮ اﻟﻤﻄ‬
‫ﺒﻞ ‪ ،‬ﻟﻜﻦ اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ ﻟﻠ‬
‫ﻗ‬

‫ﺘﻮﻳﺎ ت اﻟﻘﺎﺋﻤ ﺔ ﻋﻦ ﻃﺮﻳﻖﺗﻤﺮﻳﺮ ﻧ ﺴﺨ ﺔ ﻣﻨﻬﺎ إﱃ وﻇﺎﺋﻔﻚ ‪،‬ﻳﺠ ﺐ ﻋﻠﻴﻚ‬


‫ﺑﻤﺤ‬‫ﺘﻔﺎظ‬
‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻪﻳﻤﻜﻨﻚ اﻻﺣ‬
‫ﺜﺮ ﻓﺎﻋﻠﻴ ﺔ أنﺗﻌﻤﻞ إﺣﺪى‬ ‫ﺘﻤﺮﻳﺮ ﻧ ﺴﺨ ﺔ ﻣﻨﻬﺎ‪ .‬ﻣﻦ اﻷﻛ‬
‫ﺒ ﺐ ﻣﺤﺪد ﻟ‬ ‫ﺗﻤﺮﻳﺮ اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ إﱃ اﻟﻮﻇﺎﺋﻒ ﻣﺎ ﻟﻢﻳﻜﻦ ﻟﺪﻳﻚﺳ‬
‫ﺑﻘﻮاﺋﻢ‬‫ﺘﺨﺪام اﻟﻮﻗ ﺖ واﻟﺬاﻛﺮة اﻟﻼزﻣﻴﻦ ﻟﻌﻤﻞ ﻧ ﺴﺨ ﺔ ﻣﻨﻔﺼﻠ ﺔ ‪ ،‬ﺧﺎﺻ ًﺔ ﻋﻨﺪ اﻟﻌﻤﻞ‬
‫ﺘﺠﻨ ﺐ اﺳ‬
‫اﻟﻮﻇﺎﺋﻒ ﻣﻊ ﻗﺎﺋﻤ ﺔ ﻣﻮﺟﻮدة ﻟ‬
‫ﺒﻴﺮة‪.‬‬
‫ﻛ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺒﻊ اﺳﻢ‬
‫ﺗﻄ‬‫ﺑﺄﺳﻤﺎء اﻟ ﺴﺎﺣﺮ‪ .‬ﻣﺮر اﻟﻘﺎﺋﻤ ﺔ إﱃ وﻇﻴﻔ ﺔﺗ ﺴﻤﻰ ‪show_magicians () ،‬‬‫‪8-9.‬اﻟ ﺴﺤﺮة‪ :‬ﺿﻊ ﻗﺎﺋﻤ ﺔ‬
‫ﻛﻞﺳﺎﺣﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬‬

‫ﺘﻤﺮﻳﻦ ‪8-9.‬‬
‫ﺑﺮﻧﺎﻣﺠﻚ ﻣﻦ اﻟ‬‫ﺑﻨ ﺴﺨ ﺔ ﻣﻦ‬‫ﺑﺪأ‬
‫‪8-10. Great Magicians:‬ا‬
‫ﺑـ‬‫ﺗﺼﻞ‬
‫ﺒﺎرة اﻟﻌﻈﻴﻢ إﱃ اﺳﻢ ﻛﻞﺳﺎﺣﺮ‪ .‬ا‬
‫ﺑﺈﺿﺎﻓ ﺔ ﻋ‬‫ﺗﻌﺪل ﻗﺎﺋﻤ ﺔ اﻟ ﺴﺤﺮة‬
‫ﺘ ﺐ وﻇﻴﻔ ﺔﺗ ﺴﻤﻰ )( ‪make_great‬‬
‫اﻛ‬
‫ﺑﺎﻟﻔﻌﻞ‪.‬‬‫ﺘﺮى أن اﻟﻘﺎﺋﻤ ﺔ ﻗﺪﺗﻢﺗﻌﺪﻳﻠﻬﺎ‬
‫)( ‪show_magicians‬ﻟ‬

‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ )( ‪make_great‬ﻣﻊ‬


‫ﺑﺎﺳ‬‫ﺘﻤﺮﻳﻦ ‪8-10.‬ﻗﻢ‬
‫ﺑﻌﻤﻠﻚ ﻣﻦ اﻟ‬‫ﺑﺪأ‬
‫ﺘﻐﻴﺮوا‪ :‬ا‬
‫‪8-11.‬اﻟ ﺴﺤﺮة اﻟﺬﻳﻦ ﻟﻢﻳ‬
‫ﺘﺨﺰﻳﻨﻬﺎ ﻓ ﻲ‬
‫ﺑ‬‫ﺘﻐﻴﺮ ‪ ،‬أﻋﺪ اﻟﻘﺎﺋﻤ ﺔ اﻟﺠﺪﻳﺪة وﻗﻢ‬
‫ﻧ ﺴﺨ ﺔ ﻣﻦ ﻗﺎﺋﻤ ﺔ أﺳﻤﺎء اﻟ ﺴﺤﺮة‪ .‬ﻧﻈ ًﺮاﻷن اﻟﻘﺎﺋﻤ ﺔ اﻷﺻﻠﻴ ﺔ ﻟﻦﺗ‬
‫ﻗﺎﺋﻤ ﺔ ﻣﻨﻔﺼﻠ ﺔ‪.‬‬
‫ﺑﺎﻷﺳﻤﺎء اﻷﺻﻠﻴ ﺔ وﻗﺎﺋﻤ ﺔ واﺣﺪة ﻣﻊ‬‫ﺘﻈﻬﺮ أن ﻟﺪﻳﻚ ﻗﺎﺋﻤ ﺔ واﺣﺪة‬
‫ﺑـ )( ‪show_magicians‬ﻣﻊ ﻛﻞ ﻗﺎﺋﻤ ﺔ ﻟ‬‫ﺗﺼﻞ‬
‫ا‬
‫إﺿﺎﻓ ﺔ اﻟﻌﻈﻴﻢ إﱃ اﺳﻢ ﻛﻞﺳﺎﺣﺮ‪.‬‬

‫ﺜﺎﻣﻦ‬
‫‪150‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻴﺎز ﻋﺪدﺗﻌ ﺴﻔ ﻲ ﻣﻦ اﻟﺤﺠﺞ‬


‫اﺟ‬
‫ﺑﺠﻤﻊ ﻋﺪد‬‫ﺒﻠﻬﺎ اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪،‬ﺗ ﺴﻤﺢ ‪Python‬ﻟﻠﺪاﻟ ﺔ‬ ‫ﺒ ًﻘﺎ ﻋﺪد اﻟﻮﺳﺎﺋﻂ اﻟ‬
‫ﺘ ﻲﻳﺠ ﺐ أنﺗﻘ‬ ‫ﺑﻌﺾ اﻷﺣﻴﺎن ‪ ،‬ﻟﻦﺗﻌﺮف ﻣ ﺴ‬‫ﻓﻲ‬
‫ﺘﺪﻋﺎء‪.‬‬
‫‪arbi trary‬ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت ﻣﻦﺗﻌﻠﻴﻤ ﺔ اﻻﺳ‬

‫ﺒﻮل ﻋﺪد ﻣﻦ اﻹﺿﺎﻓﺎ ت ‪ ،‬ﻟﻜﻦ ﻻﻳﻤﻜﻨﻚ ﻣﻌﺮﻓ ﺔ ﻋﺪد‬


‫ﺘﺎج إﱃ ﻗ‬
‫ﺘﺰا‪.‬ﻳﺤ‬
‫ﺑﻴ‬‫ﺒﺎرك وﻇﻴﻔ ﺔﺗﺼﻨﻊ‬
‫ﺘ‬‫ﺜﺎل ‪ ،‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺒﻘ ﺔ ‪ ،‬ﻟﻜﻦ ﻫﺬه اﻟﻤﻌﻠﻤ ﺔﺗﺠﻤﻊ‬
‫ﺘﺎﻟ ﻲ ﻋﲆ ﻣﻌﻠﻤ ﺔ واﺣﺪة ‪* ،‬اﻟﻄ‬
‫ﺜﺎل اﻟ‬ ‫ﺒ ًﻘﺎ‪.‬ﺗﺤ‬
‫ﺘﻮي اﻟﻮﻇﻴﻔ ﺔ ﻓ ﻲ اﻟﻤ‬ ‫ﺘ ﻲﻳﺮﻳﺪ ﻫﺎ اﻟﺸﺨﺺ ﻣ ﺴ‬
‫اﻹﺿﺎﻓﺎ ت اﻟ‬
‫ﺘﺪﻋﺎء‪:‬‬
‫اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻮﺳﺎﺋﻂ ﻛﻤﺎﻳﻮﻓﺮ ﻫﺎﺳﻄﺮ اﻻﺳ‬

‫ﺘﺰا‬
‫ﺑﻴ‬ ‫ﺒﻘ ﺔ(‪:‬‬
‫*( ‪def make_pizza‬اﻟﻄ‬
‫ﺒﻬﺎ‪"" ".‬‬
‫ﺘ ﻲﺗﻢ ﻃﻠ‬
‫ﺒﻊ ﻗﺎﺋﻤ ﺔ اﻹﺿﺎﻓﺎ ت اﻟ‬
‫"""اﻃ‬
‫ﺒﻘ ﺔ(‬
‫ﺒﺎﻋ ﺔ )اﻟﻄ‬
‫ﻃ‬

‫ﺒﺮوﻧ ﻲ"(‬
‫ﺑﻴ‬‫‪")make_pizza‬‬
‫ﺒﻨ ﺔ إﺿﺎﻓﻴ ﺔ"(‬
‫‪")make_pizza‬ﻓﻄﺮ" ‪" ،‬ﻓﻠﻔﻞ أﺧﻀﺮ" ‪" ،‬ﺟ‬

‫ﺑﺈﻧﺸﺎء ﻣﻠﻒ‬‫ﺜﻮن أنﺗﻘﻮم‬


‫ﺑﻴ‬‫ﺒﻘ ﺔ اﺳﻢ اﻟﻤﻌﻠﻤ ﺔ *‬
‫ﺒﺮ اﻟﻌﻼﻣ ﺔ اﻟﻨﺠﻤﻴ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻃ‬
‫ﺗﺨ‬
‫ﺜﻮن‬
‫ﺑﻴ‬‫ﺒﺎرة ‪print‬ﻓ ﻲ ﺟ ﺴﻢ اﻟﻮﻇﻴﻔ ﺔ ﻣﺨﺮﺟﺎ تﺗﻮﺿﺢ أن‬
‫ﺘﺞ ﻋ‬
‫ﺘﻠﻘﺎ ﻫﺎ ﻓ ﻲ ﻫﺬه اﻟﻤﺠﻤﻮﻋ ﺔ‪.‬ﺗﻨ‬
‫ﺒﻘ ﺔ وﺣﺰم أي ﻗﻴﻢﺗ‬
‫ﻣﺠﻤﻮﻋ ﺔ ﻓﺎرﻏ ﺔﺗ ﺴﻤﻰ اﻟﻄ‬
‫ﺗﺤﺰم‬
‫ﺜﻞ‪ .‬ﻻﺣﻆ أن ‪Python‬‬
‫ﺑﺎﻟﻤ‬‫ﺘﻠﻔ ﺔ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻜﺎﻟﻤﺎ ت اﻟﻤﺨ‬
‫ﺜﻼ ث ﻗﻴﻢ‪.‬ﻳ‬
‫ﺑ‬‫ﺘﺪﻋﺎء‬
‫ﺑﻘﻴﻤ ﺔ واﺣﺪة واﺳ‬‫ﺘﺪﻋﺎء داﻟ ﺔ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﺳ‬
‫ﻳﻤﻜﻨﻬﺎ اﻟ‬
‫ﺘﻠﻘﻰ ﻗﻴﻤ ﺔ واﺣﺪة ﻓﻘﻂ‪:‬‬
‫ﺘﻰ ﻟﻮ ﻛﺎﻧ ﺖ اﻟﺪاﻟ ﺔﺗ‬
‫اﻟﻮﺳﻴﻄﺎ ت ﻓ ﻲ ﻣﺠﻤﻮﻋ ﺔ ‪ ،‬ﺣ‬

‫ﺒﻨ ﺔ إﺿﺎﻓﻴ ﺔ'(‬


‫ﺒﺮوﻧ ﻲ'‪') (،‬ﻓﻄﺮ'‪' ،‬ﻓﻠﻔﻞ أﺧﻀﺮ'‪' ،‬ﺟ‬
‫ﺑﻴ‬‫)'‬

‫ﺒﺮ ﻫﺎ‬
‫ﺑﺤﻠﻘ ﺔﺗﻤﺮ ﻋ‬
‫ﺒﺪالﺗﻌﻠﻴﻤ ﺔ ‪print‬‬
‫ﺘ‬‫اﻵنﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺒﻬﺎ‪:‬‬
‫ﺘﻢ ﻃﻠ‬
‫ﺘ ﻲﻳ‬
‫ﺘﺰا اﻟ‬
‫ﺒﻴ‬‫ﺗﺼﻒ اﻟ‬
‫ﻗﺎﺋﻤ ﺔ اﻹﺿﺎﻓﺎ ت و‬

‫ﺒﻘ ﺔ(‪:‬‬
‫*( ‪def make_pizza‬اﻟﻄ‬
‫ﺘ ﻲ ﻧﺤﻦ ﻋﲆ وﺷﻚ ﺻﻨﻌﻬﺎ‪"" ".‬‬
‫ﺘﺰا اﻟ‬
‫ﺒﻴ‬‫"""ﻟﺨﺺ اﻟ‬
‫ﺘﺎﻟﻴ ﺔ‪(":‬‬
‫ﺑﺎﻹﺿﺎﻓﺎ ت اﻟ‬‫ﺘﺰا‬
‫ﺑﻴ‬‫ﺒﺎﻋ ﺔ ‪ ("\ n‬ﺻﻨﻊ‬
‫ﻃ‬
‫ﺒﻘ ﺔ‪:‬‬
‫ﺒ ﺔ اﻷوﱃ ﻓ ﻲ اﻟﻄ‬
‫ﺗ‬‫ﺘﻞ اﻟﻤﺮ‬
‫ﺘﺤ‬‫ﻟ‬
‫ﺘﺼﺪر(‬
‫ﺗ‬‫ﺒﺎﻋ ﺔ ‪("-" +‬‬
‫ﻃ‬

‫ﺒﺮوﻧ ﻲ"(‬
‫ﺑﻴ‬‫‪")make_pizza‬‬
‫ﺒﻨ ﺔ إﺿﺎﻓﻴ ﺔ"(‬
‫‪")make_pizza‬ﻓﻄﺮ" ‪" ،‬ﻓﻠﻔﻞ أﺧﻀﺮ" ‪" ،‬ﺟ‬

‫ﺘﻠﻘﻰ ﻗﻴﻤ ﺔ واﺣﺪة أو‬


‫ﺑﺸﻜﻞ ﻣﻨﺎﺳ ﺐ ‪،‬ﺳﻮاء ﻛﺎﻧ ﺖﺗ‬‫ﺘﺠﻴ ﺐ اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺗﺴ‬
‫ﺛﻼ ث ﻗﻴﻢ‪:‬‬

‫ﺒﺮوﻧ ﻲ‬
‫ﺑﻴ‬‫ﺘﺎﻟﻴ ﺔ‪- :‬‬
‫ﺑﺎﻹﺿﺎﻓﺎ ت اﻟ‬‫ﺘﺰا‬
‫ﺑﻴ‬‫ﺻﻨﻊ‬

‫ﺘﺎﻟﻴ ﺔ‪- :‬ﻣﺸﺮوم‬


‫ﺑﺎﻹﺿﺎﻓﺎ ت اﻟ‬‫ﺘﺰا‬
‫ﺑﻴ‬‫ﺻﻨﻊ‬

‫ﺒﻨ ﺔ اﺿﺎﻓﻴ ﺔ‬
‫‪-‬ﻓﻠﻔﻞ اﺧﻀﺮ ‪-‬ﺟ‬

‫اﻟﻤﻬﺎم‬ ‫‪151‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻠﻘﺎ ﻫﺎ اﻟﻮﻇﻴﻔ ﺔ‪.‬‬


‫ﺘ ﻲﺗ‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻋﺪد اﻟﻮﺳﺎﺋﻂ اﻟ‬‫ﺗﻌﻤﻞ ﻫﺬه اﻟﺼﻴﻐ ﺔ‬

‫ﺘﻌ ﺴﻔﻴ ﺔ‬
‫ﺑﻴﻦ اﻟﺤﺠﺞ اﻟﻤﻮﺿﻌﻴ ﺔ واﻟ‬‫اﻟﺨﻠﻂ‬

‫ﺒﻞ ﻋﺪدًا ﻋﺸﻮاﺋ ًﻴﺎ ﻣﻦ‬


‫ﺘ ﻲﺗﻘ‬
‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت ‪ ،‬ﻓﻴﺠ ﺐ وﺿﻊ اﻟﻤﻌﻠﻤ ﺔ اﻟ‬
‫ﺒﻞ اﻟﺪاﻟ ﺔ ﻋﺪة أﻧﻮاع ﻣﺨ‬
‫إذا ﻛﻨ ﺖﺗﺮﻳﺪ أنﺗﻘ‬
‫ﺋﻴ ﺴﻴ ﺔ أوﻻ ً‬
‫ﺛﻢﻳﺠﻤﻊ أي وﺳﻴﻄﺎ ت‬ ‫ﺑﻖ ‪Python‬وﺳﻴﻄﺎ ت اﻟﻤﻮﺿﻊ واﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫اﻟﻮﺳﻴﻄﺎ ت ﻓ ﻲ آﺧﺮﺗﻌﺮﻳﻒ اﻟﺪاﻟ ﺔ‪.‬ﻳﻄﺎ‬
‫ﺒﻘﻴ ﺔ ﻓ ﻲ اﻟﻤﻌﻠﻤ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ‪.‬‬
‫ﺘ‬‫ﻣ‬

‫ﺘﺰا ‪ ،‬ﻓﻬﺬا‬
‫ﺒﻴ‬‫ﺘﺎج إﱃ أﺧﺬ ﺣﺠﻢ ﻟﻠ‬
‫ﺜﺎل ‪ ،‬إذا ﻛﺎﻧ ﺖ اﻟﻮﻇﻴﻔ ﺔﺗﺤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺒﻞ إﺿﺎﻓﺎ ت اﻟﻤﻌﻠﻤ ﺔ ‪*:‬‬
‫ﺗ ﻲ اﻟﻤﻌﻠﻤ ﺔ ﻗ‬
‫ﻳﺠ ﺐ أنﺗﺄ‬

‫ﺘ ﻲ ﻧﺤﻦ ﻋﲆ وﺷﻚ‬
‫ﺘﺰا اﻟ‬
‫ﺒﻴ‬‫ﺒﻘ ﺔ اﻟﻌﻠﻴﺎ(‪""" :‬ﻟﺨﺺ اﻟ‬
‫‪)def make_pizza‬اﻟﺤﺠﻢ ‪* ،‬اﻟﻄ‬
‫ﺻﻨﻌﻬﺎ‪"" ".‬‬
‫"‬
‫ﺘﺎﻟﻴ ﺔ‪") :‬‬
‫ﺑﻮﺻ ﺔ ﻣﻊ اﻹﺿﺎﻓﺎ ت اﻟ‬
‫أﻋﲆ(‬
‫ﺑﺤﺠﻢ‬
‫‪(" - "+‬‬
‫ﺘﺰا‬
‫ﺑﻴ‬
‫"‪+‬ﺔ‬
‫ﺒﺎﻋ‬‫)اﻟﺤﺠﻢ(ﻃ‬
‫ﺒﻘ ﺔ‪:‬‬
‫اﻟﻄ‬
‫‪str‬ﻓ ‪+‬ﻲ ‪a‬‬
‫ﻷوﱃ‬‫ﺻﻨﻊ‬
‫\"( ﺔ ا‬
‫ﺒ‬‫ﺗ‬‫اﻟﻤﺮ‬
‫ﺘﻞ ‪n‬‬
‫ﺒﺎﻋ ﺔ‬
‫ﺘﺤ‬
‫ﻟﻃ‬

‫)'‪(16، 'pepperoni') make_pizza (12، 'mushrooms'، 'green peppers'، 'extra cheese‬‬


‫‪make_pizza‬‬

‫ﺘﻢﺗﺨﺰﻳﻦ ﺟﻤﻴﻊ اﻟﻘﻴﻢ اﻷﺧﺮى‬


‫ﺘﻠﻘﺎ ﻫﺎ ﻓ ﻲ ﺣﺠﻢ اﻟﻤﻌﻠﻤ ﺔ‪.‬ﻳ‬
‫ﺘ ﻲﺗ‬
‫ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ ‪،‬ﺗﺨﺰن ‪Python‬اﻟﻘﻴﻤ ﺔ اﻷوﱃ اﻟ‬
‫ﺑﻌﺪد اﻹﺿﺎﻓﺎ ت ﺣ ﺴ ﺐ‬‫ﺒﻮﻋً ﺎ‬
‫ﺘ‬‫ﺘﺪﻋﺎءا ت اﻟﻮﻇﺎﺋﻒ وﺳﻴﻄ ﺔ ﻟﻠﺤﺠﻢ أوﻻ ً ‪ ،‬ﻣ‬
‫ﺘﻀﻤﻦ اﺳ‬
‫ﺒﻘ ﺔ اﻟﻌﻠﻮﻳ ﺔ ‪.‬ﺗ‬
‫ﺑﻌﺪ ذﻟﻚ ﻓ ﻲ اﻟﻄ‬‫ﺗﻲ‬
‫ﺘ ﻲﺗﺄ‬
‫اﻟ‬
‫اﻟﺤﺎﺟ ﺔ‪.‬‬

‫ﺒﻮع ﻓ ﻲ اﻟﻤﻜﺎن اﻟﻤﻨﺎﺳ ﺐ ‪ ،‬ﻣﻊ إﻇﻬﺎر‬


‫ﺘﺰا ﻟﻬﺎ ﺣﺠﻢ وﻋﺪد ﻣﻦ اﻹﺿﺎﻓﺎ ت ‪ ،‬وﻛﻞ ﺟﺰء ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻣﻄ‬
‫ﺑﻴ‬‫اﻵن ﻛﻞ‬
‫اﻟﺤﺠﻢ أوﻻ ً واﻟﻄ‬
‫ﺒﻘ ﺔ‬
‫ﺑﻌﺪ‪:‬‬

‫ﺒﺮوﻧ ﻲ‬
‫ﺑﻴ‬‫ﺘﺎﻟﻴ ﺔ‪- :‬‬
‫ﺘﺰا ﻣﻘﺎس ‪16‬إﻧ ﺶ ﻣﻊ اﻹﺿﺎﻓﺎ ت اﻟ‬
‫ﺑﻴ‬‫ﻋﻤﻞ‬

‫ﺘﺎﻟﻴ ﺔ‪- :‬ﻣﺸﺮوم‬


‫ﺘﺰا ﻣﻘﺎس ‪12‬اﻧ ﺶ ﻣﻊ اﻻﺿﺎﻓﺎ ت اﻟ‬
‫ﺑﻴ‬‫ﻋﻤﻞ‬

‫ﺒﻨ ﺔ اﺿﺎﻓﻴ ﺔ‬
‫‪-‬ﻓﻠﻔﻞ اﺧﻀﺮ ‪-‬ﺟ‬

‫ﺘﻌ ﺴﻔﻴ ﺔ‬
‫ﺋﻴ ﺴﻴ ﺔ اﻟ‬
‫ﺘﺨﺪام وﺳﻴﻄﺎ ت اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫اﺳ‬

‫ﺘﻢﺗﻤﺮﻳﺮ ﻫﺎ إﱃ‬ ‫ﺒ ًﻘﺎ ﻧﻮع اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬


‫ﺘ ﻲﺳﻴ‬ ‫ﺒﺎﻃ ﻲ ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت ‪ ،‬ﻟﻜﻨﻚ ﻟﻦﺗﻌﺮف ﻣ ﺴ‬
‫ﺘ‬ ‫ﻗﺪﺗﺮﻏ ﺐ أﺣﻴﺎﻧًﺎ ﻓ ﻲ ﻗ‬
‫ﺒﻮل ﻋﺪد اﻋ‬
‫ﺘﺪﻋﺎء‪.‬‬
‫ﺒﺎرة اﻻﺳ‬
‫ﺘ ﻲﺗﻮﻓﺮ ﻫﺎ ﻋ‬
‫ﺘﺎح واﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﺒﻞ اﻟﻌﺪﻳﺪ ﻣﻦ أزواج اﻟﻤﻔ‬
‫ﺑ ﺔ وﻇﺎﺋﻒﺗﻘ‬
‫ﺘﺎ‬
‫اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﻳﻤﻜﻨﻚ ﻛ‬
‫ﺘﺨﺪم ‪ ،‬ﻟﻜﻨﻚ‬
‫ﺘﺤﺼﻞ ﻋﲆ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﻣ ﺴ‬
‫ﺘﺨﺪﻣﻴﻦ‪ :‬أﻧ ﺖﺗﻌﻠﻢ أﻧﻚﺳ‬
‫ﺜﻠ ﺔ إﻧﺸﺎء ﻣﻠﻔﺎ تﺗﻌﺮﻳﻒ اﻟﻤ ﺴ‬
‫ﺘﻀﻤﻦ أﺣﺪ اﻷﻣ‬
‫ﻳ‬
‫ﺘﻠﻘﺎ ﻫﺎ‪ .‬اﻟﺪاﻟ ﺔ )( ‪build_profile‬ﻓ ﻲ ﻣﻠﻒ‬
‫ﺘ‬‫ﺘ ﻲﺳ‬
‫ﺘﺄﻛﺪًا ﻣﻦ ﻧﻮع اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﻟﺴ ﺖ ﻣ‬

‫ﺜﺎﻣﻦ‬
‫‪152‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺋﻴ ﺴﻴ ﺔ‪:‬‬ ‫ﺒﻞ أ ً‬


‫ﻳﻀﺎ ﻋﺪدًا ﻋﺸﻮاﺋ ًﻴﺎ ﻣﻦ وﺳﻴﻄﺎ ت اﻟﻜﻠﻤﺎ ت اﻟﺮ‬ ‫ﺋﻤﺎ اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ‪ ،‬وﻟﻜﻨﻪﻳﻘ‬
‫ﺘﺎﻟ ﻲ دا ً‬
‫ﺜﺎل اﻟ‬
‫ﻳﺄﺧﺬ اﻟﻤ‬

‫‪user_profile.py‬‬ ‫‪)def build_profile‬اﻷول ‪ ،‬اﻷﺧﻴﺮ ‪** user_info): ،‬‬


‫ﺘﺨﺪم‪"" " .‬‬
‫ﺘﻮي ﻋﲆ ﻛﻞ ﻣﺎ ﻧﻌﺮﻓﻪ ﻋﻦ اﻟﻤ ﺴ‬
‫""إﻧﺸﺎء ﻗﺎﻣﻮسﻳﺤ‬
‫اﻟﻤﻠﻒ اﻟﺸﺨﺼ ﻲ }{ =‬
‫ﻣﻠﻒﺗﻌﺮﻳﻒ = ]'‪u ['first_name‬أوﻻ ً‬
‫اﻟﻤﻠﻒ اﻟﺸﺨﺼ ﻲ = ]'‪['last_name‬اﻷﺧﻴﺮ‬
‫ﺘﺎح ‪ ،‬اﻟﻘﻴﻤ ﺔ ﻓ ﻲ ‪user_info.items ():‬‬
‫‪v‬ﻟﻠﻤﻔ‬
‫ﺘﺎح[ =اﻟﻘﻴﻤ ﺔ‬
‫اﻟﻤﻠﻒ اﻟﺸﺨﺼ ﻲ ]ﻣﻔ‬
‫ﻋﻮدة اﻟﻤﻠﻒ اﻟﺸﺨﺼ ﻲ‬

‫ﺘﺎﻳﻦ" ‪،‬‬
‫ﺒﺮ ت" ‪" ،‬أﻳﻨﺸ‬
‫‪")user_profile = build_profile‬أﻟ‬
‫ﺘﻮن" ‪،‬‬
‫ﺑﺮﻳﻨ ﺴ‬
‫اﻟﻤﻮﻗﻊ ="‬
‫اﻟﻤﺠﺎل ="اﻟﻔﻴﺰﻳﺎء"(‬
‫ﺘﺨﺪم(‬
‫ﺒﺎﻋ ﺔ )ﻣﻠﻒﺗﻌﺮﻳﻒ اﻟﻤ ﺴ‬
‫ﻃ‬

‫ﺘﻤﺮﻳﺮ اﻟﻌﺪﻳﺪ ﻣﻦ أزواج اﻻﺳﻢ واﻟﻘﻴﻤ ﺔ‬


‫ﺑ‬‫ﺘﺨﺪم‬
‫ﺛﻢﻳ ﺴﻤﺢ ﻟﻠﻤ ﺴ‬‫ﺘﻮﻗﻊﺗﻌﺮﻳﻒ )( ‪build_profile‬اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ‪،‬‬
‫ﻳ‬
‫ﺑﺈﻧﺸﺎء ﻗﺎﻣﻮس ﻓﺎرغﻳ ﺴﻤﻰ‬
‫ﺒﻞ اﻟﻤﻌﻠﻤ ﺔ ‪** user_info‬إﱃ ﻗﻴﺎم ‪Python‬‬
‫ﻛﻤﺎﻳﺮﻳﺪ‪.‬ﺗﺆدي اﻟﻌﻼﻣﺎ ت اﻟﻨﺠﻤﻴ ﺔ اﻟﻤﺰدوﺟ ﺔ ﻗ‬
‫ﺘﻠﻘﺎ ﻫﺎ ﻓ ﻲ ﻫﺬا اﻟﻘﺎﻣﻮس‪ .‬ﺿﻤﻦ اﻟﻮﻇﻴﻔ ﺔ ‪،‬ﻳﻤﻜﻨﻚ اﻟﻮﺻﻮل إﱃ أزواج ﻗﻴﻤ ﺔ‬
‫ﺘ ﻲﺗ‬
‫‪user_info‬وﺣﺰم أزواج اﻻﺳﻢ واﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﺗﻤﺎﻣﺎ ﻛﻤﺎﺗﻔﻌﻞ ﻣﻊ أي ﻗﺎﻣﻮس‪.‬‬
‫ً‬ ‫ﺘﺨﺪم‬
‫اﻻﺳﻢ ﻓ ﻲ ﻣﻌﻠﻮﻣﺎ ت اﻟﻤ ﺴ‬

‫ﺘﺨﺪم‪ .‬ﻓ ﻲ ‪u‬‬


‫ﺑﻤﻠﻒﺗﻌﺮﻳﻒ اﻟﻤ ﺴ‬‫ﺘﻔﺎظ‬
‫ﺘﻌﺮﻳﻒ ﻟﻼﺣ‬ ‫ً‬
‫ﻓﺎرﻏﺎﻳ ﺴﻤﻰ ﻣﻠﻒ اﻟ‬ ‫ﺳﺎ‬
‫ﻓ ﻲ ﻧﺺ ‪build_profile () ،‬ﻧﺼﻨﻊ ﻗﺎﻣﻮ ً‬
‫ﺘﺨﺪم‪ .‬ﻓ ﻲ ‪v ،‬ﻧﻘﻮم‬
‫ﺘﻴﻦ ﻣﻦ اﻟﻤ ﺴ‬
‫ﺗﻴﻦ اﻟﻤﻌﻠﻮﻣ‬
‫ﺋﻤﺎ ﻫﺎ‬
‫ﺘﻠﻘﻰ دا ً‬
‫ﻧﻀﻴﻒ اﻻﺳﻤﻴﻦ اﻷول واﻷﺧﻴﺮ إﱃ ﻫﺬا اﻟﻘﺎﻣﻮسﻷﻧﻨﺎﺳﻨ‬
‫ﺋﻴ ﺴﻴ ﺔ اﻹﺿﺎﻓﻴ ﺔ ﻓ ﻲ اﻟﻘﺎﻣﻮس ‪user_info‬وإﺿﺎﻓ ﺔ ﻛﻞ زوج إﱃ ﻗﺎﻣﻮس اﻟﻤﻠﻒ‬
‫ﺑﺈﺟﺮاء ﺣﻠﻘ ﺔ ﻣﻦ ﺧﻼل أزواج اﻟﻘﻴﻤ ﺔ اﻟﺮ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‪.‬‬
‫اﻟﺸﺨﺼ ﻲ ‪ .‬أﺧﻴ ًﺮا ‪ ،‬ﻧﻌﻴﺪ ﻗﺎﻣﻮس اﻟﻤﻠﻒ اﻟﺸﺨﺼ ﻲ إﱃﺳﻄﺮ اﺳ‬

‫ﺋﻴ ﺴﻴ ﺔ‬
‫ﺘﺎﻳﻦ" ‪ ،‬وزوﺟ ﻲ اﻟﻘﻴﻤ ﺔ اﻟﺮ‬
‫ﺒﺮ ت" ‪ ،‬واﻻﺳﻢ اﻷﺧﻴﺮ "أﻳﻨﺸ‬
‫ﻧ ﺴﻤ ﻲ ‪build_profile () ،‬وﻧﻤﺮره اﻻﺳﻢ اﻷول "أﻟ‬
‫ﺒﻊ‬
‫ﺘﺨﺪم وﻧﻄ‬
‫ﺘﻌﺮﻳﻒ اﻟﺬيﺗﻢ إرﺟﺎﻋﻪ ﻓ ﻲ ﻣﻠﻒﺗﻌﺮﻳﻒ اﻟﻤ ﺴ‬
‫ﺘﺨﺰﻳﻦ ﻣﻠﻒ اﻟ‬
‫ﺑ‬‫ﺘﻮن" واﻟﺤﻘﻞ ="ﻓﻴﺰﻳﺎء"‪ .‬ﻧﻘﻮم‬
‫ﺑﺮﻳﻨ ﺴ‬
‫اﻟﻤﻮﻗﻊ ="‬
‫ﺘﺨﺪم‪:‬‬
‫ﻣﻠﻒﺗﻌﺮﻳﻒ اﻟﻤ ﺴ‬

‫‪{'first_name': 'albert'، 'last_name': 'einstein'،‬‬


‫}'‪'location': 'princeton'، 'field': 'physics‬‬

‫ﺘﺨﺪم و ‪،‬‬
‫ﺘﻮي اﻟﻘﺎﻣﻮس اﻟﺬيﺗﻢ إرﺟﺎﻋﻪ ﻋﲆ اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ﻟﻠﻤ ﺴ‬
‫ﻳﺤ‬
‫ﺘﺎح اﻹﺿﺎﻓﻴ ﺔ‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻋﺪد أزواج ﻗﻴﻤ ﺔ اﻟﻤﻔ‬‫ﺘﻌﻤﻞ اﻟﻮﻇﻴﻔ ﺔ‬ ‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬اﻟﻤﻮﻗﻊ وﻣﺠﺎل اﻟﺪراﺳ ﺔ أ ً‬
‫ﻳﻀﺎ‪.‬ﺳ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‪.‬‬
‫ﺘﻮﻓﺮة ﻓ ﻲ اﺳ‬
‫اﻟﻤ‬

‫ﺑ ﺔ اﻟﺪاﻻ ت اﻟﺨﺎﺻ ﺔ‬
‫ﺘﺎ‬
‫ﺘﻠﻔ ﺔ ﻋﻨﺪ ﻛ‬
‫ﺑﻌﺪة ﻃﺮق ﻣﺨ‬‫ﺘﻌ ﺴﻔﻴ ﺔ‬
‫ﺋﻴ ﺴﻴ ﺔ واﻟﻘﻴﻢ اﻟ‬
‫ﻳﻤﻜﻨﻚ ﻣﺰج اﻟﻘﻴﻢ اﻟﻤﻮﺿﻌﻴ ﺔ واﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺒﺪأ ﻓ ﻲ ﻗﺮاءة اﻟ‬
‫ﺜﻴ ﺮًا ﻋﻨﺪﻣﺎﺗ‬
‫ﺘﺮا ﻫﺎ ﻛ‬
‫ﺑﻚ‪ .‬ﻣﻦ اﻟﻤﻔﻴﺪ أنﺗﻌﺮف أن ﺟﻤﻴﻊ أﻧﻮاع اﻟﻮﺳﺎﺋﻂ ﻫﺬه ﻣﻮﺟﻮدةﻷﻧﻚﺳ‬
‫ﺘﺨﺪام ﻛﻞ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ وﻣﻌﺮﻓ ﺔ وﻗ ﺖ اﺳ‬‫ﺘﻠﻔ ﺔ‬
‫ﺘﺨﺪام اﻷﻧﻮاع اﻟﻤﺨ‬
‫ﺘﻌﻠﻢ اﺳ‬
‫ﺒﺎ ﻟ‬
‫ﺘﻄﻠ ﺐ اﻷﻣﺮﺗﺪرﻳ ً‬
‫ﺑﺄﺷﺨﺎص آﺧﺮﻳﻦ‪.‬ﻳ‬‫اﻟﺨﺎﺻ ﺔ‬
‫ﺜﺮ ﻓﺎﻋﻠﻴ ﺔ‬
‫ﺘﺨﺪام اﻟﻨﻬﺞ اﻷﻛ‬
‫ﺘﻌﻠﻢ اﺳ‬
‫ﺘ‬‫ﺑ ﺴﻂ ﻃﺮﻳﻘ ﺔ ﻹﻧﺠﺎز اﻟﻤﻬﻤ ﺔ‪ .‬ﻛﻠﻤﺎﺗﻘﺪﻣ ﺖ ‪،‬ﺳ‬
‫ﺘﺨﺪام أ‬
‫ﻧﻮع‪ .‬ﻓ ﻲ اﻟﻮﻗ ﺖ اﻟﺤﺎﻟ ﻲ ‪،‬ﺗﺬﻛﺮ اﺳ‬
‫ﻓ ﻲ ﻛﻞ ﻣﺮة‪.‬‬

‫اﻟﻮﻇﺎﺋﻒ ‪153‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻮي اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘ ﻲﻳﺮﻳﺪ ﻫﺎ اﻟﺸﺨﺺ ﻋﲆ ﺷﻄﻴﺮة‪.‬ﻳﺠ ﺐ أنﺗﺤ‬
‫ﺑﺎﻟﻌﻨﺎﺻﺮ اﻟ‬‫ﺒﻞ ﻗﺎﺋﻤ ﺔ‬
‫ﺘ ﺐ وﻇﻴﻔ ﺔﺗﻘ‬
‫‪8-12.‬ﺷﻄﺎﺋﺮ‪ :‬اﻛ‬
‫ﻣﻠﺨﺼﺎ ﻟﻠﺮﻣﻞ‬
‫ً‬ ‫ﺒﻊ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬وﻳﺠ ﺐ أنﺗﻄ‬
‫ﻋﲆ ﻣﻌﻠﻤ ﺔ واﺣﺪةﺗﺠﻤﻊ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻛﻤﺎﻳﻮﻓﺮ ﻫﺎ اﺳ‬
‫ﺘﻠﻒ ﻣﻦ اﻟﻮﺳﻴﻄﺎ ت ﻓ ﻲ ﻛﻞ ﻣﺮة‪.‬‬
‫ﺘﺨﺪام ﻋﺪد ﻣﺨ‬
‫ﺑﺎﺳ‬‫ﺛﻼ ث ﻣﺮا ت ‪،‬‬‫ﺘﺪع اﻟﺪاﻟ ﺔ‬
‫ﺒﻪ‪ .‬اﺳ‬
‫ﺘﻢ ﻃﻠ‬
‫اﻟﺬيﻳ‬

‫ﺑﻨ ﺴﺨ ﺔ ﻣﻦ ‪user_profile.py‬ﻣﻦ اﻟﺼﻔﺤ ﺔ ‪153.‬أﻧﺸ ﺊ ﻣﻠ ًﻔﺎ ﺷﺨﺼ ًﻴﺎ‬‫ﺑﺪأ‬


‫ﺘﺨﺪم‪ :‬ا‬
‫‪8-13.‬ﻣﻠﻒﺗﻌﺮﻳﻒ اﻟﻤ ﺴ‬
‫ﺗﻴﺢ‬
‫ﺛ ﺔ أزواج أﺧﺮى ﻣﻦ اﻟﻤﻔﺎ‬
‫ﺛﻼ‬‫ﺘﺨﺪام اﻻﺳﻢ اﻷول واﺳﻢ اﻟﻌﺎﺋﻠ ﺔ و‬
‫ﺑﺎﺳ‬
‫ﺘﺪﻋﺎء ‪build_profile () ،‬‬
‫ﻋﻦ ﻃﺮﻳﻖ اﺳ‬
‫ﺘ ﻲﺗﺼﻔﻚ‪.‬‬
‫واﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﺋﻤﺎ‬
‫ﺘﻠﻘﻰ اﻟﻮﻇﻴﻔ ﺔ دا ً‬
‫ﺘ ﺐ وﻇﻴﻔ ﺔﺗﺨﺰن ﻣﻌﻠﻮﻣﺎ ت ﻋﻦ اﻟ ﺴﻴﺎرة ﻓ ﻲ ﻟﻐ ﺔ اﻹﻣﻼء‪.‬ﻳﺠ ﺐ أنﺗ‬
‫‪8-14.‬اﻟ ﺴﻴﺎرا ت‪ :‬اﻛ‬

‫ﺗﺼﻞ‬
‫ﺋﻴ ﺴﻴ ﺔ‪ .‬ا‬
‫ﺑﻌﺪ ذﻟﻚ ﻋﺪدًا ﻋﺸﻮاﺋ ًﻴﺎ ﻣﻦ وﺳﻴﻄﺎ ت اﻟﻜﻠﻤﺎ ت اﻟﺮ‬‫ﺒﻞ‬
‫اﺳﻢ اﻟﺸﺮﻛ ﺔ اﻟﻤﺼﻨﻌ ﺔ واﻟﻄﺮاز‪.‬ﻳﺠ ﺐ أنﻳﻘ‬
‫ﺘﻴﺎرﻳ ﺔ‪.‬ﻳﺠ ﺐ أن‬
‫ﺜﻞ ﻟﻮن أو ﻣﻴﺰة اﺧ‬
‫ﺛﻨﻴﻦ ﻣﻦ أزواج اﻻﺳﻢ واﻟﻘﻴﻤ ﺔ اﻷﺧﺮى ‪ ،‬ﻣ‬
‫ﺑ ﺔ وا‬
‫ﺑﺎﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﻄﻠﻮ‬‫ﺑﺎﻟﻮﻇﻴﻔ ﺔ‬
‫ﺜﻞ ﻫﺬه‪:‬‬
‫ﺘﻚ ﻟﻤﻜﺎﻟﻤ ﺔ ﻣ‬
‫ﺗﻌﻤﻞ وﻇﻴﻔ‬

‫= ‪ car = make_car ('subaru'، 'outback'، color = 'blue'، tow_package‬ﺻﺤﻴﺢ(‬

‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺘﺄﻛﺪ ﻣﻦﺗﺨﺰﻳﻦ ﺟﻤﻴﻊ اﻟﻤﻌﻠﻮﻣﺎ ت‬


‫ﺒﻊ اﻟﻘﺎﻣﻮس اﻟﺬيﺗﻢ إرﺟﺎﻋﻪ ﻟﻠ‬
‫اﻃ‬

‫ﺗﺨﺰﻳﻦ وﻇﺎﺋﻔﻚ ﻓ ﻲ وﺣﺪا ت‬


‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ﺋﻴ ﺴ ﻲ‪.‬‬
‫ﺑﺮﻧﺎﻣﺠﻚ اﻟﺮ‬‫ﺒﺮﻣﺠﻴ ﺔ ﻋﻦ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻞ اﻟ‬
‫ﺑﻬﺎ ﻛ‬‫ﺘ ﻲﺗﻔﺼﻞ‬
‫ﺜﻞ إﺣﺪى ﻣﻴﺰا ت اﻟﻮﻇﺎﺋﻒ ﻓ ﻲ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬
‫ﺘﻤ‬‫ﺗ‬
‫ﺑﻌﺪ ﻣﻦ ذﻟﻚ ﻣﻦ‬
‫ﺑﻌ ﺔ‪.‬ﻳﻤﻜﻨﻚ اﻟﺬ ﻫﺎ ب إﱃ أ‬
‫ﺘﺎ‬
‫ﺜﻴﺮ ﻓ ﻲ اﻟﻤ‬
‫ﺑﻜ‬‫ﺋﻴ ﺴ ﻲ أﺳﻬﻞ‬
‫ﺑﺮﻧﺎﻣﺠﻚ اﻟﺮ‬‫اﻷﺳﻤﺎء اﻟﻮﺻﻔﻴ ﺔ ﻟﻮﻇﺎﺋﻔﻚ ‪،‬ﺳﻴﻜﻮن‬
‫ﺘﻴﺮاد‬
‫ﺛﻢ اﻻﺳ‬‫ﺧﻼلﺗﺨﺰﻳﻦ وﻇﺎﺋﻔﻚ ﻓ ﻲ ﻣﻠﻒ ﻣﻨﻔﺼﻞﻳ ﺴﻤﻰ وﺣﺪة‬

‫ﺒﺮﻧﺎﻣﺞ ﻗﻴﺪ‬
‫ﺣﺎ ﻓ ﻲ ﻣﻠﻒ اﻟ‬
‫ﺘﺎ ً‬
‫ﺑﺠﻌﻞ اﻟﻜﻮد ﻓ ﻲ وﺣﺪة ﻧﻤﻄﻴ ﺔ ﻣ‬
‫ﺘﻴﺮاد ‪Python‬‬
‫ﺑﻴﺎن اﻻﺳ‬‫ﺒﺮ‬
‫ﺋﻴ ﺴ ﻲ‪.‬ﻳﺨ‬
‫ﺑﺮﻧﺎﻣﺠﻚ اﻟﺮ‬‫ﺗﻠﻚ اﻟﻮﺣﺪة ﻓ ﻲ‬
‫ﺘﺸﻐﻴﻞ ﺣﺎﻟ ًﻴﺎ‪.‬‬
‫اﻟ‬
‫ﺘﻮى اﻷﻋﲆ‪.‬‬
‫ﺘﺮﻛﻴﺰ ﻋﲆ ﻣﻨﻄﻘﻪ ذي اﻟﻤ ﺴ‬
‫ﺒﺮﻧﺎﻣﺞ واﻟ‬
‫ﺘﻴﺢ ﻟﻚﺗﺨﺰﻳﻦ وﻇﺎﺋﻔﻚ ﻓ ﻲ ﻣﻠﻒ ﻣﻨﻔﺼﻞ إﺧﻔﺎءﺗﻔﺎﺻﻴﻞ ﻛﻮد اﻟ‬
‫ﻳ‬
‫ﺘﺨﺰﻳﻦ وﻇﺎﺋﻔﻚ ﻓ ﻲ ﻣﻠﻔﺎ ت ﻣﻨﻔﺼﻠ ﺔ ‪،‬‬
‫ﺑ‬‫ﺘﻠﻔ ﺔ‪ .‬ﻋﻨﺪﻣﺎﺗﻘﻮم‬
‫ﺒﺮاﻣﺞ اﻟﻤﺨ‬
‫ﺘﺨﺪام اﻟﻮﻇﺎﺋﻒ ﻓ ﻲ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟ‬
‫ﺑﺈﻋﺎدة اﺳ‬‫ﻛﻤﺎﻳ ﺴﻤﺢ ﻟﻚ‬
‫ﺘﻴﺮاد‬
‫ﺘﻴﺢ ﻟﻚ ﻣﻌﺮﻓ ﺔ ﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺑﺎﻟﻜﺎﻣﻞ‪.‬ﺗ‬‫ﺑﺮﻧﺎﻣﺠﻚ‬‫ﺒﺮﻣﺠﻴﻦ آﺧﺮﻳﻦ دون اﻟﺤﺎﺟ ﺔ إﱃ ﻣﺸﺎرﻛ ﺔ‬
‫ﻳﻤﻜﻨﻚ ﻣﺸﺎرﻛ ﺔ ﻫﺬه اﻟﻤﻠﻔﺎ ت ﻣﻊ ﻣ‬
‫ﺒﺮﻣﺠﻮن آﺧﺮون‪.‬‬
‫ﺒﻬﺎ ﻣ‬
‫ﺘ‬‫ﺘ ﻲﻛ‬
‫ﺒﺎ ت اﻟﻮﻇﺎﺋﻒ اﻟ‬
‫ﺘ‬‫ﺘﺨﺪام ﻣﻜ‬ ‫اﻟﻮﻇﺎﺋﻒ أ ً‬
‫ﻳﻀﺎ اﺳ‬

‫ﺑﺈﻳﺠﺎز‪.‬‬ ‫ﺘﻴﺮاد وﺣﺪة ‪ ،‬وﺳﺄوﺿﺢ ﻟﻚ ً‬


‫ﻛﻼ ﻣﻦ ﻫﺬه اﻟﻄﺮق‬ ‫ﻫﻨﺎك ﻋﺪة ﻃﺮق ﻻﺳ‬

‫ﺘﻴﺮاد وﺣﺪة ﻛﺎﻣﻠ ﺔ‬


‫اﺳ‬
‫ﺘﺎج أوﻻ ً إﱃ إﻧﺸﺎء وﺣﺪة ﻧﻤﻄﻴ ﺔ‪ .‬وﺣﺪة _‬
‫ﺘﻴﺮاد اﻟﻮﻇﺎﺋﻒ ‪ ،‬ﻧﺤ‬
‫ﺒﺪء اﺳ‬
‫ﻟ‬
‫ﺘﻴﺮاده إﱃ ﻣﻠﻒ‬
‫ﺘﻮي ﻋﲆ اﻟﻜﻮد اﻟﺬيﺗﺮﻳﺪ اﺳ‬
‫ﺑـ ‪yp.‬ﻳﺤ‬‫ﺘﻬ ﻲ‬
‫ﻫﻮ ﻣﻠﻒﻳﻨ‬

‫ﺜﺎﻣﻦ‬
‫‪154‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮي ﻋﲆ اﻟﻮﻇﻴﻔ ﺔ ‪make_pizza ().‬ﻹﻧﺸﺎء ﻫﺬه اﻟﻮﺣﺪة ‪،‬ﺳﻨﺰﻳﻞ ﻛﻞ ﺷ ﻲء ﻣﻦ ﻣﻠﻒ ‪pizza.py‬‬


‫ﺑﺮﻧﺎﻣﺞ‪ .‬ﻟﻨﺼﻨﻊ وﺣﺪةﺗﺤ‬
‫ﺜﻨﺎء اﻟﻮﻇﻴﻔ ﺔ ‪make_pizza ():‬‬
‫ﺘ‬‫ﺑﺎﺳ‬

‫ﺘﺰا‬
‫ﺑﻴ‬ ‫ﺒﻘ ﺔ(‪:‬‬
‫‪)def make_pizza‬اﻟﺤﺠﻢ ‪* ،‬اﻟﻄ‬
‫ﺘ ﻲ ﻧﺤﻦ ﻋﲆ وﺷﻚ ﺻﻨﻌﻬﺎ‪"" ".‬‬ ‫ﺘﺰا اﻟ‬
‫ﺒﻴ‬‫"""ﻟﺨﺺ اﻟ‬
‫"‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﻋﻤﻞ ‪)a + str‬اﻟﺤﺠﻢ( ‪+‬‬‫ﻃ‬
‫ﺘﺎﻟﻴ ﺔ‪(":‬‬
‫ﺑﻮﺻ ﺔ ﻣﻊ اﻹﺿﺎﻓﺎ ت اﻟ‬‫ﺑﺤﺠﻢ‬‫ﺘﺰا‬
‫ﺑﻴ‬‫"‬
‫ﺒﻘ ﺔ‪:‬‬
‫ﺒ ﺔ اﻷوﱃ ﻓ ﻲ اﻟﻄ‬
‫ﺗ‬‫ﺘﻞ اﻟﻤﺮ‬
‫ﺘﺤ‬‫ﻟ‬
‫ﺘﺼﺪر(‬
‫ﺗ‬‫ﺒﺎﻋ ﺔ ‪("-" +‬‬
‫ﻃ‬

‫ﺘﻮرد ﻫﺬا‬
‫ﺜﻞ ‪pizza.py.‬ﻳ ﺴ‬
‫ﺑﺈﻧﺸﺎء ﻣﻠﻒ ﻣﻨﻔﺼﻞﻳ ﺴﻤﻰ ‪making_pizzas.py‬ﻓ ﻲ ﻧﻔ ﺲ اﻟﺪﻟﻴﻞ ﻣ‬‫ﺳﻨﻘﻮم اﻵن‬
‫ﺘﺪﻋﺎﺋﻴﻦ ﻟـ ‪make_pizza ():‬‬
‫ﺛﻢﻳﺠﺮي اﺳ‬‫ﺘﻮ‬
‫ﺘ ﻲ أﻧﺸﺄﻧﺎ ﻫﺎ ﻟﻠ‬
‫اﻟﻤﻠﻒ اﻟﻮﺣﺪة اﻟ‬

‫ﺘﻴﺮاد‬
‫ﺘﺰا اﺳ‬
‫ﺑﻴ‬ ‫ﺘﺰا‬
‫ﺒﻴ‬‫ﺻﻨﻊ اﻟ‬

‫)'‪u pizza.make_pizza (16، 'pepperoni‬‬


‫ﺒﻨ ﺔ إﺿﺎﻓﻴ ﺔ"(‬
‫‪"pizza.make_pizza (12 ،‬ﻓﻄﺮ" ‪" ،‬ﻓﻠﻔﻞ أﺧﻀﺮ" ‪" ،‬ﺟ‬

‫ﺘﺢ اﻟﻤﻠﻒ ‪pizza.py‬وﻧ ﺴﺦ ﺟﻤﻴﻊ‬


‫ﺑﻔ‬‫ﺒﺮ ‪Python‬‬
‫ﺘﺰاﻳﺨ‬
‫ﺒﻴ‬‫ﺘﻴﺮاد اﻟ‬
‫ﻋﻨﺪﻣﺎﺗﻘﺮأ ‪ Python‬ﻫﺬا اﻟﻤﻠﻒ ‪ ،‬ﻓﺈنﺳﻄﺮ اﺳ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫اﻟﻮﻇﺎﺋﻒ ﻣﻨﻪ ﻓ ﻲ ﻫﺬا اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺛﻨﺎءﺗﺸﻐﻴﻞ اﻟ‬
‫ﺗﻨ ﺴﺦ اﻟﺸﻔﺮة ﺧﻠﻒ اﻟﻜﻮاﻟﻴ ﺲ أ‬
‫ﺑﻴﻦ اﻟﻤﻠﻔﺎ تﻷن ‪Python‬‬‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻻﺗﺮى ﻓﻌﻠ ًﻴﺎ ﻧ ﺴﺦ اﻟ‬
‫ﺘﺎﺣ ﺔ اﻵن ﻓ ﻲ ‪making_pizzas.py.‬‬
‫ﺘﻜﻮن ﻣ‬
‫ﺘﻪ ﻫﻮ أن أي وﻇﻴﻔ ﺔ ﻣﺤﺪدة ﻓ ﻲ ‪pizza.py‬ﺳ‬
‫ﺘﺎج إﱃ ﻣﻌﺮﻓ‬
‫ﻛﻞ ﻣﺎﺗﺤ‬

‫ﺑﺎﺳﻢ اﻟﻮﻇﻴﻔ ﺔ ‪،‬‬‫ﺒﻮﻋً ﺎ‬


‫ﺘ‬‫ﺘﺰا ‪ ،‬ﻣ‬
‫ﺑﻴ‬‫ﺘﻴﺮاد ﻫﺎ ‪،‬‬
‫ﺑﺎﺳ‬‫ﺘ ﻲ ﻗﻤ ﺖ‬
‫ﺘﻮردة ‪ ،‬أدﺧﻞ اﺳﻢ اﻟﻮﺣﺪة اﻟ‬
‫ﺘﺪﻋﺎء وﻇﻴﻔ ﺔ ﻣﻦ وﺣﺪة ﻣ ﺴ‬
‫ﻻﺳ‬
‫ﺘﻮرد وﺣﺪة‪:‬‬
‫ﺒﺮﻧﺎﻣﺞ اﻷﺻﻠ ﻲ اﻟﺬي ﻟﻢﻳ ﺴ‬
‫ﺘﺞ ﻫﺬا اﻟﺮﻣﺰ ﻧﻔ ﺲ إﺧﺮاج اﻟ‬
‫ﺑﻨﻘﻄ ﺔ ‪u.‬ﻳﻨ‬‫‪make_pizza () ،‬ﻣﻔﺼﻮﻟ ﺔ‬

‫ﺒﺮوﻧ ﻲ‬
‫ﺑﻴ‬‫ﺘﺎﻟﻴ ﺔ‪- :‬‬
‫ﺘﺰا ﻣﻘﺎس ‪16‬إﻧ ﺶ ﻣﻊ اﻹﺿﺎﻓﺎ ت اﻟ‬
‫ﺑﻴ‬‫ﻋﻤﻞ‬

‫ﺘﺎﻟﻴ ﺔ‪- :‬ﻣﺸﺮوم‬


‫ﺘﺰا ﻣﻘﺎس ‪12‬اﻧ ﺶ ﻣﻊ اﻻﺿﺎﻓﺎ ت اﻟ‬
‫ﺑﻴ‬‫ﻋﻤﻞ‬

‫ﺒﻨ ﺔ اﺿﺎﻓﻴ ﺔ‬
‫‪-‬ﻓﻠﻔﻞ اﺧﻀﺮ ‪-‬ﺟ‬

‫ﺑﺎﺳﻢ اﻟﻮﺣﺪة ‪،‬ﺗﺠﻌﻞ ﻛﻞ وﻇﻴﻔ ﺔ ﻣﻦ‬‫ﺒﻮﻋً ﺎ‬


‫ﺘ‬‫ﺘﻴﺮاد ﻣ‬
‫ﺒ ﺴﺎﻃ ﺔ اﺳ‬
‫ﺑ‬‫ﺘ ﺐ ﻓﻴﻬﺎ‬
‫ﺘ ﻲﺗﻜ‬
‫ﺘﻴﺮاد ‪ ،‬واﻟ‬
‫ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ اﻷوﱃ ﻟﻼﺳ‬
‫ﺑﺎﺳﻢ‬‫ﺑﺄﻛﻤﻠﻬﺎ‬‫ﺘﻴﺮاد وﺣﺪة ﻧﻤﻄﻴ ﺔ‬
‫ﺘﻴﺮاد ﻻﺳ‬
‫ﺒﺎرة اﻻﺳ‬
‫ﺘﺨﺪم ﻫﺬا اﻟﻨﻮع ﻣﻦ ﻋ‬
‫ﺑﺮﻧﺎﻣﺠﻚ‪ .‬إذا ﻛﻨ ﺖﺗ ﺴ‬‫ﺘﺎﺣ ﺔ ﻓ ﻲ‬
‫اﻟﻮﺣﺪة ﻣ‬
‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺒﻨﻴ ﺔ اﻟ‬
‫ﺘﺎﺣ ﺔ ﻣﻦ ﺧﻼل اﻟ‬
‫‪module_name.py ،‬ﻓﺈن ﻛﻞ وﻇﻴﻔ ﺔ ﻓ ﻲ اﻟﻮﺣﺪةﺗﻜﻮن ﻣ‬

‫)( ‪module_name.function_name‬‬

‫اﻟﻤﻬﺎم‬ ‫‪155‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻴﺮاد وﻇﺎﺋﻒ ﻣﺤﺪدة‬


‫اﺳ‬
‫ﺒﻨﻴ ﺔ اﻟﻌﺎﻣ ﺔ ﻟﻬﺬا اﻟﻨﻬﺞ‪:‬‬
‫ﺘﻴﺮاد وﻇﻴﻔ ﺔ ﻣﻌﻴﻨ ﺔ ﻣﻦ وﺣﺪة ﻧﻤﻄﻴ ﺔ‪ .‬إﻟﻴﻚ اﻟ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﺳ‬

‫ﻣﻦ ‪module_name import function_name‬‬

‫ﺑﻔﺎﺻﻠ ﺔ‪:‬‬‫ﺘﻴﺮاد أي ﻋﺪدﺗﺮﻳﺪه ﻣﻦ اﻟﻮﻇﺎﺋﻒ ﻣﻦ وﺣﺪة ﻋﻦ ﻃﺮﻳﻖﺗﺼﻨﻴﻒ اﺳﻢ ﻛﻞ وﻇﻴﻔ ﺔ‬


‫ﻳﻤﻜﻨﻚ اﺳ‬

‫ﻣﻦ ‪module_name import function_0 ، function_1 ، function_2‬‬

‫ﺘﻴﺮاد‬
‫ﺑﻬﺬا اﻟﺸﻜﻞ إذا أردﻧﺎ اﻻﺳ‬
‫ﺜﺎل ‪making_pizzas.py‬‬
‫ﺒﺪو ﻣ‬
‫ﺳﻴ‬
‫ﺘﺨﺪﻣﻬﺎ‪:‬‬
‫ﺘ ﻲﺳﻨ ﺴ‬
‫ﻓﻘﻂ اﻟﻮﻇﻴﻔ ﺔ اﻟ‬

‫ﺘﻴﺮاد ‪make_pizza‬‬
‫ﺘﺰا اﺳ‬
‫ﺑﻴ‬‫ﻣﻦ‬

‫ﺒﺮوﻧ ﻲ"(‬
‫ﺑﻴ‬‫‪"make_pizza (16،‬‬
‫ﺒﻨ ﺔ إﺿﺎﻓﻴ ﺔ"(‬
‫‪"make_pizza (12 ،‬ﻓﻄﺮ" ‪" ،‬ﻓﻠﻔﻞ أﺧﻀﺮ" ‪" ،‬ﺟ‬

‫ﺘﻮردﻧﺎ ﺻﺮاﺣ ًﺔ اﻟﺪاﻟ ﺔ‬


‫ﺘﺪﻋﺎء داﻟ ﺔ‪ .‬ﻧﻈ ﺮًاﻷﻧﻨﺎ اﺳ‬
‫ﺘﺨﺪامﺗﺪوﻳﻦ اﻟﻨﻘﻄ ﺔ ﻋﻨﺪ اﺳ‬
‫ﺘﺎج إﱃ اﺳ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻫﺬا ‪ ،‬ﻻﺗﺤ‬‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬
‫ﺘﺨﺪم اﻟﺪاﻟ ﺔ‪.‬‬
‫ﺑﺎﻻﺳﻢ ﻋﻨﺪﻣﺎ ﻧ ﺴ‬‫ﺘﻬﺎ‬
‫ﺘﻴﺮاد ‪،‬ﻳﻤﻜﻨﻨﺎﺗ ﺴﻤﻴ‬
‫ﺑﻴﺎن اﻻﺳ‬‫)( ‪make_pizza‬ﻓ ﻲ‬

‫ﺘﻌﺎر ﻹﻋﻄﺎء وﻇﻴﻔ ﺔ‬


‫ﺘﺨﺪام اﺳﻢ ﻣ ﺴ‬
‫اﺳ‬
‫ﺑﺮﻧﺎﻣﺠﻚ أو إذا ﻛﺎن اﺳﻢ اﻟﻮﻇﻴﻔ ﺔ ﻃﻮﻳ ﻼ ً ‪،‬‬‫ﺘﻌﺎرض ﻣﻊ اﺳﻢ ﻣﻮﺟﻮد ﻓ ﻲ‬
‫ﺘﻴﺮاد ﻫﺎﻳ‬
‫ﺑﺎﺳ‬‫ﺘ ﻲﺗﻘﻮم‬
‫إذا ﻛﺎن اﺳﻢ اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺘﻌﻄ ﻲ اﻟﻮﻇﻴﻔ ﺔ ﻫﺬا اﻟﻠﻘ ﺐ‬
‫ﺘﻌﺎر ﻟﻠﻮﻇﻴﻔ ﺔ‪.‬ﺳ‬
‫ﺑﻪ ﻻﺳﻢ ﻣ ﺴ‬
‫ﺑﺪﻳﻞ ﻣﺸﺎ‬‫ﺘﻌﺎر ﻗﺼﻴﺮ وﻓﺮﻳﺪ ‪-‬اﺳﻢ‬
‫ﺘﺨﺪام اﺳﻢ ﻣ ﺴ‬
‫ﻓﻴﻤﻜﻨﻚ اﺳ‬
‫ﺘﻴﺮاد اﻟﻮﻇﻴﻔ ﺔ‪.‬‬
‫اﻟﺨﺎص ﻋﻨﺪ اﺳ‬

‫ﺘﻴﺮاد‬
‫ﺘﻌﺎ ًرا ‪mp () ، ،‬ﻋﻦ ﻃﺮﻳﻖ اﻻﺳ‬
‫ﺳﻤﺎ ﻣ ﺴ‬
‫ﻫﻨﺎ ﻧﻌﻄ ﻲ اﻟﺪاﻟ ﺔ )( ‪make_pizza‬ا ً‬
‫ﺘﻌﺎر اﻟﺬيﺗﻮﻓﺮه‪:‬‬
‫ﺘﺨﺪام اﻻﺳﻢ اﻟﻤ ﺴ‬
‫ﺑﺎﺳ‬‫ﺗ ﺴﻤﻴ ﺔ داﻟ ﺔ‬
‫ﺜﻞ اﻟﻨﺎﺋ ﺐ‪.‬ﺗﻌﻴﺪ اﻟﻜﻠﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ " ‪"as‬‬
‫‪make_pizza‬ﻣ‬

‫ﺘﺰا ‪make_pizza as mp‬‬


‫ﺒﻴ‬‫ﺘﻴﺮاد اﻟ‬
‫ﻣﻦ اﺳ‬

‫ﺒﺮوﻧ ﻲ"(‬‫ﺑﻴ‬
‫اﻟﻨﺎﺋ ﺐ ‪"(16 ،‬‬
‫ﺒﻨ ﺔ إﺿﺎﻓﻴ ﺔ"(‬
‫اﻟﻨﺎﺋ ﺐ ‪"(12 ،‬ﻓﻄﺮ" ‪" ،‬ﻓﻠﻔﻞ أﺧﻀﺮ" ‪" ،‬ﺟ‬

‫ﺒﺮﻧﺎﻣﺞ‪ .‬ﻓ ﻲ أي وﻗ ﺖ ﻧﺮﻳﺪ‬


‫ﺘﻴﺮاد اﻟﻤﻮﺿﺢ ﻫﻨﺎﺗ ﺴﻤﻴ ﺔ اﻟﻮﻇﻴﻔ ﺔ )( ‪make_pizza‬إﱃ )( ‪mp‬ﻓ ﻲ ﻫﺬا اﻟ‬
‫ﺑﻴﺎن اﻻﺳ‬‫ﻳﻌﻴﺪ‬
‫ﺘﺸﻐﻴﻞ اﻟﻜﻮد ﻓ ﻲ )(‬
‫ﺑ‬‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ‪ ،‬وﺳﻴﻘﻮم ‪Python‬‬
‫ﺑ ﺔ )( ‪mp‬‬
‫ﺘﺎ‬
‫ﺒ ﺴﺎﻃ ﺔ ﻛ‬
‫ﺑ‬‫ﺘﺪﻋﺎء ‪make_pizza () ،‬ﻳﻤﻜﻨﻨﺎ‬
‫اﺳ‬
‫ﺒﺮﻧﺎﻣﺞ ﻫﺬا‪.‬‬
‫ﺒ ﺖ ﻋﺸﺮة ﻓ ﻲ ﻣﻠﻒ اﻟ‬
‫ﺘ‬‫ﺑﻤﺎﺗﻜﻮن ﻗﺪ ﻛ‬
‫‪make_pizza‬ﻣﻊﺗﺠﻨ ﺐ أي ﺧﻠﻂ ﻣﻊ وﻇﻴﻔ ﺔ أﺧﺮى )( ‪make_pizza‬ر‬

‫ﺘﻌﺎر ﻫ ﻲ‪:‬‬
‫ﺘﻘﺪﻳﻢ اﺳﻢ ﻣ ﺴ‬
‫اﻟﺼﻴﻐ ﺔ اﻟﻌﺎﻣ ﺔ ﻟ‬

‫ﺘﻴﺮاد ‪function_name‬ﻛـ ‪fn‬‬


‫ﻣﻦ ‪module_name‬اﺳ‬

‫ﺜﺎﻣﻦ‬
‫‪156‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻌﺎر‬
‫ﺘﺨﺪام ﻛـ ﻹﻋﻄﺎء وﺣﺪة ﻧﻤﻄﻴ ﺔ اﺳﻢ ﻣ ﺴ‬
‫اﺳ‬

‫ﺘﺰا ‪،‬‬
‫ﺒﻴ‬‫ﺜﻞ ‪p‬ﻟﻠ‬
‫ﺘﻌﺎ ًرا ﻗﺼﻴ ﺮًا ‪ ،‬ﻣ‬
‫ﺳﻤﺎ ﻣ ﺴ‬
‫ﺘﻴﺢ ﻟﻚ إﻋﻄﺎء وﺣﺪة ﻧﻤﻄﻴ ﺔ ا ً‬
‫ﺘﻌﺎر ﻻﺳﻢ اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ‪.‬ﻳ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎﺗﻮﻓﻴﺮ اﺳﻢ ﻣ ﺴ‬
‫ﺒﺮ‪.‬‬
‫ﺑ ﺴﺮﻋ ﺔ أﻛ‬‫ﺘﺪﻋﺎء وﻇﺎﺋﻒ اﻟﻮﺣﺪة‬
‫اﺳ‬
‫ﺜﺮ إﻳﺠﺎ ًزا ﻣﻦ اﺳ‬
‫ﺘﺪﻋﺎء ‪pizza.make_pizza ():‬‬ ‫ﺘﺪﻋﺎء )( ‪p.make_pizza‬أﻛ‬
‫ﻳﻌﺪ اﺳ‬

‫ﺜﻞ ‪p‬‬
‫ﺘﺰا ﻣ‬
‫ﺑﻴ‬‫ﺘﻴﺮاد‬
‫اﺳ‬

‫ﺒﺮوﻧ ﻲ"(‬
‫ﺑﻴ‬‫‪"p.make_pizza (16 ،‬‬
‫ﺒﻨ ﺔ إﺿﺎﻓﻴ ﺔ"(‬
‫‪"p.make_pizza (12 ،‬ﻓﻄﺮ" ‪" ،‬ﻓﻠﻔﻞ أﺧﻀﺮ" ‪" ،‬ﺟ‬

‫ﺑﺄﺳﻤﺎﺋﻬﺎ اﻷﺻﻠﻴ ﺔ‪.‬‬‫ﺘﻔﻆ‬


‫ﺘﻴﺮاد ‪ ،‬ﻟﻜﻦ ﺟﻤﻴﻊ وﻇﺎﺋﻒ اﻟﻮﺣﺪةﺗﺤ‬
‫ﺑﻴﺎن اﻻﺳ‬‫ﺘﻌﺎر ‪p‬ﻓ ﻲ‬
‫ﺘﺰا اﻟﻮﺣﺪة اﻻﺳﻢ اﻟﻤ ﺴ‬
‫ﺑﻴ‬‫ﺘﻢ إﻋﻄﺎء‬
‫ﻳ‬
‫ﺑ ﺔ ‪pizza.make_pizza () ،‬وﻟﻜﻨﻪ‬‫ﺜﺮ إﻳﺠﺎ ًزا ﻣﻦ ﻛ‬
‫ﺘﺎ‬ ‫ﺑ ﺔ )( ‪p.make_pizza‬ﻟﻴ ﺲ ﻓﻘﻂ أﻛ‬
‫ﺘﺎ‬
‫ﺘﺪﻋﺎء اﻟﻮﻇﺎﺋﻒ ﻋﻦ ﻃﺮﻳﻖ ﻛ‬
‫اﺳ‬
‫ﺒﺮ أﺳﻤﺎء اﻟﻮﻇﺎﺋﻒ ﻫﺬه ‪،‬‬
‫ﺘ‬‫ﺘﺮﻛﻴﺰ ﻋﲆ اﻷﺳﻤﺎء اﻟﻮﺻﻔﻴ ﺔ ﻟﻮﻇﺎﺋﻔﻬﺎ‪.‬ﺗﻌ‬
‫ﺑﺎﻟ‬‫ﺒﺎ ﻫﻚ ﻣﻦ اﺳﻢ اﻟﻮﺣﺪة وﻳ ﺴﻤﺢ ﻟﻚ‬
‫ﺘ‬ ‫أ ً‬
‫ﻳﻀﺎﻳﻌﻴﺪﺗﻮﺟﻴﻪ اﻧ‬
‫ﺘﺨﺪام اﺳﻢ‬
‫ﺑﻚ ﻣﻦ اﺳ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺜﺮ أ ﻫﻤﻴ ﺔ ﻟ ﺴﻬﻮﻟ ﺔ ﻗﺮاءة اﻟ‬
‫ﺑﻮﺿﻮح ﻣﺎﺗﻔﻌﻠﻪ ﻛﻞ وﻇﻴﻔ ﺔ ‪ ،‬أﻛ‬‫ﺒﺮك‬
‫ﺘ ﻲﺗﺨ‬
‫اﻟ‬
‫اﻟﻮﺣﺪة اﻟﻜﺎﻣﻞ‪.‬‬

‫اﻟﺼﻴﻐ ﺔ اﻟﻌﺎﻣ ﺔ ﻟﻬﺬا اﻟﻨﻬﺞ ﻫ ﻲ‪:‬‬

‫ﺘﻴﺮاد ‪module_name‬ﻛـ ‪mn‬‬


‫اﺳ‬

‫ﺘﻴﺮاد ﺟﻤﻴﻊ اﻟﻮﻇﺎﺋﻒ ﻓ ﻲ وﺣﺪة ﻧﻤﻄﻴ ﺔ‬


‫اﺳ‬

‫ﺘﺸﻐﻴﻞ ‪aster isk (*) :‬‬


‫ﺘﺨﺪام ﻋﺎﻣﻞ اﻟ‬
‫ﺑﺎﺳ‬‫ﺘﻴﺮاد ﻛﻞ وﻇﻴﻔ ﺔ ﻓ ﻲ وﺣﺪة ﻧﻤﻄﻴ ﺔ‬
‫ﺑﺎﺳ‬
‫ﺒﺎر ‪Python‬‬
‫ﻳﻤﻜﻨﻚ إﺧ‬

‫*‬
‫ﺘﺰا‬
‫ﺒﻴ‬‫ﺘﻴﺮاد اﻟ‬
‫ﻣﻦ اﺳ‬

‫ﺒﺮوﻧ ﻲ"(‬
‫ﺑﻴ‬‫‪"make_pizza (16،‬‬
‫ﺒﻨ ﺔ إﺿﺎﻓﻴ ﺔ"(‬
‫‪"make_pizza (12 ،‬ﻓﻄﺮ" ‪" ،‬ﻓﻠﻔﻞ أﺧﻀﺮ" ‪" ،‬ﺟ‬

‫ﺒﺮﻧﺎﻣﺞ ﻫﺬا‪ .‬ﻧﻈ ًﺮا‬


‫ﺘﺰا إﱃ ﻣﻠﻒ اﻟ‬
‫ﺒﻴ‬‫ﺑﻨ ﺴﺦ ﻛﻞ وﻇﻴﻔ ﺔ ﻣﻦ وﺣﺪة اﻟ‬
‫ﺘﻴﺮاد ‪Python‬‬
‫ﺑﻴﺎن اﻻﺳ‬‫ﺒﺮ اﻟﻌﻼﻣ ﺔ اﻟﻨﺠﻤﻴ ﺔ ﻓ ﻲ‬
‫ﺗﺨ‬
‫ﺘﺨﺪامﺗﺪوﻳﻦ اﻟﻨﻘﻄ ﺔ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻣﻦ اﻷﻓﻀﻞ‬
‫ﺑﺎﻻﺳﻢ دون اﺳ‬‫ﺘﺪﻋﺎء ﻛﻞ وﻇﻴﻔ ﺔ‬
‫ﺘﻴﺮاد ﻛﻞ وﻇﻴﻔ ﺔ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﻢ اﺳ‬
‫ﻷﻧﻪﻳ‬
‫ﺳﻤﺎ ﻣﻮﺟﻮدًا ﻓ ﻲ‬
‫ﺑﻖ ا ً‬
‫ﺒﻬﺎ‪ :‬إذا ﻛﺎن ﻟﻠﻮﺣﺪة اﺳﻢ وﻇﻴﻔ ﺔﻳﻄﺎ‬
‫ﺘ‬‫ﺒﺮ ﻟﻢﺗﻜ‬
‫ﺘﺨﺪام ﻫﺬا اﻷﺳﻠﻮ ب ﻋﻨﺪ اﻟﻌﻤﻞ ﻣﻊ وﺣﺪا ت أﻛ‬
‫ﻋﺪم اﺳ‬
‫ﺘﻐﻴﺮا ت‬
‫ﺘﻮﻗﻌ ﺔ‪ .‬ﻗﺪﺗﺮى ‪Python‬اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻮﻇﺎﺋﻒ أو اﻟﻤ‬
‫ﺘﺎﺋﺞ ﻏﻴﺮ اﻟﻤ‬
‫ﺑﻌﺾ اﻟﻨ‬‫ﻣﺸﺮوﻋﻚ ‪ ،‬ﻓﻴﻤﻜﻨﻚ اﻟﺤﺼﻮل ﻋﲆ‬
‫ﺘ ﺐ ﻓﻮق اﻟﻮﻇﺎﺋﻒ‪.‬‬
‫ﺘﻜ‬‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ ‪ ،‬ﻓﺈﻧﻬﺎﺳ‬ ‫ﺑﺪﻻ ً ﻣﻦ اﺳ‬
‫ﺘﻴﺮاد ﺟﻤﻴﻊ اﻟﻮﻇﺎﺋﻒ‬ ‫ﺑﻨﻔ ﺲ اﻻﺳﻢ ‪ ،‬و‬

‫ﺘﺨﺪامﺗﺪوﻳﻦ‬
‫ﺑﺄﻛﻤﻠﻬﺎ واﺳ‬‫ﺘﻴﺮاد اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ‬
‫ﺘ ﻲﺗﺮﻳﺪ ﻫﺎ ‪ ،‬أو اﺳ‬
‫ﺘﻴﺮاد اﻟﻮﻇﻴﻔ ﺔ أو اﻟﻮﻇﺎﺋﻒ اﻟ‬
‫أﻓﻀﻞ ﻃﺮﻳﻘ ﺔ ﻫ ﻲ اﺳ‬
‫ﺜﻞ‬
‫ﺘﻴﺮاد ﻣ‬
‫ﺒﺎرا ت اﻻﺳ‬
‫ﺘﻌﺮف ﻋﲆ ﻋ‬
‫ﺘﻰﺗ‬
‫ﺘﻀﻤﻴﻦ ﻫﺬا اﻟﻘ ﺴﻢ ﺣ‬
‫ﺑ‬‫ﺗﻪ وﻓﻬﻤﻪ‪ .‬أﻗﻮم‬
‫اﻟﻨﻘﻄ ﺔ‪.‬ﻳﺆدي ﻫﺬا إﱃ رﻣﺰ واﺿﺢﻳ ﺴﻬﻞ ﻗﺮاء‬
‫ﻣﺎﻳﻠ ﻲ ﻋﻨﺪﻣﺎﺗﺮا ﻫﺎ ﻓ ﻲ رﻣﺰ اﻷﺷﺨﺎص اﻵﺧﺮﻳﻦ‪:‬‬

‫*‬
‫ﺘﻴﺮاد ‪module_name‬‬
‫ﻣﻦ اﺳ‬

‫اﻟﻮﻇﺎﺋﻒ ‪157‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺼﻤﻴﻢ‬
‫وﻇﺎﺋﻒ اﻟ‬
‫ﺘﺼﻤﻴﻢ‪.‬‬ ‫ﺑﻮﻇﺎﺋﻒ اﻟ‬‫ﺘﻔﺎﺻﻴﻞ ﻋﻨﺪﻣﺎﺗﻘﻮم‬ ‫ﺑﻌﺾ اﻟ‬‫ﺒﺎرك‬
‫ﺘ‬‫ﻳﺠ ﺐ أنﺗﻀﻊ ﻓ ﻲ اﻋ‬
‫ً‬
‫أﺣﺮﻓﺎ ﺻﻐﻴﺮة وﺷﺮﻃﺎ تﺳﻔﻠﻴ ﺔ‪.‬ﺗ ﺴﺎﻋﺪك‬ ‫ﺘﺨﺪم ﻫﺬه اﻷﺳﻤﺎء‬ ‫ﺘﻮي اﻟﻮﻇﺎﺋﻒ ﻋﲆ أﺳﻤﺎء وﺻﻔﻴ ﺔ ‪ ،‬وﻳﺠ ﺐ أنﺗ ﺴ‬‫ﻳﺠ ﺐ أنﺗﺤ‬
‫ﺘﺨﺪم أﺳﻤﺎء اﻟﻮﺣﺪا ت ﻫﺬه اﻻﺻﻄﻼﺣﺎ ت‬
‫ﺑﻪ‪.‬ﻳﺠ ﺐ أنﺗ ﺴ‬‫ﺗﻚ اﻟﻘﻴﺎم‬
‫اﻷﺳﻤﺎء اﻟﻮﺻﻔﻴ ﺔ واﻵﺧﺮﻳﻦ ﻋﲆ ﻓﻬﻢ ﻣﺎﺗﺤﺎول ﺷﻔﺮ‬
‫أ ً‬
‫ﻳﻀﺎ‪.‬‬

‫ﺑﻌﺪ‬‫ﺒﺎﺷﺮة‬
‫ﺘﻌﻠﻴﻖ ﻣ‬
‫ﺑﺈﻳﺠﺎز ﻣﺎﺗﻔﻌﻠﻪ اﻟﻮﻇﻴﻔ ﺔ‪.‬ﻳﺠ ﺐ أنﻳﻈﻬﺮ ﻫﺬا اﻟ‬‫ﺘﻮي ﻛﻞ وﻇﻴﻔ ﺔ ﻋﲆﺗﻌﻠﻴﻖﻳﺸﺮح‬
‫ﻳﺠ ﺐ أنﺗﺤ‬
‫ﺘﺨﺪام اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺒﺮﻣﺠﻴﻦ اﻵﺧﺮﻳﻦ اﺳ‬
‫ﺛﻘ ﺔ ﺟﻴﺪًا ‪،‬ﻳﻤﻜﻦ ﻟﻠﻤ‬
‫ﺘﺨﺪامﺗﻨ ﺴﻴﻖ ‪docstring.‬ﻓ ﻲ وﻇﻴﻔ ﺔ ﻣﻮ‬
‫ﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ واﺳ‬
‫ﺑﺄن اﻟﻜﻮدﻳﻌﻤﻞ ﻛﻤﺎ ﻫﻮ‬‫ﺛﻮق‬
‫ﻣﻦ ﺧﻼل ﻗﺮاءة اﻟﻮﺻﻒ ﻓﻘﻂ ﻓ ﻲﺳﻠ ﺴﻠ ﺔ ‪docstring.‬ﻳﺠ ﺐ أنﻳﻜﻮﻧﻮا ﻗﺎدرﻳﻦ ﻋﲆ اﻟﻮ‬
‫ﺘ ﻲﺗﺮﺟﻌﻬﺎ ‪،‬ﻳﺠ ﺐ أنﻳﻜﻮﻧﻮا‬
‫ﺘﺎﺟﻬﺎ ‪ ،‬وﻧﻮع اﻟﻘﻴﻤ ﺔ اﻟ‬
‫ﺘ ﻲﺗﺤ‬
‫ﻣﻮﺻﻮف ‪ ،‬وﻃﺎﻟﻤﺎ أﻧﻬﻢﻳﻌﺮﻓﻮن اﺳﻢ اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬واﻟﺤﺠﺞ اﻟ‬
‫ﺑﺮاﻣﺠﻬﻢ‪.‬‬‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ‬
‫ﻗﺎدرﻳﻦ ﻋﲆ اﺳ‬

‫ﺘ ﺴﺎوي‪:‬‬
‫ﺒ ﻲ ﻋﻼﻣ ﺔ اﻟ‬
‫ﺘﺨﺪام ﻣ ﺴﺎﻓﺎ ت ﻋﲆ ﺟﺎﻧ‬
‫ﺘﺮاﺿﻴ ﺔ ﻟﻠﻤﻌﻠﻤ ﺔ ‪ ،‬ﻓﻼﻳﺠ ﺐ اﺳ‬
‫إذا ﺣﺪد ت ﻗﻴﻤ ﺔ اﻓ‬

‫ﺘﺮاﺿﻴ ﺔ"(‬
‫" = ‪def function_name (parameter_0، parameter_1‬اﻟﻘﻴﻤ ﺔ اﻻﻓ‬

‫ﺘﺪﻋﺎءا ت اﻟﻮﻇﻴﻔﻴ ﺔ‪:‬‬


‫ﺋﻴ ﺴﻴ ﺔ ﻓ ﻲ اﻻﺳ‬
‫ﺘﺨﺪام ﻧﻔ ﺲ اﻻﺻﻄﻼح ﻟﻮﺳﺎﺋﻂ اﻟﻜﻠﻤﺎ ت اﻟﺮ‬
‫ﻳﺠ ﺐ اﺳ‬

‫)'‪function_name (value_0، parameter_1 = 'value‬‬

‫ﺑـ ‪79‬‬ ‫ﺒﺮﻣﺠﻴ ﺔ‬‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬


‫ﺘﻘﻴﻴﺪﺳﻄﻮر اﻟ‬ ‫ﺑ‬
‫ﻳﻮﺻ ﻲ )‪PEP 8 (https://www.python.org/dev/peps/pep-0008/‬‬
‫ﺒ ﺖ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻤﻌﻠﻤﺎ ت ﻓ ﻲ أنﻳﺰﻳﺪ ﻃﻮل‬ ‫ﺒ‬‫ﺑﺤﺠﻢ ﻣﻌﻘﻮل‪ .‬إذاﺗ ﺴ‬ ‫ﺋ ًﻴﺎ ﻓ ﻲ ﻧﺎﻓﺬة ﻣﺤﺮر‬
‫ﺑﺤﻴ ﺚﻳﻜﻮن ﻛﻞﺳﻄﺮ ﻣﺮ‬ ‫ً‬
‫ﺣﺮﻓﺎ‬
‫ﺘﺎﻟ ﻲ ‪ ،‬اﺿﻐﻂ‬
‫ﺘﻌﺮﻳﻒ‪ .‬ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟ‬ ‫ﺘﺢ ﻓ ﻲﺳﻄﺮ اﻟ‬
‫ﺑﻌﺪ ﻗﻮس اﻟﻔ‬ ‫ﺘﺎح اﻹدﺧﺎل‬ ‫ً‬
‫ﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ ﻋﻦ ‪79‬ﺣﺮﻓﺎ ‪ ،‬ﻓﺎﺿﻐﻂ ﻋﲆ ﻣﻔ‬
‫ﺘﻮى‬
‫ﺑﺎدﺋ ﺔ ﻟﻬﺎ ﻋﲆ ﻣ ﺴ‬‫ﺘﻢ وﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬
‫ﺘ ﻲﺳﻴ‬
‫ﺗﻴﻦ ﻟﻔﺼﻞ ﻗﺎﺋﻤ ﺔ اﻟﻮﺳﻴﻄﺎ ت ﻋﻦ ﺟ ﺴﻢ اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬واﻟ‬
‫ﺘﺎح ‪tab‬ﻣﺮ‬
‫ﻋﲆ ﻣﻔ‬
‫واﺣﺪ ﻓﻘﻂ‪.‬‬

‫ﻳﺼﻄﻒ ﻣﻌﻈﻢ اﻟﻤﺤﺮرﻳﻦﺗﻠﻘﺎﺋ ًﻴﺎ أيﺳﻄﻮر إﺿﺎﻓﻴ ﺔ ﻣﻦ اﻟﻤﻌﻠﻤﺎ ت إﱃ‬


‫ﺗﻬﺎ ﻓ ﻲ اﻟ ﺴﻄﺮ اﻷول‪:‬‬
‫ﺘ ﻲ أﻧﺸﺄ‬
‫ﺒﺎدﺋ ﺔ اﻟ‬
‫ﺑﻖ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺗﻄﺎ‬

‫( ‪def function_name‬‬
‫اﻟﻤﻌﻠﻤ ﺔ_‪ ، 0‬اﻟﻤﻌﻠﻤ ﺔ_‪ ، 1‬اﻟﻤﻌﻠﻤ ﺔ_‪، 2‬‬
‫اﻟﻤﻌﻠﻤ ﺔ_‪ ، 3‬اﻟﻤﻌﻠﻤ ﺔ_‪ ، 4‬اﻟﻤﻌﻠﻤ ﺔ_‪:(5‬‬
‫وﻇﻴﻔ ﺔ اﻟﺠ ﺴﻢ ‪...‬‬

‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ‬‫ﺑﺬﻟﻚ‬‫ﺜﺮ ﻣﻦ وﻇﻴﻔ ﺔ واﺣﺪة ‪ ،‬ﻓﻴﻤﻜﻨﻚ اﻟﻘﻴﺎم‬


‫ﺘﻮي ﻋﲆ أﻛ‬
‫ﺑﻚﺗﺤ‬‫ﺒﺮﻧﺎﻣﺞ أو اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫إذا ﻛﺎن اﻟ‬
‫ﺘﺎﻟﻴ ﺔ‪.‬‬
‫ﺒﺪأ اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺗ‬‫ﺘﻬ ﻲ وﻇﻴﻔ ﺔ واﺣﺪة و‬
‫ﺘ ﺴﻬﻴﻞ ﻣﻌﺮﻓ ﺔ أﻳﻦﺗﻨ‬
‫ﺘﻘﻴﻴﻢ ﻛﻞ ﻣﻨﻬﺎ ﻣﻦ ﺧﻼلﺳﻄﺮﻳﻦ ﻓﺎرﻏﻴﻦ ﻟ‬
‫ﺑ‬‫ﻗﻢ‬

‫ﺑﺪاﻳ ﺔ اﻟﻤﻠﻒ‪.‬‬‫ﺘﻴﺮاد ﻓ ﻲ‬
‫ﺑﻴﺎﻧﺎ ت اﻻﺳ‬‫ﺑ ﺔ ﺟﻤﻴﻊ‬
‫ﺘﺎ‬
‫ﻳﺠ ﺐ ﻛ‬
‫ﺒﺮﻧﺎﻣﺞ ﻛﻜﻞ‪.‬‬
‫ﺑﺪاﻳ ﺔ اﻟﻤﻠﻒ ﻟﻮﺻﻒ اﻟ‬‫ﺘﻌﻠﻴﻘﺎ ت ﻓ ﻲ‬
‫ﺘﺨﺪام اﻟ‬
‫ﺜﻨﺎء اﻟﻮﺣﻴﺪ ﻫﻮ اﺳ‬
‫ﺘ‬‫اﻻﺳ‬

‫ﺜﺎﻣﻦ‬
‫‪158‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺜﺎل ‪print_models.py‬ﻓ ﻲ ﻣﻠﻒ ﻣﻨﻔﺼﻞﻳ ﺴﻤﻰ‬


‫ﺒﺎﻋ ﺔ‪ :‬ﺿﻊ وﻇﺎﺋﻒ ﻣ‬
‫‪8-15.‬ﻧﻤﺎذج اﻟﻄ‬
‫ﺘﻌﺪﻳﻞ‬
‫ﺑ‬‫ﺘﻴﺮاد ﻓ ﻲ اﻟﺠﺰء اﻟﻌﻠﻮي ﻣﻦ ‪print_models.py ،‬وﻗﻢ‬
‫ﺒﺎرة اﺳ‬
‫ﺘﺐ ﻋ‬
‫‪printing_functions.py.‬اﻛ‬
‫ﺘﻮردة‪.‬‬
‫ﺘﺨﺪام اﻟﻮﻇﺎﺋﻒ اﻟﻤ ﺴ‬
‫اﻟﻤﻠﻒ ﻻﺳ‬

‫ﺘﺨﺰﻳﻦ ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻓ ﻲ ﻣﻠﻒ ﻣﻨﻔﺼﻞ‪ .‬ﻗﻢ‬


‫ﺑ‬‫ﺑﻪ وﻇﻴﻔ ﺔ واﺣﺪة ‪ ،‬ﻗﻢ‬‫ﺘﻪ‬
‫ﺒ‬‫ﺘ‬‫ﺑﺮﻧﺎﻣﺞ ﻛ‬‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫‪8-16.‬اﻟﻮاردا ت‪:‬‬
‫ﺘﺨﺪام ﻛﻞ ﻣﻦ ﻫﺬه اﻟﻄﺮق‪:‬‬
‫ﺑﺎﺳ‬‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺑﻚ ‪ ،‬واﺳ‬‫ﺋﻴ ﺴ ﻲ اﻟﺨﺎص‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﺮ‬
‫ﺘﻴﺮاد اﻟﻮﻇﻴﻔ ﺔ إﱃ ﻣﻠﻒ اﻟ‬
‫ﺑﺎﺳ‬

‫ﺘﻴﺮاد ‪module_name‬‬
‫اﺳ‬
‫ﻣﻦ ‪module_name import function_name‬‬
‫ﺘﻴﺮاد ‪function_name‬ﻛـ ‪fn‬‬
‫ﻣﻦ ‪module_name‬اﺳ‬
‫ﺘﻴﺮاد ‪module_name‬ﻛـ ‪mn‬‬
‫اﺳ‬
‫*‬
‫ﺘﻴﺮاد ‪module_name‬‬
‫ﻣﻦ اﺳ‬

‫ﺘﺼﻤﻴﻢ‬
‫ﺒﺎﻋﻬﺎ ﻹرﺷﺎدا ت اﻟ‬
‫ﺗ‬‫ﺗﺄﻛﺪ ﻣﻦ ا‬
‫ﺘﻬﺎ ﻟﻬﺬا اﻟﻔﺼﻞ ‪ ،‬و‬
‫ﺒ‬‫ﺘ‬‫ﺑﺮاﻣﺞ ﻛ‬‫ﺛﺔ‬
‫ﺛﻼ‬‫ﺘﺮ أي‬
‫ﺘﺼﻤﻴﻢ‪ :‬اﺧ‬
‫‪8-17.‬وﻇﺎﺋﻒ اﻟ‬
‫اﻟﻤﻮﺿﺤ ﺔ ﻓ ﻲ ﻫﺬا اﻟﻘ ﺴﻢ‪.‬‬

‫ﻣﻠﺨﺺ‬
‫ﺘﻲ‬
‫ﺘﻤﻜﻦ وﻇﺎﺋﻔﻚ ﻣﻦ اﻟﻮﺻﻮل إﱃ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘﻰﺗ‬
‫ﺗﻤﺮﻳﺮ اﻟﺤﺠﺞ ﺣ‬
‫ﺑ ﺔ اﻟﻮﻇﺎﺋﻒ و‬
‫ﺘﺎ‬
‫ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛﻴﻔﻴ ﺔ ﻛ‬
‫ﺒﻮل ﻋﺪدﺗﻌ ﺴﻔ ﻲ‬
‫ﺘﺨﺪام اﻟﺤﺠﺞ اﻟﻤﻮﺿﻌﻴ ﺔ واﻟﻜﻠﻤﺎ ت اﻷﺳﺎﺳﻴ ﺔ ‪ ،‬وﻛﻴﻔﻴ ﺔ ﻗ‬
‫ﺑﻌﻤﻠﻬﺎ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔ اﺳ‬‫ﺘﺎﺟﻬﺎ ﻟﻠﻘﻴﺎم‬
‫ﺗﺤ‬
‫ُﺮﺟﻊ اﻟﻘﻴﻢ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺘﺨﺪام اﻟﻮﻇﺎﺋﻒ ﻣﻊ اﻟﻘﻮاﺋﻢ‬ ‫ﺘ ﻲﺗ‬
‫ﻣﻦ اﻟﺤﺠﺞ‪ .‬ﻟﻘﺪ رأﻳ ﺖ وﻇﺎﺋﻒﺗﻌﺮض اﻹﺧﺮاج واﻟﻮﻇﺎﺋﻒ اﻟ‬
‫ﺒﺎرا ت ‪if‬و ‪while loops.‬ﻟﻘﺪ رأﻳ ﺖ أ ً‬
‫ﻳﻀﺎ ﻛﻴﻔﻴ ﺔﺗﺨﺰﻳﻦ وﻇﺎﺋﻔﻚ ﻓ ﻲ ﻣﻠﻔﺎ ت ﻣﻨﻔﺼﻠ ﺔﺗ ﺴﻤﻰ اﻟﻮﺣﺪا ت‬ ‫واﻟﻘﻮاﻣﻴ ﺲ وﻋ‬
‫ﺑﺤﻴ ﺚ‬‫ﺑ ﺴﻂ وأﺳﻬﻞ ﻓ ﻲ اﻟﻔﻬﻢ‪ .‬أﺧﻴ ﺮًا ‪،‬ﺗﻌﻠﻤ ﺖﺗﺼﻤﻴﻢ وﻇﺎﺋﻔﻚ‬
‫ﺑﻚ أ‬‫ﺒﺮاﻣﺞ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻜﻮن ﻣﻠﻔﺎ ت اﻟ‬
‫اﻟﻨﻤﻄﻴ ﺔ ‪ ،‬ﻟﺬﻟﻚﺳ‬
‫ﺗﻬﺎ ﻗﺪر اﻹﻣﻜﺎن ﻟﻚ وﻟﻶﺧﺮﻳﻦ‪.‬‬
‫ﺑﺸﻜﻞ ﺟﻴﺪ وﻳ ﺴﻬﻞ ﻗﺮاء‬‫ﺑﺮاﻣﺠﻚ ﻓ ﻲ أنﺗﻜﻮن ﻣﻨﻈﻤ ﺔ‬‫ﺘﻤﺮ‬
‫ﺗﺴ‬

‫ﺑﺬﻟﻚ‪ .‬إﻧﻬﺎ‬‫ﺑﻤﺎﺗﺮﻳﺪه ‪ ،‬واﻟﻮﻇﺎﺋﻒﺗ ﺴﺎﻋﺪك ﻋﲆ اﻟﻘﻴﺎم‬‫ﺑ ﺴﻴﻂﻳﻘﻮم‬‫ﺑ ﺔ ﻛﻮد‬


‫ﺘﺎ‬
‫ﺒﺮﻣﺞ ﻫﻮ ﻛ‬
‫ﻳﺠ ﺐ أنﻳﻜﻮن أﺣﺪ أ ﻫﺪاﻓﻚ ﻛﻤ‬
‫ﺑﻤﺠﺮد أنﺗﻌﺮف أﻧﻬﺎﺗﻌﻤﻞ‪ .‬ﻋﻨﺪﻣﺎﺗﻌﺮف أن إﺣﺪى اﻟﻮﻇﺎﺋﻒ‬‫ﺑﻤﻔﺮد ﻫﺎ‬‫ﺗﺮﻛﻬﺎ‬
‫ﺒﺮﻣﺠﻴ ﺔ و‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻞ ﻣﻦ اﻟ‬
‫ﺑﺔ ﻛ‬
‫ﺘﺎ‬
‫ﺑﻜ‬‫ﺗ ﺴﻤﺢ ﻟﻚ‬
‫ﺘﺎﻟﻴ ﺔ‪.‬‬
‫ﺘﺮﻣﻴﺰ اﻟ‬
‫ﺘﻘﻞ إﱃ ﻣﻬﻤ ﺔ اﻟ‬
‫ﺗﻨ‬‫ﺘﻤﺮ ﻓ ﻲ اﻟﻌﻤﻞ و‬
‫ﺘﺴ‬‫ﺜﻖ ﻓ ﻲ أﻧﻬﺎﺳ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪،‬ﻳﻤﻜﻨﻚ أنﺗ‬‫ﺘﻬﺎ‬
‫ﺗﺆدي وﻇﻴﻔ‬

‫ﺘﺨﺪام ﻫﺬا اﻟﺮﻣﺰ ﻋﺪة ﻣﺮا ت ﻛﻤﺎﺗﺮﻳﺪ‪ .‬ﻋﻨﺪﻣﺎ‬


‫ﺛﻢ إﻋﺎدة اﺳ‬‫ﺒﺮﻣﺠﻴ ﺔ ﻣﺮة واﺣﺪة‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺘﻴﺢ ﻟﻚ اﻟﻮﻇﺎﺋﻒ ﻛ‬
‫ﺗ‬
‫ﺑﻌﻤﻠﻬﺎ‪.‬‬‫ﺗﻘﻮم اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺑ ﺔ ﻣﻜﺎﻟﻤ ﺔ ﻣﻦﺳﻄﺮ واﺣﺪ و‬
‫ﺘﺎ‬
‫ﺘﺎج إﱃﺗﺸﻐﻴﻞ اﻟﻜﻮد ﻓ ﻲ داﻟ ﺔ ﻣﺎ ‪ ،‬ﻛﻞ ﻣﺎ ﻋﻠﻴﻚ ﻓﻌﻠﻪ ﻫﻮ ﻛ‬
‫ﺗﺤ‬

‫ﺒﺮﻣﺠﻴ ﺔ ‪ ،‬وﻳ ﺴﺮي‬


‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻠ ﺔ واﺣﺪة ﻣﻦ اﻟ‬
‫ﺘﺎج إﱃﺗﻌﺪﻳﻞﺳﻠﻮك إﺣﺪى اﻟﻮﻇﺎﺋﻒ ‪ ،‬ﻣﺎ ﻋﻠﻴﻚﺳﻮىﺗﻌﺪﻳﻞ ﻛ‬
‫ﻋﻨﺪﻣﺎﺗﺤ‬
‫ﺘﺪﻋﺎء ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‪.‬‬
‫ﺑﺎﺳ‬‫ﺘﻪ ﻓ ﻲ ﻛﻞ ﻣﻜﺎن ﻗﻤ ﺖ ﻓﻴﻪ‬
‫ﺘﻐﻴﻴﺮ اﻟﺬي أﺟﺮﻳ‬
‫اﻟ‬

‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺗﻠﺨﺺ أﺳﻤﺎء اﻟﻮﻇﺎﺋﻒ اﻟﺠﻴﺪة ﻣﺎﻳﻔﻌﻠﻪ ﻛﻞ ﺟﺰء ﻣﻦ اﻟ‬
‫ﺑﺮاﻣﺠﻚ أﺳﻬﻞ ﻓ ﻲ اﻟﻘﺮاءة ‪ ،‬و‬‫ﺘﺨﺪام اﻟﻮﻇﺎﺋﻒ‬
‫ﻳﺠﻌﻞ اﺳ‬
‫ﺘﻞ‬
‫ﺒﺮﻧﺎﻣﺞ ﻣﻦ ﻗﺮاءةﺳﻠ ﺴﻠ ﺔ ﻃﻮﻳﻠ ﺔ ﻣﻦ ﻛ‬
‫ﺑﻤﺎﻳﻔﻌﻠﻪ اﻟ‬‫ﺜﻴﺮ‬
‫ﺑﻜ‬‫ﺳﺎ أﺳﺮع‬
‫ﺘﺪﻋﺎءا ت اﻟﻮﻇﺎﺋﻒ إﺣ ﺴﺎ ً‬
‫ﺗﻤﻨﺤﻚ ﻗﺮاءةﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﺳ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪.‬‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟ‬

‫اﻟﻤﻬﺎم‬ ‫‪159‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺮ‬
‫ﺗﺼﺤﻴﺤﻬﺎ‪ .‬ﻋﻨﺪﻣﺎﻳﻜﻮن اﻟﺠﺰء اﻷﻛ‬
‫ﺒﺮﻣﺠﻴ ﺔ و‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺒﺎر اﻟ‬
‫ﺘ‬ ‫ﺗﻌﻤﻞ اﻟﻮﻇﺎﺋﻒ أ ً‬
‫ﻳﻀﺎ ﻋﲆﺗ ﺴﻬﻴﻞ اﺧ‬
‫ﺘﻲ‬
‫ﺒﺎر اﻟﺸﻔﺮة اﻟ‬
‫ﺘ‬‫ﺜﻴﺮ اﺧ‬
‫ﺑﻜ‬‫ﺘﻢ ﻣﻦ ﺧﻼل ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻮﻇﺎﺋﻒ ‪ ،‬ﻟﻜﻞ ﻣﻨﻬﺎ وﻇﻴﻔ ﺔ ﻣﺤﺪدة ‪ ،‬وﻣﻦ اﻷﺳﻬﻞ‬
‫ﺑﺮﻧﺎﻣﺠﻚﻳ‬‫ﻣﻦ ﻋﻤﻞ‬
‫ﺘﻬﺎ واﻟﺤﻔﺎظ ﻋﻠﻴﻬﺎ‪.‬‬
‫ﺒ‬‫ﺘ‬‫ﻛ‬
‫ﺘ ﻲ ﻗﺪﺗﻮاﺟﻬﻬﺎ‪.‬‬
‫ﺒﺮ ﻣﺎ إذا ﻛﺎﻧ ﺖ ﻛﻞ وﻇﻴﻔ ﺔﺗﻌﻤﻞ ﻓ ﻲ ﺟﻤﻴﻊ اﻟﻤﻮاﻗﻒ اﻟ‬
‫ﺘ‬‫ﺘﺪﻋ ﻲ ﻛﻞ وﻇﻴﻔ ﺔ وﻳﺨ‬
‫ﺑﺮﻧﺎﻣﺞ ﻣﻨﻔﺼﻞﻳ ﺴ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻨﻚ ﻛ‬
‫ﺑﻬﺎ‪.‬‬‫ﺘﺼﻞ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻓ ﻲ ﻛﻞ ﻣﺮةﺗ‬ ‫ﺛ ًﻘﺎ ﻣﻦ أن وﻇﺎﺋﻔﻚﺳ‬
‫ﺘﻌﻤﻞ‬ ‫ﺑﺬﻟﻚ ‪،‬ﻳﻤﻜﻨﻚ أنﺗﻜﻮن وا‬‫ﻋﻨﺪ اﻟﻘﻴﺎم‬

‫ﺑﻴﻦ اﻟﻮﻇﺎﺋﻒ و‬‫ﺑ ﺔ اﻟﺪروس‪.‬ﺗﺠﻤﻊ اﻟﻔﺼﻮل‬


‫ﺘﺎ‬
‫ﺘﺎﺳﻊ ﻛ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ اﻟﻔﺼﻞ اﻟ‬
‫ﺘ‬‫ﺳ‬
‫ﺑﻄﺮق ﻣﺮﻧ ﺔ وﻓﻌﺎﻟ ﺔ‪.‬‬‫ﺘﺨﺪاﻣﻬﺎ‬
‫ﺒﻴﺎﻧﺎ ت ﻓ ﻲ ﺣﺰﻣ ﺔ واﺣﺪة أﻧﻴﻘ ﺔﻳﻤﻜﻦ اﺳ‬
‫اﻟ‬

‫ﺜﺎﻣﻦ‬
‫‪160‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫‪9‬‬
‫ﺒﻘﺎ ت‬
‫اﻟﻄ‬

‫ﺜﺮ اﻷﺳﺎﻟﻴ ﺐ ﻓﻌﺎﻟﻴ ﺔ‬


‫ﺒﺮﻣﺠ ﺔ اﻟﻤﻮﺟﻬ ﺔ ﻟﻠﻜﺎﺋﻨﺎ ت واﺣﺪة ﻣﻦ أﻛ‬
‫ﺗﻌﺪ اﻟ‬
‫ﺒﺮﻣﺠ ﺔ اﻟﺸﻴﺌﻴ ﺔ أﻧ ﺖ‬
‫ﺒﺮﻣﺠﻴ ﺔ‪ .‬ﻓ ﻲ اﻟ‬
‫ﺑ ﺔ اﻷدوا ت اﻟ‬
‫ﺘﺎ‬
‫ﻟﻜ‬

‫ﺑﺈﻧﺸﺎء ﻛﺎﺋﻨﺎ ت‬‫ﺗﻘﻮم‬


‫ﺜﻞ أﺷﻴﺎء وﻣﻮاﻗﻒ ﻓ ﻲ اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ ‪ ،‬و‬ ‫ً‬
‫ﻓﺼﻮﻻﺗﻤ‬ ‫ﺘﺐ‬
‫اﻛ‬
‫ﺘ ﺐ ﻓﺌ ﺔ ‪ ،‬ﻓﺈﻧﻚﺗﺤﺪد اﻟ ﺴﻠﻮك اﻟﻌﺎم اﻟﺬيﻳﻤﻜﻦ أنﻳﻜﻮن‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻫﺬه اﻟﻔﺌﺎ ت‪ .‬ﻋﻨﺪﻣﺎﺗﻜ‬
‫ﻟﻔﺌ ﺔ ﻛﺎﻣﻠ ﺔ ﻣﻦ اﻟﻜﺎﺋﻨﺎ ت‪.‬‬

‫ﺑﻌﺪ ذﻟﻚ إﻋﻄﺎء ﻛﻞ ﻛﺎﺋﻦ أي‬‫ﺑﺎﻟ ﺴﻠﻮك اﻟﻌﺎم ؛ﻳﻤﻜﻨﻚ‬‫ﺘﻢﺗﺠﻬﻴﺰ ﻛﻞ ﻛﺎﺋﻦﺗﻠﻘﺎﺋ ًﻴﺎ‬
‫ﻋﻨﺪ إﻧﺸﺎء ﻛﺎﺋﻨﺎ ت ﻓﺮدﻳ ﺔ ﻣﻦ اﻟﻔﺼﻞ ‪،‬ﻳ‬
‫ﺒﺮﻣﺠ ﺔ اﻟﻤﻮﺟﻬ ﺔ ﻟﻠﻜﺎﺋﻨﺎ ت‪.‬‬
‫ﺘﺨﺪام اﻟ‬
‫ﺑﺎﺳ‬‫ﺑﺸﻜﻞ ﺟﻴﺪ‬‫ﺘﻨﺪ ﻫ ﺶ ﻣﻦ ﻛﻴﻔﻴ ﺔﺗﺼﻤﻴﻢ ﻣﻮاﻗﻒ اﻟﻌﺎﻟﻢ اﻟﻮاﻗﻌ ﻲ‬
‫ﺳﻤﺎ ت ﻓﺮﻳﺪةﺗﺮﻳﺪ ﻫﺎ‪.‬ﺳ‬

‫ﺘ ﺐ اﻟﻔﺼﻮل‬
‫ﺜﻴﻼ ت ﻓﺌ ﺔ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞﺳﻮفﺗﻜ‬
‫ﺜﻴﻞ ‪ ،‬وﻳﻤﻜﻨﻚ اﻟﻌﻤﻞ ﻣﻊ ﻣ‬
‫ﻳ ﺴﻤﻰ إﻧﺸﺎء ﻛﺎﺋﻦ ﻣﻦ ﻓﺌ ﺔ إﻧﺸﺎء ﻣ‬
‫ﺘ ﻲﻳﻤﻜﻦ‬
‫ﺘﺤﺪد اﻹﺟﺮاءا ت اﻟ‬
‫ﺜﻴﻼ ت ‪ ،‬وﺳ‬
‫ﺘ ﻲﻳﻤﻜﻦﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ اﻟﻤ‬
‫ﺘﺤﺪد ﻧﻮع اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘﻠﻚ اﻟﻔﺌﺎ ت‪.‬ﺳ‬
‫ﺜﻴﻼ ت ﻟ‬
‫ﺗﻨﺸ ﺊ ﻣ‬
‫و‬
‫ﺗﺨﺎذ ﻫﺎ ﻣﻊ ﻫﺬه اﻟﺤﺎﻻ ت‪.‬‬
‫ا‬

‫ﺘﺐ أ ً‬
‫ﻳﻀﺎ ﻓﺌﺎ تﺗﻌﻤﻞ ﻋﲆﺗﻮﺳﻴﻊ وﻇﺎﺋﻒ اﻟﻔﺌﺎ ت اﻟﺤﺎﻟﻴ ﺔ ‪ ،‬ﻟﺬﻟﻚ‬ ‫ﺘﻜ‬‫ﺳ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺰﻳﻦ ﻓﺼﻮﻟﻚ اﻟﺪراﺳﻴ ﺔ ﻓ ﻲ وﺣﺪا ت ﻧﻤﻄﻴ ﺔ‬


‫ﺑ‬‫ﺘﻘﻮم‬
‫ﺑﻜﻔﺎءة‪.‬ﺳ‬‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺛﻠ ﺔ ﻣﺸﺎرﻛ ﺔ اﻟ‬
‫ﻳﻤﻜﻦ ﻟﻠﻔﺌﺎ ت اﻟﻤﻤﺎ‬
‫ﺑﻚ‪.‬‬‫ﺒﺮﻣﺠﻴﻦ آﺧﺮﻳﻦ إﱃ ﻣﻠﻔﺎ ت ‪pro gram‬اﻟﺨﺎﺻ ﺔ‬
‫ﺑﻮاﺳﻄ ﺔ ﻣ‬‫ﺑﺔ‬
‫ﺘﻮ‬‫ﺘﻴﺮاد اﻟﻔﺼﻮل اﻟﻤﻜ‬
‫واﺳ‬

‫ﺘﻌﻠﻴﻤﺎ ت‬
‫ﺒﺮﻣﺞ‪.‬ﺳﻴ ﺴﺎﻋﺪك ﻫﺬا ﻓ ﻲ ﻣﻌﺮﻓ ﺔ اﻟ‬ ‫ﺒﺮﻣﺠ ﺔ اﻟﻤﻮﺟﻬ ﺔ ﻟﻠﻜﺎﺋﻨﺎ ت ﻋﲆ رؤﻳ ﺔ اﻟﻌﺎﻟﻢ ﻛﻤﺎﻳﻔﻌﻞ اﻟﻤ‬
‫ﺳﻴ ﺴﺎﻋﺪك ﻓﻬﻢ اﻟ‬
‫ﺒﺮ وراءه‪.‬‬
‫ﻳﻀﺎ اﻟﻤﻔﺎ ﻫﻴﻢ اﻷﻛ‬ ‫ﺑﻚ ﺣ ًﻘﺎ ‪ ،‬ﻟﻴ ﺲ ﻓﻘﻂ ﻣﺎﻳﺤﺪ ثﺳﻄﺮا ً‬
‫ﺑ ﺴﻄﺮ ‪ ،‬وﻟﻜﻦ أ ً‬ ‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫اﻟ‬

‫ﺑﺸﻜﻞ‬‫ﺘ ﻲﺗﻌﺎﻟﺞ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﻛ‬
‫ﺘﻰﺗ‬
‫ﺘﻔﻜﻴﺮ اﻟﻤﻨﻄﻘ ﻲ ﺣ‬
‫ﺑﻚ ﻣﻌﺮﻓ ﺔ اﻟﻤﻨﻄﻖ وراء اﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ ﻋﲆ اﻟ‬
‫ﺘﺪر‬
‫ﺳ‬
‫ﺒﺎ‪.‬‬
‫ﻓﻌﺎل أي ﻣﺸﻜﻠ ﺔﺗﻮاﺟﻬﻬﺎﺗﻘﺮﻳ ً‬
‫ﺒﺮﻣﺠﻴﻦ اﻵﺧﺮﻳﻦ‬
‫ﺒ ﺔ ﻟﻚ وﻟﻠﻤ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺗﻚ أﺳﻬﻞ‬ ‫ﺗﺠﻌﻞ اﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ أ ً‬
‫ﻳﻀﺎ ﺣﻴﺎ‬
‫ﺘﻌﻠﻴﻤﺎ ت‬
‫ﺒﺮﻣﺠﻮن اﻵﺧﺮون اﻟ‬
‫ﺘ ﺐ أﻧ ﺖ واﻟﻤ‬
‫ﺘﻌﻘﻴﺪ‪ .‬ﻋﻨﺪﻣﺎﺗﻜ‬
‫ﺘﺰاﻳﺪة اﻟ‬
‫ﺘﺎج إﱃ اﻟﻌﻤﻞ ﻣﻌﻬﺎ وأﻧ ﺖﺗﻮاﺟﻪﺗﺤﺪﻳﺎ ت ﻣ‬
‫ﺗﺤ‬
‫ﺑﺮاﻣﺠﻚ ﻣﻨﻄﻘﻴ ﺔ‬‫ﺘﻜﻮن‬
‫ﺒﻌﺾ‪.‬ﺳ‬
‫ﺑﻌﻀﻜﻤﺎ اﻟ‬‫ﺘﻤﻜﻦ ﻣﻦ ﻓﻬﻢ ﻋﻤﻞ‬
‫ﺘ‬‫ﺑﻨﺎ ًء ﻋﲆ ﻧﻔ ﺲ اﻟﻨﻮع ﻣﻦ اﻟﻤﻨﻄﻖ ‪ ،‬ﻓ ﺴ‬‫ﺒﺮﻣﺠﻴ ﺔ‬
‫اﻟ‬
‫ﺑﺈﻧﺠﺎز اﻟﻤﺰﻳﺪ‪.‬‬‫ﺘﻌﺎوﻧﻴﻦ ‪ ،‬ﻣﻤﺎﻳ ﺴﻤﺢ ﻟﻠﺠﻤﻴﻊ‬
‫ﻟﻠﻌﺪﻳﺪ ﻣﻦ اﻟﻤ‬

‫ﺘﺨﺪام اﻟﻔﺼﻞ‬
‫إﻧﺸﺎء واﺳ‬
‫ﺒﺎ واﺣﺪًا ﻋﲆ‬
‫ﺒﺎ ‪-‬ﻟﻴ ﺲ ﻛﻠ ً‬
‫ﺜﻞ ﻛﻠ ً‬
‫ﺑ ﺴﻴﻂ ‪" ،‬ﻛﻠ ﺐ" ‪،‬ﻳﻤ‬‫ﺑ ﺔ ﻓﺼﻞ‬
‫ﺘﺎ‬
‫ﺑﻜ‬‫ﺒﺪأ‬
‫ﺘﺨﺪام اﻟﻔﺌﺎ ت‪ .‬ﻟﻨ‬
‫ﺑﺎﺳ‬‫ﺒﺎ‬
‫ﻳﻤﻜﻨﻚ ﻧﻤﺬﺟ ﺔ أي ﺷ ﻲءﺗﻘﺮﻳ ً‬
‫وﺟﻪ اﻟﺨﺼﻮص ‪ ،‬وﻟﻜﻦ أي ﻛﻠ ﺐ‪.‬‬
‫ﻣﺎذا ﻧﻌﺮف ﻋﻦ ﻣﻌﻈﻢ اﻟﻜﻼ ب اﻻﻟﻴﻔ ﺔ؟ ﺣ ﺴﻨًﺎ ‪ ،‬ﻛﻠﻬﻢ ﻟﺪﻳﻬﻢ اﺳﻢ وﻋﻤﺮ‪.‬‬
‫ﺘﺎن ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت )اﻻﺳﻢ واﻟﻌﻤﺮ( و ﻫﺬان اﻟ ﺴﻠﻮﻛﺎن‬
‫ﺗﺎن اﻟﻘﻄﻌ‬
‫ﺘﺬ ﻫ ﺐ ﻫﺎ‬
‫ﺘﺪﺣﺮج‪.‬ﺳ‬
‫ﺗ‬ ‫ﻧﻌﻠﻢ أ ً‬
‫ﻳﻀﺎ أن ﻣﻌﻈﻢ اﻟﻜﻼ بﺗﺠﻠ ﺲ و‬
‫ﺑﻜﻴﻔﻴ ﺔ ﺻﻨﻊ‬
‫ﺒﺮ ﻫﺬا اﻟﻔﺼﻞ ‪Python‬‬
‫ﺘﺪﺣﺮج( ﻓ ﻲ ﻓﺼﻞ اﻟﻜﻼ ب ﻟﺪﻳﻨﺎﻷﻧﻬﻤﺎ ﺷﺎﺋﻌﺎن ﻟﺪى ﻣﻌﻈﻢ اﻟﻜﻼ ب‪.‬ﺳﻴﺨ‬
‫)اﻟﺠﻠﻮس واﻟ‬
‫ﺧﺎﺻﺎ واﺣﺪًا‪.‬‬
‫ً‬ ‫ﺒﺎ‬
‫ﺜﻞ ﻛﻠ ً‬
‫ﺜﻠ ﺔ ﻓﺮدﻳ ﺔ ‪ ،‬ﻛﻞ ﻣﻨﻬﺎﻳﻤ‬
‫ﺘﺨﺪﻣﻪ ﻟﻌﻤﻞ أﻣ‬
‫ﺑ ﺔ اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ ‪،‬ﺳﻨ ﺴ‬
‫ﺘﺎ‬
‫ﺑﻌﺪ ﻛ‬‫ﺒﺎ‪.‬‬
‫ﺜﻞ ﻛﻠ ً‬
‫ﻛﺎﺋﻦﻳﻤ‬

‫إﻧﺸﺎء ﻓﺌ ﺔ اﻟﻜﻼ ب‬
‫ﺳﻤﺎ وﻋﻤ ﺮًا ‪ ،‬وﺳﻨﻤﻨﺢ ﻛﻞ ﻛﻠ ﺐ اﻟﻘﺪرة ﻋﲆ اﻟﺠﻠﻮس )(و ‪roll_over ():‬‬
‫ﺜﻴﻞﺗﻢ إﻧﺸﺎؤه ﻣﻦ ﻓﺌ ﺔ ‪Dog‬ا ً‬
‫ﺳﻴﺨﺰن ﻛﻞ ﻣ‬

‫‪dog.py u class Dog ():‬‬


‫ﺑ ﺴﻴﻄ ﺔ ﻟﻌﻤﻞ ﻧﻤﻮذج ﻟﻜﻠ ﺐ‪"" ".‬‬‫"" ‪"v‬ﻣﺤﺎوﻟ ﺔ‬

‫__ ‪)w def __init‬اﻟﺬا ت ‪ ،‬اﻻﺳﻢ ‪ ،‬اﻟﻌﻤﺮ(‪:‬‬


‫ﺗﻬﻴﺌ ﺔﺳﻤﺎ ت اﻻﺳﻢ واﻟﻌﻤﺮ‪"" ".‬‬
‫"""‬
‫‪x‬‬ ‫= ‪self.name‬اﻻﺳﻢ‬

‫ﺗ ﻲ =اﻟﻌﻤﺮ‬
‫اﻟﻌﻤﺮ اﻟﺬا‬

‫ﺗ ﻲ(‪:‬‬
‫‪y def‬اﻟﺠﻠﻮس )ذا‬
‫ﺑ ﺔﻷﻣﺮ ﻣﺎ‪"" ".‬‬
‫ﺘﺠﺎ‬
‫"""ﻣﺤﺎﻛﺎة ﻛﻠ ﺐ ﺟﺎﻟ ﺲ اﺳ‬
‫"‬
‫‪print (self.name.title () +‬ﺟﺎﻟ ﺲ اﻵن‪") .‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)def roll_over‬ذا‬
‫ﺑ ﺔﻷﻣﺮ‪"" " .‬‬
‫ﺘﺠﺎ‬
‫ﺘﺪﺣﺮج اﺳ‬
‫""ﻣﺤﺎﻛﺎة اﻟ‬
‫"‬
‫ﺖ!"(‬ ‫ﺗﺪﺣﺮﺟ‬
‫‪(self.name.title‬‬ ‫ﺒﺎﻋ ﺔ ‪() +‬‬
‫ﻃ‬

‫ﺘﺎﺳﻊ‬
‫‪162‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎد‬
‫ﺘﻌ‬‫ﺜﻴﺮ ﻣﻦ اﻟﻮﻗ ﺖ ﻟ‬
‫ﺘﺮى ﻫﺬا اﻟﻬﻴﻜﻞ ﻃﻮال ﻫﺬا اﻟﻔﺼﻞ وﻟﺪﻳﻚ اﻟﻜ‬
‫ﺘﻼﺣﻈﻪ ﻫﻨﺎ ‪ ،‬ﻟﻜﻦ ﻻﺗﻘﻠﻖ‪.‬ﺳ‬
‫ﺜﻴﺮ ﻟ‬
‫ﻫﻨﺎك اﻟﻜ‬
‫ﺜﻮن‪ .‬اﻷﻗﻮاس ﻓ ﻲﺗﻌﺮﻳﻒ‬
‫ﺑﺎﻳ‬‫ﺒﻴﺮة إﱃ اﻟﻔﺌﺎ ت ﻓ ﻲ‬
‫ﻋﻠﻴﻪ‪ .‬ﻓ ﻲ ‪u‬ﻧﺤﺪد ﻓﺌ ﺔﺗ ﺴﻤﻰ ‪Dog.‬ﺣ ﺴ ﺐ اﻻﺻﻄﻼح ‪،‬ﺗﺸﻴﺮ اﻷﺳﻤﺎء اﻟﻜ‬
‫ﺑﻪ ﻫﺬه اﻟﻔﺌ ﺔ‪.‬‬‫ﺗﺼﻒ ﻣﺎﺗﻘﻮم‬
‫ﺘ ﺐﺳﻠ ﺴﻠ ﺔ ‪docstring‬‬
‫ﺒﺪاﻳ ﺔ‪ .‬ﻓ ﻲ ‪v‬ﻧﻜ‬
‫اﻟﻔﺌ ﺔ ﻓﺎرﻏ ﺔﻷﻧﻨﺎ ﻧﻨﺸ ﺊ ﻫﺬه اﻟﻔﺌ ﺔ ﻣﻦ اﻟ‬

‫ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬‬

‫ﺘﻼف‬ ‫ﺒﻖ ﻋﲆ اﻷﺳﺎﻟﻴ ﺐ أ ً‬


‫ﻳﻀﺎ ؛ اﻻﺧ‬ ‫ﺘﻪ ﻋﻦ اﻟﻮﻇﺎﺋﻒﻳﻨﻄ‬
‫ﺘ ﻲﺗﺸﻜﻞ ﺟﺰءًا ﻣﻦ اﻟﻔﺼﻞ ﻫ ﻲ ﻃﺮﻳﻘ ﺔ‪ .‬ﻛﻞ ﻣﺎﺗﻌﻠﻤ‬
‫اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺘﻢ‬
‫ﺘ ﻲﺳﻨﻄﻠﻖ ﻋﻠﻴﻬﺎ اﻟﻄﺮق‪ .‬ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻓ ﻲ ‪ w‬ﻫ ﻲ ﻃﺮﻳﻘ ﺔ ﺧﺎﺻ ﺔﻳ‬
‫اﻟﻌﻤﻠ ﻲ اﻟﻮﺣﻴﺪ ﻓ ﻲ اﻟﻮﻗ ﺖ اﻟﺤﺎﻟ ﻲ ﻫﻮ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬
‫ﺘﻮي ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ﻋﲆ ﺷﺮﻃﻴﻦ‬
‫ﺗﺤ‬‫ﺑﻨﺎ ًء ﻋﲆ ﻓﺌ ﺔ ‪Dog .‬‬‫ﺜﻴﻞ ﺟﺪﻳﺪ‬
‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﺗﻠﻘﺎﺋ ًﻴﺎ ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﺑﻮاﺳﻄ ﺔ ‪Python‬‬‫ﺗﺸﻐﻴﻠﻬﺎ‬
‫ﺘﺮاﺿﻴ ﺔ‬
‫ﺘﻴﻦﺗﺤ ﺖ اﻟﺪرﺟﺎ ت ‪ ،‬و ﻫﻮ اﺻﻄﻼحﻳ ﺴﺎﻋﺪ ﻋﲆ ﻣﻨﻊ أﺳﻤﺎء ﻃﺮق ‪Python‬اﻻﻓ‬
‫ﺘﺎﻟﻴ‬
‫ﺘ‬‫ﺘﻴﻦ ﻣ‬
‫ﺛﻨ‬‫ﺘﻴﻦ وا‬
‫ﺋﻴ ﺴﻴ‬
‫ﺘﻴﻦ ر‬
‫ﺳﻔﻠﻴ‬
‫ﺘﻚ‪.‬‬
‫ﺘﻌﺎرض ﻣﻊ أﺳﻤﺎء ﻃﺮﻳﻘ‬
‫ﻣﻦ اﻟ‬

‫ﺑﺔ ﻓ ﻲ‬
‫ﺗﻴ ﺔ ﻣﻄﻠﻮ‬
‫ﺛﻼ ث ﻣﻌﺎﻣﻼ ت‪self :‬واﻻﺳﻢ واﻟﻌﻤﺮ ‪ .‬اﻟﻤﻌﻠﻤ ﺔ اﻟﺬا‬‫ﺘﻮي ﻋﲆ‬
‫ﺑﺤﻴ ﺚﺗﺤ‬
‫ﻧﺤﺪد ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬‬
‫ﺘﺪﻋ ﻲ ‪Python‬‬ ‫ﺗ ﻲ أوﻻ ً ﻗ‬
‫ﺒﻞ اﻟﻤﻌﻠﻤﺎ ت اﻷﺧﺮى‪.‬ﻳﺠ ﺐﺗﻀﻤﻴﻨﻪ ﻓ ﻲ ‪def inition‬ﻷﻧﻪ ﻋﻨﺪﻣﺎﺗ ﺴ‬ ‫ﺗﻌﺮﻳﻒ اﻟﻄﺮﻳﻘ ﺔ ‪ ،‬وﻳﺠ ﺐ أنﺗﺄ‬
‫ﺗﻴ ﺔﺗﻠﻘﺎﺋ ًﻴﺎ ‪.‬‬
‫ﺘﺪﻋﺎء اﻷﺳﻠﻮ بﺳﻴﻤﺮر اﻟﻮﺳﻴﻄ ﺔ اﻟﺬا‬ ‫ﻃﺮﻳﻘ ﺔ )( __ ‪ __init‬ﻫﺬه ﻻﺣ ًﻘﺎ )ﻹﻧﺸﺎء ﻣ‬
‫ﺜﻴﻞ ﻟﻠﻜﻠ ﺐ ( ‪ ،‬ﻓﺈن اﺳ‬

‫ﺜﻴﻞ اﻟﻔﺮدي ﺣﻖ اﻟﻮﺻﻮل إﱃ‬


‫ﺜﻴﻞ ﻧﻔ ﺴﻪ ؛ﻳﻤﻨﺢ اﻟﻤ‬
‫ﺗ ًﻴﺎﺗﻠﻘﺎﺋ ًﻴﺎ ‪ ،‬و ﻫ ﻲ إﺷﺎرة إﱃ اﻟﻤ‬
‫ﺑﻔﺌ ﺔﺗﻤﺮر ذا‬‫ﺒﻂ‬
‫ﺗ‬‫ﺘﺪﻋﺎء أﺳﻠﻮ ب ﻣﺮ‬
‫ﻛﻞ اﺳ‬
‫ﺜﻮن ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻣﻦ ﻓﺌ ﺔ ‪Dog .‬ﺳﻮف‬
‫ﺑﺎﻳ‬‫ﺘﺪﻋ ﻲ‬
‫ﺘﺴ‬‫ﺜﻴﻞ ﻟﻠﻜﻠ ﺐ ‪،‬ﺳ‬
‫ﺑﻌﻤﻞ ﻣ‬‫اﻟ ﺴﻤﺎ ت واﻟﻄﺮق ﻓ ﻲ اﻟﻔﺼﻞ‪ .‬ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﻧﻤﺮ اﻟﻜﻠ ﺐ )(‬

‫ﻗﻴﻤﺎ‬
‫ً‬ ‫ﺜﻴﻞ ﻣﻦ ﻓﺌ ﺔ ‪Dog ،‬ﺳﻨﻮﻓﺮ‬
‫ﺘﻴﺎز ﻫﺎ‪ .‬ﻋﻨﺪﻣﺎ ﻧﺮﻳﺪ إﻧﺸﺎء ﻣ‬
‫ﺘﺎج إﱃ اﺟ‬
‫ﺗﻠﻘﺎﺋ ًﻴﺎ ‪ ،‬ﻟﺬﻟﻚ ﻻ ﻧﺤ‬
‫ﺘﻢﺗﻤﺮﻳﺮ ‪self‬‬
‫اﺳﻢ وﻋﻤﺮ ﺣﺠﺞ ؛ﻳ‬
‫ﺗﻴﻦ ﻓﻘﻂ ‪ ،‬و ﻫﻤﺎ اﻻﺳﻢ واﻟﻌﻤﺮ ‪.‬‬
‫ﻟﻠﻤﻌﻠﻤﺎ ت اﻷﺧﻴﺮ‬

‫ﺘﺎح ﻟﻜﻞ ﻃﺮﻳﻘ ﺔ ﻓ ﻲ اﻟﻔﺼﻞ ‪ ،‬وﺳﻨﻜﻮن‬


‫ﺑـ ‪self‬ﻣ‬‫ﺒﻮق‬
‫ﺘﻐﻴﺮ ﻣ ﺴ‬
‫ﺒﺎدﺋ ﺔ ‪self.‬أي ﻣ‬
‫ﺘﻐﻴﺮان اﻟﻤﺤﺪدان ﻋﻨﺪ ‪x‬ﻟﻬﻤﺎ اﻟ‬
‫اﻟﻤ‬
‫ﺜﻴﻞﺗﻢ إﻧﺸﺎؤه ﻣﻦ اﻟﻔﺌ ﺔ‪.‬ﻳﺄﺧﺬ ‪self.name = name‬اﻟﻘﻴﻤ ﺔ‬
‫ﺘﻐﻴﺮا ت ﻣﻦ ﺧﻼل أي ﻣ‬ ‫ﻗﺎدرﻳﻦ أ ً‬
‫ﻳﻀﺎ ﻋﲆ اﻟﻮﺻﻮل إﱃ ﻫﺬه اﻟﻤ‬
‫ﺘﻢ إﻧﺸﺎؤه‪.‬‬
‫ﺜﻴﻞ اﻟﺬيﻳ‬
‫ﺑﺎﻟﻤ‬‫ﺑﻌﺪ ذﻟﻚ‬‫ﺘﻢ إرﻓﺎﻗﻪ‬
‫ﺘﻐﻴﺮ ‪ ،‬واﻟﺬيﻳ‬
‫اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ اﺳﻢ اﻟﻤﻌﻠﻤ ﺔ وﻳﺨﺰﻧﻬﺎ ﻓ ﻲ اﺳﻢ اﻟﻤ‬

‫ﺜﻞ ﻫﺬهﺗ ﺴﻤﻰ‬


‫ﺘ ﻲﻳﻤﻜﻦ اﻟﻮﺻﻮل إﻟﻴﻬﺎ ﻣﻦ ﺧﻼل ﺣﺎﻻ ت ﻣ‬
‫ﺘﻐﻴﺮا ت اﻟ‬
‫ﺗﺤﺪ ث ﻧﻔ ﺲ اﻟﻌﻤﻠﻴ ﺔ ﻣﻊ = ‪self.age‬اﻟﻌﻤﺮ‪ .‬اﻟﻤ‬
‫اﻟ ﺴﻤﺎ ت‪.‬‬
‫ﺘﻴﻦ أﺧﺮﻳﻴﻦ ﻟﻔﺌ ﺔ اﻟﻜﻠ ﺐ ‪sit () :‬و ‪roll_over () y.‬‬
‫ﺗﻢﺗﺤﺪﻳﺪ ﻃﺮﻳﻘ‬
‫ﺘﻜﻮن ﻟﻬﺎ ﻣﻌﻠﻤ ﺔ واﺣﺪة ‪،‬‬
‫ّﻓﻬﺎ ﻓﻘﻂ ﻟ‬
‫ﺜﻞ اﻻﺳﻢ أو اﻟﻌﻤﺮ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﻌ ﺮ‬ ‫ﺘﺎج إﱃ ﻣﻌﻠﻮﻣﺎ ت إﺿﺎﻓﻴ ﺔ ﻣ‬ ‫ﻧﻈ ًﺮاﻷن ﻫﺬه اﻟﻄﺮق ﻻﺗﺤ‬

‫ﺑﻤﻌﻨﻰ آﺧﺮ ‪،‬ﺳﻴﻜﻮﻧﻮن ﻗﺎدرﻳﻦ ﻋﲆ اﻟﺠﻠﻮس‬‫ﺘ ﻲ أﻧﺸﺄﻧﺎ ﻫﺎ ﻻﺣ ًﻘﺎ ﻣﻦ اﻟﻮﺻﻮل إﱃ ﻫﺬه اﻟﻄﺮق‪.‬‬
‫ﺘﻤﻜﻦ اﻟﺤﺎﻻ ت اﻟ‬
‫ﺘ‬‫‪self.‬ﺳ‬
‫ﺜﻴﺮ‪.‬‬
‫ﺘﺪﺣﺮج‪ .‬ﻓ ﻲ اﻟﻮﻗ ﺖ اﻟﺤﺎﻟ ﻲ ‪ ،‬ﻻﻳﻔﻌﻞ اﻟﺠﻠﻮس )(و )( ‪roll_over‬اﻟﻜ‬
‫واﻟ‬

‫ﺘﺪﺣﺮج‪ .‬وﻟﻜﻦﻳﻤﻜﻦﺗﻮﺳﻴﻊ اﻟﻤﻔﻬﻮم ﻟﻴﺸﻤﻞ اﻟﻤﻮاﻗﻒ اﻟﻮاﻗﻌﻴ ﺔ‪:‬‬


‫ﺒﻌﻮن رﺳﺎﻟ ﺔﺗﻘﻮل إن اﻟﻜﻠ ﺐﻳﺠﻠ ﺲ أوﻳ‬
‫ﺒ ﺴﺎﻃ ﺔﻳﻄ‬
‫ﺑ‬‫إﻧﻬﻢ‬
‫ﺘﺤﺮكﻳﺠﻠ ﺲ‬
‫ﺘﻮي ﻫﺬه اﻷﺳﺎﻟﻴ ﺐ ﻋﲆ رﻣﺰ ﻟﺠﻌﻞ ﻛﻠ ﺐ ﻣ‬
‫ﺘﺤ‬‫ﺗﺮ ﻓﻌﻠﻴ ﺔ ‪ ،‬ﻓ ﺴ‬
‫ﺒﻴﻮ‬
‫ﺒ ﺔ ﻛﻤ‬
‫إذا ﻛﺎﻧ ﺖ ﻫﺬه اﻟﻔﺌ ﺔ ﺟﺰءًا ﻣﻦ ﻟﻌ‬
‫ﺑﻮ ت‬
‫ﺘ ﻲﺗﺠﻌﻞ رو‬
‫ﺘﻮﺟﻪ اﻟﺤﺮﻛﺎ ت اﻟ‬
‫ﺑﻮ ت ‪ ،‬ﻓﺈن ﻫﺬه اﻷﺳﺎﻟﻴ ﺐﺳ‬
‫ﺘﺤﻜﻢ ﻓ ﻲ اﻟﺮو‬
‫ﺑ ﺔ ﻫﺬا اﻟﻔﺼﻞ ﻟﻠ‬
‫ﺘﺎ‬
‫ﺘﺪﺣﺮج‪ .‬إذاﺗﻤ ﺖ ﻛ‬
‫وﻳ‬
‫ﺘﺪﺣﺮج‪.‬‬
‫اﻟﻜﻠ ﺐﻳﺠﻠ ﺲ وﻳ‬

‫اﻟﻔﺼﻮل ‪163‬‬
‫‪Machine Translated by Google‬‬

‫إﻧﺸﺎء اﻟﻔﺼﻮل ﻓ ﻲ ‪Python 2.7‬‬

‫ﺑﺤﺎﺟ ﺔ إﱃ إﺟﺮاءﺗﻐﻴﻴﺮ ﻃﻔﻴﻒ واﺣﺪ‪.‬‬‫ﺑﺈﻧﺸﺎء ﻓﺼﻞ دراﺳ ﻲ ﻓ ﻲ ‪Python 2.7 ،‬ﻓﺄﻧ ﺖ‬‫ﻋﻨﺪﻣﺎﺗﻘﻮم‬
‫ﺑﻴﻦ ﻗﻮﺳﻴﻦ ﻋﻨﺪ إﻧﺸﺎء ﻓﺌ ﺔ‪:‬‬‫ﻳﻤﻜﻨﻚﺗﻀﻤﻴﻦ اﻟﻤﺼﻄﻠﺢ ﻛﺎﺋﻦ‬

‫ﻓﺌ ﺔ ‪)ClassName‬ﻛﺎﺋﻦ(‪:‬‬
‫‪--‬ﻗﺺ‪--‬‬

‫ﺑﺸﻜﻞ ﻋﺎم‪.‬‬‫ﺜﻞ ﻓﺌﺎ ت ‪Python 3 ،‬ﻣﻤﺎﻳﺠﻌﻞ ﻋﻤﻠﻚ أﺳﻬﻞ‬


‫ﺘﺼﺮف ﻣ‬
‫ﺗ‬‫ﻫﺬاﻳﺠﻌﻞ ﻓﺼﻮل ‪Python 2.7‬‬

‫ﺘﻢﺗﻌﺮﻳﻒ ﻓﺌ ﺔ اﻟﻜﻠ ﺐ ﻋﲆ ﻫﺬا اﻟﻨﺤﻮ ﻓ ﻲ ‪Python 2.7:‬‬


‫ﺳﻴ‬

‫ﻓﺌ ﺔ اﻟﻜﻠ ﺐ )ﻛﺎﺋﻦ(‪:‬‬


‫‪--‬ﻗﺺ‪--‬‬

‫ﺜﻴﻞ ﻣﻦ ﻓﺼﻞ دراﺳ ﻲ‬


‫ﻋﻤﻞ ﻣ‬
‫ﺘﻲ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺜﻴﻞ‪ .‬ﻓﺌ ﺔ ‪ Dog‬ﻫ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟ‬
‫ﻓﻜﺮ ﻓ ﻲ اﻟﻔﺼﻞ ﻋﲆ أﻧﻪ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻹرﺷﺎدا ت ﺣﻮل ﻛﻴﻔﻴ ﺔ إﻧﺸﺎء ﻣ‬

‫ﺑ ًﺎ ﻣﻌﻴﻨ ﺔ‪.‬‬
‫ﺜﻞ ﻛﻼ‬
‫ﺑﻜﻴﻔﻴ ﺔ ﻋﻤﻞ ﺣﺎﻻ ت ﻓﺮدﻳ ﺔﺗﻤ‬
‫ﺒﺮ ‪Python‬‬
‫ﺗﺨ‬

‫ﺒﺎ ﻣﻌﻴﻨًﺎ‪:‬‬ ‫ﺜﺎﻻ ًﻳﻤ‬


‫ﺜﻞ ﻛﻠ ً‬ ‫ﻟﻨﺠﻌﻞ ﻣ‬

‫ﻓﺌ ﺔ اﻟﻜﻠ ﺐ ‪():‬‬


‫‪--‬ﻗﺺ‪--‬‬

‫= ‪u my_dog‬اﻟﻜﻠ ﺐ )"وﻳﻠ ﻲ" ‪6) ،‬‬


‫"‬
‫ﺒ ﻲ ﻫﻮ )" ‪+ my_dog.name.title () +".‬‬
‫‪")v print‬اﺳﻢ ﻛﻠ‬
‫"‬ ‫"‬
‫ﺒ ﻲ ‪+ str (my_dog.age) +‬ﺳﻨ ﺔ‪(".‬‬ ‫ﺒﺎﻋ ﺔ ‪")w‬ﻛﻠ‬
‫ﻃ‬

‫ﺑﻖ‪ .‬ﻓ ﻲ ‪u‬ﻧﻄﻠ ﺐ ﻣﻦ ‪Python‬إﻧﺸﺎء ﻛﻠ ﺐ‬


‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﺘﻮ ﻓ ﻲ اﻟﻤ‬
‫ﺒﻨﺎه ﻟﻠ‬
‫ﺘ‬‫ﺘﺨﺪﻣﻪ ﻫﻨﺎ ﻫﻮ اﻟﺬي ﻛ‬
‫ﻓﺼﻞ اﻟﻜﻼ ب اﻟﺬي ﻧ ﺴ‬
‫ﺘﺪﻋ ﻲ ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻓ ﻲ ‪Dog‬ﻣﻊ اﻟﻮﺳﻴﻄﺎ ت‬
‫اﺳﻤﻪ '‪'willie‬وﻋﻤﺮه ‪6.‬ﻋﻨﺪﻣﺎﺗﻘﺮأ ‪ Python‬ﻫﺬا اﻟ ﺴﻄﺮ ‪ ،‬ﻓﺈﻧﻬﺎﺗ ﺴ‬
‫ﺘﻲ‬‫ﺘﺨﺪام اﻟﻘﻴﻢ اﻟ‬
‫ﺑﺎﺳ‬‫ﺜﻞ ﻫﺬا اﻟﻜﻠ ﺐ اﻟﻤﻌﻴﻦ وﻳﻌﻴﻦﺳﻤﺎ ت اﻻﺳﻢ واﻟﻌﻤﺮ‬ ‫'‪'willie‬و ‪6.‬ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻳﻨﺸ ﺊ ﻣ ً‬
‫ﺜﻴﻼﻳﻤ‬
‫ﻗﺪﻣﻨﺎ ﻫﺎ‪ .‬ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻟﻴ ﺲ ﻟﻬﺎ ﻋﻮدة ﺻﺮﻳﺤ ﺔ‬

‫ﺘﻐﻴﺮ ‪my_dog.‬اﺻﻄﻼح‬
‫ﺜﺎل ﻓ ﻲ اﻟﻤ‬
‫ﺘﺨﺰﻳﻦ ﻫﺬا اﻟﻤ‬
‫ﺑ‬‫ﺜﻞ ﻫﺬا اﻟﻜﻠ ﺐ‪ .‬ﻧﻘﻮم‬
‫ﺜﻴﻞﻳﻤ‬
‫ﺑﺈرﺟﺎع ﻣ‬‫ﺜﻮنﺗﻘﻮمﺗﻠﻘﺎﺋ ًﻴﺎ‬
‫ﺑﺎﻳ‬‫ﺒﺎرة ‪ ،‬ﻟﻜﻦ‬
‫اﻟﻌ‬
‫ﺜﻞ ‪my_dog‬‬
‫ﺜﻞ ‪Dog‬ﻳﺸﻴﺮ إﱃ ﻓﺌ ﺔ ‪ ،‬واﻻﺳﻢ اﻟﺼﻐﻴﺮ ﻣ‬
‫ﺒﻴﺮة ﻣ‬
‫ﺑﺄﺣﺮف ﻛ‬‫ﺘﺮاض أن اﻻﺳﻢ‬
‫ﺘ ﺴﻤﻴ ﺔ ﻣﻔﻴﺪ ﻫﻨﺎ‪:‬ﻳﻤﻜﻨﻨﺎ ﻋﺎدة اﻓ‬
‫اﻟ‬
‫ﺜﻴﻞ واﺣﺪ ‪cre ated‬ﻣﻦ ﻓﺌ ﺔ‪.‬‬
‫ﻳﺸﻴﺮ إﱃ ﻣ‬

‫اﻟﻮﺻﻮل إﱃ اﻟ ﺴﻤﺎ ت‬

‫ﺑ ﺔ‪:‬‬
‫ﺘﺎ‬
‫ﺘﺨﺪامﺗﺪوﻳﻦ اﻟﻨﻘﻄ ﺔ‪ .‬ﻓ ﻲ ‪v‬ﻧﺼﻞ إﱃ ﻗﻴﻤ ﺔ اﺳﻢﺳﻤ ﺔ ‪my_dog‬ﻋﻦ ﻃﺮﻳﻖ ﻛ‬
‫ﺜﻴﻞ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﻟﻠﻮﺻﻮل إﱃﺳﻤﺎ ت ﻣ‬

‫‪my_dog.name‬‬

‫ﺜﻮر ‪Python‬ﻋﲆ ﻗﻴﻤ ﺔ اﻟ ﺴﻤ ﺔ‪.‬‬


‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ ﻫﺬا ﻛﻴﻔﻴ ﺔ ﻋ‬‫ﺜﻮن‪.‬ﻳﻮﺿﺢ‬
‫ﺑﺎﻳ‬‫ﺘﺮﻣﻴﺰ اﻟﻨﻘﻄ ﻲ ﻓ ﻲ‬
‫ﺘﺨﺪم اﻟ‬
‫ﺒﺎ ﻣﺎﻳ ﺴ‬
‫ﻏﺎﻟ ً‬
‫ﺜﺎل ‪my_dog‬‬
‫ﻫﻨﺎﺗﻨﻈﺮ ‪Python‬ﻓ ﻲ اﻟﻤ‬

‫‪164‬اﻟﻔﺼﻞ ‪9‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺎﺳﻢ ‪self.name‬ﻓ ﻲ ﻓﺌ ﺔ ‪Dog.‬‬‫ﺑـ ‪ my_dog.‬ﻫﺬا ﻫﻮ ﻧﻔ ﺲ ‪Attri bute‬اﻟﻤﺸﺎر إﻟﻴﻪ‬‫ﺒﻂ‬


‫ﺗ‬‫ﺒﺤ ﺚ ﻋﻦ اﺳﻢ اﻟ ﺴﻤ ﺔ اﻟﻤﺮ‬
‫ﺛﻢﻳ‬
‫ﺒﺎﻋ ﺔ ﻟﺪﻳﻨﺎ ‪my_dog.name.title () ،‬‬
‫ﺑﻴﺎن ﻃ‬‫ﺘﺨﺪم ﻧﻔ ﺲ اﻷﺳﻠﻮ ب ﻟﻠﻌﻤﻞ ﻣﻊ ﻋﻤﺮ اﻟ ﺴﻤ ﺔ‪ .‬ﻓ ﻲ أول‬
‫ﻓ ﻲ ‪w ،‬ﻧ ﺴ‬

‫ﺜﺎﻧﻴ ﺔ ‪،‬ﺗﺤﻮل ‪str (my_dog.age) 6 ،‬‬


‫ﺒﺎﻋ ﺔ اﻟ‬
‫ﺒﻴﺮ‪ .‬ﻓ ﻲﺗﻌﻠﻴﻤ ﺔ اﻟﻄ‬
‫ﺑﺤﺮف ﻛ‬‫ﺒﺪأ‬
‫ﺗ‬‫ﻳﺠﻌﻞ ‪"willie" ،‬ﻗﻴﻤ ﺔﺳﻤ ﺔ اﺳﻢ ‪my_dog ،‬‬
‫ﻗﻴﻤ ﺔ ﻋﻤﺮ ‪my_dog‬‬
‫اﻟ ﺴﻤ ﺔ إﱃﺳﻠ ﺴﻠ ﺔ‪.‬‬
‫اﻹﺧﺮاج ﻫﻮ ﻣﻠﺨﺺ ﻟﻤﺎ ﻧﻌﺮﻓﻪ ﻋﻦ ‪my_dog:‬‬

‫ﺒ ﻲ ﻫﻮ وﻳﻠ ﻲ‪.‬‬
‫اﺳﻢ ﻛﻠ‬
‫ﺒ ﻲ ﻋﻤﺮه ‪6‬ﺳﻨﻮا ت‪.‬‬ ‫ﻛﻠ‬

‫ﺗﺼﺎل‬
‫ﻃﺮق اﻻ‬

‫ﺒﻨﺎ‬
‫ﺘﺪﻋﺎء أي ﻃﺮﻳﻘ ﺔ ﻣﺤﺪدة ﻓ ﻲ ‪Dog.‬ﻟﻨﺠﻌﻞ ﻛﻠ‬
‫ﺘﺨﺪامﺗﺪوﻳﻦ اﻟﻨﻘﻄ ﺔ ﻻﺳ‬
‫ﺜﻴﻞ ﻣﻦ اﻟﻔﺌ ﺔ ‪Dog ،‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺑﻌﺪ إﻧﺸﺎء ﻣ‬
‫ﺘﺪﺣﺮج‪:‬‬
‫ﻳﺠﻠ ﺲ وﻳ‬

‫ﻓﺌ ﺔ اﻟﻜﻠ ﺐ ‪():‬‬


‫‪--‬ﻗﺺ‪--‬‬

‫= ‪my_dog‬اﻟﻜﻠ ﺐ )"وﻳﻠ ﻲ" ‪6) ،‬‬


‫)( ‪my_dog.sit‬‬
‫)( ‪my_dog.roll_over‬‬

‫ﺑﻬﺎ ‪ ،‬ﻣﻔﺼﻮﻟ ﺔ‬‫ﺗﺼﺎل‬


‫ﺘ ﻲﺗﺮﻳﺪ اﻻ‬
‫ﺜﻴﻞ )ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪my_dog) ،‬واﻟﻄﺮﻳﻘ ﺔ اﻟ‬
‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ ‪ ،‬أﻋﻂ اﺳﻢ اﻟﻤ‬
‫ﻻﺳ‬
‫ﺘﺸﻐﻴﻞ ﻫﺬا‬
‫ﺑ‬‫ﺗﻘﻮم‬
‫ﺒﺤ ﺚ ﻋﻦ اﻟﻄﺮﻳﻘ ﺔ )( ‪sit‬ﻓ ﻲ اﻟﻔﺼﻞ ‪Dog‬و‬
‫ﺑﻨﻘﻄ ﺔ‪ .‬ﻋﻨﺪﻣﺎﺗﻘﺮأ ‪Python my_dog.sit () ،‬ﻓﺈﻧﻬﺎﺗ‬
‫ﺑﻨﻔ ﺲ اﻟﻄﺮﻳﻘ ﺔ‪.‬‬
‫اﻟﻜﻮد‪.‬ﻳﻔ ﺴﺮ ‪Python‬اﻟ ﺴﻄﺮ )( ‪my_dog.roll_over‬‬

‫ﺑﻤﺎ ﻧﻘﻮل ﻟﻪ‪:‬‬‫اﻵنﻳﻘﻮم وﻳﻠ ﻲ‬

‫وﻳﻠ ﻲ ﺟﺎﻟ ﺲ اﻵن‪.‬‬


‫ﺗﺪﺣﺮج وﻳﻠ ﻲ!‬

‫ﺜﻞ اﻻﺳﻢ واﻟﻌﻤﺮ واﻟﻤﺠﻠ ﺲ )(‬


‫ﺒﺔ ﻣ‬
‫ﺘﻢ إﻋﻄﺎء اﻟ ﺴﻤﺎ ت واﻟﻄﺮق أﺳﻤﺎء وﺻﻔﻴ ﺔ ﻣﻨﺎﺳ‬
‫ﻫﺬا اﻟﻨﺤﻮ ﻣﻔﻴﺪ ﺟﺪا‪ .‬ﻋﻨﺪﻣﺎﻳ‬
‫ﺒﻞ‪.‬‬
‫ﺘﻰ ﻟﻮ ﻟﻢ ﻧﺮ ﻫﺎ ﻣﻦ ﻗ‬
‫ﺒﺮﻣﺠﻴ ﺔ ‪ ،‬ﺣ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻠ ﺔ ﻣﻦ اﻟ‬
‫ﺘﺮض أنﺗﻔﻌﻠﻪ ﻛ‬
‫ﺘﺎج ﻣﺎﻳﻔ‬
‫ﺘﻨ‬‫ﺑ ﺴﻬﻮﻟ ﺔ اﺳ‬‫و ‪roll_over () ،‬ﻳﻤﻜﻨﻨﺎ‬

‫ﺘﻌﺪدة‬
‫ﺜﻴﻼ ت ﻣ‬
‫إﻧﺸﺎء ﻣ‬

‫ﺑﺈﻧﺸﺎء ﻛﻠ ﺐ آﺧﺮﻳ ﺴﻤﻰ ‪your_dog:‬‬‫ﺘﻚ‪ .‬ﻟﻨﻘﻢ‬


‫ﺜﻠ ﺔ ﻣﻦ ﻓﺼﻞ دراﺳ ﻲ ﺣ ﺴ ﺐ ﺣﺎﺟ‬
‫ﻳﻤﻜﻨﻚ إﻧﺸﺎء اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﻣ‬

‫ﻓﺌ ﺔ اﻟﻜﻠ ﺐ ‪():‬‬


‫‪--‬ﻗﺺ‪--‬‬

‫= ‪my_dog‬اﻟﻜﻠ ﺐ )"وﻳﻠ ﻲ" ‪6) ،‬‬


‫= ‪your_dog‬اﻟﻜﻠ ﺐ )"ﻟﻮﺳ ﻲ" ‪3) ،‬‬
‫"‬
‫ﺒ ﻲ ﻫﻮ )" ‪+ my_dog.name.title () +".‬‬
‫‪")print‬اﺳﻢ ﻛﻠ‬
‫"‬ ‫"‬
‫ﺒ ﻲ ‪+ str (my_dog.age) +‬ﺳﻨ ﺔ‪(".‬‬ ‫‪")print‬ﻛﻠ‬
‫)( ‪my_dog.sit‬‬

‫اﻟﻔﺼﻮل ‪165‬‬
‫‪Machine Translated by Google‬‬

‫"‬
‫ﺒﻚ ﻫﻮ )" ‪+ your_dog.name.title () +".‬‬
‫‪print ("\ n‬اﺳﻢ ﻛﻠ‬
‫"‬ ‫"‬
‫ﺒﻠﻎ ‪+ str (your_dog.age) +‬ﺳﻨ ﺔ‪(".‬‬‫ﺒﻚﻳ‬‫‪")print‬ﻛﻠ‬
‫)( ‪your_dog.sit‬‬

‫ﺑﺈﻧﺸﺎء ﻛﻠ ﺐ اﺳﻤﻪ وﻳﻠ ﻲ وﻛﻠ ﺐ اﺳﻤﻪ ﻟﻮﺳ ﻲ‪.‬‬‫ﺜﺎل ﻗﻤﻨﺎ‬


‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘﻪ اﻟﺨﺎﺻ ﺔ ﻣﻦ اﻟ ﺴﻤﺎ ت اﻟﻘﺎدرة ﻋﲆ‬
‫ﺑﻤﺠﻤﻮﻋ‬‫ﺜﻴﻞ ﻣﻨﻔﺼﻞ‬
‫ﻛﻞ ﻛﻠ ﺐ ﻫﻮ ﻣ‬
‫ﻧﻔ ﺲ ﻣﺠﻤﻮﻋ ﺔ اﻹﺟﺮاءا ت‪:‬‬

‫ﺒ ﻲ ﻫﻮ وﻳﻠ ﻲ‪.‬‬
‫اﺳﻢ ﻛﻠ‬
‫ﺒ ﻲ ﻋﻤﺮه ‪6‬ﺳﻨﻮا ت‪.‬‬
‫ﻛﻠ‬
‫وﻳﻠ ﻲ ﺟﺎﻟ ﺲ اﻵن‪.‬‬

‫ﺒﻚ ﻟﻮﺳ ﻲ‪.‬‬


‫اﺳﻢ ﻛﻠ‬
‫ﺒﻠﻎ ﻣﻦ اﻟﻌﻤﺮ ‪3‬ﺳﻨﻮا ت‪.‬‬
‫ﺒﻚﻳ‬
‫ﻛﻠ‬
‫ﻟﻮﺳ ﻲ ﺟﺎﻟ ﺴ ﺔ اﻵن‪.‬‬

‫ﺘﻈﻞﺗﻨﺸ ﺊ ﻣ ً‬
‫ﺜﻴﻼ ﻣﻨﻔﺼ ﻼ ً ﻋﻦ ﻓﺌ ﺔ ‪Dog .‬‬ ‫ﺜﺎﻧ ﻲ ‪ ،‬ﻓﺈن ‪Python‬ﺳ‬
‫ﺘﺨﺪﻣﻨﺎ ﻧﻔ ﺲ اﻻﺳﻢ واﻟﻌﻤﺮ ﻟﻠﻜﻠ ﺐ اﻟ‬
‫ﺘﻰ ﻟﻮ اﺳ‬
‫ﺣ‬
‫ﺘﻞ ﻣﻜﺎﻧًﺎ‬
‫ﺘﻐﻴﺮ ﻓﺮﻳﺪ أوﻳﺤ‬
‫ﺜﻴﻞ اﺳﻢ ﻣ‬
‫ﺘﻚ ‪ ،‬ﻃﺎﻟﻤﺎ أﻧﻚﺗﻌﻄ ﻲ ﻛﻞ ﻣ‬
‫ﺜﻠ ﺔ ﻣﻦ ﻓﺌ ﺔ واﺣﺪة ﺣ ﺴ ﺐ ﺣﺎﺟ‬
‫ﻳﻤﻜﻨﻚ ﻋﻤﻞ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﻣ‬
‫ﻓﺮﻳﺪًا ﻓ ﻲ ﻗﺎﺋﻤ ﺔ أو ﻗﺎﻣﻮس‪.‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻴﻦ‪ :‬اﺳﻢ_اﻟﻤﻄﻌﻢ‬
‫‪9-1.‬اﻟﻤﻄﻌﻢ‪ :‬اﺻﻨﻊ ﻓﺼﻞ دراﺳ ﻲﻳ ﺴﻤﻰ ﻣﻄﻌﻢ‪.‬ﻳﺠ ﺐ أنﻳﺨﺰن اﻷﺳﻠﻮ ب )( __ ‪__init‬ﻟﻠﻤﻄﻌﻢﺳﻤ‬
‫ﺒﺦ ‪.‬‬
‫وﻧﻮع_اﻟﻤﻄ‬
‫ﺒﻊ رﺳﺎﻟ ﺔﺗﺸﻴﺮ إﱃ أن‬
‫ﺗﻄ‬‫ﺘﻴﻦ ‪ ،‬وﻃﺮﻳﻘ ﺔﺗ ﺴﻤﻰ )( "‪" open‬‬
‫ﺗﻴﻦ اﻟﻤﻌﻠﻮﻣ‬
‫ﺒﻊ ﻫﺎ‬
‫ﺑﻌﻤﻞ ﻃﺮﻳﻘ ﺔﺗ ﺴﻤﻰ "وﺻﻒ" )(ﺗﻄ‬‫ﻗﻢ‬
‫ﺘﻮح‪.‬‬
‫اﻟﻤﻄﻌﻢ ﻣﻔ‬

‫ﺘﻴﻦ‪.‬‬
‫ﺘﺪﻋﺎء ﻛﻼ اﻟﻄﺮﻳﻘ‬
‫ﺑﺎﺳ‬‫ﺛﻢ ﻗﻢ‬‫ﺑﺸﻜﻞ ﻓﺮدي ‪،‬‬‫ﺗ ﻲ اﻷذﻳﻦ‬
‫ﺑﻮ‬‫ﺒﺎﻋ ﺔ‬
‫ﺑﻄ‬ ‫اﺻﻨﻊ ﻣ ً‬
‫ﺜﻴﻼﻳ ﺴﻤﻰ ﻣﻄﻌﻢ ﻣﻦ ﻓﺼﻠﻚ‪ .‬ﻗﻢ‬

‫ﺘﺪﻋﻰ وﺻ ًﻔﺎ )(ﻟﻜﻞ ﻣﻨﻬﺎ‬


‫ﺘﻠﻔ ﺔ ﻣﻦ اﻟﻔﺼﻞ ‪ ،‬واﺳ‬
‫ﺛﻼ ث ﺣﺎﻻ ت ﻣﺨ‬‫ﺘﻤﺮﻳﻦ ‪9-1.‬أﻧﺸ ﺊ‬
‫ﺑﻔﺼﻠﻚ ﻣﻦ اﻟ‬‫ﺑﺪأ‬
‫ﺛ ﺔ ﻣﻄﺎﻋﻢ‪ :‬ا‬
‫ﺛﻼ‬‫‪9-2.‬‬

‫ﺜﺎل‪.‬‬
‫ﻣ‬

‫ﺘﻴﻦﺗ ﺴﻤﻰ اﻻﺳﻢ_اﻷول‬


‫ﺑﺈﻧﺸﺎءﺳﻤ‬‫ﺘﺨﺪم‪ .‬ﻗﻢ‬
‫ﺑﻌﻤﻞ ﻓﺌ ﺔﺗ ﺴﻤﻰ اﻟﻤ ﺴ‬‫ﺘﺨﺪﻣﻮن‪ :‬ﻗﻢ‬
‫‪9-3.‬اﻟﻤ ﺴ‬
‫ﺘﺨﺪم‪ .‬ﻗﻢ‬ ‫ً‬
‫ﻋﺎدة ﻓ ﻲ ﻣﻠﻒﺗﻌﺮﻳﻒ اﻟﻤ ﺴ‬ ‫ﺘﻢﺗﺨﺰﻳﻨﻬﺎ‬
‫ﺘ ﻲﻳ‬
‫ﺑﺈﻧﺸﺎء اﻟﻌﺪﻳﺪ ﻣﻦ اﻟ ﺴﻤﺎ ت اﻷﺧﺮى اﻟ‬‫ﺛﻢ ﻗﻢ‬
‫و ‪last_name ،‬‬
‫ﺑﻌﻤﻞ ﻃﺮﻳﻘ ﺔ أﺧﺮىﺗ ﺴﻤﻰ‬‫ﺘﺨﺪم‪ .‬ﻗﻢ‬
‫ﺒﺎﻋ ﺔ ﻣﻠﺨﺺ ﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤ ﺴ‬
‫ﺑﻄ‬‫ﺗﻘﻮم‬
‫ﺑﻌﻤﻞ ﻃﺮﻳﻘ ﺔﺗ ﺴﻤﻰ )( ‪description_user‬‬
‫ﺘﺨﺪم‪.‬‬
‫ﺒﻊﺗﺤﻴ ﺔ ﺷﺨﺼﻴ ﺔ ﻟﻠﻤ ﺴ‬
‫ﺗﻄ‬‫)( ‪reet_user‬‬

‫ﺘﺨﺪم‪.‬‬
‫ﺘﻴﻦ ﻟﻜﻞ ﻣ ﺴ‬
‫ﺘﺪع اﻟﻄﺮﻳﻘ‬
‫ﺘﻠﻔﻴﻦ ‪ ،‬واﺳ‬
‫ﺘﺨﺪﻣﻴﻦ ﻣﺨ‬
‫ﺜﻞ ﻣ ﺴ‬
‫ﺜﻴﻼ تﺗﻤ‬
‫أﻧﺸ ﺊ ﻋﺪة ﻣ‬

‫‪166‬اﻟﻔﺼﻞ ‪9‬‬
‫‪Machine Translated by Google‬‬

‫ﺜﻴﻼ ت‬
‫اﻟﻌﻤﻞ ﻣﻊ اﻟﻔﺌﺎ ت واﻟﻤ‬
‫ﺘﻚ‬
‫ﺘﻘﻀ ﻲ ﻣﻌﻈﻢ وﻗ‬
‫ﺑ ﺔ ﻓﺼﻞ دراﺳ ﻲ ‪،‬ﺳ‬
‫ﺘﺎ‬
‫ﺑﻤﺠﺮد ﻛ‬‫ﺜﻴﻞ اﻟﻌﺪﻳﺪ ﻣﻦ ﻣﻮاﻗﻒ اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ‪.‬‬
‫ﺘﻤ‬‫ﺘﺨﺪام اﻟﻔﺌﺎ ت ﻟ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺑﻬﺎ ﻫ ﻲﺗﻌﺪﻳﻞ اﻟ ﺴﻤﺎ ت اﻟﻤﺮ‬‫ﺘ ﻲﺗﺮﻳﺪ اﻟﻘﻴﺎم‬
‫ﺘ ﻲﺗﻢ إﻧﺸﺎؤ ﻫﺎ ﻣﻦﺗﻠﻚ اﻟﻔﺌ ﺔ‪ .‬إﺣﺪى اﻟﻤﻬﺎم اﻷوﱃ اﻟ‬
‫ﻓ ﻲ اﻟﻌﻤﻞ ﻣﻊ اﻟﻨ ﺴﺦ اﻟ‬
‫ﺑﻄﺮق ﻣﻌﻴﻨ ﺔ‪.‬‬‫ﺑ ﺔ ﻃﺮقﺗﻌﻤﻞ ﻋﲆﺗﺤﺪﻳ ﺚ اﻟ ﺴﻤﺎ ت‬
‫ﺘﺎ‬ ‫ً‬
‫ﺒﺎﺷﺮة أو ﻛ‬
‫ﺜﻴﻞ ﻣ‬
‫ﺜﻴﻞ ﻣﻌﻴﻦ‪.‬ﻳﻤﻜﻨﻚﺗﻌﺪﻳﻞﺳﻤﺎ ت ﻣ‬
‫ﺑﻤ‬

‫ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‬
‫ﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ‪ ،‬وﺳﻴﻜﻮن‬
‫ﺘ ﻲﻧ‬
‫ﺜﻞ اﻟ ﺴﻴﺎرة‪.‬ﺳﻴﺨﺰن اﻟﻔﺼﻞ ﻟﺪﻳﻨﺎ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل ﻧﻮع اﻟ ﺴﻴﺎرة اﻟ‬
‫ﺘ ﺐ ﻓﺌ ﺔ ﺟﺪﻳﺪةﺗﻤ‬
‫دﻋﻮﻧﺎ ﻧﻜ‬
‫ﻟﻬﺎ ﻃﺮﻳﻘ ﺔﺗﻠﺨﺺ ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت‪:‬‬

‫‪car.py‬‬ ‫ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة ‪():‬‬


‫ﺜﻴﻞﺳﻴﺎرة‪"" ".‬‬
‫ﺘﻤ‬‫ﺑ ﺴﻴﻄ ﺔ ﻟ‬‫"""ﻣﺤﺎوﻟ ﺔ‬

‫ﺗ ﻲ ‪ ،‬اﻟﺼﻨﻊ ‪ ،‬اﻟﻄﺮاز ‪ ،‬اﻟ ﺴﻨ ﺔ(‪:‬‬


‫__ ‪)u def __init‬ذا‬
‫ﺗﻬﻴﺌ ﺔ اﻟ ﺴﻤﺎ ت ﻟﻮﺻﻒ اﻟ ﺴﻴﺎرة‪"" ".‬‬‫"""‬
‫= ‪self.make‬ﺟﻌﻞ‬
‫ﻧﻤﻮذج = ‪self.model‬ﻧﻤﻮذج‬

‫= ‪self.year‬ﺳﻨ ﺔ‬

‫ﺗ ﻲ(‪:‬‬
‫‪)v def get_descriptive_name‬ذا‬
‫ﺑﺪﻗ ﺔ‪"" ".‬‬‫"""إرﺟﺎع اﺳﻢ وﺻﻔ ﻲ ﻣﻨ ﺴﻖ‬
‫"‬ ‫"‬ ‫"‬ ‫"‬
‫‪long_name = str (self.year) + + self.make +‬إرﺟﺎع )( ‪long_name.title‬‬ ‫ﺗﻲ‬
‫‪+‬اﻟﻨﻤﻮذج اﻟﺬا‬

‫= ‪w my_new_car‬ﺳﻴﺎرة )'أودي'‪'a4'، 2016) ،‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_new_car.get_descriptive_name‬‬
‫ﻃ‬

‫ﺑﺎﻟﺬا ت‬
‫ﻓ ﻲ ‪u‬ﻓ ﻲ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرا ت ‪ ،‬ﻧﺤﺪد ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬‬
‫ﺛﻼ ث ﻣﻌﻠﻤﺎ ت أﺧﺮى‪ :‬اﻟﺼﻨﻊ واﻟﻄﺮاز واﻟ ﺴﻨ ﺔ ‪.‬ﺗﺄﺧﺬ ﻃﺮﻳﻘ ﺔ )( __‬ ‫ﺒﻞ ﻣﻊ ﻓﺼﻞ اﻟﻜﻼ ب ‪ .‬ﻧﻌﻄﻴﻬﺎ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺗﻤﺎﻣﺎ ﻛﻤﺎ ﻓﻌﻠﻨﺎ ﻣﻦ ﻗ‬
‫ً‬ ‫اﻟﻤﻌﻠﻤ ﺔ أوﻻ ً ‪،‬‬
‫ﺜﻴﻼ ت اﻟﻤﺼﻨﻮﻋ ﺔ ﻣﻦ ﻫﺬه اﻟﻔﺌ ﺔ‪ .‬ﻋﻨﺪﻣﺎ ﻧﺼﻨﻊﺳﻴﺎرة ﺟﺪﻳﺪة‬
‫ﺑﺎﻟﻤ‬‫ﺒﻂ‬
‫ﺗ‬‫ﺘﺮ‬
‫ﺘ ﻲﺳ‬
‫ﺗﺨﺰﻧﻬﺎ ﻓ ﻲ اﻟ ﺴﻤﺎ ت اﻟ‬
‫‪ __init‬ﻫﺬه اﻟﻤﻌﻠﻤﺎ ت و‬

‫ﺜﺎل‪.‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺎج إﱃﺗﺤﺪﻳﺪ اﻟﻄﺮاز واﻟﻄﺮاز واﻟ ﺴﻨ ﺔ ﻋﲆﺳ‬
‫ﺜﺎل ‪،‬ﺳﻨﺤ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺗﻀﻊﺳﻨ ﺔ اﻟ ﺴﻴﺎرة وﺻﻨﻌﻬﺎ وﻧﻤﻮذﺟﻬﺎ ﻓ ﻲﺳﻠ ﺴﻠ ﺔ واﺣﺪةﺗﺼﻒ اﻟ ﺴﻴﺎرة‬
‫ﻓ ﻲ ‪v‬ﻧﺤﺪد ﻃﺮﻳﻘ ﺔﺗ ﺴﻤﻰ )( ‪get_descriptive_name‬‬
‫ﺘﺨﺪم ‪self.make‬‬
‫ﺒﺎﻋ ﺔ ﻗﻴﻤ ﺔ ﻛﻞﺳﻤ ﺔ ﻋﲆ ﺣﺪة‪ .‬ﻟﻠﻌﻤﻞ ﻣﻊ ﻗﻴﻢ اﻟ ﺴﻤﺎ ت ﻓ ﻲ ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ‪ ،‬ﻧ ﺴ‬
‫ﺒﻨﺎ اﻻﺿﻄﺮار إﱃ ﻃ‬
‫ﺑﺪﻗ ﺔ‪ .‬ﻫﺬاﺳﻮفﻳﺠﻨ‬
‫و ‪self.model‬و ‪self.year.‬‬

‫ﺛﻢ ﻧ ﺴﻤ ﻲ )( ‪get_descriptive_name‬‬
‫ﺘﻐﻴﺮ ‪my_new_car.‬‬
‫ﺗﺨﺰﻳﻨﻪ ﻓ ﻲ اﻟﻤ‬
‫ﺜﻴﻞ ﻣﻦ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة و‬
‫ﺑﻌﻤﻞ ﻣ‬‫ﻓ ﻲ ‪w ،‬ﻧﻘﻮم‬

‫ﺘ ﻲ ﻟﺪﻳﻨﺎ‪:‬‬
‫ﻹﻇﻬﺎر ﻧﻮع اﻟ ﺴﻴﺎرة اﻟ‬

‫‪2016‬أودي ‪A4‬‬

‫ﺜﺮﺗﺸﻮﻳ ًﻘﺎ ‪ ،‬دﻋﻨﺎ ﻧﻀﻴﻒﺳﻤ ﺔﺗ‬


‫ﺘﻐﻴﺮ‬ ‫ﻟﺠﻌﻞ اﻟﻔﺼﻞ أﻛ‬
‫ﺑﻌﺪ ﻓﻮا ت اﻟﻮﻗ ﺖ‪.‬ﺳﻨﻀﻴﻒﺳﻤ ﺔﺗﺨﺰن اﻷﻣﻴﺎل اﻹﺟﻤﺎﻟﻴ ﺔ ﻟﻠ ﺴﻴﺎرة‪.‬‬‫ﺘﺄﺧﺮ ‪,‬‬
‫ﻣ‬

‫ﺒﻘﺎ ت‬
‫اﻟﻄ‬ ‫‪167‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺮاﺿﻴ ﺔ ﻟ ﺴﻤ ﺔ‬
‫ﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ اﻓ‬
‫ﺑﻌﺾ اﻟﺤﺎﻻ ت ‪ ،‬ﻛﻤﺎ ﻫﻮ‬‫ﺘﻰ ﻟﻮ ﻛﺎﻧ ﺖ ﻫﺬه اﻟﻘﻴﻤ ﺔ ‪0‬أوﺳﻠ ﺴﻠ ﺔ ﻓﺎرﻏ ﺔ‪ .‬ﻓ ﻲ‬
‫ﺘﺎج ﻛﻞﺳﻤ ﺔ ﻓ ﻲ ﻓﺌ ﺔ ﻣﺎ إﱃ ﻗﻴﻤ ﺔ أوﻟﻴ ﺔ ‪ ،‬ﺣ‬
‫ﺗﺤ‬
‫ﺘﺮاﺿﻴ ﺔ ‪،‬ﻳﻜﻮن ﻣﻦ اﻟﻤﻨﻄﻘ ﻲﺗﺤﺪﻳﺪ ﻫﺬه اﻟﻘﻴﻤ ﺔ اﻷوﻟﻴ ﺔ ﻓ ﻲ ﻧﺺ ﻃﺮﻳﻘ ﺔ ؛ )( __ ‪__init‬إذا ﻗﻤ ﺖ‬
‫اﻟﺤﺎل ﻋﻨﺪﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ اﻓ‬
‫ﺘﻠﻚ اﻟ ﺴﻤ ﺔ‪.‬‬
‫ﺑﺬﻟﻚ ﻹﺣﺪى اﻟ ﺴﻤﺎ ت ‪ ،‬ﻓﻠﻦﺗﻀﻄﺮ إﱃﺗﻀﻤﻴﻦ ﻣﻌﻠﻤ ﺔ ﻟ‬

‫ﺑﻘﻴﻤ ﺔ ‪0.‬ﺳﻨﻀﻴﻒ أ ً‬
‫ﻳﻀﺎ ﻃﺮﻳﻘ ﺔ )(‬ ‫ﺋﻤﺎ‬
‫ﺒﺪأ دا ً‬
‫ﺘ ﻲﺗ‬
‫دﻋﻨﺎ ﻧﻀﻴﻒ ﺧﺎﺻﻴ ﺔﺗ ﺴﻤﻰ ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت واﻟ‬
‫ﺘ ﻲﺗ ﺴﺎﻋﺪﻧﺎ ﻋﲆ ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت ﻟﻜﻞﺳﻴﺎرة‪:‬‬
‫‪read_odometer‬اﻟ‬

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

‫ﺗ ﻲ ‪ ،‬اﻟﻄﺮاز ‪ ،‬اﻟ ﺴﻨ ﺔ(‪:‬‬


‫__ ‪)def __init‬ذا‬
‫ﺗﻬﻴﺌ ﺔ اﻟ ﺴﻤﺎ ت ﻟﻮﺻﻒ اﻟ ﺴﻴﺎرة‪"" ".‬‬ ‫"""‬
‫= ‪self.make‬ﺟﻌﻞ‬
‫ﻧﻤﻮذج = ‪self.model‬ﻧﻤﻮذج‬

‫= ‪self.year‬ﺳﻨ ﺔ‬
‫ش‬ ‫‪self.odometer_reading = 0‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)def get_descriptive_name‬ذا‬
‫‪--‬ﻗﺺ‪--‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)v def read_odometer‬ذا‬
‫ﺑﺎﻟ ﺴﻴﺎرة‪"" ".‬‬‫ﺑﻴﺎنﻳﻮﺿﺢ اﻟﻤ ﺴﺎﻓ ﺔ اﻟﻤﻘﻄﻮﻋ ﺔ‬ ‫ﺒﺎﻋ ﺔ‬‫"""ﻃ‬
‫"‬ ‫"‬
‫ﺗ ﻲ_ﻗﺮاءة( ‪+‬‬‫ﺑﻬﺎ ‪)+ str‬ﻣﻘﻴﺎس ذا‬ ‫ﺒﺎﻋ ﺔ )" ﻫﺬه اﻟ ﺴﻴﺎرة‬
‫ﻃ‬ ‫أﻣﻴﺎل ﻋﻠﻴﻬﺎ‪") .‬‬

‫= ‪my_new_car‬ﺳﻴﺎرة )'أودي'‪'a4'، 2016) ،‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_new_car.get_descriptive_name‬‬
‫ﻃ‬
‫)( ‪my_new_car.read_odometer‬‬

‫ﺜﻴﻞ ﺟﺪﻳﺪ ‪ ،‬ﻓﺈﻧﻬﺎﺗﺨﺰن ﻗﻴﻢ اﻟﻤﺎرﻛ ﺔ واﻟﻄﺮاز‬


‫ﺘﺪﻋ ﻲ ‪Python‬ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻹﻧﺸﺎء ﻣ‬
‫ﻫﺬه اﻟﻤﺮة ﻋﻨﺪﻣﺎﺗ ﺴ‬
‫ﺛﻢﻳﻨﺸ ﺊ ‪Python‬ﺳﻤ ﺔ ﺟﺪﻳﺪةﺗ ﺴﻤﻰ ﻗﺮاءة_ﻣﻘﻴﺎس اﻟﻤ ﺴﺎﻓ ﺔ‬‫ﺑﻖ‪.‬‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫واﻟ ﺴﻨ ﺔ ﻛ ﺴﻤﺎ ت ﻛﻤﺎ ﻓﻌﻠ ﺖ ﻓ ﻲ اﻟﻤ‬
‫ﺗﺠﻌﻞ ﻣﻦ اﻟ ﺴﻬﻞ ﻗﺮاءة‬ ‫ﺘﻬﺎ اﻷوﻟﻴ ﺔ ﻋﲆ ‪0 u.‬ﻟﺪﻳﻨﺎ أ ً‬
‫ﻳﻀﺎ ﻃﺮﻳﻘ ﺔ ﺟﺪﻳﺪةﺗ ﺴﻤﻰ )( ‪read_odometer‬ﻓ ﻲ ‪v‬‬ ‫ﺗﻌﻴﻴﻦ ﻗﻴﻤ‬
‫و‬
‫ﺑﺎﻟ ﺴﻴﺎرة‪.‬‬‫اﻷﻣﻴﺎل اﻟﻤﻘﻄﻮﻋ ﺔ‬

‫ﺑﻤ ﺴﺎﻓ ﺔ ‪0:‬‬‫ﺗﻨﺎ‬


‫ﺒﺪأﺳﻴﺎر‬
‫ﺗ‬

‫‪2016‬أودي ‪A4‬‬
‫ﺑﻬﺎ ‪0‬ﻣﻴﻞ‪.‬‬‫ﻫﺬه اﻟ ﺴﻴﺎرة‬

‫ﺒﻂ ﻋﲆ ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت ‪ ،‬ﻟﺬﻟﻚ ﻧﺤﻦ‬


‫ﺑﺎﻟﻀ‬‫ﺑﻴﻊ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟ ﺴﻴﺎرا ت ﻣﻊ ‪0‬ﻣﻴﻞ‬‫ﺘﻢ‬
‫ﻻﻳ‬
‫ﺘﻐﻴﻴﺮ ﻗﻴﻤ ﺔ ﻫﺬه اﻟ ﺴﻤ ﺔ‪.‬‬
‫ﺑﺤﺎﺟ ﺔ إﱃ ﻃﺮﻳﻘ ﺔ ﻟ‬

‫ﺗﻌﺪﻳﻞ ﻗﻴﻢ اﻟ ﺴﻤﺎ ت‬


‫ﺜﻴﻞ ‪ ،‬أوﺗﻌﻴﻴﻦ اﻟﻘﻴﻤ ﺔ ﻣﻦ ﺧﻼل ﻃﺮﻳﻘ ﺔ ‪،‬‬
‫ﺒﺎﺷﺮة ﻣﻦ ﺧﻼل ﻣ‬
‫ﺜﻼ ث ﻃﺮق‪:‬ﻳﻤﻜﻨﻚﺗﻐﻴﻴﺮ اﻟﻘﻴﻤ ﺔ ﻣ‬
‫ﺑ‬‫ﻳﻤﻜﻨﻚﺗﻐﻴﻴﺮ ﻗﻴﻤ ﺔ اﻟ ﺴﻤ ﺔ‬
‫ﺒﻠﻎ ﻣﻌﻴﻦ إﻟﻴﻬﺎ( ﻣﻦ ﺧﻼل ﻃﺮﻳﻘ ﺔ‪ .‬دﻋﻮﻧﺎ ﻧﻠﻘ ﻲ ﻧﻈﺮة ﻋﲆ ﻛﻞ ﻣﻦ ﻫﺬه اﻷﺳﺎﻟﻴ ﺐ‪.‬‬
‫أو زﻳﺎدة اﻟﻘﻴﻤ ﺔ )إﺿﺎﻓ ﺔ ﻣ‬

‫ﺘﺎﺳﻊ‬
‫‪168‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎﺷﺮة‬
‫ﺗﻌﺪﻳﻞ ﻗﻴﻤ ﺔ اﻟ ﺴﻤ ﺔ ﻣ‬

‫ﺘﻌﻴﻴﻦ ﻗﺮاءة ﻋﺪاد‬


‫ﺑ‬‫ﺜﻴﻞ‪ .‬ﻫﻨﺎ ﻗﻤﻨﺎ‬
‫ﺒﺎﺷﺮة ﻣﻦ ﺧﻼل ﻣ‬
‫ﺗﻤ ﺔ ‪Attri‬ﻣ‬
‫ﺘﻌﺪﻳﻞ ﻗﻴﻤ ﺔ اﻟ ﺴﻤ ﺔ ﻫ ﻲ اﻟﻮﺻﻮل إﱃ ﺧﺎ‬
‫ﺑ ﺴﻂ ﻃﺮﻳﻘ ﺔ ﻟ‬
‫إن أ‬
‫ﺒﺎﺷﺮة‪:‬‬
‫اﻟﻤ ﺴﺎﻓﺎ ت ﻋﲆ ‪23‬ﻣ‬

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


‫‪--‬ﻗﺺ‪--‬‬

‫= ‪my_new_car‬ﺳﻴﺎرة )'أودي'‪'a4'، 2016) ،‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_new_car.get_descriptive_name‬‬
‫ﻃ‬

‫‪u my_new_car.odometer_reading = 23‬‬


‫)( ‪my_new_car.read_odometer‬‬

‫ﺒﺮ‬ ‫ً‬
‫ﺒﺎﺷﺮة‪.‬ﻳﺨ‬
‫ﺘﻪ ﻣ‬
‫ﺗﻌﻴﻴﻦ ﻗﻴﻤ‬
‫ﺘﺨﺪمﺗﺪوﻳﻦ اﻟﻨﻘﻄ ﺔ ﻟﻠﻮﺻﻮل إﱃ ﻧﻤﻮذج ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت ﻟﻠ ﺴﻴﺎرة و‬
‫ﻓ ﻲ ‪u ،‬ﻧ ﺴ‬
‫ﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ‬
‫ﺑﻪ ‪ ،‬و‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺜﻮر ﻋﲆﺳﻤ ﺔ ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت اﻟﻤﺮ‬
‫ﺜﺎل ‪my_new_car ،‬واﻟﻌ‬
‫ﺑﺄﺧﺬ اﻟﻤ‬
‫ﻫﺬا اﻟ ﺴﻄﺮ ‪Python‬‬
‫ﻫﺬه اﻟ ﺴﻤ ﺔ ﻋﲆ ‪23:‬‬

‫‪2016‬أودي ‪A4‬‬

‫ﻫﺬه اﻟ ﺴﻴﺎرة ﻟﺪﻳﻬﺎ ‪23‬ﻣﻴﻼ ﻋﻠﻴﻬﺎ‪.‬‬

‫ً‬
‫ﺒﺎﺷﺮة ‪ ،‬وﻟﻜﻦ أﺧﺮى‬
‫ﺜﻞ ﻫﺬه ﻣ‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲ اﻟﻮﺻﻮل إﱃﺳﻤﺎ ت ﻣ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﺳ‬‫ﻓﻲ‬
‫ﺒ ﺔ ﻟﻚ‪.‬‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺘﺤﺪﻳ ﺚ اﻟﻘﻴﻤ ﺔ‬
‫ﺑ‬‫ﺑ ﺔ ﻃﺮﻳﻘ ﺔﺗﻘﻮم‬
‫ﺘﺎ‬
‫ﺘ ﻲﺗﺮﻳﺪ ﻓﻴﻬﺎ ﻛ‬
‫ﻋﺪد اﻟﻤﺮا ت اﻟ‬

‫ﺗﻌﺪﻳﻞ ﻗﻴﻤ ﺔ اﻟ ﺴﻤ ﺔ ﻣﻦ ﺧﻼل ﻃﺮﻳﻘ ﺔ‬

‫ﻗﺪﻳﻜﻮن ﻣﻦ اﻟﻤﻔﻴﺪ أنﻳﻜﻮن ﻟﺪﻳﻚ ﻃﺮقﺗﻌﻤﻞ ﻋﲆﺗﺤﺪﻳ ﺚﺳﻤﺎ ت ﻣﻌﻴﻨ ﺔ ﻟﻚ‪.‬‬


‫ﺘﺤﺪﻳ ﺚ داﺧﻠ ًﻴﺎ‪.‬‬
‫ﺘﻮﱃ اﻟ‬ ‫ً‬ ‫ﺑﺪﻻ ً ﻣﻦ اﻟﻮﺻﻮل إﱃ اﻟ ﺴﻤ ﺔ ﻣ‬
‫ﺒﺎﺷﺮة ‪،‬ﻳﻤﻜﻨﻚﺗﻤﺮﻳﺮ اﻟﻘﻴﻤ ﺔ اﻟﺠﺪﻳﺪة إﱃ ﻃﺮﻳﻘ ﺔﺗ‬

‫ﺜﺎلﻳﻮﺿﺢ ﻃﺮﻳﻘ ﺔﺗ ﺴﻤﻰ ‪update_odometer ():‬‬


‫إﻟﻴﻚ ﻣ‬

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


‫‪--‬ﻗﺺ‪--‬‬

‫ﺘﺮا ت(‪:‬‬
‫ﺗ ﻲ ‪ ،‬ﻋﺪد اﻟﻜﻴﻠﻮﻣ‬
‫‪)u def update_odometer‬ذا‬
‫ﺒﻂ ﻗﺮاءة اﻟﻌﺪاد ﻋﲆ اﻟﻘﻴﻤ ﺔ اﻟﻤﺤﺪدة‪"" ".‬‬
‫"""اﺿ‬
‫= ‪self.odometer_reading‬اﻷﻣﻴﺎل‬

‫= ‪my_new_car‬ﺳﻴﺎرة )'أودي'‪'a4'، 2016) ،‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_new_car.get_descriptive_name‬‬
‫ﻃ‬

‫)‪v my_new_car.update_odometer (23‬‬


‫)( ‪my_new_car.read_odometer‬‬

‫ﺘﻌﺪﻳﻞ اﻟﻮﺣﻴﺪ ﻟﻠ ﺴﻴﺎرة ﻫﻮ إﺿﺎﻓ ﺔ )( ‪update_odometer‬ﻓ ﻲ ‪u.‬‬


‫اﻟ‬
‫ﺗﺨﺰﻧﻬﺎ ﻓ ﻲ ‪self.odometer_reading.‬‬
‫ﺗﺄﺧﺬ ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ﻗﻴﻤ ﺔ اﻷﻣﻴﺎل و‬
‫ﺑﻠ ﺔ‬
‫ﻓ ﻲ ‪v ،‬ﻧ ﺴﻤ ﻲ )( ‪update_odometer‬وﻧﻌﻄﻴﻪ ‪23‬ﻛﻮﺳﻴﻄ ﺔ )اﻟﻤﻘﺎ‬

‫اﻟﻔﺼﻮل ‪169‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﻊ )( ‪read_odometer‬‬
‫ﺘﻌﻴﻴﻦ ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت ﻋﲆ ‪23 ،‬وﻳﻄ‬
‫ﺑ‬‫إﱃ ﻣﻌﻠﻤ ﺔ اﻷﻣﻴﺎل ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻄﺮﻳﻘ ﺔ(‪.‬ﻳﻘﻮم‬
‫اﻟﻘﺮاءة‪:‬‬

‫‪2016‬أودي ‪A4‬‬

‫ﻫﺬه اﻟ ﺴﻴﺎرة ﻟﺪﻳﻬﺎ ‪23‬ﻣﻴﻼ ﻋﻠﻴﻬﺎ‪.‬‬

‫ﺘﻢ ﻓﻴﻬﺎﺗﻌﺪﻳﻞ ﻗﺮاءة ﻋﺪاد‬


‫ﺑﻌﻤﻞ إﺿﺎﻓ ﻲ ﻓ ﻲ ﻛﻞ ﻣﺮةﻳ‬‫ﻳﻤﻜﻨﻨﺎﺗﻤﺪﻳﺪ ﻃﺮﻳﻘ ﺔ )( ‪update_odometer‬ﻟﻠﻘﻴﺎم‬
‫ﺘﺮاﺟﻊ ﻋﻦ ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت‪:‬‬
‫ﺘﺄﻛﺪ ﻣﻦ ﻋﺪم ﻣﺤﺎوﻟ ﺔ أي ﺷﺨﺺ اﻟ‬
‫اﻟﻤ ﺴﺎﻓﺎ ت‪ .‬دﻋﻨﺎ ﻧﻀﻴﻒ اﻟﻘﻠﻴﻞ ﻣﻦ اﻟﻤﻨﻄﻖ ﻟﻠ‬

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


‫‪--‬ﻗﺺ‪--‬‬

‫ﺘﺮا ت(‪:‬‬
‫ﺗ ﻲ ‪ ،‬ﻋﺪد اﻟﻜﻴﻠﻮﻣ‬
‫‪)def update_odometer‬ذا‬
‫""‬

‫ﺒﻂ ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت ﻋﲆ اﻟﻘﻴﻤ ﺔ اﻟﻤﺤﺪدة‪.‬‬


‫اﺿ‬
‫ﺘﺮاﺟﻊ ﻋﻦ ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت‪.‬‬
‫ﺘﻐﻴﻴﺮ إذا ﺣﺎول اﻟ‬
‫ارﻓﺾ اﻟ‬
‫""‬

‫ش‬ ‫إذا اﻷﻣﻴﺎل< ‪= self.odometer_reading:‬‬


‫= ‪self.odometer_reading‬اﻷﻣﻴﺎل‬
‫آﺧﺮ‪:‬‬
‫اﻟﺨﺎﻣ ﺲ‬
‫ﺘﺮاﺟﻊ ﻋﻦ ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت!"(‬
‫ﺒﺎﻋ ﺔ )"ﻻﻳﻤﻜﻨﻚ اﻟ‬
‫ﻃ‬

‫ﺒﻞﺗﻌﺪﻳﻞ اﻟ ﺴﻤ ﺔ‪ .‬إذا ﻛﺎﻧ ﺖ اﻷﻣﻴﺎل اﻟﺠﺪﻳﺪة ‪،‬‬


‫ﺘﺤﻘﻖ اﻵن )( ‪update_odometer‬ﻣﻦ أن اﻟﻘﺮاءة اﻟﺠﺪﻳﺪة ﻣﻨﻄﻘﻴ ﺔ ﻗ‬
‫ﻳ‬
‫ﺒﺮ ﻣﻦ أوﺗ ﺴﺎوي اﻷﻣﻴﺎل اﻟﺤﺎﻟﻴ ﺔ ‪self.odometer_reading ، ،‬ﻳﻤﻜﻨﻚﺗﺤﺪﻳ ﺚ ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت إﱃ‬
‫اﻷﻣﻴﺎل ‪ ،‬أﻛ‬
‫ﺑﺄﻧﻪ ﻻﻳﻤﻜﻨﻚ‬‫ﺘﻠﻘﻰﺗﺤﺬﻳ ﺮًا‬
‫ﺘ‬‫اﻷﻣﻴﺎل اﻟﺠﺪﻳﺪة ش‪ .‬إذا ﻛﺎﻧ ﺖ اﻟﻤ ﺴﺎﻓ ﺔ اﻟﻤﻘﻄﻮﻋ ﺔ اﻟﺠﺪﻳﺪة أﻗﻞ ﻣﻦ اﻷﻣﻴﺎل اﻟﻤﻮﺟﻮدة ‪ ،‬ﻓ ﺴ‬
‫ﺘﺮاﺟﻊ ﻋﻦ ﻋﺪاد اﻟﻤ ﺴﺎﻓ ﺔ‪.‬‬
‫اﻟ‬

‫زﻳﺎدة ﻗﻴﻤ ﺔ اﻟ ﺴﻤ ﺔ ﻣﻦ ﺧﻼل ﻃﺮﻳﻘ ﺔ‬

‫ﺘﻌﻤﻠ ﺔ‬
‫ﺘﺮﻳﻨﺎﺳﻴﺎرة ﻣ ﺴ‬
‫ﺘﺮض أﻧﻨﺎ اﺷ‬
‫ﺗﻤﺎﻣﺎ‪ .‬ﻟﻨﻔ‬
‫ً‬ ‫ﺑﺪﻻ ً ﻣﻦﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ ﺟﺪﻳﺪة‬‫ﺑﻤﻘﺪار ﻣﻌﻴﻦ‬‫ﺘﺎج أﺣﻴﺎﻧًﺎ إﱃ زﻳﺎدة ﻗﻴﻤ ﺔ اﻟ ﺴﻤ ﺔ‬
‫ﺘﺤ‬‫ﺳ‬
‫ﺑﻴﻦ وﻗ ﺖ ﺷﺮاﺋﻬﺎ ووﻗ ﺖﺗ ﺴﺠﻴﻠﻬﺎ‪.‬‬‫ووﺿﻌﻨﺎ ﻋﻠﻴﻬﺎ ﻣ ﺴﺎﻓ ﺔ ‪100‬ﻣﻴﻞ‬

‫ﺘﺰاﻳﺪ وإﺿﺎﻓ ﺔ ﻫﺬه اﻟﻘﻴﻤ ﺔ إﱃ ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت‪:‬‬


‫ﺒﻠﻎ اﻟﻤ‬
‫ﺘﻤﺮﻳﺮ ﻫﺬا اﻟﻤ‬
‫ﺑ‬‫إﻟﻴﻚ ﻃﺮﻳﻘ ﺔﺗ ﺴﻤﺢ ﻟﻨﺎ‬

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


‫‪--‬ﻗﺺ‪--‬‬

‫ﺘﺮا ت(‪:‬‬
‫ﺗ ﻲ ‪ ،‬ﻋﺪد اﻟﻜﻴﻠﻮﻣ‬
‫‪)def update_odometer‬ذا‬
‫‪--‬ﻗﺺ‪--‬‬

‫ﺗ ﻲ ‪ ،‬أﻣﻴﺎل(‪:‬‬
‫‪)u def increment_odometer‬ذا‬
‫ﺒﻠﻎ اﻟﻤﺤﺪد ﻟﻘﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت‪"" ".‬‬
‫"""أﺿﻒ اﻟﻤ‬
‫= ‪self.odometer_reading +‬اﻷﻣﻴﺎل‬

‫= ‪v my_used_car‬ﺳﻴﺎرة )‪('subaru'، 'outback'، 2013‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_used_car.get_descriptive_name‬‬
‫ﻃ‬

‫)‪w my_used_car.update_odometer (23500‬‬


‫)( ‪my_used_car.read_odometer‬‬

‫ﺘﺎﺳﻊ‬
‫‪170‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫)‪x my_used_car.increment_odometer (100‬‬


‫)( ‪my_used_car.read_odometer‬‬

‫ﺗﺄﺧﺬ ﻋﺪدًا ﻣﻦ اﻷﻣﻴﺎل ‪،‬‬


‫اﻟﻄﺮﻳﻘ ﺔ اﻟﺠﺪﻳﺪة )( ‪increment_odometer‬ﻋﻨﺪ ‪u‬‬
‫ﺘﻌﻴﻴﻦ ﻋﺪاد‬
‫ﺑ‬‫ﺘﻌﻤﻠ ﺔ ‪my_used_car. ،‬ﻗﻤﻨﺎ‬
‫وﻳﻀﻴﻒ ﻫﺬه اﻟﻘﻴﻤ ﺔ إﱃ ‪self.odometer_reading.‬ﻓ ﻲ ‪v ،‬ﻧﺼﻨﻊﺳﻴﺎرة ﻣ ﺴ‬
‫ﺗﻤﺮﻳﺮه ‪23500‬ﻋﻨﺪ ‪w.‬ﻓ ﻲ ‪x‬ﻧ ﺴﻤ ﻲ )(‬
‫ﺘﺪﻋﺎء )( ‪update_odometer‬و‬
‫اﻟﻤ ﺴﺎﻓﺎ ت ﻋﲆ ‪23500‬ﻣﻦ ﺧﻼل اﺳ‬
‫ﺗ ﺴﺠﻴﻠﻬﺎ‪:‬‬
‫ﺑﻴﻦ ﺷﺮاء اﻟ ﺴﻴﺎرة و‬‫ﺘ ﻲ ﻗﻄﻌﻨﺎ ﻫﺎ‬
‫‪increment_odometer‬وﻧﻤﺮره ‪100‬ﻹﺿﺎﻓ ﺔ ‪100‬ﻣﻴﻞ اﻟ‬

‫ﺑﺎك ﻫﺬه اﻟ ﺴﻴﺎرة ﻟﺪﻳﻬﺎ ‪23500‬ﻣﻴﻞ‬‫ﺑﺎرو أو ت‬


‫‪2013‬ﺳﻮ‬
‫ﻋﻠﻴﻬﺎ‪.‬‬
‫ﻫﺬه اﻟ ﺴﻴﺎرة ﻟﺪﻳﻬﺎ ‪23600‬ﻣﻴﻼ ﻋﻠﻴﻬﺎ‪.‬‬

‫ﺒﻴ ﺔ ﻟﺬﻟﻚ ﻻ‬
‫ﺑ ﺴﻬﻮﻟ ﺔﺗﻌﺪﻳﻞ ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ﻟﺮﻓﺾ اﻟﺰﻳﺎدا ت اﻟ ﺴﻠ‬‫ﻳﻤﻜﻨﻚ‬
‫ﺘﺮاﺟﻊ ﻋﻦ ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت‪.‬‬
‫ﺘﺨﺪم اﻟﻤﺮء ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ ﻟﻠ‬
‫ﻳﺴ‬

‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﺨﺪﻣ ﻲ اﻟ‬
‫ﺘﺤﻜﻢ ﻓ ﻲ ﻛﻴﻔﻴ ﺔﺗﺤﺪﻳ ﺚ ﻗﻴﻢ ﻣ ﺴ‬
‫ﺜﻞ ﻫﺬه ﻟﻠ‬
‫ﺘﺨﺪام ﻃﺮق ﻣ‬
‫ﻻﻳﻤﻜﻨﻚ اﺳ‬
‫ﺒﻂ ﻗﺮاءةﺳﺮﻋ ﺔ اﻟﻘﺮاءة ﻋﲆ أي ﻗﻴﻤ ﺔ‬
‫ﺒﺮﻧﺎﻣﺞ ﺿ‬
‫ﺜﻞ ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت ‪ ،‬وﻟﻜﻦﻳﻤﻜﻦﻷي ﺷﺨﺺ ﻟﺪﻳﻪ ﺣﻖ اﻟﻮﺻﻮل إﱃ اﻟ‬
‫ﻣ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ﻋﻤﻠﻴﺎ ت اﻟﻔﺤﺺ‬‫ﺘﻔﺎﺻﻴﻞ‬
‫ﺑﺎﻟ‬‫ﺘﻤﺎﻣﺎ ﺷﺪﻳﺪًا‬
‫ً‬ ‫ﺒﺎﺷﺮة‪.‬ﻳﺄﺧﺬ اﻷﻣﺎن اﻟﻔﻌﺎل ا ﻫ‬ ‫ﻋﻦ ﻃﺮﻳﻖ اﻟﻮﺻﻮل إﱃ اﻟ ﺴﻤ ﺔ ﻣ‬
‫ﺜﻞﺗﻠﻚ اﻟﻤﻮﺿﺤ ﺔ ﻫﻨﺎ‪.‬‬ ‫اﻷﺳﺎﺳﻴ ﺔ ﻣ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻤﺮﻳﻦ ‪)9-1‬ﺻﻔﺤ ﺔ ‪166).‬‬


‫ﺒﺮﻧﺎﻣﺠﻚ ﻣﻦ اﻟ‬
‫ﺑ‬‫ﺑﺪأ‬
‫‪9-4.‬اﻟﻌﺪد اﻟﻤﻘﺪم‪ :‬ا‬
‫ﺜﻴﻞﻳ ﺴﻤﻰ ﻣﻄﻌﻢ ﻣﻦ ﻫﺬه اﻟﻔﺌ ﺔ‪.‬‬ ‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﺘﺮاﺿﻴ ﺔ ‪0.‬ﻗﻢ‬ ‫ﺑﻘﻴﻤ ﺔ اﻓ‬ ‫أﺿﻒﺳﻤ ﺔﺗ ﺴﻤﻰ ‪number_served‬‬
‫ﺒﻌﻬﺎ ﻣﺮة أﺧﺮى‪.‬‬
‫ّﻴ ﺮ ﻫﺬه اﻟﻘﻴﻤ ﺔ واﻃ‬
‫ﺛﻢ ﻏ‬ ‫ﺒﻊ ﻋﺪد اﻟﻌﻤﻼء اﻟﺬﻳﻦ ﺧﺪﻣﻬﻢ اﻟﻤﻄﻌﻢ ‪،‬‬
‫اﻃ‬

‫ﺘﺪع‬
‫ﺘﻬﻢ‪ .‬اﺳ‬
‫ﺘﻴﺢ ﻟﻚﺗﻌﻴﻴﻦ ﻋﺪد اﻟﻌﻤﻼء اﻟﺬﻳﻦﺗﻢ ﺧﺪﻣ‬
‫ﺗ‬‫أﺿﻒ ﻃﺮﻳﻘ ﺔﺗ ﺴﻤﻰ )( ‪set_number_served‬‬
‫ﺒﻊ اﻟﻘﻴﻤ ﺔ ﻣﺮة أﺧﺮى‪.‬‬
‫ﺑﺮﻗﻢ ﺟﺪﻳﺪ واﻃ‬‫ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ‬

‫ﺘﻬﻢ‪.‬‬
‫ﺘﻴﺢ ﻟﻚ زﻳﺎدة ﻋﺪد اﻟﻌﻤﻼء اﻟﺬﻳﻦﺗﻢ ﺧﺪﻣ‬
‫ﺗ‬‫أﺿﻒ ﻃﺮﻳﻘ ﺔﺗ ﺴﻤﻰ )( ‪increment_number_served‬‬
‫ﺒﻴﻞ‬
‫ﺜﻞ ﻋﺪد اﻟﻌﻤﻼء اﻟﺬﻳﻦﺗﻢﺗﻘﺪﻳﻢ اﻟﺨﺪﻣ ﺔ ﻟﻬﻢ ‪ ،‬ﻋﲆﺳ‬
‫ﺘﺪع ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ﻣﻊ أي ﻋﺪدﺗﺮﻳﺪهﻳﻤﻜﻦ أنﻳﻤ‬
‫اﺳ‬
‫ﺜﺎل ‪ ،‬ﻓ ﻲﻳﻮم ﻋﻤﻞ‪.‬‬
‫اﻟﻤ‬

‫ﺑﻚ‬‫ﺘﺨﺪم اﻟﺨﺎص‬
‫‪9-5.‬ﻣﺤﺎوﻻ تﺗ ﺴﺠﻴﻞ اﻟﺪﺧﻮل‪ :‬أﺿﻒﺳﻤ ﺔﺗ ﺴﻤﻰ ‪login_attempts‬إﱃ اﻟﻤ ﺴ‬
‫ﺘ ﺐ ﻋﻤﻠﻴ ﺔﺗ ﺴﻤﻰ _‪increment‬‬
‫ﺘﻤﺮﻳﻦ ‪)9-3‬اﻟﺼﻔﺤ ﺔ ‪166).‬اﻛ‬
‫ﻓﺼﻞ دراﺳ ﻲ ﻣﻦ اﻟ‬
‫ﺘ ﺐ ﻃﺮﻳﻘ ﺔ أﺧﺮىﺗ ﺴﻤﻰ )(‬
‫ﺑﻤﻘﺪار ‪1.‬اﻛ‬
‫ﺘ ﻲﺗﺰﻳﺪ ﻣﻦ ﻗﻴﻤ ﺔ ‪login_attempts‬‬
‫)( ‪login_attempts‬اﻟ‬
‫ﺗﻌﻴﺪﺗﻌﻴﻴﻦ ﻗﻴﻤ ﺔ _‪login‬‬
‫‪reset_login_attempts‬‬
‫ﻳﺤﺎول ‪0.‬‬
‫ﺘﺪﻋﺎء )( ‪increment_login_attempts‬‬
‫ﺘﺨﺪم واﺳ‬
‫ﺜﻴﻞ ﻟﻔﺌ ﺔ اﻟﻤ ﺴ‬
‫ﺑﻌﻤﻞ ﻣ‬‫ﻗﻢ‬
‫ﺑـ ‪().‬‬‫ﺗﺼﻞ‬
‫ﺛﻢ ا‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪،‬‬‫ﺗﻬﺎ‬
‫ﺘﺄﻛﺪ ﻣﻦ زﻳﺎد‬
‫ﺒﻊ ﻗﻴﻤ ﺔ ‪login_attempts‬ﻟﻠ‬
‫ﻋﺪة ﻣﺮا ت‪ .‬اﻃ‬
‫ﺘﺄﻛﺪ ﻣﻦ إﻋﺎدةﺗﻌﻴﻴﻨﻪ إﱃ ‪0.‬‬
‫ﺒﻊ ‪login_attempts‬ﻣﺮة أﺧﺮى ﻟﻠ‬
‫‪reset_login_attempts‬اﻃ‬

‫ﺒﻘﺎ ت‬
‫اﻟﻄ‬ ‫‪171‬‬
‫‪Machine Translated by Google‬‬

‫ﻣﻴﺮا ث‬
‫ﺘﺨﺼﺼ ﺔ ﻣﻦ ﻓﺌ ﺔ أﺧﺮى‬
‫ﺒﺎرة ﻋﻦ ﻧ ﺴﺨ ﺔ ﻣ‬
‫ﺒﻪ ﻋ‬
‫ﺘ‬‫ﺑ ﺔ اﻟﻔﺼﻞ‪ .‬إذا ﻛﺎن اﻟﻔﺼﻞ اﻟﺬيﺗﻜ‬
‫ﺘﺎ‬
‫ﺒﺪء ﻣﻦ اﻟﺼﻔﺮ ﻋﻨﺪ ﻛ‬
‫ﺋﻤﺎ اﻟ‬
‫ﻟﻴ ﺲ ﻋﻠﻴﻚ دا ً‬
‫ُﻄﻠﻖ‬
‫ﺘﺨﺪام اﻟﻤﻴﺮا ث‪ .‬ﻋﻨﺪﻣﺎﺗﺮ ث ﻓﺌ ﺔ ﻣﻦ أﺧﺮى ‪ ،‬ﻓﺈﻧﻬﺎﺗﺄﺧﺬﺗﻠﻘﺎﺋ ًﻴﺎ ﺟﻤﻴﻊﺳﻤﺎ ت وﻃﺮق اﻟﻔﺌ ﺔ اﻷوﱃ‪.‬ﻳ‬
‫ﺘﻬﺎ ‪ ،‬ﻓﻴﻤﻜﻨﻚ اﺳ‬
‫ﺒ‬‫ﺘ‬‫ﻛ‬
‫ُﻄﻠﻖ ﻋﲆ اﻟﻔﺼﻞ اﻟﺠﺪﻳﺪ ﻓﺌ ﺔ ﻓﺮﻋﻴ ﺔ‪.‬ﺗﺮ ث اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ ﻛﻞﺳﻤ ﺔ وﻃﺮﻳﻘ ﺔ ﻣﻦ‬
‫ﺑﻴﻨﻤﺎﻳ‬‫ﻋﲆ اﻟﻔﺼﻞ اﻷﺻﻠ ﻲ ﻓﺌ ﺔ اﻷﺻﻞ ‪،‬‬
‫ﺑﻬﺎ‪.‬‬ ‫ﺻﻨﻔﻬﺎ اﻷﺻﻠ ﻲ وﻟﻜﻨﻬﺎ أ ً‬
‫ﻳﻀﺎ ﺣﺮة ﻓ ﻲﺗﺤﺪﻳﺪﺳﻤﺎ ت وﻃﺮق ﺟﺪﻳﺪة ﺧﺎﺻ ﺔ‬

‫ﺑﻌ ﺔ‬
‫ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻟﻔﺌ ﺔﺗﺎ‬
‫ﺜﻴﻞ ﻣﻦ ﻓﺌ ﺔ ﻓﺮﻋﻴ ﺔ ﻫ ﻲﺗﻌﻴﻴﻦ ﻗﻴﻢ ﻟﺠﻤﻴﻊ اﻟ ﺴﻤﺎ ت ﻓ ﻲ اﻟﻔﺌ ﺔ اﻷﺻﻠﻴ ﺔ‪ .‬ﻟﻠﻘﻴﺎم‬
‫ﺑﻬﺎ ‪Python‬ﻋﻨﺪ إﻧﺸﺎء ﻣ‬‫أول ﻣﻬﻤ ﺔﺗﻘﻮم‬
‫ﺑﺬﻟﻚ ‪__init __ () ،‬‬
‫ﺘﺎج إﱃ ﻣ ﺴﺎﻋﺪة ﻣﻦ ﺻﻔﻪ اﻷﺻﻞ‪.‬‬
‫ﻃﺮﻳﻘ ﺔ ﻟﺼﻒ ﻃﻔﻞﻳﺤ‬
‫ﺑﺎﺋﻴ ﺔ ﻫ ﻲ ﻣﺠﺮد ﻧﻮع ﺧﺎص ﻣﻦ اﻟ ﺴﻴﺎرا ت ‪ ،‬ﻟﺬﻟﻚﻳﻤﻜﻨﻨﺎ أن‬‫ﺑﺎﺋﻴ ﺔ‪ .‬اﻟ ﺴﻴﺎرة اﻟﻜﻬﺮ‬
‫ﺟﺎ ﻟ ﺴﻴﺎرة ﻛﻬﺮ‬
‫ﺜﺎل ‪ ،‬ﻟﻨﻀﻊ ﻧﻤﻮذ ً‬
‫ﻛﻤ‬
‫ﺑ ﺔ رﻣﺰ ﻟﻠ ﺴﻤﺎ ت‬
‫ﺘﺎ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ ﻓﻘﻂ ﻛ‬ ‫ﺛﻢﺳﻴ‬‫ﺑ ًﻘﺎ‪.‬‬
‫ﺒﻨﺎ ﻫﺎﺳﺎ‬
‫ﺘ‬‫ﺘ ﻲﻛ‬
‫ﺒﻨ ﻲ ﻓﺌ ﺔ ‪ElectricCar‬اﻟﺠﺪﻳﺪة ﻟﺪﻳﻨﺎ ﻋﲆ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرا ت اﻟ‬ ‫ﻧ‬
‫ﺑﺎﺋﻴ ﺔ‪.‬‬
‫ﺑﺎﻟ ﺴﻴﺎرا ت اﻟﻜﻬﺮ‬‫واﻟ ﺴﻠﻮك اﻟﺨﺎﺻﻴﻦ‬

‫ﺘﻲ‬
‫ﺑ ﺴﻴﻄ ﺔ ﻣﻦ ﻓﺌ ﺔ ‪ElectricCar ،‬واﻟ‬‫ﺑﺼﻨﻊ ﻧ ﺴﺨ ﺔ‬‫ﺒﺪأ‬
‫ﻟﻨ‬
‫ﻳﻔﻌﻞ ﻛﻞ ﺷ ﻲءﺗﻔﻌﻠﻪ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة ‪:‬‬

‫‪electric_car.py u class Car ():‬‬


‫ﺜﻴﻞﺳﻴﺎرة‪"" ".‬‬
‫ﺘﻤ‬‫ﺑ ﺴﻴﻄ ﺔ ﻟ‬‫"""ﻣﺤﺎوﻟ ﺔ‬

‫ﺗ ﻲ ‪ ،‬اﻟﻄﺮاز ‪ ،‬اﻟ ﺴﻨ ﺔ(‪:‬‬


‫__ ‪)def __init‬ذا‬
‫= ‪self.make‬ﺟﻌﻞ‬
‫ﻧﻤﻮذج = ‪self.model‬ﻧﻤﻮذج‬

‫= ‪self.year‬ﺳﻨ ﺔ‬
‫‪self.odometer_reading = 0‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)def get_descriptive_name‬ذا‬
‫‪+ self.make +‬‬
‫"‬ ‫"‬ ‫"‬ ‫"‬
‫‪long_name = str (self.year) +‬إرﺟﺎع )(‬ ‫ﺗﻲ‬
‫‪+‬اﻟﻨﻤﻮذج اﻟﺬا‬

‫‪long_name.title‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)def read_odometer‬ذا‬
‫"‬ ‫"‬
‫ﺒﺎﻋ ﺔ )" ﻫﺬه اﻟ ﺴﻴﺎرة ﻟﺪﻳﻬﺎ‬
‫ﻃ‬ ‫‪+ str (self.odometer_reading) +‬‬ ‫أﻣﻴﺎل ﻋﻠﻴﻬﺎ‪") .‬‬

‫ﺘﺮا ت(‪:‬‬
‫ﺗ ﻲ ‪ ،‬ﻋﺪد اﻟﻜﻴﻠﻮﻣ‬
‫‪)def update_odometer‬ذا‬
‫إذا اﻷﻣﻴﺎل< ‪= self.odometer_reading:‬‬
‫= ‪self.odometer_reading‬اﻷﻣﻴﺎل‬
‫آﺧﺮ‪:‬‬

‫ﺘﺮاﺟﻊ ﻋﻦ ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت!"(‬


‫ﺒﺎﻋ ﺔ )"ﻻﻳﻤﻜﻨﻚ اﻟ‬
‫ﻃ‬

‫ﺗ ﻲ ‪ ،‬أﻣﻴﺎل(‪:‬‬
‫‪)def increment_odometer‬ذا‬
‫= ‪self.odometer_reading +‬اﻷﻣﻴﺎل‬

‫‪)v class ElectricCar‬ﺳﻴﺎرة(‪:‬‬


‫ﺑﺎﺋﻴ ﺔ‪"" ".‬‬
‫ﺒﺎ ت اﻟﻜﻬﺮ‬
‫ﺑﺎﻟﻤﺮﻛ‬‫ﺜﻞ ﺟﻮاﻧ ﺐ ﻣﻦ اﻟ ﺴﻴﺎرة ‪ ،‬ﺧﺎﺻ ﺔ‬
‫ﺗﻤ‬‫"""‬

‫ﺘﺎﺳﻊ‬
‫‪172‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺗ ﻲ ‪ ،‬اﻟﺼﻨﻊ ‪ ،‬اﻟﻄﺮاز ‪ ،‬اﻟ ﺴﻨ ﺔ(‪:‬‬‫__ ‪)w def __init‬ذا‬


‫ﺗﻬﻴﺌ ﺔﺳﻤﺎ ت اﻟﻔﺌ ﺔ اﻷﺻﻠﻴ ﺔ‪"" ".‬‬‫"""‬
‫‪x‬‬ ‫__ ‪)super () .__ init‬اﻟﻤﺎرﻛ ﺔ ‪ ،‬اﻟﻤﻮدﻳﻞ ‪ ،‬اﻟ ﺴﻨ ﺔ(‬

‫)‪y my_tesla = ElectricCar ('tesla'، 'model s'، 2016‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_tesla.get_descriptive_name‬‬ ‫ﻃ‬

‫ﺒﺪأ ﻣﻊ اﻟ ﺴﻴﺎرة‪ .‬ﻋﻨﺪ إﻧﺸﺎء ﻓﺼﻞ دراﺳ ﻲ ﻓﺮﻋ ﻲ ‪،‬ﻳﺠ ﺐ أنﻳﻜﻮن اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ اﻷﺻﻞ ﺟﺰءًا ﻣﻦ اﻟﻤﻠﻒ‬
‫ﻓ ﻲ ‪u‬ﻧ‬
‫ﺘﻢ‬
‫ﺒﻞ اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ اﻟﻔﺮﻋ ﻲ ﻓ ﻲ اﻟﻤﻠﻒ‪ .‬ﻓ ﻲ ‪v‬ﻧﺤﺪد ﻓﺌ ﺔ اﻟﻄﻔﻞ ‪ElectricCar. ،‬ﻳﺠ ﺐ أنﻳ‬
‫اﻟﺤﺎﻟ ﻲ وﻳﺠ ﺐ أنﻳﻈﻬﺮ ﻗ‬
‫ﺑﻴﻦ ﻗﻮﺳﻴﻦ ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ‪.‬‬‫ﺗﻀﻤﻴﻦ اﺳﻢ اﻟﻔﺌ ﺔ اﻷﺻﻞ‬

‫ﺑ ﺔ ﻟﺼﻨﻊﺳﻴﺎرة‬
‫ﺗﺄﺧﺬ ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻓ ﻲ ‪w‬اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﻄﻠﻮ‬
‫ﺜﺎل‪.‬‬
‫ﻣ‬

‫ﺜﻮن ﻋﲆ ﺻﻨﻌﻬﺎ‬
‫ﺑﺎﻳ‬‫اﻟﻮﻇﻴﻔ ﺔ )( ‪super‬ﻓ ﻲ ‪ x‬ﻫ ﻲ وﻇﻴﻔ ﺔ ﺧﺎﺻ ﺔﺗ ﺴﺎﻋﺪ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟـ‬
‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻣﻦ اﻟﻔﺌ ﺔ اﻟﺮ‬
‫ﺑﺎﺳ‬
‫ﺒﺮ ﻫﺬا اﻟ ﺴﻄﺮ ‪Python‬‬
‫ﺑﻴﻦ ﻓﺌ ﺔ اﻟﻮاﻟﺪﻳﻦ واﻟﻄﻔﻞ‪.‬ﻳﺨ‬‫ﺑﻂ‬
‫اﻟﺮوا‬
‫ﺑﺮ‬
‫ﺜﻴﻞ ‪ElectricCar‬ﺟﻤﻴﻊﺳﻤﺎ ت ﺻﻨﻔﻬﺎ اﻷﺻﻠ ﻲ‪ .‬اﻻﺳﻢﺳﻮ‬
‫ﺘ ﻲﺗﻤﻨﺢ ﻣ‬
‫‪ElectricCar ،‬واﻟ‬

‫ﺒﻘ ﺔ اﻟﻔﺮﻋﻴ ﺔ ﻓﺌ ﺔ ﻓﺮﻋﻴ ﺔ‪.‬‬


‫ﺑﺎﻟﻔﺌ ﺔ اﻟﻌﻠﻴﺎ واﻟﻄ‬‫ﺋﻴ ﺴﻴ ﺔ‬
‫ﺗ ﻲ ﻣﻦ اﺻﻄﻼحﺗ ﺴﻤﻴ ﺔ اﻟﻔﺌ ﺔ اﻟﺮ‬
‫ﻳﺄ‬

‫ﺑﻨﻔ ﺲ ﻧﻮع‬‫ﺑﺎﺋﻴ ﺔ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻣﻦ ﺧﻼل ﻣﺤﺎوﻟ ﺔ إﻧﺸﺎءﺳﻴﺎرة ﻛﻬﺮ‬‫ﺛ ﺔﺗﻌﻤﻞ‬
‫ﺒﺮ ﻣﺎ إذا ﻛﺎﻧ ﺖ اﻟﻮرا‬
‫ﺘ‬‫ﻧﺤﻦ ﻧﺨ‬
‫ﺜﻴﻞ ﻟﻔﺌ ﺔ ‪ElectricCar ،‬وﻧﺨﺰﻧﻪ ﻓ ﻲ ‪my_tesla.‬‬
‫ﺑﻌﻤﻞ ﻣ‬‫ﺘ ﻲ ﻧﻮﻓﺮ ﻫﺎ ﻋﻨﺪ ﺻﻨﻊﺳﻴﺎرة ﻋﺎدﻳ ﺔ‪ .‬ﻓ ﻲ ‪y ،‬ﻧﻘﻮم‬
‫اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ )(‬
‫ﺑﺎﺳ‬
‫ﺒﺮ ‪Python‬‬
‫ﺑﺪور ﻫﺎﺗﺨ‬‫ﺘﻲ‬
‫ﺘﺪﻋ ﻲ ﻫﺬا اﻟ ﺴﻄﺮ ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬اﻟﻤﺤﺪدة ﻓ ﻲ ‪ElectricCar ،‬واﻟ‬
‫ﻳﺴ‬
‫__ ‪__init‬اﻟﻤﺤﺪدة ﻓ ﻲ ﻓﺌ ﺔ ‪par ent .‬ﻧﺤﻦ ﻧﻘﺪم اﻟﺤﺠﺞ "‪"tesla‬و "‪"model s‬و ‪2016.‬‬

‫ﺘﺄﻛﺪ‬
‫ﺑﺎﺋﻴ ﺔ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﻤﺮﺣﻠ ﺔ ‪ ،‬ﻧ‬
‫ﺑﺎﻟ ﺴﻴﺎرة اﻟﻜﻬﺮ‬‫ﺘﻰ اﻵن ﺧﺎﺻ ﺔ‬
‫ﺑﺼﺮف اﻟﻨﻈﺮ ﻋﻦ ‪__init __ () ،‬ﻻﺗﻮﺟﺪﺳﻤﺎ ت أو ﻃﺮق ﺣ‬
‫ﺒ ﺔ ﻟﻠ ﺴﻴﺎرة ‪:‬‬
‫ﺑﺎﺋﻴ ﺔ ﻟﺪﻳﻬﺎ اﻟ ﺴﻠﻮﻛﻴﺎ ت اﻟﻤﻨﺎﺳ‬
‫ﻓﻘﻂ ﻣﻦ أن اﻟ ﺴﻴﺎرة اﻟﻜﻬﺮ‬

‫ﺗ ﺴﻼ ﻣﻮدﻳﻞ اس‬
‫‪2016‬‬

‫ﺜﻴﻞ ‪Car ،‬ﻟﺬﻟﻚ ﻧﺤﻦ اﻵن‬


‫ﺜﻞ ﻣ‬
‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫ﺜﻴﻞ ‪ElectricCar‬‬
‫ﻳﻌﻤﻞ ﻣ‬
‫ﺑﺎﺋﻴ ﺔ‪.‬‬
‫ﺑﺎﻟ ﺴﻴﺎرا ت اﻟﻜﻬﺮ‬‫ﺒﺪأ ﻓ ﻲﺗﺤﺪﻳﺪ اﻟ ﺴﻤﺎ ت واﻟﻄﺮق اﻟﺨﺎﺻ ﺔ‬
‫ﻳﻤﻜﻦ أنﺗ‬

‫ﺜﻮن ‪2.7‬‬
‫ﺑﺎﻳ‬‫ﺛﺔ ﻓ ﻲ‬
‫اﻟﻮرا‬
‫ﺒﺪو ﻓﺌ ﺔ ‪ElectricCar‬ﻛﻤﺎﻳﻠ ﻲ ‪:‬‬
‫ﺘ‬‫ﺘﻠﻒ اﻟﻤﻴﺮا ث ﻗﻠﻴ ﻼً‪.‬ﺳ‬
‫ﻓ ﻲ ‪Python 2.7 ،‬ﻳﺨ‬

‫ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة )ﻛﺎﺋﻦ(‪:‬‬


‫ﺗ ﻲ ‪ ،‬اﻟﻄﺮاز ‪ ،‬اﻟ ﺴﻨ ﺔ(‪:‬‬‫__ ‪)def __init‬ذا‬
‫‪--‬ﻗﺺ‪--‬‬

‫ﻓﺌ ﺔ ‪)ElectricCar‬ﺳﻴﺎرة(‪:‬‬
‫ﺗ ﻲ ‪ ،‬اﻟﻄﺮاز ‪ ،‬اﻟ ﺴﻨ ﺔ(‪:‬‬ ‫__ ‪)def __init‬ذا‬
‫ﺗ ﻲ( ‪)init __ __.‬اﻟﻤﺎرﻛ ﺔ ‪ ،‬اﻟﻤﻮدﻳﻞ ‪ ،‬اﻟ ﺴﻨ ﺔ(‬ ‫ﺑﺎﺋﻴ ﺔ ‪ ،‬ذا‬‫ﺑﺮ )ﺳﻴﺎرة ﻛﻬﺮ‬
‫ﺳﻮ‬
‫‪--‬ﻗﺺ‪--‬‬

‫ﺒﻘﺎ ت‬
‫اﻟﻄ‬ ‫‪173‬‬
‫‪Machine Translated by Google‬‬

‫ﺗ ﻲ ‪ .‬ﻫﺬه اﻟﺤﺠﺞ ﺿﺮورﻳ ﺔ ﻟﻤ ﺴﺎﻋﺪة‬


‫ﺘﺎج اﻟﺪاﻟ ﺔ )( ‪super‬إﱃ وﺳﻴﻄﻴﻦ‪ :‬إﺷﺎرة إﱃ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ واﻟﺸ ﻲء اﻟﺬا‬
‫ﺗﺤ‬
‫ﺗﺄﻛﺪ ﻣﻦ‬
‫ﺛ ﺔ ﻓ ﻲ ‪Python 2.7 ،‬‬
‫ﺘﺨﺪام اﻟﻮرا‬
‫ﺑﻴﻦ ﻓﺼﻮل اﻟﻮاﻟﺪﻳﻦ واﻟﻄﻔﻞ‪ .‬ﻋﻨﺪ اﺳ‬‫ﺒﺔ‬
‫ﺗﺼﺎﻻ ت ﻣﻨﺎﺳ‬
‫‪Python‬ﻋﲆ إﺟﺮاء ا‬
‫ﺑﻨﺎء ﺟﻤﻠ ﺔ اﻟﻜﺎﺋﻦ أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺘﺨﺪام‬
‫ﺑﺎﺳ‬‫ﺗﺤﺪﻳﺪ اﻟﻔﺌ ﺔ اﻷﺻﻠﻴ ﺔ‬

‫ﺗﺤﺪﻳﺪ اﻟ ﺴﻤﺎ ت واﻟﻄﺮق ﻟﻔﺌ ﺔ اﻟﻄﻔﻞ‬


‫ﺑﻴﻦ اﻟﻔﺌ ﺔ‬‫ﺘﻤﻴﻴﺰ‬
‫ﺑﻤﺠﺮد أنﻳﻜﻮن ﻟﺪﻳﻚ ﻓﺌ ﺔ ﻓﺮﻋﻴ ﺔﺗﺮ ث ﻣﻦ ﻓﺌ ﺔ أﺻﻞ ‪،‬ﻳﻤﻜﻨﻚ إﺿﺎﻓ ﺔ أيﺳﻤﺎ ت وﻃﺮق ﺟﺪﻳﺪة ﺿﺮورﻳ ﺔ ﻟﻠ‬
‫اﻟﻔﺮﻋﻴ ﺔ واﻟﻔﺌ ﺔ اﻷﺻﻠﻴ ﺔ‪.‬‬

‫ﺑﻼغ ﻋﻦ ﻫﺬه اﻟ ﺴﻤ ﺔ‪.‬‬


‫ﺜﺎل( وﻃﺮﻳﻘ ﺔ ﻟﻺ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻄﺎرﻳ ﺔ ‪ ،‬ﻋﲆﺳ‬
‫ﺑﺎﺋﻴ ﺔ )‬
‫ﺑﺎﻟ ﺴﻴﺎرا ت اﻟﻜﻬﺮ‬‫دﻋﻨﺎ ﻧﻀﻴﻒﺳﻤ ﺔ ﺧﺎﺻ ﺔ‬
‫ﺒﻊ وﺻ ًﻔﺎ ﻟﻠ‬
‫ﺒﻄﺎرﻳ ﺔ‪:‬‬ ‫ﺘ ﺐ ﻃﺮﻳﻘ ﺔﺗﻄ‬
‫ﺒﻄﺎرﻳ ﺔ وﻧﻜ‬
‫ﺳﻨﺨﺰن ﺣﺠﻢ اﻟ‬

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


‫‪--‬ﻗﺺ‪--‬‬

‫ﻓﺌ ﺔ ‪)ElectricCar‬ﺳﻴﺎرة(‪:‬‬
‫ﺑﺎﺋﻴ ﺔ‪"" ".‬‬
‫ﺒﺎ ت اﻟﻜﻬﺮ‬
‫ﺑﺎﻟﻤﺮﻛ‬‫ﺜﻞ ﺟﻮاﻧ ﺐ ﻣﻦ اﻟ ﺴﻴﺎرة ‪ ،‬ﺧﺎﺻ ﺔ‬
‫ﺗﻤ‬‫"""‬

‫ﺗ ﻲ ‪ ،‬اﻟﻄﺮاز ‪ ،‬اﻟ ﺴﻨ ﺔ(‪:‬‬


‫__ ‪)def __init‬ذا‬
‫""‬

‫ﺗﻬﻴﺌ ﺔﺳﻤﺎ ت اﻟﻔﺌ ﺔ اﻷﺻﻞ‪.‬‬


‫ﺑﺎﺋﻴ ﺔ‪.‬‬
‫ﺑﺎﻟ ﺴﻴﺎرة اﻟﻜﻬﺮ‬‫ﺘﻬﻴﺌ ﺔ اﻟ ﺴﻤﺎ ت اﻟﺨﺎﺻ ﺔ‬
‫ﺑ‬‫ﺛﻢ ﻗﻢ‬
‫""‬

‫__ ‪)super () .__ init‬اﻟﻤﺎرﻛ ﺔ ‪ ،‬اﻟﻤﻮدﻳﻞ ‪ ،‬اﻟ ﺴﻨ ﺔ(‬


‫ش‬ ‫‪self.battery_size = 70‬‬

‫ﺒﻄﺎرﻳ ﺔ )اﻟﺬا ت(‪:‬‬


‫‪v def‬وﺻﻒ_اﻟ‬
‫ﺑﻴﺎﻧًﺎﻳﺼﻒ ﺣﺠﻢ اﻟ‬
‫ﺒﻄﺎرﻳ ﺔ‪"" ".‬‬ ‫ﺒﻊ‬
‫"""اﻃ‬
‫"‬
‫ﺑﻬﺎ ﻣﻠﻒ‬‫ﻳ ﺔاﻟ ﺴﻴﺎرة‬
‫)"‪-kWh.‬‬ ‫ﺬه‬‫ﺒﺎﻋ ﺔ‪ ")"+‬ﻫ‬
‫ﺑﻄﺎر‬ ‫‪(self.battery_size) +‬ﻃ‪str‬‬

‫)‪my_tesla = ElectricCar ('tesla'، 'model s'، 2016‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_tesla.get_descriptive_name‬‬
‫ﻃ‬
‫)( ‪my_tesla.describe_battery‬‬

‫ﺜﺎل ‪70. ،‬‬


‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﻬﺎ اﻷوﻟﻴ ﺔ إﱃ ‪ ،‬ﻋﲆﺳ‬
‫ﺘﻌﻴﻴﻦ ﻗﻴﻤ‬
‫ﺑ‬‫ﻓ ﻲ ‪u ،‬ﻧﻀﻴﻒﺳﻤ ﺔ ﺟﺪﻳﺪة ‪self.battery_size‬وﻗﻤﻨﺎ‬
‫ﺑﺄي ﺣﺎﻻ ت ﻟﻠ ﺴﻴﺎرة ‪ .‬ﻧﻀﻴﻒ‬‫ﺒﻂ‬
‫ﺗ‬‫ﺘ ﻲﺗﻢ إﻧﺸﺎؤ ﻫﺎ ﻣﻦ ﻓﺌ ﺔ ‪ElectricCar‬وﻟﻜﻨﻬﺎ ﻟﻦﺗﺮ‬
‫ﺑﺠﻤﻴﻊ اﻟﺤﺎﻻ ت اﻟ‬‫ﺘﺮن ﻫﺬه اﻟ ﺴﻤ ﺔ‬
‫ﺘﻘ‬‫ﺳ‬
‫ﺒﻄﺎرﻳ ﺔ ﻓ ﻲ ‪v.‬ﻋﻨﺪﻣﺎ ﻧ ﺴﻤ ﻲ ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ‪ ،‬ﻧﺤﺼﻞ‬
‫ﺒﻊ ﻣﻌﻠﻮﻣﺎ ت ﺣﻮل اﻟ‬
‫ﺗﻄ‬ ‫أ ً‬
‫ﻳﻀﺎ ﻃﺮﻳﻘ ﺔﺗ ﺴﻤﻰ )( ‪description_battery‬‬
‫ﺑﺸﻜﻞ واﺿﺢ‪:‬‬‫ﺑﺎﺋﻴ ﺔ‬
‫ﺑﺎﻟ ﺴﻴﺎرة اﻟﻜﻬﺮ‬‫ﻋﲆ وﺻﻒ ﺧﺎص‬

‫ﺑﻄﺎرﻳ ﺔ‬‫ﺗ ﺴﻼ ﻣﻮدﻳﻞ ‪ S‬ﻫﺬه اﻟ ﺴﻴﺎرة ﻟﺪﻳﻬﺎ‬


‫‪2016‬‬
‫‪70‬ﻛﻴﻠﻮ واط ﻓ ﻲ اﻟ ﺴﺎﻋ ﺔ‪.‬‬

‫ﻟﻴ ﺲ ﻫﻨﺎك ﺣﺪ ﻟﻤﻘﺪارﺗﺨﺼﺼﻚ ﻓ ﻲ ﻓﺌ ﺔ ‪ElectricCar .‬‬


‫ﺘﺎﺟﻬﺎ‪.‬‬
‫ﺘ ﻲﺗﺤ‬
‫ﺑﺄﻳ ﺔ درﺟ ﺔ ﻣﻦ اﻟﺪﻗ ﺔ اﻟ‬‫ﺑﺎﺋﻴ ﺔ‬
‫ﺘﺼﻤﻴﻢﺳﻴﺎرة ﻛﻬﺮ‬
‫ﺘﺎﺟﻬﺎ ﻟ‬
‫ﺘ ﻲﺗﺤ‬
‫ﻳﻤﻜﻨﻚ إﺿﺎﻓ ﺔ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟ ﺴﻤﺎ ت واﻟﻄﺮق اﻟ‬
‫ﺑﺎء‬
‫ﺑﺎﻟﻜﻬﺮ‬‫ﺑﺪﻻ ً ﻣﻦ واﺣﺪة ﺧﺎﺻ ﺔ‬‫ﺘﻤ ﻲ إﱃ أيﺳﻴﺎرة ‪،‬‬
‫ﺧﺎﺻﻴ ﺔ أو ﻃﺮﻳﻘ ﺔﻳﻤﻜﻦ أنﺗﻨ‬

‫ﺘﺎﺳﻊ‬
‫‪174‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎح ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ أ ً‬


‫ﻳﻀﺎﻷي ﺷﺨﺺ‬ ‫ﺘ‬ ‫ﺑﺪﻻ ً ﻣﻦ ﻓﺌ ﺔ ‪ElectricCar .‬‬
‫ﺑﻌﺪ ذﻟﻚ ‪،‬ﺳ‬ ‫ﺘﻬﺎ إﱃ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‬
‫اﻟ ﺴﻴﺎرة ‪،‬ﻳﺠ ﺐ إﺿﺎﻓ‬
‫ﺑﺎﺋﻴ ﺔ‪.‬‬
‫ﺒﺎ ت اﻟﻜﻬﺮ‬
‫ﺑﺎﻟﻤﺮﻛ‬‫ﺘﻮي ﻓﺌ ﺔ ‪ElectricCar‬ﻓﻘﻂ ﻋﲆ رﻣﺰ ﻟﻠﻤﻌﻠﻮﻣﺎ ت واﻟ ﺴﻠﻮك اﻟﺨﺎص‬
‫ﺘﺤ‬‫ﺘﺨﺪم ﻓﺌ ﺔ اﻟ ﺴﻴﺎرا ت ‪ ،‬وﺳ‬
‫ﻳﺴ‬

‫ﻃﺮقﺗﺠﺎوز ﻣﻦ ﻓﺌ ﺔ اﻷﺻﻞ‬
‫ﺑﺬﻟﻚ ‪،‬ﺗﻘﻮم‬‫ﺘﻨﺎﺳ ﺐ ﻣﻊ ﻣﺎﺗﺤﺎولﺗﺼﻤﻴﻤﻪ ﻣﻊ اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ اﻟﻔﺮﻋ ﻲ‪ .‬ﻟﻠﻘﻴﺎم‬
‫ﻳﻤﻜﻨﻚﺗﺠﺎوز أي ﻃﺮﻳﻘ ﺔ ﻣﻦ ﻓﺌ ﺔ اﻷﺻﻞ ﻻﺗ‬
‫ﺘﺠﺎ ﻫﻞ ‪Python‬‬
‫ﺘ‬‫ﺘ ﻲﺗﺮﻳﺪﺗﺠﺎوز ﻫﺎ ﻓ ﻲ اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ اﻷﺻﻞ‪.‬ﺳ‬
‫ﺑﻨﻔ ﺲ اﺳﻢ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬‫ﺘﻌﺮﻳﻒ ﻃﺮﻳﻘ ﺔ ﻓ ﻲ اﻟﻔﺌ ﺔ اﻟﻔﺮﻋﻴ ﺔ‬
‫ﺑ‬
‫ﺘ ﻲﺗﺤﺪد ﻫﺎ ﻓ ﻲ اﻟﻔﺼﻞ اﻟﻔﺮﻋ ﻲ‪.‬‬
‫ﺒﻪ ﻓﻘﻂ إﱃ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬
‫ﺘ‬‫ﺗﻨ‬
‫ﻃﺮﻳﻘ ﺔ اﻟﻔﺌ ﺔ اﻷﺻﻞ و‬

‫ﺒ ﺔﺗﻌﻤﻞ‬
‫ﺒ ﺔ ﻟﻤﺮﻛ‬
‫ﺑﺎﻟﻨ ﺴ‬‫ﺘﺮض أن ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة ﻟﺪﻳﻬﺎ ﻃﺮﻳﻘ ﺔﺗ ﺴﻤﻰ ‪ fill_gas_tank ().‬ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ﻻ ﻣﻌﻨﻰ ﻟﻬﺎ‬
‫ﻟﻨﻔ‬
‫ﺑﺬﻟﻚ‪:‬‬‫ﺑﺎﻟﻜﺎﻣﻞ ‪ ،‬ﻟﺬﻟﻚ ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲﺗﺠﺎوز ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ‪ .‬إﻟﻴﻚ ﻃﺮﻳﻘ ﺔ واﺣﺪة ﻟﻠﻘﻴﺎم‬‫ﺑﺎء‬
‫ﺑﺎﻟﻜﻬﺮ‬

‫‪)def ElectricCar‬ﺳﻴﺎرة(‪:‬‬
‫‪--‬ﻗﺺ‪--‬‬

‫‪def fill_gas_tank ():‬‬


‫ﺘﻮي ﻋﲆ ﺧﺰاﻧﺎ ت ﻏﺎز‪"" ".‬‬ ‫ﺑﺎﺋﻴ ﺔ ﻻﺗﺤ‬
‫"""اﻟ ﺴﻴﺎرا ت اﻟﻜﻬﺮ‬
‫ﺘﺎج إﱃ ﺧﺰان وﻗﻮد!"(‬‫ﺒﺎﻋ ﺔ )" ﻫﺬه اﻟ ﺴﻴﺎرة ﻻﺗﺤ‬‫ﻃ‬

‫ﺘﺠﺎ ﻫﻞ ‪Python‬اﻟﻄﺮﻳﻘ ﺔ )(‬


‫ﺑﺎﺋﻴ ﺔ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺑ ﺴﻴﺎرة ﻛﻬﺮ‬
‫ﺑـ )( ‪fill_gas_tank‬‬‫ﺗﺼﺎل‬
‫اﻵن إذا ﺣﺎول ﺷﺨﺺ ﻣﺎ اﻻ‬
‫ﺘﻔﻆ‬ ‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ‪ .‬ﻋﻨﺪﻣﺎﺗ ﺴ‬
‫ﺘﺨﺪم اﻟﻤﻴﺮا ث ‪،‬ﻳﻤﻜﻨﻚ ﺟﻌﻞ ﻓﺼﻮل ﻃﻔﻠﻚﺗﺤ‬ ‫ﺗﺸﻐﻴﻞ ﻫﺬا اﻟﺮﻣﺰ‬
‫‪fill_gas_tank‬ﻓ ﻲ اﻟ ﺴﻴﺎرة و‬
‫ﺘﺎﺟﻪ ﻣﻦ ﻓﺼﻞ اﻟﻮاﻟﺪﻳﻦ‪.‬‬
‫ﺗﺠﺎوز أي ﺷ ﻲء ﻻﺗﺤ‬
‫ﺘﺎﺟﻪ و‬
‫ﺑﻤﺎﺗﺤ‬

‫ﺜﻴﻼ ت ﻛ ﺴﻤﺎ ت‬
‫اﻟﻤ‬
‫ﺘﻔﺎﺻﻴﻞ إﱃ‬
‫ﺒﺮﻣﺠﻴ ﺔ ‪ ،‬ﻗﺪﺗﺠﺪ أﻧﻚﺗﻀﻴﻒ اﻟﻤﺰﻳﺪ واﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻋﻨﺪ ﻧﻤﺬﺟ ﺔ ﺷ ﻲء ﻣﺎ ﻣﻦ اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ ﻓ ﻲ اﻟ‬
‫ﺒﺤ ﺖ ﻃﻮﻳﻠ ﺔ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﻤﻮاﻗﻒ ‪ ،‬ﻗﺪﺗﺪرك أﻧﻪ‬
‫ﺗﻚ أﺻ‬
‫ﺘﺰاﻳﺪة ﻣﻦ اﻟ ﺴﻤﺎ ت واﻟﻄﺮق وأن ﻣﻠﻔﺎ‬
‫ﺘﺠﺪ أن ﻟﺪﻳﻚ ﻗﺎﺋﻤ ﺔ ﻣ‬
‫اﻟﻔﺼﻞ‪.‬ﺳ‬
‫ﺒﻴﺮ إﱃ ﻓﺼﻮل أﺻﻐﺮﺗﻌﻤﻞ ﻣﻌً ﺎ‪.‬‬
‫ﺑ ﺔ ﺟﺰء ﻣﻦ ﻓﺼﻞ دراﺳ ﻲ واﺣﺪ ﻛﻔﺼﻞ ﻣﻨﻔﺼﻞ‪.‬ﻳﻤﻜﻨﻚﺗﻘ ﺴﻴﻢ ﻓﺼﻠﻚ اﻟﻜ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻦ ﻛ‬

‫ﺘﻔﺎﺻﻴﻞ إﱃ ﻓﺌ ﺔ ‪ElectricCar ،‬ﻓﻘﺪ ﻧﻼﺣﻆ أﻧﻨﺎ ﻧﻀﻴﻒ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟ ﺴﻤﺎ ت‬


‫ﺜﺎل ‪ ،‬إذا واﺻﻠﻨﺎ إﺿﺎﻓ ﺔ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺒﻄﺎرﻳ ﺔ اﻟ ﺴﻴﺎرة‪ .‬ﻋﻨﺪﻣﺎ ﻧﺮى ﻫﺬاﻳﺤﺪ ث ‪،‬ﻳﻤﻜﻨﻨﺎ إﻳﻘﺎف وﻧﻘﻞ ﻫﺬه اﻟ ﺴﻤﺎ ت واﻟﻄﺮق إﱃ ﻓﺌ ﺔ ﻣﻨﻔﺼﻠ ﺔ‬
‫واﻟﻄﺮق اﻟﻤﺤﺪدة ﻟ‬
‫ﺜﻴﻞ ‪Battery‬ﻛ ﺴﻤ ﺔ ﻓ ﻲ ﻓﺌ ﺔ ‪ElectricCar :‬‬
‫ﺘﺨﺪام ﻣ‬
‫ﺛﻢﻳﻤﻜﻨﻨﺎ اﺳ‬‫ﺒﻄﺎرﻳ ﺔ‪.‬‬
‫ﺗ ﺴﻤﻰ اﻟ‬

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


‫‪--‬ﻗﺺ‪--‬‬

‫ﺒﻄﺎرﻳ ﺔ ‪():‬‬‫ش اﻟ‬


‫ﺑﺎﺋﻴ ﺔ‪"" ".‬‬
‫ﺑﻄﺎرﻳ ﺔ ﻟ ﺴﻴﺎرة ﻛﻬﺮ‬‫ﺘﺼﻤﻴﻢ‬
‫ﺑ ﺴﻴﻄ ﺔ ﻟ‬ ‫"""ﻣﺤﺎوﻟ ﺔ‬

‫ﺒﻄﺎرﻳ ﺔ ‪= 70):‬‬
‫ﺗ ﻲ ‪ ،‬ﺣﺠﻢ اﻟ‬ ‫__ ‪)v def __init‬ذا‬
‫ﺒﻄﺎرﻳ ﺔ‪"" ".‬‬‫ﺗﻬﻴﺌ ﺔﺳﻤﺎ ت اﻟ‬‫"""‬
‫‪self.battery_size = battery_size‬‬

‫اﻟﻔﺼﻮل ‪175‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﻄﺎرﻳ ﺔ )اﻟﺬا ت(‪:‬‬


‫‪w def‬وﺻﻒ_اﻟ‬
‫ﺑﻴﺎﻧًﺎﻳﺼﻒ ﺣﺠﻢ اﻟ‬
‫ﺒﻄﺎرﻳ ﺔ‪"" ".‬‬ ‫ﺒﻊ‬
‫"""اﻃ‬
‫"‬
‫ﺑﻬﺎ ﻣﻠﻒ‬‫ﻳ ﺔاﻟ ﺴﻴﺎرة‬
‫)"‪-kWh.‬‬ ‫ﺬه‬‫ﺒﺎﻋ ﺔ‪ ")"+‬ﻫ‬
‫ﺑﻄﺎر‬ ‫‪(self.battery_size) +‬ﻃ‪str‬‬

‫ﻓﺌ ﺔ ‪)ElectricCar‬ﺳﻴﺎرة(‪:‬‬
‫ﺑﺎﺋﻴ ﺔ‪"" ".‬‬
‫ﺒﺎ ت اﻟﻜﻬﺮ‬
‫ﺑﺎﻟﻤﺮﻛ‬‫ﺜﻞ ﺟﻮاﻧ ﺐ ﻣﻦ اﻟ ﺴﻴﺎرة ‪ ،‬ﺧﺎﺻ ﺔ‬
‫ﺗﻤ‬‫"""‬

‫ﺗ ﻲ ‪ ،‬اﻟﻄﺮاز ‪ ،‬اﻟ ﺴﻨ ﺔ(‪:‬‬


‫__ ‪)def __init‬ذا‬
‫""‬

‫ﺗﻬﻴﺌ ﺔﺳﻤﺎ ت اﻟﻔﺌ ﺔ اﻷﺻﻞ‪.‬‬


‫ﺑﺎﺋﻴ ﺔ‪.‬‬
‫ﺑﺎﻟ ﺴﻴﺎرة اﻟﻜﻬﺮ‬‫ﺘﻬﻴﺌ ﺔ اﻟ ﺴﻤﺎ ت اﻟﺨﺎﺻ ﺔ‬
‫ﺑ‬‫ﺛﻢ ﻗﻢ‬
‫""‬

‫__ ‪)super () .__ init‬اﻟﻤﺎرﻛ ﺔ ‪ ،‬اﻟﻤﻮدﻳﻞ ‪ ،‬اﻟ ﺴﻨ ﺔ(‬


‫‪x‬‬ ‫ﺒﻄﺎرﻳ ﺔ )(‬
‫= ‪self.battery‬اﻟ‬

‫)‪my_tesla = ElectricCar ('tesla'، 'model s'، 2016‬‬

‫ﺒﺎﻋ ﺔ ))( ‪(my_tesla.get_descriptive_name‬‬


‫ﻃ‬
‫)( ‪my_tesla.battery.describe_battery‬‬

‫ﺒﻄﺎرﻳ ﺔ ﻻﺗﺮ ث ﻣﻦ أي ﻓﺌ ﺔ أﺧﺮى‪ .‬ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻓ ﻲ ‪v‬ﻟﻬﺎ ﻣﻌﻠﻤ ﺔ واﺣﺪة ‪،‬‬


‫ﻧﺤﺪد ﻓ ﻲ ‪u‬ﻓﺌ ﺔ ﺟﺪﻳﺪةﺗ ﺴﻤﻰ اﻟ‬
‫ﺒﻄﺎرﻳ ﺔ ﻋﲆ ‪70‬ﻓ ﻲ ﺣﺎﻟ ﺔ ﻋﺪمﺗﻘﺪﻳﻢ أي ﻗﻴﻤ ﺔ‪.‬ﺗﻢ‬
‫ﺘﻴﺎرﻳ ﺔﺗﺤﺪد ﺣﺠﻢ اﻟ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ‪ self.‬ﻫﺬه ﻣﻌﻠﻤ ﺔ اﺧ‬‫ﺒﻄﺎرﻳ ﺔ ‪،‬‬
‫ﺣﺠﻢ اﻟ‬
‫ﻧﻘﻞ اﻟﻄﺮﻳﻘ ﺔ )( ‪description_battery‬إﱃ ﻫﺬه اﻟﻔﺌ ﺔ أ ً‬
‫ﻳﻀﺎ‪.‬‬

‫ﻓ ﻲ ﻓﺌ ﺔ ‪ElectricCar ،‬ﻧﻀﻴﻒ اﻵنﺳﻤ ﺔﺗ ﺴﻤﻰ ‪self.battery x.‬‬


‫ﺜﺎل ﻓ ﻲ‬
‫ﺗﺨﺰﻳﻦ ﻫﺬا اﻟﻤ‬
‫ﺘﺮاﺿ ﻲ ‪70 ،‬ﻷﻧﻨﺎ ﻻ ﻧﺤﺪد ﻗﻴﻤ ﺔ( و‬
‫ﺑﺤﺠﻢ اﻓ‬‫ﺒﻄﺎرﻳ ﺔ )‬
‫ﺜﻴﻞ ﺟﺪﻳﺪ ﻟﻠ‬
‫ﺑﺈﻧﺸﺎء ﻣ‬
‫ﺒﺮ ﻫﺬا اﻟ ﺴﻄﺮ ‪Python‬‬
‫ﻳﺨ‬
‫ﺘﻮي‬
‫ﺜﻴﻞ ‪ElectricCar‬ﺳﻴﺤ‬
‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ ﺔ ؛ )( __ ‪__init‬أي ﻣ‬
‫ﺘﻢ ﻓﻴﻬﺎ اﺳ‬
‫اﻟ ﺴﻤ ﺔ ‪self.battery.‬ﺳﻴﺤﺪ ث ﻫﺬا ﻓ ﻲ ﻛﻞ ﻣﺮةﻳ‬
‫ﺒﻄﺎرﻳ ﺔ اﻟﺬيﺗﻢ إﻧﺸﺎؤهﺗﻠﻘﺎﺋ ًﻴﺎ‪.‬‬
‫ﺜﻴﻞ اﻟ‬
‫اﻵن ﻋﲆ ﻣ‬

‫ﺑﻄﺎرﻳ ﺔ‬‫ﺘﺎج إﱃ اﻟﻌﻤﻞ ﻣﻦ ﺧﻼل‬


‫ﺒﻄﺎرﻳ ﺔ ‪ ،‬ﻧﺤ‬
‫ﺘﻐﻴﺮ ‪my_tesla.‬ﻋﻨﺪﻣﺎ ﻧﺮﻳﺪ وﺻﻒ اﻟ‬
‫ﺑﺎﺋﻴ ﺔ وﻧﺨﺰﻧﻬﺎ ﻓ ﻲ اﻟﻤ‬
‫ﻧﺼﻨﻊﺳﻴﺎرة ﻛﻬﺮ‬
‫اﻟ ﺴﻴﺎرة‬
‫ﻳﺼﻒ‪:‬‬

‫)( ‪my_tesla.battery.describe_battery‬‬

‫ﺘﻪ‬
‫ﺑﻄﺎرﻳ‬‫ﺜﻮر ﻋﲆ‬
‫ﺜﺎل ‪my_tesla ،‬واﻟﻌ‬
‫ﺒﺮ ﻫﺬا اﻟﺨﻂ ‪Python‬أنﺗﻨﻈﺮ ﻓ ﻲ اﻟﻤ‬
‫ﻳﺨ‬
‫ﺒﻄﺎرﻳ ﺔ اﻟﻤﺨﺰن ﻓ ﻲ اﻟ ﺴﻤ ﺔ‪.‬‬
‫ﺜﻴﻞ اﻟ‬
‫ﺑﻤ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﺪﻋﺎء اﻟﻄﺮﻳﻘ ﺔ )( ‪description_battery‬اﻟﻤﺮ‬
‫‪،‬واﺳ‬

‫ﺑ ًﻘﺎ‪:‬‬
‫ﺑﻖ ﻟﻤﺎ رأﻳﻨﺎهﺳﺎ‬
‫اﻹﺧﺮاج ﻣﻄﺎ‬

‫ﺗ ﺴﻼ ﻣﻮدﻳﻞ اس‬
‫‪2016‬‬
‫ﺑﻄﺎرﻳ ﺔ ‪70‬ﻛﻴﻠﻮ واط ﻓ ﻲ اﻟ ﺴﺎﻋ ﺔ‪.‬‬‫ﺘﻮي ﻫﺬه اﻟ ﺴﻴﺎرة ﻋﲆ‬
‫ﺗﺤ‬

‫ﺘﺎﺳﻊ‬
‫‪176‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻔﺎﺻﻴﻞ‬
‫ﺑﻘﺪر ﻣﺎ ﻧﺮﻳﺪ ﻣﻦ اﻟ‬‫ﺒﻄﺎرﻳ ﺔ‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻌﻤﻞ اﻹﺿﺎﻓ ﻲ ‪ ،‬وﻟﻜﻦﻳﻤﻜﻨﻨﺎ اﻵن وﺻﻒ اﻟ‬
‫ﺘﻄﻠ ﺐ اﻟﻜ‬
‫ﺒﺪو أن ﻫﺬاﻳ‬
‫ﻳ‬
‫ﺒﻄﺎرﻳ ﺔ‪:‬‬
‫ﺑﻨﺎ ًء ﻋﲆ ﺣﺠﻢ اﻟ‬‫ﺒﻄﺎرﻳ ﺔﺗﺤﺪد ﻧﻄﺎق اﻟ ﺴﻴﺎرة‬
‫دونﺗﺸﻮﻳ ﺶ ﻓﺌ ﺔ ‪ElectricCar .‬دﻋﻨﺎ ﻧﻀﻴﻒ ﻃﺮﻳﻘ ﺔ أﺧﺮى ﻟﻠ‬

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


‫‪--‬ﻗﺺ‪--‬‬

‫ﺒﻄﺎرﻳ ﺔ ‪():‬‬
‫ﻓﺌ ﺔ اﻟ‬
‫‪--‬ﻗﺺ‪--‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)u def get_range‬ذا‬
‫ﺑﻴﺎﻧًﺎ ﺣﻮل اﻟﻨﻄﺎق اﻟﺬيﺗﻮﻓﺮه ﻫﺬه اﻟ‬
‫ﺒﻄﺎرﻳ ﺔ‪"" ".‬‬ ‫ﺒﻊ‬
‫"""اﻃ‬
‫إذا ﻛﺎﻧ ﺖ ‪self.battery_size == 70:‬‬
‫اﻟﻨﻄﺎق ‪= 240‬‬
‫‪elif self.battery_size == 85:‬‬
‫اﻟﻨﻄﺎق ‪= 270‬‬

‫"‬
‫ﺑﻌﺪ ﺷﺤﻨﻬﺎ‬ ‫= ‪"message‬ﻳﻤﻜﻦ ﻟﻬﺬه اﻟ ﺴﻴﺎرة أنﺗﻘﻄﻊ أﻣﻴﺎﻻ ًﺗﻘﺮﻳ ً‬
‫ﺒﺎ‬
‫"‬
‫‪+‬ﺷﺎرع )اﻟﻨﻄﺎق(‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫‪message‬ﻃ‬ ‫=‪+‬‬
‫ﺑﺎﻟﻜﺎﻣﻞ‪".‬‬

‫ﻓﺌ ﺔ ‪)ElectricCar‬ﺳﻴﺎرة(‪:‬‬
‫‪--‬ﻗﺺ‪--‬‬

‫)‪my_tesla = ElectricCar ('tesla'، 'model s'، 2016‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_tesla.get_descriptive_name‬‬
‫ﻃ‬
‫)( ‪my_tesla.battery.describe_battery‬‬
‫)( ‪v my_tesla.battery.get_range‬‬

‫ﺒﻄﺎرﻳ ﺔ ‪70‬ﻛﻴﻠﻮ واط ﻓ ﻲ‬


‫ﺒ ﺴﻴﻄ ﺔ‪ .‬إذا ﻛﺎﻧ ﺖﺳﻌ ﺔ اﻟ‬
‫ﺘﺤﻠﻴﻼ ت اﻟ‬
‫ﺒﻌﺾ اﻟ‬
‫ﺑ‬‫ﺗﻘﻮم‬
‫اﻟﻄﺮﻳﻘ ﺔ اﻟﺠﺪﻳﺪة ‪get_range () at u‬‬
‫ﺒﻂ اﻟﻨﻄﺎق ﻋﲆ ‪240‬ﻣﻴ ﻼ ً ‪ ،‬وإذا ﻛﺎﻧ ﺖ اﻟ ﺴﻌ ﺔ ‪85‬ﻛﻴﻠﻮ واط ﻓ ﻲ اﻟ ﺴﺎﻋ ﺔ ‪ ،‬ﻓﺈﻧﻪﻳﻀ‬
‫ﺒﻂ‬ ‫اﻟ ﺴﺎﻋ ﺔ ‪ ،‬ﻓﺈن )( ‪get_range‬ﻳﻀ‬
‫ﺘﻬﺎ ﻣﻦ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ ﻣﺮة أﺧﺮىﺗ ﺴﻤﻴ‬
‫ﺘﺨﺪام ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ‪،‬ﻳ‬
‫ﺒﻠﻎ ﻋﻦ ﻫﺬه اﻟﻘﻴﻤ ﺔ‪ .‬ﻋﻨﺪﻣﺎ ﻧﺮﻳﺪ اﺳ‬
‫ﺛﻢﻳ‬‫اﻟﻨﻄﺎق ﻋﲆ ‪270‬ﻣﻴ ﻼً‪.‬‬
‫ﺑﻄﺎرﻳ ﺔ اﻟ ﺴﻴﺎرة ﻓ ﻲ ‪v.‬‬‫ﺧﻼلﺳﻤ ﺔ‬

‫ﺘﻬﺎ‪:‬‬
‫ﺑﻄﺎرﻳ‬‫ﺑﻨﺎ ًء ﻋﲆ ﺣﺠﻢ‬‫ﺒﺮﻧﺎ اﻹﺧﺮاج ﻣﺪى اﻟ ﺴﻴﺎرة‬
‫ﻳﺨ‬

‫ﺑﻄﺎرﻳ ﺔ ‪70‬ﻛﻴﻠﻮ واط ﻓ ﻲ اﻟ ﺴﺎﻋ ﺔ‪.‬‬‫ﺗ ﺴﻼ ﻣﻮدﻳﻞ ‪ S‬ﻫﺬه اﻟ ﺴﻴﺎرة ﻟﺪﻳﻬﺎ‬


‫‪2016‬‬

‫ﻳﻤﻜﻦ ﻟﻬﺬه اﻟ ﺴﻴﺎرة أنﺗﻘﻄﻊ ﻣﺎﻳﻘﺮ ب ﻣﻦ ‪240‬ﻣﻴ ﻼ ً‬


‫ﺑﺸﺤﻨ ﺔ ﻛﺎﻣﻠ ﺔ‪.‬‬

‫ﻧﻤﺬﺟ ﺔ ﻛﺎﺋﻨﺎ ت اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ‬


‫ﺘﻤﺎم‪ .‬ﻫﻞ ﻣﺪى اﻟ ﺴﻴﺎرة‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺘﺼﺎرع أﺳﺌﻠ ﺔ ﻣ‬
‫ﺑﺎﺋﻴ ﺔ ‪،‬ﺳ‬
‫ﺜﻞ اﻟ ﺴﻴﺎرا ت اﻟﻜﻬﺮ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا ﻣ‬
‫ﺒﺪأ ﻓ ﻲﺗﺼﻤﻴﻢ ﻋﻨﺎﺻﺮ أﻛ‬
‫ﻋﻨﺪﻣﺎﺗ‬
‫ﺒﺎط ﻃﺮﻳﻘ ﺔ )(‬
‫ﺗ‬‫ﺒﻄﺎرﻳ ﺔ أم ﻟﻠ ﺴﻴﺎرة؟ إذا ﻛﻨﺎ ﻧﺼﻒﺳﻴﺎرة واﺣﺪة ﻓﻘﻂ ‪ ،‬ﻓﻤﻦ اﻷﻓﻀﻞ اﻟﺤﻔﺎظ ﻋﲆ ار‬
‫ﺑﺎﺋﻴ ﺔ ﻫﻮ ﻣﻠﻚ ﻟﻠ‬
‫اﻟﻜﻬﺮ‬
‫ﺒﻄﺎرﻳ ﺔ‬
‫ﺑﺎﻟ‬
‫‪get_range‬‬

‫ﺑﺎﻟﻜﺎﻣﻞ ‪ ،‬ﻓﻨﺤﻦ ﻧﺮﻏ ﺐ ﻓ ﻲ ﻧﻘﻞ )( ‪get_range‬إﱃ ﻓﺌ ﺔ‬‫ﻓﺼﻞ‪ .‬وﻟﻜﻦ إذا ﻛﻨﺎ ﻧﺼﻒ ﺧﻂﺳﻴﺎرا ت اﻟﺸﺮﻛ ﺔ اﻟﻤﺼﻨﻌ ﺔ‬
‫‪ElectricCar .‬ﻃﺮﻳﻘ ﺔ )( ‪get_range‬‬

‫اﻟﻔﺼﻮل ‪177‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺪﻻ ً ﻣﻦ‬‫ﺑﻪ‪.‬‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺒﻠﻎ ﻋﻦ ﻧﻄﺎق ﻣﺤﺪد ﻟﻨﻮع اﻟ ﺴﻴﺎرة اﻟﻤﺮ‬
‫ﺒﻞﺗﺤﺪﻳﺪ اﻟﻨﻄﺎق ‪ ،‬وﻟﻜﻨﻪﺳﻴ‬
‫ﺒﻄﺎرﻳ ﺔ ﻗ‬
‫ﺘﺤﻘﻖ ﻣﻦ ﺣﺠﻢ اﻟ‬
‫ﺳﻴﻈﻞﻳ‬
‫ﺘﻘﻮم‬ ‫ﺒﺎط ﻃﺮﻳﻘ ﺔ )( ‪get_range‬ﻣﻊ ‪bat tery‬وﻟﻜﻨﻨﺎ ﻧﻤﺮر ﻫﺎ ﻣﻌﺎﻣ ﻼ ً ﻣ‬
‫ﺜﻞ ‪car_model.‬ﺳ‬ ‫ﺗ‬‫ذﻟﻚ ‪،‬ﻳﻤﻜﻨﻨﺎ اﻟﺤﻔﺎظ ﻋﲆ ار‬
‫ﺒﻄﺎرﻳ ﺔ وﻃﺮاز اﻟ ﺴﻴﺎرة ‪.‬‬
‫ﺑﻨﺎ ًء ﻋﲆ ﺣﺠﻢ اﻟ‬‫ﺑﻼغ ﻋﻦ ﻧﻄﺎق‬
‫ﺑﺎﻹ‬
‫ﻃﺮﻳﻘ ﺔ )( ‪get_range‬‬

‫ﺜﻞ ﻫﺬه ‪ ،‬ﻓﺄﻧ ﺖﺗﻔﻜﺮ‬


‫ﺘﺼﺎرع ﻣﻊ أﺳﺌﻠ ﺔ ﻣ‬
‫ﺘﻜﺎﻣﻞ‪ .‬ﻋﻨﺪﻣﺎﺗ‬
‫ﺒﺮﻧﺎﻣﺞ ﻣ‬
‫ﺘﻤﺎم ﻓ ﻲ ﻧﻤﻮك ﻛ‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﻳﻘﻮدك ﻫﺬا إﱃ ﻧﻘﻄ ﺔ ﻣ‬
‫ﺜﻴﻞ اﻟﻌﺎﻟﻢ‬
‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ‪ .‬أﻧ ﺖ ﻻﺗﻔﻜﺮ ﻓ ﻲ ‪Python ،‬وﻟﻜﻦ ﻓ ﻲ ﻛﻴﻔﻴ ﺔﺗﻤ‬ ‫ﺑﺪﻻ ً ﻣﻦ ﻣ ﺴ‬
‫ﺘﻮىﻳﺮﻛﺰ ﻋﲆ‬ ‫ﺘﻮى ﻣﻨﻄﻘ ﻲ أﻋﲆ‬
‫ﻓ ﻲ ﻣﺴ‬
‫ﺒﺎ ﻃﺮق ﺻﺤﻴﺤ ﺔ أو ﺧﺎﻃﺌ ﺔ ﻟﻨﻤﺬﺟ ﺔ‬
‫ﺘﺪرك أﻧﻪ ﻻﺗﻮﺟﺪ ﻏﺎﻟ ً‬
‫ﺒﺮﻣﺠﻴ ﺔ‪ .‬ﻋﻨﺪﻣﺎﺗﺼﻞ إﱃ ﻫﺬه اﻟﻨﻘﻄ ﺔ ‪،‬ﺳ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟﺤﻘﻴﻘ ﻲ ﻓ ﻲ اﻟ‬
‫ﺜﺮ‬
‫ﺜﻴﻼ ت اﻷﻛ‬
‫ﺘﻤ‬‫ﺜﻮر ﻋﲆ اﻟ‬
‫ﺘﻄﻠ ﺐ ﻣﻤﺎرﺳ ﺔ ﻟﻠﻌ‬
‫ﺜﺮ ﻛﻔﺎءة ﻣﻦ ﻏﻴﺮ ﻫﺎ ‪ ،‬وﻟﻜﻦ اﻷﻣﺮﻳ‬
‫ﺑﻌﺾ اﻷﺳﺎﻟﻴ ﺐ أﻛ‬‫ﻣﻮاﻗﻒ اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ‪.‬‬
‫ﺑﻌﻤﻞ ﺟﻴﺪ! ﻻﺗﻘﻠﻖ إذا وﺟﺪ ت أﻧﻚ‬‫ﺑﺎﻟﺸﻜﻞ اﻟﺬيﺗﺮﻳﺪه ‪ ،‬ﻓﺄﻧ ﺖﺗﻘﻮم‬‫ﺑﻚﺗﻌﻤﻞ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻛﻔﺎءة‪ .‬إذا ﻛﺎﻧ ﺖ اﻟ‬
‫ﺑﻬﺬه‬‫ﺑ ﺔ رﻣﺰ دﻗﻴﻖ وﻓﻌﺎل ‪،‬ﻳﻤﺮ اﻟﺠﻤﻴﻊ‬
‫ﺘﺎ‬
‫ﺘﻠﻔ ﺔ‪ .‬ﻓ ﻲ اﻟ ﺴﻌ ﻲ ﻟﻜ‬
‫ﺘﺨﺪام أﺳﺎﻟﻴ ﺐ ﻣﺨ‬
‫ﺑﺎﺳ‬‫ﺘﻬﺎ ﻋﺪة ﻣﺮا ت‬
‫ﺑ‬‫ﺘﺎ‬
‫ﺗﻌﻴﺪ ﻛ‬
‫ﺗﻤﺰق ﺻﻔﻮﻓﻚ و‬
‫اﻟﻌﻤﻠﻴ ﺔ‪.‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ً‬
‫ﻓﺼﻼﻳ ﺴﻤﻰ ‪IceCreamStand‬‬ ‫ﺘﺐ‬
‫‪9-6.‬ﺣﺎﻣﻞ اﻵﻳ ﺲ ﻛﺮﻳﻢ‪ :‬ﺣﺎﻣﻞ اﻵﻳ ﺲ ﻛﺮﻳﻢ ﻫﻮ ﻧﻮع ﻣﻌﻴﻦ ﻣﻦ اﻟﻤﻄﺎﻋﻢ‪ .‬اﻛ‬
‫ﺘﻤﺮﻳﻦ ‪)9-4‬اﻟﺼﻔﺤ ﺔ ‪171).‬ﺳﻴﻌﻤﻞ‬
‫ﺘﻤﺮﻳﻦ ‪)9-1‬اﻟﺼﻔﺤ ﺔ )‪166‬أو اﻟ‬
‫ﺘﻪ ﻓ ﻲ اﻟ‬
‫ﺒ‬‫ﺘ‬‫ﻳﺮ ث ﻣﻦ ﻓﺼﻞ اﻟﻤﻄﻌﻢ اﻟﺬي ﻛ‬
‫ﺑﺸﻜﻞ أﻓﻀﻞ‪ .‬أﺿﻒ ﺧﺎﺻﻴ ﺔﺗ ﺴﻤﻰ اﻟﻨﻜﻬﺎ ت‬‫ﺒﻚ‬
‫ﺘﺮ اﻟﺸﺨﺺ اﻟﺬيﻳﻌﺠ‬
‫أي إﺻﺪار ﻣﻦ اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ ؛ ﻓﻘﻂ اﺧ‬
‫ﺜﻴﻞ ﻟـ‬
‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﺘ ﺐ ﻃﺮﻳﻘ ﺔﺗﻌﺮض ﻫﺬه اﻟﻨﻜﻬﺎ ت‪ .‬ﻗﻢ‬
‫ﺘ ﻲﺗﺨﺰن ﻗﺎﺋﻤ ﺔ ﻣﻦ ﻧﻜﻬﺎ ت اﻵﻳ ﺲ ﻛﺮﻳﻢ‪ .‬اﻛ‬
‫اﻟ‬
‫ﺘﺪع ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ‪.‬‬
‫‪IceCreamStand ،‬واﺳ‬

‫ﺘﺨﺪم‬ ‫ً‬
‫ﻓﺼﻼﻳ ﺴﻤﻰ ‪Admin‬ﻳﺮ ث ﻣﻦ ﻓﺌ ﺔ اﻟﻤ ﺴ‬ ‫ﺘﺐ‬
‫ﺘﺨﺪﻣﻴﻦ‪ .‬اﻛ‬
‫‪9-7.‬اﻟﻤ ﺴﺆول‪ :‬اﻟﻤ ﺴﺆول ﻫﻮ ﻧﻮع ﺧﺎص ﻣﻦ اﻟﻤ ﺴ‬
‫ﺘﻴﺎزا ت ‪،‬ﺗﺨﺰن ﻗﺎﺋﻤ ﺔ‬
‫ﺘﻤﺮﻳﻦ ‪)9-5‬ﺻﻔﺤ ﺔ ‪171).‬أﺿﻒﺳﻤ ﺔ ‪ ،‬اﻣ‬
‫ﺘﻤﺮﻳﻦ ‪)9-3‬ﺻﻔﺤ ﺔ )‪166‬أو اﻟ‬
‫ﺘﻬﺎ ﻓ ﻲ اﻟ‬
‫ﺒ‬‫ﺘ‬‫ﺘ ﻲﻛ‬
‫اﻟ‬
‫ﺘﺨﺪم" ‪ ،‬وﻣﺎ إﱃ ذﻟﻚ‪.‬‬
‫ﺜﻞ "ﻳﻤﻜﻦ إﺿﺎﻓ ﺔ ﻣﻨﺸﻮر" ‪" ،‬ﻳﻤﻜﻦ ﺣﺬف اﻟﻤﻨﺸﻮر" ‪" ،‬ﻳﻤﻜﻦ ﺣﻈﺮ اﻟﻤ ﺴ‬
‫ﻣﻦ اﻟ ﺴﻼﺳﻞ ﻣ‬

‫ﺜﻴﻞ ‪Admin ،‬‬


‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﺘﻴﺎزا ت اﻟﻤ ﺴﺆول‪ .‬ﻗﻢ‬
‫ﺗ ﺴﺮد ﻣﺠﻤﻮﻋ ﺔ اﻣ‬
‫ﺘ ﺐ ﻋﻤﻠﻴ ﺔﺗ ﺴﻤﻰ )( ‪show_privileges‬‬
‫اﻛ‬
‫ﺘﻚ‪.‬‬
‫ﺘﺪﻋﺎء ﻃﺮﻳﻘ‬
‫واﺳ‬

‫ﺘﻴﺎزا ت ‪،‬ﺗﻘﻮم‬
‫ﺑﺨﺎﺻﻴ ﺔ واﺣﺪة ‪ ،‬اﻣ‬‫ﺘﻊ اﻟﻔﺼﻞ‬
‫ﺘﻤ‬‫ﺘﻴﺎزا ت ﻣﻨﻔﺼﻠ ﺔ ‪.‬ﻳﺠ ﺐ أنﻳ‬
‫ﺘ ﺐ ﻓﺌ ﺔ اﻣ‬
‫ﺘﻴﺎزا ت‪ :‬اﻛ‬
‫‪9-8.‬اﻻﻣ‬
‫ﺘﻤﺮﻳﻦ ‪9-7.‬‬
‫ﺘﺨﺰﻳﻦ ﻗﺎﺋﻤ ﺔ ﻣﻦ اﻟ ﺴﻼﺳﻞ ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟ‬
‫ﺑ‬
‫ﺘﻴﺎزا ت ﻛ ﺴﻤ ﺔ ﻓ ﻲ ﻓﺌ ﺔ اﻟﻤ ﺴﺆول ‪.‬‬
‫ﺑﻌﻤﻞ ﻧ ﺴﺨ ﺔ ﻣﻦ اﻻﻣ‬‫اﻧﻘﻞ ﻃﺮﻳﻘ ﺔ )( ‪show_privileges‬إﱃ ﻫﺬه اﻟﻔﺌ ﺔ‪ .‬ﻗﻢ‬
‫ﺗﻪ‪.‬‬
‫ﺘﻴﺎزا‬
‫ﺘﻚ ﻹﻇﻬﺎر اﻣ‬
‫ﺘﺨﺪم ﻃﺮﻳﻘ‬
‫ﺜﻴﻞ ﺟﺪﻳﺪ ﻟﻠﻤ ﺴﺆول واﺳ‬
‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﻗﻢ‬

‫ﺘﺨﺪم اﻹﺻﺪار اﻷﺧﻴﺮ ﻣﻦ ‪electric_car.py‬ﻣﻦ ﻫﺬا اﻟﻘ ﺴﻢ‪.‬‬


‫ﺒﻄﺎرﻳ ﺔ‪ :‬اﺳ‬
‫ﺗﺮﻗﻴ ﺔ اﻟ‬
‫‪9-9.‬‬
‫ﺒﻄﺎرﻳ ﺔ‬
‫ﺘﺤﻘﻖ ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ ﻣﻦ ﺣﺠﻢ اﻟ‬
‫ﺒﻄﺎرﻳ ﺔﺗ ﺴﻤﻰ ‪Upgrade_battery ().‬ﻳﺠ ﺐ أنﺗ‬
‫أﺿﻒ ﻃﺮﻳﻘ ﺔ إﱃ ﻓﺌ ﺔ اﻟ‬
‫ﺑﺎﻟﻔﻌﻞ‪.‬‬‫ﺗﻌﻴﻴﻦ اﻟ ﺴﻌ ﺔ ﻋﲆ ‪85‬إذا ﻟﻢﺗﻜﻦ‬
‫و‬
‫ﺑـ )( ‪get_range‬‬‫ﺗﺼﻞ‬
‫ﺛﻢ ا‬‫ﺑـ )( ‪get_range‬ﻣﺮة واﺣﺪة ‪،‬‬‫ﺗﺼﻞ‬
‫ﺘﺮاﺿ ﻲ ‪ ،‬ا‬
‫ﺑﻄﺎرﻳ ﺔ اﻓ‬‫ﺑﺤﺠﻢ‬‫ﺑﺎﺋﻴ ﺔ‬
‫اﺻﻨﻊﺳﻴﺎرة ﻛﻬﺮ‬
‫ﺒﻄﺎرﻳ ﺔ‪.‬ﻳﺠ ﺐ أنﺗﺮى زﻳﺎدة ﻓ ﻲ ﻧﻄﺎق اﻟ ﺴﻴﺎرة‪.‬‬
‫ﺑﻌﺪﺗﺮﻗﻴ ﺔ اﻟ‬‫ﺛﺎﻧﻴ ﺔ‬‫ﻣﺮة‬

‫‪178‬اﻟﻔﺼﻞ ‪9‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻴﺮاد اﻷﺻﻨﺎف‬
‫اﺳ‬
‫ﺑﺸﻜﻞ‬‫ﺛﺔ‬
‫ﺘﺨﺪم اﻟﻮرا‬
‫ﺘﻰ ﻋﻨﺪﻣﺎﺗ ﺴ‬
‫ﺗﻚ ‪ ،‬ﺣ‬
‫ﻛﻠﻤﺎ أﺿﻔ ﺖ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻮﻇﺎﺋﻒ إﱃ ﻓﺼﻮﻟﻚ اﻟﺪراﺳﻴ ﺔ ‪،‬ﻳﻤﻜﻦ أنﺗﻄﻮل ﻣﻠﻔﺎ‬
‫ﺘﻴﺢ ﻟﻚ‬
‫ﺑﻘﺪر اﻹﻣﻜﺎن‪ .‬ﻟﻠﻤ ﺴﺎﻋﺪة ‪،‬ﺗ‬‫ﺒﺔ‬
‫ﺗ‬‫ﺗﻚ ﻣﺮ‬
‫ﺑﻤﻠﻔﺎ‬‫ﺘﻔﺎظ‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲ اﻻﺣ‬
‫ﺻﺤﻴﺢ‪.‬ﺗﻤﺸﻴﺎ ﻣﻊ ﻓﻠ ﺴﻔ ﺔ ‪Python‬اﻟﺸﺎﻣﻠ ﺔ ‪،‬ﺳ‬
‫ﺋﻴ ﺴ ﻲ‪.‬‬
‫ﺑﺮﻧﺎﻣﺠﻚ اﻟﺮ‬‫ﺘﺎﺟﻬﺎ إﱃ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﻴﺮاد اﻟﻔﺌﺎ ت اﻟ‬
‫ﺛﻢ اﺳ‬‫ﺗﺨﺰﻳﻦ اﻟﻔﺌﺎ ت ﻓ ﻲ وﺣﺪا ت‬
‫‪Python‬‬

‫ﺘﻴﺮاد ﺻﻨﻒ واﺣﺪ‬


‫اﺳ‬
‫ﺑﺎﺳﻢ ‪car.py‬ﻓ ﻲ ﻫﺬا‬‫ﺑﺎﻟﻔﻌﻞ ﻣﻠﻒ‬‫ﺜﻴﺮ ﻫﺬا ﻣﺸﻜﻠ ﺔﺗ ﺴﻤﻴ ﺔ دﻗﻴﻘ ﺔ‪ :‬ﻟﺪﻳﻨﺎ‬
‫ﺘﻮي ﻋﲆ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة ﻓﻘﻂ ‪.‬ﻳ‬
‫ﺑﺈﻧﺸﺎء وﺣﺪةﺗﺤ‬‫ﻟﻨﻘﻢ‬
‫ﺜﻞﺳﻴﺎرة‪.‬‬
‫ﺘﻮي ﻋﲆ رﻣﺰﻳﻤ‬
‫ﺑﺎﺳﻢ ‪car.py‬ﻷﻧﻬﺎﺗﺤ‬‫اﻟﻔﺼﻞ ‪ ،‬وﻟﻜﻦﻳﺠ ﺐﺗ ﺴﻤﻴ ﺔ ﻫﺬه اﻟﻮﺣﺪة‬

‫ﺒﺪال ﻣﻠﻒ ‪car.py‬اﻟﺬي ﻛﻨﺎ‬


‫ﺘ‬‫ﺘ ﺴﻤﻴ ﺔ ﻫﺬه ﻋﻦ ﻃﺮﻳﻖﺗﺨﺰﻳﻦ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة ﻓ ﻲ وﺣﺪةﺗ ﺴﻤﻰ ‪car.py ،‬ﻣﻊ اﺳ‬
‫ﺳﻨﺤﻞ ﻣﺸﻜﻠ ﺔ اﻟ‬
‫ﺜﻞ ‪my_car.py.‬‬
‫ﺜﺮﺗﺤﺪﻳﺪًا ‪ ،‬ﻣ‬
‫ﺘﺨﺪم ﻫﺬه اﻟﻮﺣﺪة إﱃ اﺳﻢ ﻣﻠﻒ أﻛ‬
‫ﺑﺮﻧﺎﻣﺞﻳ ﺴ‬ ‫ﺑ ًﻘﺎ‪ .‬ﻣﻦ اﻵن ﻓﺼﺎﻋﺪًا ‪،‬ﺳﻴﺤ‬
‫ﺘﺎج أي‬ ‫ﺘﺨﺪﻣﻪﺳﺎ‬
‫ﻧﺴ‬
‫ﻫﻨﺎ ‪car.py‬ﻓﻘﻂ ﻣﻊ اﻟﻜﻮد ﻣﻦ ‪Class Car:‬‬

‫ﺜﻴﻞﺳﻴﺎرة‪"" ".‬‬
‫ﺘﻤ‬‫ﺘﺨﺪاﻣﻬﺎ ﻟ‬
‫"" ‪"car.py u‬ﻓﺌ ﺔﻳﻤﻜﻦ اﺳ‬

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


‫ﺜﻴﻞﺳﻴﺎرة‪"" ".‬‬
‫ﺘﻤ‬‫ﺑ ﺴﻴﻄ ﺔ ﻟ‬‫"""ﻣﺤﺎوﻟ ﺔ‬

‫ﺗ ﻲ ‪ ،‬اﻟﻄﺮاز ‪ ،‬اﻟ ﺴﻨ ﺔ(‪:‬‬


‫__ ‪)def __init‬ذا‬
‫ﺗﻬﻴﺌ ﺔ اﻟ ﺴﻤﺎ ت ﻟﻮﺻﻒ اﻟ ﺴﻴﺎرة‪"" ".‬‬ ‫"""‬
‫= ‪self.make‬ﺟﻌﻞ‬
‫ﻧﻤﻮذج = ‪self.model‬ﻧﻤﻮذج‬

‫= ‪self.year‬ﺳﻨ ﺔ‬
‫‪self.odometer_reading = 0‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)def get_descriptive_name‬ذا‬
‫ﺑﺪﻗ ﺔ‪"" ".‬‬‫"""إرﺟﺎع اﺳﻢ وﺻﻔ ﻲ ﻣﻨ ﺴﻖ‬
‫"‬ ‫"‬ ‫"‬ ‫"‬
‫‪long_name = str (self.year) + + self.make +‬إرﺟﺎع )( ‪long_name.title‬‬ ‫ﺗﻲ‬
‫‪+‬اﻟﻨﻤﻮذج اﻟﺬا‬

‫ﺗ ﻲ(‪:‬‬
‫‪)def read_odometer‬ذا‬
‫ﺑﺎﻟ ﺴﻴﺎرة‪"" ".‬‬‫ﺑﻴﺎنﻳﻮﺿﺢ اﻟﻤ ﺴﺎﻓ ﺔ اﻟﻤﻘﻄﻮﻋ ﺔ‬ ‫ﺒﺎﻋ ﺔ‬‫"""ﻃ‬
‫"‬ ‫"‬
‫ﺗ ﻲ_ﻗﺮاءة( ‪+‬‬‫ﺑﻬﺎ ‪)+ str‬ﻣﻘﻴﺎس ذا‬ ‫ﺒﺎﻋ ﺔ )" ﻫﺬه اﻟ ﺴﻴﺎرة‬
‫ﻃ‬ ‫أﻣﻴﺎل ﻋﻠﻴﻬﺎ‪") .‬‬

‫ﺘﺮا ت(‪:‬‬
‫ﺗ ﻲ ‪ ،‬ﻋﺪد اﻟﻜﻴﻠﻮﻣ‬
‫‪)def update_odometer‬ذا‬
‫""‬

‫ﺒﻂ ﻗﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت ﻋﲆ اﻟﻘﻴﻤ ﺔ اﻟﻤﺤﺪدة‪.‬‬


‫اﺿ‬
‫ﺘﺮاﺟﻊ ﻋﻦ ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت‪.‬‬
‫ﺘﻐﻴﻴﺮ إذا ﺣﺎول اﻟ‬
‫ارﻓﺾ اﻟ‬
‫""‬

‫إذا اﻷﻣﻴﺎل< ‪= self.odometer_reading:‬‬


‫= ‪self.odometer_reading‬اﻷﻣﻴﺎل‬
‫آﺧﺮ‪:‬‬

‫ﺘﺮاﺟﻊ ﻋﻦ ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت!"(‬


‫ﺒﺎﻋ ﺔ )"ﻻﻳﻤﻜﻨﻚ اﻟ‬
‫ﻃ‬

‫ﺗ ﻲ ‪ ،‬أﻣﻴﺎل(‪:‬‬
‫‪)def increment_odometer‬ذا‬
‫ﺒﻠﻎ اﻟﻤﺤﺪد ﻟﻘﺮاءة ﻋﺪاد اﻟﻤ ﺴﺎﻓﺎ ت‪"" ".‬‬
‫"""أﺿﻒ اﻟﻤ‬
‫= ‪self.odometer_reading +‬اﻷﻣﻴﺎل‬

‫ﺒﻘﺎ ت‬
‫اﻟﻄ‬ ‫‪179‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮﻳﺎ ت ﻫﺬه اﻟﻮﺣﺪة‪.‬ﻳﺠ ﺐ‬


‫ﺑﺈﻳﺠﺎز ﻣﺤ‬‫ﺘ ﻲﺗﺼﻒ‬
‫ﺘﻮى اﻟﻮﺣﺪة اﻟ‬
‫ﺘﻀﻤﻴﻦﺳﻠ ﺴﻠ ﺔ ‪docstring‬ﻋﲆ ﻣ ﺴ‬
‫ﺑ‬‫ﻓ ﻲ ‪u ،‬ﻧﻘﻮم‬
‫ﺑﻬﺎ‬‫ﺛﺎﺋﻘﻴ ﺔ ﻟﻜﻞ وﺣﺪةﺗﻘﻮم‬
‫ﺑ ﺔﺳﻠ ﺴﻠ ﺔ و‬
‫ﺘﺎ‬
‫ﻋﻠﻴﻚ ﻛ‬
‫ﻳﺨﻠﻖ‪.‬‬

‫ﺜﻴﻞ‬
‫ﺛﻢ إﻧﺸﺎء ﻣ‬‫ﺘﻴﺮاد ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‬
‫ﺑﺎﺳ‬‫ﺑﺈﻧﺸﺎء ﻣﻠﻒ ﻣﻨﻔﺼﻞﻳ ﺴﻤﻰ ‪my_car.py.‬ﺳﻴﻘﻮم ﻫﺬا اﻟﻤﻠﻒ‬ ‫اﻵن ﻧﻘﻮم‬
‫ﻣﻦﺗﻠﻚ اﻟﻔﺌ ﺔ‪:‬‬

‫ﺘﻴﺮاد اﻟ ﺴﻴﺎرا ت‬
‫‪my_car.py u‬ﻣﻦﺳﻴﺎرة اﺳ‬

‫= ‪my_new_car‬ﺳﻴﺎرة )'أودي'‪'a4'، 2016) ،‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_new_car.get_descriptive_name‬‬
‫ﻃ‬

‫‪my_new_car.odometer_reading = 23‬‬
‫)( ‪my_new_car.read_odometer‬‬

‫ﺘﺨﺪام ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة‬
‫ﺘﻴﺮاد اﻟﻔﺌ ﺔ ‪Car.‬اﻵنﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺘﺢ وﺣﺪة اﻟ ﺴﻴﺎرة واﺳ‬
‫ﺑﻔ‬‫ﺒﺮ ‪Python‬‬
‫ﺘﻴﺮاد ﻓ ﻲ ‪u‬ﻳﺨ‬
‫ﺑﻴﺎن اﻻﺳ‬
‫ﺑ ًﻘﺎ‪:‬‬
‫ﻛﻤﺎ ﻟﻮﺗﻢﺗﻌﺮﻳﻔﻬﺎ ﻓ ﻲ ﻫﺬا اﻟﻤﻠﻒ‪ .‬اﻹﺧﺮاج ﻫﻮ ﻧﻔ ﺴﻪ ﻛﻤﺎ رأﻳﻨﺎﺳﺎ‬

‫أودي ‪ A4 2016‬ﻫﺬه اﻟ ﺴﻴﺎرة ﻟﺪﻳﻬﺎ ‪23‬ﻣﻴﻼ ﻋﻠﻴﻬﺎ‪.‬‬

‫ﺒﺮﻧﺎﻣﺞ ﻫﺬا إذاﺗﻢﺗﻀﻤﻴﻦ ﻓﺌ ﺔ‬


‫ﺘﻐﺮﻗﻬﺎ ﻣﻠﻒ اﻟ‬
‫ﺘ ﻲﺳﻴ ﺴ‬
‫ﺒﺮﻣﺠ ﺔ‪.‬ﺗﺨﻴﻞ اﻟﻤﺪة اﻟ‬
‫ﺘﻴﺮاد اﻟﻔﺼﻮل ﻃﺮﻳﻘ ﺔ ﻓﻌﺎﻟ ﺔ ﻟﻠ‬
‫ﻳﻌﺪ اﺳ‬
‫ﺑﺈﻣﻜﺎﻧﻚ اﻟﺤﺼﻮل‬‫ﺘﻴﺮاد اﻟﻮﺣﺪة ‪ ،‬ﻓﻼﻳﺰال‬
‫ﺑﻨﻘﻞ اﻟﻔﺼﻞ إﱃ وﺣﺪة ﻧﻤﻄﻴ ﺔ واﺳ‬‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ‬‫ﺑﺎﻟﻜﺎﻣﻞ‪ .‬ﻋﻨﺪﻣﺎﺗﻘﻮم‬‫اﻟ ﺴﻴﺎرة‬
‫ﺋﻴ ﺴ ﻲ ﻧﻈﻴ ًﻔﺎ وﺳﻬﻞ اﻟﻘﺮاءة‪.‬ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎﺗﺨﺰﻳﻦ ﻣﻌﻈﻢ‬ ‫ﺒﺮﻧﺎﻣﺞ اﻟﺮ‬
‫ﻋﲆ ﺟﻤﻴﻊ اﻟﻮﻇﺎﺋﻒ ﻧﻔ ﺴﻬﺎ ‪ ،‬ﻟﻜﻨﻚﺗﺤﺎﻓﻆ ﻋﲆ ﻣﻠﻒ اﻟ‬
‫ﺑﻤﻔﺮد ﻫﺎ‬‫ﺑﺎﻟﺸﻜﻞ اﻟﺬيﺗﺮﻳﺪه ‪،‬ﻳﻤﻜﻨﻚﺗﺮك ﻫﺬه اﻟﻤﻠﻔﺎ ت‬‫ﺑﻤﺠﺮد أنﺗﻌﻤﻞ ﻓﺼﻮﻟﻚ اﻟﺪراﺳﻴ ﺔ‬‫اﻟﻤﻨﻄﻖ ﻓ ﻲ ﻣﻠﻔﺎ ت ﻣﻨﻔﺼﻠ ﺔ ؛‬
‫ﺋﻴ ﺴ ﻲ‪.‬‬
‫ﺒﺮﻧﺎﻣﺠﻚ اﻟﺮ‬
‫ﺘﻮى اﻷﻋﲆ ﻟ‬
‫ﺘﺮﻛﻴﺰ ﻋﲆ ﻣﻨﻄﻖ اﻟﻤ ﺴ‬
‫واﻟ‬

‫ﺘﻌﺪدة ﻓ ﻲ وﺣﺪة ﻧﻤﻄﻴ ﺔ‬


‫ﺗﺨﺰﻳﻦ ﻓﺌﺎ ت ﻣ‬
‫ﺘﺎﺟﻬﺎ ﻓ ﻲ وﺣﺪة واﺣﺪة ‪ ،‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻛﻞ ﻓﺼﻞ ﻓ ﻲ اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔﻳﺠ ﺐ‬
‫ﺘ ﻲﺗﺤ‬
‫ﻳﻤﻜﻨﻚﺗﺨﺰﻳﻦ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻔﺌﺎ ت اﻟ‬
‫ﺜﻴﻞ اﻟ ﺴﻴﺎرا ت ‪ ،‬ﻟﺬﻟﻚ دﻋﻨﺎ ﻧﻀﻴﻔﻬﺎ إﱃ‬
‫ﺘﻴﻦ ‪Battery‬و ‪ElectricCar‬ﻓ ﻲﺗﻤ‬
‫ﺘﺎ اﻟﻔﺌ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﺎ‪.‬ﺗ ﺴﺎﻋﺪ ﻛﻠ‬‫ﺒﻄﺎ‬
‫ﺗ ً‬
‫أنﻳﻜﻮن ﻣﺮ‬
‫اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ ‪car.py:‬‬

‫‪car.py‬‬ ‫ﺑﺎء‪"" ".‬‬


‫ﺑﺎﻟﻐﺎز واﻟﻜﻬﺮ‬‫ﺘ ﻲﺗﻌﻤﻞ‬
‫ﺜﻴﻞ اﻟ ﺴﻴﺎرا ت اﻟ‬
‫ﺘﻤ‬‫ﺘﺨﺪﻣ ﺔ ﻟ‬
‫"""ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻔﺌﺎ ت اﻟﻤ ﺴ‬

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


‫‪--‬ﻗﺺ‪--‬‬

‫ﺒﻄﺎرﻳ ﺔ ‪():‬‬
‫ﻓﺌ ﺔ اﻟ‬
‫ﺑﺎﺋﻴ ﺔ‪"" ".‬‬
‫ﺑﻄﺎرﻳ ﺔ ﻟ ﺴﻴﺎرة ﻛﻬﺮ‬‫ﺘﺼﻤﻴﻢ‬
‫ﺑ ﺴﻴﻄ ﺔ ﻟ‬‫"""ﻣﺤﺎوﻟ ﺔ‬

‫ﺒﻄﺎرﻳ ﺔ ‪= 60):‬‬
‫ﺗ ﻲ ‪ ،‬ﺣﺠﻢ اﻟ‬
‫__ ‪)def __init‬ذا‬
‫ﺗﻬﻴﺌ ﺔﺳﻤﺎ ت اﻟﻤﻌﺠﻨﺎ ت‪"" ".‬‬
‫"""‬
‫‪self.battery_size = battery_size‬‬

‫ﺒﻄﺎرﻳ ﺔ )اﻟﺬا ت(‪:‬‬


‫‪def‬وﺻﻒ_اﻟ‬
‫ﺑﻴﺎﻧًﺎﻳﺼﻒ ﺣﺠﻢ اﻟ‬
‫ﺒﻄﺎرﻳ ﺔ‪"" ".‬‬ ‫ﺒﻊ‬
‫"""اﻃ‬
‫"‬
‫ﺑﻬﺎ ﻣﻠﻒ‬‫ﺬه اﻟ ﺴﻴﺎرة‬
‫)"‪-kWh.‬‬ ‫ﺑﻄﺎرﻫﻳ ﺔ‬
‫ﺒﺎﻋ‪"+‬ﺔ )"‬‫‪ (self.battery_size) +‬ﻃ‬
‫‪str‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)def get_range‬ذا‬

‫ﺘﺎﺳﻊ‬
‫‪180‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻴﺎﻧًﺎ ﺣﻮل اﻟﻨﻄﺎق اﻟﺬيﺗﻮﻓﺮه ﻫﺬه اﻟ‬


‫ﺒﻄﺎرﻳ ﺔ‪"" ".‬‬ ‫ﺒﻊ‬
‫"""اﻃ‬
‫إذا ﻛﺎﻧ ﺖ ‪self.battery_size == 70:‬‬
‫اﻟﻨﻄﺎق ‪= 240‬‬
‫‪elif self.battery_size == 85:‬‬
‫اﻟﻨﻄﺎق ‪= 270‬‬

‫"‬
‫ﺑﻌﺪ ﺷﺤﻨﻬﺎ‬ ‫= ‪"message‬ﻳﻤﻜﻦ ﻟﻬﺬه اﻟ ﺴﻴﺎرة أنﺗﻘﻄﻊ أﻣﻴﺎﻻ ًﺗﻘﺮﻳ ً‬
‫ﺒﺎ‬
‫"‬
‫‪+‬ﺷﺎرع )اﻟﻨﻄﺎق(‬
‫ﺒﺎﻋ ﺔ )رﺳﺎﻟ ﺔ(‬
‫‪message‬ﻃ‬ ‫=‪+‬‬
‫ﺑﺎﻟﻜﺎﻣﻞ‪".‬‬

‫ﻓﺌ ﺔ ‪)ElectricCar‬ﺳﻴﺎرة(‪:‬‬
‫ﺑﺎﺋﻴ ﺔ‪"" ".‬‬
‫ﺒﺎ ت اﻟﻜﻬﺮ‬
‫ﺑﺎﻟﻤﺮﻛ‬‫"""ﻧﻤﺎذج ﺟﻮاﻧ ﺐ اﻟ ﺴﻴﺎرة ‪ ،‬ﺧﺎﺻ ﺔ‬

‫ﺗ ﻲ ‪ ،‬اﻟﻄﺮاز ‪ ،‬اﻟ ﺴﻨ ﺔ(‪:‬‬


‫__ ‪)def __init‬ذا‬
‫""‬

‫ﺗﻬﻴﺌ ﺔﺳﻤﺎ ت اﻟﻔﺌ ﺔ اﻷﺻﻞ‪.‬‬


‫ﺑﺎﺋﻴ ﺔ‪.‬‬
‫ﺑﺎﻟ ﺴﻴﺎرة اﻟﻜﻬﺮ‬‫ﺘﻬﻴﺌ ﺔ اﻟ ﺴﻤﺎ ت اﻟﺨﺎﺻ ﺔ‬
‫ﺑ‬‫ﺛﻢ ﻗﻢ‬
‫""‬

‫__ ‪)super () .__ init‬اﻟﻤﺎرﻛ ﺔ ‪ ،‬اﻟﻤﻮدﻳﻞ ‪ ،‬اﻟ ﺴﻨ ﺔ(‬


‫ﺒﻄﺎرﻳ ﺔ )(‬
‫= ‪self.battery‬اﻟ‬

‫ﺘﻴﺮاد ﻓﺌ ﺔ ‪ElectricCar‬وإﻧﺸﺎءﺳﻴﺎرة‬
‫ﻳﻤﻜﻨﻨﺎ اﻵن إﻧﺸﺎء ﻣﻠﻒ ﺟﺪﻳﺪﻳ ﺴﻤﻰ ‪my_electric_car.py‬واﺳ‬
‫ﺑﺎﺋﻴ ﺔ‪:‬‬
‫ﻛﻬﺮ‬

‫ﺑﺎﺋﻴ ﺔ‬
‫ﺑﻠﺪي اﻟﻜﻬﺮ‬ ‫ﺘﻴﺮاد اﻟ ﺴﻴﺎرا ت‬
‫ﻣﻦ ﺷﺮﻛ ﺔ ‪ElectricCar‬ﻻﺳ‬
‫‪car.py‬‬
‫)‪my_tesla = ElectricCar ('tesla'، 'model s'، 2016‬‬

‫ﺒﺎﻋ ﺔ ))( ‪(my_tesla.get_descriptive_name‬‬


‫ﻃ‬
‫)( ‪my_tesla.battery.describe_battery‬‬
‫)( ‪my_tesla.battery.get_range‬‬

‫ﺑ ًﻘﺎ ‪ ،‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ إﺧﻔﺎء ﻣﻌﻈﻢ اﻟﻤﻨﻄﻖ ﻓ ﻲ وﺣﺪة ﻧﻤﻄﻴ ﺔ‪:‬‬


‫ﺘ ﻲ رأﻳﻨﺎ ﻫﺎﺳﺎ‬
‫ﻫﺬا ﻟﻪ ﻧﻔ ﺲ اﻟﻤﺨﺮﺟﺎ ت اﻟ‬

‫ﺑﻄﺎرﻳ ﺔ ‪70‬ﻛﻴﻠﻮ واط ﻓ ﻲ اﻟ ﺴﺎﻋ ﺔ‪.‬‬‫ﺗ ﺴﻼ ﻣﻮدﻳﻞ ‪ S‬ﻫﺬه اﻟ ﺴﻴﺎرة ﻟﺪﻳﻬﺎ‬


‫‪2016‬‬

‫ﻳﻤﻜﻦ ﻟﻬﺬه اﻟ ﺴﻴﺎرة أنﺗﻘﻄﻊ ﻣﺎﻳﻘﺮ ب ﻣﻦ ‪240‬ﻣﻴ ﻼ ً‬


‫ﺑﺸﺤﻨ ﺔ ﻛﺎﻣﻠ ﺔ‪.‬‬

‫ﺘﻌﺪدة ﻣﻦ وﺣﺪة ﻧﻤﻄﻴ ﺔ‬


‫ﺘﻴﺮاد ﻓﺌﺎ ت ﻣ‬
‫اﺳ‬
‫ﺑﺎﺋﻴ ﺔ ﻓ ﻲ ﻧﻔ ﺲ‬
‫ﺒﺮﻧﺎﻣﺞ‪ .‬إذا أردﻧﺎ ﺻﻨﻊﺳﻴﺎرة ﻋﺎدﻳ ﺔ وﺳﻴﺎرة ﻛﻬﺮ‬
‫ﺘﻴﺮاد أي ﻋﺪدﺗﺮﻳﺪه ﻣﻦ اﻟﻔﺌﺎ ت ﻓ ﻲ ﻣﻠﻒ اﻟ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﻴﻦ ‪Car and ElectricCar: ،‬‬
‫ﺘﻴﺮاد ﻛﻼ اﻟﻔﺌ‬
‫ﺑﺤﺎﺟ ﺔ إﱃ اﺳ‬‫اﻟﻤﻠﻒ ‪ ،‬ﻓﻨﺤﻦ‬

‫ﺘﻴﺮاد اﻟ ﺴﻴﺎرا ت ‪Car، ElectricCar‬‬


‫‪my_cars.py u‬ﻣﻦ اﺳ‬

‫= ‪v my_beetle‬ﺳﻴﺎرة )‪('volkswagen'، 'beetle'، 2016‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_beetle.get_descriptive_name‬‬
‫ﻃ‬

‫)‪w my_tesla = ElectricCar ('tesla'، 'roadster'، 2016‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_tesla.get_descriptive_name‬‬
‫ﻃ‬

‫ﺒﻘﺎ ت‬
‫اﻟﻄ‬ ‫‪181‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻴﺮاد اﻟﻔﺌﺎ ت‬
‫ﺑﺎﺳ‬‫ﺑﻤﺠﺮد ﻗﻴﺎﻣﻚ‬
‫ﺑﻔﺎﺻﻠ ﺔ ‪u.‬‬‫ﺘﻌﺪدة ﻣﻦ وﺣﺪة ﻧﻤﻄﻴ ﺔ ﻋﻦ ﻃﺮﻳﻖ ﻓﺼﻞ ﻛﻞ ﻓﺌ ﺔ‬
‫ﺘﻴﺮاد ﻓﺌﺎ ت ﻣ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﻚ‪.‬‬
‫ﺜﻠ ﺔ ﻟﻜﻞ ﻓﺌ ﺔ ﺣ ﺴ ﺐ ﺣﺎﺟ‬
‫اﻟﻀﺮورﻳ ﺔ ‪ ،‬ﻓﺄﻧ ﺖ ﺣﺮ ﻓ ﻲ ﻋﻤﻞ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﻣ‬

‫ﺘﻞ ﻋﺎدﻳ ﺔ ﻓ ﻲ ‪v‬و ‪elec‬‬


‫ﺑﻴ‬‫ﺜﺎل ‪ ،‬ﻧﺼﻨﻊﺳﻴﺎرة ﻓﻮﻟﻜ ﺲ ﻓﺎﺟﻦ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘﺮ ﻓ ﻲ ‪w:‬‬
‫ﺗﺮﻳﻚﺗ ﺴﻼ رودﺳ‬

‫ﺘﻞ‬
‫ﺑﻴ‬‫‪2016‬ﻓﻮﻟﻜ ﺲ ﻓﺎﺟﻦ‬
‫ﺘﺮ‬
‫ﺗﻴ ﺴﻼ رودﺳ‬
‫‪2016‬‬

‫ﺘﻴﺮاد وﺣﺪة ﻛﺎﻣﻠ ﺔ‬


‫اﺳ‬
‫ﺘﺞ ﻋﻨﻪ‬
‫ﺑ ﺴﻴﻂ وﻳﻨ‬‫ﺘﺨﺪامﺗﺪوﻳﻦ اﻟﻨﻘﻄ ﺔ‪ .‬ﻫﺬا اﻷﺳﻠﻮ ب‬
‫ﺑﺎﺳ‬‫ﺘﺎﺟﻬﺎ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺛﻢ اﻟﻮﺻﻮل إﱃ اﻟﻔﺌﺎ ت اﻟ‬‫ﺘﻴﺮاد وﺣﺪة ﻛﺎﻣﻠ ﺔ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﺳ‬
‫ﺘﻀﻤﻦ اﺳﻢ اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ ‪ ،‬ﻓﻠﻦﻳﻜﻮن ﻟﺪﻳﻚﺗﻌﺎرض ﻓ ﻲ‬
‫ﺜﻴﻞ ﻟﻔﺌ ﺔ ﻣﺎﻳ‬
‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﺘﺪﻋﺎءﻳﻘﻮم‬
‫ﺗﻪ‪ .‬ﻧﻈ ًﺮاﻷن ﻛﻞ اﺳ‬
‫رﻣﺰﻳ ﺴﻬﻞ ﻗﺮاء‬
‫ﺘﺨﺪﻣ ﺔ ﻓ ﻲ اﻟﻤﻠﻒ اﻟﺤﺎﻟ ﻲ‪.‬‬
‫ﺘ ﺴﻤﻴ ﺔ ﻣﻊ أي أﺳﻤﺎء ﻣ ﺴ‬
‫اﻟ‬

‫ﺛﻢ إﻧﺸﺎﺋﻬﺎ‬‫ﺑﺎﻟﻜﺎﻣﻞ‬‫ﺘﻴﺮاد وﺣﺪة اﻟ ﺴﻴﺎرة‬


‫ﺒﺪو ﻋﻠﻴﻪ اﺳ‬
‫إﻟﻴﻚ ﻣﺎﻳ‬
‫ﺑﺎﺋﻴ ﺔ‪:‬‬
‫ﺳﻴﺎرة ﻋﺎدﻳ ﺔ وﺳﻴﺎرة ﻛﻬﺮ‬

‫ﺘﻴﺮاد اﻟ ﺴﻴﺎرة‬
‫‪my_cars.py‬اﺳ‬

‫)‪v my_beetle = car.Car ('volkswagen'، 'beetle'، 2016‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_beetle.get_descriptive_name‬‬ ‫ﻃ‬

‫)‪w my_tesla = car.ElectricCar ('tesla'، 'roadster'، 2016‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_tesla.get_descriptive_name‬‬ ‫ﻃ‬

‫ﺛﻢ ﻧﺼﻞ إﱃ اﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ‬‫ﺑﺄﻛﻤﻠﻬﺎ ‪.‬‬‫ﺘﻮرد وﺣﺪة اﻟ ﺴﻴﺎرة‬


‫ﻓ ﻲ ‪u‬ﻧﺤﻦ ﻧ ﺴ‬
‫ﺘﻞ ﻣﺮة أﺧﺮى ‪ ،‬وﻓ ﻲ ‪w‬ﻧﺼﻨﻊ‬
‫ﺑﻴ‬‫ﺑﻨﺎء ﺟﻤﻠ ﺔ ‪module_name.class_name .‬ﻓ ﻲ ‪v ،‬أﻧﺸﺄﻧﺎ ﻓﻮﻟﻜ ﺲ ﻓﺎﺟﻦ‬‫ﺘﺎج ﻣﻦ ﺧﻼل‬
‫ﺗﺤ‬
‫‪Tesla Roadster.‬‬

‫ﺘﻴﺮاد ﻛﺎﻓ ﺔ اﻟﻔﺌﺎ ت ﻣﻦ وﺣﺪة ﻧﻤﻄﻴ ﺔ‬


‫اﺳ‬
‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺘﺨﺪام اﻟﺼﻴﻐ ﺔ اﻟ‬
‫ﺑﺎﺳ‬‫ﺘﻴﺮاد ﻛﻞ ﻓﺼﻞ دراﺳ ﻲ ﻣﻦ وﺣﺪة ﻧﻤﻄﻴ ﺔ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬

‫*‬
‫ﺘﻴﺮاد ‪module_name‬‬
‫ﻣﻦ اﺳ‬

‫ﺘﻴﺮاد أﻋﲆ اﻟﻤﻠﻒ واﻟﺤﺼﻮل ﻋﲆ‬ ‫ﺒﻴﻦ‪ .‬أوﻻ ً ‪ ،‬ﻣﻦ اﻟﻤﻔﻴﺪ أنﺗﻜﻮن ﻗﺎد ًرا ﻋﲆ ﻗﺮاءة ﻋ‬
‫ﺒﺎرا ت اﻻﺳ‬ ‫ﺒ‬‫ﺑﻬﺬه اﻟﻄﺮﻳﻘ ﺔ ﻟ ﺴ‬‫ﻻﻳﻨﺼﺢ‬
‫ﺘﺨﺪﻣﻬﺎ ﻣﻦ اﻟﻮﺣﺪة‪.‬ﻳﻤﻜﻦ‬
‫ﺘ ﻲﺗ ﺴ‬
‫ﺘﺨﺪام ﻫﺬا اﻟﻨﻬﺞ ‪ ،‬ﻣﻦ ﻏﻴﺮ اﻟﻮاﺿﺢ اﻟﻔﺌﺎ ت اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺘﺨﺪﻣﻬﺎ اﻟ‬
‫ﺘ ﻲﻳ ﺴ‬
‫ﻓﻜﺮة واﺿﺤ ﺔ ﻋﻦ اﻟﻔﺌﺎ ت اﻟ‬
‫ﺑﻨﻔ ﺲ اﺳﻢ ﺷ ﻲء‬‫ﺘﻴﺮاد ﻓﺌ ﺔ‬
‫ﺑﺎﺳ‬‫ﺑﻄﺮﻳﻖ اﻟﺨﻄﺄ‬ ‫أنﻳﺆدي ﻫﺬا اﻷﺳﻠﻮ ب أ ً‬
‫ﻳﻀﺎ إﱃ اﻟﺨﻠﻂ ﻣﻊ اﻷﺳﻤﺎء اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻤﻠﻒ‪ .‬إذا ﻗﻤ ﺖ‬
‫ﺑﻚ ‪ ،‬ﻓﻴﻤﻜﻨﻚ إﻧﺸﺎء أﺧﻄﺎءﻳﺼﻌ ﺐﺗﺸﺨﻴﺼﻬﺎ‪ .‬أﻋﺮض ﻫﺬا ﻫﻨﺎﻷﻧﻪ ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻪ ﻟﻴ ﺲ ﻧﻬﺠًﺎ‬‫ﺒﺮﻧﺎﻣﺞ اﻟﺨﺎص‬
‫آﺧﺮ ﻓ ﻲ ﻣﻠﻒ اﻟ‬
‫ﺘﻤﻞ أنﺗﺮاه ﻓ ﻲ ﻛﻮد اﻵﺧﺮﻳﻦ‪.‬‬
‫ﺑﻪ ‪ ،‬ﻓﻤﻦ اﻟﻤﺤ‬‫ﻣﻮﺻﻰ‬

‫ﺘﺨﺪام‬
‫ﺑﺄﻛﻤﻠﻬﺎ واﺳ‬‫ﺘﻴﺮاد اﻟﻮﺣﺪة‬
‫ﺘﻴﺮاد اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻔﺌﺎ ت ﻣﻦ وﺣﺪة ﻧﻤﻄﻴ ﺔ ‪ ،‬ﻓﻤﻦ اﻷﻓﻀﻞ ﻟﻚ اﺳ‬
‫ﺑﺤﺎﺟ ﺔ إﱃ اﺳ‬‫إذا ﻛﻨ ﺖ‬
‫ﺑﻨﺎء ﺟﻤﻠ ﺔ ‪module_name.class_name .‬‬

‫ﺘﺎﺳﻊ‬
‫‪182‬اﻟﻔﺼﻞ اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺘﺨﺪام اﻟﻮﺣﺪة ﻓ ﻲ اﻟ‬
‫ﺑﻮﺿﻮح ﻣﻜﺎن اﺳ‬‫ﺘﺮى‬
‫ﺘﺨﺪﻣ ﺔ ﻓ ﻲ اﻟﺠﺰء اﻟﻌﻠﻮي ﻣﻦ اﻟﻤﻠﻒ ‪ ،‬ﻟﻜﻨﻚﺳ‬
‫ﻟﻦﺗﺮى ﺟﻤﻴﻊ اﻟﻔﺌﺎ ت اﻟﻤ ﺴ‬
‫ﺘﻴﺮاد ﻛﻞ ﻓﺌ ﺔ ﻓ ﻲ وﺣﺪة ﻧﻤﻄﻴ ﺔ‪.‬‬
‫ﺘ ﻲﻳﻤﻜﻦ أنﺗﻨﺸﺄ ﻋﻨﺪ اﺳ‬
‫ﺘﻤﻠ ﺔ اﻟ‬
‫ﺘ ﺴﻤﻴ ﺔ اﻟﻤﺤ‬ ‫ﺘﺠﻨ ﺐ أ ً‬
‫ﻳﻀﺎﺗﻌﺎرﺿﺎ ت اﻟ‬ ‫ﺘ‬‫ﺳ‬

‫ﺘﻴﺮاد وﺣﺪة إﱃ وﺣﺪة ﻧﻤﻄﻴ ﺔ‬


‫اﺳ‬
‫ﺒﻴﺮ ﺟﺪًا‬
‫ﺑﺸﻜﻞ ﻛ‬‫ﺘﺮﻏ ﺐ ﻓ ﻲﺗﻮزﻳﻊ ﻓﺼﻮﻟﻚ اﻟﺪراﺳﻴ ﺔ ﻋﲆ ﻋﺪة وﺣﺪا ت ﻟﻤﻨﻊ أي ﻣﻠﻒ واﺣﺪ ﻣﻦ اﻟﻨﻤﻮ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن ‪،‬ﺳ‬‫ﻓﻲ‬
‫ﺘﺨﺰﻳﻦ اﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ ﻓ ﻲ ﻋﺪة وﺣﺪا ت ‪ ،‬ﻗﺪﺗﺠﺪ‬
‫ﺑ‬‫ﺗﺠﻨ ﺐﺗﺨﺰﻳﻦ اﻟﻔﺌﺎ ت ﻏﻴﺮ ذا ت اﻟﺼﻠ ﺔ ﻓ ﻲ ﻧﻔ ﺲ اﻟﻮﺣﺪة‪ .‬ﻋﻨﺪﻣﺎﺗﻘﻮم‬
‫و‬
‫ﺑ ﺔ إﱃ اﻟﻮﺣﺪة‬
‫ﺘﻴﺮاد اﻟﻔﺌ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﺘﻤﺪ ﻋﲆ ﻓﺌ ﺔ ﻓ ﻲ وﺣﺪة أﺧﺮى‪ .‬ﻋﻨﺪﻣﺎﻳﺤﺪ ث ﻫﺬا ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫أن اﻟﻔﺼﻞ ﻓ ﻲ وﺣﺪة واﺣﺪةﻳﻌ‬
‫اﻟﻨﻤﻄﻴ ﺔ اﻷوﱃ‪.‬‬

‫ﺑﺎﺋﻴ ﺔ‬
‫ﺜﺎل ‪ ،‬دﻋﻨﺎ ﻧﺨﺰن ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة ﻓ ﻲ وﺣﺪة واﺣﺪة واﻟ ﺴﻴﺎرة اﻟﻜﻬﺮ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺘﺤﻞ ﻣﺤﻞ ﻣﻠﻒ ‪electric_car.py‬‬
‫ﺒﻄﺎرﻳ ﺔ ﻓ ﻲ وﺣﺪة ﻣﻨﻔﺼﻠ ﺔ‪.‬ﺳﻨﻨﺸ ﺊ وﺣﺪة ﺟﺪﻳﺪةﺗ ﺴﻤﻰ ‪electric_car.py -‬ﻟ‬
‫وﻓﺌﺎ ت اﻟ‬
‫ﺑ ًﻘﺎ ‪-‬وﻧ ﺴﺦ ﻓﺌ‬
‫ﺘ ﻲ ‪Battery‬و ‪ElectricCar‬ﻓﻘﻂ ﻓ ﻲ ﻫﺬا اﻟﻤﻠﻒ‪:‬‬ ‫اﻟﺬي أﻧﺸﺄﻧﺎهﺳﺎ‬

‫ﺑﺎﺋﻴ ﺔ‪"" ".‬‬


‫ﺜﻴﻞ اﻟ ﺴﻴﺎرا ت اﻟﻜﻬﺮ‬
‫ﺘﻤ‬‫ﺘﺨﺪاﻣﻬﺎ ﻟ‬
‫ﺘ ﻲﻳﻤﻜﻦ اﺳ‬
‫‪electric_car.py‬اﻟﻔﺌﺎ ت اﻟ‬
‫"""ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ‬

‫ﺘﻴﺮاد اﻟ ﺴﻴﺎرا ت‬
‫ش ﻣﻦﺳﻴﺎرة اﺳ‬

‫ﺒﻄﺎرﻳ ﺔ ‪():‬‬‫ﻓﺌ ﺔ اﻟ‬


‫‪--‬ﻗﺺ‪--‬‬

‫ﻓﺌ ﺔ ‪)ElectricCar‬ﺳﻴﺎرة(‪:‬‬
‫‪--‬ﻗﺺ‪--‬‬

‫ﺒﺎﺷﺮة إﱃ اﻟﻮﺣﺪة‬
‫ﺘﻴﺮاد اﻟ ﺴﻴﺎرة ﻣ‬
‫ﺑﺎﺳ‬‫ﺘﺎج ﻓﺌ ﺔ ‪ElectricCar‬إﱃ اﻟﻮﺻﻮل إﱃ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة اﻷﺻﻠﻴ ﺔ ‪ ،‬ﻟﺬﻟﻚ ﻧﻘﻮم‬
‫ﺗﺤ‬
‫ﺘﺎج أ ً‬
‫ﻳﻀﺎ إﱃ‬ ‫ﺜﻴﻞ ‪ElectricCar .‬ﻧﺤ‬
‫ﺜﻴﺮ ﺧﻄﺄ ﻋﻨﺪﻣﺎ ﻧﺤﺎول إﻧﺸﺎء ﻣ‬
‫ﺘ‬‫اﻟﻨﻤﻄﻴ ﺔ ﻓ ﻲ ‪u.‬إذا ﻧ ﺴﻴﻨﺎ ﻫﺬا اﻟ ﺴﻄﺮ ‪ ،‬ﻓﺈن ‪Python‬ﺳ‬
‫ﺘﻮي ﻋﲆ ﻓﺌ ﺔ اﻟ ﺴﻴﺎرة ﻓﻘﻂ ‪:‬‬
‫ﺑﺤﻴ ﺚﺗﺤ‬‫ﺗﺤﺪﻳ ﺚ وﺣﺪة اﻟ ﺴﻴﺎرة‬

‫‪car.py‬‬ ‫ﺜﻴﻞﺳﻴﺎرة‪"" ".‬‬


‫ﺘﻤ‬‫ﺘﺨﺪاﻣﻬﺎ ﻟ‬
‫"""ﻓﺌ ﺔﻳﻤﻜﻦ اﺳ‬

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


‫‪--‬ﻗﺺ‪--‬‬

‫ﺘﺎﺟﻬﺎ‪:‬‬
‫ﺘ ﻲ ﻧﺤ‬
‫ﺘﻴﺮاد ﻣﻦ ﻛﻞ وﺣﺪة ﻋﲆ ﺣﺪة وإﻧﺸﺎء أي ﻧﻮع ﻣﻦ اﻟ ﺴﻴﺎرا ت اﻟ‬
‫اﻵنﻳﻤﻜﻨﻨﺎ اﻻﺳ‬

‫ﺘﻴﺮاد اﻟ ﺴﻴﺎرا ت‬
‫‪my_cars.py u‬ﻣﻦﺳﻴﺎرة اﺳ‬
‫ﻣﻦ ‪electric_car import ElectricCar‬‬

‫= ‪my_beetle‬ﺳﻴﺎرة )‪('volkswagen'، 'beetle'، 2016‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_beetle.get_descriptive_name‬‬
‫ﻃ‬

‫)‪my_tesla = ElectricCar ('tesla'، 'roadster'، 2016‬‬


‫ﺒﺎﻋ ﺔ ))( ‪(my_tesla.get_descriptive_name‬‬ ‫ﻃ‬

‫اﻟﻔﺼﻮل ‪183‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﻬﺎ‪.‬‬
‫ﺗﻬﺎ ‪ ،‬و ‪ElectricCar‬ﻣﻦ وﺣﺪ‬
‫ﺘﻮرد اﻟ ﺴﻴﺎرة ﻣﻦ وﺣﺪ‬
‫ﻓ ﻲ ‪u‬ﻧﺤﻦ ﻧ ﺴ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪:‬‬‫ﺑﺎﺋﻴ ﺔ واﺣﺪة‪.‬ﺗﻢ إﻧﺸﺎء ﻛﻼ اﻟﻨﻮﻋﻴﻦ ﻣﻦ اﻟ ﺴﻴﺎرا ت‬
‫ﺛﻢ ﻧﺼﻨﻊﺳﻴﺎرة ﻋﺎدﻳ ﺔ واﺣﺪة وﺳﻴﺎرة ﻛﻬﺮ‬

‫ﺘﻞ‬
‫ﺑﻴ‬‫‪2016‬ﻓﻮﻟﻜ ﺲ ﻓﺎﺟﻦ‬
‫ﺘﺮ‬
‫ﺗﻴ ﺴﻼ رودﺳ‬‫‪2016‬‬

‫ﺑﻚ‬‫ﺜﻮر ﻋﲆﺳﻴﺮ اﻟﻌﻤﻞ اﻟﺨﺎص‬


‫اﻟﻌ‬
‫ﺒﻴﺮ‪ .‬ﻣﻦ اﻟﻤﻬﻢ ﻣﻌﺮﻓ ﺔ‬
‫ﺒﺮﻣﺠﻴ ﺔ ﻓ ﻲ ﻣﺸﺮوع ﻛ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻛﻤﺎﺗﺮى ‪،‬ﺗﻤﻨﺤﻚ ‪Python‬اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﺨﻴﺎرا ت ﻟﻜﻴﻔﻴ ﺔ ﻫﻴﻜﻠ ﺔ اﻟ‬
‫ﺘﻨﻈﻴﻢ ﻣﺸﺎرﻳﻌﻚ وﻛﺬﻟﻚ ﻓﻬﻢ ﻣﺸﺎرﻳﻊ اﻵﺧﺮﻳﻦ‪.‬‬
‫ﺘﻤﻜﻦ ﻣﻦﺗﺤﺪﻳﺪ أﻓﻀﻞ اﻟﻄﺮق ﻟ‬
‫ﺘﻰﺗ‬
‫ﺘﻤﺎﻻ ت ﺣ‬
‫ﻛﻞ ﻫﺬه اﻻﺣ‬

‫ﺑﻜﻞ ﺷ ﻲء ﻓ ﻲ ﻣﻠﻒ واﺣﺪ وﻧﻘﻞ‬‫ﺑﻚ‪ .‬ﺣﺎول اﻟﻘﻴﺎم‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬


‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻨﻴ ﺔ اﻟ‬‫ﺑ ﺴﺎﻃ ﺔ‬‫ﺒﺪأ ‪ ،‬ﺣﺎﻓﻆ ﻋﲆ‬
‫ﻋﻨﺪﻣﺎﺗ‬
‫ﺑﻤﺠﺮد أنﻳﻌﻤﻞ ﻛﻞ ﺷ ﻲء‪ .‬إذا ﻛﻨ ﺖﺗﺤ ﺐ ﻛﻴﻔﻴ ﺔﺗﻔﺎﻋﻞ اﻟﻮﺣﺪا ت واﻟﻤﻠﻔﺎ ت ‪،‬‬‫اﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ إﱃ وﺣﺪا ت ﻣﻨﻔﺼﻠ ﺔ‬
‫ﺑ ﺔ رﻣﺰ ﻧﺎﺟﺢ ‪ ،‬واﻧﻄﻠﻖ ﻣﻦ‬
‫ﺘﺎ‬
‫ﺑﻜ‬‫ﺑﺤ ﺚ ﻋﻦ ﻃﺮﻳﻘ ﺔﺗ ﺴﻤﺢ ﻟﻚ‬
‫ﺑﺪء ﻣﺸﺮوع‪ .‬ا‬‫ﻓﺤﺎولﺗﺨﺰﻳﻦ ﻓﺼﻮﻟﻚ اﻟﺪراﺳﻴ ﺔ ﻓ ﻲ وﺣﺪا ت ﻋﻨﺪ‬
‫ﻫﻨﺎك‪.‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺑﺈﻧﺸﺎء ﻣﻠﻒ ﻣﻨﻔﺼﻞﻳﻘﻮم‬‫ﺘﺨﺰﻳﻨﻪ ﻓ ﻲ وﺣﺪة ﻧﻤﻄﻴ ﺔ‪ .‬ﻗﻢ‬


‫ﺑ‬‫ﺘﺨﺪام أﺣﺪ ث ﻓﺌ ﺔ ﻣﻄﻌﻢ ‪ ،‬ﻗﻢ‬
‫ﺑﺎﺳ‬‫ﺘﻮرد‪:‬‬
‫‪9-10.‬ﻣﻄﻌﻢ ﻣ ﺴ‬
‫ﺘﻴﺮادﻳﻌﻤﻞ‬
‫ﺑﻴﺎن اﻻﺳ‬‫ﺘﻮﺿﻴﺢ أن‬
‫ﺘﺪع إﺣﺪى ﻃﺮق ‪Restaurant‬ﻟ‬
‫ﺜﻴﻞ ﻟﻠﻤﻄﻌﻢ ‪ ،‬واﺳ‬
‫ﺑﻌﻤﻞ ﻣ‬‫ﺘﻴﺮاد اﻟﻤﻄﻌﻢ‪ .‬ﻗﻢ‬
‫ﺑﺎﺳ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬

‫ﺘﻤﺮﻳﻦ ‪)9-8‬ﺻﻔﺤ ﺔ ‪178).‬‬


‫ﺑﻌﻤﻠﻚ ﻣﻦ اﻟ‬‫ﺑﺪأ‬
‫ﺘﻮرد‪ :‬ا‬
‫‪9-11.‬اﻟﻤ ﺴﺆول اﻟﻤ ﺴ‬
‫ﺑﺈﻧﺸﺎء‬‫ﺑﺈﻧﺸﺎء ﻣﻠﻒ ﻣﻌﺪل ﻣﻨﻔﺼﻞ ‪ ،‬وﻗﻢ‬‫ﺘﻴﺎزا ت واﻟﻤ ﺴﺆول ﻓ ﻲ وﺣﺪة واﺣﺪة ‪ .‬ﻗﻢ‬
‫ﺘﺨﺪم واﻻﻣ‬
‫ﺘﺨﺰﻳﻦ ﻓﺌﺎ ت اﻟﻤ ﺴ‬
‫ﺑ‬‫ﻗﻢ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺘﺪﻋﺎء )( ‪show_privileges‬ﻹﻇﻬﺎر أن ﻛﻞ ﺷ ﻲءﻳﻌﻤﻞ‬
‫ﺜﻴﻞ ﻣ ﺴﺆول ‪ ،‬واﺳ‬
‫ﻣ‬

‫ﺘﻴﺎزا ت وﻓﺌﺎ ت اﻹدارة‬


‫ﺘﺨﺰﻳﻦ ﻓﺌﺎ ت اﻻﻣ‬
‫ﺑ‬‫ﺘﺨﺪم ﻓ ﻲ وﺣﺪة واﺣﺪة ‪ ،‬وﻗﻢ‬
‫ﺘﺨﺰﻳﻦ ﻓﺌ ﺔ اﻟﻤ ﺴ‬
‫ﺑ‬‫ﺘﻌﺪدة‪ :‬ﻗﻢ‬
‫‪9-12.‬وﺣﺪا ت ﻣ‬
‫ﺘﻮﺿﻴﺢ أن ﻛﻞ‬
‫ﺘﺪﻋﺎء )( ‪show_privileges‬ﻟ‬
‫ﺜﻴﻞ ‪Admin‬واﺳ‬
‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﻓ ﻲ وﺣﺪة ﻣﻨﻔﺼﻠ ﺔ‪ .‬ﻓ ﻲ ﻣﻠﻒ ﻣﻨﻔﺼﻞ ‪ ،‬ﻗﻢ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺷ ﻲء ﻻﻳﺰالﻳﻌﻤﻞ‬

‫ﺜﻮن اﻟﻘﻴﺎﺳﻴ ﺔ‬
‫ﺑﺎﻳ‬‫ﺒﺔ‬
‫ﺘ‬‫ﻣﻜ‬
‫ﺒﺢ ﻟﺪﻳﻚ ﻓﻬﻢ‬
‫ﺑﻌﺪ أن أﺻ‬‫ﺜﻮن‪ .‬اﻵن‬
‫ﺒﻴ‬‫ﺒﻴ ﺖ ﻟ‬
‫ﺜ‬‫ﺒ ﺔ ‪Python‬اﻟﻘﻴﺎﺳﻴ ﺔ ﻫ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻮﺣﺪا ت اﻟﻤﻀﻤﻨ ﺔ ﻓ ﻲ ﻛﻞﺗ‬
‫ﺘ‬‫ﻣﻜ‬
‫ﺒﺮﻣﺠﻮن اﻵﺧﺮون‬
‫ﺘ ﺐ اﻟﻤ‬
‫ﺘ ﻲﻛ‬
‫ﺜﻞ ﻫﺬه اﻟ‬
‫ﺘﺨﺪام وﺣﺪا ت ﻣ‬
‫ﺒﺪء ﻓ ﻲ اﺳ‬
‫أﺳﺎﺳ ﻲ ﻟﻜﻴﻔﻴ ﺔ ﻋﻤﻞ اﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ ‪،‬ﻳﻤﻜﻨﻚ اﻟ‬
‫ﺑ ﺴﻴﻂ ﻓ ﻲ اﻟﺠﺰء‬‫ﺘﻴﺮاد‬
‫ﺑﻴﺎن اﺳ‬‫ﺒ ﺔ اﻟﻘﻴﺎﺳﻴ ﺔ ﻋﻦ ﻃﺮﻳﻖﺗﻀﻤﻴﻦ‬
‫ﺘ‬‫ﺘﺨﺪام أي وﻇﻴﻔ ﺔ أو ﻓﺌ ﺔ ﻓ ﻲ اﻟﻤﻜ‬
‫ﻋﻨﻬﺎ ﻋﺸﺮة‪.‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺑﻚ‪ .‬ﻟﻨﻠﻖ ﻧﻈﺮة ﻋﲆ ﻓﺼﻞ دراﺳ ﻲ واﺣﺪ ‪OrderedDict ، ،‬ﻣﻦ ﻣﺠﻤﻮﻋﺎ ت اﻟﻮﺣﺪا ت اﻟﻨﻤﻄﻴ ﺔ‪.‬‬‫اﻟﻌﻠﻮي ﻣﻦ اﻟﻤﻠﻒ اﻟﺨﺎص‬

‫‪184‬اﻟﻔﺼﻞ ‪9‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎح واﻟﻘﻴﻤ ﺔ‪.‬‬


‫ﺑﻪ أزواج اﻟﻤﻔ‬‫ﺗﻴ ﺐ اﻟﺬيﺗﻀﻴﻒ‬
‫ﺘﺮ‬‫ﺘﻌﻘ ﺐ اﻟ‬
‫ﺑﻂ أﺟﺰاء ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ‪ ،‬ﻟﻜﻨﻬﺎ ﻻﺗ‬
‫ﺑﺮ‬‫ﺗ ﺴﻤﺢ ﻟﻚ اﻟﻘﻮاﻣﻴ ﺲ‬
‫ﺘﺨﺪام ﻓﺌ ﺔ‬
‫ﺘﺎح واﻟﻘﻴﻤ ﺔ ‪ ،‬ﻓﻴﻤﻜﻨﻚ اﺳ‬
‫ﺑﻪ إﺿﺎﻓ ﺔ أزواج اﻟﻤﻔ‬‫ﺘﻢ‬
‫ﺗﻴ ﺐ اﻟﺬيﺗ‬
‫ﺘﺮ‬‫ﺒﻊ اﻟ‬
‫ﺘ‬‫ﺗﺮﻏ ﺐ ﻓ ﻲﺗ‬
‫ﺑﺈﻧﺸﺎء ﻗﺎﻣﻮس و‬‫إذا ﻛﻨ ﺖﺗﻘﻮم‬
‫‪OrderedDict‬ﻣﻦ وﺣﺪة اﻟﻤﺠﻤﻮﻋﺎ ت ‪.‬‬

‫ﺘﺎح‬
‫ﺑﻪ إﺿﺎﻓ ﺔ أزواج اﻟﻤﻔ‬‫ﺘﻢ‬
‫ﺗﻴ ﺐ اﻟﺬيﺗ‬
‫ﺘﺮ‬‫ﺒﻊ اﻟ‬
‫ﺘ‬‫ﺜﻨﺎء أﻧﻬﺎﺗ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺜﻞ اﻟﻘﻮاﻣﻴ ﺲ‬
‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫ﺜﻴﻼ ت ﻓﺌ ﺔ ‪OrderedDict‬‬
‫ﺘﺼﺮف ﻣ‬
‫ﺗ‬
‫واﻟﻘﻴﻤ ﺔ‪.‬‬
‫ﺜﺎل ‪favour_languages.py‬ﻣﻦ اﻟﻔﺼﻞ ‪ 6.‬ﻫﺬه اﻟﻤﺮة‬
‫دﻋﻨﺎ ﻧﻌﻴﺪ اﻟﻨﻈﺮ ﻓ ﻲ ﻣ‬
‫ﺘﻄﻼع‪:‬‬
‫ﺑﻪ اﻷﺷﺨﺎص ﻟﻼﺳ‬‫ﺘﺠﻴ ﺐ‬
‫ﺗﻴ ﺐ اﻟﺬيﻳ ﺴ‬
‫ﺘﺮ‬‫ﺒﻊ اﻟ‬
‫ﺘ‬‫ﺘ‬‫ﺳﻨ‬

‫ﺘﻴﺮاد ‪OrderedDict‬‬
‫‪favourite_ u‬ﻣﻦ ﻣﺠﻤﻮﻋﺎ ت اﺳ‬
‫‪languages.py‬‬
‫)( ‪v favourite_languages = OrderedDict‬‬

‫'‪w favourite_languages ['jen'] = 'python‬‬


‫'‪favourite_languages ['sarah'] = 'c‬‬
‫ﺑ ﻲ'‬
‫= ]'‪'favourite_languages ['edward‬رو‬
‫'‪favourite_languages ['phil'] = 'python‬‬

‫‪x‬ﻟﻼﺳﻢ واﻟﻠﻐ ﺔ ﻓ ﻲ ‪favourite_languages.items ():‬‬


‫"‬
‫‪print (name.title () +‬اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻟﺪى " ﻫ ﻲ )" ‪() +".‬‬ ‫‪+‬‬
‫‪language.title‬‬

‫ﺜﻴﻞ ﻟﻔﺌ ﺔ‬‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﺘﻴﺮاد ﻓﺌ ﺔ ‪OrderedDict‬ﻣﻦ ﻣﺠﻤﻮﻋﺎ ت اﻟﻮﺣﺪا ت اﻟﻨﻤﻄﻴ ﺔ ﻓ ﻲ ‪u.‬ﻓ ﻲ ‪v ،‬ﻧﻘﻮم‬
‫ﺑﺎﺳ‬‫ﺒﺪأ‬
‫ﻧ‬
‫ﺘﻌﺮﺟ ﺔ ؛ﺗﻨﺸ ﺊ اﻟﻤﻜﺎﻟﻤ ﺔ إﱃ )(‬
‫ﺜﺎل ﻓ ﻲ اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ‪ .‬ﻻﺣﻆ ﻋﺪم وﺟﻮد أﻗﻮاس ﻣ‬
‫ﺗﺨﺰﻳﻦ ﻫﺬا اﻟﻤ‬
‫‪OrderedDict‬و‬

‫ﺛﻢ ﻧﻀﻴﻒ ﻛﻞ اﺳﻢ وﻛﻠﻤ ﺔ ﻟﻐﻮﻳ ﺔ إﱃ‬‫ﺑﺎﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ‪.‬‬‫ﺗﺨﺰﻧﻪ‬


‫ﺒﺎ ﻟﻨﺎ و‬
‫ﺗً‬ ‫ً‬
‫ﻓﺎرﻏﺎ ﻣﺮ‬ ‫ﺳﺎ‬
‫‪OrderedDict‬ﻗﺎﻣﻮ ً‬
‫ﺋﻤﺎ‬
‫ّر ﻓ ﻲﺗﻜﺮار اﻟﻠﻐ ﺔ اﻟﻤﻔﻀﻠ ﺔ ﻋﻨﺪ ‪x ،‬ﻧﻌﻠﻢ أﻧﻨﺎﺳﻨﺤﺼﻞ دا ً‬
‫‪favourites_languages‬واﺣﺪًاﺗﻠﻮ اﻵﺧﺮ‪ .‬اﻵن ﻋﻨﺪﻣﺎ ﻧﻤ ﺮ‬
‫ﺑﻪ‪:‬‬‫ﺘﻬﺎ‬
‫ﺗﻴ ﺐ اﻟﺬيﺗﻤ ﺖ إﺿﺎﻓ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﻋﲆ اﻟﺮدود‬

‫ﺜﻮن‪.‬‬‫ﺑﺎﻳ‬‫ﻟﻐ ﺔ ﺟﻴﻦ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‬


‫ﻟﻐ ﺔﺳﺎرة اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ ‪C.‬‬
‫ﺑ ﻲ‪.‬‬
‫ﻟﻐ ﺔ إدوارد اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ رو‬
‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬ ‫ﻟﻐ ﺔ ﻓﻴﻞ اﻟﻤﻔﻀﻠ ﺔ ﻫ ﻲ‬

‫ﺒﻚ اﻷﺻﻠ ﻲ(‬


‫ﺗﻴ‬‫ﺘﺮ‬
‫ﺑ‬‫ﺘﻔﺎظ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﻘﻮاﺋﻢ )اﻻﺣ‬
‫ﺑﻴﻦ اﻟﻔﺎﺋﺪة اﻟﺮ‬‫ﺑﻬﺎﻷﻧﻬﺎﺗﺠﻤﻊ‬‫ﻫﺬه ﻓﺌ ﺔ راﺋﻌ ﺔﻳﺠ ﺐ أنﺗﻜﻮن ﻋﲆ دراﻳ ﺔ‬
‫ﺘﻢ‬
‫ﺘ ﻲﺗﻬ‬
‫ﺒﺪأ ﻓ ﻲﺗﺼﻤﻴﻢ ﻧﻤﺎذج ﻟﻤﻮاﻗﻊ اﻟﻌﺎﻟﻢ اﻟﺤﻘﻴﻘ ﻲ اﻟ‬
‫ﺑﻂ أﺟﺰاء ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت(‪ .‬ﻋﻨﺪﻣﺎﺗ‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﻘﻮاﻣﻴ ﺲ )ر‬
‫واﻟﻤﻴﺰة اﻟﺮ‬
‫ﺒﺔ‬
‫ﺘ‬‫ﺘﺎﺟﻪ‪ .‬ﻛﻠﻤﺎﺗﻌﻠﻤ ﺖ اﻟﻤﺰﻳﺪ ﻋﻦ اﻟﻤﻜ‬
‫ﺒﻂ ﻣﺎﺗﺤ‬
‫ﺑﺎﻟﻀ‬ ‫ﺘﻤﻞ أنﺗﺼﺎدف ﻣﻮﻗ ًﻔﺎﻳﻜﻮن ﻓﻴﻪ اﻟﻘﺎﻣﻮس اﻟﻤﺮ‬
‫ﺗ ﺐ ﻫﻮ‬ ‫ﺑﻬﺎ ‪ ،‬ﻓﻤﻦ اﻟﻤﺤ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻮاﻗﻒ اﻟﺸﺎﺋﻌ ﺔ‪.‬‬
‫ﺘ ﻲﺗ ﺴﺎﻋﺪك ﻓ ﻲ اﻟ‬
‫ﺜﻞ ﻫﺬه اﻟ‬
‫ﺑﻌﺪد ﻣﻦ اﻟﻮﺣﺪا ت ﻣ‬‫ﺒﺢ ﻋﲆ دراﻳ ﺔ‬
‫ﺘﺼ‬‫اﻟﻘﻴﺎﺳﻴ ﺔ ‪،‬ﺳ‬

‫ﺘﺎج إﱃ وﺣﺪا ت‬
‫ﺜﺎﻧ ﻲ ‪ ،‬ﺣﻴ ﺚﺳﻨﺤ‬
‫ﺜﻠ ﺔ ﻓ ﻲ اﻟﺠﺰء اﻟ‬
‫ﺘﺮى ﻋﺪدًا ﻣﻦ ﻫﺬه اﻷﻣ‬ ‫ﻻﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎﺗﻨﺰﻳﻞ اﻟﻮﺣﺪا ت اﻟﻨﻤﻄﻴ ﺔ ﻣﻦ ﻣﺼﺎدر ﺧﺎرﺟﻴ ﺔ‪.‬ﺳ‬
‫ﺧﺎرﺟﻴ ﺔ ﻹﻛﻤﺎل ﻛﻞ ﻣﺸﺮوع‪.‬‬

‫اﻟﻔﺼﻮل ‪185‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺜﻴﻞ ﻣ ﺴﺮد‪ .‬أﻋﺪ ﻛ‬
‫ﺘﻤ‬‫ﺳﺎ ﻗﻴﺎﺳ ًﻴﺎ ﻟ‬
‫ﺘﺨﺪﻣ ﺖ ﻗﺎﻣﻮ ً‬
‫ﺘﻤﺮﻳﻦ ‪)6-4‬ﺻﻔﺤ ﺔ ‪108) ،‬ﺣﻴ ﺚ اﺳ‬
‫ﺑﺎﻟ‬‫ﺑﺪأ‬
‫ﺑ ﺔ ‪OrderedDict:‬ا‬
‫ﺘﺎ‬
‫‪9-13.‬إﻋﺎدة ﻛ‬

‫ﺑﻪ إﱃ اﻟﻘﺎﻣﻮس‪.‬‬‫ﺘﺎح واﻟﻘﻴﻤ ﺔ‬


‫ﺗﻴ ﺐ اﻟﺬيﺗﻤ ﺖ إﺿﺎﻓ ﺔ أزواج اﻟﻤﻔ‬
‫ﺘﺮ‬‫ﺑﻖ اﻟ‬
‫ﺗﻴ ﺐ اﻟﻤﺨﺮﺟﺎ تﻳﻄﺎ‬
‫ﺗﺄﻛﺪ ﻣﻦ أنﺗﺮ‬
‫ﺘﺨﺪام ﻓﺌ ﺔ ‪OrderedDict‬و‬
‫ﺑﺎﺳ‬

‫ﺘﻨﻮﻋ ﺔ‪.‬ﺗﺮﺟﻊ اﻟﺪاﻟ ﺔ )( ‪randint‬ﻋﺪدًا‬


‫ﺑﻄﺮق ﻣ‬‫ﺑﺸﻜﻞ ﻋﺸﻮاﺋ ﻲ ﻋﲆ وﻇﺎﺋﻒﺗﻮﻟﺪ أﻋﺪادًا ﻋﺸﻮاﺋﻴ ﺔ‬‫ﺘﻮي اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ‬
‫‪9-14.‬اﻟﻨﺮد‪:‬ﺗﺤ‬

‫ﺑﻴﻦ ‪1‬و ‪6:‬‬‫ﺑﺈرﺟﺎع رﻗﻢ‬‫ﺘﺎﻟ ﻲ‬


‫ﺻﺤﻴﺤًﺎ ﻓ ﻲ اﻟﻨﻄﺎق اﻟﺬيﺗﻮﻓﺮه‪.‬ﻳﻘﻮم اﻟﻜﻮد اﻟ‬

‫ﺘﻴﺮاد اﻟﻌﺸﻮاﺋ ﻲ‬
‫ﻣﻦ راﻧﺪﻧ ﺖ اﻻﺳ‬
‫س )‪= randint (1 ، 6‬‬

‫رﻗﻤﺎ‬
‫ً‬ ‫ﺒﻊ‬
‫ﺗﻄ‬‫ﺘ ﺐ ﻋﻤﻠﻴ ﺔﺗ ﺴﻤﻰ )( ‪roll_die‬‬
‫ﺘﺮاﺿﻴ ﺔ ‪6.‬اﻛ‬
‫ﺘ ﻲ ﻟﻬﺎ ﻗﻴﻤ ﺔ اﻓ‬
‫ﺑﺨﺎﺻﻴ ﺔ واﺣﺪةﺗ ﺴﻤﻰ اﻟﺠﻮاﻧ ﺐ ‪ ،‬واﻟ‬‫اﺻﻨﻊ ﺻﻨ ًﻔﺎﻳﻤﻮ ت‬

‫ﺑﻴﻦ ‪1‬وﻋﺪد ﺟﻮاﻧ ﺐ اﻟﻘﺎﻟ ﺐ‪ .‬اﺻﻨﻊ ﻧﺮدًاﺳﺪاﺳ ﻲ اﻟﺠﻮاﻧ ﺐ وﻟﻔﻪ ‪10‬ﻣﺮا ت‪.‬‬‫ﻋﺸﻮاﺋ ًﻴﺎ‬

‫اﺻﻨﻊ ز ﻫ ﺮًا ﻣﻦ ‪10‬أوﺟﻪ و ‪20‬وﺟﻬً ﺎ‪ .‬ﻟﻔ ﺔ ﻛﻞﻳﻤﻮ ت ‪10‬ﻣﺮا ت‪.‬‬

‫ﺒ ﺔ ‪Python‬اﻟﻘﻴﺎﺳﻴ ﺔ ﻫﻮ ﻣﻮﻗﻊﻳ ﺴﻤﻰ ‪Module of the Week.‬‬


‫ﺘ‬‫ﺘﻜﺸﺎف ﻣﻜ‬
‫ﺘﺎزة ﻻﺳ‬
‫ﺒﻮع ﻓ ﻲ ‪Python:‬أﺣﺪ اﻟﻤﻮارد اﻟﻤﻤ‬
‫‪9-15.‬وﺣﺪة اﻷﺳ‬

‫ﺒ ﺔ ﻟﻚ واﻗﺮأ ﻋﻨﻬﺎ ‪،‬‬


‫ﺑﺎﻟﻨ ﺴ‬‫ﺘﻤﺎم‬
‫ﺜﻴﺮة ﻟﻼ ﻫ‬
‫ﺒﺪو ﻣ‬
‫ﺑﺤ ﺚ ﻋﻦ وﺣﺪةﺗ‬
‫ﺘﻮﻳﺎ ت‪ .‬ا‬
‫‪Python‬اذ ﻫ ﺐ إﱃ ‪http://pymotw.com/‬واﻧﻈﺮ إﱃ ﺟﺪول اﻟﻤﺤ‬

‫ﺛﻴﻖ اﻟﻤﺠﻤﻮﻋﺎ ت واﻟﻮﺣﺪا ت اﻟﻌﺸﻮاﺋﻴ ﺔ ‪.‬‬


‫ﺘﻜﺸﻒﺗﻮ‬
‫أو اﺳ‬

‫ﺘﺼﻤﻴﻢ‬
‫ﻓﺌﺎ ت اﻟ‬
‫ﺜﺮﺗﻌﻘﻴﺪًا‪.‬‬
‫ﺒﺢ أﻛ‬
‫ﺑﺮاﻣﺠﻚﺗﺼ‬‫ﺘﻮﺿﻴﺢ ‪ ،‬ﺧﺎﺻ ﺔ وأن‬
‫ﺑﺎﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ اﻟ‬‫ﺘﻌﻠﻘ ﺔ‬
‫ﺘﺼﻤﻴﻢ اﻟﻤ‬
‫ﺑﻌﺾ ﻣﺸﻜﻼ ت اﻟ‬‫ﺘﺤﻖ‬
‫ﺗﺴ‬

‫ﺒﻴ ﺮًا ‪ ،‬وﻻ‬


‫ﺑﺬﻟﻚ ‪ ،‬اﺟﻌﻞ اﻟﺤﺮف اﻷول ﻣﻦ ﻛﻞ ﻛﻠﻤ ﺔ ﻓ ﻲ اﻻﺳﻢ ﻛ‬‫ﺑ ﺔ أﺳﻤﺎء اﻟﻔﺌﺎ ت ﻓ ﻲ ‪CamelCaps.‬ﻟﻠﻘﻴﺎم‬
‫ﺘﺎ‬
‫ﻳﺠ ﺐ ﻛ‬
‫ﺑﻴﻦ اﻟﻜﻠﻤﺎ ت‪.‬‬‫ﺑﺄﺣﺮف ﺻﻐﻴﺮة ﻣﻊ ﺷﺮﻃ ﺔﺳﻔﻠﻴ ﺔ‬‫ﺜﻴﻼ ت واﻟﻮﺣﺪا ت‬
‫ﺑ ﺔ أﺳﻤﺎء اﻟﻤ‬
‫ﺘﺎ‬
‫ﺘﺨﺪم اﻟﺸﺮﻃ ﺔ اﻟ ﺴﻔﻠﻴ ﺔ‪.‬ﻳﺠ ﺐ ﻛ‬
‫ﺗﺴ‬

‫ﺑﻌﺪﺗﻌﺮﻳﻒ اﻟﻔﺼﻞ‬‫ﺒﺎﺷﺮة‬
‫ﻳﺠ ﺐ أنﻳﻜﻮن ﻟﻜﻞ ﻓﺼﻞﺳﻠ ﺴﻠ ﺔ ‪docstring‬ﻣ‬
‫ﺘﻲ‬
‫ﺘﻨ ﺴﻴﻖ اﻟ‬
‫ﺒﺎع ﻧﻔ ﺲ اﺻﻄﻼﺣﺎ ت اﻟ‬
‫ﺗ‬‫‪nition.‬ﻳﺠ ﺐ أنﻳﻜﻮن ‪docstring‬وﺻ ًﻔﺎ ﻣﻮﺟ ًﺰا ﻟﻤﺎﻳﻔﻌﻠﻪ اﻟﻔﺼﻞ ‪ ،‬وﻳﺠ ﺐ ﻋﻠﻴﻚ ا‬
‫ﺘﻨﺪا تﺗﺼﻒ اﻟﻐﺮض‬ ‫ﺘﻮي ﻛﻞ وﺣﺪة أ ً‬
‫ﻳﻀﺎ ﻋﲆﺳﻠ ﺴﻠ ﺔ ﻣ ﺴ‬ ‫ﺘﻨﺪا ت ﻓ ﻲ اﻟﻮﻇﺎﺋﻒ‪.‬ﻳﺠ ﺐ أنﺗﺤ‬
‫ﺑ ﺔﺳﻼﺳﻞ اﻟﻤ ﺴ‬
‫ﺘﺎ‬
‫ﺘﻬﺎ ﻟﻜ‬
‫ﺘﺨﺪﻣ‬
‫اﺳ‬
‫ﺘﺨﺪام اﻟﻔﺌﺎ ت ﻓ ﻲ اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ‪.‬‬
‫ﻣﻦ اﺳ‬

‫ﺑﺸﻜﻞ ﻣﻔﺮط‪ .‬داﺧﻞ اﻟﻔﺼﻞﻳﻤﻜﻨﻚ‬‫ﺘﺨﺪﻣﻬﺎ‬


‫ﺒﺮﻣﺠﻴ ﺔ ‪ ،‬ﻟﻜﻦ ﻻﺗ ﺴ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻨﻈﻴﻢ اﻟ‬
‫ﺘﺨﺪام اﻷﺳﻄﺮ اﻟﻔﺎرﻏ ﺔ ﻟ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﺨﺪامﺳﻄﺮﻳﻦ ﻓﺎرﻏﻴﻦ ﻟﻔﺼﻞ اﻟﺼﻔﻮف‪.‬‬
‫ﺑﻴﻦ اﻟﻄﺮق ‪ ،‬وداﺧﻞ اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔﻳﻤﻜﻨﻚ اﺳ‬‫ﺘﺨﺪامﺳﻄﺮ ﻓﺎرغ واﺣﺪ‬
‫اﺳ‬

‫ﺘﻴﺮاد‬
‫ﺑﻴﺎن اﻻﺳ‬‫ﺘﻬﺎ ‪ ،‬ﻓﻀﻊ‬
‫ﺑ‬‫ﺘﺎ‬
‫ﺑﻜ‬‫ﺒ ﺔ اﻟﻘﻴﺎﺳﻴ ﺔ ووﺣﺪة ﻧﻤﻄﻴ ﺔ ﻗﻤ ﺖ‬
‫ﺘ‬‫ﺘﻴﺮاد وﺣﺪة ﻧﻤﻄﻴ ﺔ ﻣﻦ اﻟﻤﻜ‬
‫ﺑﺤﺎﺟ ﺔ إﱃ اﺳ‬‫إذا ﻛﻨ ﺖ‬
‫ﺒ ﺔ اﻟﻘﻴﺎﺳﻴ ﺔ‬
‫ﺘ‬‫ﻟﻮﺣﺪة اﻟﻤﻜ‬

‫‪186‬اﻟﻔﺼﻞ ‪9‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻌﺪدة ‪،‬ﺗ ﺴﻬﻞ ﻫﺬه‬


‫ﺘﻴﺮاد اﻟﻤ‬
‫ﺒﺎرا ت اﻻﺳ‬
‫ﺒﺮاﻣﺞ ذا ت ﻋ‬
‫ﺘﻬﺎ‪ .‬ﻓ ﻲ اﻟ‬
‫ﺒ‬‫ﺘ‬‫ﺘ ﻲﻛ‬
‫ﺘﻴﺮاد ﻟﻠﻮﺣﺪة اﻟ‬
‫ﺑﻴﺎن اﻻﺳ‬ ‫ً‬
‫ﻓﺎرﻏﺎ و‬ ‫ﺛﻢ أﺿﻒﺳﻄ ًﺮا‬‫أوﻻً‪.‬‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺘﺨﺪﻣ ﺔ ﻓ ﻲ اﻟ‬
‫ﺘﻠﻔ ﺔ اﻟﻤ ﺴ‬
‫ﺗﻔﺎﻗﻴ ﺔ ﻣﻌﺮﻓ ﺔ ﻣﺼﺪر اﻟﻮﺣﺪا ت اﻟﻤﺨ‬
‫اﻻ‬

‫ﻣﻠﺨﺺ‬
‫ﺑﻚ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔﺗﺨﺰﻳﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻓ ﻲ اﻟﻔﺼﻞ‬‫ﺑ ﺔ اﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﺎ‬
‫ﺗﻌﻠﻤ ﺖ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛﻴﻔﻴ ﺔ ﻛ‬
‫ﺑ ﺔ أﺳﺎﻟﻴ ﺐ )( __‬
‫ﺘﺎ‬
‫ﺘﺎﺟﻮن إﻟﻴﻪ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛ‬
‫ﺘ ﻲﺗﻌﻄ ﻲ ﻓﺼﻮﻟﻚ اﻟ ﺴﻠﻮك اﻟﺬيﻳﺤ‬
‫ﺑ ﺔ اﻟﻄﺮق اﻟ‬
‫ﺘﺎ‬
‫ﺘﺨﺪام اﻟ ﺴﻤﺎ ت وﻛﻴﻔﻴ ﺔ ﻛ‬
‫ﺑﺎﺳ‬
‫ﺒﺎﺷﺮ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﺜﻴﻞ‬
‫ﺒﻂ‪ .‬ﻟﻘﺪ رأﻳ ﺖ ﻛﻴﻔﻴ ﺔﺗﻌﺪﻳﻞﺳﻤﺎ ت ﻣ‬
‫ﺑﺎﻟﻀ‬‫ﺘ ﻲﺗﺮﻳﺪ ﻫﺎ‬
‫ﺑﺎﻟ ﺴﻤﺎ ت اﻟ‬‫ﺗﻚ‬
‫ﺜﻴﻼ ت ﻣﻦ ﻓﺌﺎ‬
‫ﺘ ﻲﺗﻨﺸ ﺊ ﻣ‬
‫‪__init‬اﻟ‬
‫ﺘﺨﺪام‬
‫ﺗﻌﻠﻤ ﺖ اﺳ‬
‫ﺒﻌﺾ ‪ ،‬و‬
‫ﺒﻌﻀﻬﺎ اﻟ‬
‫ﺑ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺒ ﺴﻂ إﻧﺸﺎء اﻟﻔﺌﺎ ت اﻟﻤﺮ‬
‫ﺛ ﺔﻳﻤﻜﻦ أنﺗ‬
‫وﻣﻦ ﺧﻼل اﻟﻄﺮق‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ أن اﻟﻮرا‬
‫ﺑ ﺴﺎﻃ ﺔ ﻛﻞ ﻓﺌ ﺔ‪.‬‬‫ﺜﻴﻼ ت ﻓﺌ ﺔ واﺣﺪة ﻛ ﺴﻤﺎ ت ﻓ ﻲ ﻓﺌ ﺔ أﺧﺮى ﻟﻠﺤﻔﺎظ ﻋﲆ‬
‫ﻣ‬

‫ﺘﺎﺟﻬﺎ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﻴﺮاد اﻟﻔﺌﺎ ت اﻟ‬
‫ﻟﻘﺪ رأﻳ ﺖ ﻛﻴﻔﻴ ﺔﺗﺨﺰﻳﻦ اﻟﻔﺼﻮل ﻓ ﻲ وﺣﺪا ت واﺳ‬
‫ﺒ ﺔ ‪Python‬‬ ‫ﺘ‬‫ﺘﻌﺮف ﻋﲆ ﻣﻜ‬
‫ﺑﺪأ ت ﻓ ﻲ اﻟ‬ ‫ﺘﺨﺪاﻣﻬﺎﻳﻤﻜﻦ أنﻳﺤﺎﻓﻆ ﻋﲆﺗﻨﻈﻴﻢ ﻣﺸﺎرﻳﻌﻚ‪ .‬ﻟﻘﺪ‬ ‫ﺘﻢ اﺳ‬‫ﻓ ﻲ اﻟﻤﻠﻔﺎ ت ﺣﻴ ﺚﺳﻴ‬
‫ﺘﻤﺪ ﻋﲆ ﻓﺌ ﺔ ‪OrderedDict‬ﻣﻦ وﺣﺪة اﻟﻤﺠﻤﻮﻋﺎ ت ‪ .‬أﺧﻴ ﺮًا ‪،‬ﺗﻌﻠﻤ ﺖﺗﺼﻤﻴﻢ ﻓﺼﻮﻟﻚ اﻟﺪراﺳﻴ ﺔ‬ ‫اﻟﻘﻴﺎﺳﻴ ﺔ ‪ ،‬ورأﻳ ﺖ ﻣ ً‬
‫ﺜﺎﻻﻳﻌ‬
‫ﺜﻮن‪.‬‬
‫ﺑﺎﻳ‬‫ﺘﺨﺪام اﺻﻄﻼﺣﺎ ت‬
‫ﺑﺎﺳ‬

‫ﺒﺮاﻣﺞ واﻟﻌﻤﻞ اﻟﺬي‬


‫ﺗﻪ ﻓ ﻲ أﺣﺪ اﻟ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﺣﻔﻆ اﻟﻌﻤﻞ اﻟﺬي أﻧﺠﺰ‬
‫ﺘﻰﺗ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ اﻟﻔﺼﻞ ‪10‬اﻟﻌﻤﻞ ﻣﻊ اﻟﻤﻠﻔﺎ ت ﺣ‬
‫ﺘ‬‫ﺳ‬
‫ﺗﻚ‬
‫ﺜﻨﺎءا ت ‪ ،‬و ﻫ ﻲ ﻓﺌ ﺔ ﺧﺎﺻ ﺔ ﻣﻦ ﻟﻐ ﺔ ‪Python‬ﻣﺼﻤﻤ ﺔ ﻟﻤ ﺴﺎﻋﺪ‬
‫ﺘ‬ ‫ﺘﻌﺮف أ ً‬
‫ﻳﻀﺎ ﻋﲆ اﻻﺳ‬ ‫ﺘ‬‫ﺑﻪ‪.‬ﺳ‬‫ﺑﺎﻟﻘﻴﺎم‬‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺳﻤﺤ ﺖ ﻟﻠﻤ ﺴ‬
‫ﻋﲆ اﻟﺮد ﻋﲆ اﻷﺧﻄﺎء ﻋﻨﺪ ﻇﻬﻮر ﻫﺎ‪.‬‬

‫اﻟﻔﺼﻮل ‪187‬‬
Machine Translated by Google
‫‪Machine Translated by Google‬‬

‫‪10‬‬
‫أﻳﻮﻧﺎ ت ﻓﺎي ﻟﻴﻪ دي إي إﻛ ﺲﺳ ﻲ إيﺗ ﻲ‬

‫ﺑﺮاﻣﺞ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺘﺎﺟﻬﺎ ﻟﻜ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺗﻘﻨ ﺖ اﻟﻤﻬﺎرا ت اﻷﺳﺎﺳﻴ ﺔ اﻟ‬
‫ﺑﻌﺪ أن أ‬‫اﻵن‬
‫ﺜﺮ‬
‫ﺑﺮاﻣﺠﻚ أﻛ‬‫ﺘﻔﻜﻴﺮ ﻓ ﻲ ﺟﻌﻞ‬
‫ﺘﺨﺪام ‪ ،‬ﺣﺎن اﻟﻮﻗ ﺖ ﻟﻠ‬
‫ﻣﻨﻈﻤ ﺔﺳﻬﻠ ﺔ اﻻﺳ‬
‫ﺘﻌﻠﻢ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ اﻟﻌﻤﻞ ﻣﻊ اﻟﻤﻠﻔﺎ ت‬
‫ﺘ‬‫ﺘﺨﺪام‪.‬ﺳ‬
‫ﺑﻠ ﺔ ﻟﻼﺳ‬
‫ﺻﻠ ﺔ وﻗﺎ‬
‫ﺑ ﺴﺮﻋ ﺔ‪.‬‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺜﻴﺮ ﻣﻦ اﻟ‬
‫ﺑﺮاﻣﺠﻚ ﻣﻦﺗﺤﻠﻴﻞ اﻟﻜ‬‫ﺘﻤﻜﻦ‬
‫ﺘﻰﺗ‬
‫ﺣ‬

‫ﺜﻨﺎءا ت ‪،‬‬
‫ﺘ‬‫ﺘﻌﺮف ﻋﲆ اﻻﺳ‬
‫ﺘ‬‫ﺘﻮﻗﻌ ﺔ‪.‬ﺳ‬
‫ﺑﺮاﻣﺠﻚ ﻋﻨﺪﻣﺎﺗﻮاﺟﻪ ﻣﻮاﻗﻒ ﻏﻴﺮ ﻣ‬‫ﺘﻌﻄﻞ‬
‫ﺘﻰ ﻻﺗ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻷﺧﻄﺎء ﺣ‬
‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺘ‬‫ﺳ‬
‫ﺘﻌﺮف أ ً‬
‫ﻳﻀﺎ ﻋﲆ وﺣﺪة ‪json ،‬‬ ‫ﺘ‬‫ﺒﺮﻧﺎﻣﺞ‪.‬ﺳ‬
‫ﺛﻨﺎءﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘ ﻲﺗﻈﻬﺮ أ‬
‫و ﻫ ﻲ ﻛﺎﺋﻨﺎ ت ﺧﺎﺻ ﺔﺗﻨﺸﺌﻬﺎ ‪Python‬ﻹدارة اﻷﺧﻄﺎء اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ ﻋﻦ اﻟﻌﻤﻞ‪.‬‬
‫ﺘﻰ ﻻﺗﻀﻴﻊ ﻋﻨﺪﺗﻮﻗﻒ اﻟ‬
‫ﺘﺨﺪم ﺣ‬
‫ﺑﻴﺎﻧﺎ ت اﻟﻤ ﺴ‬‫ﺘﻴﺢ ﻟﻚ ﺣﻔﻆ‬
‫ﺘ ﻲﺗ‬
‫واﻟ‬

‫ﺘﺨﺪﻣﻮن‬
‫ﺘﻤﻜﻦ اﻟﻤ ﺴ‬
‫ﺒﺮاﻣﺠﻚ‪.‬ﺳﻴ‬
‫ﺘﺨﺪام اﻷﺷﺨﺎص ﻟ‬
‫ﺒﻴﺎﻧﺎ ت إﱃﺗ ﺴﻬﻴﻞ اﺳ‬
‫ﺳﻴﺆديﺗﻌﻠﻢ اﻟﻌﻤﻞ ﻣﻊ اﻟﻤﻠﻔﺎ ت وﺣﻔﻆ اﻟ‬
‫ﺛﻢ‬‫ﺒﻌﺾ اﻷﻋﻤﺎل ‪،‬‬
‫ﺑ‬‫ﺑﺮﻧﺎﻣﺠﻚ ‪ ،‬واﻟﻘﻴﺎم‬‫ﺘﻢ إدﺧﺎﻟﻬﺎ‪.‬ﻳﻤﻜﻦ ﻟﻸﺷﺨﺎصﺗﺸﻐﻴﻞ‬
‫ﺘﻰﻳ‬
‫ﺘ ﻲﻳﺠ ﺐ إدﺧﺎﻟﻬﺎ وﻣ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﻴﺎر اﻟ‬
‫ﻣﻦ اﺧ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻮاﻗﻒ‬
‫ﺜﻨﺎءا ت ﻋﲆ اﻟ‬
‫ﺘ‬ ‫ﺑﻌ ﺔ ﻣﻦ ﺣﻴ ﺚﺗﻮﻗﻔﻮا ﻻﺣ ًﻘﺎ‪.‬ﺳﻴ ﺴﺎﻋﺪكﺗﻌﻠﻢ اﻟ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺳ‬ ‫ﺘﺎ‬
‫ﺒﺮﻧﺎﻣﺞ واﻟﻤ‬
‫إﻏﻼق اﻟ‬
‫ﺑﺮاﻣﺠﻚ‪ .‬ﻫﺬاﺳﻴﺠﻌﻞ‬‫ﺒ ﺐ ﻓ ﻲﺗﻌﻄﻞ‬
‫ﺘﺴ‬‫ﺘ ﻲﻳﻤﻜﻦ أنﺗ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺸﻜﻼ ت اﻷﺧﺮى اﻟ‬
‫ﺘ ﻲ ﻻﺗﻮﺟﺪ ﻓﻴﻬﺎ اﻟﻤﻠﻔﺎ ت واﻟ‬
‫اﻟ‬
‫ﺑﻴﺎﻧﺎ تﺳﻴﺌ ﺔ ‪،‬ﺳﻮاء‬‫ﺜﺮ ﻗﻮة ﻋﻨﺪﻣﺎﺗﻮاﺟﻪ‬
‫ﺑﺮاﻣﺠﻚ أﻛ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺠﻌﻞ‬
‫ﺘﻌﻠﻤﻬﺎ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ‪،‬ﺳ‬
‫ﺘ‬‫ﺘ ﻲﺳ‬
‫ﺑﺮاﻣﺠﻚ‪ .‬ﻣﻦ ﺧﻼل اﻟﻤﻬﺎرا ت اﻟ‬‫ﺜ ﺔ ﻟﻜ ﺴﺮ‬
‫ﺒﻴ‬‫ﺑﺮﻳﺌ ﺔ أو ﻣﻦ ﻣﺤﺎوﻻ ت ﺧ‬‫ﺗ ﻲ ﻣﻦ أﺧﻄﺎء‬
‫ﺗﺄ‬
‫ﺘﻘﺮا ًرا‪.‬‬
‫ﺘﺨﺪام واﺳ‬
‫ﺑﻠﻴ ﺔ ﻟﻼﺳ‬
‫ﺒﻴﻖ وﻗﺎ‬
‫ﺘﻄ‬‫ﺑﻠﻴ ﺔ ﻟﻠ‬
‫ﺜﺮ ﻗﺎ‬
‫ﺘﺮﻓﻴﻦ أﻛ‬
‫اﻟﻤﺤ‬

‫اﻟﻘﺮاءة ﻣﻦ ﻣﻠﻒ‬
‫ﺑﻴﺎﻧﺎ ت اﻟﻤﺮور‬
‫ﺑﻴﺎﻧﺎ ت اﻟﻄﻘ ﺲ و‬‫ﺘﻮي اﻟﻤﻠﻔﺎ ت اﻟﻨﺼﻴ ﺔ ﻋﲆ‬
‫ﺒﻴﺎﻧﺎ ت ﻓ ﻲ ﻣﻠﻔﺎ ت ﻧﺼﻴ ﺔ‪.‬ﻳﻤﻜﻦ أنﺗﺤ‬
‫ﺘﻮﻓﺮ ﻛﻤﻴ ﺔ ﻻﺗﺼﺪق ﻣﻦ اﻟ‬
‫ﺗ‬

‫ﺒﻴﺎﻧﺎ ت ‪،‬‬
‫ﺒﻴﻘﺎ تﺗﺤﻠﻴﻞ اﻟ‬
‫ﺑﺸﻜﻞ ﺧﺎص ﻓ ﻲﺗﻄ‬‫ﺑﻴ ﺔ واﻟﻤﺰﻳﺪ‪ .‬اﻟﻘﺮاءة ﻣﻦ ﻣﻠﻒ ﻣﻔﻴﺪة‬
‫ﺘﺼﺎدﻳ ﺔ واﻷﻋﻤﺎل اﻷد‬
‫ﺘﻤﺎﻋﻴ ﺔ واﻻﻗ‬
‫ﺒﻴﺎﻧﺎ ت اﻻﺟ‬
‫واﻟ‬
‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚ ﻛ‬
‫ﺒﻴﻞ اﻟﻤ‬ ‫ﺒﻖ أ ً‬
‫ﻳﻀﺎ ﻋﲆ أي ﻣﻮﻗﻒﺗﺮﻳﺪ ﻓﻴﻪﺗﻌﺪﻳﻞ أوﺗﻌﺪﻳﻞ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ ﻣﻠﻒ‪ .‬ﻋﲆﺳ‬ ‫وﻟﻜﻨﻬﺎﺗﻨﻄ‬
‫ﺑﻌﺮﺿﻪ‪.‬‬‫ﺘﺼﻔﺢ‬
‫ﺘﻨ ﺴﻴﻖﻳ ﺴﻤﺢ ﻟﻠﻤ‬
‫ﺑ‬‫ﺑ ﺔ اﻟﻤﻠﻒ‬
‫ﺘﺎ‬
‫ﺘﻮﻳﺎ ت ﻣﻠﻒ ﻧﺼ ﻲ وﻳﻌﻴﺪ ﻛ‬
‫ﺑﺮﻧﺎﻣﺞﻳﻘﺮأ ﻣﺤ‬

‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻣﻠﻒ ﻧﺼ ﻲ ‪ ،‬ﻓﺈن اﻟﺨﻄﻮة اﻷوﱃ ﻫ ﻲ ﻗﺮاءة اﻟﻤﻠﻒ ﻓ ﻲ اﻟﺬاﻛﺮة‪.‬ﻳﻤﻜﻨﻚ‬
‫ﻋﻨﺪﻣﺎﺗﺮﻳﺪ اﻟ‬
‫ﺑﺎﻟﻜﺎﻣﻞ ‪ ،‬أوﻳﻤﻜﻨﻚ اﻟﻌﻤﻞ ﻣﻦ ﺧﻼل اﻟﻤﻠﻒﺳﻄ ﺮًا واﺣﺪًا ﻓ ﻲ ﻛﻞ ﻣﺮة‪.‬‬‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ‬
‫ﻗﺮاءة ﻣﺤ‬

‫ﻗﺮاءة ﻣﻠﻒ ﻛﺎﻣﻞ‬


‫ﺘﻰ ‪30‬ﻣﻨﺰﻻ ً ﻋﺸﺮﻳًﺎ ﻣﻊ ‪10‬ﻣﻨﺎزل ﻋﺸﺮﻳ ﺔ‬
‫ﺘﻮي ﻋﲆ ‪pi‬ﺣ‬
‫ﺑﻤﻠﻒﻳﺤ‬‫ﺒﺪأ‬
‫ﺑﻀﻌ ﺔ أﺳﻄﺮ ﻣﻦ اﻟﻨﺺ‪ .‬ﻟﻨ‬‫ﺑﻪ‬‫ﺘﺎج إﱃ ﻣﻠﻒ‬
‫ﺒﺪء ‪ ،‬ﻧﺤ‬
‫ﻟﻠ‬
‫ﻓ ﻲ ﻛﻞﺳﻄﺮ‪:‬‬

‫‪pi_digits.txt‬‬ ‫‪3.1415926535 8979323846 2643383279‬‬

‫ﺑﻨﻔ ﺴﻚ ‪،‬ﻳﻤﻜﻨﻚ إدﺧﺎل ﻫﺬه اﻟ ﺴﻄﻮر ﻓ ﻲ ﻣﺤﺮر وﺣﻔﻆ اﻟﻤﻠﻒ ﻛـ ‪pi_digits.txt ،‬أوﻳﻤﻜﻨﻚﺗﻨﺰﻳﻞ‬‫ﺘﺎﻟﻴ ﺔ‬
‫ﺜﻠ ﺔ اﻟ‬
‫ﺑ ﺔ اﻷﻣ‬
‫ﺘﺠﺮ‬
‫ﻟ‬
‫ﺘﺎ ب ﻣﻦ ﺧﻼل ‪https://www.nostarch.com/pythoncrashcourse/.‬اﺣﻔﻆ اﻟﻤﻠﻒ ﻓ ﻲ ﻧﻔ ﺲ اﻟﺪﻟﻴﻞ‬
‫اﻟﻤﻠﻒ ﻣﻦ ﻣﻮارد اﻟﻜ‬
‫ﺑﺮاﻣﺞ ﻫﺬا اﻟﻔﺼﻞ‪.‬‬‫ﺘﺨﺰن‬
‫ﺣﻴ ﺚﺳ‬

‫ﺗﻪ‬
‫ﺘﻮﻳﺎ‬
‫ﺒﻊ ﻣﺤ‬
‫ﺘﺢ ﻫﺬا اﻟﻤﻠﻒ وﻳﻘﺮأه وﻳﻄ‬
‫ﺑﺮﻧﺎﻣﺞﻳﻔ‬ ‫ﻫﺬا‬
‫ﻣﻦ اﻟﻤﻠﻒ إﱃ اﻟﺸﺎﺷ ﺔ‪:‬‬

‫‪file_reader.py‬‬ ‫ﺘﺢ )'‪('pi_digits.txt‬ﻛـ ‪file_object:‬‬‫ﻣﻊ ﻓ‬


‫ﺘﻮﻳﺎ ت )( ‪= file_object.read‬‬ ‫اﻟﻤﺤ‬
‫ﺘﻮﻳﺎ ت(‬
‫ﺒﺎﻋ ﺔ )ﻣﺤ‬‫ﻃ‬

‫ﺘﻰ ﻟﻮ ﻛﺎن‬
‫ﺑﺄي ﻋﻤﻞ ﻣﻊ ﻣﻠﻒ ‪ ،‬ﺣ‬‫ﺑﺎﻟﻨﻈﺮ إﱃ اﻟﺪاﻟ ﺔ ‪open () .‬ﻟﻠﻘﻴﺎم‬‫ﺒﺪأ‬
‫ﺜﻴﺮﻳﺤﺪ ث‪ .‬ﻟﻨ‬
‫ﺑﻪ اﻟﻜ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫اﻟ ﺴﻄﺮ اﻷول ﻣﻦ ﻫﺬا اﻟ‬
‫ﺘﺎج اﻟﺪاﻟ ﺔ )( ‪open‬إﱃ وﺳﻴﻄ ﺔ واﺣﺪة‪ :‬اﺳﻢ اﻟﻤﻠﻒ اﻟﺬي‬ ‫ﺘﺎج أوﻻ ً إﱃ ﻓ‬
‫ﺘﺢ اﻟﻤﻠﻒ ﻟﻠﻮﺻﻮل إﻟﻴﻪ‪.‬ﺗﺤ‬ ‫ﺗﻪ ‪،‬ﺗﺤ‬
‫ﺘﻮﻳﺎ‬
‫ﺒﺎﻋ ﺔ ﻣﺤ‬
‫ﻣﺠﺮد ﻃ‬
‫ﺜﺎل ‪،‬‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﺠﺎريﺗﻨﻔﻴﺬه ﺣﺎﻟ ًﻴﺎ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟ‬
‫ﺒﺤ ﺚ ‪Python‬ﻋﻦ ﻫﺬا اﻟﻤﻠﻒ ﻓ ﻲ اﻟﺪﻟﻴﻞ ﺣﻴ ﺚﻳ‬
‫ﺘﺤﻪ‪.‬ﺗ‬
‫ﺗﺮﻳﺪ ﻓ‬
‫ﺘﻢﺗﺨﺰﻳﻦ ‪file_reader.py .‬‬
‫ﺒﺤ ﺚ ‪Python‬ﻋﻦ ‪pi_digits.txt‬ﻓ ﻲ اﻟﺪﻟﻴﻞ ﺣﻴ ﺚﻳ‬
‫ﺘﺸﻐﻴﻞ ﺣﺎﻟ ًﻴﺎ ‪ ،‬ﻟﺬاﺗ‬
‫‪file_reader.py‬ﻗﻴﺪ اﻟ‬
‫ﺘﺢ )(‬
‫اﻟﻔ‬

‫ﺘﺢ )"‪("pi_digits.txt‬‬
‫ﺜﻞ اﻟﻤﻠﻒ‪ .‬ﻫﻨﺎ ‪ ،‬اﻓ‬
‫ﺑﺈرﺟﺎع ﻛﺎﺋﻦﻳﻤ‬‫ﺗﻘﻮم اﻟﺪاﻟ ﺔ‬
‫ﺜﻞ ‪pi_digits.txt.‬ﻳﺨﺰن ‪ Python‬ﻫﺬا اﻟﻜﺎﺋﻦ ﻓ ﻲ ‪file_object ،‬واﻟﺬيﺳﻨﻌﻤﻞ ﻣﻌﻪ ﻻﺣ ًﻘﺎ ﻓ ﻲ اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬ ‫إرﺟﺎع ﻛﺎﺋﻦﻳﻤ‬

‫ﺑﻤﺠﺮد ﻋﺪم اﻟﺤﺎﺟ ﺔ إﱃ اﻟﻮﺻﻮل إﻟﻴﻪ‪.‬‬‫اﻟﻜﻠﻤ ﺔ اﻷﺳﺎﺳﻴ ﺔ ﻣﻊ إﻏﻼق اﻟﻤﻠﻒ‬


‫ﺒﺮﻧﺎﻣﺞ وﻟﻜﻦ ﻟﻴ ﺲ ﻣﻐﻠ ًﻘﺎ ‪().‬ﻳﻤﻜﻨﻚ ﻓ‬
‫ﺘﺢ ﻣﻠﻔﺎ ت‬ ‫ﻻﺣﻆ ﻛﻴﻒ ﻧ ﺴﻤ ﻲ )( ‪open‬ﻓ ﻲ ﻫﺬا اﻟ‬

‫‪190‬اﻟﻔﺼﻞ اﻟﻌﺎﺷﺮ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎرة ‪close () ،‬ﻓﻘﺪ‬


‫ﺑﺮﻧﺎﻣﺠﻚﻳﻤﻨﻊﺗﻨﻔﻴﺬ ﻋ‬‫ﺘﺪﻋﺎء )( ‪open‬و ‪close () ،‬وﻟﻜﻦ إذا ﻛﺎن ﺧﻄﺄ ﻓ ﻲ‬
‫وأﻏﻠﻖ اﻟﻤﻠﻒ ﻋﻦ ﻃﺮﻳﻖ اﺳ‬
‫ﺒ ﺐ ﻓ ﻲ ﻓﻘﺪ‬
‫ﺘﺴ‬‫ﺑﺸﻜﻞ ﻏﻴﺮ ﺻﺤﻴﺢﻳﻤﻜﻦ أنﺗ‬ ‫ﺘﻢ إﻏﻼق اﻟﻤﻠﻒ ﻣﻄﻠ ًﻘﺎ‪ .‬ﻗﺪﻳ‬
‫ﺒﺪو ﻫﺬاﺗﺎﻓﻬً ﺎ ‪ ،‬وﻟﻜﻦ اﻟﻤﻠﻔﺎ ت اﻟﻤﻐﻠﻘ ﺔ‬ ‫ﻻﻳ‬
‫ﺘﺠﺪ ﻧﻔ ﺴﻚﺗﺤﺎول اﻟﻌﻤﻞ ﻣﻊ ﻣﻠﻒ ﻣﻐﻠﻖ‬
‫ﺑﺮﻧﺎﻣﺠﻚ ‪ ،‬ﻓ ﺴ‬‫ﺒﻜﺮ ﺟﺪًا ﻣﻦ‬
‫ﺑـ )( ‪close‬ﻓ ﻲ وﻗ ﺖ ﻣ‬‫ﺗﺼﻠ ﺖ‬
‫ﺒﻴﺎﻧﺎ ت أوﺗﻠﻔﻬﺎ‪ .‬وإذا ا‬
‫اﻟ‬
‫ﺘﻰﻳﺠ ﺐ إﻏﻼق اﻟﻤﻠﻒ‬
‫ﺋﻤﺎ ﻣﻌﺮﻓ ﺔ ﻣ‬
‫)ﻣﻠﻒ ﻻﻳﻤﻜﻨﻚ اﻟﻮﺻﻮل إﻟﻴﻪ( ‪ ،‬ﻣﻤﺎﻳﺆدي إﱃ اﻟﻤﺰﻳﺪ ﻣﻦ اﻷﺧﻄﺎء‪ .‬ﻟﻴ ﺲ ﻣﻦ اﻟ ﺴﻬﻞ دا ً‬
‫ﺘﺢ اﻟﻤﻠﻒ واﻟﻌﻤﻞ‬
‫ﺘﺸﻒ ‪Python‬ذﻟﻚ ﻣﻦ أﺟﻠﻚ‪ .‬ﻛﻞ ﻣﺎ ﻋﻠﻴﻚ ﻓﻌﻠﻪ ﻫﻮ ﻓ‬
‫ﺘﻜ‬‫ﺒﻂ ‪ ،‬وﻟﻜﻦ ﻣﻊ اﻟﻬﻴﻜﻞ اﻟﻤﻮﺿﺢ ﻫﻨﺎ ‪،‬ﺳ‬
‫ﺑﺎﻟﻀ‬
‫ﺛ ًﻘﺎ ﻣﻦ أن ‪Python‬ﺳ‬
‫ﺘﻐﻠﻘﻪﺗﻠﻘﺎﺋ ًﻴﺎ ﻋﻨﺪﻣﺎﻳﺤﻴﻦ اﻟﻮﻗ ﺖ‪.‬‬ ‫ﺒ ﺔ ‪ ،‬وا‬
‫ﻣﻌﻪ ﺣ ﺴ ﺐ اﻟﺮﻏ‬

‫ﺘﺨﺪم اﻷﻣﺮ )( ‪read‬‬


‫ﺜﻞ ‪pi_digits.txt ،‬ﻧ ﺴ‬
‫ﺑﻤﺠﺮد أنﻳﻜﻮن ﻟﺪﻳﻨﺎ ﻛﺎﺋﻦ ﻣﻠﻒﻳﻤ‬
‫ﺘﻮﻳﺎ ت‪ .‬ﻋﻨﺪﻣﺎ‬
‫ﺗﺨﺰﻳﻨﻬﺎ ﻛ ﺴﻠ ﺴﻠ ﺔ ﻃﻮﻳﻠ ﺔ واﺣﺪة ﻓ ﻲ اﻟﻤﺤ‬
‫ﺑﺎﻟﻜﺎﻣﻞ و‬‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ‬
‫ﺑﺮﻧﺎﻣﺠﻨﺎ ﻟﻘﺮاءة ﻣﺤ‬‫ﺜﺎﻧ ﻲ ﻣﻦ‬
‫ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟ‬
‫ﺑﺄﻛﻤﻠﻪ‪:‬‬‫ﺘﺮﺟﻊ اﻟﻤﻠﻒ اﻟﻨﺼ ﻲ‬
‫ﺘﻮﻳﺎ ت ‪ ،‬ﻧ ﺴ‬
‫ﺒﻊ ﻗﻴﻤ ﺔ اﻟﻤﺤ‬
‫ﻧﻄ‬

‫‪2643383279‬‬
‫‪8979323846‬‬
‫‪3.1415926535‬‬

‫ﺑﻴﻦ ﻫﺬا اﻹﺧﺮاج واﻟﻤﻠﻒ اﻷﺻﻠ ﻲ ﻫﻮﺳﻄﺮ ﻓﺎرغ إﺿﺎﻓ ﻲ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻹﺧﺮاج‪.‬ﻳﻈﻬﺮ اﻟ ﺴﻄﺮ اﻟﻔﺎرغﻷن‬‫ﺘﻼف اﻟﻮﺣﻴﺪ‬
‫اﻻﺧ‬
‫ﺗﺮﺟﻊﺳﻠ ﺴﻠ ﺔ ﻓﺎرﻏ ﺔ ﻋﻨﺪﻣﺎﺗﺼﻞ إﱃ ﻧﻬﺎﻳ ﺔ اﻟﻤﻠﻒ ؛ﺗﻈﻬﺮ ﻫﺬه اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﻔﺎرﻏ ﺔ ﻛ ﺴﻄﺮ ﻓﺎرغ‪ .‬إذا ﻛﻨ ﺖﺗﺮﻳﺪ إزاﻟ ﺔ‬
‫)( ‪read‬‬
‫ﺒﺎﻋ ﺔ ‪:‬‬
‫ﺑﻴﺎن اﻟﻄ‬‫ﺘﺨﺪام )( ‪rstrip‬ﻓ ﻲ‬
‫اﻟ ﺴﻄﺮ اﻟﻔﺎرغ اﻹﺿﺎﻓ ﻲ ‪ ،‬ﻓﻴﻤﻜﻨﻚ اﺳ‬

‫ﺘﺢ )'‪('pi_digits.txt‬ﻛـ ‪file_object:‬‬‫ﻣﻊ ﻓ‬


‫ﺘﻮﻳﺎ ت )( ‪= file_object.read‬‬ ‫اﻟﻤﺤ‬
‫ﺘﻮﻳﺎ ت‪()) pirtsr.‬‬
‫ﺒﺎﻋ ﺔ )ﻣﺤ‬‫ﻃ‬

‫ﺑﻴﻀﺎء ﻣﻦ اﻟﺠﺎﻧ ﺐ اﻷﻳﻤﻦ ﻣﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ‪.‬‬‫ﺗﺰﻳﻞ ‪ ،‬أوﺗﻘﻄﻊ ‪ ،‬أي أﺣﺮف ﻣ ﺴﺎﻓﺎ ت‬


‫ﺗﺬﻛﺮ أن ﻃﺮﻳﻘ ﺔ )( ‪Python rstrip‬‬
‫ﺗﻤﺎﻣﺎ‪:‬‬
‫ً‬ ‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ اﻷﺻﻠ ﻲ‬
‫ﺑﻖ ﻣﺤ‬
‫ﺗﺞﻳﻄﺎ‬
‫اﻵن اﻟﻨﺎ‬

‫‪3.1415926535 8979323846 2643383279‬‬

‫ﻣ ﺴﺎرا ت اﻟﻤﻠﻔﺎ ت‬

‫ﺘﻢﺗﺨﺰﻳﻦ اﻟﻤﻠﻒ‬
‫ﺒﺤ ﺚ ‪Python‬ﻓ ﻲ اﻟﺪﻟﻴﻞ ﺣﻴ ﺚﻳ‬
‫ﺜﻞ ‪pi_digits.txt‬إﱃ اﻟﻮﻇﻴﻔ ﺔ ‪open () ،‬ﻳ‬
‫ﺑ ﺴﻴﻂ ﻣ‬‫ﻋﻨﺪﺗﻤﺮﻳﺮ اﺳﻢ ﻣﻠﻒ‬
‫ﺑﻚ(‪.‬‬‫ﺑﺮﻧﺎﻣﺞ ‪ yp.‬اﻟﺨﺎص‬‫اﻟﺠﺎريﺗﻨﻔﻴﺬه ﺣﺎﻟ ًﻴﺎ )أي ﻣﻠﻒ‬

‫ﺜﻞ ﻣﻠﻒ‬
‫ﺘﺤﻪ ﻓ ﻲ ﻧﻔ ﺲ اﻟﺪﻟﻴﻞ ﻣ‬
‫ﺑﻨﺎ ًء ﻋﲆ ﻛﻴﻔﻴ ﺔﺗﻨﻈﻴﻢ ﻋﻤﻠﻚ ‪ ،‬ﻟﻦﻳﻜﻮن اﻟﻤﻠﻒ اﻟﺬيﺗﺮﻳﺪ ﻓ‬‫ﺑﻌﺾ اﻷﺣﻴﺎن ‪،‬‬‫ﻓﻲ‬
‫ﺒﺮﻧﺎﻣﺞ ﻓ ﻲ ﻣﺠﻠﺪﻳ ﺴﻤﻰ ؛ ‪python_work‬داﺧﻞ‬
‫ﺜﺎل ‪،‬ﻳﻤﻜﻨﻚﺗﺨﺰﻳﻦ ﻣﻠﻔﺎ ت اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻚ‪ .‬ﻋﲆﺳ‬‫ﺒﺮﻧﺎﻣﺞ اﻟﺨﺎص‬
‫اﻟ‬
‫ﺘﻢ‬
‫ﺘ ﻲﻳ‬
‫ﺒﺮﻧﺎﻣﺞ ﻋﻦ اﻟﻤﻠﻔﺎ ت اﻟﻨﺼﻴ ﺔ اﻟ‬
‫ﺘﻤﻴﻴﺰ ﻣﻠﻔﺎ ت اﻟ‬
‫‪python_work ،‬ﻗﺪﻳﻜﻮن ﻟﺪﻳﻚ ﻣﺠﻠﺪ آﺧﺮﻳ ﺴﻤﻰ ‪text_files‬ﻟ‬
‫ﺘﻬﺎ‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ ﻣﻠﻔﺎ ت ‪text_files‬‬
‫ﻣﻌﺎﻟﺠ‬

‫ﺒﺤ ﺚ ﻓﻘﻂ‬
‫ﺘ‬‫ﻣﻮﺟﻮد ﻓ ﻲ ‪python_work ،‬ﻓﻤﺠﺮدﺗﻤﺮﻳﺮ )( ‪open‬اﺳﻢ اﻟﻤﻠﻒ ﻓ ﻲ ‪text_files‬ﻟﻦﻳﻌﻤﻞ ‪،‬ﻷن ‪Python‬ﺳ‬
‫ﺘﻤﺮ‬
‫ﺘﻮﻗﻒ ﻋﻨﺪ ﻫﺬا اﻟﺤﺪ ؛ ﻟﻦﻳ ﺴ‬
‫ﺗ‬‫ﻓ ﻲ ‪python_work‬و‬

‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬ ‫‪191‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎج‬
‫ﺒﺮﻧﺎﻣﺞ ﻓﻴﻪ ‪،‬ﺗﺤ‬
‫ﺘﺢ اﻟﻤﻠﻔﺎ ت ﻣﻦ دﻟﻴﻞ آﺧﺮ ﻏﻴﺮ اﻟﺪﻟﻴﻞ اﻟﺬيﺗﻢﺗﺨﺰﻳﻦ ﻣﻠﻒ اﻟ‬
‫ﺗﻔ‬‫ﺑﺤ ﺚ ﻓ ﻲ ‪text_files.‬ﻟﺠﻌﻞ ‪Python‬‬
‫وا‬
‫ﺒﺤ ﺚ ﻓ ﻲ ﻣﻮﻗﻊ ﻣﻌﻴﻦ ﻋﲆ ﻧﻈﺎﻣﻚ‪.‬‬
‫ﺑﺎﻟ‬
‫ﺒﺮ ‪Python‬‬
‫إﱃﺗﻮﻓﻴﺮ ﻣ ﺴﺎر ﻣﻠﻒ ‪ ،‬واﻟﺬيﻳﺨ‬

‫ﺘﺢ ﻣﻠﻒ ﻣﻦ ﻣﻠﻔﺎ ت‬


‫ﺒ ﻲ ﻟﻔ‬
‫ﺘﺨﺪام ﻣ ﺴﺎر ﻣﻠﻒ ﻧ ﺴ‬
‫ﻧﻈ ﺮًا ﻟﻮﺟﻮد ﻣﻠﻔﺎ ت ‪text_files‬داﺧﻞ ‪python_work ،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﻢﺗﺨﺰﻳﻦ ﻣﻠﻒ اﻟ‬
‫ﺑﺎﻟﺪﻟﻴﻞ ﺣﻴ ﺚﻳ‬‫ﺘﻌﻠﻖ‬
‫ﺒﺤ ﺚ ﻋﻦ ﻣﻮﻗﻊ ﻣﻌﻴﻦ ﻣ‬
‫ﺑﺎﻟ‬
‫ﺒ ﻲ ‪Python‬‬
‫ﺒﺮ ﻣ ﺴﺎر اﻟﻤﻠﻒ اﻟﻨ ﺴ‬
‫‪text_files.‬ﻳﺨ‬
‫ﺘ ﺐ‪:‬‬
‫ﺘﻜ‬‫ﺘﺸﻐﻴﻞ ﺣﺎﻟ ًﻴﺎ‪ .‬ﻓ ﻲ ﻧﻈﺎﻣ ﻲ ‪Linux‬و ‪OS X ،‬ﺳ‬
‫ﻗﻴﺪ اﻟ‬

‫ﺘﺢ )'‪('text_files / filename.txt‬ﻛـ ‪file_object:‬‬


‫ﻣﻊ ﻓ‬

‫ﺘﺮض أن ‪text_files‬ﻣﻮﺟﻮد‬
‫ﺒﺤ ﺚ ﻋﻦ ﻣﻠﻒ ‪ txt.‬اﻟﻤﻄﻠﻮ ب ﻓ ﻲ اﻟﻤﺠﻠﺪ ‪text_files‬وﻳﻔ‬
‫ﺑﺎﻟ‬
‫ﺒﺮ ﻫﺬا اﻟ ﺴﻄﺮ ‪Python‬‬
‫ﻳﺨ‬
‫داﺧﻞ ‪)python_work‬و ﻫﻮ ﻛﺬﻟﻚ(‪.‬‬
‫ﺑﺪﻻ ً ﻣﻦ اﻟﺸﺮﻃ ﺔ اﻟﻤﺎﺋﻠ ﺔ ﻟﻸﻣﺎم )‪(/‬ﻓ ﻲ ﻣ ﺴﺎر اﻟﻤﻠﻒ‪:‬‬
‫ﺘﺨﺪام اﻟﺸﺮﻃ ﺔ اﻟﻤﺎﺋﻠ ﺔ ﻟﻠﺨﻠﻒ )\(‬
‫ﻓ ﻲ أﻧﻈﻤ ﺔ ‪Windows ،‬ﻳﻤﻜﻨﻚ اﺳ‬

‫ﺘﺢ )'‪('text_files \ filename.txt‬ﻛـ ‪file_object:‬‬


‫ﻣﻊ ﻓ‬

‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻣﻜﺎنﺗﺨﺰﻳﻦ‬‫ﺑﻚ‬‫ﺗﺮ اﻟﺨﺎص‬


‫ﺒﻴﻮ‬
‫ﺒﻂ ﻋﲆ ﺟﻬﺎز اﻟﻜﻤ‬
‫ﺑﺎﻟﻀ‬‫ﺑﻤﻜﺎن اﻟﻤﻠﻒ‬
‫ﺒﺎر ‪Python‬‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ إﺧ‬
‫ﺒ ﻲ ﻻﻳﻌﻤﻞ‪.‬‬
‫ﺘﺨﺪام ﻣ ﺴﺎر ﻣﻄﻠﻖ إذا ﻛﺎن اﻟﻤ ﺴﺎر اﻟﻨ ﺴ‬
‫ﺘﻢﺗﻨﻔﻴﺬه‪.‬ﻳ ﺴﻤﻰ ﻫﺬا ﻣ ﺴﺎر اﻟﻤﻠﻒ اﻟﻤﻄﻠﻖ‪.‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﺬيﻳ‬
‫اﻟ‬
‫ﺜﺎل ‪ ،‬ﻣﺠﻠﺪﻳ ﺴﻤﻰ ‪-‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻮﺿﻊ ‪text_files‬ﻓ ﻲ ﻣﺠﻠﺪ آﺧﺮ ﻏﻴﺮ ‪python_work -‬ﻋﲆﺳ‬‫ﺜﺎل ‪ ،‬إذا ﻗﻤ ﺖ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻋﲆﺳ‬
‫ﺒﺤ ﺚ ﻓﻘﻂ ﻋﻦ ﻫﺬا‬
‫ﺘ‬‫‪other_files‬ﻓﻤﺠﺮدﺗﻤﺮﻳﺮ )( ‪open‬اﻟﻤ ﺴﺎر '‪'text_files / filename.txt‬ﻟﻦﻳﻌﻤﻞﻷن ‪Python‬ﺳ‬
‫ﺒﺤ ﺚ ﻓﻴﻪ ‪Python.‬‬
‫ﺘﻮﺿﻴﺢ اﻟﻤﻜﺎن اﻟﺬيﺗﺮﻳﺪ أنﺗ‬
‫ﺑ ﺔ ﻣ ﺴﺎر ﻛﺎﻣﻞ ﻟ‬
‫ﺘﺎ‬
‫ﺘﺎج إﱃ ﻛ‬
‫ﺘﺤ‬‫اﻟﻤﻮﻗﻊ داﺧﻞ ﻋﻤﻞ ‪python.‬ﺳ‬

‫ﺛﻢﺗﻤﺮﻳﺮ ﻫﺬا‬‫ﺘﻐﻴﺮ‬
‫ﺒﻴ ﺔ ‪ ،‬ﻟﺬﻟﻚ ﻣﻦ اﻟﻤﻔﻴﺪﺗﺨﺰﻳﻨﻬﺎ ﻓ ﻲ ﻣ‬ ‫ً‬
‫ﻋﺎدة ﻣﺎﺗﻜﻮن اﻟﻤ ﺴﺎرا ت اﻟﻤﻄﻠﻘ ﺔ أﻃﻮل ﻣﻦ اﻟﻤ ﺴﺎرا ت اﻟﻨ ﺴ‬
‫ﺒﺪو اﻟﻤ ﺴﺎرا ت اﻟﻤﻄﻠﻘ ﺔ ﻛﻤﺎﻳﻠ ﻲ‪:‬‬
‫ﺗ‬‫ﺘﺢ ‪().‬ﻓ ﻲ ﻧﻈﺎﻣ ﻲ ‪Linux‬و ‪OS X ،‬‬
‫ﺘﻐﻴﺮ ﻟﻔ‬
‫اﻟﻤ‬

‫'‪file_path = '/home/ehmatthes/other_files/text_files/filename.txt‬‬
‫ﺘﺢ )‪(file_path‬ﻛـ ‪file_object:‬‬
‫ﻣﻊ ﻓ‬

‫ﺒﺪو ﻫﻜﺬا‪:‬‬
‫ﺗ‬‫ﺘﺸﻐﻴﻞ ‪Windows‬‬
‫وﻋﲆ ﻧﻈﺎم اﻟ‬

‫'‪file_path = 'C: \ Users \ ehmatthes \ other_files \ text_files \ filename.txt‬‬


‫ﺘﺢ )‪(file_path‬ﻛـ ‪file_object:‬‬‫ﻣﻊ ﻓ‬

‫ﺘﺨﺪام اﻟﻤ ﺴﺎرا ت اﻟﻤﻄﻠﻘ ﺔ ‪،‬ﻳﻤﻜﻨﻚ ﻗﺮاءة اﻟﻤﻠﻔﺎ ت ﻣﻦ أي ﻣﻜﺎن ﻓ ﻲ ﻧﻈﺎﻣﻚ‪ .‬ﻓ ﻲ اﻟﻮﻗ ﺖ اﻟﺤﺎﻟ ﻲ ‪ ،‬ﻣﻦ اﻷﺳﻬﻞ‬
‫ﺑﺎﺳ‬
‫ﺜﻞ ‪text_files‬داﺧﻞ اﻟﺪﻟﻴﻞ اﻟﺬيﻳﺨﺰن ﻣﻠﻔﺎ ت‬
‫ﺒﺮﻧﺎﻣﺞ أو ﻓ ﻲ ﻣﺠﻠﺪ ﻣ‬
‫ﺜﻞ ﻣﻠﻔﺎ ت اﻟ‬
‫ﺗﺨﺰﻳﻦ اﻟﻤﻠﻔﺎ ت ﻓ ﻲ ﻧﻔ ﺲ اﻟﺪﻟﻴﻞ ﻣ‬
‫‪pro gram.‬‬

‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪ .‬ﻟﻮ‬‫أﺣﻴﺎﻧًﺎﺗﻔ ﺴﺮ أﻧﻈﻤ ﺔ ‪N ote Windows‬اﻟﺨﻄﻮط اﻟﻤﺎﺋﻠ ﺔ ﻟﻸﻣﺎم ﻓ ﻲ ﻣ ﺴﺎرا ت اﻟﻤﻠﻔﺎ ت‬
‫ﺘﺨﺪام اﻟﺨﻄﻮط اﻟﻤﺎﺋﻠ ﺔ اﻟﻌﻜ ﺴﻴ ﺔ‪.‬‬
‫ﺘﻮﻗﻌﻬﺎ ‪،‬ﺗﺄﻛﺪ ﻣﻦ ﻣﺤﺎوﻟ ﺔ اﺳ‬
‫ﺘ ﻲﺗ‬
‫ﺘﺎﺋﺞ اﻟ‬
‫ﺘﺨﺪم ‪Windows‬وﻻﺗﺤﺼﻞ ﻋﲆ اﻟﻨ‬
‫أﻧ ﺖﺗ ﺴ‬

‫‪192‬اﻟﻔﺼﻞ ‪10‬‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺴﻄﺮ‬‫ﻗﺮاءةﺳﻄﺮا‬
‫ﺒﺎ ﻓ ﻲ ﻓﺤﺺ ﻛﻞﺳﻄﺮ ﻣﻦ اﻟﻤﻠﻒ‪.‬‬ ‫ﻋﻨﺪﻣﺎﺗﻘﺮأ ﻣﻠ ًﻔﺎ ‪،‬ﺳ‬
‫ﺘﺮﻏ ﺐ ﻏﺎﻟ ً‬
‫ﺜﺎل ‪ ،‬ﻗﺪ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﺎ‪ .‬ﻋﲆﺳ‬‫ﺒﺤ ﺚ ﻋﻦ ﻣﻌﻠﻮﻣﺎ ت ﻣﻌﻴﻨ ﺔ ﻓ ﻲ اﻟﻤﻠﻒ ‪ ،‬أو ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲﺗﻌﺪﻳﻞ اﻟﻨﺺ ﻓ ﻲ اﻟﻤﻠﻒ‬
‫ﻗﺪﺗ‬
‫ﺘﻀﻤﻦ ﻛﻠﻤ ﺔ ‪sunny‬ﻓ ﻲ وﺻﻒ اﻟﻄﻘ ﺲ ﻓ ﻲ ذﻟﻚ اﻟﻴﻮم‪ .‬ﻓ ﻲﺗﻘﺮﻳﺮ‬
‫ﺑﺄيﺳﻄﺮﻳ‬‫ﺑﻴﺎﻧﺎ ت اﻟﻄﻘ ﺲ واﻟﻌﻤﻞ‬‫ﺗﺮﻏ ﺐ ﻓ ﻲ ﻗﺮاءة ﻣﻠﻒ‬
‫ﺘﻨ ﺴﻴﻖ‪.‬‬
‫ﺑﻨﻮع ﻣﻌﻴﻦ ﻣﻦ اﻟ‬‫ﺑ ﺔ ﻫﺬا اﻟ ﺴﻄﺮ‬
‫ﺘﺎ‬
‫ﺗﻌﻴﺪ ﻛ‬
‫ﺑﺎﻟﻌﻼﻣ ﺔ >‪<headline‬و‬‫ﺒﺤ ﺚ ﻋﻦ أيﺳﻄﺮ‬
‫ﺒﺎري ‪ ،‬ﻗﺪﺗ‬
‫إﺧ‬

‫ﺘﺨﺪام ﺣﻠﻘ ﺔ ‪for‬ﻓ ﻲ ﻛﺎﺋﻦ اﻟﻤﻠﻒ ﻟﻔﺤﺺ ﻛﻞﺳﻄﺮ ﻣﻦ ﻣﻠﻒ واﺣﺪًاﺗﻠﻮ اﻵﺧﺮ‪:‬‬
‫ﻳﻤﻜﻨﻚ اﺳ‬

‫'‪file_reader.py u filename = 'pi_digits.txt‬‬

‫ﺘﻮح ﻛـ ‪file_object:‬‬‫‪v‬ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬


‫‪w‬ﻟﻠ ﺴﻄﺮ ﻓ ﻲ ‪file_object:‬‬
‫ﺒﺎﻋ ﺔ )ﺧﻂ(‬
‫ﻃ‬

‫ﺘﻐﻴﺮ‪ .‬ﻫﺬا ﻫﻮ اﺻﻄﻼح ﺷﺎﺋﻊ ﻋﻨﺪ اﻟﻌﻤﻞ ﻣﻊ‬


‫ﺘﺨﺰﻳﻦ اﺳﻢ اﻟﻤﻠﻒ اﻟﺬي ﻧﻘﺮأ ﻣﻨﻪ ﻓ ﻲ اﺳﻢ اﻟﻤﻠﻒ اﻟﻤ‬
‫ﺑ‬‫ﻓ ﻲ ‪u‬ﻧﻘﻮم‬
‫ﺜﻮر ﻋﲆ اﻟﻤﻠﻒ‬
‫ﺑﻤﻜﺎن اﻟﻌ‬
‫ﺒﺮ ‪Python‬‬
‫ﺜﻞ اﻟﻤﻠﻒ اﻟﻔﻌﻠ ﻲ ‪-‬إﻧﻪ ﻣﺠﺮدﺳﻠ ﺴﻠ ﺔﺗﺨ‬
‫ﺘﻐﻴﺮ ﻻﻳﻤ‬
‫اﻟﻤﻠﻔﺎ ت‪ .‬ﻧﻈ ﺮًاﻷن اﺳﻢ اﻟﻤﻠﻒ اﻟﻤ‬
‫ﺒﺪﻳﻞ "‪"pi_digits.txt‬‬
‫ﺑ ﺴﻬﻮﻟ ﺔﺗ‬‫‪-‬ﻳﻤﻜﻨﻚ‬

‫ﺘﻐﻴﺮ‬
‫ﺗﻪ ﻓ ﻲ اﻟﻤ‬
‫ﺘﻮﻳﺎ‬
‫ﺜﻞ اﻟﻤﻠﻒ وﻣﺤ‬
‫ﺘﻢﺗﺨﺰﻳﻦ ﻛﺎﺋﻦﻳﻤ‬
‫ﺑﻌﺪ أن ﻧ ﺴﻤ ﻲ ‪open () ،‬ﻳ‬‫ﻋﻦ اﺳﻢ اﻟﻤﻠﻒ اﻵﺧﺮ اﻟﺬيﺗﺮﻳﺪ اﻟﻌﻤﻞ ﻣﻌﻪ‪.‬‬
‫ﺘﻮﻳﺎ ت‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪ .‬ﻟﻔﺤﺺ ﻣﺤ‬‫ﺘﺢ اﻟﻤﻠﻒ وإﻏﻼﻗﻪ‬
‫ﺑﻔ‬‫ﺜﻮن‬
‫ﺒﺎﻳ‬
‫ﺘﺨﺪم اﻟﺼﻴﻐ ﺔ ‪with‬ﻟﻠ ﺴﻤﺎح ﻟ‬
‫‪file_object v.‬ﻣﺮة أﺧﺮى ﻧ ﺴ‬
‫اﻟﻤﻠﻒ ‪ ،‬ﻧﻌﻤﻞ ﻣﻦ ﺧﻼل ﻛﻞﺳﻄﺮ ﻓ ﻲ اﻟﻤﻠﻒ ﻋﻦ ﻃﺮﻳﻖﺗﻜﺮار ﺣﻠﻘﺎ ت ﻛﺎﺋﻦ اﻟﻤﻠﻒ ‪w.‬‬

‫ﺒﻊ ﻛﻞﺳﻄﺮ ‪ ،‬ﻧﺠﺪ اﻟﻤﺰﻳﺪ ﻣﻦ اﻷﺳﻄﺮ اﻟﻔﺎرﻏ ﺔ‪:‬‬


‫ﻋﻨﺪﻣﺎ ﻧﻄ‬

‫‪3.1415926535‬‬

‫‪8979323846‬‬

‫‪2643383279‬‬

‫ﺋ ﻲ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ ﻛﻞﺳﻄﺮ ﻓ ﻲ اﻟﻤﻠﻒ اﻟﻨﺼ ﻲ‪.‬ﺗﻀﻴﻒﺗﻌﻠﻴﻤ ﺔ‬


‫ﺗﻈﻬﺮ ﻫﺬه اﻷﺳﻄﺮ اﻟﻔﺎرﻏ ﺔﻷن ﺣﺮفﺳﻄﺮ ﺟﺪﻳﺪ ﻏﻴﺮ ﻣﺮ‬
‫ﺑﺤﺮﻓﻴﻦ ﺟﺪﻳﺪﻳﻦ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ ﻛﻞﺳﻄﺮ‪ :‬أﺣﺪ ﻫﻤﺎ‬‫ﺑﻨﺎ اﻟﻤﻄﺎف‬‫ﺘﻬ ﻲ‬
‫ﺑﻬﺎ ﻓ ﻲ ﻛﻞ ﻣﺮة ﻧ ﺴﻤﻴﻬﺎ ‪ ،‬ﻟﺬﻟﻚﻳﻨ‬‫ﺧﺎﺻﺎ‬
‫ً‬ ‫‪print‬ﺳﻄ ﺮًا ﺟﺪﻳﺪًا‬
‫ﺒﺎﻋ ﺔ ‪.‬‬
‫ﻣﻦ اﻟﻤﻠﻒ واﻵﺧﺮ ﻣﻦ ﺟﻤﻠ ﺔ اﻟﻄ‬

‫ﺘﺨﻠﺺ ﻣﻦ ﻫﺬه اﻷﺳﻄﺮ اﻟﻔﺎرﻏ ﺔ اﻹﺿﺎﻓﻴ ﺔ‪:‬‬


‫ﺒﺎرة ‪print‬إﱃ اﻟ‬
‫ﺘﺨﺪام )( ‪rstrip‬ﻓ ﻲ ﻛﻞﺳﻄﺮ ﻓ ﻲ ﻋ‬
‫ﻳﺆدي اﺳ‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'pi_digits.txt‬‬

‫ﺘﻮح ﻛـ ‪file_object:‬‬ ‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬


‫ﻟﻠ ﺴﻄﺮ ﻓ ﻲ ‪file_object:‬‬
‫ﺒﺎﻋ ﺔ ))( ‪(line.rstrip‬‬
‫ﻃ‬

‫ﺜﻨﺎءا ت ‪193‬‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ ﻣﺮة أﺧﺮى‪:‬‬


‫ﺑﻖ ﻣﺤ‬
‫ﺗﺞﻳﻄﺎ‬
‫اﻵن اﻟﻨﺎ‬

‫‪2643383279‬‬
‫‪8979323846‬‬
‫‪3.1415926535‬‬

‫ﻋﻤﻞ ﻗﺎﺋﻤ ﺔﺳﻄﻮر ﻣﻦ ﻣﻠﻒ‬


‫ﺘﻮي ﻋﻠﻴﻪ‪ .‬إذا‬
‫ﺘ ﻲﺗﺤ‬
‫ﺘﻠ ﺔ اﻟ‬
‫ﺣﺎ ﻓﻘﻂ داﺧﻞ اﻟﻜ‬
‫ﺘﺎ ً‬
‫ﺑﻮاﺳﻄ ﺔ )( ‪open‬ﻣ‬‫ﺘﺨﺪام ﻣﻊ ‪،‬ﻳﻜﻮن ﻛﺎﺋﻦ اﻟﻤﻠﻒ اﻟﺬيﺗﻢ إرﺟﺎﻋﻪ‬
‫ﻋﻨﺪ اﻻﺳ‬
‫ﺛﻢ‬‫ﺘﻠ ﺔ‬
‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ ﺧﺎرج اﻟﺤﻈﺮ ‪ ،‬ﻓﻴﻤﻜﻨﻚﺗﺨﺰﻳﻦ أﺳﻄﺮ اﻟﻤﻠﻒ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ داﺧﻞ اﻟﻜ‬
‫ﺑﺎﻟﻮﺻﻮل إﱃ ﻣﺤ‬‫ﺘﻔﺎظ‬
‫ﻛﻨ ﺖﺗﺮﻳﺪ اﻻﺣ‬
‫ﺑﻌﺾ اﻟﻤﻌﺎﻟﺠ ﺔ ﻻﺣ ًﻘﺎ ﻓ ﻲ اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬ ‫ﺗﺄﺟﻴﻞ‬
‫اﻟﻌﻤﻞ ﻣﻊﺗﻠﻚ اﻟﻘﺎﺋﻤ ﺔ‪.‬ﻳﻤﻜﻨﻚ ﻣﻌﺎﻟﺠ ﺔ أﺟﺰاء ﻣﻦ اﻟﻤﻠﻒ ﻋﲆ اﻟﻔﻮر و‬

‫ﺘﻠ ﺔ ‪with :‬‬


‫ﺒﻊ اﻷﺳﻄﺮ ﺧﺎرج اﻟﻜ‬
‫ﺛﻢﻳﻄ‬
‫ﺘﻠ ﺔ ‪with‬‬
‫ﺘﺎﻟ ﻲﺳﻄﻮر ‪pi_digits.txt‬ﻓ ﻲ ﻗﺎﺋﻤ ﺔ داﺧﻞ اﻟﻜ‬
‫ﺜﺎل اﻟ‬
‫ﻳﺨﺰن اﻟﻤ‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'pi_digits.txt‬‬

‫ﺘﻮح ﻛـ ‪file_object:‬‬
‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫‪u‬ﺧﻄﻮط )( ‪= file_object.readlines‬‬

‫‪v‬ﻟﻠﺨﻂ ﻓ ﻲ اﻷﺳﻄﺮ‪:‬‬

‫ﺒﺎﻋ ﺔ ))( ‪(line.rstrip‬‬


‫ﻃ‬

‫ﺘﻢﺗﺨﺰﻳﻦ ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ ﻓ ﻲﺳﻄﻮر ‪،‬‬


‫ﺛﻢﻳ‬‫ﺗﺨﺰﻧﻪ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ‪.‬‬
‫ﺗﺄﺧﺬ ﻃﺮﻳﻘ ﺔ )( ‪readlines‬ﻛﻞﺳﻄﺮ ﻣﻦ اﻟﻤﻠﻒ و‬
‫ﻓﻲ ‪u‬‬
‫ﺒﺎﻋ ﺔ ﻛﻞﺳﻄﺮ ﻣﻦ اﻷﺳﻄﺮ‪.‬‬
‫ﺑ ﺴﻴﻄ ﺔ ﻟﻄ‬
‫ﺘﺨﺪم ﺣﻠﻘ ﺔ ‪for‬‬
‫ﺘﻠ ﺔ‪ .‬ﻓ ﻲ ‪v‬ﻧ ﺴ‬
‫ﺘﻬﺎء اﻟﻜ‬
‫ﺑﻌﺪ اﻧ‬‫ﺘﻤﺮار ﻓ ﻲ اﻟﻌﻤﻞ ﻣﻌﻬﺎ‬
‫ﺘ ﻲﻳﻤﻜﻨﻨﺎ اﻻﺳ‬
‫واﻟ‬
‫ﺗﻤﺎﻣﺎ‪.‬‬
‫ً‬ ‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ‬
‫ﺑﻖ ﻣﺤ‬
‫ﺘﻮاﻓﻖ ﻣﻊ ﻛﻞﺳﻄﺮ ﻓ ﻲ اﻟﻤﻠﻒ ‪ ،‬ﻓﺈن اﻹﺧﺮاجﻳﻄﺎ‬
‫ﻧﻈ ﺮًاﻷن ﻛﻞ ﻋﻨﺼﺮ ﻓ ﻲ اﻟ ﺴﻄﻮرﻳ‬

‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻣﺤ‬
‫اﻟ‬
‫ﺑﺈﻳﺠﺎز أرﻗﺎم ‪pi.‬أوﻻ ً ‪،‬ﺳﻨﺤﺎول‬‫ﺘﻜﺸﻒ‬
‫ﺒﻴﺎﻧﺎ ت ‪ ،‬ﻟﺬﻟﻚ دﻋﻮﻧﺎ ﻧ ﺴ‬
‫ﺑﻬﺬه اﻟ‬‫ﺑﻌﺪ أنﺗﻘﺮأ ﻣﻠ ًﻔﺎ ﻓ ﻲ اﻟﺬاﻛﺮة ‪،‬ﻳﻤﻜﻨﻚ ﻓﻌﻞ ﻣﺎﺗﺮﻳﺪ‬
‫ﺑﻴﻀﺎء ﻓﻴﻬﺎ‪:‬‬‫ﺑﺪون ﻣ ﺴﺎﻓ ﺔ‬‫ﺘﻮي ﻋﲆ ﺟﻤﻴﻊ اﻷرﻗﺎم ﻓ ﻲ اﻟﻤﻠﻒ‬
‫إﻧﺸﺎءﺳﻠ ﺴﻠ ﺔ واﺣﺪةﺗﺤ‬

‫‪pi_string.py‬‬ ‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'pi_digits.txt‬‬

‫ﺘﻮح ﻛـ ‪file_object:‬‬‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬


‫ﺧﻄﻮط )( ‪= file_object.readlines‬‬

‫"‬
‫‪u pi_string = v‬ﻟﻠﺨﻂ ﻓ ﻲ اﻟ ﺴﻄﻮر‪:‬‬

‫)( ‪pi_string + = line.rstrip‬‬

‫ﺒﺎﻋ ﺔ )‪w (pi_string‬‬‫ﻃ‬


‫ﺒﺎﻋ ﺔ )ﻟﻴﻦ ))‪(pi_string‬‬
‫ﻃ‬

‫ﺗﺨﺰﻳﻦ ﻛﻞﺳﻄﺮ ﻣﻦ اﻷرﻗﺎم ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪ ،‬ﻓﻘﻂ‬


‫ﺘﺢ اﻟﻤﻠﻒ و‬
‫ﺑﻔ‬‫ﺒﺪأ‬
‫ﻧ‬
‫ﺘﻐﻴﺮ ‪pi_string ، ،‬إﱃ‬
‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﺑﻖ‪ .‬ﻓ ﻲ ‪u‬ﻧﻘﻮم‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﻛﻤﺎ ﻓﻌﻠﻨﺎ ﻓ ﻲ اﻟﻤ‬

‫‪194‬اﻟﻔﺼﻞ ‪10‬‬
‫‪Machine Translated by Google‬‬

‫ﺗﺰﻳﻞ ﺣﺮف اﻟ ﺴﻄﺮ اﻟﺠﺪﻳﺪ ﻣﻦ‬


‫ﺑﺈﻧﺸﺎء ﺣﻠﻘ ﺔﺗﻀﻴﻒ ﻛﻞﺳﻄﺮ ﻣﻦ اﻷرﻗﺎم إﱃ ‪pi_string‬و‬‫ﺑﻌﺪ ذﻟﻚ‬‫ﺑ ﻲ‪ .‬ﻧﻘﻮم‬‫ﻋﻘﺪ أرﻗﺎم‬
‫ﺒﻊ ﻫﺬه اﻟ ﺴﻠ ﺴﻠ ﺔ وﻧﻌﺮض أ ً‬
‫ﻳﻀﺎ ﻃﻮل اﻟ ﺴﻠ ﺴﻠ ﺔ‪:‬‬ ‫ﻛﻞﺳﻄﺮ ‪v.‬ﻓ ﻲ ‪w‬ﻧﻄ‬

‫‪3.1415926535 8979323846 264338327936‬‬

‫ﺘ ﻲ ﻛﺎﻧ ﺖ ﻋﲆ اﻟﺠﺎﻧ ﺐ اﻷﻳ ﺴﺮ ﻣﻦ اﻷرﻗﺎم ﻓ ﻲ ﻛﻞﺳﻄﺮ ‪ ،‬وﻟﻜﻦ‬


‫ﺒﻴﻀﺎء اﻟ‬
‫ﺘﻐﻴﺮ ‪pi_string‬ﻋﲆ اﻟﻤ ﺴﺎﻓ ﺔ اﻟ‬
‫ﺘﻮي اﻟﻤ‬
‫ﻳﺤ‬
‫ﺑﺪﻻ ً ﻣﻦ ‪rstrip ():‬‬
‫ﺘﺨﺪام ﺷﺮﻳﻂ )(‬
‫ﺑﺎﺳ‬‫ﺘﺨﻠﺺ ﻣﻦ ذﻟﻚ‬
‫ﻳﻤﻜﻨﻨﺎ اﻟ‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'pi_30_digits.txt‬‬

‫ﺘﻮح ﻛـ ‪file_object:‬‬‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬


‫ﺧﻄﻮط )( ‪= file_object.readlines‬‬

‫"‬
‫= ‪pi_string‬ﻟﻠﺨﻂ ﻓ ﻲ اﻟ ﺴﻄﻮر‪:‬‬

‫)( ‪pi_string + = line.strip‬‬

‫ﺒﺎﻋ ﺔ )‪(pi_string‬‬‫ﻃ‬
‫ﺒﺎﻋ ﺔ )ﻟﻴﻦ ))‪(pi_string‬‬
‫ﻃ‬

‫ﺒﺎدﺋ ﺔ‬ ‫ﺘﻀﻤﻦ أ ً‬
‫ﻳﻀﺎ اﻟ‬ ‫ﺘﻜﻮن اﻟ ﺴﻠ ﺴﻠ ﺔ ﻣﻦ ‪ً 32‬‬
‫ﺣﺮﻓﺎﻷﻧﻬﺎﺗ‬ ‫ﺘﻰ ‪30‬ﻣﻨﺰﻟ ﺔ ﻋﺸﺮﻳ ﺔ‪.‬ﺗ‬
‫ﺘﻮي ﻋﲆ ‪pi‬ﺣ‬
‫اﻵن ﻟﺪﻳﻨﺎﺳﻠ ﺴﻠ ﺔﺗﺤ‬
‫‪3‬وﻋﻼﻣ ﺔ ﻋﺸﺮﻳ ﺔ‪:‬‬

‫‪3.141592653589793238462643383279 32‬‬

‫ﺑﻬﺬه اﻟﻘﻴﻤ ﺔ ﻓ ﻲﺳﻴﺎق‬‫ﺜﻮن ﻣﻦ ﻣﻠﻒ ﻧﺼ ﻲ ‪ ،‬ﻓﺈﻧﻬﺎﺗﻔ ﺴﺮ ﻛﻞ اﻟﻨﺺ ﻓ ﻲ اﻟﻤﻠﻒ ﻛ ﺴﻠ ﺴﻠ ﺔ‪ .‬إذا ﻗﺮأ ت ﻓ ﻲ رﻗﻢ وأرد ت اﻟﻌﻤﻞ‬
‫ﺑﺎﻳ‬‫ﻋﻨﺪﻣﺎﺗﻘﺮأ‬
‫ﺘﺨﺪام اﻟﺪاﻟ ﺔ ‪float () .‬‬
‫ﺑﺎﺳ‬‫ﺘﺨﺪام اﻟﺪاﻟ ﺔ ) ( ‪int‬أوﺗﺤﻮﻳﻠﻬﺎ إﱃ ﻋﺪد ﻋﺸﺮي‬
‫ﺑﺎﺳ‬‫ﺘﻌﻴﻦ ﻋﻠﻴﻚﺗﺤﻮﻳﻠﻬﺎ إﱃ ﻋﺪد ﺻﺤﻴﺢ‬
‫رﻗﻤ ﻲ ‪ ،‬ﻓ ﺴﻴ‬

‫ﺒﻴﺮة‪ :‬ﻣﻠﻴﻮن رﻗﻢ‬


‫اﻟﻤﻠﻔﺎ ت اﻟﻜ‬
‫ﺜﻠ ﺔﺳﻴﻌﻤﻞ أ ً‬
‫ﻳﻀﺎ ﻋﲆ‬ ‫ﺛ ﺔ أﺳﻄﺮ ﻓﻘﻂ ‪ ،‬ﻟﻜﻦ اﻟﻜﻮد ﻓ ﻲ ﻫﺬه اﻷﻣ‬
‫ﺛﻼ‬‫ﺘﻮي ﻋﲆ‬
‫ﺘﻰ اﻵن ﻋﲆﺗﺤﻠﻴﻞ ﻣﻠﻒ ﻧﺼ ﻲﻳﺤ‬
‫ﻟﻘﺪ رﻛﺰﻧﺎ ﺣ‬
‫ﺑﺪﻻ ً ﻣﻦ ‪30‬ﻓﻘﻂ ‪ ،‬ﻓﻴﻤﻜﻨﻨﺎ إﻧﺸﺎء‬‫ﺘﻮي ﻋﲆ ‪pi‬إﱃ ‪1000000‬ﻣﻨﺰﻟ ﺔ ﻋﺸﺮﻳ ﺔ‬
‫ﺑﻤﻠﻒ ﻧﺼ ﻲﻳﺤ‬‫ﺑﺪأﻧﺎ‬‫ﺣﺠﻤﺎ‪ .‬إذا‬
‫ً‬ ‫ﺒﺮ‬
‫اﻟﻤﻠﻔﺎ ت اﻷﻛ‬
‫ﺘﻮي ﻋﲆ ﻛﻞ ﻫﺬه اﻷرﻗﺎم‪.‬‬
‫ﺳﻠ ﺴﻠ ﺔ واﺣﺪةﺗﺤ‬

‫ﺘﻠﻒ‪.‬‬
‫ﺜﻨﺎءﺗﻤﺮﻳﺮه إﱃ ﻣﻠﻒ ﻣﺨ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺑﺮﻧﺎﻣﺠﻨﺎ ﻋﲆ اﻹﻃﻼق‬‫ﺘﺎج إﱃﺗﻐﻴﻴﺮ‬
‫ﻻ ﻧﺤ‬
‫ﺘﻌﻴﻦ ﻋﻠﻴﻨﺎ ﻣﺸﺎ ﻫﺪةﺗﻤﺮﻳﺮ ﻣﻠﻴﻮن رﻗﻢ ﻓ ﻲ اﻟﻤﺤﻄ ﺔ‪:‬‬
‫ﺒﺎﻋ ﺔ أول ‪50‬ﺧﺎﻧ ﺔ ﻋﺸﺮﻳ ﺔ ﻓﻘﻂ ‪ ،‬ﻟﺬﻟﻚ ﻻﻳ‬
‫ﺑﻄ‬ ‫ﺳﻨﻘﻮم أ ً‬
‫ﻳﻀﺎ‬

‫‪pi_string.py‬‬ ‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'pi_million_digits.txt‬‬

‫ﺘﻮح ﻛـ ‪file_object:‬‬‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬


‫ﺧﻄﻮط )( ‪= file_object.readlines‬‬

‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬ ‫‪195‬‬
‫‪Machine Translated by Google‬‬

‫"‬
‫= ‪pi_string‬ﻟﻠﺨﻂ ﻓ ﻲ اﻟ ﺴﻄﻮر‪:‬‬

‫)( ‪pi_string + = line.strip‬‬

‫ﺒﺎﻋ ﺔ )"‪(pi_string [: 52] + "...‬‬


‫ﻃ‬
‫ﺒﺎﻋ ﺔ )ﻟﻴﻦ ))‪(pi_string‬‬
‫ﻃ‬

‫ﺘﻮي ﻋﲆ ‪pi‬إﱃ ‪1000000‬ﻣﻨﺰﻟ ﺔ ﻋﺸﺮﻳ ﺔ‪:‬‬


‫ﺑﺎﻟﻔﻌﻞﺳﻠ ﺴﻠ ﺔﺗﺤ‬‫ﺗﺞ أﻧﻨﺎ ﻟﺪﻳﻨﺎ‬
‫ُﻈﻬﺮ اﻟﻨﺎ‬
‫ﻳ‬

‫‪3.14159265358979323846264338327950288419716939937510 ... 1000002‬‬

‫ﺑﻬﺎ ؛ أﻧ ﺖ‬‫ﺘ ﻲﻳﻤﻜﻨﻚ اﻟﻌﻤﻞ‬


‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺜﻮن ﻟﻜﻤﻴ ﺔ اﻟ‬
‫ﺒﻴ‬‫ﻻﻳﻮﺟﺪ ﺣﺪ ﻣﻼزم ﻟ‬
‫ﺘﻌﺎﻣﻞ ﻣﻌﻪ ذاﻛﺮة ﻧﻈﺎﻣﻚ‪.‬‬
‫ﺒﻴﺎﻧﺎ تﻳﻤﻜﻦ أنﺗ‬
‫ﺒﺮ ﻗﺪر ﻣﻦ اﻟ‬
‫ﻳﻤﻜﻦ أنﺗﻌﻤﻞ ﻣﻊ أﻛ‬

‫ﺘﺎﺣ ﺔ ﻋﲆ ‪pythoncrashcourse/.‬‬
‫ﺘﺎج إﱃﺗﻨﺰﻳﻞ اﻟﻤﻮارد اﻟﻤ‬
‫ﺘﺤ‬‫ﺘﺎﻟﻴ ﺔ( ‪،‬ﺳ‬
‫ﺜﻠ ﺔ اﻟ‬
‫ﺒﺮﻧﺎﻣﺞ )واﻟﻌﺪﻳﺪ ﻣﻦ اﻷﻣ‬
‫ﺘﺸﻐﻴﻞ ﻫﺬا اﻟ‬
‫ﻻﻟ‬
‫‪https://www.nostarch.com/‬‬

‫ﻫﻞ ﻋﻴﺪ ﻣﻴﻼدك ﻣﻮﺟﻮد ﻓ ﻲ ؟‪Pi‬‬


‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﺨﺪم اﻟ‬
‫ﺑﺎﻟﻔﻀﻮل ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن ﻋﻴﺪ ﻣﻴﻼديﻳﻈﻬﺮ ﻓ ﻲ أي ﻣﻜﺎن ﻓ ﻲ أرﻗﺎم ‪pi.‬دﻋﻨﺎ ﻧ ﺴ‬‫ﻟﻄﺎﻟﻤﺎ ﻛﻨ ﺖ أﺷﻌﺮ‬
‫ﺘﻮ ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎن ﻋﻴﺪ ﻣﻴﻼد ﺷﺨﺺ ﻣﺎﻳﻈﻬﺮ ﻓ ﻲ أي ﻣﻜﺎن ﻓ ﻲ أول ﻣﻠﻴﻮن رﻗﻢ ﻣﻦ ‪pi.‬ﻳﻤﻜﻨﻨﺎ اﻟﻘﻴﺎم‬
‫ﺒﻨﺎه ﻟﻠ‬
‫ﺘ‬‫اﻟﺬي ﻛ‬
‫ﺒﻴﺮ ﻋﻦ ﻛﻞ ﻋﻴﺪ ﻣﻴﻼد ﻛ ﺴﻠ ﺴﻠ ﺔ ﻣﻦ اﻷرﻗﺎم وﻣﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎﻧ ﺖ ﻫﺬه اﻟ ﺴﻠ ﺴﻠ ﺔﺗﻈﻬﺮ ﻓ ﻲ أي ﻣﻜﺎن‬
‫ﺘﻌ‬‫ﺑﺬﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﻟ‬
‫ﻓ ﻲ ‪pi_string:‬‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'pi_million_digits.txt‬‬

‫ﺘﻮح ﻛـ ‪file_object:‬‬
‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫ﺧﻄﻮط )( ‪= file_object.readlines‬‬

‫"‬
‫= ‪pi_string‬ﻟﻠﺨﻂ ﻓ ﻲ اﻟ ﺴﻄﻮر‪:‬‬

‫)( ‪pi_string + = line.rstrip‬‬

‫ﺑﺎﻟﺼﻴﻐ ﺔ )"‪mmddyy:‬‬‫‪")u birthday = input‬أدﺧﻞﺗﺎرﻳﺦ ﻣﻴﻼدك‬


‫‪v‬إذا ﻛﺎن ﻋﻴﺪ اﻟﻤﻴﻼد ﻓ ﻲ ‪pi_string:‬‬
‫‪")print‬ﻋﻴﺪ ﻣﻴﻼدكﻳﻈﻬﺮ ﻓ ﻲ أول ﻣﻠﻴﻮن رﻗﻢ ﻣﻦ )"!‪pi‬‬
‫آﺧﺮ‪:‬‬

‫‪")print‬ﻋﻴﺪ ﻣﻴﻼدك ﻻﻳﻈﻬﺮ ﻓ ﻲ أول ﻣﻠﻴﻮن رﻗﻢ ﻣﻦ )"‪pi.‬‬

‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن ذﻟﻚ‬


‫ﺛﻢ ﻓ ﻲ ‪v‬ﻧ‬‫ﺘﺨﺪم ‪،‬‬
‫ﺑﻌﻴﺪ ﻣﻴﻼد اﻟﻤ ﺴ‬‫ﻓ ﻲ ‪u‬ﻧﺤﻦ ﻧﻄﺎﻟ ﺐ‬
‫اﻟ ﺴﻠ ﺴﻠ ﺔ ﻓ ﻲ ‪pi_string.‬دﻋﻨﺎ ﻧﺤﺎول‪:‬‬

‫ﺑﺎﻟﺸﻜﻞ ‪mmddyy: 120372‬ﻋﻴﺪ ﻣﻴﻼدكﻳﻈﻬﺮ ﻓ ﻲ أول ﻣﻠﻴﻮن رﻗﻢ ﻣﻦ !‪pi‬‬‫أدﺧﻞﺗﺎرﻳﺦ ﻣﻴﻼدك ‪،‬‬

‫ﺑﻤﺠﺮد أنﺗﻘﺮأ ﻣﻦ أ‬‫ﺑﺎي!‬‫ﻋﻴﺪ ﻣﻴﻼديﻳﻈﻬﺮ ﻓ ﻲ أرﻗﺎم‬


‫ﺘﺨﻴﻠﻬﺎ‪.‬‬
‫ﺑﺄي ﻃﺮﻳﻘ ﺔﺗ‬‫ﺗﻪ‬
‫ﺘﻮﻳﺎ‬
‫ﻣﻠﻒ ‪،‬ﻳﻤﻜﻨﻚﺗﺤﻠﻴﻞ ﻣﺤ‬

‫‪196‬اﻟﻔﺼﻞ اﻟﻌﺎﺷﺮ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﻪ ﻋﻦ ‪Python‬‬
‫ﺑﻀﻌ ﺔ أﺳﻄﺮﺗﻠﺨﺺ ﻣﺎﺗﻌﻠﻤ‬‫ﺘﺐ‬ ‫ً‬
‫ﻓﺎرﻏﺎ ﻓ ﻲ ﻣﺤﺮر اﻟﻨﺼﻮص واﻛ‬ ‫ﺘﺢ ﻣﻠ ًﻔﺎ‬
‫ﺗﻌﻠﻢ ‪Python:‬اﻓ‬
‫‪10-1.‬‬
‫ﺑﺎﺳﻢ ‪learning_python.txt‬ﻓ ﻲ ﻧﻔ ﺲ‬‫ﺜﻮنﻳﻤﻜﻨﻚ ‪ ....‬اﺣﻔﻆ اﻟﻤﻠﻒ‬
‫ﺑﺎﻳ‬‫ﺒﺎرة ﻓ ﻲ‬
‫ﺑﺎﻟﻌ‬‫ﺑﺪأ ﻛﻞﺳﻄﺮ‬
‫ﺘﻰ اﻵن‪ .‬ا‬
‫ﺣ‬
‫ﺘﻮﻳﺎ ت‬
‫ﺒﻊ اﻟﻤﺤ‬
‫ﺛﻼ ث ﻣﺮا ت‪ .‬اﻃ‬‫ﺘﻪ‬
‫ﺒ‬‫ﺘ‬‫ﺒﻊ ﻣﺎ ﻛ‬
‫ﺑﺮﻧﺎﻣﺠًﺎﻳﻘﺮأ اﻟﻤﻠﻒ وﻳﻄ‬‫ﺘﺐ‬
‫ﺜﻞﺗﻤﺎرﻳﻨﻚ ﻣﻦ ﻫﺬا اﻟﻔﺼﻞ‪ .‬اﻛ‬
‫اﻟﺪﻟﻴﻞ ﻣ‬
‫ﺘﻜﺮار ﻓﻮق ﻛﺎﺋﻦ اﻟﻤﻠﻒ ‪ ،‬وﻣﺮة ﻋﻦ ﻃﺮﻳﻖﺗﺨﺰﻳﻦ اﻷﺳﻄﺮ ﻓ ﻲ‬
‫ﺑﺎﻟ‬‫ﺑﺄﻛﻤﻠﻪ ‪ ،‬وﻣﺮة‬‫ﻣﺮة واﺣﺪة ﻋﻦ ﻃﺮﻳﻖ ﻗﺮاءة اﻟﻤﻠﻒ‬
‫ﺘﻠ ﺔ ‪.‬‬
‫ﺛﻢ اﻟﻌﻤﻞ ﻣﻌﻬﻢ ﺧﺎرج اﻟﻜ‬‫ﻗﺎﺋﻤ ﺔ‬

‫ﺜﺎل‬
‫ﺘﻠﻔ ﺔ‪ .‬إﻟﻴﻚ ﻣ‬
‫ﺑﻜﻠﻤ ﺔ ﻣﺨ‬‫ﺒﺪال أي ﻛﻠﻤ ﺔ ﻓ ﻲﺳﻠ ﺴﻠ ﺔ‬
‫ﺘ‬‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪replace‬ﻻﺳ‬
‫ﺘﻌﻠﻢ ‪C:‬ﻳﻤﻜﻨﻚ اﺳ‬
‫‪10-2.‬اﻟ‬
‫ﺑﻜﻠﻤ ﺔ "ﻗﻄ ﺔ" ﻓ ﻲ ﺟﻤﻠ ﺔ‪:‬‬‫ﺒﺪال ﻛﻠﻤ ﺔ "ﻛﻠ ﺐ"‬
‫ﺘ‬‫ﺳﺮﻳﻊﻳﻮﺿﺢ ﻛﻴﻔﻴ ﺔ اﺳ‬

‫= ‪">>> message‬أﺣ ﺐ اﻟﻜﻼ ب ﺣ ًﻘﺎ‪".‬‬


‫‪")>>> message.replace‬ﻛﻠ ﺐ" ‪" ،‬ﻗﻄ ﺔ"(‬
‫"أﻧﺎ ﺣﻘﺎ أﺣ ﺐ اﻟﻘﻄﻂ‪".‬‬

‫ﺒﺪل ﻛﻠﻤ ﺔ ‪Python‬‬


‫ﺘ‬‫ﺛﻢ ‪learning_python.txt ،‬واﺳ‬‫ﺘﻮ ‪،‬‬
‫ﺗﻪ ﻟﻠ‬
‫اﻗﺮأ ﻓ ﻲ ﻛﻞﺳﻄﺮ ﻣﻦ اﻟﻤﻠﻒ اﻟﺬي أﻧﺸﺄ‬
‫ﺒﻊ ﻛﻞﺳﻄﺮ ﻣﻌﺪل ﻋﲆ اﻟﺸﺎﺷ ﺔ‪.‬‬
‫ﺜﻞ ‪C.‬اﻃ‬
‫ﺑﺎﺳﻢ ﻟﻐ ﺔ أﺧﺮى ‪ ،‬ﻣ‬

‫ﺑ ﺔ ﻓ ﻲ ﻣﻠﻒ‬
‫ﺘﺎ‬
‫اﻟﻜ‬
‫ﺑﻌﺪ إﻏﻼق‬‫ﺣﺎ‬
‫ﺘﺎ ً‬
‫ﻧﺼﺎ إﱃ ﻣﻠﻒ ‪،‬ﺳﻴﻈﻞ اﻹﺧﺮاج ﻣ‬
‫ﺘﺐ ً‬
‫ﺘﻬﺎ ﻓ ﻲ ﻣﻠﻒ‪ .‬ﻋﻨﺪﻣﺎﺗﻜ‬
‫ﺑ‬‫ﺘﺎ‬
‫ﺒﻴﺎﻧﺎ ت ﻫ ﻲ ﻛ‬
‫ﺑ ﺴﻂ اﻟﻄﺮق ﻟﺤﻔﻆ اﻟ‬
‫ﻣﻦ أ‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻛﻤﺎﻳﻤﻜﻨﻚ ﻣﺸﺎرﻛ ﺔ‬
‫ﺘﻬﺎءﺗﺸﻐﻴﻞ اﻟ‬
‫ﺑﻌﺪ اﻧ‬‫ﺒﺮﻧﺎﻣﺞ‪.‬ﻳﻤﻜﻨﻚ ﻓﺤﺺ اﻹﺧﺮاج‬
‫ﺘﻮي ﻋﲆ إﺧﺮاج اﻟ‬
‫ﺘ ﻲﺗﺤ‬
‫اﻟﻤﺤﻄ ﺔ اﻟﻄﺮﻓﻴ ﺔ اﻟ‬
‫ﺑﻘﺮاءة اﻟﻨﺺ ﻣﺮة أﺧﺮى ﻓ ﻲ اﻟﺬاﻛﺮة واﻟﻌﻤﻞ ﻣﻌﻬﺎ ﻣﺮة أﺧﺮى‬‫ﺑﺮاﻣﺞﺗﻘﻮم‬‫ﺑﺔ‬
‫ﺘﺎ‬ ‫ﻳﻀﺎ‪.‬ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ ﻛ‬ ‫ﻣﻠﻔﺎ ت اﻹﺧﺮاج ﻣﻊ اﻵﺧﺮﻳﻦ أ ً‬
‫ﻻﺣ ًﻘﺎ‪.‬‬

‫ﺑ ﺔ ﻓ ﻲ ﻣﻠﻒ ﻓﺎرغ‬
‫ﺘﺎ‬
‫اﻟﻜ‬
‫ﺑ ﺔ إﱃ اﻟﻤﻠﻒ‪.‬‬
‫ﺘﺎ‬
‫ﺒﺮ ‪Python‬أﻧﻚﺗﺮﻳﺪ اﻟﻜ‬
‫ﺛﺎﻧﻴ ﺔﺗﺨ‬‫ﺘﺨﺪام وﺳﻴﻄ ﺔ‬
‫ﺑﺎﺳ‬
‫ﺘﺪﻋﺎء )( ‪open‬‬
‫ﺘﺎج إﱃ اﺳ‬
‫ﺑ ﺔ ﻧﺺ إﱃ ﻣﻠﻒ ‪،‬ﺗﺤ‬
‫ﺘﺎ‬
‫ﻟﻜ‬
‫ﺘﻬﺎ ﻋﲆ اﻟﺸﺎﺷ ﺔ‪:‬‬ ‫ﺑﺪﻻ ً ﻣﻦ ﻃ‬
‫ﺒﺎﻋ‬ ‫ﺑ ﺴﻴﻄ ﺔ وﻧﺨﺰﻧﻬﺎ ﻓ ﻲ ﻣﻠﻒ‬‫ﺘ ﺐ رﺳﺎﻟ ﺔ‬
‫ﻟﻤﻌﺮﻓ ﺔ ﻛﻴﻔﻴ ﺔ ﻋﻤﻞ ذﻟﻚ ‪ ،‬دﻋﻨﺎ ﻧﻜ‬

‫ﺘ ﺐ_‬
‫ﻳﻜ‬ ‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'programming.txt‬‬
‫‪message.py‬‬
‫ﺘﻮح )اﺳﻢ اﻟﻤﻠﻒ ‪"w") ،‬ﻛـ ‪file_object:‬‬
‫‪u‬ﻣﻔ‬
‫ﺒﺮﻣﺠ ﺔ‪(".‬‬
‫‪")v file_object.write‬أﺣ ﺐ اﻟ‬

‫ﺘﺤﻪ‪ .‬اﻟﻮﺳﻴﻄ ﺔ‬
‫ﺜﺎل ﻟﻪ وﺳﻴﻄﺎن ‪u.‬ﻻﺗﺰال اﻟﻮﺳﻴﻄ ﺔ اﻷوﱃ ﻫ ﻲ اﺳﻢ اﻟﻤﻠﻒ اﻟﺬي ﻧﺮﻳﺪ ﻓ‬
‫ﺘﺢ )(ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘﺪﻋﺎء اﻟﻔ‬
‫اﺳ‬
‫ﺘﺢ ﻣﻠﻒ‬
‫ﺑ ﺔ‪.‬ﻳﻤﻜﻨﻚ ﻓ‬
‫ﺘﺎ‬
‫ﺘﺢ اﻟﻤﻠﻒ ﻓ ﻲ وﺿﻊ اﻟﻜ‬
‫ﺒﺮ ‪Python‬أﻧﻨﺎ ﻧﺮﻳﺪ ﻓ‬
‫ﺗﺨ‬‫ﺜﺎﻧﻴ ﺔ ‪'w' ، ،‬‬
‫اﻟ‬

‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬ ‫‪197‬‬
‫‪Machine Translated by Google‬‬

‫ﺑ ﺔ إﱃ اﻟﻤﻠﻒ ‪+').‬‬
‫ﺘﺎ‬
‫ﺑﺎﻟﻘﺮاءة واﻟﻜ‬‫ﺑ ﺔ )'‪('w‬أو وﺿﻊ اﻹﻟﺤﺎق )'‪('a‬أو اﻟﻮﺿﻊ اﻟﺬيﻳ ﺴﻤﺢ ﻟﻚ‬
‫ﺘﺎ‬
‫ﻓ ﻲ وﺿﻊ اﻟﻘﺮاءة )'‪('r‬أو وﺿﻊ اﻟﻜ‬
‫ﺘﺮاﺿ ًﻴﺎ‪.‬‬
‫ﺘﺢ ‪Python‬اﻟﻤﻠﻒ ﻓ ﻲ وﺿﻊ اﻟﻘﺮاءة ﻓﻘﻂ اﻓ‬
‫‪('r‬إذا ﺣﺬﻓ ﺖ وﺳﻴﻄ ﺔ اﻟﻮﺿﻊ ‪،‬ﺗﻔ‬

‫ﺑﺎﻟﻔﻌﻞ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻛﻦ ﺣﺬ ًرا ﻋﻨﺪ‬‫ﺘ ﺐ إﻟﻴﻪ إذا ﻟﻢﻳﻜﻦ ﻣﻮﺟﻮدًا‬
‫ﺑﺈﻧﺸﺎء اﻟﻤﻠﻒ اﻟﺬيﺗﻜ‬‫ﺗﻠﻘﺎﺋ ًﻴﺎ‬
‫ﺗﻘﻮم اﻟﻮﻇﻴﻔ ﺔ )( ‪open‬‬
‫ﺒﻞ إرﺟﺎع ﻛﺎﺋﻦ اﻟﻤﻠﻒ‪.‬‬
‫ﺑﻤ ﺴﺢ اﻟﻤﻠﻒ ﻗ‬
‫ﺑ ﺔ )'‪('w‬ﻷﻧﻪ إذا ﻛﺎن اﻟﻤﻠﻒ ﻣﻮﺟﻮدًا ‪ ،‬ﻓ ﺴﻴﻘﻮم ‪Python‬‬
‫ﺘﺎ‬
‫ﺘﺢ ﻣﻠﻒ ﻓ ﻲ وﺿﻊ اﻟﻜ‬
‫ﻓ‬

‫ﺒﺮﻧﺎﻣﺞ ﻋﲆ ﻣﺨﺮج‬
‫ﺘﻮي ﻫﺬا اﻟ‬
‫ﺑ ﺔﺳﻠ ﺴﻠ ﺔ ﻓ ﻲ اﻟﻤﻠﻒ‪ .‬ﻻﻳﺤ‬
‫ﺘﺎ‬
‫ﺘﺨﺪم ﻃﺮﻳﻘ ﺔ )( ‪write‬ﻋﲆ ﻛﺎﺋﻦ اﻟﻤﻠﻒ ﻟﻜ‬
‫ﻓ ﻲ ‪v ،‬ﻧ ﺴ‬
‫ﺘﺮىﺳﻄ ﺮًا واﺣﺪًا‪:‬‬
‫ﺘﺤ ﺖ ﻣﻠﻒ ‪program.txt ،‬ﻓ ﺴ‬
‫ﻃﺮﻓ ﻲ ‪ ،‬وﻟﻜﻦ إذا ﻓ‬

‫ﺒﺮﻣﺠ ﺔ‪.‬‬
‫‪program.txt‬أﻧﺎ أﺣ ﺐ اﻟ‬

‫ﺑ ﺔ ﻧﺺ ﺟﺪﻳﺪ ﻓﻴﻪ واﻟﻨ ﺴﺦ‬


‫ﺘﺎ‬
‫ﺘﺤﻪ وﻛ‬
‫ﺑﻚ‪.‬ﻳﻤﻜﻨﻚ ﻓ‬‫ﺗﺮ اﻟﺨﺎص‬
‫ﺒﻴﻮ‬
‫ﺜﻞ أي ﻣﻠﻒ آﺧﺮ ﻋﲆ ﺟﻬﺎز اﻟﻜﻤ‬
‫ﺘﺼﺮف ﻫﺬا اﻟﻤﻠﻒ ﻣ‬
‫ﻳ‬
‫ﻣﻨﻪ واﻟﻠﺼﻖ ﻓﻴﻪ وﻣﺎ إﱃ ذﻟﻚ‪.‬‬

‫ﺒﻴﺎﻧﺎ ت اﻟﺮﻗﻤﻴ ﺔ ﻓ ﻲ ﻣﻠﻒ‬


‫ﺑ ﺔﺳﻼﺳﻞ ﻓﻘﻂ إﱃ ﻣﻠﻒ ﻧﺼ ﻲ‪ .‬إذا ﻛﻨ ﺖﺗﺮﻏ ﺐ ﻓ ﻲﺗﺨﺰﻳﻦ اﻟ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻦ ﻟـ ‪N ote Python‬ﻛ‬
‫ﺘﺨﺪام وﻇﻴﻔ ﺔ ‪str () .‬‬ ‫ﺒﻴﺎﻧﺎ ت إﱃﺗﻨ ﺴﻴﻖﺳﻠ ﺴﻠ ﺔ أوﻻ ً‬
‫ﺑﺎﺳ‬ ‫ﺘﻌﻴﻦ ﻋﻠﻴﻚﺗﺤﻮﻳﻞ اﻟ‬
‫ﻣﻠﻒ ﻧﺼ ﻲ ‪ ،‬ﻓ ﺴﻴ‬

‫ﺘﻌﺪدة‬
‫ﺑ ﺔ أﺳﻄﺮ ﻣ‬
‫ﺘﺎ‬
‫ﻛ‬
‫ﺜﺮ ﻣﻦﺳﻄﺮ واﺣﺪ دونﺗﻀﻤﻴﻦ‬
‫ﺒ ﺖ أﻛ‬
‫ﺘ‬‫ﺒﻪ ‪ .‬ﻟﺬﻟﻚ إذا ﻛ‬
‫ﺘ‬‫ﺑ ﺔ )(أي أﺳﻄﺮ ﺟﺪﻳﺪة إﱃ اﻟﻨﺺ اﻟﺬيﺗﻜ‬
‫ﺘﺎ‬
‫ﻻﺗﻀﻴﻒ وﻇﻴﻔ ﺔ اﻟﻜ‬
‫ﺑﺎﻟﺸﻜﻞ اﻟﺬيﺗﺮﻳﺪه‪:‬‬‫أﺣﺮفﺳﻄﺮ ﺟﺪﻳﺪ ‪ ،‬ﻓﻘﺪ ﻻﻳﻈﻬﺮ اﻟﻤﻠﻒ‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'programming.txt‬‬

‫ﻣﻊ )'‪open (filename، 'w‬ﻛـ ‪file_object:‬‬


‫ﺒﺮﻣﺠ ﺔ‪(".‬‬
‫‪")file_object.write‬أﺣ ﺐ اﻟ‬
‫‪")file_object.write‬أﺣ ﺐ إﻧﺸﺎء أﻟﻌﺎ ب ﺟﺪﻳﺪة‪(".‬‬

‫ﺘﺮى اﻟ ﺴﻄﺮﻳﻦ ﻣﻀﻐﻮﻃﻴﻦ ﻣﻌً ﺎ‪:‬‬


‫ﺘﺤ ﺖ ‪program.txt ،‬ﻓ ﺴ‬
‫إذا ﻓ‬

‫ﺘﻜﺎر اﻟﻌﺎ ب ﺟﺪﻳﺪة‪.‬‬


‫ﺑ‬‫ﺒﺮﻣﺠ ﺔ اﻧﺎ اﺣ ﺐ ا‬
‫اﻧﺎ اﺣ ﺐ اﻟ‬

‫ﺑﻬﺎ‪:‬‬‫ﺒﺎرا ت )( ‪write‬إﱃ ﻇﻬﻮر ﻛﻞﺳﻠ ﺴﻠ ﺔ ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟﺨﺎص‬


‫ﻳﺆديﺗﻀﻤﻴﻦ أﺳﻄﺮ ﺟﺪﻳﺪة ﻓ ﻲ ﻋ‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'programming.txt‬‬

‫ﻣﻊ )'‪open (filename، 'w‬ﻛـ ‪file_object:‬‬


‫ﺒﺮﻣﺠ ﺔ‪\ n") .‬‬
‫‪")file_object.write‬أﺣ ﺐ اﻟ‬
‫‪")file_object.write‬أﺣ ﺐ إﻧﺸﺎء أﻟﻌﺎ ب ﺟﺪﻳﺪة‪\ n") .‬‬

‫ﻳﻈﻬﺮ اﻹﺧﺮاج اﻵن ﻓ ﻲ أﺳﻄﺮ ﻣﻨﻔﺼﻠ ﺔ‪:‬‬

‫ﺒﺮﻣﺠ ﺔ‪.‬‬
‫اﺣ ﺐ اﻟ‬
‫أﻧﺎ أﺣ ﺐ إﻧﺸﺎء أﻟﻌﺎ ب ﺟﺪﻳﺪة‪.‬‬

‫‪198‬اﻟﻔﺼﻞ اﻟﻌﺎﺷﺮ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻨ ﺴﻴﻖ ﻣﻠﻒ‬


‫ﺘﺨﺪام اﻟﻤ ﺴﺎﻓﺎ ت وأﺣﺮف اﻟﺠﺪوﻟ ﺔ واﻷﺳﻄﺮ اﻟﻔﺎرﻏ ﺔ ﻟ‬ ‫ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﺳ‬
‫ﺘﻨﺪ إﱃ اﻟﻤﺤﻄ ﺔ اﻟﻄﺮﻓﻴ ﺔ‪.‬‬
‫ﺗﻤﺎﻣﺎ ﻛﻤﺎ ﻛﻨ ﺖﺗﻔﻌﻞ ﻣﻊ اﻹﺧﺮاج اﻟﻤ ﺴ‬
‫ً‬ ‫اﻹﺧﺮاج ‪،‬‬

‫إﻟﺤﺎق ﻣﻠﻒ‬
‫ﺘﺢ اﻟﻤﻠﻒ ﻓ ﻲ وﺿﻊ اﻹﻟﺤﺎق‪ .‬ﻋﻨﺪﻣﺎ‬
‫ﺘﻮى ﻣﻮﺟﻮد ‪،‬ﻳﻤﻜﻨﻚ ﻓ‬
‫ﺑ ﺔ ﻓﻮق ﻣﺤ‬‫ﺑﺪﻻ ً ﻣﻦ اﻟﻜ‬
‫ﺘﺎ‬ ‫ﺘﻮى إﱃ ﻣﻠﻒ‬
‫إذا ﻛﻨ ﺖﺗﺮﻳﺪ إﺿﺎﻓ ﺔ ﻣﺤ‬
‫ﺒﻬﺎ إﱃ‬
‫ﺘ‬‫ﺘﻢ إﺿﺎﻓ ﺔ أي أﺳﻄﺮﺗﻜ‬
‫ﺘ‬ ‫ﺘﺢ ﻣﻠ ًﻔﺎ ﻓ ﻲ وﺿﻊ اﻹﻟﺤﺎق ‪ ،‬ﻓﺈن ‪Python‬ﻻﺗﻤ ﺴﺢ اﻟﻤﻠﻒ ﻗ‬
‫ﺒﻞ إرﺟﺎع ﻛﺎﺋﻦ اﻟﻤﻠﻒ‪.‬ﺳ‬ ‫ﺗﻔ‬
‫ﺑﺈﻧﺸﺎء ﻣﻠﻒ ﻓﺎرغ ﻟﻚ‪.‬‬
‫ﺑﻌﺪ ‪ ،‬ﻓ ﺴﻴﻘﻮم ‪Python‬‬‫اﻟﻤﻠﻒ ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻟﻤﻠﻒ‪ .‬إذا ﻟﻢﻳﻜﻦ اﻟﻤﻠﻒ ﻣﻮﺟﻮدًا‬

‫ﺘ ﻲﺗﺠﻌﻠﻨﺎ ﻧﺤ ﺐ اﻟﻘﻮاﻋﺪ اﻟﻠﻐﻮﻳ ﺔ‬


‫ﺒﺎ ب اﻟﺠﺪﻳﺪة اﻟ‬
‫ﺑﻌﺾ اﻷﺳ‬‫دﻋﻨﺎ ﻧﻌﺪل ‪write_message.py‬ﻋﻦ ﻃﺮﻳﻖ إﺿﺎﻓ ﺔ‬
‫ﺘﺮاﻓﻴ ﺔ إﱃ ﻣﻠﻒ ‪program.txt‬اﻟﺤﺎﻟ ﻲ‪:‬‬
‫اﻻﺣ‬

‫ﺘ ﺐ_‬
‫ﻳﻜ‬ ‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'programming.txt‬‬
‫‪message.py‬‬
‫ﺘﻮح )اﺳﻢ اﻟﻤﻠﻒ ‪" ،‬أ"( ﻛـ ‪file_object:‬‬
‫‪u‬ﻣﻔ‬
‫ﺒﻴﺮة‪\ n") .‬‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻜ‬ ‫‪")v file_object.write‬أﺣ ﺐ أ ً‬
‫ﻳﻀﺎ إﻳﺠﺎد اﻟﻤﻌﻨﻰ ﻓ ﻲ ﻣﺠﻤﻮﻋﺎ ت اﻟ‬
‫ﺘﺼﻔﺢ‪\ n") .‬‬
‫ﺒﻴﻘﺎ تﻳﻤﻜﻦﺗﺸﻐﻴﻠﻬﺎ ﻓ ﻲ ﻣ‬
‫‪")file_object.write‬أﺣ ﺐ إﻧﺸﺎءﺗﻄ‬

‫ﺘ ﺐﺳﻄﺮﻳﻦ‬
‫ﺑ ﺔ ﻓﻮق اﻟﻤﻠﻒ اﻟﻤﻮﺟﻮد‪ .‬ﻓ ﻲ ‪v‬ﻧﻜ‬‫ﺑﺪﻻ ً ﻣﻦ اﻟﻜ‬
‫ﺘﺎ‬ ‫ﺘﺢ اﻟﻤﻠﻒ ﻟﻺﻟﺤﺎق‬
‫ﺘﺨﺪم اﻟﻮﺳﻴﻄ ﺔ "‪"a‬ﻟﻔ‬
‫ﻓ ﻲ ‪u‬ﻧ ﺴ‬
‫ﺟﺪﻳﺪﻳﻦﻳﻀﺎﻓﺎن إﱃ ‪program.txt:‬‬

‫ﺒﺮﻣﺠ ﺔ‪.‬‬
‫‪program.txt‬أﻧﺎ أﺣ ﺐ اﻟ‬
‫أﻧﺎ أﺣ ﺐ إﻧﺸﺎء أﻟﻌﺎ ب ﺟﺪﻳﺪة‪.‬‬
‫ﺒﻴﺮة‪.‬‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻜ‬ ‫أﻧﺎ أ ً‬
‫ﻳﻀﺎ أﺣ ﺐ إﻳﺠﺎد اﻟﻤﻌﻨﻰ ﻓ ﻲ ﻣﺠﻤﻮﻋﺎ ت اﻟ‬
‫ﺘﺼﻔﺢ‪.‬‬
‫ﺒﻴﻘﺎ تﻳﻤﻜﻦﺗﺸﻐﻴﻠﻬﺎ ﻓ ﻲ ﻣ‬
‫أﺣ ﺐ إﻧﺸﺎءﺗﻄ‬

‫ﺘﻮ‪.‬‬
‫ﺘﻮى اﻟﺠﺪﻳﺪ اﻟﺬي أﺿﻔﻨﺎه ﻟﻠ‬
‫ﺑﺎﻟﻤﺤ‬‫ﺒﻮﻋ ﺔ‬
‫ﺘ‬‫ﺘﻮﻳﺎ ت اﻷﺻﻠﻴ ﺔ ﻟﻠﻤﻠﻒ ‪ ،‬ﻣ‬
‫ﺑﺎﻟﻤﺤ‬‫ﺑﻨﺎ اﻷﻣﺮ‬‫ﺘﻬ ﻲ‬
‫ﻳﻨ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘ ﺐ اﺳﻤﻬﻢ ﻓ ﻲ ﻣﻠﻒﻳ ﺴﻤﻰ ‪guest.txt.‬‬


‫ﺑﺈدﺧﺎل اﺳﻤﻪ‪ .‬ﻋﻨﺪﻣﺎﻳﺮدون ‪ ،‬اﻛ‬‫ﺘﺨﺪم‬
‫ﺑﺮﻧﺎﻣﺠًﺎﻳﻄﺎﻟ ﺐ اﻟﻤ ﺴ‬‫ﺘﺐ‬
‫‪10-3. Guest:‬اﻛ‬

‫ﺒﻊﺗﺤﻴ ﺔ ﻋﲆ‬
‫ﺑﺈدﺧﺎل أﺳﻤﺎﺋﻬﻢ‪ .‬ﻋﻨﺪﻣﺎﻳﺪﺧﻠﻮن اﺳﻤﻬﻢ ‪ ،‬اﻃ‬‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺘ ﺐ ﺣﻠﻘ ﺔﺗﻜﺮارﻳ ﺔﺗﻄﺎﻟ ﺐ اﻟﻤ ﺴ‬
‫ﺘﺮ اﻟﺰوار‪ :‬اﻛ‬
‫‪10-4.‬دﻓ‬
‫ﺗﺄﻛﺪ ﻣﻦ ﻇﻬﻮر ﻛﻞ إدﺧﺎل ﻓ ﻲﺳﻄﺮ ﺟﺪﻳﺪ ﻓ ﻲ‬
‫ﺗﻬﻢ ﻓ ﻲ ﻣﻠﻒﻳ ﺴﻤﻰ ‪guest_book.txt.‬‬
‫اﻟﺸﺎﺷ ﺔ وأﺿﻒﺳﻄ ﺮًاﻳ ﺴﺠﻞ زﻳﺎر‬
‫اﻟﻤﻠﻒ‪.‬‬

‫ُﺪﺧﻞ ﻓﻴﻬﺎ‬
‫ﺒﺮﻣﺠ ﺔ‪ .‬ﻓ ﻲ ﻛﻞ ﻣﺮةﻳ‬
‫ﺑﺎﻟ‬‫ﺑﻬﻢ‬
‫ﺒ ﺐ إﻋﺠﺎ‬
‫ﺘ ﻲﺗ ﺴﺄل اﻟﻨﺎس ﻋﻦﺳ‬
‫ﺘ ﺐ ﺣﻠﻘ ﺔ ‪while‬اﻟ‬
‫ﺒﺮﻣﺠ ﺔ‪ :‬اﻛ‬
‫ﺘﻄﻼع اﻟ‬
‫‪10-5.‬اﺳ‬
‫ﺒﺎ إﱃ ﻣﻠﻒﻳﺨﺰن ﺟﻤﻴﻊ اﻟﺮدود‪.‬‬
‫ﺒً‬
‫ﺒﺎ ‪ ،‬أﺿﻒﺳ‬
‫ﺒً‬
‫ﺷﺨﺺﺳ‬

‫ﺜﻨﺎءا ت ‪199‬‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫اﺳ‬
‫ﺒﺮﻧﺎﻣﺞ‪ .‬ﻋﻨﺪﻣﺎﻳﺤﺪ ث ﺧﻄﺄ‬
‫ﺛﻨﺎءﺗﻨﻔﻴﺬ اﻟ‬
‫ﺘ ﻲﺗﻈﻬﺮ أ‬
‫ﺜﻨﺎءا ت ﻹدارة اﻷﺧﻄﺎء اﻟ‬
‫ﺘ‬‫ﺘﺨﺪم ‪Python‬ﻛﺎﺋﻨﺎ ت ﺧﺎﺻ ﺔﺗ ﺴﻤﻰ اﻻﺳ‬
‫ﺗﺴ‬
‫ﺘﻤﺮ‬
‫ﺜﻨﺎء ‪ ،‬ﻓ ﺴﻴ ﺴ‬
‫ﺘ‬‫ﺒ ﺖ رﻣ ًﺰاﻳﻌﺎﻟﺞ اﻻﺳ‬
‫ﺘ‬‫ﺜﻨﺎﺋ ًﻴﺎ‪ .‬إذا ﻛ‬
‫ﺘ‬‫ﺑﻌﺪ ذﻟﻚ ‪ ،‬ﻓﺈﻧﻪﻳﻨﺸ ﺊ ﻛﺎﺋﻨًﺎ اﺳ‬‫ﺘﺄﻛﺪ ﻣﻤﺎﻳﺠ ﺐ ﻓﻌﻠﻪ‬
‫ﻳﺠﻌﻞ ‪Python‬ﻏﻴﺮ ﻣ‬
‫ﺘﻀﻤﻦﺗﻘﺮﻳ ﺮًا ﻋﻦ‬
‫ﺒﻊ ‪ ،‬واﻟﺬيﻳ‬
‫ﺘ‬‫ﺘ‬‫ﺒﻊ اﻟ‬
‫ﺘ‬‫ﺒﺮﻧﺎﻣﺞ وﻳﻌﺮضﺗ‬
‫ﺘﻮﻗﻒ اﻟ‬
‫ﺜﻨﺎء ‪ ،‬ﻓ ﺴﻴ‬
‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺳ‬
‫ﺒﺮﻧﺎﻣﺞ ﻓ ﻲ اﻟﻌﻤﻞ‪ .‬إذا ﻟﻢﺗ‬
‫اﻟ‬
‫ﺜﻨﺎء اﻟﺬيﺗﻢ ﻃﺮﺣﻪ‪.‬‬
‫ﺘ‬‫اﻻﺳ‬

‫ﺘﻠ ﺔ ‪try-except‬ﻣﻦ ‪Python‬أنﺗﻔﻌﻞ ﺷﻴ ًﺌﺎ ‪،‬‬


‫ﺗﻄﻠ ﺐ ﻛ‬
‫ﺘﻞ ‪try-except .‬‬
‫ﺘﺨﺪام ﻛ‬
‫ﺑﺎﺳ‬‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺳ‬
‫ﺘﻢ اﻟ‬
‫ﻳ‬
‫ﺑﺮاﻣﺠﻚ ﻓ ﻲ‬‫ﺘﻤﺮ‬
‫ﺘﺴ‬‫ﺘﻞ ‪try-except ،‬ﺳ‬
‫ﺘﺨﺪام ﻛ‬
‫ﺜﻨﺎء‪ .‬ﻋﻨﺪ اﺳ‬
‫ﺘ‬‫ﺑﻤﺎﻳﺠ ﺐ ﻓﻌﻠﻪ إذاﺗﻢ رﻓﻊ اﻻﺳ‬
‫ﺒﺮ ‪Python‬‬ ‫ﻟﻜﻨﻬﺎ أ ً‬
‫ﻳﻀﺎﺗﺨ‬
‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺑﻜ ﺔ ﻟﻠﻤ ﺴ‬
‫ﺘ ﻲﻳﻤﻜﻦ أنﺗﻜﻮن ﻣﺮ‬
‫ﺒﻊ ‪ ،‬اﻟ‬
‫ﺘ‬‫ﺘ‬‫ﺑﺪﻻ ً ﻣﻦ ﻋﻤﻠﻴﺎ ت اﻟ‬‫ﺑﺸﻜﻞ ﺧﺎﻃ ﺊ‪.‬‬‫ﺑﺪأ ت اﻷﻣﻮرﺗ ﺴﻴﺮ‬‫ﺘﻰ إذا‬
‫اﻟﻌﻤﻞ ﺣ‬
‫ﺒﻬﺎ‪.‬‬
‫ﺘ‬‫ﺘﺨﺪﻣﻮن رﺳﺎﺋﻞ ﺧﻄﺄ ودﻳ ﺔﺗﻜ‬
‫ﺗﻬﺎ ‪،‬ﺳﻴﺮى اﻟﻤ ﺴ‬
‫ﻟﻘﺮاء‬

‫ﺜﻨﺎء ‪ZeroDivisionError‬‬
‫ﺘ‬‫ﻣﻌﺎﻟﺠ ﺔ اﺳ‬
‫ﺘﺤﻴﻞ ﻗ ﺴﻤ ﺔ رﻗﻢ ﻋﲆ ﺻﻔﺮ ‪،‬‬
‫ﺑﻤﺎﺗﻌﻠﻢ أﻧﻪ ﻣﻦ اﻟﻤ ﺴ‬
‫ﺜﻨﺎء‪ .‬ر‬
‫ﺘ‬‫ﺛﺎرة اﺳ‬
‫ﺑﺈ‬‫ﺜﻮن‬
‫ﺑﺎﻳ‬‫ﺒ ﺐ ﻓ ﻲ ﻗﻴﺎم‬
‫ﺘﺴ‬‫ﺑ ﺴﻴﻂﻳ‬‫ﻟﻨﻠﻖ ﻧﻈﺮة ﻋﲆ ﺧﻄﺄ‬
‫ِ‬
‫ﺑﺬﻟﻚ ﻋﲆ أي ﺣﺎل‪:‬‬‫ﺜﻮن اﻟﻘﻴﺎم‬
‫ﺑﺎﻳ‬‫ﻟﻜﻦ دﻋﻨﺎ ﻧﻄﻠ ﺐ ﻣﻦ‬

‫)‪(5/0‬‬
‫ﺴﺎم‬‫ﺒﺎﻋ ﺔ‬
‫ﻃ‬
‫اﻻﻧﻘ‬

‫ﺒﻊ‪:‬‬
‫ﺘ‬‫ﺑﺬﻟﻚ ‪ ،‬ﻟﺬﻟﻚ ﻧﺤﺼﻞ ﻋﲆﺗ‬‫ﺜﻮن اﻟﻘﻴﺎم‬
‫ﺑﺎﻳ‬‫ﺘﻄﻴﻊ‬
‫ﺒﻊ ﻻﺗ ﺴ‬
‫ﺑﺎﻟﻄ‬

‫‪)Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬


‫ﺒﺎﻋ ﺔ‬
‫ﻣﻠﻒ ‪"div.py" ،‬اﻟ ﺴﻄﺮ ‪1 ،‬ﻓ ﻲ >‪<module‬ﻃ‬
‫‪(5/0) u ZeroDivisionError:‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ‬

‫ﺑﻼغ ﻋﻨﻪ ﻓ ﻲ ‪u‬ﻓ ﻲ ‪ traceback ، ZeroDivisionError ،‬ﻫﻮ ‪excep‬‬


‫اﻟﺨﻄﺄ اﻟﺬيﺗﻢ اﻹ‬
‫ﺒﻪ ﻣﻨﻬﺎ‪ .‬ﻋﻨﺪﻣﺎﻳﺤﺪ ث‬
‫ﻛﺎﺋﻦ ﻧﺸﻮﺋﻬﺎ‪.‬ﺗﻨﺸ ﺊ ‪ Python‬ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻟﻜﺎﺋﻨﺎ ت ردًا ﻋﲆ ﻣﻮﻗﻒ ﻻﻳﻤﻜﻨﻬﺎ ﻓﻴﻪ ﻓﻌﻞ ﻣﺎ ﻧﻄﻠ‬
‫ﺒﺮ‬
‫ﺑﺮﻧﺎﻣﺠﻨﺎ‪.‬ﺳﻨﺨ‬‫ﺘﻌﺪﻳﻞ‬
‫ﺘﺨﺪام ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت ﻟ‬
‫ﺛﻴﺮ‪.‬ﻳﻤﻜﻨﻨﺎ اﺳ‬
‫ﺜﻨﺎء اﻟﺬي أ‬
‫ﺘ‬‫ﺑﻨﻮع اﻻﺳ‬‫ﺒﺮﻧﺎ‬
‫ﺗﺨ‬‫ﺒﺮﻧﺎﻣﺞ و‬
‫ﺜﻮن اﻟ‬
‫ﺑﺎﻳ‬‫ﻫﺬا ‪،‬ﺗﻮﻗﻒ‬
‫ﺑﻬﺬه اﻟﻄﺮﻳﻘ ﺔ ‪ ،‬إذا ﺣﺪ ث ذﻟﻚ ﻣﺮة أﺧﺮى ‪ ،‬ﻓﻨﺤﻦ ﻋﲆ‬‫ﺜﻨﺎءا ت ؛‬
‫ﺘ‬‫ﺑﻤﺎﻳﺠ ﺐ ﻓﻌﻠﻪ ﻋﻨﺪ ﺣﺪو ث ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻻﺳ‬
‫‪Python‬‬
‫ﺘﻌﺪاد‪.‬‬
‫اﺳ‬

‫ﺘﺨﺪام ‪try-except Blocks‬‬


‫ﺑﺎﺳ‬
‫ﺒﺮ ‪Python‬‬
‫ﺜﻨﺎء اﻟﺬي ﻗﺪﻳﻈﻬﺮ‪ .‬أﻧ ﺖﺗﺨ‬
‫ﺘ‬‫ﺘﻠ ﺔ ‪try-except‬ﻟﻤﻌﺎﻟﺠ ﺔ اﻻﺳ‬
‫ﺑﺔ ﻛ‬
‫ﺘﺎ‬
‫ﺘﻘﺪ أن ﺧﻄﺄ ﻣﺎ ﻗﺪﻳﺤﺪ ث ‪،‬ﻳﻤﻜﻨﻚ ﻛ‬
‫ﻋﻨﺪﻣﺎﺗﻌ‬
‫ﺜﻨﺎء‪.‬‬
‫ﺘ‬‫ﺘﺞ ﻋﻦ اﻟﻜﻮد ﻧﻮﻋً ﺎ ﻣﻌﻴﻨًﺎ ﻣﻦ اﻻﺳ‬
‫ﺑﻤﺎﻳﺠ ﺐ ﻓﻌﻠﻪ إذا ﻧ‬‫ﺒﺮ ﻫﺎ‬
‫ﺗﺨ‬‫ﺒﺮﻣﺠﻴ ﺔ ‪ ،‬و‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻌﺾ اﻟ‬‫ﺑﻤﺤﺎوﻟ ﺔﺗﺸﻐﻴﻞ‬

‫ﺜﻨﺎء ‪ZeroDivisionError :‬‬


‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﺳ‬
‫ﺘﻠ ﺔ ‪try-except‬ﻟﻠ‬
‫ﺒﺪو ﻋﻠﻴﻪ ﻛ‬
‫إﻟﻴﻚ ﻣﺎﺗ‬

‫ﻳﺤﺎول‪:‬‬
‫ﺒﺎﻋ ﺔ )‪(5/0‬‬
‫ﻃ‬
‫ﺜﻨﺎء ‪ZeroDivisionError:‬‬ ‫ﺘ‬‫ﺑﺎﺳ‬
‫‪")print‬ﻻﻳﻤﻜﻨﻚ اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ!"(‬

‫‪200‬اﻟﻔﺼﻞ اﻟﻌﺎﺷﺮ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻠ ﺔ ‪try .‬إذا ﻛﺎﻧ ﺖ اﻟ‬
‫ﺒ ﺐ ﻓ ﻲ اﻟﺨﻄﺄ ‪ ،‬داﺧﻞ ﻛ‬
‫ﻧﻀﻊ ‪print (5/0) ،‬اﻟ ﺴﻄﺮ اﻟﺬيﺗ ﺴ‬
‫ﺘﻠ ﺔ ‪try‬ﻓ ﻲ ﺣﺪو ث ﺧﻄﺄ ‪ ،‬ﻓﺈن‬
‫ﺒ ﺐ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓ ﻲ ﻛ‬
‫ﺜﻨﺎء ‪ .‬إذاﺗ ﺴ‬
‫ﺘ‬‫ﺘﻠ ﺔ اﻻﺳ‬
‫ﺘﺨﻄﻰ ﻛ‬
‫ﺗ‬‫ﺗﻌﻤﻞ ‪ ،‬ﻓﺈن ‪Python‬‬
‫ﺘﻠ ﺔ ‪try‬‬
‫ﻛ‬
‫ﺘﻠ ﺔ‪.‬‬
‫ﺘﺸﻐﻴﻞ اﻟﻜﻮد ﻓ ﻲﺗﻠﻚ اﻟﻜ‬
‫ﺑ‬‫ﺑﻖ ﺧﻄﺄ ﻫﺎ ﻣﻊ اﻟﺨﻄﺄ اﻟﺬيﺗﻢ رﻓﻌﻪ وﻳﻘﻮم‬
‫ﺘﻄﺎ‬
‫ﺘ ﻲﻳ‬
‫ﺜﻨﺎء اﻟ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ‬
‫ﺒﺤ ﺚ ﻋﻦ ﻛ‬
‫ﺗ‬‫‪Python‬‬

‫ﺘﻠ ﺔ‬
‫ﺒﺤ ﺚ ‪Python‬ﻋﻦ ﻛ‬
‫ﺘﻠ ﺔ ‪try‬ﺧﻄﺄ ‪ZeroDivisionError ،‬ﻟﺬﻟﻚﺗ‬
‫ﺘﺞ ﻋﻦ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓ ﻲ ﻛ‬
‫ﺜﺎل ‪،‬ﻳﻨ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺑﺪﻻ ً‬‫ﺘﺨﺪم رﺳﺎﻟ ﺔ ﺧﻄﺄ ودﻳ ﺔ‬
‫ﺘﻠ ﺔ ‪ ،‬وﻳﺮى اﻟﻤ ﺴ‬
‫ﺘﺸﻐﻴﻞ اﻟﻜﻮد ﻓ ﻲﺗﻠﻚ اﻟﻜ‬
‫ﺑ‬‫ﺛﻢﺗﻘﻮم ‪Python‬‬‫ﺑ ﺔ‪.‬‬
‫ﺘﺠﺎ‬
‫ﺑﻜﻴﻔﻴ ﺔ اﻻﺳ‬‫ﺒﺮ ﻫﺎ‬
‫ﺜﻨﺎءﺗﺨ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﻣﻦ ‪traceback:‬‬

‫ﻻﻳﻤﻜﻨﻚ اﻟﻘ ﺴﻤ ﺔ ﻋﲆ اﻟﺼﻔﺮ!‬

‫ﺒﺮﻧﺎ ‪Python‬‬
‫ﺒﺮﻧﺎﻣﺞ ﻓ ﻲ اﻟﻌﻤﻞﻷﻧﻨﺎ أﺧ‬
‫ﺘﻤﺮ اﻟ‬
‫ﺘﻠ ﺔ ‪try-except ،‬ﻓ ﺴﻴ ﺴ‬
‫ﺒﺮﻣﺠﻴ ﺔ ﻛ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺒﻌ ﺖ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬
‫ﺗ‬‫إذا ا‬
‫ﺑﻤﻮاﺻﻠ ﺔ اﻟﻌﻤﻞ‪.‬‬‫ﺒﺮﻧﺎﻣﺞ ﻣﺎ‬
‫ﺘﺸﺎف اﻟﺨﻄﺄ ﻟ‬
‫ﺜﺎلﻳﻤﻜﻦ أنﻳ ﺴﻤﺢ ﻓﻴﻪ اﻛ‬
‫ﻟﻨﻠﻖ ﻧﻈﺮة ﻋﲆ ﻣ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺨﻄﺄ‪ِ .‬‬
‫ﺑﻜﻴﻔﻴ ﺔ اﻟ‬

‫ﺜﻨﺎءا ت ﻟﻤﻨﻊ اﻷﻋﻄﺎل‬


‫ﺘ‬‫ﺘﺨﺪام اﻻﺳ‬
‫اﺳ‬
‫ﺑﻌﺪ ﺣﺪو ث‬‫ﺒﺮﻧﺎﻣﺞ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻌﻤﻞ‬
‫ﺑﺸﻜﻞ ﺧﺎص ﻋﻨﺪﻣﺎﻳﻜﻮن ﻟﺪى اﻟ‬‫ﻣﻬﻤﺎ‬
‫ً‬ ‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ أﻣ ﺮًا‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻷﺧﻄﺎء‬
‫ﺒﺮ اﻟ‬
‫ﺘ‬‫ﻳﻌ‬
‫ﺒﺮﻧﺎﻣﺞ ﻟﻤﺪﺧﻼ ت ﻏﻴﺮ ﺻﺎﻟﺤ ﺔ‬
‫ﺘﺠﺎ ب اﻟ‬
‫ﺘﺨﺪﻣﻴﻦ ﻋﲆ اﻹدﺧﺎل‪ .‬إذا اﺳ‬
‫ﺘ ﻲﺗﺤ ﺚ اﻟﻤ ﺴ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺒﺎ ﻓ ﻲ اﻟ‬
‫اﻟﺨﻄﺄ‪.‬ﻳﺤﺪ ث ﻫﺬا ﻏﺎﻟ ً‬
‫ﺑﺪﻻ ً ﻣﻦ اﻟ‬
‫ﺘﻌﻄﻞ‪.‬‬ ‫ﺜﺮ ﺻﺎﻟﺤًﺎ‬
‫ﺑﺈدﺧﺎل أﻛ‬‫ﺒﺔ‬
‫ﺒﻖ ‪ ،‬ﻓﻴﻤﻜﻨﻪ اﻟﻤﻄﺎﻟ‬
‫ﺑﺸﻜﻞ ﻣ ﺴ‬

‫ﺑﺎﻟﻘ ﺴﻤ ﺔ ﻓﻘﻂ‪:‬‬‫ﺑ ﺴﻴﻄ ﺔﺗﻘﻮم‬‫ﺒﺔ‬


‫ﺑﺈﻧﺸﺎء آﻟ ﺔ ﺣﺎﺳ‬‫ﻟﻨﻘﻢ‬

‫اﻻﻧﻘ ﺴﺎم‬ ‫‪")print‬أﻋﻄﻨ ﻲ رﻗﻤﻴﻦ ‪ ،‬وﺳﺄﻗ ﺴﻤﻬﻤﺎ‪(".‬‬


‫ﺒﺎﻋ ﺔ )"أدﺧﻞ" ‪"q‬ﻟﻺﻧﻬﺎء‪(".‬‬
‫ﻃ‬

‫اﺣﻴﺎﻧﺎ ﺻﺤﻴﺢ‪:‬‬

‫‪u first_number = input ("\ n‬اﻟﺮﻗﻢ اﻷول‪(":‬‬


‫‪if first_number == 'q':‬‬
‫ﺘﺮاﺣ ﺔ‬
‫اﺳ‬

‫ﺜﺎﻧ ﻲ‪(":‬‬
‫‪")v second_number = input‬اﻟﺮﻗﻢ اﻟ‬
‫‪if second_number == 'q':‬‬
‫ﺘﺮاﺣ ﺔ‬
‫اﺳ‬

‫ﺑ ﺔ )‪= int (first_number) / int (second_number‬‬


‫‪w‬إﺟﺎ‬
‫ﺑ ﺔ(‬
‫ﺒﺎﻋ ﺔ )إﺟﺎ‬
‫ﻃ‬

‫ﺛﻢ‬
‫ﺛﺎن ‪v.‬‬
‫ﺑﺈدﺧﺎل ‪q‬ﻟﻠﺨﺮوج ‪ ،‬رﻗﻢ ٍ‬ ‫ﺘﺨﺪم‬ ‫ﺑﺈدﺧﺎل أول رﻗﻢ ‪u ،‬وإذا ﻟﻢﻳﻘﻢ اﻟﻤ ﺴ‬ ‫ﺘﺨﺪم‬‫ﺒﺮﻧﺎﻣﺞ اﻟﻤ ﺴ‬
‫ﻳﻄﺎﻟ ﺐ ﻫﺬا اﻟ‬
‫ﺑﺎﻟﻘ ﺴﻤ ﺔ‬‫ﺘﻚ‬‫ﺒ‬‫ﺒﺮﻧﺎﻣﺞ ﻻﻳﻔﻌﻞ ﺷﻴ ًﺌﺎ ﻟﻤﻌﺎﻟﺠ ﺔ اﻷﺧﻄﺎء ‪ ،‬ﻟﺬا ﻓﺈن ﻣﻄﺎﻟ‬ ‫ﺑ ﺔ ث‪ .‬ﻫﺬا اﻟ‬
‫ﻧﻘ ﺴﻢ ﻫﺬﻳﻦ اﻟﺮﻗﻤﻴﻦ ﻟﻠﺤﺼﻮل ﻋﲆ إﺟﺎ‬
‫ﻋﲆ ﺻﻔﺮﻳﺆدي إﱃﺗﻌﻄﻠﻪ‪:‬‬

‫أﻋﻄﻨ ﻲ ﻋﺪدﻳﻦ ‪ ،‬وﺳﺄﻗ ﺴﻤﻬﻤﺎ‪.‬‬


‫أدﺧﻞ "‪"q‬ﻟﻺﻧﻬﺎء‪.‬‬

‫اﻟﺮﻗﻢ اﻷول‪5 :‬‬


‫ﺜﺎﻧ ﻲ‪0 :‬‬
‫اﻟﺮﻗﻢ اﻟ‬

‫‪)Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬


‫ﻣﻠﻒ ‪"div.py" ،‬اﻟ ﺴﻄﺮ ‪9 ،‬ﻓ ﻲ >‪<module‬‬
‫ﺑ ﺔ )‪= int (first_number) / int (second_number‬‬
‫اﻹﺟﺎ‬
‫‪ZeroDivisionError:‬اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ‬

‫ﺜﻨﺎءا ت ‪201‬‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻚ‬
‫ﺒﻊ‪.‬ﺳﻮفﻳﺮ‬
‫ﺘ‬‫ﺘ‬‫ﺑﺮؤﻳ ﺔ ﻋﻤﻠﻴﺎ ت اﻟ‬‫ﺘﺨﺪﻣﻴﻦ‬ ‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬وﻟﻜﻦ ﻟﻴ ﺲ ﻣﻦ اﻟﺠﻴﺪ أ ً‬
‫ﻳﻀﺎ اﻟ ﺴﻤﺎح ﻟﻠﻤ ﺴ‬ ‫ﻣﻦ اﻟ ﺴ ﻲءﺗﻌﻄﻞ اﻟ‬
‫ﺒﻊ‪ .‬ﻋﲆ‬
‫ﺘ‬‫ﺘ‬‫ﺜﺮ ﻣﻤﺎﺗﺮﻳﺪ أنﻳﻌﺮﻓﻮه ﻣﻦ اﻟ‬
‫ﺘﻌﻠﻢ اﻟﻤﻬﺎﺟﻤﻮن أﻛ‬
‫ﺑﻴﺌ ﺔ ﺿﺎرة ‪،‬ﺳﻴ‬‫ﺒﻠﻬﻢ ‪ ،‬وﻓ ﻲ‬
‫ﺘﻘﻨﻴﻴﻦ ﻣﻦ ﻗ‬
‫ﺘﺨﺪﻣﻮن ﻏﻴﺮ اﻟ‬
‫اﻟﻤ ﺴ‬
‫ﺑﻚ ﻻ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻚ ‪ ،‬وﺳﻮفﻳﺮون ﺟﺰءًا ﻣﻦ اﻟ‬‫ﺒﺮﻧﺎﻣﺞ اﻟﺨﺎص‬
‫ﺜﺎل ‪،‬ﺳﻴﻌﺮﻓﻮن اﺳﻢ ﻣﻠﻒ اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺳ‬
‫ﺘﺨﺪاﻣﻬﺎ‬
‫ﺘ ﻲﻳﺠ ﺐ اﺳ‬
‫ﺘﺤﺪﻳﺪ ﻧﻮع اﻟﻬﺠﻤﺎ ت اﻟ‬ ‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ اﻟﻤﺎ ﻫﺮ أﺣﻴﺎﻧًﺎ اﺳ‬
‫ﺘﺨﺪام ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت ﻟ‬ ‫ﻳﻌﻤﻞ‬
‫ﺑﻚ‪.‬‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺿﺪ اﻟ‬

‫ﺑﻠﻮك‬‫آﺧﺮ‬
‫ﺘﻠ ﺔ ‪except .‬‬
‫ﺘﺞ ﻋﻨﻪ أﺧﻄﺎء ﻓ ﻲ ﻛ‬
‫ﺜﺮ ﻣﻘﺎوﻣ ﺔ ﻟﻸﺧﻄﺎء ﻋﻦ ﻃﺮﻳﻖﺗﻐﻠﻴﻒ اﻟ ﺴﻄﺮ اﻟﺬي ﻗﺪﻳﻨ‬
‫ﺒﺮﻧﺎﻣﺞ أﻛ‬
‫ﻳﻤﻜﻨﻨﺎ أن ﻧﺠﻌﻞ ﻫﺬا اﻟ‬
‫ﺘﻠ ﺔ ‪try-except .‬‬
‫ﺑﺈﺟﺮاء اﻟﻘ ﺴﻤ ﺔ ‪ ،‬ﻟﺬﻟﻚﺳﻨﻀﻊ ﻛ‬‫‪try-‬ﻳﺤﺪ ث اﻟﺨﻄﺄ ﻓ ﻲ اﻟ ﺴﻄﺮ اﻟﺬيﻳﻘﻮم‬

‫ﺘﻤﺪ ﻋﲆ اﻟﻤﺤﺎوﻟ ﺔ‬
‫ﺘﻠ ﺔ أﺧﺮى ‪ .‬أي ﻛﻮدﻳﻌ‬ ‫ﺜﺎل أ ً‬
‫ﻳﻀﺎ ﻛ‬ ‫ﺘﻀﻤﻦ ﻫﺬا اﻟﻤ‬
‫ﻳ‬
‫ﺘﻠ ﺔ ‪else :‬‬
‫ﺑﻨﺠﺎح ﻓ ﻲ ﻛ‬‫ﺘﻢﺗﻨﻔﻴﺬ اﻟﺤﻈﺮ‬
‫ﻳ‬

‫‪")print‬أﻋﻄﻨ ﻲ رﻗﻤﻴﻦ ‪ ،‬وﺳﺄﻗ ﺴﻤﻬﻤﺎ‪(".‬‬


‫ﺒﺎﻋ ﺔ )"أدﺧﻞ" ‪"q‬ﻟﻺﻧﻬﺎء‪(".‬‬
‫ﻃ‬

‫اﺣﻴﺎﻧﺎ ﺻﺤﻴﺢ‪:‬‬

‫‪first_number = input ("\ n‬اﻟﺮﻗﻢ اﻷول‪(":‬‬


‫‪if first_number == 'q':‬‬
‫ﺘﺮاﺣ ﺔ‬
‫اﺳ‬

‫ﺜﺎﻧ ﻲ‪(":‬‬
‫‪")second_number = input‬اﻟﺮﻗﻢ اﻟ‬
‫ش ﻣﺤﺎوﻟ ﺔ‪:‬‬
‫ﺑ ﺔ )‪= int (first_number) / int (second_number‬‬
‫اﻹﺟﺎ‬
‫ﺜﻨﺎء ‪ZeroDivisionError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪v‬‬
‫ﺒﺎﻋ ﺔ )"ﻻﻳﻤﻜﻨﻚ اﻟﻘ ﺴﻤ ﺔ ﻋﲆ )"!‪0‬‬
‫ﻃ‬
‫‪w‬آﺧﺮ‪:‬‬

‫ﺑ ﺔ(‬
‫ﺒﺎﻋ ﺔ )إﺟﺎ‬
‫ﻃ‬

‫ﺘﻘ ﺴﻴﻢ ﻓ ﻲ ﻣﺤﺎوﻟ ﺔ‬


‫ﻧﻄﻠ ﺐ ﻣﻦ ‪Python‬ﻣﺤﺎوﻟ ﺔ إﻛﻤﺎل ﻋﻤﻠﻴ ﺔ اﻟ‬
‫ﺘﻠ ﺔ ‪try‬‬
‫ﺘﻤﺪ ﻋﲆ ﻧﺠﺎح ﻛ‬
‫ﺘﻢ إﺿﺎﻓ ﺔ أي ﻛﻮدﻳﻌ‬
‫ﺒ ﺐ ﻓ ﻲ ﺣﺪو ث ﺧﻄﺄ‪.‬ﺗ‬
‫ﺘﺴ‬‫ﺘﻀﻤﻦ ﻓﻘﻂ اﻟﻜﻮد اﻟﺬي ﻗﺪﻳ‬
‫‪block u ،‬واﻟﺬيﻳ‬
‫ﺘﻠ ﺔ ‪else .‬‬
‫إﱃ ﻛ‬
‫ﺘﻴﺠ ﺔ ‪w.‬‬
‫ﺒﺎﻋ ﺔ اﻟﻨ‬
‫ﺘﻠ ﺔ ‪else‬ﻟﻄ‬
‫ﺘﺨﺪم ﻛ‬
‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬إذا ﻧﺠﺤ ﺖ ﻋﻤﻠﻴ ﺔ اﻟﻘ ﺴﻤ ﺔ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧ ﺴ‬

‫ﺑﻜﻴﻔﻴ ﺔ اﻟﺮد ﻋﻨﺪ ﺣﺪو ث ﺧﻄﺄ ﻓ ﻲ ‪ZeroDivisionError‬‬


‫ﺒﺎر ‪Python‬‬
‫ﺑﺈﺧ‬‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺘﻠ ﺔ اﻻﺳ‬
‫ﺗﻘﻮم ﻛ‬
‫ﺑﻜﻴﻔﻴ ﺔﺗﺠﻨ ﺐ‬‫ﺘﺨﺪم‬
‫ﺒﺮ اﻟﻤ ﺴ‬
‫ﺒﻊ رﺳﺎﻟ ﺔ ودﻳ ﺔﺗﺨ‬
‫ﺒ ﺐ اﻟﻘ ﺴﻤ ﺔ ﻋﲆ ﺻﻔﺮ ﺧﻄﺄ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﻄ‬
‫ﺑﺴ‬‫ﻳﻨﺸﺄ ‪v.‬إذا ﻟﻢﺗﻨﺠﺢ ﺟﻤﻠ ﺔ ‪try‬‬
‫ﺒﻊ‪:‬‬
‫ﺘ‬‫ﺘﺨﺪم أي أداةﺗ‬
‫ﺒﺮﻧﺎﻣﺞ ﻓ ﻲ اﻟﻌﻤﻞ ‪ ،‬وﻻﻳﺮى اﻟﻤ ﺴ‬
‫ﺘﻤﺮ اﻟ‬
‫ﻫﺬا اﻟﻨﻮع ﻣﻦ اﻟﺨﻄﺄ‪.‬ﻳ ﺴ‬

‫أﻋﻄﻨ ﻲ ﻋﺪدﻳﻦ ‪ ،‬وﺳﺄﻗ ﺴﻤﻬﻤﺎ‪.‬‬


‫أدﺧﻞ "‪"q‬ﻟﻺﻧﻬﺎء‪.‬‬

‫اﻟﺮﻗﻢ اﻷول‪5 :‬‬


‫ﺜﺎﻧ ﻲ‪0 :‬‬
‫اﻟﺮﻗﻢ اﻟ‬

‫ﻻﻳﻤﻜﻨﻚ اﻟﻘ ﺴﻤ ﺔ ﻋﲆ !‪0‬‬

‫‪202‬اﻟﻔﺼﻞ اﻟﻌﺎﺷﺮ‬
‫‪Machine Translated by Google‬‬

‫اﻟﺮﻗﻢ اﻷول‪5 :‬‬


‫ﺜﺎﻧ ﻲ‪2 :‬‬
‫اﻟﺮﻗﻢ اﻟ‬

‫‪2.5‬‬

‫اﻟﺮﻗﻢ اﻷول‪q :‬‬

‫ﺗﺸﻐﻴﻞ اﻟﻜﻮد ﻓ ﻲ ﺟﻤﻠ ﺔ ‪try .‬اﻟﻜﻮد اﻟﻮﺣﻴﺪ اﻟﺬي‬


‫ﺘﺎﻟ ﻲ‪:‬ﺗﺤﺎول ‪Python‬‬
‫ﺑﺎﻟﺸﻜﻞ اﻟ‬
‫ﺘﻠ ﺔ ‪try -except-else‬‬
‫ﺗﻌﻤﻞ ﻛ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎنﺳﻴﻜﻮن ﻟﺪﻳﻚ رﻣﺰ إﺿﺎﻓ ﻲﻳﺠ ﺐ‬‫ﺜﻨﺎء‪ .‬ﻓ ﻲ‬
‫ﺘ‬‫ﺒ ﺐ ﻓ ﻲ ﻇﻬﻮر اﺳ‬
‫ﺘﺴ‬‫ﺒﺎرة ‪ try‬ﻫﻮ اﻟﻜﻮد اﻟﺬي ﻗﺪﻳ‬
‫ﻳﺠ ﺐ إدﺧﺎﻟﻪ ﻓ ﻲ ﻋ‬
‫ﺑﻤﺎﻳﺠ ﺐ ﻓﻌﻠﻪ ﻓ ﻲ‬
‫ﺜﻨﺎء ‪Python‬‬
‫ﺘ‬‫ﺘﻠ ﺔ اﺳ‬
‫ﺒﺮ ﻛ‬
‫ﺘﻠ ﺔ‪.‬ﺗﺨ‬
‫ﺘﻠ ﺔ اﻟﻤﺤﺎوﻟ ﺔ ؛ ﻫﺬا اﻟﺮﻣﺰﻳﺬ ﻫ ﺐ ﻓ ﻲ آﺧﺮ ﻛ‬
‫ﺗﺸﻐﻴﻠﻪ ﻓﻘﻂ ﻓ ﻲ ﺣﺎﻟ ﺔ ﻧﺠﺎح ﻛ‬
‫ﺜﻨﺎء ﻣﻌﻴﻦ ﻋﻨﺪﻣﺎﺗﺤﺎولﺗﺸﻐﻴﻞ اﻟﻜﻮد ﻓ ﻲﺗﻌﻠﻴﻤ ﺔ ‪try .‬‬
‫ﺘ‬‫ﺣﺎﻟ ﺔ ﻇﻬﻮر اﺳ‬

‫ﺑﺮاﻣﺞ ﻗﻮﻳ ﺔ‬‫ﺑﺔ‬


‫ﺘﺎ‬
‫ﺘﻤﻠ ﺔ ‪،‬ﻳﻤﻜﻨﻚ ﻛ‬
‫ﻣﻦ ﺧﻼلﺗﻮﻗﻊ ﻣﺼﺎدر اﻷﺧﻄﺎء اﻟﻤﺤ‬
‫ﺑﻚ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻜﻮن اﻟ‬
‫ﺑﻴﺎﻧﺎ ت ﻏﻴﺮ ﺻﺎﻟﺤ ﺔ وﻣﻮارد ﻣﻔﻘﻮدة‪.‬ﺳ‬‫ﺘﻰ ﻋﻨﺪﻣﺎﺗﻮاﺟﻪ‬ ‫ﺘﻤﺮ ﻓ ﻲ اﻟﻌﻤﻞ ﺣ‬
‫ﺘ ﻲﺗ ﺴ‬‫اﻟ‬
‫ﺒﺮﻳﺌ ﺔ واﻟﻬﺠﻤﺎ ت اﻟﻀﺎرة‪.‬‬
‫ﺘﺨﺪم اﻟ‬‫ﻣﻘﺎوﻣ ﺔﻷﺧﻄﺎء اﻟﻤ ﺴ‬

‫ﺜﻨﺎء ‪FileNotFoundError‬‬
‫ﺘ‬‫ﻣﻌﺎﻟﺠ ﺔ اﺳ‬
‫ﺒﺤ ﺚ ﻋﻨﻪ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎ ت اﻟﻤﻔﻘﻮدة‪ .‬ﻗﺪﻳﻜﻮن اﻟﻤﻠﻒ اﻟﺬيﺗ‬
‫إﺣﺪى اﻟﻤﺸﻜﻼ ت اﻟﺸﺎﺋﻌ ﺔ ﻋﻨﺪ اﻟﻌﻤﻞ ﻣﻊ اﻟﻤﻠﻔﺎ ت ﻫ ﻲ اﻟ‬
‫ﺘﻠﻒ ‪ ،‬أو ﻗﺪﻳﻜﻮن ﻫﻨﺎك ﺧﻄﺄ إﻣﻼﺋ ﻲ ﻓ ﻲ اﺳﻢ اﻟﻤﻠﻒ ‪ ،‬أو ﻗﺪ ﻻﻳﻜﻮن اﻟﻤﻠﻒ ﻣﻮﺟﻮدًا ﻋﲆ اﻹﻃﻼق‪.‬ﻳﻤﻜﻨﻚ‬
‫ﻓ ﻲ ﻣﻮﻗﻊ ﻣﺨ‬
‫ﺘﻠ ﺔ ‪try-except .‬‬
‫ﺘﺨﺪام ﻛ‬
‫ﺑﺎﺳ‬‫ﺒﺎﺷﺮة‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻛﻞ ﻫﺬه اﻟﻤﻮاﻗﻒ‬
‫اﻟ‬

‫ﺘﻮﻳﺎ ت ‪Alice in Wonderland ،‬ﻟﻜﻨﻨ ﻲ ﻟﻢ‬


‫ﺘﺎﻟ ﻲ ﻗﺮاءة ﻣﺤ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫دﻋﻨﺎ ﻧﺤﺎول ﻗﺮاءة ﻣﻠﻒ ﻏﻴﺮ ﻣﻮﺟﻮد‪.‬ﻳﺤﺎول اﻟ‬
‫ﺜﻞ ‪alice.py:‬‬
‫أﺣﻔﻆ اﻟﻤﻠﻒ ‪alice.txt‬ﻓ ﻲ ﻧﻔ ﺲ اﻟﺪﻟﻴﻞ ﻣ‬

‫أﻟﻴ ﺲ‬ ‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'alice.txt‬‬

‫ﺘﻮح ﻛـ ‪f_obj:‬‬
‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫ﺘﻮﻳﺎ ت )( ‪= f_obj.read‬‬
‫اﻟﻤﺤ‬

‫ﺜﻨﺎءً‪:‬‬
‫ﺘ‬‫ﺜﻴﺮ اﺳ‬
‫ﺘﻄﻴﻊ ‪Python‬اﻟﻘﺮاءة ﻣﻦ ﻣﻠﻒ ﻣﻔﻘﻮد ‪ ،‬ﻟﺬا ﻓﺈﻧﻬﺎﺗ‬
‫ﻻﺗ ﺴ‬

‫‪)Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪:‬‬


‫ﺜﻞ ]‪FileNotFoundError: [Errno 2‬‬
‫ﺘﻮح )اﺳﻢ اﻟﻤﻠﻒ( ﻣ‬
‫ﻣﻠﻒ ‪"alice.py" ،‬اﻟ ﺴﻄﺮ ‪3 ،‬ﻓ ﻲ >‪<module‬ﻣﻔ‬
‫ﺜﻞ ﻫﺬا اﻟﻤﻠﻒ أو اﻟﺪﻟﻴﻞ‪'alice.txt' :‬‬
‫‪f_obj:‬ﻻﻳﻮﺟﺪ ﻣ‬

‫ﺘﻌﺬر‬
‫ﺜﻨﺎء اﻟﺬيﺗﻨﺸﺌﻪ ‪Python‬ﻋﻨﺪﻣﺎﻳ‬
‫ﺘ‬‫ﺒﻠﻎ اﻟ ﺴﻄﺮ اﻷﺧﻴﺮ ﻣﻦ ‪traceback‬ﻋﻦ ﺧﻄﺄ ‪ FileNotFoundError:‬ﻫﺬا ﻫﻮ اﻻﺳ‬
‫ﻳ‬
‫ُ‬
‫ﺘﻪ‬
‫ﺘﺞ اﻟﺪاﻟ ﺔ )( ‪open‬اﻟﺨﻄﺄ ‪ ،‬ﻟﺬاﻳﺠ ﺐ ﻣﺤﺎوﻟ ﺔ ﻣﻌﺎﻟﺠ‬
‫ﺜﺎل ‪،‬ﺗﻨ‬
‫ﺘﺤﻪ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺜﻮر ﻋﲆ اﻟﻤﻠﻒ اﻟﺬيﺗﺤﺎول ﻓ‬
‫ﻋﻠﻴﻬﺎ اﻟﻌ‬

‫ﺘﻮي ﻋﲆ ‪open ():‬‬


‫ﺒﻞ اﻟ ﺴﻄﺮ اﻟﺬيﻳﺤ‬
‫ﺘﻠ ﺔ ﻗ‬
‫ﺒﺪأ اﻟﻜ‬
‫ﺘ‬‫ﺳ‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'alice.txt‬‬

‫ﻳﺤﺎول‪:‬‬
‫ﺘﻮح ﻛـ ‪f_obj:‬‬
‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫ﺘﻮﻳﺎ ت )( ‪= f_obj.read‬‬
‫اﻟﻤﺤ‬

‫ﺜﻨﺎءا ت ‪203‬‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬
‫‪Machine Translated by Google‬‬

‫ﺜﻨﺎء ‪FileNotFoundError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫"‬ ‫"‬
‫ﺒﺎﻋ ﺔ اﻟﻤﻠﻒ )‪(msg‬‬
‫= ‪"msg‬ﻋﺬ ًرا ‪ ،‬ﻃ‬ ‫‪+‬اﺳﻢ اﻟﻤﻠﻒ ‪+‬‬ ‫ﻏﻴﺮ ﻣﻮﺟﻮد‪".‬‬

‫ﺘﻠ ﺔ ‪try‬ﺧﻄﺄ ‪FileNotFoundError ،‬‬


‫ﺘﺞ ﻋﻦ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓ ﻲ ﻛ‬
‫ﺜﺎل ‪،‬ﻳﻨ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘﻴﺠ ﺔ‬
‫ﺘﻠ ﺔ ‪ ،‬واﻟﻨ‬
‫ﺘﺸﻐﻴﻞ اﻟﻜﻮد ﻓ ﻲﺗﻠﻚ اﻟﻜ‬
‫ﺑ‬‫ﺛﻢﺗﻘﻮم ‪Python‬‬‫ﺑﻖ ﻫﺬا اﻟﺨﻄﺄ‪.‬‬
‫ﺜﻨﺎءﺗﻄﺎ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ‬
‫ﺒﺤ ﺚ ‪Python‬ﻋﻦ ﻛ‬
‫ﻟﺬﻟﻚﺗ‬
‫ﺑﺪﻻ ً ﻣﻦ ‪traceback:‬‬‫ﻫ ﻲ رﺳﺎﻟ ﺔ ﺧﻄﺄ ودﻳ ﺔ‬

‫ﻋﺬرا ‪ ،‬اﻟﻤﻠﻒ ‪alice.txt‬ﻏﻴﺮ ﻣﻮﺟﻮد‪.‬‬

‫ﺜﻴﺮ إﱃ ﻫﺬا‬
‫ﺜﺮ إذا ﻟﻢﻳﻜﻦ اﻟﻤﻠﻒ ﻣﻮﺟﻮدًا ‪ ،‬ﻟﺬا ﻓﺈن رﻣﺰ ﻣﻌﺎﻟﺠ ﺔ اﻷﺧﻄﺎء ﻻﻳﻀﻴﻒ اﻟﻜ‬
‫ﺒﺮﻧﺎﻣﺞ ﻟﻴ ﺲ ﻟﺪﻳﻪ ﻣﺎﻳﻔﻌﻠﻪ أﻛ‬
‫اﻟ‬
‫ﺜﺮ ﻣﻦ ﻣﻠﻒ‬
‫ﺜﻨﺎءا ت ﻋﻨﺪ اﻟﻌﻤﻞ ﻣﻊ أﻛ‬
‫ﺘ‬‫ﺜﺎل وﻧﺮى ﻛﻴﻒﻳﻤﻜﻦ أنﺗ ﺴﺎﻋﺪك ﻣﻌﺎﻟﺠ ﺔ اﻻﺳ‬
‫ﺒﻨ ﻲ ﻋﲆ ﻫﺬا اﻟﻤ‬
‫ﺒﺮﻧﺎﻣﺞ‪ .‬دﻋﻨﺎ ﻧ‬
‫اﻟ‬
‫واﺣﺪ‪.‬‬

‫ﺗﺤﻠﻴﻞ اﻟﻨﺺ‬
‫ﺑﻴ ﺔ اﻟﻜﻼﺳﻴﻜﻴ ﺔ ﻛﻤﻠﻔﺎ ت ﻧﺼﻴ ﺔ‬
‫ﺘﻮﻓﺮ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﻋﻤﺎل اﻷد‬
‫ﺘ ﺐ ﻛﺎﻣﻠ ﺔ‪.‬ﺗ‬
‫ﺘﻮي ﻋﲆ ﻛ‬
‫ﺘ ﻲﺗﺤ‬
‫ﻳﻤﻜﻨﻚﺗﺤﻠﻴﻞ اﻟﻤﻠﻔﺎ ت اﻟﻨﺼﻴ ﺔ اﻟ‬
‫ﺒﺮج‬
‫ﺗﻨ‬‫ﺘﺨﺪﻣ ﺔ ﻓ ﻲ ﻫﺬا اﻟﻘ ﺴﻢ ﻣﺄﺧﻮذة ﻣﻦ ﻣﺸﺮوع ﺟﻮ‬
‫ﺑ ﺴﻴﻄ ﺔﻷﻧﻬﺎ ﻣﻮﺟﻮدة ﻓ ﻲ اﻟﻤﺠﺎل اﻟﻌﺎم‪ .‬اﻟﻨﺼﻮص اﻟﻤ ﺴ‬
‫ﺘﻮﻓﺮة ﻓ ﻲ اﻟﻤﺠﺎل اﻟﻌﺎم ‪،‬‬
‫ﺑﻴ ﺔ اﻟﻤ‬
‫ﺑﻤﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷﻋﻤﺎل اﻷد‬
‫ﺘﻔﻆ ‪Project Gutenberg‬‬
‫‪(http://gutenberg.org/).‬ﻳﺤ‬
‫ﺑﻚ‪.‬‬‫ﺒﺮﻣﺠ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺑﻴ ﺔ ﻓ ﻲ ﻣﺸﺎرﻳﻊ اﻟ‬
‫ﺑﺎﻟﻌﻤﻞ ﻣﻊ اﻟﻨﺼﻮص اﻷد‬‫ﺘﻤﺎ‬
‫و ﻫﻮ ﻣﻮرد راﺋﻊ إذا ﻛﻨ ﺖ ﻣﻬ ً‬

‫ﺘﺨﺪم ﻃﺮﻳﻘ ﺔ اﻟ ﺴﻠ ﺴﻠ ﺔ‬
‫دﻋﻨﺎ ﻧ ﺴﺤ ﺐ ﻧﺺ ‪Alice in Wonderland‬وﻧﺤﺎول ﺣ ﺴﺎ ب ﻋﺪد اﻟﻜﻠﻤﺎ ت ﻓ ﻲ اﻟﻨﺺ‪.‬ﺳﻨ ﺴ‬
‫ﺘﻮي ﻓﻘﻂ ﻋﲆ‬
‫ﺑ ﺴﻠ ﺴﻠ ﺔﺗﺤ‬
‫ﺑﺎﻟﻜﻠﻤﺎ ت ﻣﻦﺳﻠ ﺴﻠ ﺔ ﻧﺼﻴ ﺔ‪ .‬إﻟﻴﻚ ﻣﺎﻳﻔﻌﻠﻪ )( ‪split‬‬‫ﺑﻨﺎء ﻗﺎﺋﻤ ﺔ‬‫ﺘ ﻲﻳﻤﻜﻨﻬﺎ‬
‫اﻟﻤﻘ ﺴﻤ ﺔ ‪() ،‬واﻟ‬
‫اﻟﻌﻨﻮان ‪"Alice in Wonderland":‬‬

‫)( ‪>>> title = "Alice in Wonderland" >>> title.split‬‬

‫ﺑﻼد اﻟﻌﺠﺎﺋ ﺐ'[‬‫]'أﻟﻴ ﺲ ﻓ ﻲ‬

‫ﺗﺨﺰﻳﻦ ﺟﻤﻴﻊ أﺟﺰاء اﻟ ﺴﻠ ﺴﻠ ﺔ ﻓ ﻲ‬


‫ﺗﻌﻤﻞ ﻃﺮﻳﻘ ﺔ )( ‪split‬ﻋﲆ ﻓﺼﻞﺳﻠ ﺴﻠ ﺔ ﻧﺼﻴ ﺔ إﱃ أﺟﺰاء أﻳﻨﻤﺎ وﺟﺪ ت ﻣ ﺴﺎﻓ ﺔ و‬
‫ﺑﻌﺾ‬ ‫ﺘﺮﻗﻴﻢ ﻗﺪﺗﻈﻬﺮ أ ً‬
‫ﻳﻀﺎ ﻣﻊ‬ ‫ﺑﻌﺾ ﻋﻼﻣﺎ ت اﻟ‬‫ﺘﻴﺠ ﺔ ﻫ ﻲ ﻗﺎﺋﻤ ﺔ ﻛﻠﻤﺎ ت ﻣﻦ اﻟ ﺴﻠ ﺴﻠ ﺔ ‪ ،‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن‬
‫ﻗﺎﺋﻤ ﺔ‪ .‬واﻟﻨ‬
‫ﺑﻌﺪ‬‫ﺛﻢﺳﻨﻘﻮم‬‫ﺑﺄﻛﻤﻠﻪ‪.‬‬‫ﺘﺨﺪم )( ‪split‬ﻋﲆ اﻟﻨﺺ‬
‫اﻟﻜﻠﻤﺎ ت‪ .‬ﻟﺤ ﺴﺎ ب ﻋﺪد اﻟﻜﻠﻤﺎ ت ﻓ ﻲ ‪Alice in Wonderland ،‬ﺳﻨ ﺴ‬
‫ﺒﻴ ﺔ ﻋﻦ ﻋﺪد اﻟﻜﻠﻤﺎ ت ﻓ ﻲ اﻟﻨﺺ‪:‬‬
‫اﻟﻌﻨﺎﺻﺮ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ﻟﻠﺤﺼﻮل ﻋﲆ ﻓﻜﺮةﺗﻘﺮﻳ‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'alice.txt‬‬

‫ﻳﺤﺎول‪:‬‬
‫ﺘﻮح ﻛـ ‪f_obj:‬‬
‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫ﺘﻮﻳﺎ ت )( ‪= f_obj.read‬‬
‫اﻟﻤﺤ‬
‫ﺜﻨﺎء ‪FileNotFoundError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫"‬ ‫"‬
‫‪+‬اﺳﻢ اﻟﻤﻠﻒ ‪"msg = +‬ﻋﺬ ًرا ‪ ،‬ﻃ‬
‫ﺒﺎﻋ ﺔ اﻟﻤﻠﻒ )‪(msg‬‬ ‫ﻏﻴﺮ ﻣﻮﺟﻮد‪".‬‬

‫‪204‬اﻟﻔﺼﻞ ‪10‬‬
‫‪Machine Translated by Google‬‬

‫آﺧﺮ‪:‬‬

‫ﺒ ﻲ ﻟﻠﻜﻠﻤﺎ ت ﻓ ﻲ اﻟﻤﻠﻒ‪.‬‬
‫ﺘﻘﺮﻳ‬
‫‪#‬اﺣ ﺴ ﺐ اﻟﻌﺪد اﻟ‬
‫ﻛﻠﻤﺎ ت )( ‪u = content.split‬‬
‫‪)v num_words = len‬ﻛﻠﻤﺎ ت(‬
‫"‬ ‫"‬ ‫"‬
‫ﻋﻦاﻟﻤﻠﻒ ‪+‬‬‫ﺳﻢ‬ ‫ﻳﻤﻠﻚ‬
‫‪")w print‬اﻟﻤﻠﻒ ‪+‬ا‬ ‫‪)+ str‬ﻋﺪد_ﻛﻠﻤﺎ ت( ‪"+‬ﻛﻠﻤﺎ ت"(‬

‫ﺘﻮﻳﺎ ت اﻟ ﺴﻠ ﺴﻠ ﺔ ‪،‬‬
‫ﺘﻠ ﺔ ‪ try‬ﻫﺬه اﻟﻤﺮة‪ .‬ﻓ ﻲ ‪u ،‬ﻧﺄﺧﺬ ﻣﺤ‬
‫ﺘﻌﻤﻞ ﻛ‬
‫ﻟﻘﺪ ﻧﻘﻠ ﺖ اﻟﻤﻠﻒ ‪alice.txt‬إﱃ اﻟﺪﻟﻴﻞ اﻟﺼﺤﻴﺢ ‪ ،‬ﻟﺬاﺳ‬
‫ﺘﺨﺪم اﻻﻧﻘ ﺴﺎم )(‬
‫ﺘﻮي اﻵن ﻋﲆ اﻟﻨﺺ اﻟﻜﺎﻣﻞ ﻟـ ‪Alice in Wonderland‬ﻛ ﺴﻠ ﺴﻠ ﺔ ﻃﻮﻳﻠ ﺔ واﺣﺪة ‪ ،‬وﻧ ﺴ‬
‫ﺘ ﻲﺗﺤ‬
‫واﻟ‬

‫ﺘﺨﺪم )( ‪len‬ﻓ ﻲ ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ ﻟﻔﺤﺺ ﻃﻮﻟﻬﺎ ‪ ،‬ﻧﺤﺼﻞ ﻋﲆ‬


‫ﺘﺎ ب‪ .‬ﻋﻨﺪﻣﺎ ﻧ ﺴ‬
‫ﺑﻜﻞ اﻟﻜﻠﻤﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻜ‬‫ﺘﺎج ﻗﺎﺋﻤ ﺔ‬
‫ﻃﺮﻳﻘ ﺔ ﻹﻧ‬
‫ﺜﻮر ﻋﻠﻴﻬﺎ ﻓ ﻲ اﻟﻤﻠﻒ‪.‬‬ ‫ﺑﻴﺎﻧًﺎﻳﻮﺿﺢ ﻋﺪد اﻟﻜﻠﻤﺎ ت اﻟ‬
‫ﺘ ﻲﺗﻢ اﻟﻌ‬ ‫ﺒﻊ‬
‫ﺗﻘﺮﻳ ﺐ ﺟﻴﺪ ﻟﻌﺪد اﻟﻜﻠﻤﺎ ت ﻓ ﻲ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻷﺻﻠﻴ ﺔ ‪v.‬ﻓ ﻲ ‪w‬ﻧﻄ‬
‫ﺗﺞ ﻋﻦ‬
‫ﺒﺮﻧﺎ اﻟﻨﺎ‬
‫ﺑﺸﻜﻞ ﻛﺎﻣﻞ‪.‬ﻳﺨ‬
‫ﺘﻠ ﺔ ‪try‬‬
‫ﺘﻠ ﺔ ‪else‬ﻷﻧﻪﺳﻴﻌﻤﻞ ﻓﻘﻂ إذاﺗﻢﺗﻨﻔﻴﺬ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓ ﻲ ﻛ‬
‫ﺘﻢ وﺿﻊ ﻫﺬا اﻟﺮﻣﺰ ﻓ ﻲ ﻛ‬
‫ﻳ‬
‫ﻋﺪد اﻟﻜﻠﻤﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ ‪alice.txt:‬‬

‫ﺘﻮي ﻣﻠﻒ ‪alice.txt‬ﻋﲆ ﺣﻮاﻟ ﻲ ‪29461‬ﻛﻠﻤ ﺔ‪.‬‬


‫ﻳﺤ‬

‫ﺑﻮاﺳﻄ ﺔ‬‫ﺘﻢﺗﻮﻓﻴﺮ ﻣﻌﻠﻮﻣﺎ ت إﺿﺎﻓﻴ ﺔ‬


‫ﺑﻌﺾ اﻟﺸ ﻲءﻷﻧﻪﻳ‬‫ﺗﻔﻌً ﺎ‬
‫ﻳﻌﺪ اﻟﻌﺪد ﻣﺮ‬
‫ﺑﻼد اﻟﻌﺠﺎﺋ ﺐ‪.‬‬‫ﺘﺨﺪم ﻫﻨﺎ ‪ ،‬ﻟﻜﻨﻪﺗﻘﺮﻳ ﺐ ﺟﻴﺪ ﻟﻄﻮل أﻟﻴ ﺲ ﻓ ﻲ‬
‫ﻧﺎﺷﺮ ﻓ ﻲ اﻟﻤﻠﻒ اﻟﻨﺼ ﻲ اﻟﻤ ﺴ‬

‫ﺘﻌﺪدة‬
‫اﻟﻌﻤﻞ ﻣﻊ ﻣﻠﻔﺎ ت ﻣ‬
‫ﺒﺮﻧﺎﻣﺞ إﱃ وﻇﻴﻔ ﺔ‬
‫ﺒﺮ ﻣﻦ ﻫﺬا اﻟ‬
‫ﺒﻞ أن ﻧﻔﻌﻞ ذﻟﻚ ‪ ،‬دﻋﻨﺎ ﻧﻨﻘﻞ اﻟﺠﺰء اﻷﻛ‬
‫ﺘﺤﻠﻴﻠﻬﺎ‪ .‬وﻟﻜﻦ ﻗ‬
‫ﺘﺐ ﻟ‬
‫دﻋﻮﻧﺎ ﻧﻀﻴﻒ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻜ‬
‫ﺘﻌﺪدة‪:‬‬
‫ﺘﺐ ﻣ‬
‫ﺘﺤﻠﻴﻞ ﻟﻜ‬
‫ﺑﺬﻟﻚ ‪،‬ﺳﻴﻜﻮن ﻣﻦ اﻷﺳﻬﻞ إﺟﺮاء اﻟ‬‫ﺗ ﺴﻤﻰ ‪count_words ().‬ﻣﻦ ﺧﻼل اﻟﻘﻴﺎم‬

‫‪)word_count.py def count_words‬اﺳﻢ اﻟﻤﻠﻒ(‪:‬‬


‫ﺒ ﻲ ﻟﻠﻜﻠﻤﺎ ت ﻓ ﻲ ﻣﻠﻒ‪"" ".‬‬
‫ﺘﻘﺮﻳ‬
‫"" ‪"u‬اﺣ ﺴ ﺐ اﻟﻌﺪد اﻟ‬
‫ﻳﺤﺎول‪:‬‬
‫ﺘﻮح ﻛـ ‪f_obj:‬‬
‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫ﺜﻨﺎء ‪FileNotFoundError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫)( ‪content = f_obj.read‬‬

‫"‬ ‫"‬
‫اﻟﻤﻠﻒ ‪+‬‬
‫)‪(msg‬‬ ‫ﺳﻢاﻟﻤﻠﻒ‬ ‫ﺬ ًرا ‪ ،‬ﻃ ‪+‬ا‬
‫ﺒﺎﻋ ﺔ‬ ‫ﻏﻴﺮ ﻣﻮﺟﻮد‪"msg = ".‬ﻋ‬

‫آﺧﺮ‪:‬‬

‫ﺒ ﻲ ﻟﻠﻜﻠﻤﺎ ت ﻓ ﻲ اﻟﻤﻠﻒ‪.‬‬
‫ﺘﻘﺮﻳ‬
‫‪#‬ﻋﺪ اﻟﻌﺪد اﻟ‬
‫اﻟﻜﻠﻤﺎ ت )( ‪= content.split‬‬
‫‪)num_words = len‬ﻛﻠﻤﺎ ت(‬
‫"‬ ‫"‬ ‫"‬
‫ﺳﻢ اﻟﻤﻠﻒ "‪+‬اﻟﻜﻠﻤﺎ ت‪") .‬‬ ‫ﻋﻦ‬ ‫ﺒﺎﻋ ﺔ ﻳﻤﻠﻚ‬
‫)"اﻟﻤﻠﻒ ‪+‬ا‬ ‫‪ + str (num_words) +‬ﻃ‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'alice.txt‬‬

‫‪)count_words‬اﺳﻢ اﻟﻤﻠﻒ(‬

‫ﺑﺎدﺋ ﺔ ﻟﻬﺎ وﻧﻘﻠﻬﺎ إﱃ ﻧﺺ ‪count_words ().‬إﻧﻬﺎ ﻋﺎدة ﺟﻴﺪة‬‫ﺑﻮﺿﻊ ﻣ ﺴﺎﻓ ﺔ‬‫ﺒ ﺴﺎﻃ ﺔ‬
‫ﺑ‬‫ﺘﻐﻴﺮ‪ .‬ﻗﻤﻨﺎ‬
‫ﻣﻌﻈﻢ ﻫﺬا اﻟﺮﻣﺰ ﻟﻢﻳ‬
‫ﺘﻬﺎ ﻗﻠﻴ ﻼً‪.‬‬
‫ﺘﻌﻠﻴﻖ إﱃﺳﻠ ﺴﻠ ﺔ ﻧﺼﻴ ﺔ وأﻋﺪﻧﺎ ﺻﻴﺎﻏ‬
‫ﺘﻐﻴﻴﺮ اﻟ‬
‫ﺑ‬‫ﺑﺮﻧﺎﻣﺞ ‪ ،‬ﻟﺬﻟﻚ ﻗﻤﻨﺎ‬‫ﺘﻌﺪﻳﻞ‬
‫ﺑ‬‫ﺛ ﺔ ﻋﻨﺪﻣﺎﺗﻘﻮم‬
‫ﺘﻌﻠﻴﻘﺎ ت ﻣﺤﺪ‬
‫أنﺗﻈﻞ اﻟ‬

‫ﺜﻨﺎءا ت ‪205‬‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬
‫‪Machine Translated by Google‬‬

‫ﺑﺬﻟﻚ ﻋﻦ ﻃﺮﻳﻖﺗﺨﺰﻳﻦ أﺳﻤﺎء‬‫ﺑ ﺴﻴﻄ ﺔ ﻟﺤ ﺴﺎ ب اﻟﻜﻠﻤﺎ ت ﻓ ﻲ أي ﻧﺺ ﻧﺮﻳﺪﺗﺤﻠﻴﻠﻪ‪ .‬ﻧﻘﻮم‬‫ﺑ ﺔ ﺣﻠﻘ ﺔ‬


‫ﺘﺎ‬
‫ﻳﻤﻜﻨﻨﺎ اﻵن ﻛ‬
‫ﺛﻢ ﻧ ﺴﻤ ﻲ )( ‪count_words‬ﻟﻜﻞ ﻣﻠﻒ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‪.‬ﺳﻨﺤﺎول ﻋﺪ اﻟﻜﻠﻤﺎ ت اﻟﺨﺎﺻ ﺔ‬‫ﺘ ﻲ ﻧﺮﻳﺪﺗﺤﻠﻴﻠﻬﺎ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ‪،‬‬
‫اﻟﻤﻠﻔﺎ ت اﻟ‬
‫ﺘﺎﺣ ﺔ ﻓ ﻲ اﻟﻤﺠﺎل اﻟﻌﺎم‪ .‬ﻟﻘﺪ‬
‫ﺑـ ‪Alice in Wonderland‬و ‪Siddhartha‬و ‪Moby Dick‬و ‪Little Women ،‬وﻛﻠﻬﺎ ﻣ‬
‫ﺘﻤﻜﻦ ﻣﻦ رؤﻳ ﺔ ﻣﺪى‬
‫ﺘﻰ ﻧ‬
‫ﺘﻮي ﻋﲆ ‪word_count.py ،‬ﺣ‬
‫ﺗﺮﻛ ﺖ ﻣﻠﻒ ‪siddhartha.txt‬ﻋﻦ ﻗﺼﺪ ﺧﺎرج اﻟﺪﻟﻴﻞ اﻟﺬيﻳﺤ‬
‫ﺑﺮﻧﺎﻣﺠﻨﺎ ﻣﻊ اﻟﻤﻠﻒ اﻟﻤﻔﻘﻮد‪:‬‬‫ﺗﻌﺎﻣﻞ‬

‫‪)def count_words‬اﺳﻢ اﻟﻤﻠﻒ(‪:‬‬


‫‪--‬ﻗﺺ‪--‬‬

‫أﺳﻤﺎء اﻟﻤﻠﻔﺎ ت ]'‪= ['alice.txt'، 'siddhartha.txt'، 'moby_dick.txt'، 'little_women.txt‬‬


‫ﻻﺳﻢ اﻟﻤﻠﻒ ﻓ ﻲ أﺳﻤﺎء اﻟﻤﻠﻔﺎ ت‪:‬‬

‫‪)count_words‬اﺳﻢ اﻟﻤﻠﻒ(‬

‫ﺒﺮﻧﺎﻣﺞ‪:‬‬
‫ﺑﻘﻴ ﺔﺗﻨﻔﻴﺬ اﻟ‬‫ﺛﻴﺮ ﻋﲆ‬
‫ﻟﻴ ﺲ ﻟﻤﻠﻒ ‪siddhartha.txt‬اﻟﻤﻔﻘﻮد أيﺗﺄ‬

‫ﺘﻮي ﻣﻠﻒ ‪alice.txt‬ﻋﲆ ﺣﻮاﻟ ﻲ ‪29461‬ﻛﻠﻤ ﺔ‪.‬‬


‫ﻳﺤ‬

‫ﻋﺬرا ‪ ،‬اﻟﻤﻠﻒ ‪siddhartha.txt‬ﻏﻴﺮ ﻣﻮﺟﻮد‪.‬‬


‫ﺘﻮي ﻣﻠﻒ ‪moby_dick.txt‬ﻋﲆ ﺣﻮاﻟ ﻲ ‪215136‬ﻛﻠﻤ ﺔ‪.‬‬ ‫ﻳﺤ‬
‫ﺘﻮي ﻣﻠﻒ ‪little_women.txt‬ﻋﲆ ﺣﻮاﻟ ﻲ ‪189079‬ﻛﻠﻤ ﺔ‪.‬‬ ‫ﻳﺤ‬

‫ﺘﺮك‬
‫ﺒﻊ ‪ ،‬وﻧ‬
‫ﺘ‬‫ﺘ‬‫ﺘﺨﺪﻣﻴﻨﺎ ﻣﻦ رؤﻳ ﺔ اﻟ‬
‫ﺘﻴﻦ‪ .‬ﻧﺤﻦ ﻧﻤﻨﻊ ﻣ ﺴ‬
‫ﺗﻴﻦ ﻫﺎﻣ‬
‫ﺜﺎل ﻣﻴﺰ‬
‫ﺘﻠ ﺔ ‪try-except‬ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘﺨﺪام ﻛ‬
‫ﻳﻮﻓﺮ اﺳ‬
‫ﺛﺎره‬
‫ﺘﺸﻒ ﺧﻄﺄ ‪FileNotFoundError‬اﻟﺬي أ‬
‫ﺜﻮر ﻋﻠﻴﻬﺎ‪ .‬إذا ﻟﻢ ﻧﻜ‬
‫ﺘ ﻲﻳﻤﻜﻨﻪ اﻟﻌ‬
‫ﺒﺮﻧﺎﻣﺞﻳﻮاﺻﻞﺗﺤﻠﻴﻞ اﻟﻨﺼﻮص اﻟ‬
‫اﻟ‬
‫ﺑﻌﺪ ﻣﺤﺎوﻟ ﺔﺗﺤﻠﻴﻞ ‪Siddhartha.‬‬‫ﺒﺮﻧﺎﻣﺞ ﻋﻦ اﻟﻌﻤﻞ‬ ‫ﺒﻌً ﺎ ﻛﺎﻣ ﻼ ً ‪ ،‬وﺳﻴ‬
‫ﺘﻮﻗﻒ اﻟ‬ ‫ﺘ‬‫ﺘﺨﺪمﺗ‬
‫‪siddhartha.txt ،‬ﻓ ﺴﻴﺸﺎ ﻫﺪ اﻟﻤ ﺴ‬
‫ﺑ ﻲ دﻳﻚ أو اﻟﻨ ﺴﺎء اﻟﺼﻐﻴﺮا ت‪.‬‬
‫ﺑﺪًا ﻣﻮ‬
‫ﻟﻦﺗﺤﻠﻞ أ‬

‫ﺑﺼﻤ ﺖ‬‫اﻟﻔﺸﻞ‬
‫ﺘﺸﻔﻪ‪.‬‬
‫ﺜﻨﺎءﺗﻜ‬
‫ﺘ‬‫ﺑﻼغ ﻋﻦ ﻛﻞ اﺳ‬
‫ﺑﺤﺎﺟ ﺔ إﱃ اﻹ‬‫ﺘﻮﻓﺮ‪ .‬ﻟﻜﻨﻚ ﻟ ﺴ ﺖ‬
‫ﺘﺨﺪﻣﻴﻨﺎ أن أﺣﺪ اﻟﻤﻠﻔﺎ ت ﻏﻴﺮ ﻣ‬
‫ﺑﻠﻐﻨﺎ ﻣ ﺴ‬
‫ﺑﻖ ‪ ،‬أ‬
‫ﺜﺎل اﻟ ﺴﺎ‬
‫ﻓ ﻲ اﻟﻤ‬

‫ﺘﻤﺮار ﻛﻤﺎ ﻟﻮ ﻟﻢﻳﺤﺪ ث ﺷ ﻲء‪ .‬ﻟﺠﻌﻞ‬


‫ﺜﻨﺎء واﻻﺳ‬
‫ﺘ‬‫ﺑﺼﻤ ﺖ ﻋﻨﺪ ﺣﺪو ث اﺳ‬‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﺮﻏ ﺐ ﻓ ﻲ ﻓﺸﻞ اﻟ‬
‫ﺑﻌﺾ اﻷﺣﻴﺎن ‪،‬ﺳ‬‫ﻓﻲ‬
‫ﺜﻨﺎء ‪ .‬ﻟﺪى‬
‫ﺘ‬‫ﺑﺎﺳ‬ ‫ﺒﺮ ‪ Python‬ﺻﺮاﺣ ﺔ أﻻﺗﻔﻌﻞ ﺷﻴ ًﺌﺎ ﻓ ﻲ اﻟﻜ‬
‫ﺘﻠ ﺔ‬ ‫ﺘﺎد ‪ ،‬ﻟﻜﻨﻚﺗﺨ‬
‫ﺘﻠ ﺔ ‪try‬ﻛﺎﻟﻤﻌ‬
‫ﺘﺐ ﻛ‬
‫ﺑﺼﻤ ﺖ ‪،‬ﺗﻜ‬‫ﺒﺮﻧﺎﻣﺞﻳﻔﺸﻞ‬
‫اﻟ‬
‫ﺘﻠ ﺔ‪:‬‬
‫ﺑﺄي ﺷ ﻲء ﻓ ﻲ اﻟﻜ‬‫ﺑﻌﺪم اﻟﻘﻴﺎم‬‫ﺒﺮ ﻫﺎ‬
‫ﺒﺎرة ﻣﺮورﺗﺨ‬
‫‪Python‬ﻋ‬

‫‪)def count_words‬اﺳﻢ اﻟﻤﻠﻒ(‪:‬‬


‫ﺒ ﻲ ﻟﻠﻜﻠﻤﺎ ت ﻓ ﻲ ﻣﻠﻒ‪"" ".‬‬
‫ﺘﻘﺮﻳ‬
‫"""اﺣ ﺴ ﺐ اﻟﻌﺪد اﻟ‬
‫ﻳﺤﺎول‪:‬‬
‫‪--‬ﻗﺺ‪--‬‬
‫ﺜﻨﺎء ‪FileNotFoundError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ش‬ ‫ﻳﻤﺮ‬
‫آﺧﺮ‪:‬‬

‫‪--‬ﻗﺺ‪--‬‬

‫أﺳﻤﺎء اﻟﻤﻠﻔﺎ ت ]'‪= ['alice.txt'، 'siddhartha.txt'، 'moby_dick.txt'، 'little_women.txt‬‬


‫ﻻﺳﻢ اﻟﻤﻠﻒ ﻓ ﻲ أﺳﻤﺎء اﻟﻤﻠﻔﺎ ت‪:‬‬

‫‪)count_words‬اﺳﻢ اﻟﻤﻠﻒ(‬

‫‪206‬اﻟﻔﺼﻞ اﻟﻌﺎﺷﺮ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻢ رﻓﻊ ‪FileNotFoundError ،‬‬


‫ﺒﺎرة اﻟﻤﺮور ﻓ ﻲ ‪u.‬اﻵن ﻋﻨﺪﻣﺎﻳ‬
‫ﺑﻘ ﺔ ﻫﻮ ﻋ‬
‫ﺑﻴﻦ ﻫﺬه اﻟﻘﺎﺋﻤ ﺔ واﻟ ﺴﺎ‬‫ﺘﻼف اﻟﻮﺣﻴﺪ‬
‫اﻻﺧ‬
‫ﺑ ﺔ ﻟﻠﺨﻄﺄ‬
‫ﺘﺠﺎ‬
‫ﺗﺞ اﺳ‬
‫ﺒﻊ ‪ ،‬وﻻﻳﻮﺟﺪ ﻧﺎ‬
‫ﺘ‬‫ﺘﺎج أيﺗ‬
‫ﺘﻢ إﻧ‬
‫ﺜﻨﺎء ‪ ،‬وﻟﻜﻦ ﻻﻳﺤﺪ ث ﺷ ﻲء‪ .‬ﻻﻳ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫ﺘﻠ ﺔ‬
‫ﺘﻢﺗﺸﻐﻴﻞ اﻟﻜﻮد اﻟﻤﻮﺟﻮد ﻓ ﻲ ﻛ‬
‫ﻳ‬
‫ﺜﻮر ﻋﲆ اﻟﻤﻠﻒ‪:‬‬
‫ﺘﺨﺪﻣﻮن ﻋﺪد اﻟﻜﻠﻤﺎ ت ﻟﻜﻞ ﻣﻠﻒ ﻣﻮﺟﻮد ‪ ،‬ﻟﻜﻨﻬﻢ ﻻﻳﺮون أي إﺷﺎرة إﱃ ﻋﺪم اﻟﻌ‬
‫اﻟﺬي ﺣﺪ ث‪.‬ﻳﺮى اﻟﻤ ﺴ‬

‫ﺘﻮي ﻣﻠﻒ ‪alice.txt‬ﻋﲆ ﺣﻮاﻟ ﻲ ‪29461‬ﻛﻠﻤ ﺔ‪.‬‬


‫ﻳﺤ‬

‫ﺘﻮي ﻣﻠﻒ ‪moby_dick.txt‬ﻋﲆ ﺣﻮاﻟ ﻲ ‪215136‬ﻛﻠﻤ ﺔ‪.‬‬


‫ﻳﺤ‬
‫ﺘﻮي ﻣﻠﻒ ‪little_women.txt‬ﻋﲆ ﺣﻮاﻟ ﻲ ‪189079‬ﻛﻠﻤ ﺔ‪.‬‬
‫ﻳﺤ‬

‫ﺑﺄﻧﻚ‬ ‫ﺒﺎرة اﻟﻤﺮور أ ً‬


‫ﻳﻀﺎ ﻛﻌﻨﺼﺮ ﻧﺎﺋ ﺐ‪ .‬إﻧﻪﺗﺬﻛﻴﺮ‬ ‫ﺗﻌﻤﻞ ﻋ‬
‫ﺑﺸ ﻲء ﻣﺎ ﻫﻨﺎك ﻻﺣ ًﻘﺎ‪ .‬ﻋﲆ‬‫ﺑﺮﻧﺎﻣﺠﻚ وأﻧﻚ ﻗﺪﺗﺮﻏ ﺐ ﻓ ﻲ اﻟﻘﻴﺎم‬‫ﺑﺄي ﺷ ﻲء ﻓ ﻲ ﻣﺮﺣﻠ ﺔ ﻣﻌﻴﻨ ﺔ ﻣﻦﺗﻨﻔﻴﺬ‬‫ﺘﻴﺎر ﻋﺪم اﻟﻘﻴﺎم‬
‫اﺧ‬
‫ﺑ ﺔ أي أﺳﻤﺎء ﻣﻠﻔﺎ ت ﻣﻔﻘﻮدة إﱃ ﻣﻠﻒﻳ ﺴﻤﻰ ‪lost_files.txt.‬ﻟﻦﻳﺮى‬
‫ﺘﺎ‬
‫ﺒﺮﻧﺎﻣﺞ ﻗﺪ ﻧﻘﺮر ﻛ‬
‫ﺜﺎل ‪ ،‬ﻓ ﻲ ﻫﺬا اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺳ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ أي ﻧﺼﻮص ﻣﻔﻘﻮدة‪.‬‬
‫ﺘﻤﻜﻦ ﻣﻦ ﻗﺮاءة اﻟﻤﻠﻒ واﻟ‬
‫ﺘﺨﺪﻣﻮن ﻫﺬا اﻟﻤﻠﻒ ‪ ،‬ﻟﻜﻨﻨﺎﺳﻨ‬
‫اﻟﻤ ﺴ‬

‫ﺑﻼغ ﻋﻨﻬﺎ‬
‫ﺘ ﻲﻳﺠ ﺐ اﻹ‬
‫ﺗﺤﺪﻳﺪ اﻷﺧﻄﺎء اﻟ‬

‫ﺘﺮض‬
‫ﺘ ﻲ ﻣﻦ اﻟﻤﻔ‬
‫ﺘﺨﺪﻣﻮن اﻟﻨﺼﻮص اﻟ‬
‫ﺑﺼﻤ ﺖ؟ إذا ﻋﺮف اﻟﻤ ﺴ‬‫ﺘﻰﺗﻔﺸﻞ‬
‫ﺘﺨﺪﻣﻴﻦ ﻋﻦ ﺧﻄﺄ وﻣ‬
‫ﺒﻠﻎ اﻟﻤ ﺴ‬
‫ﺘﻰﺗ‬
‫ﻛﻴﻒﺗﻌﺮف ﻣ‬
‫ﺘﻮﻗﻌﻮن رؤﻳ ﺔ‬
‫ﺘﺨﺪﻣﻮنﻳ‬
‫ﺑﻌﺾ اﻟﻨﺼﻮص‪ .‬إذا ﻛﺎن اﻟﻤ ﺴ‬‫ﺒ ﺐ ﻋﺪمﺗﺤﻠﻴﻞ‬
‫ﺒﺮ ﻫﻢ ﻋﻦﺳ‬
‫ﺘﻢﺗﺤﻠﻴﻠﻬﺎ ‪ ،‬ﻓﻘﺪﻳﻘﺪرون رﺳﺎﻟ ﺔﺗﺨ‬
‫أنﻳ‬
‫ﺑﻌﺾ اﻟﻨﺼﻮص‬‫ﺘﺎﺟﻮن إﱃ ﻣﻌﺮﻓ ﺔ أن‬
‫ﺘﻢﺗﺤﻠﻴﻠﻬﺎ ‪ ،‬ﻓﻘﺪ ﻻﻳﺤ‬
‫ﺘﺮض أنﻳ‬
‫ﺘ ﻲ ﻣﻦ اﻟﻤﻔ‬
‫ﺘ ﺐ اﻟ‬
‫ﺘﺎﺋﺞ وﻟﻜﻨﻬﻢ ﻻﻳﻌﺮﻓﻮن اﻟﻜ‬
‫ﺑﻌﺾ اﻟﻨ‬
‫ﺘﺨﺪام‬
‫ﺜﻮن ﻋﻨﻬﺎ إﱃﺗﻘﻠﻴﻞ إﻣﻜﺎﻧﻴ ﺔ اﺳ‬
‫ﺒﺤ‬‫ﺘ ﻲ ﻻﻳ‬
‫ﺑﺎﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺘﻮﻓﺮة‪.‬ﻳﻤﻜﻦ أنﻳﺆديﺗﺰوﻳﺪ اﻟﻤ ﺴ‬
‫ﻛﺎﻧ ﺖ ﻏﻴﺮ ﻣ‬
‫ﺗﺤﻜﻤﺎ دﻗﻴ ًﻘﺎ ﻓ ﻲ ﻣﻘﺪار اﻟﻤﺸﺎرﻛ ﺔ ﻣﻊ اﻟﻤ ﺴ‬
‫ﺘﺨﺪﻣﻴﻦ ﻋﻨﺪﻣﺎﺗ ﺴﻮء‬ ‫ً‬ ‫ﺑﺮﻧﺎﻣﺠﻚ‪.‬ﺗﻤﻨﺤﻚ ﻫﻴﺎﻛﻞ ﻣﻌﺎﻟﺠ ﺔ اﻷﺧﻄﺎء ﻓ ﻲ ‪Python‬‬
‫ﺘﻬﺎ‪.‬‬
‫ﺘ ﻲﺗﺮﻳﺪ ﻣﺸﺎرﻛ‬
‫ﺘﻘﺮﻳﺮ ﻣﻘﺪار اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘﺮوك ﻟﻚ ﻟ‬
‫اﻷﻣﻮر ؛ اﻷﻣﺮ ﻣ‬

‫ﺜﻞ اﻷﺧﻄﺎء اﻟﻨﺤﻮﻳ ﺔ أو اﻟﻤﻨﻄﻘﻴ ﺔ‪.‬‬


‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻟﻴ ﺲ ﻋﺮﺿ ﺔ ﻟﻸﺧﻄﺎء اﻟﺪاﺧﻠﻴ ﺔ ‪ ،‬ﻣ‬‫ﺒﺮ‬
‫ﺘ‬‫ﺘﻮ ب ﺟﻴﺪًا واﻟﻤﺨ‬
‫اﻟﻜﻮد اﻟﻤﻜ‬
‫ﺗﺼﺎل‬
‫ﺘﺨﺪم ‪ ،‬أو وﺟﻮد ﻣﻠﻒ ‪ ،‬أو إﻣﻜﺎﻧﻴ ﺔ اﻻ‬
‫ﺜﻞ إدﺧﺎل اﻟﻤ ﺴ‬
‫ﺑﺮﻧﺎﻣﺠﻚ ﻋﲆ ﺷ ﻲء ﺧﺎرﺟ ﻲ ‪ ،‬ﻣ‬‫ﺘﻤﺪ‬
‫وﻟﻜﻦ ﻓ ﻲ ﻛﻞ ﻣﺮةﻳﻌ‬
‫ﺜﻨﺎءا ت‬
‫ﺘ‬‫ﺘﻞ ﻣﻌﺎﻟﺠ ﺔ اﻻﺳ‬
‫ﺒﺮة ﻓ ﻲ ﻣﻌﺮﻓ ﺔ ﻣﻜﺎنﺗﻀﻤﻴﻦ ﻛ‬
‫ﺘ ﺴﺎﻋﺪك اﻟﻘﻠﻴﻞ ﻣﻦ اﻟﺨ‬
‫ﺜﻨﺎء‪.‬ﺳ‬
‫ﺘ‬‫ﺘﻤﺎل ﻇﻬﻮر اﺳ‬
‫ﺒﻜ ﺔ ‪ ،‬ﻓﻬﻨﺎك اﺣ‬
‫ﺑﺎﻟﺸ‬
‫ﺘ ﻲﺗﻈﻬﺮ‪.‬‬
‫ﺘﺨﺪﻣﻴﻦ ﺣﻮل اﻷﺧﻄﺎء اﻟ‬
‫ﺘﻘﺮﻳﺮ ﻟﻠﻤ ﺴ‬
‫ﺑﺮﻧﺎﻣﺠﻚ وﻣﻘﺪار اﻟ‬‫ﻓﻲ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺑﺪﻻ ً ﻣﻦ اﻷرﻗﺎم‪ .‬ﻋﻨﺪﻣﺎ‬‫ﻧﺼﺎ‬


‫ﺑﺈدﺧﺎل رﻗﻤ ﻲ ﻋﻨﺪﻣﺎﻳﻘﺪم اﻷﺷﺨﺎص ً‬‫ﺒﺔ‬
‫‪10-6.‬اﻹﺿﺎﻓ ﺔ‪:‬ﺗﺤﺪ ث إﺣﺪى اﻟﻤﺸﻜﻼ ت اﻟﺸﺎﺋﻌ ﺔ ﻋﻨﺪ اﻟﻤﻄﺎﻟ‬

‫ﺒﻊ‬
‫ﺑﺮﻗﻤﻴﻦ‪ .‬اﺟﻤﻌﻬﻢ ﻣﻌً ﺎ واﻃ‬‫ﺑﺮﻧﺎﻣﺠًﺎﻳﻄﺎﻟ ﺐ‬‫ﺘﺐ‬
‫ﺘﺤﺼﻞ ﻋﲆ ﺧﻄﺄ ﻓ ﻲ اﻟﻨﻮع‪ .‬اﻛ‬
‫ﺗﺤﺎولﺗﺤﻮﻳﻞ اﻹدﺧﺎل إﱃ ﻋﺪد ﺻﺤﻴﺢ ‪،‬ﺳ‬

‫ﺑﺮﻧﺎﻣﺠﻚ‬‫ﺒﺮ‬
‫ﺘ‬‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔ ﺧﻄﺄ ﻣﺄﻟﻮﻓ ﺔ‪ .‬اﺧ‬
‫ﺑﻄ‬‫ﺘ ﻲ اﻹدﺧﺎل رﻗﻤﺎ ً ‪ ،‬وﻗﻢ‬
‫ﺘﺸﻒ ﺧﻄﺄ ‪TypeError‬إذا ﻟﻢﺗﻜﻦ أي ﻣﻦ ﻗﻴﻤ‬
‫ﺘﻴﺠ ﺔ‪ .‬اﻛ‬
‫اﻟﻨ‬

‫ﺑﺪﻻ ً ﻣﻦ رﻗﻢ‪.‬‬‫ﺛﻢ إدﺧﺎل ﻧﺺ‬‫ﺑﺈدﺧﺎل رﻗﻤﻴﻦ‬

‫)واﺻﻠ ﺖ(‬

‫ﺜﻨﺎءا ت ‪207‬‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪم‬
‫ﺘﻤﻜﻦ اﻟﻤ ﺴ‬
‫ﺘﻰﻳ‬
‫ﺘﻤﺮﻳﻦ ‪10-6‬ﻓ ﻲ ﺣﻠﻘ ﺔ ‪while‬ﺣ‬
‫ﺑﻚ ﻣﻦ اﻟ‬‫ﺑﻠﻒ اﻟﻜﻮد اﻟﺨﺎص‬‫ﺒ ﺔ اﻹﺿﺎﻓ ﺔ‪ :‬ﻗﻢ‬
‫‪10-7.‬ﺣﺎﺳ‬
‫ﺑﺪﻻ ً ﻣﻦ رﻗﻢ‪.‬‬‫ﻧﺼﺎ‬
‫ﺗﻜ ﺐ ﺧﻄﺄ وأدﺧﻞ ً‬
‫ﺘﻰ إذا ار‬
‫ﺘﻤﺮار ﻓ ﻲ إدﺧﺎل اﻷرﻗﺎم ﺣ‬
‫ﻣﻦ اﻻﺳ‬

‫ﺛ ﺔ أﺳﻤﺎء ﻋﲆ اﻷﻗﻞ ﻟﻠﻘﻄﻂ‬


‫ﺛﻼ‬‫ﺘﺨﺰﻳﻦ‬
‫ﺑ‬‫ﺑﺈﻧﺸﺎء ﻣﻠﻔﻴﻦ ‪cats.txt ،‬و ‪dogs.txt.‬ﻗﻢ‬‫‪10-8. Cats and Dogs:‬ﻗﻢ‬
‫ﺒﺎﻋ ﺔ‬
‫ﺑﺮﻧﺎﻣﺠًﺎﻳﺤﺎول ﻗﺮاءة ﻫﺬه اﻟﻤﻠﻔﺎ ت وﻃ‬‫ﺘﺐ‬
‫ﺜﺎﻧ ﻲ‪ .‬اﻛ‬
‫ﺛ ﺔ أﺳﻤﺎء ﻛﻼ ب ﻓ ﻲ اﻟﻤﻠﻒ اﻟ‬
‫ﺛﻼ‬‫ﻓ ﻲ اﻟﻤﻠﻒ اﻷول و‬
‫ﺒﺾ ﻋﲆ‬
‫ﺘﻠ ﺔ ‪try-except‬ﻟﻠﻘ‬
‫ﺑﻚ ﻓ ﻲ ﻛ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻠﻒ اﻟ‬‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ ﻋﲆ اﻟﺸﺎﺷ ﺔ‪ .‬ﻗﻢ‬
‫ﻣﺤ‬
‫ﺘﻠﻒ‬
‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔ ﻣﺄﻟﻮﻓ ﺔ إذا ﻛﺎن اﻟﻤﻠﻒ ﻣﻔﻘﻮدًا‪ .‬اﻧﻘﻞ أﺣﺪ اﻟﻤﻠﻔﺎ ت إﱃ ﻣﻮﻗﻊ ﻣﺨ‬
‫ﺑﻄ‬‫ﺧﻄﺄ ‪FileNotFound ،‬وﻗﻢ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺜﻨﺎء‬
‫ﺘ‬‫ﺘﻠ ﺔ اﻻﺳ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ﻛ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺗﺄﻛﺪ ﻣﻦﺗﻨﻔﻴﺬ اﻟ‬
‫ﻋﲆ ﻧﻈﺎﻣﻚ ‪ ،‬و‬

‫ﺑﺼﻤ ﺖ إذا ﻛﺎن أي‬‫ﺘﻤﺮﻳﻦ ‪10-8‬ﻟﻠﻔﺸﻞ‬


‫ﺜﻨﺎء" ﻓ ﻲ اﻟ‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫ﺘﻠ ﺔ "‬
‫ﺘﻌﺪﻳﻞ اﻟﻜ‬
‫ﺑ‬‫ﺘ ﺔ‪ :‬ﻗﻢ‬
‫‪10-9.‬اﻟﻘﻄﻂ واﻟﻜﻼ ب اﻟﺼﺎﻣ‬
‫ﻣﻠﻒ ﻣﻔﻘﻮدًا‪.‬‬

‫ﺑﻌﺾ‬‫ﺑﺤ ﺚ ﻋﻦ‬
‫ﺑﺰﻳﺎرة )‪Project Gutenberg (http://gutenberg.org/‬وا‬‫‪10-10.‬اﻟﻜﻠﻤﺎ ت اﻟﺸﺎﺋﻌ ﺔ‪ :‬ﻗﻢ‬
‫ﺘﻨﺰﻳﻞ اﻟﻤﻠﻔﺎ ت اﻟﻨﺼﻴ ﺔ ﻟﻬﺬه اﻷﻋﻤﺎل ‪ ،‬أو اﻧ ﺴﺦ اﻟﻨﺺ اﻷوﻟ ﻲ ﻣﻦ‬
‫ﺑ‬‫ﺘ ﻲﺗﺮﻏ ﺐ ﻓ ﻲﺗﺤﻠﻴﻠﻬﺎ‪ .‬ﻗﻢ‬
‫اﻟﻨﺼﻮص اﻟ‬
‫ﺑﻚ‪.‬‬‫ﺗﺮ اﻟﺨﺎص‬
‫ﺒﻴﻮ‬
‫ﺑﻚ إﱃ ﻣﻠﻒ ﻧﺼ ﻲ ﻋﲆ ﺟﻬﺎز اﻟﻜﻤ‬‫ﺘﻌﺮض اﻟﺨﺎص‬
‫اﻟﻤ ﺴ‬

‫ﺒﺎرة ﻓ ﻲﺳﻠ ﺴﻠ ﺔ‪ .‬ﻋﲆ‬


‫ﺘ ﻲﺗﻈﻬﺮ ﻓﻴﻬﺎ ﻛﻠﻤ ﺔ أو ﻋ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪count‬ﻟﻤﻌﺮﻓ ﺔ ﻋﺪد اﻟﻤﺮا ت اﻟ‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﺎﻟ ﻲ ﻋﺪد ﻣﺮا ت ﻇﻬﻮر "اﻟﺼﻒ" ﻓ ﻲﺳﻠ ﺴﻠ ﺔ‪:‬‬
‫ﺜﺎل ‪،‬ﺗﺤ ﺴ ﺐ اﻟﻜﻮد اﻟ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺳ‬

‫ﺑﻚ" )'‪('row‬‬
‫= ‪">>> line‬ﺻﻒ ‪ ،‬ﺻﻒ ‪ ،‬ﺻﻒ ﻗﺎر‬
‫‪>>> line.count‬‬
‫‪2‬‬
‫)'‪>>> line.lower (). count ('row‬‬
‫‪3‬‬

‫ﺘﺨﺪام اﻟﻤﺎﺳﻜﺎ ت )(اﻟ ﺴﻔﻠﻴ ﺔ‬


‫ﺑﺎﺳ‬‫ﻻﺣﻆ أنﺗﺤﻮﻳﻞ اﻟ ﺴﻠ ﺴﻠ ﺔ إﱃ أﺣﺮف ﺻﻐﻴﺮة‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻛﻴﻔﻴ ﺔﺗﻨ ﺴﻴﻘﻬﺎ‪.‬‬‫ﺒﺤ ﺚ ﻋﻨﻬﺎ ‪،‬‬
‫ﺘ ﻲﺗ‬
‫ﻛﻞ ﻣﻈﺎ ﻫﺮ اﻟﻜﻠﻤ ﺔ اﻟ‬

‫ﺜﺮ ت ﻋﻠﻴﻬﺎ ﻓ ﻲ ‪Project Gutenberg‬و‬


‫ﺘ ﻲﻋ‬
‫ﺑﺮﻧﺎﻣﺠًﺎﻳﻘﺮأ اﻟﻤﻠﻔﺎ ت اﻟ‬‫ﺘﺐ‬
‫اﻛ‬
‫ﻳﺤﺪد ﻋﺪد ﻣﺮا ت ﻇﻬﻮر ﻛﻠﻤ ﺔ "‪"the‬ﻓ ﻲ ﻛﻞ ﻧﺺ‪.‬‬

‫ﺒﻴﺎﻧﺎ ت‬
‫ﺗﺨﺰﻳﻦ اﻟ‬
‫ﺘﺨﺪﻣﻴﻦ إدﺧﺎل أﻧﻮاع ﻣﻌﻴﻨ ﺔ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت‪.‬‬
‫ﺑﺮاﻣﺠﻚ ﻣﻦ اﻟﻤ ﺴ‬‫ﺘﻄﻠ ﺐ اﻟﻌﺪﻳﺪ ﻣﻦ‬
‫ﺳ‬
‫ﺑﺮﻧﺎﻣﺠﻚ ‪ ،‬ﻓ ﺴﻮفﺗﻘﻮم‬‫ﺘﺼﻮر‪ .‬ﻣﻬﻤﺎ ﻛﺎنﺗﺮﻛﻴﺰ‬
‫ﺑﻴﺎﻧﺎ ت ﻟ‬‫ﺒ ﺔ ﻣﺎ أوﺗﻘﺪﻳﻢ‬
‫ﺘﻔﻀﻴﻼ ت ﻓ ﻲ ﻟﻌ‬
‫ﺘﺨﺰﻳﻦ اﻟ‬
‫ﺑ‬‫ﺘﺨﺪﻣﻴﻦ‬
‫ﻗﺪﺗ ﺴﻤﺢ ﻟﻠﻤ ﺴ‬
‫ﺘﺨﺪﻣﻮن أﺣﺪ‬
‫ﺜﻞ اﻟﻘﻮاﺋﻢ واﻟﻘﻮاﻣﻴ ﺲ‪ .‬ﻋﻨﺪﻣﺎﻳﻐﻠﻖ اﻟﻤ ﺴ‬
‫ﺒﻴﺎﻧﺎ ت ﻣ‬
‫ﺘﺨﺪﻣﻮن ﻓ ﻲ ﻫﻴﺎﻛﻞ اﻟ‬
‫ﺘ ﻲﻳﻮﻓﺮ ﻫﺎ اﻟﻤ ﺴ‬
‫ﺘﺨﺰﻳﻦ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺑ‬
‫ﺗﻚ‬
‫ﺑﻴﺎﻧﺎ‬‫ﺘﻀﻤﻦﺗﺨﺰﻳﻦ‬
‫ﺑﺬﻟﻚﺗ‬‫ﺑ ﺴﻴﻄ ﺔ ﻟﻠﻘﻴﺎم‬‫ﺘ ﻲ أدﺧﻠﻮ ﻫﺎ‪ .‬ﻫﻨﺎك ﻃﺮﻳﻘ ﺔ‬
‫ﺋﻤﺎ ﻓ ﻲ ﺣﻔﻆ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘﺮﻏ ﺐ دا ً‬
‫ﺒﺮاﻣﺞ ‪،‬ﺳ‬
‫اﻟ‬
‫ﺘﺨﺪام وﺣﺪة ‪json .‬‬
‫ﺑﺎﺳ‬

‫‪208‬اﻟﻔﺼﻞ ‪10‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴﺎﻧﺎ ت ﻣﻦ ﻫﺬا اﻟﻤﻠﻒ ﻓ ﻲ اﻟﻤﺮة‬


‫ﺗﺤﻤﻴﻞ اﻟ‬
‫ﺒ ﺴﻴﻄ ﺔ ﻓ ﻲ ﻣﻠﻒ و‬
‫ﺑﻴﺎﻧﺎ ت ‪Python‬اﻟ‬‫ﺗﻔﺮﻳﻎ ﻫﻴﺎﻛﻞ‬
‫ﺘﻴﺢ ﻟﻚ وﺣﺪة ‪json‬‬
‫ﺗ‬
‫ﺘﻠﻔ ﺔ‪ .‬واﻷﻓﻀﻞ‬
‫ﺑﺮاﻣﺞ ‪Python‬اﻟﻤﺨ‬‫ﺑﻴﻦ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺘﺨﺪام ‪json‬ﻟﻤﺸﺎرﻛ ﺔ اﻟ‬ ‫ﺒﺮﻧﺎﻣﺞ‪.‬ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ اﺳ‬ ‫ﺘﻢ ﻓﻴﻬﺎﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘ ﻲﻳ‬
‫ﺘﺎﻟﻴ ﺔ اﻟ‬
‫اﻟ‬
‫ﺘﻨ ﺴﻴﻖ ‪JSON‬ﻣﻊ‬
‫ﺑ‬‫ﺘ ﻲﺗﺨﺰﻧﻬﺎ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﺼﺮ ﻋﲆ ‪Python ،‬ﻟﺬاﻳﻤﻜﻨﻚ ﻣﺸﺎرﻛ ﺔ اﻟ‬
‫ﺑﻴﺎﻧﺎ ت ‪JSON‬ﻻﻳﻘ‬‫ﻣﻦ ذﻟﻚ ‪ ،‬أنﺗﻨ ﺴﻴﻖ‬
‫ﺒﺮﻣﺠ ﺔ اﻷﺧﺮى‪ .‬إﻧﻪﺗﻨ ﺴﻴﻖ ﻣﻔﻴﺪ وﻣﺤﻤﻮل ‪ ،‬وﻳ ﺴﻬﻞﺗﻌﻠﻤﻪ‪.‬‬
‫اﻷﺷﺨﺎص اﻟﺬﻳﻦﻳﻌﻤﻠﻮن ﻓ ﻲ اﻟﻌﺪﻳﺪ ﻣﻦ ﻟﻐﺎ ت اﻟ‬

‫ﺘﻢﺗﻄﻮﻳﺮﺗﻨ ﺴﻴﻖ )‪JSON ( JavaScript Object Notation‬ﻓ ﻲ اﻷﺻﻞ ﻟـ ‪JavaScript.‬‬


‫ﻟﻢﻳ‬
‫ﺑﻤﺎ ﻓ ﻲ ذﻟﻚ ‪Python.‬‬ ‫ﺒﺢ ﻣﻨﺬ ذﻟﻚ اﻟﺤﻴﻦﺗﻨ ﺴﻴ ًﻘﺎ ﺷﺎﺋﻌً ﺎﺗ ﺴ‬
‫ﺘﺨﺪﻣﻪ اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻠﻐﺎ ت ‪،‬‬ ‫وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﻘﺪ أﺻ‬

‫ﺘﺨﺪام )( ‪json.dump‬و )( ‪json.load‬‬


‫اﺳ‬
‫ﺒﺮﻧﺎﻣﺞ‬
‫ﺘﺨﺪم اﻟ‬
‫ﺑﺮﻧﺎﻣﺞ آﺧﺮﻳﻘﺮأ ﻫﺬه اﻷرﻗﺎم ﻣﺮة أﺧﺮى ﻓ ﻲ اﻟﺬاﻛﺮة‪.‬ﺳﻴ ﺴ‬
‫ﺑﺮﻧﺎﻣﺠًﺎ ﻗﺼﻴ ﺮًاﻳﺨﺰن ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻷرﻗﺎم و‬‫ﺘﺐ‬
‫ﻟﻨﻜ‬
‫ﺜﺎﻧ ﻲ ‪json.load ().‬‬
‫ﺒﺮﻧﺎﻣﺞ اﻟ‬
‫ﺘﺨﺪم اﻟ‬
‫ﺘﺨﺰﻳﻦ ﻣﺠﻤﻮﻋ ﺔ اﻷرﻗﺎم ‪ ،‬وﺳﻴ ﺴ‬
‫اﻷول )( ‪json.dump‬ﻟ‬

‫ﺒﻴﺎﻧﺎ ت‪ .‬إﻟﻴﻚ‬
‫ﺘﺨﺰﻳﻦ اﻟ‬
‫ﺘﺨﺪاﻣﻪ ﻟ‬
‫ﺘﺨﺰﻳﻨﻪ وﻛﺎﺋﻦ ﻣﻠﻒﻳﻤﻜﻦ اﺳ‬
‫ﺒﻴﺎﻧﺎ ت ﻟ‬
‫ﺗﺄﺧﺬ اﻟﺪاﻟ ﺔ )( ‪json.dump‬وﺳﻴﻄﻴﻦ‪ :‬ﺟﺰء ﻣﻦ اﻟ‬
‫ﺘﺨﺰﻳﻦ ﻗﺎﺋﻤ ﺔ ﻣﻦ اﻷرﻗﺎم‪:‬‬
‫ﺘﺨﺪام )( ‪json.dump‬ﻟ‬
‫ﻛﻴﻔﻴ ﺔ اﺳ‬

‫‪author.py‬‬ ‫ﺘﻴﺮاد ‪json‬‬


‫اﺳ‬
‫_‪number‬‬
‫اﻷرﻗﺎم ]‪= [2 ، 3 ، 5 ، 7 ، 11 ، 13‬‬

‫'‪u filename = 'number.json‬‬


‫ﺘﺢ )اﺳﻢ اﻟﻤﻠﻒ ‪"w") ،‬ﻛـ ‪f_obj:‬‬
‫‪v‬ﻣﻊ ﻓ‬
‫‪)w json.dump‬أرﻗﺎم ‪f_obj) ،‬‬

‫ﺘﺨﺰﻳﻦ ﻗﺎﺋﻤ ﺔ اﻷرﻗﺎم ﻓﻴﻪ‪.‬‬


‫ﺘﺎر اﺳﻢ ﻣﻠﻒ ﻟ‬
‫ﺑﺎﻷرﻗﺎم ﻟﻠﻌﻤﻞ ﻣﻌﻬﺎ‪ .‬ﻓ ﻲ ‪u‬ﻧﺨ‬‫ﺛﻢ إﻧﺸﺎء ﻗﺎﺋﻤ ﺔ‬
‫ﺘﻴﺮاد وﺣﺪة ‪json‬‬ ‫ﻧﻘﻮم أوﻻ ً‬
‫ﺑﺎﺳ‬

‫ﺘﺢ‬
‫ﺛﻢ ﻧﻔ‬
‫ﺘﻨ ﺴﻴﻖ ‪JSON.‬‬
‫ﺑ‬‫ﺒﻴﺎﻧﺎ ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻤﻠﻒ ﻣﺨﺰﻧ ﺔ‬
‫ﺘﺪاد اﻟﻤﻠﻒ ‪ nosj.‬ﻟﻺﺷﺎرة إﱃ أن اﻟ‬
‫ﺘﺨﺪام اﻣ‬
‫ﺘﺎد اﺳ‬
‫ﻣﻦ اﻟﻤﻌ‬
‫ﺘﺨﺪم )( ‪json.dump‬‬
‫ﺒﻴﺎﻧﺎ ت إﱃ اﻟﻤﻠﻒ ‪v.‬ﻓ ﻲ ‪w‬ﻧ ﺴ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺑﻜ‬‫ﺑ ﺔ ‪ ،‬ﻣﻤﺎﻳ ﺴﻤﺢ ﻟـ ‪json‬‬
‫ﺘﺎ‬
‫اﻟﻤﻠﻒ ﻓ ﻲ وﺿﻊ اﻟﻜ‬

‫ﺘﺨﺰﻳﻦ أرﻗﺎم اﻟﻘﺎﺋﻤ ﺔ ﻓ ﻲ ﻣﻠﻒ ‪number.json.‬‬


‫وﻇﻴﻔ ﺔ ﻟ‬
‫ﺘﺢ ﻣﻠﻒ ‪number.json‬و‬
‫ﺒﺮﻧﺎﻣﺞ ﻟﻴ ﺲ ﻟﺪﻳﻪ إﺧﺮاج ‪ ،‬وﻟﻜﻦ دﻋﻮﻧﺎ ﻧﻔ‬
‫ﻫﺬا اﻟ‬
‫ﺗﻤﺎﻣﺎ‪:‬‬
‫ً‬ ‫ﺒﻪ ‪Python‬‬
‫ﺘﻨ ﺴﻴﻖﻳﺸ‬
‫ﺑ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺘﻢﺗﺨﺰﻳﻦ اﻟ‬
‫اﻧﻈﺮ إﻟﻴﻪ‪.‬ﻳ‬

‫]‪[2 ، 3 ، 5 ، 7 ، 11 ، 13‬‬

‫ﺘﺨﺪم )( ‪json.load‬ﻟﻘﺮاءة اﻟﻘﺎﺋﻤ ﺔ ﻣﺮة أﺧﺮى ﻓ ﻲ اﻟﺬاﻛﺮة‪:‬‬


‫ﺑﺮﻧﺎﻣﺠًﺎﻳ ﺴ‬‫ﺘ ﺐ اﻵن‬
‫ﺳﻨﻜ‬

‫ﺘﻴﺮاد ‪json‬‬
‫اﺳ‬ ‫‪number_ reader.py‬‬

‫'‪u filename = 'number.json‬‬


‫ﺘﻮح ﻛـ ‪f_obj:‬‬
‫‪v‬ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫أرﻗﺎم )‪w = json.load (f_obj‬‬

‫ﺒﺎﻋ ﺔ )أرﻗﺎم(‬
‫ﻃ‬

‫ﺜﻨﺎءا ت ‪209‬‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬
‫‪Machine Translated by Google‬‬

‫ﺒﻨﺎ إﻟﻴﻪ‪ .‬ﻫﺬا اﻟﻮﻗ ﺖ‬


‫ﺘ‬‫ﺘﺄﻛﺪ ﻣﻦ اﻟﻘﺮاءة ﻣﻦ ﻧﻔ ﺲ اﻟﻤﻠﻒ اﻟﺬي ﻛ‬
‫ﻓ ﻲ ‪u‬ﻧﺤﻦ ﻧ‬

‫ﺘﺨﺪم وﻇﻴﻔ ﺔ ) (‬
‫ﺘﺎج ﻓﻘﻂ ﻟﻠﻘﺮاءة ﻣﻦ اﻟﻤﻠﻒ‪ .‬ﻓ ﻲ ‪w ،‬ﻧ ﺴ‬
‫ﺗﺤ‬‫ﺘﺤﻪ ﻓ ﻲ وﺿﻊ اﻟﻘﺮاءةﻷن ‪Python‬‬
‫ﺘﺢ اﻟﻤﻠﻒ ‪ ،‬ﻧﻔ‬
‫ﻋﻨﺪﻣﺎ ﻧﻔ‬
‫ﺘﻐﻴﺮة ‪.‬‬
‫ﺘﺤﻤﻴﻞ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ ‪number.json ،‬وﻧﺨﺰﻧﻬﺎ ﻓ ﻲ أرﻗﺎم ﻣ‬
‫‪json.load‬ﻟ‬

‫ﺘ ﻲﺗﻢ إﻧﺸﺎؤ ﻫﺎ ﻓ ﻲ ‪number_writer.py:‬‬


‫ﺘﺮدة وﻧﺮى أﻧﻬﺎ ﻧﻔ ﺲ اﻟﻘﺎﺋﻤ ﺔ اﻟ‬
‫ﺒﻊ ﻗﺎﺋﻤ ﺔ اﻷرﻗﺎم اﻟﻤ ﺴ‬
‫أﺧﻴ ﺮًا ‪ ،‬ﻧﻄ‬

‫]‪[2 ، 3 ، 5 ، 7 ، 11 ، 13‬‬

‫ﺑﺮﻧﺎﻣﺠﻴﻦ‪.‬‬‫ﺑﻴﻦ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺑ ﺴﻴﻄ ﺔ ﻟﻤﺸﺎرﻛ ﺔ اﻟ‬‫ﻫﺬه ﻃﺮﻳﻘ ﺔ‬

‫ﺘﺨﺪم‬
‫ﺘ ﻲﻳﻨﺸﺌﻬﺎ اﻟﻤ ﺴ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺣﻔﻆ وﻗﺮاءة اﻟ‬
‫ﺘﺨﺰﻳﻦ‬
‫ﺑ‬‫ﺘﺨﺪم ‪،‬ﻷﻧﻚ إذا ﻟﻢﺗﻘﻢ‬
‫ﺘ ﻲﻳﻨﺸﺌﻬﺎ اﻟﻤ ﺴ‬
‫ﺒﻴﺎﻧﺎ ت اﻟ‬
‫ﺘﺨﺪام ‪json‬ﻣﻔﻴﺪًا ﻋﻨﺪ اﻟﻌﻤﻞ ﻣﻊ اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﻳﻌﺪ ﺣﻔﻆ اﻟ‬
‫ﺜﺎل ﻧﻄﻠ ﺐ ﻓﻴﻪ ﻣﻦ‬
‫ﻟﻨﻠﻖ ﻧﻈﺮة ﻋﲆ ﻣ‬
‫ﺒﺮﻧﺎﻣﺞ ﻋﻦ اﻟﻌﻤﻞ‪ِ .‬‬
‫ﺘﻮﻗﻒ اﻟ‬
‫ﺘﻔﻘﺪ ﻫﺎ ﻋﻨﺪﻣﺎﻳ‬
‫ﺑﻄﺮﻳﻘ ﺔ ﻣﺎ ‪ ،‬ﻓ ﺴ‬‫ﺘﺨﺪم‬
‫ﻣﻌﻠﻮﻣﺎ ت اﻟﻤ ﺴ‬
‫ﺒﺮﻧﺎﻣﺞ ﻣﺮة أﺧﺮى‪.‬‬
‫ﺘﺬﻛﺮ اﺳﻤﻪ ﻋﻨﺪﺗﺸﻐﻴﻞ اﻟ‬
‫ﺛﻢ ﻧ‬‫ﺑﺮﻧﺎﻣﺠًﺎ‬‫ﺘ ﻲﻳﺸﻐﻞ ﻓﻴﻬﺎ‬
‫ﺑ ﺔ اﺳﻤﻪ ﻓ ﻲ اﻟﻤﺮة اﻷوﱃ اﻟ‬
‫ﺘﺎ‬
‫ﺘﺨﺪم ﻛ‬
‫اﻟﻤ ﺴ‬

‫ﺘﺨﺪم‪:‬‬
‫ﺘﺨﺰﻳﻦ اﺳﻢ اﻟﻤ ﺴ‬
‫ﺑ‬‫ﺒﺪأ‬
‫ﻟﻨ‬

‫ﺘﺬﻛﺮ_‬
‫ﻳ‬ ‫ﺘﻴﺮاد ‪json‬‬
‫اﺳ‬
‫‪me.py‬‬
‫‪")u username = input‬ﻣﺎ اﺳﻤﻚ؟"(‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'username.json‬‬


‫ﺜﻞ ‪f_obj:‬‬
‫ﺘﻮح ﻣ‬
‫ﻣﻊ )اﺳﻢ اﻟﻤﻠﻒ ‪"w") ،‬ﻣﻔ‬
‫ﺘﺨﺪم ‪f_obj) ،‬‬
‫‪)v json.dump‬اﺳﻢ اﻟﻤ ﺴ‬
‫"‬
‫ﺘﺬﻛﺮك ﻋﻨﺪﻣﺎﺗﻌﻮد ‪،‬‬
‫‪")w print‬ﺳﻨ‬ ‫ﺘﺨﺪم )"!" ‪+‬‬
‫‪+‬اﺳﻢ اﻟﻤ ﺴ‬

‫ﺘﺨﺪم وﻛﺎﺋﻦ‬
‫ﺑﺎﺳﻢ ﻣ ﺴ‬‫ﺘﺨﺪم ‪json.dump () ،‬وﻧﻤﺮره‬
‫ﺑﻌﺪ ذﻟﻚ ‪ ،‬ﻧ ﺴ‬‫ﺘﺨﺰﻳﻦ‪.‬‬
‫ﺘﺨﺪم ﻟﻠ‬
‫ﺑﺎﺳﻢ ﻣ ﺴ‬‫ﻧﺤﻦ ﻧﻄﺎﻟ ﺐ‬
‫ﺘﺨﺪم ﻓ ﻲ ﻣﻠﻒ ‪v.‬‬
‫ﺘﺨﺰﻳﻦ اﺳﻢ اﻟﻤ ﺴ‬
‫ﻣﻠﻒ ‪ ،‬ﻟ‬
‫ﺗﻪ ﻣﻊ‪:‬‬
‫ﺘﺨﺰﻳﻦ ﻣﻌﻠﻮﻣﺎ‬
‫ﺑ‬‫ﺑﺄﻧﻨﺎ ﻗﻤﻨﺎ‬‫ﺘﺨﺪم‬
‫ﺒﺮ اﻟﻤ ﺴ‬
‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔﺗﺨ‬
‫ﺑﻄ‬‫ﺛﻢ ﻧﻘﻮم‬

‫ﻣﺎ اﺳﻤﻚ؟ إرﻳﻚ‬


‫ﺘﺬﻛﺮك ﻋﻨﺪﻣﺎﺗﻌﻮدﻳﺎ إرﻳﻚ!‬
‫ﺳﻮف ﻧ‬

‫ﺑﺎﻟﻔﻌﻞ‪:‬‬‫ﺘﺨﺪم اﻟﺬيﺗﻢﺗﺨﺰﻳﻦ اﺳﻤﻪ‬


‫ﺑﺎﻟﻤ ﺴ‬‫ﺑﺮﻧﺎﻣﺠًﺎ ﺟﺪﻳﺪًاﻳﺮﺣ ﺐ‬‫ﺘ ﺐ اﻵن‬
‫ﻟﻨﻜ‬

‫ﺗﺤﻴ ﺔ_‪yp.resu‬‬ ‫ﺘﻴﺮاد ‪json‬‬


‫اﺳ‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'username.json‬‬

‫ﺘﻮح ﻛـ ‪f_obj:‬‬
‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫)‪u username = json.load (f_obj‬‬
‫"‬
‫ﺘﺨﺪم )" !"‪+‬‬
‫ﺑﻚ ﻣﺮة أﺧﺮى ‪+ ،‬اﺳﻢ اﻟﻤ ﺴ‬‫ﺒﺎ‬
‫‪")v print‬ﻣﺮﺣ ً‬

‫‪210‬اﻟﻔﺼﻞ اﻟﻌﺎﺷﺮ‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪم )( ‪json.load‬ﻟﻘﺮاءة اﻟﻤﻌﻠﻮﻣﺎ ت اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ ‪username.json‬‬


‫ﻓ ﻲ ‪u‬ﻧ ﺴ‬
‫ﺑﻬﻢ ﻣﺮة أﺧﺮى ‪v:‬‬‫ﺘﺮﺣﻴ ﺐ‬
‫ﺘﺨﺪم ‪،‬ﻳﻤﻜﻨﻨﺎ اﻟ‬
‫ﺘﻌﺪﻧﺎ اﺳﻢ اﻟﻤ ﺴ‬
‫ﺑﻌﺪ أن اﺳ‬‫ﺘﻐﻴﺮ ‪ .‬اﻵن‬
‫ﺘﺨﺪم اﻟﻤ‬
‫ﻓ ﻲ اﺳﻢ اﻟﻤ ﺴ‬

‫ﺑﻜﻢ ﻣﻦ ﺟﺪﻳﺪ ‪ ،‬إرﻳﻚ!‬‫أ ﻫﻼ‬

‫ﺒﺮﻧﺎﻣﺠﻴﻦ ﻓ ﻲ ﻣﻠﻒ واﺣﺪ‪ .‬ﻋﻨﺪﻣﺎ ﺷﺨﺺ ﻣﺎ‬


‫ﺘﺎج إﱃ دﻣﺞ ﻫﺬﻳﻦ اﻟ‬
‫ﻧﺤ‬
‫ﺒﺪأ‬
‫ﺑﻬﻢ ﻣﻦ اﻟﺬاﻛﺮة إن أﻣﻜﻦ ؛ ﻟﺬﻟﻚ ‪،‬ﺳﻨ‬‫ﺘﺨﺪم اﻟﺨﺎص‬
‫ﺘﺮداد اﺳﻢ اﻟﻤ ﺴ‬
‫ﻳﻌﻤﻞ ‪Remember_me.py ،‬ﻓﻨﺤﻦ ﻧﺮﻳﺪ اﺳ‬
‫ﺘﺨﺪم‪ .‬إذا ﻟﻢﻳﻜﻦ اﻟﻤﻠﻒ ‪username.json‬ﻣﻮﺟﻮدًا ‪ ،‬ﻓ ﺴﻨﺤﺼﻞ ﻋﲆ ﻣﻮﺟﻪ‬
‫ﺘﺮداد اﺳﻢ اﻟﻤ ﺴ‬
‫ﺑﻤﻨﻊ ﻣﺤﺎوﻟ ﺔﻳﺤﺎول اﺳ‬
‫ﺗﺨﺰﻳﻨﻪ ﻓ ﻲ ‪username.json‬ﻓ ﻲ اﻟﻤﺮة اﻟﻘﺎدﻣ ﺔ‪:‬‬
‫ﺘﺨﺪم و‬
‫ﺜﻨﺎء اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘ‬‫ﺑﺎﺳ‬‫اﻟﺤﻈﺮ‬

‫ﺘﺬﻛﺮ_‬
‫ﻳ‬ ‫ﺘﻴﺮاد ‪json‬‬
‫اﺳ‬
‫‪me.py‬‬
‫ﺒ ًﻘﺎ‪.‬‬
‫ﺘﺨﺪم ‪ ،‬إذا ﻛﺎن ﻗﺪﺗﻢﺗﺨﺰﻳﻨﻪ ﻣ ﺴ‬
‫ﺘﺤﻤﻴﻞ اﺳﻢ اﻟﻤ ﺴ‬
‫ﺑ‬‫‪#‬ﻗﻢ‬
‫ﺘﺨﺰﻳﻨﻪ‪.‬‬
‫ﺑ‬‫ﺘﺨﺪم وﻗﻢ‬
‫‪#‬ﺧﻼف ذﻟﻚ ‪ ،‬اﻃﻠ ﺐ اﺳﻢ اﻟﻤ ﺴ‬
‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'username.json‬‬
‫ﻳﺤﺎول‪:‬‬
‫ﺘﻮح ﻛـ ‪f_obj:‬‬
‫‪u‬ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫ﺘﺨﺪم )‪= json.load (f_obj‬‬‫‪v‬اﺳﻢ اﻟﻤ ﺴ‬
‫ﺜﻨﺎء ‪FileNotFoundError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪w‬‬
‫‪")x username = input‬ﻣﺎ اﺳﻤﻚ؟"(‬
‫ﺘﺢ )اﺳﻢ اﻟﻤﻠﻒ ‪"w") ،‬ﻛـ ‪f_obj:‬‬
‫‪y‬ﻣﻊ ﻓ‬
‫ﺘﺨﺪم ‪f_obj) ،‬‬
‫‪)json.dump‬اﺳﻢ اﻟﻤ ﺴ‬
‫"‬
‫ﺘﺬﻛﺮك ﻋﻨﺪﻣﺎﺗﻌﻮد ‪،‬‬
‫‪")print‬ﺳﻨ‬ ‫ﺘﺨﺪم )"!" ‪+‬‬
‫‪+‬اﺳﻢ اﻟﻤ ﺴ‬
‫آﺧﺮ‪:‬‬
‫"‬
‫ﺗﻚ ‪،‬‬
‫ﺑﻌﻮد‬‫ﺒﺎ‬
‫ﺒﺎﻋ ﺔ )"ﻣﺮﺣ ً‬
‫ﻃ‬ ‫ﺘﺨﺪم )"!" ‪+‬‬
‫‪+‬اﺳﻢ اﻟﻤ ﺴ‬

‫ﺘﺢ اﻟﻤﻠﻒ‬
‫ﺜﺎﻟﻴﻦ اﻷﺧﻴﺮﻳﻦ ﻓ ﻲ ﻣﻠﻒ واﺣﺪ‪ .‬ﻧﺤﺎول ﻓ‬
‫ﺒﺮﻣﺠﻴ ﺔ ﻣﻦ اﻟﻤ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﻞ اﻟ‬
‫ﻻﻳﻮﺟﺪ رﻣﺰ ﺟﺪﻳﺪ ﻫﻨﺎ‪.‬ﺗﻢ دﻣﺞ ﻛ‬
‫‪username.json.‬‬
‫ﺘﺨﺪم ﻣﺮة أﺧﺮى‬
‫ﺑﺎﻟﻤ ﺴ‬‫ﺒﻊ رﺳﺎﻟ ﺔﺗﺮﺣ ﺐ‬
‫ﺘﺨﺪم ﻣﺮة أﺧﺮى ﻓ ﻲ اﻟﺬاﻛﺮة ‪v‬وﻧﻄ‬
‫إذا ﻛﺎن ﻫﺬا اﻟﻤﻠﻒ ﻣﻮﺟﻮدًا ‪ ،‬ﻓﻨﺤﻦ ﻧﻘﺮأ اﺳﻢ اﻟﻤ ﺴ‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻓﻠﻦﻳﻜﻮن ‪username.json‬‬
‫ﺘﺸﻐﻴﻞ اﻟ‬
‫ﺑ‬‫ﺘﺨﺪم‬
‫ﺘ ﻲﻳﻘﻮم ﻓﻴﻬﺎ اﻟﻤ ﺴ‬
‫ﺘﻠ ﺔ ‪else .‬إذا ﻛﺎﻧ ﺖ ﻫﺬه ﻫ ﻲ اﻟﻤﺮة اﻷوﱃ اﻟ‬
‫ﻓ ﻲﻛ‬
‫ﻣﻮﺟﻮدًا وﺧﻄﺄ ‪FileNotFoundError‬‬
‫ﺛﻢ‬
‫ﺑﻪ ‪x.‬‬‫ﺘﺨﺪم اﻟﺨﺎص‬
‫ﺘﺨﺪم إدﺧﺎل اﺳﻢ اﻟﻤ ﺴ‬
‫ﺜﻨﺎء ﺣﻴ ﺚ ﻧﻄﻠ ﺐ ﻣﻦ اﻟﻤ ﺴ‬
‫ﺘ‬‫ﺘﻠ ﺔ اﺳ‬
‫ﺘﻘﻞ ‪Python‬إﱃ ﻛ‬
‫ﺘﻨ‬‫ﺳﻴﺤﺪ ث ث‪.‬ﺳ‬
‫ﺘﺤﻴ ﺔ ‪y.‬‬
‫ﺒﺎﻋ ﺔ اﻟ‬
‫ﺘﺨﺪم وﻃ‬
‫ﺘﺨﺰﻳﻦ اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم )( ‪json.dump‬ﻟ‬
‫ﻧﺴ‬

‫ﺘﺨﺪم وﻣﻠﻒ‬
‫ﺘﻴﺠ ﺔ اﺳﻢ ﻣ ﺴ‬
‫ﺘﻢﺗﻨﻔﻴﺬ ﻫﺎ ‪،‬ﺗﻜﻮن اﻟﻨ‬
‫ﺘ ﻲﻳ‬
‫ﺘﻠ ﺔ اﻟ‬
‫ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ اﻟﻜ‬
‫ﺘﻴﺠ ﺔ‪:‬‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻓﻬﺬه ﻫ ﻲ اﻟﻨ‬
‫ﺘﻢ ﻓﻴﻬﺎﺗﺸﻐﻴﻞ اﻟ‬
‫ﺘ ﻲﻳ‬
‫ﺗﺤﻴ ﺔ‪ .‬إذا ﻛﺎﻧ ﺖ ﻫﺬه ﻫ ﻲ اﻟﻤﺮة اﻷوﱃ اﻟ‬

‫ﻣﺎ اﺳﻤﻚ؟ إرﻳﻚ‬


‫ﺘﺬﻛﺮك ﻋﻨﺪﻣﺎﺗﻌﻮدﻳﺎ إرﻳﻚ!‬
‫ﺳﻮف ﻧ‬

‫ﺧﻼف ذﻟﻚ‪:‬‬

‫ﺑﻜﻢ ﻣﻦ ﺟﺪﻳﺪ ‪ ،‬إرﻳﻚ!‬‫أ ﻫﻼ‬

‫ﺑﺎﻟﻔﻌﻞ ﻣﺮة واﺣﺪة ﻋﲆ اﻷﻗﻞ‪.‬‬‫ﺒﺮﻧﺎﻣﺞ ﻗﺪﺗﻢﺗﺸﻐﻴﻠﻪ‬


‫ﻫﺬا ﻫﻮ اﻹﺧﺮاج اﻟﺬيﺗﺮاه ﻣﺎ إذا ﻛﺎن اﻟ‬

‫ﺜﻨﺎءا ت ‪211‬‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺮﻣﺠﻴ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑﻨﺎء اﻟ‬‫إﻋﺎدة‬

‫ﺘﺪرك أﻧﻪﻳﻤﻜﻨﻚﺗﺤ ﺴﻴﻦ اﻟﻜﻮد ﻋﻦ‬


‫ﺑﻚ ‪ ،‬ﻟﻜﻨﻚﺳ‬‫ﺘﺼﻞ إﱃ ﻧﻘﻄ ﺔ ﺣﻴ ﺚﺳﻴﻌﻤﻞ اﻟﺮﻣﺰ اﻟﺨﺎص‬
‫ﺜﻴﺮ ﻣﻦ اﻷﺣﻴﺎن ‪،‬ﺳ‬
‫ﻓ ﻲﻛ‬
‫ﺑﻨﺎء اﻟﻜﻮد‬‫ﺑﻨﺎء دﻳﻮن‪ .‬إﻋﺎدة‬‫ﺘ ﻲ ﻟﻬﺎ وﻇﺎﺋﻒ ﻣﺤﺪدة‪ .‬ﻫﺬه اﻟﻌﻤﻠﻴ ﺔﺗ ﺴﻤﻰ إﻋﺎدة‬
‫ﻃﺮﻳﻖﺗﻘ ﺴﻴﻤﻪ إﱃﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟﻮﻇﺎﺋﻒ اﻟ‬
‫ﺘﻮﺳﻊ‪.‬‬
‫ﺑﻚﻳﺠﻌﻞ ﻛﻮدك أﻧﻈﻒ ‪ ،‬وأﺳﻬﻞ ﻓ ﻲ اﻟﻔﻬﻢ ‪ ،‬وأﺳﻬﻞ ﻓ ﻲ اﻟ‬‫اﻟﺨﺎص‬

‫ﺜﺮ‪.‬ﻳﻨﺼ ﺐﺗﺮﻛﻴﺰ‬
‫ﺒﺮ ﻣﻦ ﻣﻨﻄﻘﻬﺎ إﱃ وﻇﻴﻔ ﺔ واﺣﺪة أو أﻛ‬
‫ﺘﺬﻛﺮ ﻋﻦ ﻃﺮﻳﻖ ﻧﻘﻞ اﻟﺠﺰء اﻷﻛ‬
‫ﻳﻤﻜﻨﻨﺎ إﻋﺎدةﺗﺸﻜﻴﻞ اﻟ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟﻤﻮﺟﻮدة ﻟﺪﻳﻨﺎ إﱃ وﻇﻴﻔ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺘﺨﺪم ‪ ،‬ﻟﺬﻟﻚ دﻋﻨﺎ ﻧﻨﻘﻞ ﻛﻞ اﻟ‬
‫‪Remember_me.py‬ﻋﲆﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم ‪():‬‬
‫ﺘﺮﺣﻴ ﺐ_اﻟﻤ ﺴ‬
‫ﯩ‬‫ﺗ ﺴﻤ‬

‫ﺘﺬﻛﺮ_‬
‫ﻳ‬ ‫ﺘﻴﺮاد ‪json‬‬
‫اﺳ‬
‫‪me.py‬‬
‫‪defreet_user ():‬‬
‫ﺑﺎﻻﺳﻢ‪"" ".‬‬‫ﺘﺨﺪم‬
‫ﺑﺎﻟﻤ ﺴ‬‫"" ‪"u‬رﺣ ﺐ‬
‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'username.json‬‬
‫ﻳﺤﺎول‪:‬‬
‫ﺘﻮح ﻛـ ‪f_obj:‬‬
‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫ﺘﺨﺪم )‪= json.load (f_obj‬‬
‫اﺳﻢ اﻟﻤ ﺴ‬
‫ﺜﻨﺎء ‪FileNotFoundError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫‪")username = input‬ﻣﺎ اﺳﻤﻚ؟"(‬
‫ﺜﻞ ‪f_obj:‬‬
‫ﺘﻮح ﻣ‬
‫ﻣﻊ )اﺳﻢ اﻟﻤﻠﻒ ‪"w") ،‬ﻣﻔ‬
‫ﺘﺨﺪم ‪f_obj) ،‬‬
‫‪)json.dump‬اﺳﻢ اﻟﻤ ﺴ‬
‫"‬
‫ﺘﺬﻛﺮك ﻋﻨﺪﻣﺎﺗﻌﻮد ‪،‬‬
‫‪")print‬ﺳﻨ‬ ‫ﺘﺨﺪم )"!" ‪+‬‬
‫‪+‬اﺳﻢ اﻟﻤ ﺴ‬
‫آﺧﺮ‪:‬‬
‫"‬
‫ﺗﻚ ‪،‬‬
‫ﺑﻌﻮد‬‫ﺒﺎ‬
‫ﺒﺎﻋ ﺔ )"ﻣﺮﺣ ً‬
‫ﻃ‬ ‫ﺘﺨﺪم )"!" ‪+‬‬
‫‪+‬اﺳﻢ اﻟﻤ ﺴ‬

‫ﺘﺨﺪم )(‬
‫ﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬

‫ﺘ ﻲﺗﻌﻜ ﺲ ﻛﻴﻔﻴ ﺔ ﻋﻤﻞ‬


‫ﺘﺨﺪامﺳﻠ ﺴﻠ ﺔ ‪docstring‬اﻟ‬
‫ﺑﺎﺳ‬‫ﺘﻌﻠﻴﻘﺎ ت‬
‫ﺘﺤﺪﻳ ﺚ اﻟ‬
‫ﺑ‬‫ﺘﺨﺪم وﻇﻴﻔ ﺔ اﻵن ‪ ،‬ﻧﻘﻮم‬
‫ﻧﻈ ﺮًاﻷﻧﻨﺎ ﻧ ﺴ‬
‫ﺘﺮﺣﻴ ﺐ‬
‫ﺜﺮ ﻣﻦ ﻣﺠﺮد اﻟ‬
‫ﺑﺄﻛ‬‫ﺘﺨﺪمﺗﻘﻮم‬ ‫ﺒﺮﻧﺎﻣﺞ ﺣﺎﻟ ًﻴﺎ‪.‬ﻳﻌﺪ ﻫﺬا اﻟﻤﻠﻒ ﻣﻨﻈ ًﻔﺎ إﱃ ﺣﺪ ﻣﺎ ‪ ،‬ﻟﻜﻦ اﻟﻮﻇﻴﻔ ﺔ )(‬
‫ﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬ ‫اﻟ‬
‫ﺘﺨﺪم ﺟﺪﻳﺪ إذا ﻟﻢﻳﻜﻦ ﻣﻮﺟﻮدًا‪.‬‬
‫ﺑﺎﺳﻢ ﻣ ﺴ‬ ‫ﺘﺨﺪم ﻣﺨﺰﻧًﺎ إذا ﻛﺎن ﻣﻮﺟﻮدًا و‬
‫ﺗﻄﺎﻟ ﺐ‬ ‫ﺘﺮﺟﻊ أ ً‬
‫ﻳﻀﺎ اﺳﻢ ﻣ ﺴ‬ ‫ﺘﺨﺪم ‪-‬إﻧﻬﺎﺗ ﺴ‬
‫ﺑﺎﻟﻤ ﺴ‬

‫ﺘﻠﻔ ﺔ‪.‬‬
‫ﺑﺎﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻬﺎم اﻟﻤﺨ‬‫ﺑﺤﻴ ﺚ ﻻﺗﻘﻮم‬
‫ﺘﺨﺪم )(‬
‫ﺑﻨﺎء ﻋﻮاﻣﻞﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬‫دﻋﻨﺎ ﻧﻌﻴﺪ‬
‫ﺘﺨﺪم ﻣﺨﺰن إﱃ داﻟ ﺔ ﻣﻌﺪل ‪sepa:‬‬
‫ﺘﺮداد اﺳﻢ ﻣ ﺴ‬
‫ﺑﻨﻘﻞ اﻟﻜﻮد ﻻﺳ‬‫ﺒﺪأ‬
‫ﺳﻨ‬

‫ﺘﻴﺮاد ‪json‬‬
‫اﺳ‬

‫‪def get_stored_username ():‬‬


‫ﺣﺎ‪"" ".‬‬ ‫ّن إذا ﻛﺎن ﻣ‬
‫ﺘﺎ ً‬ ‫ﺘﺨﺪم ﻣﺨ ﺰ‬
‫"" ‪"u‬اﺣﺼﻞ ﻋﲆ اﺳﻢ ﻣ ﺴ‬

‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'username.json‬‬


‫ﻳﺤﺎول‪:‬‬
‫ﺘﻮح ﻛـ ‪f_obj:‬‬
‫ﻣﻊ )اﺳﻢ ﻣﻠﻒ( ﻣﻔ‬
‫ﺘﺨﺪم )‪= json.load (f_obj‬‬
‫اﺳﻢ اﻟﻤ ﺴ‬
‫ﺜﻨﺎء ‪FileNotFoundError:‬‬
‫ﺘ‬‫ﺑﺎﺳ‬
‫اﻟﺨﺎﻣ ﺲ‬ ‫اﻟﻌﻮدة ﻻ ﺷ ﻲء‬

‫آﺧﺮ‪:‬‬
‫ﺘﺨﺪم‬
‫إرﺟﺎع اﺳﻢ اﻟﻤ ﺴ‬

‫‪212‬اﻟﻔﺼﻞ اﻟﻌﺎﺷﺮ‬
‫‪Machine Translated by Google‬‬

‫‪defreet_user ():‬‬
‫ﺑﺎﻻﺳﻢ‪"" " .‬‬‫ﺘﺨﺪم‬
‫""رﺣ ﺐ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم )( ‪= get_stored_username‬‬
‫اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم‪:‬‬
‫‪w‬إذا ﻛﺎن اﺳﻢ اﻟﻤ ﺴ‬
‫"‬
‫)"!" ‪+‬‬
‫ﺘﺨﺪموإﻻ‪:‬‬‫ﻣﺮةاﻟﻤ ﺴ‬
‫أﺧﺮى ‪،‬‬ ‫ﺳﻢ‬‫ﺒﺎ ‪+‬ا‬
‫ﺑﻚ‬ ‫‪")print‬ﻣﺮﺣ ً‬

‫‪")username = input‬ﻣﺎ اﺳﻤﻚ؟"(‬


‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'username.json‬‬
‫ﺜﻞ ‪f_obj:‬‬
‫ﺘﻮح ﻣ‬
‫ﻣﻊ )اﺳﻢ اﻟﻤﻠﻒ ‪"w") ،‬ﻣﻔ‬
‫ﺘﺨﺪم ‪f_obj) ،‬‬
‫‪)json.dump‬اﺳﻢ اﻟﻤ ﺴ‬
‫"‬
‫ﺘﺬﻛﺮك ﻋﻨﺪﻣﺎﺗﻌﻮد ‪،‬‬
‫‪")print‬ﺳﻨ‬ ‫ﺘﺨﺪم )"!" ‪+‬‬
‫‪+‬اﺳﻢ اﻟﻤ ﺴ‬

‫ﺘﺨﺪم )(‬
‫ﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬

‫ﺗﻘﻮم ﻫﺬه‬
‫اﻟﻮﻇﻴﻔ ﺔ اﻟﺠﺪﻳﺪة )( ‪get_stored_username‬ﻟﻬﺎ ﻏﺮض واﺿﺢ ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﺬﻛﻮر ﻓ ﻲ ‪docstring‬ﻓ ﻲ ‪u.‬‬
‫ﺜﺮ ت ﻋﻠﻴﻪ‪ .‬إذا ﻛﺎن اﻟﻤﻠﻒ ‪username.json‬ﻏﻴﺮ‬
‫ﺘﺨﺪم إذا ﻋ‬
‫ﺘﺨﺪم ﻣﺨﺰن وإرﺟﺎع اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺮداد اﺳﻢ ﻣ ﺴ‬
‫ﺑﺎﺳ‬‫اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘﻮﻗﻌﻬﺎ ‪ ،‬أوﻳﺠ ﺐ أن‬
‫ﺘ ﻲﺗ‬
‫ﺑﺈرﺟﺎع ‪ None v.‬ﻫﺬه ﻣﻤﺎرﺳ ﺔ ﺟﻴﺪة‪:‬ﻳﺠ ﺐ أنﺗﻌﺮض اﻟﻮﻇﻴﻔ ﺔ اﻟﻘﻴﻤ ﺔ اﻟ‬‫ﻣﻮﺟﻮد ‪،‬ﺗﻘﻮم اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺒﻊ رﺳﺎﻟ ﺔﺗﺮﺣﻴ ﺐ ﻣﺮة أﺧﺮى‬
‫ﺑ ﺴﻴﻂ ﻣﻊ اﻟﻘﻴﻤ ﺔ اﻟﻤﺮﺟﻌ ﺔ ﻟﻠﻮﻇﻴﻔ ﺔ‪ .‬ﻓ ﻲ ‪w‬ﻧﻄ‬‫ﺒﺎر‬
‫ﺘ‬‫ﺑﺎﺧ‬‫ﺗﺮﺟﻊ ‪ None.‬ﻫﺬاﻳ ﺴﻤﺢ ﻟﻨﺎ ﻟﻜﻞ ﻧﻤﻮذج‬
‫ﺘﺨﺪم ﺟﺪﻳﺪ‪.‬‬
‫ﺑﺎﺳﻢ ﻣ ﺴ‬‫ﺘﺨﺪم ‪ ،‬وإذا ﻟﻢﺗﻨﺠﺢ ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﻄﺎﻟ ﺐ‬
‫ﺘﺮداد اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم إذا ﻧﺠﺤ ﺖ ﻣﺤﺎوﻟ ﺔ اﺳ‬
‫ﻟﻠﻤ ﺴ‬

‫ﺘﺨﺪم ﻣﻮﺟﻮدًا ‪،‬‬


‫ﺘﻠ ﺔ أﺧﺮى ﻣﻦ اﻟﻜﻮد ﺧﺎرج ﻣﻠﻒ ‪()reet_user.‬إذا ﻟﻢﻳﻜﻦ اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻛ‬
‫ﻳﺠ ﺐ أن ﻧ‬
‫ﺘﺨﺪم ﺟﺪﻳﺪ إﱃ وﻇﻴﻔ ﺔ ﻣﺨﺼﺼ ﺔ ﻟﻬﺬا اﻟﻐﺮض‪:‬‬
‫ﺑﺎﺳﻢ ﻣ ﺴ‬‫ﻓﻴﺠ ﺐ ﻋﻠﻴﻨﺎ ﻧﻘﻞ اﻟﻜﻮد اﻟﺬيﻳﻄﺎﻟ ﺐ‬

‫ﺘﻴﺮاد ‪json‬‬
‫اﺳ‬

‫‪def get_stored_username ():‬‬


‫ﺣﺎ‪"" ".‬‬
‫ﺘﺎ ً‬
‫ﺘﺨﺪم اﻟﻤﺨﺰن إذا ﻛﺎن ﻣ‬
‫"""اﻟﺤﺼﻮل ﻋﲆ اﺳﻢ اﻟﻤ ﺴ‬

‫‪--‬ﻗﺺ‪--‬‬

‫‪def get_new_username ():‬‬


‫ﺘﺨﺪم ﺟﺪﻳﺪ‪"" ".‬‬
‫ﺑﺎﺳﻢ ﻣ ﺴ‬‫ﺒﺔ‬
‫"""اﻟﻤﻄﺎﻟ‬
‫‪")username = input‬ﻣﺎ اﺳﻤﻚ؟"(‬
‫اﺳﻢ اﻟﻤﻠﻒ '‪= 'username.json‬‬
‫ﺜﻞ ‪f_obj:‬‬
‫ﺘﻮح ﻣ‬
‫ﻣﻊ )اﺳﻢ اﻟﻤﻠﻒ ‪"w") ،‬ﻣﻔ‬
‫ﺘﺨﺪم ‪f_obj) ،‬‬
‫‪)json.dump‬اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم‬
‫إرﺟﺎع اﺳﻢ اﻟﻤ ﺴ‬

‫‪defreet_user ():‬‬
‫ﺑﺎﻻﺳﻢ‪"" " .‬‬‫ﺘﺨﺪم‬
‫""رﺣ ﺐ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم )( ‪= get_stored_username‬‬
‫اﺳﻢ اﻟﻤ ﺴ‬
‫ﺘﺨﺪم‪:‬‬
‫إذا ﻛﺎن اﺳﻢ اﻟﻤ ﺴ‬
‫"‬
‫)"!" ‪+‬‬
‫وإﻻ‪:‬‬ ‫ﺘﺨﺪم‬
‫أﺧﺮى ‪،‬‬ ‫ﺑﻚﺴﻣﺮة‬
‫ﺳﻢﺎ اﻟﻤ‬
‫ﺒ‬ ‫‪+ print‬ا‬
‫)"ﻣﺮﺣ ً‬

‫ﺘﺨﺪم )( ‪= get_new_username‬‬
‫اﺳﻢ اﻟﻤ ﺴ‬
‫"‬
‫ﺘﺬﻛﺮك ﻋﻨﺪﻣﺎﺗﻌﻮد ‪،‬‬
‫‪")print‬ﺳﻨ‬ ‫ﺘﺨﺪم )"!" ‪+‬‬
‫‪+‬اﺳﻢ اﻟﻤ ﺴ‬

‫ﺘﺨﺪم )(‬
‫ﺗﺤﻴ ﺔ اﻟﻤ ﺴ‬

‫ﺜﻨﺎءا ت ‪213‬‬
‫ﺘ‬‫اﻟﻤﻠﻔﺎ ت واﻻﺳ‬
‫‪Machine Translated by Google‬‬

‫ﻛﻞ وﻇﻴﻔ ﺔ ﻓ ﻲ ﻫﺬا اﻹﺻﺪار اﻟﻨﻬﺎﺋ ﻲ ﻣﻦ ‪Remember_me.py‬ﻟﻬﺎ ﻏﺮض واﺣﺪ واﺿﺢ‪ .‬ﻧﺤﻦ ﻧﻄﻠﻖ ﻋﲆ اﺳﻢ‬
‫ﺘﺨﺪﻣﺎ ﺟﺪﻳﺪًا‪.‬‬
‫ً‬ ‫ﺘﺨﺪم ﺣﺎﻟ ﻲ أوﺗﺤﻴ ﻲ ﻣ ﺴ‬
‫ﺑﻌﻮدة ﻣ ﺴ‬‫ﺒﺎ‪ :‬إﻣﺎ أﻧﻬﺎﺗﺮﺣ ﺐ‬
‫ﺒﻊ ‪mes sage‬ﻣﻨﺎﺳ ً‬
‫‪() (reet_user) ،‬و ﻫﺬه اﻟﻮﻇﻴﻔ ﺔﺗﻄ‬
‫ّن ﻓ ﻲ‬
‫ﺘﺨﺪم ﻣﺨ ﺰ‬
‫ﺘﺮداد اﺳﻢ ﻣ ﺴ‬
‫ﺘﺪﻋﺎء ‪get_stored_username () ،‬و ﻫﻮ ﻣ ﺴﺆول ﻓﻘﻂ ﻋﻦ اﺳ‬
‫ﺑﺬﻟﻚ ﻋﻦ ﻃﺮﻳﻖ اﺳ‬‫ﻳﻘﻮم‬
‫ﺘﺨﺪم )( ‪() get_new_username‬‬
‫ﺋ ﻲ اﻟﻤ ﺴ‬
‫ﺘﺪﻋ ﻲ اﻟﻤﺮ‬
‫ﺣﺎﻟ ﺔ وﺟﻮده‪ .‬أﺧﻴ ﺮًا ‪،‬ﻳ ﺴ‬

‫ﺘﻘ ﺴﻴﻢ ﻟﻠﻌﻤﻞ ﺟﺰءًا أﺳﺎﺳ ًﻴﺎ‬


‫ﺗﺨﺰﻳﻨﻪ‪.‬ﻳﻌﺪ ﻫﺬا اﻟ‬
‫ﺘﺨﺪم ﺟﺪﻳﺪ و‬
‫إذا ﻟﺰم اﻷﻣﺮ ‪ ،‬ﻓﻬﻮ ﻣ ﺴﺆول ﻓﻘﻂ ﻋﻦ اﻟﺤﺼﻮل ﻋﲆ اﺳﻢ ﻣ ﺴ‬
‫ﺗﻮﺳﻴﻌﻪ‪.‬‬
‫ﺘﻪ و‬
‫ﺑ ﺔ رﻣﺰ واﺿﺢﻳ ﺴﻬﻞ ﺻﻴﺎﻧ‬
‫ﺘﺎ‬
‫ﻣﻦ ﻛ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘﺨﺰﻳﻦ ﻫﺬا اﻟﺮﻗﻢ‬


‫ﺘﺨﺪم )( ‪json.dump‬ﻟ‬
‫ﺘﺨﺪم‪ .‬اﺳ‬
‫ﺑﺎﻟﺮﻗﻢ اﻟﻤﻔﻀﻞ ﻟﻠﻤ ﺴ‬‫ﺑﺮﻧﺎﻣﺠًﺎﻳﻄﺎﻟ ﺐ‬‫ﺘﺐ‬
‫‪10-11.‬اﻟﺮﻗﻢ اﻟﻤﻔﻀﻞ‪ :‬اﻛ‬
‫ﺒﻊ اﻟﺮﺳﺎﻟ ﺔ ‪" ،‬أﻧﺎ أﻋﺮف رﻗﻤﻚ اﻟﻤﻔﻀﻞ! إﻧﻪ "‪_____.‬‬ ‫ً‬
‫ﻣﻨﻔﺼﻼﻳﻘﺮأ ﻫﺬه اﻟﻘﻴﻤ ﺔ وﻳﻄ‬ ‫ﺑﺮﻧﺎﻣﺠًﺎ‬‫ﺘﺐ‬
‫ﻓ ﻲ ﻣﻠﻒ‪ .‬اﻛ‬

‫ﺑﻠﻎ‬
‫ﺑﺎﻟﻔﻌﻞ ‪ ،‬ﻓﺄ‬‫ﺘﻤﺮﻳﻦ ‪10-11‬ﻓ ﻲ ﻣﻠﻒ واﺣﺪ‪ .‬إذا ﻛﺎن اﻟﺮﻗﻢ ﻣﺨﺰﻧًﺎ‬
‫ﺒﺮﻧﺎﻣﺠﻴﻦ ﻣﻦ اﻟ‬
‫ﺗﺬﻛﺮ اﻟﺮﻗﻢ اﻟﻤﻔﻀﻞ‪ :‬ادﻣﺞ اﻟ‬
‫‪10-12.‬‬
‫ﺘﺸﻐﻴﻞ‬
‫ﺑ‬‫ﺘﺨﺰﻳﻨﻪ ﻓ ﻲ ﻣﻠﻒ‪ .‬ﻗﻢ‬
‫ﺑ‬‫ﺘﺨﺪم وﻗﻢ‬
‫ﺑﺎﻟﺮﻗﻢ اﻟﻤﻔﻀﻞ‪ .‬إذا ﻟﻢﻳﻜﻦ ﻛﺬﻟﻚ ‪ ،‬اﻃﻠ ﺐ اﻟﺮﻗﻢ اﻟﻤﻔﻀﻞ ﻟﻠﻤ ﺴ‬‫ﺘﺨﺪم‬
‫اﻟﻤ ﺴ‬
‫ﺘﺮى أﻧﻪﻳﻌﻤﻞ‪.‬‬
‫ﺗﻴﻦ ﻟ‬
‫ﺒﺮﻧﺎﻣﺞ ﻣﺮ‬
‫اﻟ‬

‫ﺑﺎﻟﻔﻌﻞ اﺳﻢ‬‫ﺘﺨﺪم ﻗﺪ أدﺧﻞ‬


‫ﺘﺮض اﻟﻘﺎﺋﻤ ﺔ اﻟﻨﻬﺎﺋﻴ ﺔ ﻟـ ‪Remember_me.py‬أن اﻟﻤ ﺴ‬
‫ﺘﺨﺪم‪:‬ﺗﻔ‬
‫ﺗﺤﻘﻖ ﻣﻦ اﻟﻤ ﺴ‬
‫‪10-13.‬‬
‫ﺘﺨﺪم اﻟﺤﺎﻟ ﻲ ﻫﻮ آﺧﺮ‬
‫ﺒﺮﻧﺎﻣﺞﻳﻌﻤﻞ ﻟﻠﻤﺮة اﻷوﱃ‪.‬ﻳﺠ ﺐ ﻋﻠﻴﻨﺎﺗﻌﺪﻳﻠﻪ ﻓ ﻲ ﺣﺎل ﻟﻢﻳﻜﻦ اﻟﻤ ﺴ‬
‫ﺑﻪ أو أن اﻟ‬‫ﺘﺨﺪم اﻟﺨﺎص‬
‫اﻟﻤ ﺴ‬
‫ﺒﺮﻧﺎﻣﺞ‪.‬‬
‫ﺘﺨﺪم اﻟ‬
‫ﺷﺨﺺ اﺳ‬

‫ﺘﺨﺪم‬
‫ﺘﺨﺪم ﻋﻤﺎ إذا ﻛﺎن ﻫﺬا ﻫﻮ اﺳﻢ اﻟﻤ ﺴ‬
‫ﺒﺎﻋ ﺔ رﺳﺎﻟ ﺔﺗﺮﺣﻴ ﺐ ﻣﺮة أﺧﺮى ﻓ ﻲ ﻣﻠﻒ ‪()reet_user ،‬اﺳﺄل اﻟﻤ ﺴ‬
‫ﺒﻞ ﻃ‬
‫ﻗ‬
‫ﺑـ )( ‪get_new_username‬ﻟﻠﺤﺼﻮل ﻋﲆ اﻟﻤﻠﻒ اﻟﺼﺤﻴﺢ‬‫ﺗﺼﻞ‬
‫اﻟﺼﺤﻴﺢ‪ .‬إذا ﻟﻢﻳﻜﻦ اﻷﻣﺮ ﻛﺬﻟﻚ ‪ ،‬ﻓﺎ‬
‫ﺘﺨﺪم‪.‬‬
‫اﺳﻢ اﻟﻤ ﺴ‬

‫ﻣﻠﺨﺺ‬
‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎ ت‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻗﺮاءة ﻣﻠﻒ ﻛﺎﻣﻞ ﻣﺮة واﺣﺪة وﻗﺮاءة ﻣﺤ‬
‫ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ‪،‬ﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﺜﻨﺎءا ت وﻛﻴﻔﻴ ﺔ‬
‫ﺘ‬‫ﺑﻨﻬﺎﻳ ﺔ اﻟﻤﻠﻒ‪ .‬ﻟﻘﺪ ﻗﺮأ ت ﻋﻦ اﻻﺳ‬‫ﺑ ﺔ إﱃ ﻣﻠﻒ وإﻟﺤﺎق ﻧﺺ‬
‫ﺘﺎ‬
‫ﺳﻄ ﺮًا واﺣﺪًا ﻓ ﻲ ﻛﻞ ﻣﺮة‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ اﻟﻜ‬
‫ﺑﻴﺎﻧﺎ ت ‪Python‬‬‫ﺑﺮاﻣﺠﻚ‪ .‬أﺧﻴ ﺮًا ‪،‬ﺗﻌﻠﻤ ﺖ ﻛﻴﻔﻴ ﺔﺗﺨﺰﻳﻦ ﻫﻴﺎﻛﻞ‬‫ﺘﻤﻞ أنﺗﺮا ﻫﺎ ﻓ ﻲ‬
‫ﺘ ﻲ ﻣﻦ اﻟﻤﺤ‬
‫ﺜﻨﺎءا ت اﻟ‬
‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻻﺳ‬
‫اﻟ‬
‫ﺒﺪء ﻣﻦ ﺟﺪﻳﺪ ﻓ ﻲ ﻛﻞ ﻣﺮةﻳﻘﻮﻣﻮن‬
‫ﺘﺨﺪﻣﻮن ﻟﺪﻳﻚ ‪ ،‬ﻣﻤﺎﻳﻤﻨﻌﻬﻢ ﻣﻦ اﻟ‬
‫ﺘ ﻲﻳﻮﻓﺮ ﻫﺎ اﻟﻤ ﺴ‬
‫ﺘﻤﻜﻦ ﻣﻦ ﺣﻔﻆ اﻟﻤﻌﻠﻮﻣﺎ ت اﻟ‬
‫ﺘﻰﺗ‬
‫ﺣ‬
‫ﺑﺮﻧﺎﻣﺞ‪.‬‬‫ﺘﺸﻐﻴﻞ‬
‫ﺑ‬‫ﻓﻴﻬﺎ‬

‫ﺑﻚ‪ .‬ﻫﺬاﺳﻴ ﺴﺎﻋﺪ‬‫ﺒﺎر اﻟﻜﻮد اﻟﺨﺎص‬


‫ﺘ‬ ‫ﺘﻌﻠﻢ ﻓ ﻲ اﻟﻔﺼﻞ ‪ً 11‬‬
‫ﻃﺮﻗﺎ ﻓﻌﺎﻟ ﺔ ﻻﺧ‬ ‫ﺘ‬‫ﺳ‬
‫ﺑﻴﻨﻤﺎ‬‫ﺘﻢ إدﺧﺎﻟﻬﺎ‬
‫ﺘ ﻲﻳ‬
‫ﺘﻌﺮف ﻋﲆ اﻷﺧﻄﺎء اﻟ‬
‫ﺘ ﻲﺗﻄﻮر ﻫﺎ ﺻﺤﻴﺤ ﺔ ‪ ،‬وﺳﻮفﺗ ﺴﺎﻋﺪك ﻋﲆ اﻟ‬
‫ﺛﻖ ﻣﻦ أن اﻟﺸﻔﺮة اﻟ‬
‫أﻧ ﺖ وا‬
‫ﺘﻬﺎ‪.‬‬
‫ﺒ‬‫ﺘ‬‫ﺘ ﻲﻛ‬
‫ﺒﺮاﻣﺞ اﻟ‬
‫ﺒﻨﺎء ﻋﲆ اﻟ‬
‫ﺘﻤﺮ ﻓ ﻲ اﻟ‬
‫ﺗﺴ‬

‫‪214‬اﻟﻔﺼﻞ اﻟﻌﺎﺷﺮ‬
‫‪Machine Translated by Google‬‬

‫‪11‬‬
‫ﺑﻚ‬‫‪T est i ng Code‬اﻟﺨﺎص‬

‫ﺒﺎرا ت ﻟﻬﺬا‬
‫ﺘ‬‫ﺑ ﺔ اﺧ‬
‫ﺘﺎ‬ ‫ﺑ ﺔ داﻟ ﺔ أو ﻓﺼﻞ دراﺳ ﻲ ‪،‬ﻳﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ ﻛ‬ ‫ﺘﺎ‬
‫ﻋﻨﺪ ﻛ‬
‫ﺘﺮض أنﻳﻜﻮن‬
‫ﺑﻚﻳﻌﻤﻞ ﻛﻤﺎﻳﻔ‬‫ﺒﺎر أن اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺘ‬‫ﺒ ﺖ اﻻﺧ‬
‫ﺜ‬‫اﻟﺮﻣﺰ‪.‬ﻳ‬
‫ﺘﺐ‬
‫ﺘﻠﻘﻴﻬﺎ‪ .‬ﻋﻨﺪﻣﺎﺗﻜ‬
‫ﺑ ﺔ ﻟﺠﻤﻴﻊ أﻧﻮاع اﻟﻤﺪﺧﻼ ت اﻟﻤﺼﻤﻤ ﺔ ﻟ‬
‫ﺘﺠﺎ‬
‫اﺳ‬
‫ﺑﻚ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺛﻘ ﺔ ﻣﻦ أن اﻟ‬‫ﺒﺎرا ت ‪،‬ﻳﻤﻜﻨﻚ أنﺗﻜﻮن ﻋﲆ‬
‫ﺘ‬‫اﻻﺧ‬
‫ﺘﻤﻜﻦ‬
‫ﺘ‬‫ﺑﺮاﻣﺠﻚ‪.‬ﺳ‬‫ﺘﺨﺪام‬
‫ﺒﺪأ اﻟﻤﺰﻳﺪ ﻣﻦ اﻷﺷﺨﺎص ﻓ ﻲ اﺳ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﺣﻴ ﺚﻳ‬‫ﺘﻌﻤﻞ‬
‫ﺳ‬
‫ﺗﻚ ﻻﺗﻜ ﺴﺮ اﻟ ﺴﻠﻮك اﻟﺤﺎﻟ ﻲ‬
‫ﺘﺄﻛﺪ ﻣﻦ أنﺗﻐﻴﻴﺮا‬
‫ﺘﻪ ﻟﻠ‬
‫ﺒﺎر رﻣﺰ ﺟﺪﻳﺪ ﻋﻨﺪ إﺿﺎﻓ‬
‫ﺘ‬ ‫أ ً‬
‫ﻳﻀﺎ ﻣﻦ اﺧ‬
‫ﺒﺎر اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺘ‬‫ﺒﺮﻣﺞ اﺧ‬‫ﺒﺮﻣﺞ أﺧﻄﺎء ‪ ،‬ﻟﺬﻟﻚﻳﺠ ﺐ ﻋﲆ ﻛﻞ ﻣ‬‫ﺗﻜ ﺐ ﻛﻞ ﻣ‬
‫ﺒﺮﻧﺎﻣﺠﻚ‪.‬ﻳﺮ‬ ‫ﻟ‬
‫ﺘﺨﺪﻣﻮن‪.‬‬‫ﺒﻞ أنﻳﻮاﺟﻬﻬﺎ اﻟﻤ ﺴ‬
‫ﺘﻘﺎط اﻟﻤﺸﻜﻼ ت ﻗ‬‫ﺜﻴ ًﺮا ‪ ،‬واﻟ‬
‫ﺑﻪ ﻛ‬

‫ﺘﺨﺪام اﻷدوا ت اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ اﻟﻤﻮﺣﺪة ﻓ ﻲ‬


‫ﺑﺎﺳ‬‫ﺑﻚ‬‫ﺒﺎر اﻟﻜﻮد اﻟﺨﺎص‬ ‫ﺘ‬‫ﺘﻌﻠﻢ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ اﺧ‬
‫ﺘ‬‫ﺳ‬
‫ﺘﺮى‬
‫ﺘﺤﻘﻖ ﻣﻦ أن ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﻤﺪﺧﻼ تﺗﺆدي إﱃ اﻹﺧﺮاج اﻟﺬيﺗﺮﻳﺪه‪.‬ﺳ‬ ‫ﺒﺎر واﻟ‬
‫ﺘ‬‫ﺑﻨﺎء ﺣﺎﻟ ﺔ اﺧ‬‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ‬
‫ﺘ‬‫‪Python .‬ﺳ‬

‫ﺒﺎر اﻟﺮاﺳ ﺐ أنﻳ ﺴﺎﻋﺪك ﻓ ﻲﺗﺤ ﺴﻴﻦ‬


‫ﺘ‬‫ﺘﻌﻠﻢ ﻛﻴﻒﻳﻤﻜﻦ ﻟﻼﺧ‬
‫ﺘ‬‫ﺒﺎر اﻟﻔﺎﺷﻞ ‪ ،‬وﺳ‬
‫ﺘ‬‫ﺒﺪو اﻻﺧ‬
‫ﺒﺎر اﻟﻨﺠﺎح وﻛﻴﻒﻳ‬
‫ﺘ‬‫ﺒﺪو اﺧ‬
‫ﻛﻴﻒﻳ‬
‫ﺘﻬﺎ ﻟﻤﺸﺮوع ﻣﺎ‪.‬‬
‫ﺑ‬‫ﺘﺎ‬
‫ﺘ ﻲﻳﺠ ﺐ ﻛ‬
‫ﺒﺎرا ت اﻟ‬
‫ﺘ‬‫ﺒﺪأ ﻓ ﻲ ﻓﻬﻢ ﻋﺪد اﻻﺧ‬
‫ﺘ‬‫ﺒﺎر اﻟﻮﻇﺎﺋﻒ واﻟﻔﺼﻮل ‪ ،‬وﺳ‬
‫ﺘ‬‫ﺘﻌﻠﻢ ﻛﻴﻔﻴ ﺔ اﺧ‬
‫ﺘ‬‫ﺗﻚ‪.‬ﺳ‬
‫ﺷﻔﺮ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎر وﻇﻴﻔ ﺔ‬
‫ﺘ‬‫اﺧ‬
‫ُﺮﺟﻊ اﻻﺳﻢ‬
‫ﺗ‬
‫ﺑ ﺴﻴﻄ ﺔﺗﺄﺧﺬ اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ‪ ،‬و‬‫ﺒﺎر‪ .‬ﻓﻴﻤﺎﻳﻠ ﻲ وﻇﻴﻔ ﺔ‬
‫ﺘ‬‫ﺘﺎج إﱃ رﻣﺰ ﻟﻼﺧ‬
‫ﺒﺎر ‪ ،‬ﻧﺤ‬
‫ﺘ‬‫ﻟﻤﻌﺮﻓ ﺔ اﻟﻤﺰﻳﺪ ﻋﻦ اﻻﺧ‬
‫ﺑﺪﻗ ﺔ‪:‬‬‫اﻟﻜﺎﻣﻞ اﻟﻤﻨ ﺴﻖ‬

‫اﺳﻢ_‬ ‫‪)def get_formatted_name‬اﻷول ‪ ،‬اﻷﺧﻴﺮ(‪:‬‬


‫‪function.py‬‬ ‫ﺑﺪﻗ ﺔ‪"" ".‬‬‫"""إﻧﺸﺎء اﺳﻢ ﻛﺎﻣﻞ ﻣﻨ ﺴﻖ‬
‫"‬ ‫"‬
‫= ‪full_name‬اﻷول ‪+‬اﻷﺧﻴﺮ‬
‫اﻟﻌﻮدة )( ‪full_name.title‬‬

‫ﺑﻴﻨﻬﻤﺎ ﻹﻛﻤﺎل اﻻﺳﻢ‬‫ﺑﻴﻦ اﻻﺳﻢ اﻷول واﺳﻢ اﻟﻌﺎﺋﻠ ﺔ ﻣﻊ ﻣ ﺴﺎﻓ ﺔ‬


‫ﺗﺠﻤﻊ اﻟﻮﻇﻴﻔ ﺔ )( ‪get_formatted_name‬‬
‫ﺑﺮﻧﺎﻣﺠًﺎ‬‫ﺘﺤﻘﻖ ﻣﻦ أن )( ‪get_formatted_name‬ﻳﻌﻤﻞ ‪ ،‬دﻋﻨﺎ ﻧﺼﻨﻊ‬
‫ﺑﺎﻟﻜﺎﻣﻞ وإرﺟﺎﻋﻪ‪ .‬ﻟﻠ‬‫ﺒﻴﺮ اﻻﺳﻢ‬
‫ﺛﻢﺗﻜ‬‫اﻟﻜﺎﻣﻞ ‪،‬‬
‫ﺑﺈدﺧﺎل اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ‪ ،‬ورؤﻳ ﺔ اﻻﺳﻢ اﻟﻜﺎﻣﻞ‬‫ﺘﺨﺪﻣﻴﻦ‬
‫ﺒﺮﻧﺎﻣﺞ ‪names.py‬ﻟﻠﻤ ﺴ‬
‫ﺘﺨﺪم ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‪.‬ﻳ ﺴﻤﺢ اﻟ‬
‫ﻳﺴ‬
‫ﺑﺪﻗ ﺔ‪:‬‬‫اﻟﻤﻨ ﺴﻖ‬

‫‪names.py‬‬ ‫ﺘﻴﺮاد ‪get_formatted_name‬‬


‫ﻣﻦ ‪name_function‬اﺳ‬

‫‪")print‬أدﺧﻞ" ‪"q‬ﻓ ﻲ أي وﻗ ﺖ ﻟﻺﻧﻬﺎء‪(".‬‬


‫اﺣﻴﺎﻧﺎ ﺻﺤﻴﺢ‪:‬‬

‫‪first = input ("\ n‬ﻣﻦ ﻓﻀﻠﻚ أﻋﻄﻨ ﻲ اﻻﺳﻢ اﻷول‪(":‬‬


‫إذا ﻛﺎن اﻷول ‪== 'q':‬‬
‫ﺘﺮاﺣ ﺔ‬
‫اﺳ‬

‫‪")last = input‬اﻟﺮﺟﺎء إﻋﻄﺎﺋ ﻲ اﺳﻢ اﻟﻌﺎﺋﻠ ﺔ‪(":‬‬


‫إذا ﻛﺎﻧ ﺖ اﻷﺧﻴﺮة ‪== 'q':‬‬
‫ﺘﺮاﺣ ﺔ‬
‫اﺳ‬

‫‪)formatted_name = get_formatted_name‬اﻷول ‪ ،‬اﻷﺧﻴﺮ(‬


‫"‬
‫ﺑﺪﻗ ﺔ‪:‬‬ ‫\"( ‪+‬‬
‫اﻻﺳﻢ اﻟﻤﻨ ﺴﻖ‬ ‫‪formatted_name‬‬
‫ﺒﺎﻋ ﺔ ‪t‬‬
‫ﻃ‬ ‫)"‪+ ".‬‬

‫ﺒﺮﻧﺎﻣﺞ )( ‪get_formatted_name‬ﻣﻦ ‪name_function.py.‬ال‬


‫ﺘﻮرد ﻫﺬا اﻟ‬
‫ﻳﺴ‬
‫ﺘ ﻲﺗﻢ إﻧﺸﺎؤ ﻫﺎ‪:‬‬
‫ﺘﺨﺪم إدﺧﺎلﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻷﺳﻤﺎء اﻷوﱃ واﻷﺧﻴﺮة ‪ ،‬واﻻﻃﻼع ﻋﲆ اﻷﺳﻤﺎء اﻟﻜﺎﻣﻠ ﺔ اﻟﻤﻨ ﺴﻘ ﺔ اﻟ‬
‫ﻳﻤﻜﻦ ﻟﻠﻤ ﺴ‬

‫أدﺧﻞ "‪"q‬ﻓ ﻲ أي وﻗ ﺖ ﻟﻺﻧﻬﺎء‪.‬‬

‫ﻣﻦ ﻓﻀﻠﻚ أﻋﻄﻨ ﻲ اﻻﺳﻢ اﻷول‪ :‬ﺟﺎﻧﻴ ﺲ‬


‫ﺑﻠﻴﻦ‬
‫ﻣﻦ ﻓﻀﻠﻚ أﻋﻄﻨ ﻲ اﻻﺳﻢ اﻷﺧﻴﺮ‪ :‬ﺟﻮ‬
‫ﺑﻠﻴﻦ‪.‬‬
‫ﺑﺪﻗ ﺔ‪ :‬ﺟﺎﻧﻴ ﺲ ﺟﻮ‬‫اﻻﺳﻢ اﻟﻤﻨ ﺴﻖ‬

‫ﺑﻮ ب‬‫ﻣﻦ ﻓﻀﻠﻚ أﻋﻄﻨ ﻲ اﻻﺳﻢ اﻷول‪:‬‬


‫ﻣﻦ ﻓﻀﻠﻚ أﻋﻄﻨ ﻲ اﺳﻢ اﻟﻌﺎﺋﻠ ﺔ‪ :‬دﻳﻼن‬
‫ﺑﻮ ب دﻳﻼن‪.‬‬‫ﺑﺪﻗ ﺔ‪:‬‬‫اﻻﺳﻢ اﻟﻤﻨ ﺴﻖ‬

‫ﻣﻦ ﻓﻀﻠﻚ أﻋﻄﻨ ﻲ اﻻﺳﻢ اﻷول‪q :‬‬

‫ﺘ ﻲﺗﻢ إﻧﺸﺎؤ ﻫﺎ ﻫﻨﺎ ﺻﺤﻴﺤ ﺔ‪ .‬ﻟﻜﻦ دﻋﻨﺎ ﻧﻘﻮل ﻧﺤﻦ‬


‫ﻳﻤﻜﻨﻨﺎ أن ﻧﺮى أن اﻷﺳﻤﺎء اﻟ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ‪.‬‬ ‫ﺑﺤﻴ ﺚﻳﻤﻜﻨﻪ أ ً‬
‫ﻳﻀﺎ اﻟ‬ ‫ﺗﺮﻳﺪﺗﻌﺪﻳﻞ )( ‪get_formatted_name‬‬
‫ﺘ ﻲ ﻟﻬﺎ اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ‬
‫ﺑﻬﺎ اﻟﻮﻇﻴﻔ ﺔ ﻣﻊ اﻷﺳﻤﺎء اﻟ‬‫ﺘﻌﺎﻣﻞ‬
‫ﺘ ﻲﺗ‬
‫ﺘﺄﻛﺪ ﻣﻦ أﻧﻨﺎ ﻻ ﻧﻜ ﺴﺮ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬
‫ﺑﺬﻟﻚ ‪ ،‬ﻧﺮﻳﺪ اﻟ‬‫ﺛﻨﺎء ﻗﻴﺎﻣﻨﺎ‬
‫أ‬
‫ﺑﻨﺎ‬‫ﺒﺎر اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺘ‬‫ﻓﻘﻂ‪.‬ﻳﻤﻜﻨﻨﺎ اﺧ‬

‫‪216‬اﻟﻔﺼﻞ ‪11‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻌﺪﻳﻞ ‪get_formatted_name () ،‬‬


‫ﺑ‬‫ﺑﻠﻴﻦ ﻓ ﻲ ﻛﻞ ﻣﺮة ﻧﻘﻮم ﻓﻴﻬﺎ‬
‫ﺜﻞ ﺟﺎﻧﻴ ﺲ ﺟﻮ‬
‫ﻋﻦ ﻃﺮﻳﻖﺗﺸﻐﻴﻞ ‪names.py‬وإدﺧﺎل اﺳﻢ ﻣ‬
‫ﺒﺎر‬
‫ﺘ‬‫ﺘ ﺔ اﺧ‬
‫ﺗﻤ‬‫ﺑﺄ‬‫ﺒﺎر ﻣﺨﺮﺟﺎ ت اﻟﻮﻇﻴﻔ ﺔ‪ .‬إذا ﻗﻤﻨﺎ‬
‫ﺘ‬‫ﺘ ﺔ اﺧ‬
‫ﺗﻤ‬‫ﺒﺢ ﻣﻤ ﻼً‪ .‬ﻟﺤ ﺴﻦ اﻟﺤﻆ ‪،‬ﺗﻮﻓﺮ ‪Python‬ﻃﺮﻳﻘ ﺔ ﻓﻌﺎﻟ ﺔﻷ‬
‫وﻟﻜﻦ ﻫﺬاﺳﻴﺼ‬
‫ﺒﻨﺎ‬
‫ﺘ‬‫ﺘ ﻲﻛ‬
‫ﺘﻌﻤﻞ ﻋﻨﺪ إﻋﻄﺎء أﻧﻮاع اﻷﺳﻤﺎء اﻟ‬
‫ﺛﻘ ﺔ ﻣﻦ أن اﻟﻮﻇﻴﻔ ﺔﺳ‬‫ﺋﻤﺎ أن ﻧﻜﻮن ﻋﲆ‬
‫‪get_formatted_name () ،‬ﻓﻴﻤﻜﻨﻨﺎ دا ً‬
‫ﺒﺎرا ت ﻟﻬﺎ‪.‬‬
‫ﺘ‬‫اﺧ‬

‫ﺒﺎر‬
‫ﺘ‬‫ﺒﺎرا ت اﻟﻮﺣﺪة وﺣﺎﻻ ت اﻻﺧ‬
‫ﺘ‬‫اﺧ‬

‫ﺒﺎر‬
‫ﺘ‬‫ﺘﺤﻘﻖ اﺧ‬
‫ﺑﻚ‪.‬ﻳ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺒﺎر اﻟ‬
‫ﺘ‬‫ﺒ ﺔ ‪Python‬اﻟﻘﻴﺎﺳﻴ ﺔ أدوا ت ﻻﺧ‬
‫ﺘ‬‫ﺗﻮﻓﺮ اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ ‪unittest‬ﻣﻦ ﻣﻜ‬
‫ﺒ ﺖ ﻣﻌً ﺎ أن اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺜ‬‫ﺘ ﻲﺗ‬
‫ﺒﺎرا ت اﻟﻮﺣﺪة اﻟ‬
‫ﺘ‬‫ﺒﺎر ﻫ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﺧ‬
‫ﺘ‬‫اﻟﻮﺣﺪة ﻣﻦ ﺻﺤ ﺔ ﺟﺎﻧ ﺐ ﻣﻌﻴﻦ ﻣﻦﺳﻠﻮك اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺒﺎر ﺟﻤﻴﻊ‬
‫ﺘ‬‫ﺒﺎر اﻟﺠﻴﺪة ﻓ ﻲ اﻻﻋ‬
‫ﺘ‬‫ﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ‪.‬ﺗﺄﺧﺬ ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺘﻮﻗﻊ أنﺗ‬
‫ﺘ ﻲﺗ‬
‫ﺒﻐ ﻲ ‪ ،‬ﺿﻤﻦ اﻟﻨﻄﺎق اﻟﻜﺎﻣﻞ ﻟﻠﻤﻮاﻗﻊ اﻟ‬
‫ﺘﺼﺮف ﻛﻤﺎﻳﻨ‬
‫ﺗ‬
‫ﺘﻀﻤﻦ ﺣﺎﻟ ﺔ‬
‫ﺜﻴﻞ ﻛﻞ ﺣﺎﻟ ﺔ ﻣﻦ ﻫﺬه اﻟﻤﻮاﻗﻒ‪.‬ﺗ‬
‫ﺘﻤ‬‫ﺒﺎرا ت ﻟ‬
‫ﺘ‬‫ﺘﻀﻤﻦ اﺧ‬
‫ﺗ‬‫ﺘﻠﻘﺎ ﻫﺎ اﻟﻮﻇﻴﻔ ﺔ و‬
‫ﺘ ﻲﻳﻤﻜﻦ أنﺗ‬
‫أﻧﻮاع اﻟﻤﺪﺧﻼ ت اﻟﻤﻤﻜﻨ ﺔ اﻟ‬
‫ﺘ ﻲﻳﻤﻜﻨﻚ ﻣﻦ ﺧﻼﻟﻬﺎ‬
‫ﺘ ﻲﺗﻐﻄ ﻲ ﺟﻤﻴﻊ اﻟﻄﺮق اﻟﻤﻤﻜﻨ ﺔ اﻟ‬
‫ﺒﺎرا ت اﻟﻮﺣﺪة اﻟ‬
‫ﺘ‬‫ﺘﻐﻄﻴ ﺔ اﻟﻜﺎﻣﻠ ﺔ ﻣﺠﻤﻮﻋ ﺔ ﻛﺎﻣﻠ ﺔ ﻣﻦ اﺧ‬
‫ﺒﺎر ذا ت اﻟ‬
‫ﺘ‬‫اﻻﺧ‬
‫ﺒﺎرا ت ﻟﻠ ﺴﻠﻮﻛﻴﺎ ت‬
‫ﺘ‬‫ﺑ ﺔ اﺧ‬
‫ﺘﺎ‬
‫ﺒﺎ ﻣﺎﻳﻜﻮن ﻣﻦ اﻟﺠﻴﺪ ﻛ‬ ‫ً‬
‫ﺷﺎﻗﺎ‪ .‬ﻏﺎﻟ ً‬ ‫ﺒﻴﺮ أﻣ ﺮًا‬
‫ﺘﻐﻄﻴ ﺔ اﻟﻜﺎﻣﻠ ﺔ ﻟﻤﺸﺮوع ﻛ‬
‫ﺘﺨﺪام اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﻗﺪﻳﻜﻮنﺗﺤﻘﻴﻖ اﻟ‬
‫اﺳ‬
‫ﺘﺨﺪام واﺳﻊ اﻟﻨﻄﺎق‪.‬‬
‫ﺑﺪأ اﻟﻤﺸﺮوع ﻓ ﻲ رؤﻳ ﺔ اﺳ‬‫ﺘﻐﻄﻴ ﺔ اﻟﻜﺎﻣﻠ ﺔ ﻓﻘﻂ إذا‬
‫ﺛﻢﺗﻬﺪف إﱃ اﻟ‬‫ﺑﻚ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟﺤﺮﺟ ﺔ ﻓ ﻲ اﻟ‬

‫ﺒﺎر ﻧﺎﺟﺢ‬
‫ﺘ‬‫اﺧ‬
‫ﺒﺢ ﻣﻦ اﻟ ﺴﻬﻞ إﺿﺎﻓ ﺔ‬
‫ﺒﺎر ‪،‬ﻳﺼ‬
‫ﺘ‬‫ﺑﻤﺠﺮد إﻋﺪاد ﺣﺎﻟ ﺔ اﻻﺧ‬‫ﺘﻌﻮد ‪ ،‬وﻟﻜﻦ‬
‫ﺑﻌﺾ اﻟ‬‫ﺒﺎر‬
‫ﺘ‬‫ﺑﺈﻋﺪاد ﺣﺎﻟ ﺔ اﻻﺧ‬‫ﺑﻨﺎء اﻟﺠﻤﻠ ﺔ اﻟﺨﺎص‬‫ﺘﻐﺮق‬
‫ﻳﺴ‬
‫ﺒﺎر ﻫﺎ‪.‬‬
‫ﺘ‬‫ﺘ ﻲﺗﺮﻳﺪ اﺧ‬
‫ﺘﻴﺮاد وﺣﺪة ‪unittest‬واﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﺎر ﻟﻮﻇﻴﻔ ﺔ ﻣﺎ ‪ ،‬ﻗﻢ‬
‫ﺘ‬‫ﺑ ﺔ ﺣﺎﻟ ﺔ اﺧ‬
‫ﺘﺎ‬
‫ﺒﺎرا ت اﻟﻮﺣﺪة ﻟﻮﻇﺎﺋﻔﻚ‪ .‬ﻟﻜ‬
‫ﺘ‬‫اﻟﻤﺰﻳﺪ ﻣﻦ اﺧ‬
‫ﺘﻚ‪.‬‬
‫ﺘﻠﻔ ﺔ ﻣﻦﺳﻠﻮك وﻇﻴﻔ‬
‫ﺒﺎر ﺟﻮاﻧ ﺐ ﻣﺨ‬
‫ﺘ‬‫ﺘ ﺐﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟﻄﺮق ﻻﺧ‬
‫ﺑﺈﻧﺸﺎء ﻓﺌ ﺔﺗﺮ ث ﻣﻦ ‪unittest.TestCase ،‬واﻛ‬‫ﺛﻢ ﻗﻢ‬

‫ﺘﺤﻘﻖ ﻣﻦ ﺻﺤ ﺔ اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺑﻄﺮﻳﻘ ﺔ واﺣﺪةﺗ‬‫ﺒﺎر‬
‫ﺘ‬‫إﻟﻴﻚ ﺣﺎﻟ ﺔ اﺧ‬

‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻋﻨﺪ إﻋﻄﺎء اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ‪:‬‬


‫ﻳﻌﻤﻞ )( ‪get_formatted_name‬‬

‫_‪test_name‬‬ ‫‪function.py‬‬
‫‪unittest‬‬ ‫ﺘﻴﺮاد‬
‫اﺳ‬
‫ﺘﻴﺮاد ‪get_formatted_name‬‬
‫ﻣﻦ ‪name_function‬اﺳ‬

‫‪u class NamesTestCase (unittest.TestCase):‬‬


‫ﺒﺎرا ت "" "‪'name_function.py'.‬‬
‫ﺘ‬‫"""اﺧ‬

‫‪def test_first_last_name (self):‬‬


‫ﺑﻠﻴﻦ "" "؟"‬‫ﺜﻞ" ﺟﺎﻧﻴ ﺲ ﺟﻮ‬ ‫""" ﻫﻞﺗﻌﻤﻞ أﺳﻤﺎء ﻣ‬
‫)'‪formatted_name = get_formatted_name ('janis'، 'joplin‬‬
‫ﻓﻮﻟﻜ ﺲ ﻓﺎﺟﻦ‬
‫ﺑﻠﻴﻦ"(‬
‫‪"self.assertEqual (formatted_name،‬ﺟﺎﻧﻴ ﺲ ﺟﻮ‬

‫)( ‪unittest.main‬‬

‫ﺒﺎر ﻫﺎ ‪get_formatted_ ،‬‬


‫ﺘ‬‫ﺘ ﻲ ﻧﺮﻳﺪ اﺧ‬ ‫أوﻻ ً ‪ ،‬ﻧ ﺴ‬
‫ﺘﻮرد ‪unittest‬واﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺒﺎرا ت اﻟﻮﺣﺪة ﻟـ ‪().‬‬
‫ﺘ‬‫ﺘﻮي ﻋﲆﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﺧ‬
‫ﺘﺤ‬‫ﺘ ﻲﺳ‬
‫ﺑﺈﻧﺸﺎء ﻓﺌ ﺔﺗ ﺴﻤﻰ ‪NamesTestCase ،‬واﻟ‬‫اﺳﻢ)(‪ .‬ﻓ ﻲ ‪u‬ﻧﻘﻮم‬
‫ﺑﺄي ﺷ ﻲء أﻧ ﺖ‬‫‪get_formatted_name‬ﻳﻤﻜﻨﻚﺗ ﺴﻤﻴ ﺔ اﻟﺼﻒ‬

‫ﺒﺎر اﻟﻜﻮد ‪217‬‬


‫ﺘ‬‫اﺧ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎر ﻓ ﻲ اﺳﻢ‬‫ﺘ‬ ‫ﺘﺨﺪام ﻛﻠﻤ ﺔ اﺧ‬ ‫ﺒﺎر ﻫﺎ واﺳ‬


‫ﺘ‬‫ﺘ ﻲ أﻧ ﺖ ﻋﲆ وﺷﻚ اﺧ‬
‫ﺑﺎﻟﻮﻇﻴﻔ ﺔ اﻟ‬‫ﺘﻌﻠ ًﻘﺎ‬
‫ﺘﻬﺎ ﺷﻴ ًﺌﺎ ﻣ‬
‫ﺗﺮﻳﺪ ‪ ،‬وﻟﻜﻦ ﻣﻦ اﻷﻓﻀﻞﺗ ﺴﻤﻴ‬
‫ﺒﻬﺎ‪.‬‬
‫ﺘ‬‫ﺘ ﻲﺗﻜ‬‫ﺒﺎرا ت اﻟ‬‫ﺘ‬‫ﺘﻰﺗﻌﺮف ‪Python‬ﻛﻴﻔﻴ ﺔ إﺟﺮاء اﻻﺧ‬ ‫اﻟﻔﺼﻞ‪.‬ﻳﺠ ﺐ أنﺗﺮ ث ﻫﺬه اﻟﻔﺌ ﺔ ﻣﻦ اﻟﻔﺌ ﺔ ‪unittest.TestCase‬ﺣ‬

‫ﺒﺎ واﺣﺪًا ﻣﻦ ‪get_formatted_name ().‬ﻧ ﺴﻤ ﻲ ﻫﺬه‬


‫ﺒﺮ ﺟﺎﻧ ً‬
‫ﺘ‬‫ﺘﻮي ‪NamesTestCase‬ﻋﲆ ﻃﺮﻳﻘ ﺔ واﺣﺪةﺗﺨ‬ ‫ﻳﺤ‬
‫ﺘﻮي ﻋﲆ اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ﻓﻘﻂ ﻗﺪﺗﻢﺗﻨ ﺴﻴﻘﻬﺎ‬
‫ﺘ ﻲﺗﺤ‬‫ﺘﺤﻘﻖ ﻣﻦ أن اﻷﺳﻤﺎء اﻟ‬ ‫اﻟﻄﺮﻳﻘ ﺔ )( ‪test_first_last_name‬ﻷﻧﻨﺎ ﻧ‬
‫ﺒﺎر‬
‫ﺘ‬‫ﺗﻠﻘﺎﺋ ًﻴﺎ ﻋﻨﺪﺗﺸﻐﻴﻞ ‪ test_name_function.py.‬ﺿﻤﻦ ﻃﺮﻳﻘ ﺔ اﻻﺧ‬
‫ﺑـ _‪test‬‬‫ﺒﺪأ‬
‫ﺘﻢﺗﺸﻐﻴﻞ أي ﻃﺮﻳﻘ ﺔﺗ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬ﺳﻴ‬
‫ﺜﺎل ﻧ ﺴﻤ ﻲ )(‬
‫ﺒﺎر ﻫﺎ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻤ‬
‫ﺘ‬‫ﺑﺎﺧ‬‫ﺘﻢ‬
‫ﺘ ﻲ ﻧﻬ‬
‫ﺗﺠﻌ ﺔ اﻟ‬
‫ﺗﺨﺰﻳﻨﻬﺎ ﻟﻠﻘﻴﻤ ﺔ اﻟﻤﺮ‬
‫ﺒﺎر ﻫﺎ و‬
‫ﺘ‬‫ﺘ ﻲ ﻧﺮﻳﺪ اﺧ‬
‫ﻫﺬه ‪ ،‬ﻧ ﺴﻤ ﻲ اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺘﻴﺠ ﺔ ﻓ ﻲ ‪formatted_name v.‬‬
‫ﺘﻴﻦ "‪"janis‬و ‪"joplin" ،‬وﻧﺨﺰن اﻟﻨ‬
‫‪get_formatted_name‬ﻣﻊ اﻟﻮﺳﻴﻄ‬

‫ﺘﺄﻛﻴﺪ ‪.‬‬
‫ﺜﺮ ﻣﻴﺰا ت ‪unittest‬ﻓﺎﺋﺪة‪ :‬ﻃﺮﻳﻘ ﺔ اﻟ‬
‫ﺘﺨﺪم واﺣﺪة ﻣﻦ أﻛ‬
‫ﻓ ﻲ ‪w ،‬ﻧ ﺴ‬

‫ﺘﻮﻗﻊ اﻟﺤﺼﻮل ﻋﻠﻴﻬﺎ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬ﻧﻈ ﺮًا‬


‫ﺘ ﻲ ﻛﻨ ﺖﺗ‬
‫ﺘﻴﺠ ﺔ اﻟ‬
‫ﺑﻖ اﻟﻨ‬
‫ﺘﻬﺎﺗﻄﺎ‬
‫ﺘ ﻲﺗﻠﻘﻴ‬
‫ﺘﻴﺠ ﺔ اﻟ‬
‫ﺘﺄﻛﻴﺪ ﻣﻦ أن اﻟﻨ‬
‫ﺘﺤﻘﻖ ﻃﺮق اﻟ‬
‫ﺗ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪،‬‬‫ﺒﺎﻋﺪة‬
‫ﺘ‬‫ﺒﻴﺮة وﻣ‬ ‫ﺳﻤﺎ ﻛﺎﻣ ﻼ ً‬
‫ﺑﺄﺣﺮف ﻛ‬ ‫ﺘﺮض أنﺗﻌﻴﺪ ا ً‬
‫ﻷﻧﻨﺎ ﻧﻌﻠﻢ أن )( ‪get_formatted_name‬ﻣﻦ اﻟﻤﻔ‬
‫ﺘﺨﺪم‬
‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن ﻫﺬا ﺻﺤﻴﺤًﺎ ‪ ،‬ﻧ ﺴ‬
‫ﺘﻮﻗﻊ أنﺗﻜﻮن اﻟﻘﻴﻤ ﺔ ﻓ ﻲ ‪ formatted_name‬ﻫ ﻲ ‪Janis Joplin.‬ﻟﻠ‬
‫ﻓﺈﻧﻨﺎ ﻧ‬
‫ﺑﺎﺳﻢ ‪formatted_name‬و ‪"Janis Joplin".‬اﻟﺨﻂ‬‫ﺗﻤﺮﻳﺮ ﻫﺎ‬
‫ﻃﺮﻳﻘ ﺔ )( ‪unittest's assertEqual‬و‬

‫ﺑﻠﻴﻦ"(‬
‫‪"self.assertEqual (formatted_name،‬ﺟﺎﻧﻴ ﺲ ﺟﻮ‬

‫ﺘﻮﻗﻊ ‪،‬‬
‫ﺘ ﺴﺎوﻳ ﺔ ﻛﻤﺎ ﻫﻮ ﻣ‬
‫ﺑﺎﻟ ﺴﻠ ﺴﻠ ﺔ ‪" Janis Joplin ".‬إذا ﻛﺎﻧ ﺖ ﻣ‬
‫ﻳﻘﻮل ‪" ،‬ﻗﺎرن اﻟﻘﻴﻤ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ ‪formatted_name‬‬
‫ﺑﻘﻮا ‪ ،‬ﻓﺄﻋﻠﻤﻮﻧ ﻲ! "‬
‫ﺘﻄﺎ‬
‫ﺑﺄس‪ .‬وﻟﻜﻦ إذا ﻟﻢﻳ‬‫ﻓﻼ‬
‫ﺘﺸﻐﻴﻞ‬
‫ﺑ‬‫ﺒﺎرا ت ﻓ ﻲ ﻫﺬا اﻟﻤﻠﻒ‪ .‬ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﺘ‬‫ﺑﺈﺟﺮاء اﻻﺧ‬
‫ﺒﺮ اﻟ ﺴﻄﺮ ‪unittest.main () Python‬‬
‫ﻳﺨ‬
‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫‪test_name_function.py ،‬ﻧﺤﺼﻞ ﻋﲆ اﻟﻤﺨﺮﺟﺎ ت اﻟ‬

‫‪.‬‬
‫‪-------------------------------------------------- --------------------‬‬

‫ﺛﺎﻧﻴ ﺔ‬
‫ﺒﺎر ‪1‬ﻓ ﻲ ‪0.000‬‬
‫ﺘ‬‫ﺗﻢ إﺟﺮاء اﻻﺧ‬

‫ﻧﻌﻢ‬

‫ﺒﺎ ًرا واﺣﺪًا ﻗﺪ ﻧﺠﺢ‪ .‬ال‬


‫ﺘ‬‫ﺒﺮﻧﺎ اﻟﻨﻘﻄ ﺔ اﻟﻤﻮﺟﻮدة ﻓ ﻲ اﻟ ﺴﻄﺮ اﻷول ﻣﻦ اﻹﺧﺮاج أن اﺧ‬
‫ﺗﺨ‬
‫ﺒﺮﻧﺎ ﻣﻮاﻓﻖ‬
‫ﺘﺸﻐﻴﻞ‪.‬ﻳﺨ‬
‫ﺛﺎﻧﻴ ﺔ ﻟﻠ‬
‫ﺘﻐﺮق أﻗﻞ ﻣﻦ ‪0.001‬‬
‫ﺒﺎ ًرا واﺣﺪًا ‪ ،‬وأن اﻷﻣﺮ اﺳ‬
‫ﺘ‬‫ﺘﺎﻟ ﻲ أن ‪Python‬أﺟﺮ ت اﺧ‬
‫ﺒﺮﻧﺎ اﻟ ﺴﻄﺮ اﻟ‬
‫ﻳﺨ‬
‫ﺘﺎز ت‪.‬‬
‫ﺒﺎر اﺟ‬
‫ﺘ‬‫ﺒﺎرا ت اﻟﻮﺣﺪة ﻓ ﻲ ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺘ‬‫اﻟﻨﻬﺎﺋ ﻲ أن ﺟﻤﻴﻊ اﺧ‬
‫ﺘ ﻲ ﻟﻬﺎ اﺳﻢ أول واﺳﻢ‬
‫ﺋﻤﺎ ﻟﻸﺳﻤﺎء اﻟ‬
‫ﺘﻌﻤﻞ دا ً‬
‫ﻳﺸﻴﺮ ﻫﺬا اﻹﺧﺮاج إﱃ أن اﻟﻮﻇﻴﻔ ﺔ )( ‪get_formatted_name‬ﺳ‬
‫ﺒﺎر ﻣﺮة أﺧﺮى‪ .‬إذا‬
‫ﺘ‬‫ﺘﻌﺪﻳﻞ ‪get_formatted_name () ،‬ﻳﻤﻜﻨﻨﺎﺗﺸﻐﻴﻞ ﻫﺬا اﻻﺧ‬
‫ﺑ‬‫ﻋﺎﺋﻠ ﺔ ﻣﺎ ﻟﻢ ﻧﻌﺪل اﻟﻮﻇﻴﻔ ﺔ‪ .‬ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﺑﻠﻴﻦ‪.‬‬
‫ﺜﻞ ﺟﺎﻧﻴ ﺲ ﺟﻮ‬
‫ﺘﻈﻞﺗﻌﻤﻞﻷﺳﻤﺎء ﻣ‬
‫ﺒﺎر ‪ ،‬ﻓﻨﺤﻦ ﻧﻌﻠﻢ أن اﻟﻮﻇﻴﻔ ﺔﺳ‬
‫ﺘ‬‫ﻧﺠﺤ ﺖ ﺣﺎﻟ ﺔ اﻻﺧ‬

‫ﺒﺎر ﻓﺎﺷﻞ‬
‫ﺘ‬‫اﺧ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ ‪ ،‬ﻟﻜﻨﻨﺎ‬
‫ﺘﻤﻜﻦ ﻣﻦ اﻟ‬
‫ﺘﻰﻳ‬
‫ﺒﺎر اﻟﺮﺳﻮ ب؟ دﻋﻨﺎ ﻧﻌﺪل )( ‪get_formatted_name‬ﺣ‬
‫ﺘ‬‫ﺒﺪو اﺧ‬
‫ﻛﻴﻒﻳ‬
‫ﺑﻠﻴﻦ‪.‬‬
‫ﺜﻞ ﺟﺎﻧﻴ ﺲ ﺟﻮ‬
‫ﺑﻄﺮﻳﻘ ﺔﺗﻜ ﺴﺮ وﻇﻴﻔ ﺔ اﻷﺳﻤﺎء ذا ت اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ﻓﻘﻂ ‪ ،‬ﻣ‬‫ﺳﻨﻔﻌﻞ ذﻟﻚ‬

‫‪218‬اﻟﻔﺼﻞ ‪11‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﻄﻠ ﺐ وﺳﻴﻄ ﺔ اﻻﺳﻢ اﻷوﺳﻂ‪:‬‬


‫إﻟﻴﻚ إﺻﺪار ﺟﺪﻳﺪ ﻣﻦ )( ‪get_formatted_name‬ﻳ‬

‫اﺳﻢ_‬ ‫‪)def get_formatted_name‬اﻷول ‪ ،‬اﻷوﺳﻂ ‪ ،‬اﻷﺧﻴﺮ(‪:‬‬


‫‪function.py‬‬ ‫ﺑﺪﻗ ﺔ‪"" ".‬‬‫"""إﻧﺸﺎء اﺳﻢ ﻛﺎﻣﻞ ﻣﻨ ﺴﻖ‬
‫"‬ ‫"‬ ‫"‬ ‫"‬
‫= ‪full_name‬اﻷول ‪+ +‬اﻷوﺳﻂ ‪+ +‬اﻷﺧﻴﺮ‬
‫اﻟﻌﻮدة )( ‪full_name.title‬‬

‫ﺑﺬﻟﻚ‬‫ﻳﺠ ﺐ أنﻳﻌﻤﻞ ﻫﺬا اﻹﺻﺪار ﻟﻸﺷﺨﺎص ذوي اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ ‪ ،‬وﻟﻜﻦ ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﺒﺮ ﻫﺎ ‪ ،‬ﻧﺮى أﻧﻨﺎ ﻛ ﺴﺮﻧﺎ اﻟﻮﻇﻴﻔ ﺔ ﻟﻸﺷﺨﺎص اﻟﺬﻳﻦ ﻟﺪﻳﻬﻢ اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ﻓﻘﻂ‪ .‬ﻫﺬه اﻟﻤﺮة ‪،‬ﻳﻌﻄ ﻲﺗﺸﻐﻴﻞ اﻟﻤﻠﻒ‬
‫ﺘ‬‫اﺧ‬
‫ﺗﺞ‪:‬‬
‫‪ test_name_function.py‬ﻫﺬا اﻟﻨﺎ‬

‫شه‬
‫==================== ====================================================‬

‫‪v‬ﺧﻄﺄ‪test_first_last_name (__main __. NamesTestCase) :‬‬


‫‪-------------------------------------------------- --------------------‬‬

‫‪)w Traceback‬آﺧﺮ ﻣﻜﺎﻟﻤ ﺔ أﺧﻴﺮة(‪ :‬ﻣﻠﻒ ‪"test_name_function.py" ،‬اﻟ ﺴﻄﺮ ‪8 ،‬ﻓ ﻲ ‪test_first_last_name‬‬

‫)'‪formatted_name = get_formatted_name ('janis'، 'joplin‬‬


‫ﺑ ﺔ‪'last' :‬‬
‫ﺘﻘﺪ اﻟﻮﺳﻴﻄ ﺔ اﻟﻤﻮﺿﻌﻴ ﺔ اﻟﻤﻄﻠﻮ‬
‫)( ‪TypeError: get_formatted_name‬ﻳﻔ‬

‫‪-------------------------------------------------- --------------------‬‬

‫ﺛﺎﻧﻴ ﺔ‬
‫ﺒﺎر ‪Ran 1‬ﻓ ﻲ ‪0.000‬‬
‫ﺘ‬‫‪x‬اﺧ‬

‫‪y‬ﻓﺸﻞ )اﻷﺧﻄﺎء )‪= 1‬‬

‫ﺒﺎر‪ .‬اﻟﻌﻨﺼﺮ اﻷول ﻓ ﻲ اﻹﺧﺮاج‬


‫ﺘ‬‫ﺘﻪ ﻋﻨﺪ ﻓﺸﻞ اﻻﺧ‬
‫ﺘﺎج إﱃ ﻣﻌﺮﻓ‬
‫ﺜﻴﺮ ﻗﺪﺗﺤ‬
‫ﺜﻴﺮ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎ ت ﻫﻨﺎﻷن ﻫﻨﺎك اﻟﻜ‬
‫ﻫﻨﺎك اﻟﻜ‬
‫ﺑﻌﺪ ذﻟﻚ ‪ ،‬ﻧﺮى أن )(‬‫ﺒﺎر أدى إﱃ ﺣﺪو ث ﺧﻄﺄ‪.‬‬
‫ﺘ‬‫ﺒﺎر وﺣﺪة واﺣﺪة ﻓ ﻲ ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺘ‬‫ﺒﺮﻧﺎ أن اﺧ‬
‫ﻫﻮ ‪E u‬ﻣﻔﺮد ‪ ،‬واﻟﺬيﻳﺨ‬
‫ﺑﺎﻟﻎ‬‫ﺒﺎر اﻟﺬي ﻓﺸﻞ أﻣ ًﺮا‬
‫ﺘ‬‫ﺗﻌﺪ ﻣﻌﺮﻓ ﺔ اﻻﺧ‬
‫ﺒ ﺐ ﻓ ﻲ ﺣﺪو ث ﺧﻄﺄ ‪v.‬‬
‫ﺗﺴ‬‫‪test_first_last_name‬ﻓ ﻲ ‪NamesTestCase‬‬
‫ﺒﺎرا ت اﻟﻮﺣﺪة‪.‬‬
‫ﺘ‬‫ﺑﻚ ﻋﲆ اﻟﻌﺪﻳﺪ ﻣﻦ اﺧ‬‫ﺒﺎر اﻟﺨﺎﺻ ﺔ‬
‫ﺘ‬‫ﺘﻮي ﺣﺎﻟ ﺔ اﻻﺧ‬
‫اﻷ ﻫﻤﻴ ﺔ ﻋﻨﺪﻣﺎﺗﺤ‬

‫ﺘﺪﻋﺎء اﻟﻮﻇﻴﻔ ﺔ )'‪get_formatted_name ('janis'، 'joplin‬‬


‫ﻓ ﻲ ‪w ،‬ﻧﺮى ‪traceback‬اﻟﻘﻴﺎﺳ ﻲ ‪ ،‬واﻟﺬيﻳﺸﻴﺮ إﱃ أن اﺳ‬
‫ﺑ ﺔ‪.‬‬
‫ﺘﻘﺪ اﻟﻮﺳﻴﻄ ﺔ اﻟﻤﻮﺿﻌﻴ ﺔ اﻟﻤﻄﻠﻮ‬
‫ﻟﻢﻳﻌﺪﻳﻌﻤﻞﻷﻧﻪﻳﻔ‬

‫ﺒﺎر اﻹﺟﻤﺎﻟﻴ ﺔ ﻓﺸﻠ ﺖ‬


‫ﺘ‬‫ﺒﺎر وﺣﺪة واﺣﺪة ‪x.‬أﺧﻴ ﺮًا ‪ ،‬ﻧﺮى رﺳﺎﻟ ﺔ إﺿﺎﻓﻴ ﺔ ﻣﻔﺎد ﻫﺎ أن ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺘ‬‫ﻳﻀﺎ أﻧﻪﺗﻢ إﺟﺮاء اﺧ‬‫ﻧﺮى أ ً‬
‫ﺘﻰﺗﺮا ﻫﺎ ﻋﲆ اﻟﻔﻮر ؛ ﻻﺗﺮﻳﺪ‬‫ﺗﻈﻬﺮ ﻫﺬه اﻟﻤﻌﻠﻮﻣﺎ ت ﻓ ﻲ ﻧﻬﺎﻳ ﺔ اﻹﺧﺮاج ﺣ‬ ‫ﺒﺎر ‪y.‬‬ ‫ﺘ‬‫وأن ﺧﻄﺄ ً واﺣﺪًا ﺣﺪ ث ﻋﻨﺪﺗﺸﻐﻴﻞ ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺘ ﻲ ﻓﺸﻠ ﺖ‪.‬‬
‫ﺒﺎرا ت اﻟ‬
‫ﺘ‬‫ﺘﻤﺮﻳﺮﻷﻋﲆ ﺧﻼل ﻗﺎﺋﻤ ﺔ ﻃﻮﻳﻠ ﺔ ﻣﻦ اﻟﻤﺨﺮﺟﺎ ت ﻟﻤﻌﺮﻓ ﺔ ﻋﺪد اﻻﺧ‬
‫اﻟ‬

‫ﺒﺎر ﻓﺎﺷﻞ‬
‫ﺘ‬‫ﺑ ﺔ ﻻﺧ‬
‫ﺘﺠﺎ‬
‫اﻻﺳ‬
‫ﺒﺎر اﻟﻨﺠﺎحﻳﻌﻨ ﻲ أن اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘ‬‫ﺘﺤﻘﻖ ﻣﻦ اﻟﺸﺮوط اﻟﺼﺤﻴﺤ ﺔ ‪ ،‬ﻓﺈن اﺧ‬
‫ﺘﺮاض أﻧﻚﺗ‬
‫ﺑﺎﻓ‬‫ﺒﺎر؟‬
‫ﺘ‬‫ﻣﺎذاﺗﻔﻌﻞ ﻋﻨﺪﻣﺎﻳﻔﺸﻞ اﻻﺧ‬
‫ﺒﺎر‬
‫ﺘ‬‫ﺘﻪ‪ .‬ﻟﺬﻟﻚ ﻋﻨﺪ اﻻﺧ‬
‫ﺒ‬‫ﺘ‬‫ﺒﺎر اﻟﻔﺸﻞ أن ﻫﻨﺎك ﺧﻄﺄ ﻓ ﻲ اﻟﻜﻮد اﻟﺠﺪﻳﺪ اﻟﺬي ﻛ‬
‫ﺘ‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ وﻳﻌﻨ ﻲ اﺧ‬‫ﺗﻌﻤﻞ‬

‫ﺒﺎر اﻟﻜﻮد ‪219‬‬


‫ﺘ‬‫اﺧ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎر‪.‬‬
‫ﺘ‬‫ﺒ ﺖ ﻓ ﻲ ﻓﺸﻞ اﻻﺧ‬
‫ﺒ‬‫ﺘ ﻲﺗ ﺴ‬
‫ﺑﺈﺻﻼح اﻟﺸﻔﺮة اﻟ‬‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ‪ ،‬ﻗﻢ‬‫ﺒﺎر‪.‬‬
‫ﺘ‬‫ﻓﺸﻞ ‪ ،‬ﻻﺗﻐﻴﺮ اﻻﺧ‬
‫ﺘﻐﻴﻴﺮا ت إﱃ ﻛ ﺴﺮ اﻟ ﺴﻠﻮك اﻟﻤﻄﻠﻮ ب‪.‬‬
‫ﺘﺸﻒ ﻛﻴﻒ أد ت ﻫﺬه اﻟ‬
‫ﺘﻮ ﻋﲆ اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬واﻛ‬
‫ﺘﻬﺎ ﻟﻠ‬
‫ﺘ ﻲ أﺟﺮﻳ‬
‫ﺘﻐﻴﻴﺮا ت اﻟ‬
‫اﻓﺤﺺ اﻟ‬

‫ﺘﻴﻦ ﻓﻘﻂ‪ :‬اﻻﺳﻢ اﻷول واﻻﺳﻢ اﻷﺧﻴﺮ‪ .‬اﻵن‬


‫ﺘﻄﻠ ﺐ ﻣﻌﻠﻤ‬
‫ﺘ‬ ‫ُﺴ‬
‫ﺘﺨﺪم )( ‪get_formatted_name‬ﻟ‬ ‫ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﺗ‬
‫ﺘﻄﻠ ﺐ اﻻﺳﻢ اﻷول واﻻﺳﻢ اﻷوﺳﻂ واﻻﺳﻢ اﻷﺧﻴﺮ‪ .‬أد ت إﺿﺎﻓ ﺔ ﻣﻌﻠﻤ ﺔ اﻻﺳﻢ اﻷوﺳﻂ اﻹﻟﺰاﻣﻴ ﺔ إﱃ ﻛ ﺴﺮ اﻟ ﺴﻠﻮك اﻟﻤﻄﻠﻮ ب‬
‫ﻳ‬
‫ﺑﺬﻟﻚ ‪،‬ﻳﺠ ﺐ أن‬‫ﺑﻤﺠﺮد أن ﻧﻘﻮم‬‫ﺘﻴﺎرﻳًﺎ‪.‬‬
‫ﻟـ ‪get_formatted_name ().‬اﻟﺨﻴﺎر اﻷﻓﻀﻞ ﻫﻨﺎ ﻫﻮ ﺟﻌﻞ اﻻﺳﻢ اﻷوﺳﻂ اﺧ‬
‫ﺒﻮل اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ أ ً‬
‫ﻳﻀﺎ‪ .‬دﻋﻨﺎ‬ ‫ﺑﻠﻴﻦ ﻣﺮة أﺧﺮى ‪ ،‬وﻳﺠ ﺐ أن ﻧﻜﻮن ﻗﺎدرﻳﻦ ﻋﲆ ﻗ‬
‫ﺜﻞ ﺟﺎﻧﻴ ﺲ ﺟﻮ‬
‫ﺒﺎرﻧﺎﻷﺳﻤﺎء ﻣ‬
‫ﺘ‬‫ﺘﺎز اﺧ‬
‫ﻳﺠ‬
‫ﺒﺎر ﻣﺮة أﺧﺮى‪ .‬إذا‬
‫ﺘ‬‫ﺘﺸﻐﻴﻞ ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺑ‬‫ﺛﻢ ﻗﻢ‬‫ﺘﻴﺎرﻳ ﺔ‬
‫ﺑﺤﻴ ﺚﺗﻜﻮن اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ اﺧ‬
‫ﻧﻌﺪل )( ‪get_formatted_name‬‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ‬
‫ﺘﺄﻛﺪ ﻣﻦ أن اﻟﻮﻇﻴﻔ ﺔﺗ‬
‫ﺘﻘﻞ إﱃ اﻟ‬
‫ﻧﺠﺤ ﺖ ‪ ،‬ﻓ ﺴﻨﻨ‬

‫ﺘﻴﺎرﻳ ﺔ ‪ ،‬ﻧﻨﻘﻞ اﻟﻤﻌﻠﻤ ﺔ اﻷوﺳﻂ إﱃ‬


‫ﻟﺠﻌﻞ اﻷﺳﻤﺎء اﻟﻮﺳﻄﻰ اﺧ‬
‫ﺒﻨ ﻲ اﻻﺳﻢ‬
‫ﺒﺎر ‪if‬اﻟﺬيﻳ‬
‫ﺘ‬ ‫ﺘﺮاﺿﻴ ﺔ ﻓﺎرﻏ ﺔ‪ .‬ﻧﻀﻴﻒ أ ً‬
‫ﻳﻀﺎ اﺧ‬ ‫ﻧﻬﺎﻳ ﺔ ﻗﺎﺋﻤ ﺔ اﻟﻤﻌﻠﻤﺎ ت ﻓ ﻲﺗﻌﺮﻳﻒ اﻟﻮﻇﻴﻔ ﺔ وإﻋﻄﺎﺋﻬﺎ ﻗﻴﻤ ﺔ اﻓ‬
‫ﺘﻮﻓ ﺮًا أم ﻻ‪:‬‬
‫ﺘﻤﺎدًا ﻋﲆ ﻣﺎ إذا ﻛﺎن اﻻﺳﻢ اﻷوﺳﻂ ﻣ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪ ،‬اﻋ‬‫اﻟﻜﺎﻣﻞ‬

‫اﺳﻢ_‬ ‫‪)def get_formatted_name‬اﻷول ‪ ،‬اﻷﺧﻴﺮ ‪ ،‬اﻷوﺳﻂ ‪= ""):‬‬


‫‪function.py‬‬ ‫ﺑﺪﻗ ﺔ‪"" ".‬‬‫"""إﻧﺸﺎء اﺳﻢ ﻛﺎﻣﻞ ﻣﻨ ﺴﻖ‬
‫إذا ﻛﺎن اﻟﻮﺳﻂ‪:‬‬
‫"‬ ‫"‬ ‫"‬ ‫"‬
‫= ‪full_name‬اﻷول ‪+‬آﺧﺮ‪:‬‬ ‫‪+‬وﺳﻂ ‪+‬‬ ‫‪+‬اﻻﺧﻴﺮ‬

‫"‬ ‫"‬
‫= ‪full_name‬أول ‪+‬إرﺟﺎع )(‬ ‫‪+‬اﻻﺧﻴﺮ‬

‫‪full_name.title‬‬

‫ﺘﻴﺎرﻳًﺎ‪.‬‬
‫ﻓ ﻲ ﻫﺬا اﻹﺻﺪار اﻟﺠﺪﻳﺪ ﻣﻦ ‪get_formatted_name () ،‬ﻳﻜﻮن اﻻﺳﻢ اﻷوﺳﻂ اﺧ‬
‫ﺘﻮي اﻻﺳﻢ اﻟﻜﺎﻣﻞ ﻋﲆ اﻻﺳﻢ اﻷول واﻟﻮﺳﻄﻰ‬
‫إذاﺗﻢﺗﻤﺮﻳﺮ اﻻﺳﻢ اﻷوﺳﻂ إﱃ اﻟﻮﻇﻴﻔ ﺔ )إذا ﻛﺎن اﻟﻮﺳﻂ ‪ ، (:‬ﻓ ﺴﻴﺤ‬
‫ﺘﻜﻮن ﻣﻦ اﻻﺳﻢ اﻷول واﻷﺧﻴﺮ ﻓﻘﻂ‪ .‬اﻵنﻳﺠ ﺐ أنﺗﻌﻤﻞ اﻟﻮﻇﻴﻔ ﺔ ﻟﻜﻼ‬
‫واﻷﺧﻴﺮ‪ .‬ﺧﻼف ذﻟﻚ ‪ ،‬ﻓﺈن اﻻﺳﻢ اﻟﻜﺎﻣﻞﺳﻴ‬
‫ﺘﺸﻐﻴﻞ‬
‫ﺑ‬‫ﺑﻠﻴﻦ ‪ ،‬ﻓﻠﻨﻘﻢ‬
‫ﺜﻞ ﺟﺎﻧﻴ ﺲ ﺟﻮ‬
‫اﻟﻨﻮﻋﻴﻦ ﻣﻦ اﻷﺳﻤﺎء‪ .‬ﻟﻤﻌﺮﻓ ﺔ ﻣﺎ إذا ﻛﺎﻧ ﺖ اﻟﻮﻇﻴﻔ ﺔ ﻻﺗﺰالﺗﻌﻤﻞﻷﺳﻤﺎء ﻣ‬
‫‪test_name_function.py‬ﻣﺮة أﺧﺮى‪:‬‬

‫‪.‬‬
‫‪-------------------------------------------------- --------------------‬‬

‫ﺛﺎﻧﻴ ﺔ‬
‫ﺒﺎر ‪1‬ﻓ ﻲ ‪0.000‬‬
‫ﺘ‬‫ﺗﻢ إﺟﺮاء اﻻﺧ‬

‫ﻧﻌﻢ‬

‫ﺑﻠﻴﻦ ﻣﺮة أﺧﺮى دون اﻟﺤﺎﺟ ﺔ‬


‫ﺜﻞ ﺟﺎﻧﻴ ﺲ ﺟﻮ‬
‫ﺜﺎﻟ ﻲ‪ .‬ﻫﺬاﻳﻌﻨ ﻲ أن اﻟﻮﻇﻴﻔ ﺔﺗﻌﻤﻞﻷﺳﻤﺎء ﻣ‬
‫ﺒﺎرﺗﻤﺮ اﻵن‪ .‬ﻫﺬا ﻣ‬
‫ﺘ‬‫ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺒﺎر اﻟﻔﺎﺷﻞﺳﺎﻋﺪﻧﺎ ﻓ ﻲﺗﺤﺪﻳﺪ اﻟﻜﻮد اﻟﺠﺪﻳﺪ اﻟﺬي‬
‫ﺘ‬‫ﺘﻨﺎ أﻣ ﺮًاﺳﻬ ﻼ ًﻷن اﻻﺧ‬
‫ﺒﺎر وﻇﻴﻔ ﺔ ‪manu ally.‬ﻛﺎن إﺻﻼح وﻇﻴﻔ‬
‫ﺘ‬‫إﱃ اﺧ‬
‫ﻛ ﺴﺮ اﻟ ﺴﻠﻮك اﻟﺤﺎﻟ ﻲ‪.‬‬

‫‪220‬اﻟﻔﺼﻞ ‪11‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎرا ت ﺟﺪﻳﺪة‬
‫ﺘ‬‫إﺿﺎﻓ ﺔ اﺧ‬

‫ﺛﺎﻧ ًﻴﺎ ﻟﻸﺷﺨﺎص‬‫ﺒﺎ ًرا‬


‫ﺘ‬‫ﺘ ﺐ اﺧ‬
‫ﺒ ﺴﻴﻄ ﺔ ﻣﺮة أﺧﺮى ‪ ،‬دﻋﻨﺎ ﻧﻜ‬
‫ﺑﻌﺪ أن ﻋﻠﻤﻨﺎ أن )( ‪get_formatted_name‬ﻳﻌﻤﻞ ﻣﻊ اﻷﺳﻤﺎء اﻟ‬‫اﻵن‬
‫ﺑﺬﻟﻚ ﻋﻦ ﻃﺮﻳﻖ إﺿﺎﻓ ﺔ ﻃﺮﻳﻘ ﺔ أﺧﺮى إﱃ اﻟﻔﺌ ﺔ ‪NamesTestCase:‬‬‫ﺘﻀﻤﻨﻮن اﻻﺳﻢ اﻷوﺳﻂ‪ .‬ﻧﻘﻮم‬
‫اﻟﺬﻳﻦﻳ‬

‫ﺘﻴﺮاد ‪unittest‬‬
‫اﺳ‬
‫ﺘﻴﺮاد ‪get_formatted_name‬‬
‫ﻣﻦ ‪name_function‬اﺳ‬

‫‪class NamesTestCase (unittest.TestCase):‬‬


‫ﺒﺎرا ت "" "‪'name_function.py'.‬‬
‫ﺘ‬‫"""اﺧ‬

‫‪def test_first_last_name (self):‬‬


‫ﺑﻠﻴﻦ "" "؟"‬
‫ﺜﻞ" ﺟﺎﻧﻴ ﺲ ﺟﻮ‬
‫""" ﻫﻞﺗﻌﻤﻞ أﺳﻤﺎء ﻣ‬
‫)'‪formatted_name = get_formatted_name ('janis'، 'joplin‬‬
‫ﺑﻠﻴﻦ"(‬
‫‪"self.assertEqual (formatted_name،‬ﺟﺎﻧﻴ ﺲ ﺟﻮ‬

‫‪def test_first_last_middle_name (self):‬‬


‫ﺜﻞ" "" "؟" ‪Wolfgang Amadeus Mozart‬‬
‫""" ﻫﻞﺗﻌﻤﻞ أﺳﻤﺎء ﻣ‬
‫ش‬ ‫( ‪formatted_name = get_formatted_name‬‬
‫"وﻟﻔﺠﺎﻧﺞ" ‪" ،‬ﻣﻮزار ت" ‪" ،‬أﻣﺎدﻳﻮس"(‬
‫)"‪self.assertEqual (formatted_name ، "Wolfgang Amadeus Mozart‬‬

‫)( ‪unittest.main‬‬

‫ﺘﻢ‬
‫ﺘﻰﻳ‬
‫ﺑـ _‪test‬ﺣ‬‫ﺒﺪأ اﺳﻢ اﻟﻄﺮﻳﻘ ﺔ‬
‫ﺘ ﺴﻤﻴ ﺔ ﻫﺬه اﻟﻄﺮﻳﻘ ﺔ اﻟﺠﺪﻳﺪة ‪test_first_last_middle_name ().‬ﻳﺠ ﺐ أنﻳ‬
‫ﺑ‬‫ﻗﻤﻨﺎ‬
‫ﺘﻮﺿﻴﺢﺳﻠﻮك )(‬
‫ﺘ ﺴﻤﻴ ﺔ اﻟﻄﺮﻳﻘ ﺔ ﻟ‬
‫ﺑ‬‫ﺗﺸﻐﻴﻞ اﻟﻄﺮﻳﻘ ﺔﺗﻠﻘﺎﺋ ًﻴﺎ ﻋﻨﺪﺗﺸﻐﻴﻞ ‪test_name_function.py.‬ﻧﻘﻮم‬
‫ﺛﺮة‪.‬‬
‫ﺘﺄ‬
‫ﺒﺎر ‪ ،‬ﻓﺈﻧﻨﺎ ﻧﻌﺮف ﻋﲆ اﻟﻔﻮر أﻧﻮاع اﻷﺳﻤﺎء اﻟﻤ‬
‫ﺘ‬‫ﺘﻴﺠ ﺔ ﻟﺬﻟﻚ ‪ ،‬إذا ﻓﺸﻞ اﻻﺧ‬
‫ﺒﺎره‪ .‬ﻧ‬
‫ﺘ‬‫ﺑﺎﺧ‬‫‪get_formatted_name‬اﻟﺬي ﻧﻘﻮم‬
‫ﺘﻤﻜﻦ ﻣﻦ ﻓﻬﻢ‬
‫ﺘﻰﺗ‬
‫ﺑﻚ‪.‬ﻳﺠ ﺐ أنﺗﻜﻮن وﺻﻔﻴ ﺔ ﺣ‬‫ﻣﻦ اﻟﺠﻴﺪ أنﻳﻜﻮن ﻟﺪﻳﻚ أﺳﻤﺎء ﻃﺮق ﻃﻮﻳﻠ ﺔ ﻓ ﻲ ﻓﺌﺎ ت ‪TestCase‬اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻲ‬
‫ﺒﺮﻣﺠﻴ ﺔ اﻟ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺑﺪًا إﱃ ﻛ‬
‫ﺘﺪﻋﻴﻬﺎﺗﻠﻘﺎﺋ ًﻴﺎ ‪ ،‬ﻓﻠﻦﺗﻀﻄﺮ أ‬
‫ﺗﺴ‬‫ﺗﻚ ‪ ،‬وﻷن ‪Python‬‬
‫ﺒﺎرا‬
‫ﺘ‬‫اﻟﻤﺨﺮﺟﺎ ت ﻋﻨﺪﻣﺎﺗﻔﺸﻞ اﺧ‬
‫ﺘﺪﻋ ﻲ ﻫﺬه اﻟﻄﺮق‪.‬‬
‫ﺗﺴ‬

‫ﺘﺨﺪم )( ‪assertEqual‬‬
‫ﺛﻢ ﻧ ﺴ‬
‫ﺑﺎﻻﺳﻢ اﻷول واﻷﺧﻴﺮ واﻷوﺳﻂ ‪u ،‬‬
‫ﺒﺎر اﻟﻮﻇﻴﻔ ﺔ ‪ ،‬ﻧ ﺴﻤ ﻲ )( ‪get_formatted_name‬‬
‫ﺘ‬‫ﻻﺧ‬
‫ﺘﻮﻗﻌﻪ ‪.‬‬
‫ﺑﻖ اﻻﺳﻢ اﻟﻜﺎﻣﻞ )اﻷول واﻟﻮﺳﻂ واﻷﺧﻴﺮ( اﻟﺬي ﻧ‬
‫ﺘﺤﻘﻖ ﻣﻦ أن اﻻﺳﻢ اﻟﻜﺎﻣﻞ اﻟﺬيﺗﻢ إرﺟﺎﻋﻪﻳﻄﺎ‬
‫ﻟﻠ‬

‫ﺒﺎرﻳﻦ‪:‬‬
‫ﺘ‬‫ﺘﺎز ﻛﻼ اﻻﺧ‬
‫ﻋﻨﺪﺗﺸﻐﻴﻞ ‪test_name_function.py‬ﻣﺮة أﺧﺮى ‪،‬ﻳﺠ‬

‫‪..‬‬
‫‪-------------------------------------------------- --------------------‬‬

‫ﺛﺎﻧﻴ ﺔ‬
‫ﺒﺎرا ت ﻓ ﻲ ‪0.000‬‬
‫ﺘ‬‫ﺗﻢ إﺟﺮاء ‪2‬اﺧ‬

‫ﻧﻌﻢ‬

‫ﺜﻞ ﺟﺎﻧﻴ ﺲ‬
‫ﻋﻈﻴﻢ! ﻧﺤﻦ ﻧﻌﻠﻢ اﻵن أن اﻟﻮﻇﻴﻔ ﺔ ﻻﺗﺰالﺗﻌﻤﻞﻷﺳﻤﺎء ﻣ‬

‫ﺜﻞ ‪Wolfgang Amadeus Mozart‬أ ً‬


‫ﻳﻀﺎ‪.‬‬ ‫ﺛﻘ ﺔ ﻣﻦ أﻧﻪﺳﻴﻌﻤﻞ ﻣﻊ أﺳﻤﺎء ﻣ‬‫‪Joplin ،‬وﻳﻤﻜﻨﻨﺎ أن ﻧﻜﻮن ﻋﲆ‬

‫ﺒﺎر اﻟﻜﻮد ‪221‬‬


‫ﺘ‬‫اﺧ‬
‫‪Machine Translated by Google‬‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ُﺮﺟﻊ اﻟﺪاﻟ ﺔﺳﻠ ﺴﻠ ﺔ واﺣﺪة‬


‫ﺒﻞ ﻣﻌﺎﻣﻠﻴﻦ‪ :‬اﺳﻢ اﻟﻤﺪﻳﻨ ﺔ واﺳﻢ اﻟﺪوﻟ ﺔ‪.‬ﻳﺠ ﺐ أنﺗ‬
‫ﺘ ﺐ داﻟ ﺔﺗﻘ‬
‫ﺒﻠﺪ‪ :‬اﻛ‬
‫‪11-1.‬اﻟﻤﺪﻳﻨ ﺔ ‪ ،‬اﻟ‬
‫ﺘﺨﺰﻳﻦ اﻟﻮﻇﻴﻔ ﺔ ﻓ ﻲ وﺣﺪة ﻧﻤﻄﻴ ﺔﺗ ﺴﻤﻰ‬
‫ﺑ‬‫ﺘﻴﺎﻏﻮ ‪،‬ﺗﺸﻴﻠ ﻲ‪ .‬ﻗﻢ‬
‫ﺜﻞﺳﺎﻧ‬
‫ﺒﻠﺪ ‪ ،‬ﻣ‬
‫ﻣﻦ ﻧﻤﻮذج اﻟﻤﺪﻳﻨ ﺔ ‪ ،‬اﻟ‬
‫‪city_functions.py.‬‬

‫ﺘﻴﺮاد‬
‫ﺑﺤﺎﺟ ﺔ إﱃ اﺳ‬‫ﺗﺬﻛﺮ أﻧﻚ‬
‫ﺘﻮ )‬
‫ﺘﻬﺎ ﻟﻠ‬
‫ﺒ‬‫ﺘ‬‫ﺘ ﻲﻛ‬
‫ﺒﺮ اﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺘ‬‫ﺑﺈﻧﺸﺎء ﻣﻠﻒﻳ ﺴﻤﻰ ‪test_cities.py‬ﻳﺨ‬‫ﻗﻢ‬
‫ﺒﺎر ﻫﺎ(‪.‬‬
‫ﺘ‬‫ﺘ ﻲﺗﺮﻳﺪ اﺧ‬
‫‪unittest‬واﻟﻮﻇﻴﻔ ﺔ اﻟ‬
‫ﺗﺸﻴﻠ ﻲ"‬
‫ﺘﻴﺎﻏﻮ" و "‬
‫ﺜﻞ "ﺳﺎﻧ‬
‫ﺑﻘﻴﻢ ﻣ‬‫ﺘﻚ‬
‫ﺘﺪﻋﺎء وﻇﻴﻔ‬
‫ﺘﺤﻘﻖ ﻣﻦ أن اﺳ‬
‫ﺘ ﺐ ﻋﻤﻠﻴ ﺔﺗ ﺴﻤﻰ )( ‪test_city_country‬ﻟﻠ‬
‫اﻛ‬
‫ﺘﻴﺎز ‪test_city_country () .‬‬
‫ﺗﺄﻛﺪ ﻣﻦ اﺟ‬
‫ﺘﺸﻐﻴﻞ ‪test_cities.py ،‬و‬
‫ﺑ‬‫ﺘﺞ ﻋﻨﻪ اﻟ ﺴﻠ ﺴﻠ ﺔ اﻟﺼﺤﻴﺤ ﺔ‪ .‬ﻗﻢ‬
‫ﻳﻨ‬

‫ﺜ ﺔ ‪ ،‬اﻟ ﺴﻜﺎن‪.‬ﻳﺠ ﺐ أنﻳﻌﺮض اﻵنﺳﻠ ﺴﻠ ﺔ واﺣﺪة‬


‫ﺛﺎﻟ‬‫ﺘﻄﻠ ﺐ ﻣﻌﻠﻤ ﺔ‬
‫ﺑﺤﻴ ﺚﺗ‬‫ﺘﻚ‬
‫ﺘﻌﺪﻳﻞ وﻇﻴﻔ‬
‫ﺑ‬‫‪11-2.‬اﻟ ﺴﻜﺎن‪ :‬ﻗﻢ‬
‫ﺘﻴﺎﻏﻮ ‪،‬ﺗﺸﻴﻠ ﻲ ‪-‬ﻋﺪد اﻟ ﺴﻜﺎن ‪ّ 5000000.‬‬
‫ﺷﻐ ﻞ‬ ‫ﺜﻞﺳﺎﻧ‬
‫ﺒﻠﺪ ‪-‬اﻟ ﺴﻜﺎن ‪xxx ،‬ﻣ‬
‫ﻣﻦ اﻟﻨﻤﻮذج اﻟﻤﺪﻳﻨ ﺔ ‪ ،‬اﻟ‬
‫‪test_cities.py‬ﻣﺮة أﺧﺮى‪.‬ﺗﺄﻛﺪ ﻣﻦ ﻓﺸﻞ )( ‪ test_city_country‬ﻫﺬه اﻟﻤﺮة‪.‬‬

‫ﺘﺸﻐﻴﻞ ‪test_cities.py‬ﻣﺮة‬
‫ﺑ‬‫ﺘﻴﺎرﻳ ﺔ‪ .‬ﻗﻢ‬
‫ﺑﺤﻴ ﺚﺗﻜﻮن ﻣﻌﻠﻤ ﺔ اﻟ ﺴﻜﺎن اﺧ‬‫ﺘﻌﺪﻳﻞ اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺑ‬‫ﻗﻢ‬
‫ﺗﺄﻛﺪ ﻣﻦ ﻣﺮور )( ‪test_city_country‬ﻣﺮة أﺧﺮى‪.‬‬
‫أﺧﺮى ‪ ،‬و‬
‫ﺘﻚ‬
‫ﺘﺪﻋﺎء وﻇﻴﻔ‬
‫ﺑﺤﻴ ﺚﻳﻤﻜﻨﻚ اﺳ‬
‫ﺛﺎﻧ ًﻴﺎﻳ ﺴﻤﻰ )( ‪test_city_country_population‬‬‫ﺒﺎ ًرا‬
‫ﺘ‬‫ﺘ ﺐ اﺧ‬
‫اﻛ‬
‫ﺗﺄﻛﺪ ﻣﻦ‬
‫ﺘﺸﻐﻴﻞ ‪test_cities.py‬ﻣﺮة أﺧﺮى ‪ ،‬و‬
‫ﺑ‬‫ﺗﺸﻴﻠ ﻲ" و "اﻟ ﺴﻜﺎن ‪= 5000000".‬ﻗﻢ‬
‫ﺘﻴﺎﻏﻮ" و "‬
‫ﺑﺎﻟﻘﻴﻢ "ﺳﺎﻧ‬
‫ﺒﺎر اﻟﺠﺪﻳﺪ‬
‫ﺘ‬‫ﻫﺬا اﻻﺧ‬
‫ﺑﻨﺠﺎح‪.‬‬‫ﺘﺎز‬
‫ﻳﻤﺮ‪،‬ﻳﻤﺮر‪ ،‬اﺟ‬

‫ﺒﺎر اﻟﻔﺼﻞ‬
‫ﺘ‬‫اﺧ‬
‫ﺳﺎ‬
‫ﺘﺨﺪم درو ً‬
‫ﺘﺴ‬‫ﺒﺎرا ت ﻟﻠﻔﺼﻞ‪.‬ﺳ‬
‫ﺘ‬‫ﺘ ﺐ اﺧ‬
‫ﺘﻜ‬‫ﺒﺎرا ت ﻟﻮﻇﻴﻔ ﺔ واﺣﺪة‪ .‬اﻵنﺳ‬
‫ﺘ‬‫ﺑ ﺔ اﺧ‬
‫ﺘﺎ‬
‫ﺑﻜ‬‫ﻓ ﻲ اﻟﺠﺰء اﻷول ﻣﻦ ﻫﺬا اﻟﻔﺼﻞ ‪ ،‬ﻗﻤ ﺖ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪ .‬إذا‬‫ﺒﺎ ت أن ﻓﺼﻮﻟﻚ اﻟﺪراﺳﻴ ﺔﺗﻌﻤﻞ‬
‫ﺛ‬‫ﺘﺮﻓ ﺔ ‪ ،‬ﻟﺬا ﻣﻦ اﻟﻤﻔﻴﺪ أنﺗﻜﻮن ﻗﺎد ًرا ﻋﲆ إ‬
‫ﺑﺮاﻣﺠﻚ اﻟﻤﺤ‬‫ﻓ ﻲ اﻟﻌﺪﻳﺪ ﻣﻦ‬
‫ﺘ ﻲﺗﺠﺮﻳﻬﺎ ﻋﲆ اﻟﻔﺼﻞ ﻟﻦ‬ ‫ﺛ ًﻘﺎ ﻣﻦ أن اﻟ‬
‫ﺘﺤ ﺴﻴﻨﺎ ت اﻟ‬ ‫ﺒﺎرا ت ﻧﺎﺟﺤ ﺔ ﻟﻔﺼﻞﺗﻌﻤﻞ ﻋﻠﻴﻪ ‪ ،‬ﻓﻴﻤﻜﻨﻚ أنﺗﻜﻮن وا‬
‫ﺘ‬‫ﻛﺎﻧ ﺖ ﻟﺪﻳﻚ اﺧ‬
‫ﺗﻜ ﺴﺮﺳﻠﻮك اﻹﻳﺠﺎر اﻟﺤﺎﻟ ﻲ ﻋﻦ ﻃﺮﻳﻖ اﻟﺨﻄﺄ‪.‬‬

‫ﺘﺄﻛﻴﺪ‬
‫ﺘﻨﻮﻋ ﺔ ﻣﻦ ﻃﺮق اﻟ‬
‫ﻣﺠﻤﻮﻋ ﺔ ﻣ‬
‫ﺘﺄﻛﻴﺪ ﻓ ﻲ ﻓﺌ ﺔ ‪unittest.TestCase .‬‬
‫ﺗﻮﻓﺮ ‪Python‬ﻋﺪدًا ﻣﻦ ﻋﻤﻠﻴﺎ ت اﻟ‬
‫ﺑﻚ‬‫ﺘﻘﺪ أﻧﻪ ﺻﺤﻴﺢ ﻓ ﻲ ﻧﻘﻄ ﺔ ﻣﻌﻴﻨ ﺔ ﻓ ﻲ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺘﺄﻛﻴﺪ ﻣﺎ إذا ﻛﺎن اﻟﺸﺮط اﻟﺬيﺗﻌ‬
‫ﺒﺮ ﻃﺮق اﻟ‬
‫ﺘ‬‫ﺑ ًﻘﺎ ‪ ،‬اﺧ‬
‫ﻛﻤﺎ ذﻛﺮﻧﺎﺳﺎ‬
‫ﺒﺮﻧﺎﻣﺞ ؛‬
‫ﺘﺮاﺿﻚ ﺣﻮل ﻛﻴﻔﻴ ﺔﺗﺼﺮف ﻫﺬا اﻟﺠﺰء ﻣﻦ اﻟ‬
‫ﺘﻢﺗﺄﻛﻴﺪ اﻓ‬
‫ﺘﻮﻗﻊ ‪ ،‬ﻓ ﺴﻴ‬
‫ﺑﺎﻟﻔﻌﻞ‪ .‬إذا ﻛﺎن اﻟﺸﺮط ﺻﺤﻴﺤًﺎ ﻛﻤﺎ ﻫﻮ ﻣ‬‫ﺻﺤﻴﺤًﺎ‬
‫ﺘﺮﺿﻪ ﺻﺤﻴﺤًﺎ ﻫﻮ ﻓ ﻲ اﻟﻮاﻗﻊ ﻏﻴﺮ ﺻﺤﻴﺢ ‪ ،‬ﻓﺈن‬
‫ﺛﻘ ﺔ ﻣﻦ ﻋﺪم وﺟﻮد أﺧﻄﺎء‪ .‬إذا ﻛﺎن اﻟﺸﺮط اﻟﺬيﺗﻔ‬‫ﻳﻤﻜﻨﻚ أنﺗﻜﻮن ﻋﲆ‬
‫ﺜﻨﺎءً‪.‬‬
‫ﺘ‬‫ﺜﻴﺮ اﺳ‬
‫ﺜﻮنﺗ‬
‫ﺑﺎﻳ‬

‫ﺘﻲ‬
‫ﺘﺤﻘﻖ ﻣﻦ أن اﻟﻘﻴﻢ اﻟ‬
‫ﺘﺨﺪام ﻫﺬه اﻟﻄﺮق ‪،‬ﻳﻤﻜﻨﻚ اﻟ‬
‫ﺑﺎﺳ‬‫ﺘﺨﺪام‪.‬‬
‫ﺘ ﺔ ﻃﺮقﺗﺄﻛﻴﺪ ﺷﺎﺋﻌ ﺔ اﻻﺳ‬
‫ﻳﺼﻒ اﻟﺠﺪول ‪11-1‬ﺳ‬
‫ﺘﻮﻗﻌ ﺔ ‪ ،‬وأن اﻟﻘﻴﻢ ﻫ ﻲ ‪True‬أو ‪False ،‬وأن اﻟﻘﻴﻢ ﻣﻮﺟﻮدة أو ﻏﻴﺮ ﻣﻮﺟﻮدة ﻓ ﻲ‬
‫ﺗﻢ إرﺟﺎﻋﻬﺎﺗ ﺴﺎوي أو ﻻﺗ ﺴﺎوي اﻟﻘﻴﻢ اﻟﻤ‬

‫‪222‬اﻟﻔﺼﻞ ‪11‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪام ﻫﺬه اﻟﻄﺮق ﻓﻘﻂ ﻓ ﻲ اﻟﻔﺼﻞ اﻟﺬيﻳﺮ ث ﻣﻦ ﻏﻴﺮ اﻷﺻﺢ‬ ‫ﻗﺎﺋﻤ ﺔ‪.‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺒﺎر اﻟﻔﺼﻞ‬
‫ﺘ‬‫ﺘﺨﺪام إﺣﺪى ﻫﺬه اﻟﻄﺮق ﻓ ﻲ اﻟﻨﺺ اﻟﺨﺎدع ﻻﺧ‬
‫ﺒﺎر ‪ ،‬ﻟﺬﻟﻚ دﻋﻮﻧﺎ ﻧﻠﻘ ﻲ ﻧﻈﺮة ﻋﲆ ﻛﻴﻔﻴ ﺔ اﺳ‬
‫ﺘ‬‫‪.‬ﺣﺎﻟ ﺔ اﻻﺧ‬
‫اﻟﻔﻌﻠ ﻲ‪.‬‬

‫ﺘﺎﺣ ﺔ ﻣﻦ اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ‬


‫ﺘﺄﻛﻴﺪ اﻟﻤ‬
‫اﻟﺠﺪول ‪11-1:‬ﻃﺮق اﻟ‬

‫ﺘﺨﺪم‬
‫ﻳﺴ‬ ‫ﻃﺮﻳﻘ ﺔ‬

‫ﺗﺄﻛﻴﺪ اﻟﻤ ﺴﺎواة )أ ‪ ،‬ب(ﺗﺄﻛﻴﺪ ﻋﺪم‬ ‫ﺗﺤﻘﻖ ﻣﻦ أن أ == ب‬


‫اﻟﻤ ﺴﺎواة )أ ‪ ،‬ب(ﺗﺄﻛﻴﺪ ﺻﺤﻴﺢ )س(‬ ‫ﺗﺤﻘﻖ ﻣﻦ أن ‪a! = b‬‬

‫ﺗﺄﻛﻴﺪ ﺧﻄﺄ )س(ﺗﺄﻛﻴﺪ ﻓ ﻲ )ﻋﻨﺼﺮ ‪،‬‬ ‫ﺗﺤﻘﻖ ﻣﻦ أن ‪ x‬ﺻﺤﻴﺢ‬

‫ﻗﺎﺋﻤ ﺔ(ﺗﺄﻛﻴﺪ ﻏﻴﺮ ﻣﻮﺟﻮد )ﻋﻨﺼﺮ ‪ ،‬ﻗﺎﺋﻤ ﺔ(‬ ‫ﺗﺤﻘﻖ ﻣﻦ أن ‪x‬ﺧﻄﺄ‬

‫ﺗﺤﻘﻖ ﻣﻦ وﺟﻮد ﻫﺬا اﻟﻌﻨﺼﺮ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‬

‫ﺗﺤﻘﻖ ﻣﻦ أن ﻫﺬا اﻟﻌﻨﺼﺮ ﻟﻴ ﺲ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ‬

‫ﺒﺎر‬
‫ﺘ‬‫ﻓﺌ ﺔ ﻟﻼﺧ‬
‫ﺑﻌﺾ‬‫ﺒﺎرﺳﻠﻮك اﻟﻄﺮق ﻓ ﻲ اﻟﻔﺼﻞ‪ .‬وﻟﻜﻦ ﻫﻨﺎك‬ ‫ﺘ‬ ‫ﺜﻴﺮ ﻣﻦ ﻋﻤﻠﻚ اﺧ‬‫ﺘﻀﻤﻦ اﻟﻜ‬ ‫ﺒﺎر وﻇﻴﻔ ﺔ ‪-‬ﻳ‬‫ﺘ‬‫ﺒﺎر اﻟﻔﺼﻞ اﺧ‬‫ﺘ‬‫ﺒﻪ اﺧ‬
‫ﻳﺸ‬
‫ﺘﻄﻼﻋﺎ ت‬ ‫ً‬
‫ﻓﺼﻼ دراﺳ ًﻴﺎﻳ ﺴﺎﻋﺪ ﻓ ﻲ إدارة اﻻﺳ‬ ‫ﺒﺎرك‬‫ﺘ‬‫ﺒﺎره‪ .‬ﺿﻊ ﻓ ﻲ اﻋ‬
‫ﺘ‬ ‫ً‬
‫ﻓﺼﻼ ﻻﺧ‬ ‫ﺘﺐ‬ ‫ﺘﻼﻓﺎ ت ‪ ،‬ﻟﺬﻟﻚ دﻋﻮﻧﺎ ﻧﻜ‬‫اﻻﺧ‬
‫اﻟﻤﺠﻬﻮﻟ ﺔ‪:‬‬

‫‪Survey.py‬‬ ‫ﻓﺌ ﺔ ‪AnonymousSurvey ():‬‬


‫ﺘﻄﻼع‪"" ".‬‬
‫ﺑﺎ ت ﻣﺠﻬﻮﻟ ﺔ ﻋﲆﺳﺆال اﺳ‬
‫"""اﺟﻤﻊ إﺟﺎ‬

‫ﺗ ﻲ ‪،‬ﺳﺆال(‪:‬‬
‫__ ‪)u def __init‬ذا‬
‫ﺘﺨﺰﻳﻦ اﻟﺮدود‪"" ".‬‬
‫ﺘﻌﺪاد ﻟ‬
‫ﺗﺨﺰﻳﻦﺳﺆال واﻻﺳ‬
‫"""‬
‫ﺗ ﻲ =ﺳﺆال‬
‫اﻟ ﺴﺆال اﻟﺬا‬
‫][ = ‪self.responses‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)v def show_question‬ذا‬
‫ﺘﻄﻼع‪"" ".‬‬
‫"""إﻇﻬﺎرﺳﺆال اﻻﺳ‬
‫ﺒﺎﻋ ﺔ )ﺳﺆال(‬
‫ﻃ‬

‫‪w def store_response (self، new_response):‬‬


‫ﺘﻄﻼع‪"" ".‬‬
‫ﺑ ﺔ واﺣﺪة ﻟﻼﺳ‬
‫ﺗﺨﺰﻳﻦ إﺟﺎ‬
‫"""‬
‫)‪self.responses.append (new_response‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)x def show_results‬ذا‬
‫ﺘ ﻲﺗﻢﺗﻘﺪﻳﻤﻬﺎ‪"" ".‬‬
‫"""إﻇﻬﺎر ﻛﺎﻓ ﺔ اﻟﺮدود اﻟ‬
‫ﺘﻄﻼع‪(":‬‬
‫ﺘﺎﺋﺞ اﻻﺳ‬
‫ﺒﺎﻋ ﺔ )"ﻧ‬
‫ﻃ‬
‫ﻟﻠﺮد ﻋﲆ اﻟﺮدود‪:‬‬
‫ﺑ ﺔ(‬
‫ﺘﺠﺎ‬
‫ﺒﺎﻋ ﺔ ‪('-' +‬اﺳ‬
‫ﻃ‬

‫ﺒﺎﻋ ﺔ‬ ‫ً‬
‫ﻃﺮﻗﺎ ﻟﻄ‬ ‫ﺘﻠﻚ اﻟﻔﺼﻞ‬
‫ﺘﺨﺰﻳﻦ اﻟﺮدود‪.‬ﻳﻤ‬
‫ﺘﻀﻤﻦ ﻗﺎﺋﻤ ﺔ ﻓﺎرﻏ ﺔ ﻟ‬
‫ﺒﻴﺎنﺗﻘﺪﻣﻪ ﻟﻚ وﻳ‬
‫ﺘ‬‫ﺑ ﺴﺆال اﺳ‬‫ﺒﺪأ ﻫﺬا اﻟﻔﺼﻞ‬
‫ﻳ‬
‫ﺒﺎﻋ ﺔ ﺟﻤﻴﻊ اﻟﺮدود اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪x.‬ﻹﻧﺸﺎء‬
‫ﺑﺎ ت ‪w ،‬وﻃ‬
‫ﺑ ﺔ ﺟﺪﻳﺪة إﱃ ﻗﺎﺋﻤ ﺔ اﻹﺟﺎ‬
‫ﺘﻄﻼع ‪v ،‬وإﺿﺎﻓ ﺔ إﺟﺎ‬
‫ﺳﺆال اﻻﺳ‬
‫ﺜﻴﻞ ﻣﻦ ﻫﺬه اﻟﻔﺌ ﺔ ‪ ،‬ﻛﻞ ﻣﺎ ﻋﻠﻴﻚ‬
‫ﻣ‬

‫ﺑﻚ ‪223‬‬‫ﺒﺎر اﻟﺮﻣﺰ اﻟﺨﺎص‬


‫ﺘ‬‫اﺧ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻄﻼع ﻣﻊ ‪() ،‬‬


‫ﺘﻄﻼﻋً ﺎ ﻣﺤﺪدًا ‪،‬ﻳﻤﻜﻨﻚ ﻋﺮضﺳﺆال اﻻﺳ‬
‫ﺜﻞ اﺳ‬
‫ﺜﻴﻞﻳﻤ‬
‫ﺑﻤﺠﺮد أنﻳﻜﻮن ﻟﺪﻳﻚ ﻣ‬‫ﻳﺠ ﺐ أنﺗﻘﺪم ﻫﻮﺳﺆال‪.‬‬
‫ﺘﺨﺪام ‪show_results ().‬‬
‫ﺑﺎﺳ‬‫ﺘﺎﺋﺞ‬
‫ﺘﺨﺪام ‪store_response () ،‬وإﻇﻬﺎر اﻟﻨ‬
‫ﺑﺎﺳ‬‫ﺑﺔ‬
‫ﺗﺨﺰﻳﻦ اﻹﺟﺎ‬
‫‪show_question‬و‬

‫ﺘﺨﺪم اﻟﻔﺼﻞ‪:‬‬
‫ﺑﺮﻧﺎﻣﺠًﺎﻳ ﺴ‬‫ﺘﺐ‬
‫ﺒﺎ ت أن اﻟﻔﺼﻞ اﻟﺪراﺳ ﻲ ‪AnonymousSurvey‬ﻳﻌﻤﻞ ‪ ،‬ﻓﻠﻨﻜ‬
‫ﺛ‬‫ﻹ‬

‫ﻟﻐ ﺔ_‬ ‫ﺘﻴﺮاد ‪AnonymousSurvey‬‬


‫ﻣﻦ ﻣ ﺴﺢ اﺳ‬
‫‪Survey.py‬‬
‫ﺗﺤﺪﻳﺪﺳﺆال ‪ ،‬وإﺟﺮاء ﻣ ﺴﺢ‪.‬‬
‫‪#‬‬
‫ﺑﻬﺎﻷول ﻣﺮة؟"‬‫ﺘﺤﺪ ث‬
‫ﺘ ﻲﺗﻌﻠﻤ ﺖ اﻟ‬
‫= ‪"question‬ﻣﺎ ﻫ ﻲ اﻟﻠﻐ ﺔ اﻟ‬
‫‪)my_survey = AnonymousSurvey‬ﺳﺆال(‬

‫ﺘﺨﺰﻳﻦ اﻟﺮدود ﻋﲆ اﻟ ﺴﺆال‪.‬‬


‫ﺑ‬‫‪#‬اﻋﺮض اﻟ ﺴﺆال ‪ ،‬وﻗﻢ‬
‫)( ‪my_survey.show_question‬‬
‫ﺒﺎﻋ ﺔ )"أدﺧﻞ '‪'q‬ﻓ ﻲ أي وﻗ ﺖ ﻟﻺﻧﻬﺎء‪\ n") .‬‬
‫ﻃ‬
‫اﺣﻴﺎﻧﺎ ﺻﺤﻴﺢ‪:‬‬

‫ﺑ ﺔ =إدﺧﺎل )"اﻟﻠﻐ ﺔ‪(":‬‬


‫ﺘﺠﺎ‬
‫اﺳ‬
‫ﺑ ﺔ ‪== 'q':‬‬
‫إذا ﻛﺎﻧ ﺖ اﻹﺟﺎ‬
‫ﺘﺮاﺣ ﺔ‬
‫اﺳ‬

‫ﺑ ﺔ(‬
‫ﺘﺠﺎ‬
‫‪)my_survey.store_response‬اﺳ‬

‫ﺘﻄﻼع‪.‬‬
‫ﺘﺎﺋﺞ اﻻﺳ‬
‫‪#‬إﻇﻬﺎر ﻧ‬
‫ﺘﻄﻼع!"(‬
‫ﺒﺎﻋ ﺔ ‪("\ n‬ﺷﻜ ﺮًا ﻟﻜﻞ ﻣﻦ ﺷﺎرك ﻓ ﻲ اﻻﺳ‬
‫ﻃ‬
‫)( ‪my_survey.show_results‬‬

‫ﺑﺈﻧﺸﺎء ﻛﺎﺋﻦ ‪AnonymousSurvey‬‬‫ﺑﻬﺎ أوﻻً؟"( وﻳﻘﻮم‬‫ﺘﺤﺪ ث‬ ‫ﺒﺮﻧﺎﻣﺞﺳﺆاﻻ ً )"ﻣﺎ ﻫ ﻲ اﻟﻠﻐ ﺔ اﻟ‬


‫ﺘ ﻲﺗﻌﻠﻤ ﺖ اﻟ‬ ‫ﻳﺤﺪد ﻫﺬا اﻟ‬
‫ﺘﻼﻣﻪ‪.‬‬
‫ﺘﻢﺗﺨﺰﻳﻦ ﻛﻞ رد ﻋﻨﺪ اﺳ‬
‫ﺑﺎﻟﺮدود‪.‬ﻳ‬‫ﺛﻢﻳﻄﺎﻟ ﺐ‬‫ﺒﺮﻧﺎﻣﺞ )( ‪show_question‬ﻟﻌﺮض اﻟ ﺴﺆال‬
‫ﺘﺪﻋ ﻲ اﻟ‬
‫ﺑﻬﺬا اﻟ ﺴﺆال‪.‬ﻳ ﺴ‬
‫ﺘﻄﻼع‪:‬‬
‫ﺘﺎﺋﺞ اﻻﺳ‬
‫ﺒﻊ )( ‪show_results‬ﻧ‬
‫ﺑﺈدﺧﺎل ‪q‬ﻟﻠﺨﺮوج( ‪،‬ﻳﻄ‬‫ﺘﺨﺪم‬
‫ﺘﻢ إدﺧﺎل ﺟﻤﻴﻊ اﻟﺮدود )ﻳﻘﻮم اﻟﻤ ﺴ‬
‫ﻋﻨﺪﻣﺎﻳ‬

‫ﺑﻬﺎﻷول ﻣﺮة؟‬‫ﺘﺤﺪ ث‬
‫ﺘ ﻲﺗﻌﻠﻤ ﺖ اﻟ‬
‫ﻣﺎ ﻫ ﻲ اﻟﻠﻐ ﺔ اﻟ‬
‫أدﺧﻞ "‪"q‬ﻓ ﻲ أي وﻗ ﺖ ﻟﻺﻧﻬﺎء‪.‬‬

‫اﻟﻠﻐ ﺔ‪ :‬اﻹﻧﺠﻠﻴﺰﻳ ﺔ‬
‫ﺒﺎﻧﻴ ﺔ‬
‫اﻟﻠﻐ ﺔ‪ :‬اﻻﺳ‬
‫اﻟﻠﻐ ﺔ‪ :‬اﻹﻧﺠﻠﻴﺰﻳ ﺔ‬
‫اﻟﻠﻐ ﺔ‪ :‬اﻟﻤﺎﻧﺪرﻳﻦ‬
‫اﻟﻠﻐ ﺔ‪q :‬‬

‫ﺘﻄﻼع!‬
‫ﺷﻜﺮا ﻟﻜﻞ ﻣﻦ ﺷﺎرك ﻓ ﻲ اﻻﺳ‬
‫ﺒﺎﻧﻴ ﺔ ‪-‬اﻹﻧﺠﻠﻴﺰﻳ ﺔ‬
‫ﺘﻄﻼع‪- :‬اﻹﻧﺠﻠﻴﺰﻳ ﺔ ‪-‬اﻹﺳ‬
‫ﺘﺎﺋﺞ اﻻﺳ‬
‫ﻧ‬

‫‪-‬اﻟﻤﺎﻧﺪرﻳﻦ‬

‫‪224‬اﻟﻔﺼﻞ ‪11‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺮض أﻧﻨﺎ ﻧﺮﻳﺪﺗﺤ ﺴﻴﻦ ‪AnonymousSurvey‬واﻟﻮﺣﺪة‬


‫ﺑ ﺴﻴﻂ ﻣﺠﻬﻮل اﻟﻬﻮﻳ ﺔ‪ .‬وﻟﻜﻦ ﻟﻨﻔ‬‫ﻳﻌﻤﻞ ﻫﺬا اﻟﻔﺼﻞ ﻓ ﻲ ﻣ ﺴﺢ‬
‫ﺑ ﺔ ﻃﺮﻳﻘ ﺔ ﻟ ﺴﺮد‬
‫ﺘﺎ‬
‫ﺑ ﺔ واﺣﺪة‪.‬ﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﺜﺮ ﻣﻦ إﺟﺎ‬
‫ﺑﺈدﺧﺎل أﻛ‬‫ﺘﺨﺪم‬
‫اﻟﻨﻤﻄﻴ ﺔ اﻟﻤﻮﺟﻮدة ﻓﻴﻪ ‪ ،‬واﻟﻤ ﺴﺢ‪.‬ﻳﻤﻜﻨﻨﺎ اﻟ ﺴﻤﺎح ﻟﻜﻞ ﻣ ﺴ‬
‫ﺑ ﺔ‪.‬‬
‫ﺘ ﻲﺗﻢ ﻓﻴﻬﺎﺗﻘﺪﻳﻢ ﻛﻞ إﺟﺎ‬
‫ﺑﻼغ ﻋﻦ ﻋﺪد اﻟﻤﺮا ت اﻟ‬
‫اﻟﺮدود اﻟﻔﺮﻳﺪة ﻓﻘﻂ واﻹ‬

‫ﺘﻄﻼﻋﺎ ت ﻏﻴﺮ اﻟﻤﺠﻬﻮﻟ ﺔ‪.‬‬


‫ﺑ ﺔ ﻓﺼﻞ آﺧﺮ ﻹدارة اﻻﺳ‬
‫ﺘﺎ‬
‫ﻳﻤﻜﻨﻨﺎ ﻛ‬
‫ﺛﻴﺮ ﻋﲆ اﻟ ﺴﻠﻮك اﻟﺤﺎﻟ ﻲ‬
‫ﺘﺄ‬
‫ﺘﻐﻴﻴﺮا ت إﱃ ﺧﻄﺮ اﻟ‬
‫ﺜﻞ ﻫﺬه اﻟ‬
‫ﻗﺪﻳﺆديﺗﻨﻔﻴﺬ ﻣ‬
‫ﺑﺈدﺧﺎل ردود‬‫ﺘﺨﺪم‬
‫ﺛﻨﺎء ﻣﺤﺎوﻟ ﺔ اﻟ ﺴﻤﺎح ﻟﻜﻞ ﻣ ﺴ‬
‫ﺜﺎل ‪ ،‬ﻣﻦ اﻟﻤﻤﻜﻦ أﻧﻪ أ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﻣﻦ ﻓﺌ ﺔ ‪AnonymousSurvey.‬ﻋﲆﺳ‬
‫ﺛﻨﺎءﺗﻄﻮﻳﺮ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺮدود اﻟﻔﺮدﻳ ﺔ‪ .‬ﻟﻀﻤﺎن ﻋﺪم ﻛ ﺴﺮ اﻟ ﺴﻠﻮك اﻟﺤﺎﻟ ﻲ أ‬
‫ﺘﻌﺪدة ‪،‬ﻳﻤﻜﻨﻨﺎ ﻋﻦ ﻃﺮﻳﻖ اﻟﺨﻄﺄﺗﻐﻴﻴﺮ ﻛﻴﻔﻴ ﺔ اﻟ‬
‫ﻣ‬
‫ﺒﺎرا ت ﻟﻠﻔﺼﻞ‪.‬‬
‫ﺘ‬‫ﺑ ﺔ اﺧ‬
‫ﺘﺎ‬
‫ﻫﺬه اﻟﻮﺣﺪة ‪،‬ﻳﻤﻜﻨﻨﺎ ﻛ‬

‫ﺒﺎر ﻓﺌ ﺔ ‪AnonymousSurvey‬‬
‫ﺘ‬‫اﺧ‬
‫ﺑﻬﺎ ‪AnonymousSurvey .‬‬‫ﺘﺼﺮف‬
‫ﺘ ﻲﻳ‬
‫ﺘﺤﻘﻖ ﻣﻦ أﺣﺪ ﺟﻮاﻧ ﺐ اﻟﻄﺮﻳﻘ ﺔ اﻟ‬
‫ﺒﺎ ًراﻳ‬
‫ﺘ‬‫ﺘ ﺐ اﺧ‬
‫دﻋﻨﺎ ﻧﻜ‬
‫ﺘﺤﻘﻖ‬
‫ﺑﻊ )( ‪assertIn‬ﻟﻠ‬
‫ﺘﺎ‬
‫ﺘﺨﺪم اﻟ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬ﺳﻨ ﺴ‬‫ﺘﻄﻼع‬
‫ﺑ ﺔ واﺣﺪة ﻟ ﺴﺆال اﻻﺳ‬
‫ﺘﺤﻘﻖ ﻣﻦﺗﺨﺰﻳﻦ إﺟﺎ‬
‫ﺒﺎ ًرا ﻟﻠ‬
‫ﺘ‬‫ﺘ ﺐ اﺧ‬
‫ﺳﻨﻜ‬
‫ﺑﻌﺪﺗﺨﺰﻳﻨﻪ‪:‬‬‫ﻣﻦ وﺟﻮد اﻟﺮد ﻓ ﻲ ﻗﺎﺋﻤ ﺔ اﻟﺮدود‬

‫ﺘﺤﺎن_‬
‫اﻣ‬ ‫ﺘﻴﺮاد ‪unittest‬‬
‫اﺳ‬
‫‪Survey.py‬‬ ‫ﺘﻴﺮاد ‪AnonymousSurvey‬‬
‫ﻣﻦ ﻣ ﺴﺢ اﺳ‬

‫‪u class TestAnmyousSurvey (unittest.TestCase):‬‬


‫ﺒﺎرا ت اﻟﻔﺌ ﺔ "" "‪AnonymousSurvey‬‬
‫ﺘ‬‫"""اﺧ‬

‫‪v def test_store_single_response (self):‬‬


‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪"" " .‬‬ ‫ﺑ ﺔ واﺣﺪة‬
‫ﺒﺮﺗﺨﺰﻳﻦ إﺟﺎ‬
‫ﺘ‬‫""اﺧ‬
‫ﺑﻬﺎﻷول ﻣﺮة؟"‬‫ﺘﺤﺪ ث‬
‫ﺘ ﻲﺗﻌﻠﻤ ﺖ اﻟ‬
‫= ‪"question‬ﻣﺎ ﻫ ﻲ اﻟﻠﻐ ﺔ اﻟ‬
‫ث‬ ‫‪)my_survey = AnonymousSurvey‬ﺳﺆال(‬
‫‪")my_survey.store_response‬اﻹﻧﺠﻠﻴﺰﻳ ﺔ"(‬

‫‪x‬‬ ‫‪')self.assertIn‬اﻹﻧﺠﻠﻴﺰﻳ ﺔ'‪my_survey.responses) ،‬‬

‫)( ‪unittest.main‬‬

‫ﺒﺎر اﻟﺨﺎﺻ ﺔ‬
‫ﺘ‬‫ﺒﺎر ﻫﺎ ‪AnonymousSurvey. ،‬ﻧﻄﻠﻖ ﻋﲆ ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺘ‬‫ﺘ ﻲ ﻧﺮﻳﺪ اﺧ‬
‫ﺘﻴﺮاد اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ واﻟﻔﺌ ﺔ اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﺪأ‬
‫ﻧ‬
‫ﺒﺎر اﻷوﱃ ﻣﻦ‬
‫ﺘ‬‫ﺘﺤﻘﻖ ﻃﺮﻳﻘ ﺔ اﻻﺧ‬
‫ﺘ‬‫ﺘ ﻲﺗﺮ ث ﻣﺮة أﺧﺮى ﻣﻦ ‪unittest.TestCase u.‬ﺳ‬
‫ﺑﻨﺎ ‪TestAnonymousSurvey ،‬واﻟ‬
‫ﺘﻄﻼع‪ .‬اﺳﻢ وﺻﻔ ﻲ ﺟﻴﺪ ﻟﻬﺬه‬
‫ﺑ ﺔ ﻓ ﻲ ﻗﺎﺋﻤ ﺔ ردود اﻻﺳ‬
‫ﺑﺎﻹﺟﺎ‬‫ﺘﻬ ﻲ اﻷﻣﺮ‬
‫ﺘﻄﻼع ‪،‬ﻳﻨ‬
‫ﺑ ﺔ ﻟ ﺴﺆال اﻻﺳ‬
‫ﺘﺨﺰﻳﻦ إﺟﺎ‬
‫ﺑ‬‫أﻧﻪ ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﺒﺎر ‪ ،‬ﻓ ﺴﻨﻌﻠﻢ ﻣﻦ اﺳﻢ اﻟﻄﺮﻳﻘ ﺔ اﻟﻤﻮﺿﺢ ﻓ ﻲ‬
‫ﺘ‬‫اﻟﻄﺮﻳﻘ ﺔ ﻫﻮ ‪test_store_single_response () v.‬إذا ﻓﺸﻞ ﻫﺬا اﻻﺧ‬
‫ﺘﻄﻼع‪.‬‬
‫ﺑ ﺔ واﺣﺪة ﻟﻼﺳ‬
‫ﺘﺠﺎ‬
‫ﺒﺎر اﻟﻔﺎﺷﻞ أن ﻫﻨﺎك ﻣﺸﻜﻠ ﺔ ﻓ ﻲﺗﺨﺰﻳﻦ اﺳ‬
‫ﺘ‬‫ﻣﺨﺮﺟﺎ ت اﻻﺧ‬

‫ﺑﺎﻟ ﺴﺆال "ﻣﺎ اﻟﻠﻐ ﺔ‬ ‫ﺜﺎل ﻟﻠﻔﺼﻞ‪ .‬ﻓ ﻲ ‪w ،‬أﻧﺸﺄﻧﺎ ﻣ ً‬


‫ﺜﻴﻼﻳ ﺴﻤﻰ ‪my_survey‬‬ ‫ﺘﺎج إﱃ ﻋﻤﻞ ﻣ‬
‫ﺒﺎرﺳﻠﻮك اﻟﻔﺼﻞ ‪ ،‬ﻧﺤ‬
‫ﺘ‬‫ﻻﺧ‬
‫ﺛﻢ‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ ‪store_response () .‬‬
‫ﺑﺎﺳ‬‫ﺑﺎﻟﻠﻐ ﺔ اﻹﻧﺠﻠﻴﺰﻳ ﺔ ‪،‬‬‫ﺘﺨﺰﻳﻦ رد واﺣﺪ ‪،‬‬
‫ﺑ‬‫ﺑﻬﺎﻷول ﻣﺮة؟" ﻧﻘﻮم‬‫ﺘﺤﺪ ث‬
‫ﺘ ﻲﺗﻌﻠﻤ ﺖ اﻟ‬
‫اﻟ‬
‫ﺘﺄﻛﻴﺪ ﻋﲆ أن اﻟﻠﻐ ﺔ اﻹﻧﺠﻠﻴﺰﻳ ﺔ ﻣﻮﺟﻮدة ﻓ ﻲ اﻟﻘﺎﺋﻤ ﺔ ‪x.‬‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻣﻦ ﺧﻼل اﻟ‬‫ﺘﺤﻘﻖ ﻣﻦﺗﺨﺰﻳﻦ اﻟﺮد‬
‫ﻧ‬
‫‪my_survey.responses‬‬

‫ﺒﺎر اﻟﻜﻮد ‪225‬‬


‫ﺘ‬‫اﺧ‬
‫‪Machine Translated by Google‬‬

‫ﺒﺎر‪:‬‬
‫ﺘ‬‫ﻋﻨﺪﻣﺎ ﻧﺠﺮي ‪test_survey.py ،‬ﻳﻨﺠﺢ اﻻﺧ‬

‫‪.‬‬
‫‪-------------------------------------------------- --------------------‬‬

‫ﺛﺎﻧﻴ ﺔ‬
‫ﺒﺎر واﺣﺪ ﻓ ﻲ ‪0.001‬‬
‫ﺘ‬‫ﺗﻢ إﺟﺮاء اﺧ‬

‫ﻧﻌﻢ‬

‫ﺛﻼ ث‬‫ﺘﺤﻘﻖ ﻣﻦ أﻧﻪﻳﻤﻜﻦﺗﺨﺰﻳﻦ‬


‫ﺑ ﺔ واﺣﺪة‪ .‬دﻋﻨﺎ ﻧ‬
‫ﺜﺮ ﻣﻦ إﺟﺎ‬
‫ﺘﻄﻼع ﻣﻔﻴﺪ ﻓﻘﻂ إذا ﻛﺎنﻳﻮﻟﺪ أﻛ‬
‫ﻫﺬا ﺟﻴﺪ ‪ ،‬ﻟﻜﻦ اﻻﺳ‬
‫ﺑﺬﻟﻚ ‪ ،‬ﻧﻀﻴﻒ ﻃﺮﻳﻘ ﺔ أﺧﺮى إﱃ ‪TestAnonymousSurvey:‬‬‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪ .‬ﻟﻠﻘﻴﺎم‬‫ﺑﺎ ت‬
‫ﺘﺠﺎ‬
‫اﺳ‬

‫ﺘﻴﺮاد ‪unittest‬‬
‫اﺳ‬
‫ﺘﻴﺮاد ‪AnonymousSurvey‬‬
‫ﻣﻦ ﻣ ﺴﺢ اﺳ‬

‫ﻓﺌ ﺔ ‪TestAnonymousSurvey (unittest.TestCase):‬‬


‫ﺒﺎرا ت اﻟﻔﺌ ﺔ "" "‪AnonymousSurvey‬‬
‫ﺘ‬‫"""اﺧ‬

‫‪def test_store_single_response (self):‬‬


‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪"" " .‬‬‫ﺑ ﺔ واﺣﺪة‬
‫ﺒﺮﺗﺨﺰﻳﻦ إﺟﺎ‬
‫ﺘ‬‫""اﺧ‬
‫‪--‬ﻗﺺ‪--‬‬

‫‪def test_store_three_responses (self):‬‬


‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪"" " .‬‬‫ﺑﺎ ت ﻓﺮدﻳ ﺔ‬
‫ﺘﺠﺎ‬
‫ﺛﻼ ث اﺳ‬‫ﺒﺮﺗﺨﺰﻳﻦ‬
‫ﺘ‬‫""اﺧ‬
‫ﺑﻬﺎﻷول ﻣﺮة؟"‬‫ﺘﺤﺪ ث‬
‫ﺘ ﻲﺗﻌﻠﻤ ﺖ اﻟ‬
‫= ‪"question‬ﻣﺎ ﻫ ﻲ اﻟﻠﻐ ﺔ اﻟ‬
‫‪)my_survey = AnonymousSurvey‬ﺳﺆال(‬
‫ش‬ ‫ﺑﺎ ت ]'‪= ['English'، 'Spanish'، 'Mandarin‬‬
‫ﺘﺠﺎ‬
‫اﻻﺳ‬
‫ﻟﻠﺮد ﻋﲆ اﻟﺮدود‪:‬‬
‫ﺑ ﺔ(‬
‫ﺘﺠﺎ‬
‫‪)my_survey.store_response‬اﺳ‬

‫اﻟﺨﺎﻣ ﺲ‬
‫ﻟﻠﺮد ﻋﲆ اﻟﺮدود‪:‬‬
‫)‪self.assertIn (response، my_survey.responses‬‬

‫)( ‪unittest.main‬‬

‫ﺗﻤﺎﻣﺎ ﻛﻤﺎ ﻓﻌﻠﻨﺎ ﻓ ﻲ ‪().‬‬


‫ً‬ ‫ﺑﺈﻧﺸﺎء ﻛﺎﺋﻦ ‪sur vey‬‬‫ﻧ ﺴﻤ ﻲ اﻟﻄﺮﻳﻘ ﺔ اﻟﺠﺪﻳﺪة ‪test_store_three_responses ().‬ﻧﻘﻮم‬
‫ﺛﻢ ﻧ ﺴﻤ ﻲ )( ‪store_response‬‬
‫ﺘﻠﻔ ﺔ ‪u ،‬‬
‫ﺛ ﺔ ردود ﻣﺨ‬
‫ﺛﻼ‬‫ﺘﻮي ﻋﲆ‬
‫‪test_store_single_response‬ﻧﺤﺪد ﻗﺎﺋﻤ ﺔﺗﺤ‬

‫ﺘ ﺐ ﺣﻠﻘ ﺔ أﺧﺮى وﻧﺆﻛﺪ أن ﻛﻞ رد ﻣﻮﺟﻮد اﻵن ﻓ ﻲ ‪my_survey.responses v.‬‬


‫ﺑﻤﺠﺮدﺗﺨﺰﻳﻦ اﻟﺮدود ‪ ،‬ﻧﻜ‬‫ﻟﻜﻞ ﻣﻦ ﻫﺬه اﻟﺮدود‪.‬‬

‫ﺑ ﺔ واﺣﺪة و‬
‫ﺘﺠﺎ‬
‫ﺒﺎرﻳﻦ )ﻻﺳ‬
‫ﺘ‬‫ﻋﻨﺪﻣﺎ ﻧﺠﺮي ‪test_survey.py‬ﻣﺮة أﺧﺮى ‪ ،‬ﻓﺈن ﻛﻼ اﻻﺧ‬
‫ﺘﻴﺎز‪:‬‬
‫ﺛ ﺔ ردود( اﺟ‬
‫ﺜﻼ‬‫ﻟ‬

‫‪..‬‬
‫‪-------------------------------------------------- --------------------‬‬

‫ﺛﺎﻧﻴ ﺔ‬
‫ﺒﺎرا ت ﻓ ﻲ ‪0.000‬‬
‫ﺘ‬‫ﺗﻢ إﺟﺮاء ‪2‬اﺧ‬

‫ﻧﻌﻢ‬

‫ﺑﺬﻟﻚ‬‫ﺑﻌﺾ اﻟﺸ ﻲء ‪ ،‬ﻟﺬﻟﻚﺳﻨﻘﻮم‬‫ﺘﻜﺮرة‬


‫ﺒﺎرا ت ﻣ‬
‫ﺘ‬‫ﺜﺎﻟ ﻲ‪ .‬وﻣﻊ ذﻟﻚ ‪ ،‬ﻓﺈن ﻫﺬه اﻻﺧ‬
‫ﺑﺸﻜﻞ ﻣ‬‫ﻫﺬاﻳﻌﻤﻞ‬
‫ﺜﺮ ﻛﻔﺎءة‪.‬‬
‫ﺘﺨﺪم ﻣﻴﺰة أﺧﺮى ﻏﻴﺮ ﻣﻼﺋﻤ ﺔ ﻟﺠﻌﻠﻬﺎ أﻛ‬
‫اﺳ‬

‫‪226‬اﻟﻔﺼﻞ ‪11‬‬
‫‪Machine Translated by Google‬‬

‫ﻃﺮﻳﻘ ﺔ )( ‪setUp‬‬
‫ﺑﺎ ت ﺟﺪﻳﺪة‬
‫ﺘﺠﺎ‬
‫ﺑﺈﻧﺸﺎء اﺳ‬‫ﺒﺎر ‪ ،‬وﻗﻤﻨﺎ‬
‫ﺘ‬ ‫ﻓ ﻲ ‪test_survey.py‬أﻧﺸﺄﻧﺎ ﻣ ً‬
‫ﺜﻴﻼ ﺟﺪﻳﺪًا ﻣﻦ ‪AnonymousSurvey‬ﻓ ﻲ ﻛﻞ ﻃﺮﻳﻘ ﺔ اﺧ‬
‫ﻓ ﻲ ﻛﻞ ﻃﺮﻳﻘ ﺔ‪ .‬اﻟﻮﺣﺪة اﻟﻮﺣﻴﺪة‬
‫ﺒﺎر‬
‫ﺘ‬‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ ﻛﻞ ﻣﻦ ﻃﺮق اﻻﺧ‬
‫ﺛﻢ اﺳ‬‫ﺑﺈﻧﺸﺎء ﻫﺬه اﻟﻜﺎﺋﻨﺎ ت ﻣﺮة واﺣﺪة‬‫ﺘ ﻲﺗ ﺴﻤﺢ ﻟﻚ‬
‫ﺘﻮي ‪class‬ﻋﲆ ﻃﺮﻳﻘ ﺔ )( ‪setUp‬اﻟ‬
‫ﻳﺤ‬
‫ﺘﻀﻤﻴﻦ )( ‪setUp‬‬
‫ﺑ‬‫ﺑﻚ‪ .‬ﻋﻨﺪﻣﺎﺗﻘﻮم‬‫اﻟﺨﺎﺻ ﺔ‬
‫ﺑﺪءًا ﻣﻦ ‪test_.‬أي ﻛﺎﺋﻨﺎ تﺗﻢ‬‫ﺒﻞﺗﺸﻐﻴﻞ ﻛﻞ ﻃﺮﻳﻘ ﺔ‬
‫ﺘﺸﻐﻴﻞ ﻃﺮﻳﻘ ﺔ )( ‪setUp‬ﻗ‬
‫ﺑ‬‫ﺗﻘﻮم ‪Python‬‬
‫ﻓ ﻲ ﻓﺌ ﺔ ‪TestCase ،‬‬
‫ﺒﻬﺎ‪.‬‬
‫ﺘ‬‫ﺒﺎرﺗﻜ‬
‫ﺘ‬‫ﺘﺎﺣ ﺔ ﻓ ﻲ ﻛﻞ ﻃﺮﻳﻘ ﺔ اﺧ‬
‫ﺗﻜﻮن ﻣ‬
‫إﻧﺸﺎؤ ﻫﺎ ﻓ ﻲ ﻃﺮﻳﻘ ﺔ )( ‪setUp‬‬

‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ )(‬
‫ﺘ ﻲﻳﻤﻜﻦ اﺳ‬
‫ﺘﻄﻼع وﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﺮدود اﻟ‬
‫ﺜﻴﻞ اﺳ‬
‫ﺘﺨﺪم )( ‪setUp‬ﻹﻧﺸﺎء ﻣ‬
‫ﻟﻨ ﺴ‬
‫‪test_store_single_response‬و ‪test_store_three_responses ():‬‬

‫ﺘﻴﺮاد ‪unittest‬‬
‫اﺳ‬
‫ﺘﻴﺮاد ‪AnonymousSurvey‬‬
‫ﻣﻦ ﻣ ﺴﺢ اﺳ‬

‫ﻓﺌ ﺔ ‪TestAnonymousSurvey (unittest.TestCase):‬‬


‫ﺒﺎرا ت اﻟﻔﺌ ﺔ "" "‪AnonymousSurvey.‬‬
‫ﺘ‬‫"""اﺧ‬

‫ﺗ ﻲ(‪:‬‬
‫ﺗﻌﻴﻴﻦ ‪)def setUp‬ذا‬
‫""‬

‫ﺒﺎر‪.‬‬
‫ﺘ‬‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ ﺟﻤﻴﻊ ﻃﺮق اﻻﺧ‬
‫ﺘﻄﻼع وﻣﺠﻤﻮﻋ ﺔ ﻣﻦ اﻟﺮدود ﻻﺳ‬
‫ﺑﺈﻧﺸﺎء اﺳ‬‫ﻗﻢ‬
‫""‬

‫ﺑﻬﺎﻷول ﻣﺮة؟"‬‫ﺘﺤﺪ ث‬
‫ﺘ ﻲﺗﻌﻠﻤ ﺖ اﻟ‬
‫= ‪"question‬ﻣﺎ ﻫ ﻲ اﻟﻠﻐ ﺔ اﻟ‬
‫اﻷﺷﻌ ﺔ ﻓﻮق‬
‫‪)self.my_survey = AnonymousSurvey‬ﺳﺆال(‬
‫ﺒﻨﻔ ﺴﺠﻴ ﺔ‬
‫اﻟ‬
‫]'‪self.responses = ['English'، 'Spanish'، 'Mandarin‬‬

‫‪def test_store_single_response (self):‬‬


‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪"" " .‬‬‫ﺑ ﺔ واﺣﺪة‬
‫ﺒﺮﺗﺨﺰﻳﻦ إﺟﺎ‬
‫ﺘ‬‫""اﺧ‬
‫)]‪self.my_survey.store_response (self.responses [0‬‬
‫)‪self.assertIn (self.responses [0]، self.my_survey.responses‬‬

‫‪def test_store_three_responses (self):‬‬


‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪"" " .‬‬‫ﺑﺎ ت ﻓﺮدﻳ ﺔ‬
‫ﺘﺠﺎ‬
‫ﺛﻼ ث اﺳ‬‫ﺒﺮﺗﺨﺰﻳﻦ‬
‫ﺘ‬‫""اﺧ‬
‫ﺗﻴ ﺔ‪:‬‬
‫ﺑﺎ ت اﻟﺬا‬
‫ﺘﺠﺎ‬
‫ﻟﻠﺮد ﻓ ﻲ اﻻﺳ‬
‫ﺑ ﺔ(‬
‫ﺘﺠﺎ‬
‫‪)self.my_survey.store_response‬اﺳ‬
‫ﺗﻴ ﺔ‪:‬‬
‫ﺑﺎ ت اﻟﺬا‬
‫ﺘﺠﺎ‬
‫ﻟﻠﺮد ﻓ ﻲ اﻻﺳ‬
‫)‪self.assertIn (response، self.my_survey.responses‬‬

‫)( ‪unittest.main‬‬

‫ﺑﺈﻧﺸﺎء ﻗﺎﺋﻤ ﺔ ﻣﻦ اﻟﺮدود ‪v.‬ﻛﻞ واﺣﺪة ﻣﻦ‬‫ﺗﻘﻮم‬


‫ﺒﻴﺎن ‪u ،‬و‬
‫ﺘ‬‫ﺜﻴﻞ اﺳ‬
‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﺑﺄﻣﺮﻳﻦ‪:‬ﺗﻘﻮم‬
‫ﺗﻘﻮم اﻟﻄﺮﻳﻘ ﺔ )( ‪setUp‬‬
‫ﺜﺮ‬
‫ﺒﺎر أﻛ‬
‫ﺘ‬‫ﺘﻴﻦ اﻻﺧ‬
‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ أي ﻣﻜﺎن ﻓ ﻲ اﻟﻔﺼﻞ‪ .‬ﻫﺬاﻳﺠﻌﻞ ﻃﺮﻳﻘ‬
‫ﺑﺤﻴ ﺚﻳﻤﻜﻦ اﺳ‬‫ﺒﻞ اﻟﺬا ت ‪،‬‬
‫ﺒﻮﻗ ﺔ ﻣﻦ ﻗ‬
‫ﻫﺬه ﻣ ﺴ‬
‫ﺑ ﺔ‪.‬‬
‫ﺘﺠﺎ‬
‫ﺜﻴﻞ ﻣ ﺴﺢ أو اﺳ‬
‫ﺘﻌﻴﻦ ﻋﲆ أي ﻣﻨﻬﻤﺎ إﺟﺮاء ﻣ‬
‫ﺑ ﺴﺎﻃ ﺔ ‪،‬ﻷﻧﻪ ﻻﻳ‬

‫ﺑ ﺔ اﻷوﱃ ﻓ ﻲ ‪- self.Responses [0] -‬‬


‫ﺘﺠﺎ‬
‫ﺘﺤﻘﻖ اﻷﺳﻠﻮ ب )( ‪test_store_single_response‬ﻣﻦ أن اﻻﺳ‬
‫ﻳ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪ ،‬و _‪test_store‬‬‫‪self.Responses‬ﻳﻤﻜﻦﺗﺨﺰﻳﻨﻬﺎ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬
‫ﺛ ﺔ ﻓ ﻲ ‪self.Responses‬‬
‫ﺜﻼ‬‫ﺑﺎ ت اﻟ‬
‫ﺘﺠﺎ‬
‫ﺘﺤﻘﻖ )( ‪single_response‬ﻣﻦ أﻧﻪﻳﻤﻜﻦﺗﺨﺰﻳﻦ ﺟﻤﻴﻊ اﻻﺳ‬
‫ﻳ‬

‫ﺑﺸﻜﻞ‬‫ﺒﺎرا ت ﻣﻔﻴﺪة‬
‫ﺘ‬‫ﺘﻜﻮن ﻫﺬه اﻻﺧ‬
‫ﺘﺎزان‪.‬ﺳ‬
‫ﺒﺎرﻳﻦﻳﺠ‬
‫ﺘ‬‫ﻋﻨﺪﻣﺎ ﻧﺠﺮي ‪test_survey.py‬ﻣﺮة أﺧﺮى ‪ ،‬ﻻﻳﺰال ﻛﻼ اﻻﺧ‬
‫ﺒﻮل‬
‫ﺑﻌﺪﺗﻌﺪﻳﻞ اﻟﻜﻮد ﻟﻘ‬‫ﺘﻌﺪدة ﻟﻜﻞ ﺷﺨﺺ‪.‬‬
‫ﺑﺎ ت ﻣ‬
‫ﺘﺠﺎ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ اﺳ‬
‫ﺧﺎص ﻋﻨﺪ ﻣﺤﺎوﻟ ﺔﺗﻮﺳﻴﻊ ‪AnonymousSurvey‬ﻟﻠ‬
‫ﺘﻌﺪدة‬
‫ﻣ‬

‫ﺒﺎر اﻟﻜﻮد ‪227‬‬


‫ﺘ‬‫اﺧ‬
‫‪Machine Translated by Google‬‬

‫ﺛﺮ ﻋﲆ اﻟﻘﺪرة ﻋﲆﺗﺨﺰﻳﻦ رد واﺣﺪ أوﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟﺮدود اﻟﻔﺮدﻳ ﺔ‪.‬‬


‫ﺘﺄﻛﺪ ﻣﻦ أﻧﻚ ﻟﻢﺗﺆ‬
‫ﺒﺎرا ت واﻟ‬
‫ﺘ‬‫اﻟﺮدود ‪،‬ﻳﻤﻜﻨﻚ إﺟﺮاء ﻫﺬه اﻻﺧ‬

‫ﺑ ﺔ‪.‬‬
‫ﺘﺎ‬
‫ﺒﺎر أﺳﻬﻞ ﻓ ﻲ اﻟﻜ‬
‫ﺘ‬‫ﺑﻚ ‪،‬ﻳﻤﻜﻦ ﻟﻄﺮﻳﻘ ﺔ )( ‪setUp‬أنﺗﺠﻌﻞ ﻃﺮق اﻻﺧ‬‫ﺒﺮ اﻟﻔﺼﻮل اﻟﺪراﺳﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘ‬‫ﻋﻨﺪﻣﺎﺗﺨ‬
‫ﺒﺎر‬
‫ﺘ‬‫ﺘﺨﺪم ﻫﺬه اﻟﺤﺎﻻ ت ﻓ ﻲ ﺟﻤﻴﻊ ﻃﺮق اﻻﺧ‬
‫ﺛﻢﺗ ﺴ‬
‫ﺜﻴﻼ ت و ‪Attri butes‬ﻓ ﻲ )( ‪setUp‬‬
‫ﺑﻌﻤﻞ ﻣﺠﻤﻮﻋ ﺔ واﺣﺪة ﻣﻦ اﻟﻤ‬‫ﺗﻘﻮم‬
‫ﺒﺎر‪.‬‬
‫ﺘ‬‫ﺜﻠ ﺔ واﻟ ﺴﻤﺎ ت ﻓ ﻲ ﻛﻞ ﻃﺮﻳﻘ ﺔ اﺧ‬
‫ﺜﻴﺮ ﻣﻦ إﻧﺸﺎء ﻣﺠﻤﻮﻋ ﺔ ﺟﺪﻳﺪة ﻣﻦ اﻷﻣ‬
‫ﺑﻜ‬‫ﺑﻚ‪ .‬ﻫﺬا أﺳﻬﻞ‬‫اﻟﺨﺎﺻ ﺔ‬

‫ﺒﺎر وﺣﺪة ﻛﻤﺎ ﻫﻮ‬


‫ﺘ‬ ‫ﺒﻊ ‪ً Python‬‬
‫ﺣﺮﻓﺎ واﺣﺪًا ﻟﻜﻞ اﺧ‬ ‫ﺒﺎر ‪،‬ﺗﻄ‬
‫ﺘ‬‫ﻣﺎﻟﺤﻈ ﺔ ﻋﻨﺪﺗﺸﻐﻴﻞ ﺣﺎﻟ ﺔ اﺧ‬
‫ﺘﺞ ﻋﻨﻪﺗﺄﻛﻴﺪ ﻓﺎﺷﻞ‬
‫ﺒﺎر اﻟﺬيﻳﻨ‬
‫ﺘ‬‫ﺒﻊ اﻻﺧ‬
‫ﺒﻊ ﺣﺮف ‪E ،‬وﻳﻄ‬
‫ﺘﺞ ﻋﻨﻪ ﺧﻄﺄﻳﻄ‬
‫ﺒﺎر اﻟﺬيﻳﻨ‬
‫ﺘ‬‫ﺒﺎر اﻟﻨﺎﺟﺢ ﻧﻘﻄ ﺔ ‪ ،‬واﻻﺧ‬
‫ﺘ‬‫ﺒﻊ اﻻﺧ‬
‫ﺘﻤﻞ‪.‬ﻳﻄ‬
‫ﻣﻜ‬
‫ﺒﺎر‬
‫ﺘ‬ ‫ﺘﻠ ًﻔﺎ ﻣﻦ اﻟﻨﻘﺎط واﻷﺣﺮف ﻓ ﻲ اﻟ ﺴﻄﺮ اﻷول ﻣﻦ اﻟﻨﺎ‬
‫ﺗﺞ ﻋﻨﺪﺗﺸﻐﻴﻞ ﺣﺎﻻ ت اﻻﺧ‬ ‫ﺘﺮى ﻋﺪدًا ﻣﺨ‬
‫ﺒ ﺐﺳ‬
‫اﻟﺤﺮف ‪F.‬وﻟﻬﺬا اﻟ ﺴ‬
‫ﺑﻚ‪.‬‬‫اﻟﺨﺎﺻ ﺔ‬
‫ﺒﺎرا ت اﻟﻮﺣﺪة ‪ ،‬ﻓﻴﻤﻜﻨﻚ‬
‫ﺘ‬‫ﺘﻮاﺋﻬﺎ ﻋﲆ اﻟﻌﺪﻳﺪ ﻣﻦ اﺧ‬ ‫ﺘًﺎ ﻃﻮﻳ ﻼ ً ﻟﻠ‬
‫ﺘﺸﻐﻴﻞ ﻧﻈ ﺮًا ﻻﺣ‬ ‫ﺘﻐﺮق وﻗ‬
‫ﺒﺎرﺗ ﺴ‬
‫ﺘ‬‫إذا ﻛﺎﻧ ﺖ ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺘﻴﺎز ﻫﺎ‪.‬‬
‫ﺘ ﻲﺗﻢ اﺟ‬
‫ﺒﺎرا ت اﻟ‬
‫ﺘ‬‫ﺘﻌﺮف ﻋﲆ ﻋﺪد اﻻﺧ‬
‫ﺘﺎﺋﺞ ﻟﻠ‬
‫ﻣﺸﺎ ﻫﺪة ﻫﺬه اﻟﻨ‬

‫ﺑﻨﻔ ﺴﻚ‬‫ﺑﻬﺎ‬
‫ﺟﺮ‬

‫ﺘ ﺐ ﻓﺌ ﺔﺗ ﺴﻤﻰ اﻟﻤﻮﻇﻒ‪.‬ﻳﺠ ﺐ أنﺗﺄﺧﺬ ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬اﻻﺳﻢ اﻷول واﻻﺳﻢ اﻷﺧﻴﺮ‬


‫‪11-3.‬اﻟﻤﻮﻇﻒ‪ :‬اﻛ‬
‫ﺗﺐ‬
‫ﺗﻀﻴﻒ ‪5000‬دوﻻر إﱃ اﻟﺮا‬
‫ﺑﺎﺳﻢ )( ‪give_raise‬‬‫ﺘ ﺐ ﻋﻤﻠﻴ ﺔ‬
‫ﺗﺨﺰﻳﻦ ﻛﻞ ﻣﻨﻬﺎ ﻛ ﺴﻤﺎ ت‪ .‬اﻛ‬
‫ﺗ ﺐ اﻟ ﺴﻨﻮي و‬
‫واﻟﺮا‬
‫ﺘﻠﻒ‪.‬‬
‫ﺒﻠﻎ زﻳﺎدة ﻣﺨ‬ ‫ﺒﻞ أ ً‬
‫ﻳﻀﺎ ﻣ‬ ‫ﺘﺮاﺿ ًﻴﺎ وﻟﻜﻨﻬﺎﺗﻘ‬
‫اﻟ ﺴﻨﻮي اﻓ‬

‫ﺒﺎر ‪test_give_ ،‬‬


‫ﺘ‬‫ﺘﻴﻦ ﻟﻼﺧ‬
‫ﺘ ﺐ ﻃﺮﻳﻘ‬
‫ﺒﺎر ﻟﻠﻤﻮﻇﻒ ‪ .‬اﻛ‬
‫ﺘ‬‫ﺘ ﺐ ﺣﺎﻟ ﺔ اﺧ‬
‫اﻛ‬
‫ﺜﻴﻞ‬
‫ﺘﻰ ﻻﺗﻀﻄﺮ إﱃ إﻧﺸﺎء ﻣ‬
‫ﺘﺨﺪم ﻃﺮﻳﻘ ﺔ )( ‪setUp‬ﺣ‬
‫)( ‪default_raise‬و ‪test_give_custom_raise ().‬اﺳ‬
‫ﺒﺎرﻳﻦ‪.‬‬
‫ﺘ‬‫ﺘﻴﺎز ﻛﻼ اﻻﺧ‬
‫ﺗﺄﻛﺪ ﻣﻦ اﺟ‬
‫ﺑﻚ ‪ ،‬و‬‫ﺒﺎر اﻟﺨﺎﺻ ﺔ‬
‫ﺘ‬‫ﺘﺸﻐﻴﻞ ﺣﺎﻟ ﺔ اﻻﺧ‬
‫ﺑ‬‫ﺒﺎر‪ .‬ﻗﻢ‬
‫ﺘ‬‫ﻣﻮﻇﻒ ﺟﺪﻳﺪ ﻓ ﻲ ﻛﻞ ﻃﺮﻳﻘ ﺔ اﺧ‬

‫ﻣﻠﺨﺺ‬
‫ﺑﺔ‬‫ﺘﺎ‬
‫ﺘﺨﺪام اﻷدوا ت ﻓ ﻲ اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ ﻛ‬
‫ﺑﺎﺳ‬ ‫ﺒﺎرا ت ﻟﻠﻮﻇﺎﺋﻒ واﻟﻔﺌﺎ ت‬
‫ﺘ‬‫ﺑ ﺔ اﺧ‬
‫ﺘﺎ‬
‫ﺗﻌﻠﻤ ﺖ ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ﻛ‬
‫ﺘﺤﻘﻖ ﻣﻦﺳﻠﻮﻛﻴﺎ ت ﻣﻌﻴﻨ ﺔﻳﺠ ﺐ أنﺗﻈﻬﺮ ﻫﺎ‬ ‫ﺒﺎرﺗ‬‫ﺘ‬‫ﺑ ﺔ ﻃﺮق اﺧ‬
‫ﺘﺎ‬
‫ﺗﻌﻠﻤ ﺖ ﻛ‬ ‫ﻓﺼﻞ دراﺳ ﻲﻳﺮ ث ﻣﻦ ‪unittest.TestCase ،‬و‬

‫ﺘﻲ‬
‫ﺑﻚ واﻟ‬‫ﺑﻜﻔﺎءة ﻣﻦ اﻟﻔﺌﺎ ت اﻟﺨﺎﺻ ﺔ‬‫ﺜﻴﻼ ت وﺳﻤﺎ ت‬
‫ﺘﺨﺪام ﻃﺮﻳﻘ ﺔ )( ‪setUp‬ﻹﻧﺸﺎء ﻣ‬
‫وﻇﺎﺋﻔﻚ وﻓﺼﻮﻟﻚ‪ .‬ﻟﻘﺪﺗﻌﻠﻤ ﺖ اﺳ‬
‫ﺒﺎر ﻟﻠﻔﺼﻞ اﻟﺪراﺳ ﻲ‪.‬‬
‫ﺘ‬‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ ﺟﻤﻴﻊ ﻃﺮق اﻻﺧ‬
‫ﻳﻤﻜﻦ اﺳ‬

‫ﺒ ﺴﻴﻄ ﺔ‬
‫ﺒﺎرا ت ﻟﺠﻤﻴﻊ اﻟﻤﺸﺎرﻳﻊ اﻟ‬
‫ﺘ‬‫ﺑ ﺔ اﺧ‬
‫ﺘﺎ‬
‫ﺘﺪﺋﻴﻦ‪ .‬ﻟ ﺴ ﺖ ﻣﻀﻄ ﺮًا ﻟﻜ‬
‫ﺒ‬‫ﺜﻴﺮ ﻣﻦ اﻟﻤ‬
‫ﺘﻌﻠﻤﻪ اﻟﻜ‬
‫ﻣﻬﻤﺎ ﻻﻳ‬
‫ً‬ ‫ﺒﺎر ﻣﻮﺿﻮﻋً ﺎ‬
‫ﺘ‬‫ﻳﻌﺪ اﻻﺧ‬
‫ﺒﺮ‬
‫ﺘ‬‫ﺒﻴﺮة ‪،‬ﻳﺠ ﺐ أنﺗﺨ‬
‫ﺘ ﻲﺗﻨﻄﻮي ﻋﲆ ﺟﻬﻮد إﻧﻤﺎﺋﻴ ﺔ ﻛ‬
‫ﺒﺪأ اﻟﻌﻤﻞ ﻓ ﻲ اﻟﻤﺸﺎرﻳﻊ اﻟ‬
‫ﺑﻤﺠﺮد أنﺗ‬‫ﺘﺪئ‪ .‬وﻟﻜﻦ‬
‫ﺒ‬‫ﺑﻬﺎ ﻛﻤ‬
‫ﺘ ﻲﺗﺠﺮ‬
‫اﻟ‬
‫اﻟ ﺴﻠﻮﻛﻴﺎ ت اﻟﺤﺮﺟ ﺔ ﻟﻮﻇﺎﺋﻔﻚ وﻓﺼﻮﻟﻚ‪.‬‬

‫ﺘ ﻲﺗﻌﻤﻞ ‪ ،‬و ﻫﺬاﺳﻴﻤﻨﺤﻚ ﺣﺮﻳ ﺔ إﺟﺮاءﺗﺤ ﺴﻴﻨﺎ ت‬


‫ﺛﻘ ﺔ ﻓ ﻲ أن اﻟﻌﻤﻞ اﻟﺠﺪﻳﺪ ﻓ ﻲ ﻣﺸﺮوﻋﻚ ﻟﻦﻳﻜ ﺴﺮ اﻷﺟﺰاء اﻟ‬‫ﺜﺮ‬
‫ﺘﻜﻮن أﻛ‬
‫ﺳ‬
‫ﺘﻌﺮف ﻋﲆ اﻟﻔﻮر ‪ ،‬ﻟﺬﻟﻚ ﻻﻳﺰال‬
‫ﺑﻚ‪ .‬إذا ﻋﻄﻠ ﺖ اﻟﻮﻇﻴﻔ ﺔ اﻟﺤﺎﻟﻴ ﺔ ﻋﻦ ﻃﺮﻳﻖ اﻟﺨﻄﺄ ‪ ،‬ﻓ ﺴ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﻋﲆ اﻟ‬
‫ﺘﺨﺪم ﻏﻴﺮ‬
‫ﺜﻴﺮ ﻣﻦ اﻟﺮد ﻋﲆﺗﻘﺮﻳﺮ ﺧﻄﺄ ﻣﻦ ﻣ ﺴ‬
‫ﺑﻜ‬‫ﺘﻪ أﺳﻬﻞ‬
‫ﺒﺎر ﻓﺎﺷﻞ أﺟﺮﻳ‬
‫ﺘ‬‫ﺑ ﺔ ﻻﺧ‬
‫ﺘﺠﺎ‬
‫ﺑ ﺴﻬﻮﻟ ﺔ‪.‬ﺗﻌﺪ اﻻﺳ‬‫ﺑﺈﻣﻜﺎﻧﻚ ﺣﻞ اﻟﻤﺸﻜﻠ ﺔ‬
‫ﺳﻌﻴﺪ‪.‬‬

‫‪228‬اﻟﻔﺼﻞ ‪11‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﺮ ﻓ ﻲ‬
‫ﺑﺮاﺣ ﺔ أﻛ‬‫ﺒﺎرا ت اﻷوﻟﻴ ﺔ‪.‬ﺳﻴﺸﻌﺮون‬
‫ﺘ‬‫ﺑﻌﺾ اﻻﺧ‬‫ﺘﻀﻤﻴﻦ‬
‫ﺑ‬‫ﺜﺮ إذا ﻗﻤ ﺖ‬
‫ﺒﺮﻣﺠﻮن اﻵﺧﺮون ﻣﺸﺎرﻳﻌﻚ أﻛ‬
‫ﺘﺮم اﻟﻤ‬
‫ﻳﺤ‬
‫ﺘﻌﺪادًا ﻟﻠﻌﻤﻞ ﻣﻌﻚ ﻓ ﻲ اﻟﻤﺸﺎرﻳﻊ‪ .‬إذا ﻛﻨ ﺖﺗﺮﻏ ﺐ ﻓ ﻲ اﻟﻤ ﺴﺎ ﻫﻤ ﺔ ﻓ ﻲ ﻣﺸﺮوع‬
‫ﺜﺮ اﺳ‬
‫ﺑﻚ وﺳﻴﻜﻮﻧﻮن أﻛ‬‫ﺑ ﺔ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺗﺠﺮ‬
‫ﺑﺔ‬
‫ﺘﺎ‬ ‫ً‬
‫ﻋﺎدة ﻛ‬ ‫ﺘﻮﻗﻊ ﻣﻨﻚ‬
‫ﺒﺎرا ت اﻟﺤﺎﻟﻴ ﺔ ‪ ،‬وﻳ‬
‫ُ‬ ‫ﺘ‬‫ﺘﺎز اﻻﺧ‬ ‫ُﻈﻬﺮ أن ﺷﻔﺮ‬
‫ﺗﻚﺗﺠ‬ ‫ﺘﻮﻗﻊ أنﺗ‬
‫ﺒﺮﻣﺠﻮن آﺧﺮون ‪ ،‬ﻓﻤﻦ اﻟﻤ‬
‫ﻳﻌﻤﻞ ﻋﻠﻴﻪ ﻣ‬
‫ﺒﺎرا ت ﻟﻠ ﺴﻠﻮك اﻟﺠﺪﻳﺪ اﻟﺬيﺗﻘﺪﻣﻪ إﱃ اﻟﻤﺸﺮوع‪.‬‬
‫ﺘ‬‫اﺧ‬

‫ﺒﺎرا تﻷ ﻫﻢﺳﻠﻮﻛﻴﺎ ت وﻇﺎﺋﻔﻚ وﻓﺼﻮﻟﻚ ‪،‬‬


‫ﺘ‬‫ﺘ ﺐ اﺧ‬
‫ﺑﻚ‪ .‬اﻛ‬‫ﺒﺎر اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺘ‬‫ﺘﻌﺮف ﻋﲆ ﻋﻤﻠﻴ ﺔ اﺧ‬
‫ﺘ‬‫ﺒﺎرا ت ﻟ‬
‫ﺘ‬‫ﺑﺎﻻﺧ‬‫ﺗﻼﻋ ﺐ‬
‫ﺑﺬﻟﻚ‪.‬‬‫ﺒ ﺐ ﻣﺤﺪد ﻟﻠﻘﻴﺎم‬
‫ﺒﻜﺮة ﻣﺎ ﻟﻢﻳﻜﻦ ﻟﺪﻳﻚﺳ‬
‫ﺘﻐﻄﻴ ﺔ اﻟﻜﺎﻣﻠ ﺔ ﻓ ﻲ اﻟﻤﺸﺎرﻳﻊ اﻟﻤ‬
‫ﻟﻜﻦ ﻻﺗﻬﺪف إﱃ اﻟ‬

‫ﺑﻚ ‪229‬‬‫ﺒﺎر اﻟﻜﻮد اﻟﺨﺎص‬


‫ﺘ‬‫اﺧ‬
Machine Translated by Google
‫‪Machine Translated by Google‬‬

‫ﺜﺎﻧ ﻲ‬
‫اﻟﺠﺰء اﻟ‬
‫‪Proje cts‬‬

‫ﺑﻨﺎء ﻣﺸﺎرﻳﻊﺗﻔﺎﻋﻠﻴ ﺔ وذا ت ﻣﻐﺰى‪.‬‬‫ﺒﺪء‬


‫ﺗﻬﺎﻧﻴﻨﺎ! أﻧ ﺖﺗﻌﺮف اﻵن ﻣﺎﻳﻜﻔ ﻲ ﻋﻦ ‪Python‬ﻟ‬

‫ﺗﺮﺳﻴﺦ ﻓﻬﻤﻚ ﻟﻠﻤﻔﺎ ﻫﻴﻢ‬


‫ﺳﻴﺆدي إﻧﺸﺎء ﻣﺸﺎرﻳﻌﻚ اﻟﺨﺎﺻ ﺔ إﱃﺗﻌﻠﻴﻤﻚ ﻣﻬﺎرا ت ﺟﺪﻳﺪة و‬
‫اﻟﻤﻘﺪﻣ ﺔ ﻓ ﻲ اﻟﺠﺰء اﻷول‪.‬‬

‫ﺗﻴ ﺐ‬
‫ﺘﺮ‬‫ﺑﺎﻟ‬‫ﺑﺄي ﻣﻦ ﻫﺬه اﻟﻤﺸﺎرﻳﻊ أو ﺟﻤﻴﻌﻬﺎ‬‫ﺘﻴﺎر اﻟﻘﻴﺎم‬
‫ﺛ ﺔ أﻧﻮاع ﻣﻦ اﻟﻤﺸﺎرﻳﻊ ‪ ،‬وﻳﻤﻜﻨﻚ اﺧ‬
‫ﺛﻼ‬‫ﺜﺎﻧ ﻲ ﻋﲆ‬
‫ﺘﻮي اﻟﺠﺰء اﻟ‬
‫ﻳﺤ‬
‫ﺒﺤ ﺚ ﻓﻴﻪ أوﻻً‪.‬‬
‫ﺗﻚ ﻓ ﻲﺗﺤﺪﻳﺪ أي ﻣﺸﺮوعﺗﺮﻳﺪ اﻟ‬
‫اﻟﺬيﺗﺮﻳﺪه‪ .‬ﻓﻴﻤﺎﻳﻠ ﻲ وﺻﻒ ﻣﻮﺟﺰ ﻟﻜﻞ ﻣﺸﺮوع ﻟﻤ ﺴﺎﻋﺪ‬

‫ﺜﻮن‬
‫ﺑﻴ‬‫ﺒﺔ‬
‫ﺒ ﻲ‪ :‬ﺻﻨﻊ ﻟﻌ‬
‫اﻟﻐﺰو اﻷﺟﻨ‬

‫ﺑﻌﺎدﻳﻜﻮن‬
‫ﺛﻨﺎﺋﻴ ﺔ اﻷ‬‫ﺒﺔ‬
‫ﺘﻄﻮﻳﺮ ﻟﻌ‬
‫ﺘﺨﺪم ﺣﺰﻣ ﺔ ‪Pygame‬ﻟ‬
‫ﺘﺴ‬‫ﻓ ﻲ ﻣﺸﺮوع ‪)Alien Invasion‬اﻟﻔﺼﻮل ‪12‬و ‪13‬و ‪14) ،‬ﺳ‬
‫ﺑ ﺔ‪ .‬ﻓ ﻲ‬
‫ﺘﻮﻳﺎ تﺗﺰﻳﺪ ﻓ ﻲ اﻟ ﺴﺮﻋ ﺔ واﻟﺼﻌﻮ‬
‫ﺑﺈﺳﻘﺎط اﻟﺸﺎﺷ ﺔ ﻓ ﻲ ﻣ ﺴ‬‫ﺛﻨﺎء ﻗﻴﺎﻣﻬﻢ‬
‫اﻟﻬﺪف ﻓﻴﻬﺎ إﺳﻘﺎط أﺳﻄﻮل ﻣﻦ اﻟﻔﻀﺎﺋﻴﻴﻦ أ‬
‫ﺑﻌﺎد ﻓ ﻲ ‪Pygame.‬‬
‫ﺛﻨﺎﺋﻴ ﺔ اﻷ‬‫ﺑﻚ‬
‫ﺘﻤﻜﻨﻚ ﻣﻦﺗﻄﻮﻳﺮ أﻟﻌﺎ‬
‫ﺘ ﻲﺳ‬
‫ﺘﻌﻠﻢ اﻟﻤﻬﺎرا ت اﻟ‬
‫ﺘ‬‫ﻧﻬﺎﻳ ﺔ اﻟﻤﺸﺮوع ‪،‬ﺳ‬

‫ﺋ ﻲ ﻟﻠﻤﻌﻠﻮﻣﺎ ت‬
‫ﻋﺮض ﻣﺮ‬

‫ﺘﺼﻮرا ت‬
‫ﺒﻴﺎﻧﺎ ت وإﻧﺸﺎءﺳﻠ ﺴﻠ ﺔ ﻣﻦ اﻟ‬
‫ﺘﻌﻠﻢ إﻧﺸﺎء اﻟ‬
‫ﺘ‬‫ﺒﻴﺎﻧﺎ ت ﻓ ﻲ اﻟﻔﺼﻞ اﻟﺨﺎﻣ ﺲ ﻋﺸﺮ ‪ ،‬ﺣﻴ ﺚﺳ‬
‫ﺒﺪأ ﻣﺸﺮوعﺗﺼﻮر اﻟ‬
‫ﻳ‬
‫ﺒﻴﺎﻧﺎ ت ﻣﻦ اﻟﻤﺼﺎدر‬
‫ﺘﺨﺪام ‪matplotlib‬و ‪Pygal.‬ﻳﻌﻠﻤﻚ اﻟﻔﺼﻞ ‪16‬اﻟﻮﺻﻮل إﱃ اﻟ‬
‫ﺑﺎﺳ‬‫ﺒﻴﺎﻧﺎ ت‬
‫ﺘﻠﻚ اﻟ‬
‫اﻟﻮﻇﻴﻔﻴ ﺔ واﻟﺠﻤﻴﻠ ﺔ ﻟ‬
‫ﺒﻴﺎﻧﺎ ت اﻟﻄﻘ ﺲ وﺧﺮﻳﻄ ﺔﺳﻜﺎن اﻟﻌﺎﻟﻢ‪ .‬أﺧﻴ ﺮًا ‪ ،‬اﻟﻔﺼﻞ ‪17‬‬
‫ﺘﺼﻮر ﻹﻧﺸﺎء ﻣﺨﻄﻄﺎ ت ﻟ‬
‫ﺘﺮﻧ ﺖ وإدﺧﺎﻟﻬﺎ ﻓ ﻲ ﺣﺰﻣ ﺔ اﻟ‬
‫ﺒﺮ اﻹﻧ‬
‫ﻋ‬
‫‪Machine Translated by Google‬‬

‫ﺘﻜﺸﺎف ﻣﺠﺎل‬
‫ﺘﺼﻮرا ت اﺳ‬
‫ﺘﻴﺢ ﻟﻚﺗﻌﻠﻢ ﻋﻤﻞ اﻟ‬
‫ﺗﺼﻮر ﻫﺎﺗﻠﻘﺎﺋ ًﻴﺎ‪.‬ﻳ‬
‫ﺒﻴﺎﻧﺎ ت و‬
‫ﺘﻨﺰﻳﻞ اﻟ‬
‫ﺑﺮﻧﺎﻣﺞ ﻟ‬‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﻳﻮﺿﺢ ﻟﻚ ﻛﻴﻔﻴ ﺔ ﻛ‬
‫ﺑ ﺔ ﻟﻠﻐﺎﻳ ﺔ ﻓ ﻲ اﻟﻌﺎﻟﻢ اﻟﻴﻮم‪.‬‬
‫ﺒﻴﺎﻧﺎ ت ‪ ،‬و ﻫ ﻲ ﻣﻬﺎرة ﻣﻄﻠﻮ‬
‫ﺘﻨﻘﻴ ﺐ ﻋﻦ اﻟ‬
‫اﻟ‬

‫ﺘﺨﺪم ﺣﺰﻣ ﺔ ‪Django‬ﻹﻧﺸﺎء‬


‫ﺘﺴ‬‫ﺒﻴﻘﺎ ت اﻟﻮﻳ ﺐ )اﻟﻔﺼﻮل ‪18‬و ‪19‬و ‪20) ،‬ﺳ‬
‫ﺒﻴﻘﺎ ت اﻟﻮﻳ ﺐ ﻓ ﻲ ﻣﺸﺮوعﺗﻄ‬
‫ﺗﻄ‬

‫ﺘ ﻲﺗﻌﻠﻤﻮ ﻫﺎ‪.‬‬
‫ﺘﺮﻳﻮﻣﻴﺎ ت ﺣﻮل أي ﻋﺪد ﻣﻦ اﻟﻤﻮﺿﻮﻋﺎ ت اﻟ‬
‫ﺑﺪﻓ‬‫ﺘﻔﺎظ‬
‫ﺘﺨﺪﻣﻴﻦ اﻻﺣ‬
‫ﺘﻴﺢ ﻟﻠﻤ ﺴ‬
‫ﺑ ﺴﻴﻂﻳ‬‫ﺒﻴﻖ وﻳ ﺐ‬
‫ﺗﻄ‬
‫ﺛﻢ إدﺧﺎل إدﺧﺎﻻ ت ﺣﻮل ﻣﺎ‬‫ﺘﺨﺪم وﻛﻠﻤ ﺔ ﻣﺮور ‪ ،‬وإدﺧﺎل ﻣﻮﺿﻮع ‪،‬‬
‫ﺑﺎﺳﻢ ﻣ ﺴ‬‫ﺑﺈﻧﺸﺎء ﺣ ﺴﺎ ب‬‫ﺘﺨﺪﻣﻮن‬ ‫ﺳﻴﻘﻮم اﻟﻤ ﺴ‬
‫ﺘﻤﻜﻦ أي ﺷﺨﺺ ﻓ ﻲ اﻟﻌﺎﻟﻢ ﻣﻦ اﻟﻮﺻﻮل إﻟﻴﻪ‪.‬‬ ‫ﺘﻰﻳ‬‫ﺒﻴﻘﻚ ﺣ‬ ‫ﺘﻌﻠﻢ أ ً‬
‫ﻳﻀﺎ ﻛﻴﻔﻴ ﺔ ﻧﺸﺮﺗﻄ‬ ‫ﺘ‬‫ﺘﻌﻠﻤﻮﻧﻪ‪.‬ﺳ‬ ‫ﻳ‬

‫ﺑﻚ ‪،‬‬ ‫ﺒ ﺴﻴﻄ ﺔ اﻟﺨﺎﺻ ﺔ‬


‫ﺒﻴﻘﺎ ت اﻟﻮﻳ ﺐ اﻟ‬ ‫ﺒﺪء ﻓ ﻲ إﻧﺸﺎءﺗﻄ‬ ‫ﺘﻤﻜﻦ ﻣﻦ اﻟ‬ ‫ﺘ‬‫ﺘﻬﺎء ﻣﻦ ﻫﺬا اﻟﻤﺸﺮوع ‪،‬ﺳ‬ ‫ﺑﻌﺪ اﻻﻧ‬
‫ﺘﺨﺪام ‪Django.‬‬ ‫ﺑﺎﺳ‬ ‫ﺒﻴﻘﺎ ت‬ ‫ﺘﻄ‬ ‫ﺘﻜﻮن ﺟﺎ ﻫ ًﺰا ﻟﻠ‬
‫ﺘﻌﻤﻖ ﻓ ﻲ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻮارد اﻟﺸﺎﻣﻠ ﺔ ﺣﻮل إﻧﺸﺎء اﻟ‬ ‫وﺳ‬

‫ﺜﺎﻧ ﻲ‬
‫‪232‬اﻟﺠﺰء اﻟ‬
Machine Translated by Google

1 ‫ﻣﺸﺮوع‬
A li en In va sio n
Machine Translated by Google
‫‪Machine Translated by Google‬‬

‫‪12‬‬
‫‪AS h ip T hat Fi‬اﻟﺪﻗ ﺔ اﻟﻨﻘﻄﻴ ﺔ‬

‫ﺘﺨﺪم ‪Pygame ،‬و ﻫ ﻲ ﻣﺠﻤﻮﻋ ﺔ ﻣﻦ وﺣﺪا ت‬


‫ﺒ ﺔ!ﺳﻨ ﺴ‬
‫ﺒﻨ ﻲ ﻟﻌ‬
‫دﻋﻮﻧﺎ ﻧ‬
‫ﺘﺤﺮﻛ ﺔ‬
‫ﺘ ﻲﺗﺪﻳﺮ اﻟﺮﺳﻮﻣﺎ ت واﻟﺮﺳﻮم اﻟﻤ‬
‫ﺘﻌ ﺔ واﻟﻘﻮﻳ ﺔ اﻟ‬
‫‪Python‬اﻟﻤﻤ‬
‫ﺘﻰ اﻟﺼﻮ ت ‪ ،‬ﻣﻤﺎﻳ ﺴﻬﻞ ﻋﻠﻴﻚ إﻧﺸﺎء أﻟﻌﺎ ب ﻣﻌﻘﺪة‪ .‬ﻣﻦ ﺧﻼل ﻣﻬﺎم‬
‫وﺣ‬
‫ﺜﻴﺮ ﻣﻦ‬
‫ﺜﻞ رﺳﻢ اﻟﺼﻮر ﻋﲆ اﻟﺸﺎﺷ ﺔ ‪،‬ﻳﻤﻜﻨﻚﺗﺨﻄ ﻲ اﻟﻜ‬
‫ﻣﻌﺎﻟﺠ ﺔ ‪Pygame‬ﻣ‬
‫ﺒ ﺔ‪.‬‬
‫ﺘﻮى اﻷﻋﲆ ﻟﺪﻳﻨﺎﻣﻴﻜﻴﺎ ت اﻟﻠﻌ‬
‫ﺘﺮﻛﻴﺰ ﻋﲆ ﻣﻨﻄﻖ اﻟﻤ ﺴ‬
‫ﺘﺮﻣﻴﺰ اﻟﻤﻤﻞ واﻟﺼﻌ ﺐ واﻟ‬
‫اﻟ‬

‫ﺗﻄﻠﻖ اﻟﺮﺻﺎص ردًا ﻋﲆ إدﺧﺎل‬


‫ﺘﺤﺮكﻳﻤﻴﻨًﺎ وﻳ ﺴﺎ ًرا ‪ ،‬و‬
‫ﺛﻢ إﻧﺸﺎءﺳﻔﻴﻨ ﺔﺗ‬
‫ﺑﺈﻋﺪاد ‪Pygame‬‬‫ﺘﻘﻮم‬
‫ﻓ ﻲ ﻫﺬا اﻟﻔﺼﻞ ‪،‬ﺳ‬
‫ﺜﻞ وﺿﻊ‬
‫ﺘﺤ ﺴﻴﻨﺎ ت ‪ ،‬ﻣ‬
‫ﺘﻤﺮ ﻓ ﻲ إﺟﺮاء اﻟ‬
‫ﺛﻢﺗ ﺴ‬‫ﺘﺪﻣﻴﺮه ‪،‬‬ ‫ً‬
‫ﺳﻄﻮﻻ ﻣﻦ اﻟﻔﻀﺎﺋﻴﻴﻦ ﻟ‬‫ﺘﻨﺸ ﺊ أ‬
‫ﺘﺎﻟﻴﻴﻦ ‪،‬ﺳ‬
‫اﻟﻼﻋ ﺐ‪ .‬ﻓ ﻲ اﻟﻔﺼﻠﻴﻦ اﻟ‬
‫ﺘﺎﺋﺞ‪.‬‬
‫ﺘﺨﺪاﻣﻬﺎ وإﺿﺎﻓ ﺔ ﻟﻮﺣ ﺔ اﻟﻨ‬
‫ﺘ ﻲﻳﻤﻜﻨﻚ اﺳ‬
‫ﺣﺪود ﻟﻌﺪد اﻟ ﺴﻔﻦ اﻟ‬

‫ﺜﻴﺮ ﻣﻦ‬
‫ﺑﺈﻋﺎدةﺗﺸﻜﻴﻞ اﻟﻜ‬‫ﺘﻌﺪدة‪.‬ﺳﻨﻘﻮم‬
‫ﺒﺮ ﻣﻠﻔﺎ ت ﻣ‬
‫ﺘﺪ ﻋ‬
‫ﺘ ﻲﺗﻤ‬
‫ﺒﻴﺮة اﻟ‬ ‫ﺘﻌﻠﻢ أ ً‬
‫ﻳﻀﺎ إدارة اﻟﻤﺸﺎرﻳﻊ اﻟﻜ‬ ‫ﺘ‬‫ﻣﻦ ﻫﺬا اﻟﻔﺼﻞﺳ‬
‫ﺘﻮﻳﺎ ت اﻟﻤﻠﻒ ﻟﻠﺤﻔﺎظ ﻋﲆﺗﻨﻈﻴﻢ ﻣﺸﺮوﻋﻨﺎ وﻛﻔﺎءة اﻟﻜﻮد‪.‬‬
‫ﺒﺮﻣﺠﻴ ﺔ وإدارة ﻣﺤ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫اﻟ‬
‫‪Machine Translated by Google‬‬

‫ﺛﻨﺎءﺗﻌﻠﻢ اﻟﻠﻐ ﺔ‪.‬‬


‫ﺘﺎع أ‬
‫ﺘﻤ‬‫ﺜﺎﻟﻴ ﺔ ﻟﻼﺳ‬
‫ﻳﻌﺪ ﺻﻨﻊ اﻷﻟﻌﺎ ب ﻃﺮﻳﻘ ﺔ ﻣ‬
‫ﺑﺔ‬
‫ﺘﺎ‬
‫ﺑ ﺴﻴﻄ ﺔ ﻋﲆ ﻓﻬﻢ ﻛﻴﻔﻴ ﺔ ﻛ‬‫ﺒﺔ‬
‫ﺑ ﺔ ﻟﻌ‬
‫ﺘﺎ‬
‫ﺘ ﺴﺎﻋﺪك ﻛ‬
‫ﺘﻬﺎ ‪ ،‬وﺳ‬
‫ﺒ‬‫ﺘ‬‫ﺒﺔ ﻛ‬
‫ﺒﻮن ﻟﻌ‬
‫إﻧﻪ ﻟﻤﻦ دواﻋ ﻲ اﻟ ﺴﺮور أنﺗﺸﺎ ﻫﺪ اﻵﺧﺮﻳﻦﻳﻠﻌ‬
‫ﺘﺮاﻓﻴ ﺔ‪.‬‬
‫اﻷﻟﻌﺎ ب اﻻﺣ‬
‫ﺘﻌﻠﻴﻤﺎ ت‬
‫ﺘﻠ ﺔ ﻣﻦ اﻟ‬
‫ﺘﺸﻐﻴﻠﻬﺎ ﻟﻔﻬﻢ ﻛﻴﻔﻴ ﺔ ﻣ ﺴﺎ ﻫﻤ ﺔ ﻛﻞ ﻛ‬
‫ﺑ‬‫ﺒﺮﻣﺠﻴ ﺔ وﻗﻢ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺛﻨﺎء اﻟﻌﻤﻞ ﺧﻼل ﻫﺬا اﻟﻔﺼﻞ ‪ ،‬أدﺧﻞ اﻟ‬
‫أ‬
‫ﺑﻚ‬
‫ﺘﻔﺎﻋﻼ ت ﻓ ﻲ أﻟﻌﺎ‬
‫ﺘ ﺴﺎ ب ﻓﻬﻢ أﻓﻀﻞ ﻟﻜﻴﻔﻴ ﺔﺗﺤ ﺴﻴﻦ اﻟ‬
‫ﺘﻠﻔ ﺔ ﻻﻛ‬
‫ﻗﻴﻤﺎ وإﻋﺪادا ت ﻣﺨ‬
‫ً‬ ‫ﺑﺸﻜﻞ ﻋﺎم‪ .‬ﺟﺮ ب‬‫ﺒﺮﻣﺠﻴ ﺔ ﻓ ﻲ اﻟﻠﻌ ﺐ‬
‫اﻟ‬
‫اﻟﺨﺎﺻ ﺔ‪.‬‬

‫ﺗﺄﻛﺪ‬
‫ﺘﻠﻔ ﺔ ‪ ،‬ﻟﺬا أﻧﺸ ﺊ ﻣﺠﻠﺪًا ﺟﺪﻳﺪًا ﻓ ﻲ ﻧﻈﺎﻣﻚﻳ ﺴﻤﻰ ‪alien_invasion.‬‬
‫ﺘﺪ ‪N ote Alien Invasion‬ﻋﲆ ﻋﺪد ﻣﻦ اﻟﻤﻠﻔﺎ ت اﻟﻤﺨ‬
‫ﺳﻮفﻳﻤ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺘﻴﺮاد‬
‫ﺒﺎرا ت اﻻﺳ‬
‫ﺘﻰﺗﻌﻤﻞ ﻋ‬
‫ﻣﻦ ﺣﻔﻆ ﺟﻤﻴﻊ ﻣﻠﻔﺎ ت اﻟﻤﺸﺮوع ﻓ ﻲ ﻫﺬا اﻟﻤﺠﻠﺪ ﺣ‬

‫ﺘﺨﻄﻴﻂ ﻟﻤﺸﺮوﻋﻚ‬
‫اﻟ‬
‫ﺘﻚ ﻋﲆ‬
‫ﺘﺤﺎﻓﻆ ﺧﻄ‬
‫ﺑﻚ‪.‬ﺳ‬‫ﺒﺮﻣﺠﻴ ﺔ اﻟﺨﺎﺻ ﺔ‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺑ ﺔ اﻟ‬
‫ﺘﺎ‬
‫ﺒﺪء ﻓ ﻲ ﻛ‬
‫ﺒﻞ اﻟ‬
‫ﺒﻴﺮ ‪ ،‬ﻣﻦ اﻟﻤﻬﻢ إﻋﺪاد ﺧﻄ ﺔ ﻗ‬
‫ﻋﻨﺪ إﻧﺸﺎء ﻣﺸﺮوع ﻛ‬
‫ﺗﺠﻌﻞ ﻣﻦ اﻟﻤﺮﺟﺢ أنﺗﻜﻤﻞ اﻟﻤﺸﺮوع‪.‬‬
‫ﺗﺮﻛﻴﺰك و‬

‫ﺘ ﺐ وﺻ ًﻔﺎﻷﺳﻠﻮ ب اﻟﻠﻌ ﺐ اﻟﻌﺎم‪ .‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أن ﻫﺬا اﻟﻮﺻﻒ ﻻﻳﻐﻄ ﻲ ﻛﻞﺗﻔﺎﺻﻴﻞ ‪Alien Invasion ،‬إﻻ‬
‫دﻋﻨﺎ ﻧﻜ‬
‫ﺒ ﺔ‪:‬‬
‫ﺑﻨﺎء اﻟﻠﻌ‬‫ﺒﺪء ﻓ ﻲ‬
‫أﻧﻪﻳﻮﻓﺮ ﻓﻜﺮة واﺿﺤ ﺔ ﻋﻦ ﻛﻴﻔﻴ ﺔ اﻟ‬

‫ﺘﺤﻜﻢ اﻟﻼﻋ ﺐ ﻓ ﻲﺳﻔﻴﻨ ﺔﺗﻈﻬﺮ ﻓ ﻲ اﻟﺠﺰء اﻟ ﺴﻔﻠ ﻲ ﻣﻦ وﺳﻂ اﻟﺸﺎﺷ ﺔ‪.‬ﻳﻤﻜﻦ ﻟﻼﻋ ﺐ‬
‫ﻓ ﻲ ‪Alien Invasion ،‬ﻳ‬
‫ﺘﺎح اﻟﻤ ﺴﺎﻓ ﺔ‪ .‬ﻋﻨﺪﻣﺎ‬
‫ﺘﺨﺪام ﻣﻔ‬
‫ﺑﺎﺳ‬‫ﺗﻴﺢ اﻷﺳﻬﻢ وإﻃﻼق اﻟﺮﺻﺎص‬
‫ﺘﺨﺪام ﻣﻔﺎ‬
‫ﺑﺎﺳ‬‫ﺗﺤﺮﻳﻚ اﻟ ﺴﻔﻴﻨ ﺔﻳﻤﻴﻨًﺎ وﻳ ﺴﺎ ًرا‬
‫ﺒﺮ اﻟﺸﺎﺷ ﺔ وأﺳﻔﻠﻬﺎ‪ .‬اﻟﻼﻋ ﺐﻳﻄﻠﻖ اﻟﻨﺎر وﻳﺪﻣﺮ‬
‫ﺘﺤﺮك ﻋ‬
‫ﺒ ﺔ ‪،‬ﻳﻤﻸ أﺳﻄﻮل ﻣﻦ اﻟﻔﻀﺎﺋﻴﻴﻦ اﻟ ﺴﻤﺎء وﻳ‬
‫ﺒﺪأ اﻟﻠﻌ‬
‫ﺗ‬
‫ﺑﺸﻜﻞ‬‫ﺘﺤﺮك‬
‫اﻷﺟﺎﻧ ﺐ‪ .‬إذا أﻃﻠﻖ اﻟﻼﻋ ﺐ اﻟﻨﺎر ﻋﲆ ﺟﻤﻴﻊ اﻟﻜﺎﺋﻨﺎ ت اﻟﻔﻀﺎﺋﻴ ﺔ ‪ ،‬ﻓ ﺴﻴﻈﻬﺮ أﺳﻄﻮل ﺟﺪﻳﺪﻳ‬
‫ﺑ ﺴﻔﻴﻨ ﺔ اﻟﻼﻋ ﺐ أو وﺻﻞ إﱃ أﺳﻔﻞ اﻟﺸﺎﺷ ﺔ ‪،‬‬‫ﺑﻖ‪ .‬إذا اﺻﻄﺪم أي ﻛﺎﺋﻦ ﻓﻀﺎﺋ ﻲ‬
‫أﺳﺮع ﻣﻦ اﻷﺳﻄﻮل اﻟ ﺴﺎ‬
‫ﺒ ﺔ‪.‬‬
‫ﺘﻬ ﻲ اﻟﻠﻌ‬
‫ﺛﻼ ثﺳﻔﻦﺗﻨ‬‫ﻳﻔﻘﺪ اﻟﻼﻋ ﺐﺳﻔﻴﻨ ﺔ‪ .‬إذا ﺧ ﺴﺮ اﻟﻼﻋ ﺐ‬

‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‬‫ﺘﺤﺮك‬
‫ﺘﻄﻮﻳﺮ ‪،‬ﺳﻨﺼﻨﻊﺳﻔﻴﻨ ﺔﻳﻤﻜﻨﻬﺎ اﻟ‬
‫ﻓ ﻲ اﻟﻤﺮﺣﻠ ﺔ اﻷوﱃ ﻣﻦ اﻟ‬
‫ﺑﻌﺪ إﻋﺪاد ﻫﺬا‬‫ﺘﺎح اﻟﻤ ﺴﺎﻓ ﺔ‪.‬‬
‫وﻏﺎدر‪.‬ﻳﺠ ﺐ أنﺗﻜﻮن اﻟ ﺴﻔﻴﻨ ﺔ ﻗﺎدرة ﻋﲆ إﻃﻼق اﻟﺮﺻﺎص ﻋﻨﺪﻣﺎﻳﻀﻐﻂ اﻟﻼﻋ ﺐ ﻋﲆ ﻣﻔ‬
‫ﺗﺤ ﺴﻴﻦ ﻃﺮﻳﻘ ﺔ اﻟﻠﻌ ﺐ‪.‬‬
‫ﺒﺎ ﻫﻨﺎ إﱃ اﻟﻔﻀﺎﺋﻴﻴﻦ و‬
‫ﺘ‬‫اﻟ ﺴﻠﻮك ‪،‬ﻳﻤﻜﻨﻨﺎﺗﺤﻮﻳﻞ اﻧ‬

‫ﺒﻴ ﺖ ‪Pygame‬‬
‫ﺜ‬‫ﺗ‬
‫ﺑﺬﻟﻚ ﻋﲆ ‪Linux‬و ‪OS X‬و ‪Windows.‬‬‫ﺒﻴ ﺖ ‪Pygame.‬إﻟﻴﻚ ﻛﻴﻔﻴ ﺔ اﻟﻘﻴﺎم‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬‫ﺒﺮﻣﺠ ﺔ ‪ ،‬ﻗﻢ‬
‫ﺒﺪأ ﻓ ﻲ اﻟ‬
‫ﺒﻞ أنﺗ‬
‫ﻗ‬
‫‪Microsoft‬‬
‫ﺒﻴ ﺖ ‪pip‬‬
‫ﺜ‬‫ﺘ‬‫ﺘﺨﺪام ‪pip‬ﻟ‬
‫ﺘﺎج إﱃ اﺳ‬
‫ﺘﺤ‬‫ﺘﺨﺪم ‪OS X ،‬ﻓ ﺴ‬
‫ﺘﺨﺪم ‪Python 3‬ﻋﲆ ‪Linux‬أو إذا ﻛﻨ ﺖﺗ ﺴ‬
‫إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺒﻴ ﺖ اﻟﺤﺰم‬
‫ﺜ‬‫ﺘﺎﻟﻴ ﺔ ﻛﻴﻔﻴ ﺔﺗ‬
‫ﺘﻮﺿﺢ ﻟﻚ اﻷﻗ ﺴﺎم اﻟ‬
‫ﺑ ﺔ ﻋﻨﻚ‪.‬ﺳ‬
‫ﺘﻬﺎ ﻧﻴﺎ‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺗ‬‫ﺘﻌﺎﻣﻞ ﻣﻊﺗﻨﺰﻳﻞ ﺣﺰم ‪Python‬و‬
‫ﺑﺮﻧﺎﻣﺞﻳ‬‫‪ Pygame.‬ﻫﻮ‬
‫ﺑﺎﻟﻨﻘﻄ ﺔ‪.‬‬

‫ﺒﻴ ﺖ‬
‫ﺜ‬‫ﺘ‬‫ﺘﺎج إﱃ ‪pip‬ﻟ‬
‫ﺘﺨﺪم ‪Windows ،‬ﻓﻠﻦﺗﺤ‬
‫ﺘﺨﺪم ‪Python 2.7‬ﻋﲆ ‪Linux‬أو إذا ﻛﻨ ﺖﺗ ﺴ‬
‫إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺒﻴ ﺖ ‪Pygame‬ﻋﲆ‬
‫ﺜ‬‫ﺗ‬‫ﺒﻴ ﺖ ‪Pygame‬ﻋﲆ "‪Linux‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪238‬أو "‬
‫ﺜ‬‫ﺗ‬ ‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ‪ ،‬اﻧ‬
‫ﺘﻘﻞ إﱃ "‬ ‫‪Pygame.‬‬
‫"‪Windows‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪240.‬‬

‫‪236‬اﻟﻔﺼﻞ ‪12‬‬
‫‪Machine Translated by Google‬‬

‫ﺒﻴﺎﻧﺎ ت وﻣﺸﺎرﻳﻊ‬
‫ﺘﺼﻮر اﻟ‬
‫ﺘﺎج إﱃ ‪pip‬ﻟ‬
‫ﺘﺤ‬‫ﺘﺎﻟﻴ ﺔﻷﻧﻚﺳ‬
‫ﺒﻴ ﺖ ‪pip‬ﻋﲆ ﺟﻤﻴﻊ اﻷﻧﻈﻤ ﺔ ﻓ ﻲ اﻷﻗ ﺴﺎم اﻟ‬
‫ﺜ‬‫ﺘ‬‫ﺘﻢﺗﻀﻤﻴﻦ إرﺷﺎدا ت ‪N ote‬ﻟ‬
‫ﻳ‬
‫ﺘﺮﻧ ﺖ ﻋﲆ ‪https: //www.nostarch‬‬
‫ﺒﺮ اﻹﻧ‬ ‫ﺘﻌﻠﻴﻤﺎ ت أ ً‬
‫ﻳﻀﺎ ﻓ ﻲ اﻟﻤﻮارد ﻋ‬ ‫ﺘﻢﺗﻀﻤﻴﻦ ﻫﺬه اﻟ‬
‫ﺒﻴﻘﺎ ت اﻟﻮﻳ ﺐ‪.‬ﻳ‬
‫ﺗﻄ‬

‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻹرﺷﺎدا ت‬


‫ﺘﻌﻠﻴﻤﺎ ت اﻟﻮاردة ﻫﻨﺎ ‪ ،‬ﻓ‬
‫‪.com / pythoncrashcourse /.‬إذا ﻛﻨ ﺖﺗﻮاﺟﻪ ﻣﺸﻜﻠ ﺔ ﻓ ﻲ اﻟ‬
‫ﺘﺮﻧ ﺖﺗﻌﻤﻞ ﻣﻦ أﺟﻠﻚ‪.‬‬
‫ﺒﺮ اﻹﻧ‬
‫ﻋ‬

‫ﺑﻨﻘﻄ ﺔ‬
‫ﺒﻴ ﺖ ﺣﺰم ‪Python‬‬
‫ﺜ‬‫ﺗ‬
‫ﺑﺎﻟﻔﻌﻞ ﻋﲆ ﻧﻈﺎﻣﻚ‪ .‬ﻣﻊ‬‫ﺘ ﺔ ‪ ،‬ﻟﺬاﺗﺤﻘﻖ أوﻻ ً ﻣﻤﺎ إذا ﻛﺎﻧ ﺖ اﻟﻨﻘﻄ ﺔ ﻣﻮﺟﻮدة‬
‫ﺒ‬‫ﺜ‬‫ﺑﻨﻘﻄ ﺔ ﻣ‬‫ﺗ ﻲ أﺣﺪ ث إﺻﺪارا ت ‪Python‬ﻣﺰودة‬
‫ﺗﺄ‬
‫ﺗ ﺴﻤﻰ اﻟﻨﻘﻄ ﺔ أﺣﻴﺎﻧًﺎ اﻟﻨﻘﻄ ﺔ ‪3.‬‬
‫‪Python 3 ،‬‬

‫ﺘﺤﻘﻖ ﻣﻦ وﺟﻮد ﻧﻘﻄ ﺔ ﻋﲆ ﻧﻈﺎﻣ ﻲ ‪Linux‬و ‪OS X‬‬


‫اﻟ‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺘﺢ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ وأدﺧﻞ اﻷﻣﺮ اﻟ‬
‫اﻓ‬

‫‪$‬ﻧﻘﻄ ﺔ ‪-‬اﻹﺻﺪار‬
‫‪u pip 7.0.3‬ﻣﻦ ‪usr/local/lib/python3.5/dist-packages (python 3.5)/‬‬
‫‪$‬‬

‫ﺘًﺎ ﻋﲆ ﻧﻈﺎﻣﻚ وأﻧ ﺖ‬


‫ﺒ‬‫ﺜ‬‫إذا ﻛﺎن ﻟﺪﻳﻚ إﺻﺪار واﺣﺪ ﻓﻘﻂ ﻣﻦ ‪Python‬ﻣ‬
‫ﺒﻴ ﺖ ‪Pygame‬‬
‫ﺜ‬‫ﺗ‬‫ﺒﻴ ﺖ ‪Pygame‬ﻋﲆ "‪Linux‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪238‬أو "‬
‫ﺜ‬‫ﺗ‬‫ﺘﻘﻞ إﱃ "‬
‫ﺑﻬ ﺔ ﻟﻬﺬا ‪ ،‬اﻧ‬
‫اﻧﻈﺮ إﱃ اﻟﻤﺨﺮﺟﺎ ت اﻟﻤﺸﺎ‬
‫ﺒﻴ ﺖ أي ﻣﻦ‬
‫ﺜ‬ ‫ﺑﺪﻻ ً ﻣﻦ ‪pip .‬إذا ﻟﻢﻳ‬
‫ﺘﻢﺗ‬ ‫ﺘﺨﺪام ‪pip3‬‬
‫ﻋﲆ "‪OS X‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪239.‬إذاﺗﻠﻘﻴ ﺖ رﺳﺎﻟ ﺔ ﺧﻄﺄ ‪ ،‬ﻓﺤﺎول اﺳ‬
‫ﺒﻴ ﺖ ﻧﻘﻄ ﺔ" ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪238.‬‬
‫ﺜ‬‫ﺗ‬‫ﺘﻘﻞ إﱃ "‬
‫اﻹﺻﺪارﻳﻦ ﻋﲆ ﻧﻈﺎﻣﻚ ‪ ،‬ﻓﺎﻧ‬

‫ﺑﺈﺻﺪار ‪Python‬اﻟﺬي‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﺄﻛﺪ ﻣﻦ أن اﻟﻨﻘﻄ ﺔ ﻣﺮ‬
‫ﺜﺮ ﻣﻦ إﺻﺪار واﺣﺪ ﻣﻦ ‪Python‬ﻋﲆ ﻧﻈﺎﻣﻚ ‪ ،‬ﻓ‬
‫إذا ﻛﺎن ﻟﺪﻳﻚ أﻛ‬
‫ﺘﻘﻞ‬
‫ﺑﺎﻹﺻﺪار اﻟﺼﺤﻴﺢ ﻣﻦ ‪Python ،‬ﻓﺎﻧ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺜﺎل ‪python 3.5 at u. ،‬إذا ﻛﺎﻧ ﺖ اﻟﻨﻘﻄ ﺔ ﻣﺮ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺨﺪﻣﻪ ‪-‬ﻋﲆﺳ‬
‫ﺗﺴ‬
‫ﺒﻴ ﺖ ‪Pygame‬ﻋﲆ "‪OS X‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪239.‬إذا ﻛﺎﻧ ﺖ‬
‫ﺜ‬‫ﺗ‬‫ﺒﻴ ﺖ ‪Pygame‬ﻋﲆ "‪Linux‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪238‬أو "‬
‫ﺜ‬‫ﺗ‬‫إﱃ "‬
‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ‪ .‬ﻣﻦ اﻟﻨﻘﻄ ﺔ‪ .‬إذا ﻟﻢﻳﻌﻤﻞ أي ﻣﻦ‬
‫ﺘﺨﺪام ‪pip3‬‬
‫ﺑﺈﺻﺪار ﺧﺎﻃ ﺊ ﻣﻦ ‪Python ،‬ﻓﺤﺎول اﺳ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫اﻟﻨﻘﻄ ﺔ ﻣﺮ‬
‫ﺘﻘﻞ إﱃ "‪"Installing pip‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪238.‬‬
‫ﺘﺨﺪﻣﻪ ‪ ،‬ﻓﺎﻧ‬
‫اﻷﻣﺮﻳﻦ ﻣﻊ إﺻﺪار ‪Python‬اﻟﺬيﺗ ﺴ‬

‫ﺘﺤﻘﻖ ﻣﻦ وﺟﻮد ﻧﻘﻄ ﺔ ﻋﲆ ‪Windows‬‬


‫اﻟ‬

‫ﺘﺎﻟ ﻲ‪:‬‬
‫ﺘﺢ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ وأدﺧﻞ اﻷﻣﺮ اﻟ‬
‫اﻓ‬

‫‪$ python -m pip --version‬‬


‫‪u pip 7.0.3‬ﻣﻦ )‪C: \ Python35 \ lib \ site -packs (python 3.5‬‬
‫‪$‬‬

‫ﺒﻴ ﺖ‬
‫ﺜ‬‫ﺗ‬‫ﺘﻘﻞ إﱃ "‬
‫ﺑﻬً ﺎ ﻟﻬﺬا ‪ ،‬ﻓﺎﻧ‬
‫ﺟﺎ ﻣﺸﺎ‬
‫ﺘًﺎ ورأﻳ ﺖ إﺧﺮا ً‬
‫ﺒ‬‫ﺜ‬‫ﺘﻮي ﻋﲆ إﺻﺪار واﺣﺪ ﻓﻘﻂ ﻣﻦ ‪Python‬ﻣ‬
‫إذا ﻛﺎن ﻧﻈﺎﻣﻚﻳﺤ‬
‫ﺑﺪﻻ ً ﻣﻦ ‪pip .‬إذا ﻟﻢﻳ‬
‫ﺘﻢ‬ ‫ﺘﺨﺪام ‪pip3‬‬
‫‪Pygame‬ﻋﲆ "‪Windows‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪240.‬إذاﺗﻠﻘﻴ ﺖ رﺳﺎﻟ ﺔ ﺧﻄﺄ ‪ ،‬ﻓﺤﺎول اﺳ‬
‫ﺒﻴ ﺖ ﻧﻘﻄ ﺔ" ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪238.‬‬
‫ﺜ‬‫ﺗ‬‫ﺘﻘﻞ إﱃ "‬
‫ﺒﻴ ﺖ أي ﻣﻦ اﻹﺻﺪارﻳﻦ ﻋﲆ ﻧﻈﺎﻣﻚ ‪ ،‬ﻓﺎﻧ‬
‫ﺜ‬‫ﺗ‬

‫ﺑﺈﺻﺪار‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺘﺄﻛﺪ ﻣﻦ أن اﻟﻨﻘﻄ ﺔ ﻣﺮ‬
‫ﺘًﺎ ‪ ،‬ﻓ‬
‫ﺒ‬‫ﺜ‬‫ﺜﺮ ﻣﻦ إﺻﺪار واﺣﺪ ﻣﻦ ‪Python‬ﻣ‬
‫ﺘﻮي ﻋﲆ أﻛ‬
‫إذا ﻛﺎن ﻧﻈﺎﻣﻚﻳﺤ‬
‫ﺑﺎﻹﺻﺪار اﻟﺼﺤﻴﺢ ﻣﻦ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺜﺎل ‪python 3.5 at u. ،‬إذا ﻛﺎﻧ ﺖ اﻟﻨﻘﻄ ﺔ ﻣﺮ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺘﺨﺪﻣﻪ —ﻋﲆﺳ‬
‫‪Python‬اﻟﺬيﺗ ﺴ‬
‫ﺑـ‬‫ﺒﻄ ﺔ‬
‫ﺗ‬‫ﺒﻴ ﺖ ‪Pygame‬ﻋﲆ "‪Windows‬ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪240.‬إذا ﻛﺎﻧ ﺖ اﻟﻨﻘﻄ ﺔ ﻣﺮ‬
‫ﺜ‬‫ﺗ‬‫ﺘﻘﻞ إﱃ "‬
‫‪Python ،‬ﻓﺎﻧ‬

‫‪237-‬ﻣ ﺴﻌﻮد‬
‫‪Machine Translated by Google‬‬

‫ﺑﺪﻻ ً ﻣﻦ اﻟﻨﻘﻄ ﺔ‪ .‬إذا ﻟﻢﻳﻌﻤﻞ أي ﻣﻦ ‪com mand‬ﻣﻊ إﺻﺪار‬


‫ﺘﺨﺪام اﻟﻨﻘﻄ ﺔ ‪3‬‬
‫اﻹﺻﺪار اﻟﺨﺎﻃ ﺊ ﻣﻦ ‪Python ،‬ﺣﺎول اﺳ‬
‫ﺑﻌﺪ ذﻟﻚ‪.‬‬
‫ﺘﻘﻞ إﱃ "‪"Installing pip‬‬
‫ﺘﺨﺪﻣﻪ ‪ ،‬ﻓﺎﻧ‬
‫‪Python‬اﻟﺬيﺗ ﺴ‬

‫ﺗﺮﻛﻴ ﺐ اﻟﻨﻘﻄ ﺔ‬

‫ﺘﻘﻞ إﱃ ‪https://bootstrap.pypa.io/get-pip.py.‬اﺣﻔﻆ اﻟﻤﻠﻒ إذاُﻃﻠ ﺐ ﻣﻨﻚ ذﻟﻚ‪ .‬إذا ﻇﻬﺮ‬


‫ﺒﻴ ﺖ اﻟﻨﻘﻄ ﺔ ‪ ،‬اﻧ‬
‫ﺜ‬‫ﺘ‬‫ﻟ‬
‫ﺒﺮﻧﺎﻣﺞ وﻟﺼﻘﻪ ﻓ ﻲ ﻣﺤﺮر اﻟﻨﺼﻮص وﺣﻔﻆ اﻟﻤﻠﻒ ﻛـ ‪get-pip.py.‬‬
‫ﺑﻨ ﺴﺦ اﻟ‬‫ﺘﺼﻔﺤﻚ ‪ ،‬ﻓﻘﻢ‬
‫رﻣﺰ ‪get-pip.py‬ﻓ ﻲ ﻣ‬
‫ﺘﻘﻮم‬
‫ﺘﻴﺎزا ت إدارﻳ ﺔﻷن اﻟﻨﻘﻄ ﺔﺳ‬
‫ﺑﺎﻣ‬‫ﺘﺎج إﱃﺗﺸﻐﻴﻠﻪ‬
‫ﺘﺤ‬‫ﺑﻚ ‪،‬ﺳ‬‫ﺗﺮ اﻟﺨﺎص‬
‫ﺒﻴﻮ‬
‫ﺑﻤﺠﺮد ﺣﻔﻆ ‪get-pip.py‬ﻋﲆ ﺟﻬﺎز اﻟﻜﻤ‬
‫ﺒﻴ ﺖ أﻋﻤﺎر ﺣﺰم ﺟﺪﻳﺪة ﻋﲆ ﻧﻈﺎﻣﻚ‪.‬‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬

‫ﺒﻴ ﺖ ﻓ ﻲ اﻟﻴ ﺴﺎر‬


‫ﺜ‬‫ﺘ‬‫ﺘﻘﻞ إﱃ ‪https://pip.pypa.io/ ،‬واﻧﻘﺮ ﻓﻮق اﻟ‬
‫ﺜﻮر ﻋﲆ ‪get-pip.py ،‬ﻓﺎﻧ‬
‫ﺘﻤﻜﻦ ﻣﻦ اﻟﻌ‬
‫ﻣﻠﺤﻮﻇ ﺔ إذا ﻟﻢﺗ‬
‫ﺑﻂ ﻟﻠﺤﺼﻮل ﻋﲆ ‪get-pip.py.‬‬
‫ﺒﻊ اﻟﺮا‬
‫ﺗ‬‫ﺒﻴ ﺖ" ‪ ،‬ا‬
‫ﺜ‬‫ﺘ‬‫ﺛﻢ ﺿﻤﻦ "ﻧﻘﻄ ﺔ اﻟ‬‫ﻟﻮﺣ ﺔ ‪،‬‬

‫ﺒﻴ ﺖ ‪pip‬ﻋﲆ ‪Linux‬و ‪OS X‬‬


‫ﺜ‬‫ﺗ‬

‫ﺘﻴﺎزا ت إدارﻳ ﺔ‪:‬‬


‫ﺑﺎﻣ‬
‫ﺘﺸﻐﻴﻞ ‪get-pip.py‬‬
‫ﺘﺎﻟ ﻲ ﻟ‬
‫ﺘﺨﺪم اﻷﻣﺮ اﻟ‬
‫اﺳ‬

‫‪$ sudo python get-pip.py‬‬

‫ﺘﺨﺪام ‪ sudo python3 get-pip.py‬ﻫﻨﺎ‪.‬‬


‫ﺒﺪء ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ ‪ ،‬ﻓﻴﺠ ﺐ ﻋﻠﻴﻚ اﺳ‬
‫ﺘﺨﺪم اﻷﻣﺮ ‪python3‬ﻟ‬
‫إذا ﻛﻨ ﺖﺗ ﺴ‬

‫ﺑﺸﻜﻞ‬‫ﺒﻴ ﺖ اﻟﻨﻘﻄ ﺔ‬
‫ﺜ‬‫ﺘﺄﻛﺪ ﻣﻦﺗ‬
‫ﺘﺨﺪم اﻷﻣﺮ ‪)pip --version‬أو )‪pip3 --version‬ﻟﻠ‬
‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬اﺳ‬
‫ﺑﻌﺪﺗﺸﻐﻴﻞ اﻟ‬
‫ﺻﺤﻴﺢ‪.‬‬

‫ﺒﻴ ﺖ اﻟﻨﻘﻄ ﺔ ﻋﲆ اﻟﻮﻳﻨﺪوز‬


‫ﺜ‬‫ﺟﺎريﺗ‬

‫ﺘﺸﻐﻴﻞ ‪get-pip.py:‬‬
‫ﺘﺎﻟ ﻲ ﻟ‬
‫ﺘﺨﺪم اﻷﻣﺮ اﻟ‬
‫اﺳ‬

‫‪$ python get-pip.py‬‬

‫ﺘﺸﻐﻴﻞ ‪pip.py.‬‬
‫ﺘﺨﺪام ﻫﺬا اﻷﻣﺮ ﻟ‬
‫ﺘﺄﻛﺪ ﻣﻦ اﺳ‬ ‫ﺘﻠ ًﻔﺎ ﻟ‬
‫ﺘﺸﻐﻴﻞ ‪Python‬ﻓ ﻲ ﻣﺤﻄ ﺔ ﻃﺮﻓﻴ ﺔ ‪ ،‬ﻓ‬ ‫ﺘﺨﺪم أﻣ ﺮًا ﻣﺨ‬
‫إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺜﺎل ‪ ،‬ﻗﺪﻳﻜﻮن اﻷﻣﺮ ‪python3 get-pip.py‬أو ‪C: \ Python35 \ python get-pip.py.‬‬
‫ﺒﻴﻞ اﻟﻤ‬
‫‪get-‬ﻋﲆﺳ‬

‫ﺑﻨﺠﺎح‪.‬‬‫ﺒﻴ ﺖ اﻟﻨﻘﻄ ﺔ‬
‫ﺜ‬‫ﺘﺄﻛﺪ ﻣﻦﺗ‬
‫ﺘﺸﻐﻴﻞ اﻷﻣﺮ ‪python -m pip --version‬ﻟﻠ‬
‫ﺑ‬‫ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﻗﻢ‬
‫ﺑﻌﺪﺗﺸﻐﻴﻞ اﻟ‬

‫ﺒﻴ ﺖ ‪Pygame‬ﻋﲆ ‪Linux‬‬


‫ﺜ‬‫ﺗ‬
‫ﺘﺨﺪام ﻣﺪﻳﺮ اﻟﺤﺰم‪.‬‬
‫ﺑﺎﺳ‬
‫ﺒﻴ ﺖ ‪Pygame‬‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬‫ﺘﺨﺪم ‪Python 2.7 ،‬ﻓﻘﻢ‬
‫إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺘﻪ ﻋﲆ ﻧﻈﺎﻣﻚ‪:‬‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺗ‬‫ﺘﻨﺰﻳﻞ ‪Pygame‬و‬
‫ﺑ‬‫ﺘﺎﻟ ﻲ ‪ ،‬واﻟﺬيﺳﻴﻘﻮم‬
‫ﺘﺸﻐﻴﻞ اﻷﻣﺮ اﻟ‬
‫ﺑ‬‫ﺘﺢ ﻧﺎﻓﺬة ﻃﺮﻓﻴ ﺔ وﻗﻢ‬
‫اﻓ‬

‫‪sudo apt-get install python-pygame‬‬

‫‪238‬اﻟﻔﺼﻞ ‪12‬‬
‫‪Machine Translated by Google‬‬

‫ﺑﺈدﺧﺎل ﻣﺎﻳﻠ ﻲ‪:‬‬‫ﺒﻴ ﺖ ﻓ ﻲ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ‬


‫ﺜ‬‫ﺘ‬‫ﺒﺮ اﻟ‬
‫ﺘ‬‫اﺧ‬

‫ﺜﻮن‬‫ﺑﻴ‬
‫‪$‬‬
‫ﺘﻴﺮاد ‪pygame‬‬
‫>>>اﺳ‬
‫>>>‬

‫ﺑﺪء ﻣﺸﺮوع‬
‫ﺘﻘﺎل إﱃ "‬
‫ﺘﻌﺪاد ﻟﻼﻧ‬
‫ﺘﻮرد ت ‪Pygame‬وأﻧ ﺖ ﻋﲆ اﺳ‬
‫إذا ﻟﻢﻳﻈﻬﺮ أي إﺧﺮاج ‪ ،‬ﻓﻬﺬاﻳﻌﻨ ﻲ أن ‪Python‬ﻗﺪ اﺳ‬
‫ﺒ ﺔ" ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪240.‬‬
‫اﻟﻠﻌ‬
‫ﺒﺎ ت‬
‫ﺘ‬‫ﺒﻴ ﺖ اﻟﻤﻜ‬
‫ﺜ‬‫ﺗﻴﻦ‪:‬ﺗ‬
‫ﺘﺎج إﱃ ﺧﻄﻮ‬
‫ﺘﺤ‬‫ﺘﺸﻐﻴﻞ ‪Python 3 ،‬ﻓ ﺴ‬
‫ﺑ‬‫إذا ﻛﻨ ﺖﺗﻘﻮم‬
‫ﺘﻬﺎ‪.‬‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺗ‬‫ﺗﻨﺰﻳﻠﻬﺎ و‬
‫ﺘﻤﺪ ‪Pygame‬ﻋﲆ ‪Pygame‬و‬
‫ﺗﻌ‬
‫ﺘﺨﺪم‬
‫ﺘﺎﺟﻬﺎ ‪)Pygame.‬إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺘ ﻲﻳﺤ‬
‫ﺒﺎ ت اﻟ‬
‫ﺘ‬‫ﺒﻴ ﺖ اﻟﻤﻜ‬
‫ﺜ‬‫ﺘ‬‫أدﺧﻞ ﻣﺎﻳﻠ ﻲ ﻟ‬
‫ﺑـ )‪python3.5-dev.‬‬
‫ﺒﺪل ‪python3-dev‬‬
‫ﺘ‬‫ﺜﻞ ‪python3.5‬ﻋﲆ ﻧﻈﺎﻣﻚ ‪ ،‬اﺳ‬
‫أﻣﺮ ﻣ‬

‫‪sudo apt-get install python3-dev mercurial‬‬


‫‪$ sudo apt-get install libsdl-image1.2-dev libsdl2-dev libsdl-ttf2.0-dev‬‬

‫ﺑﻨﺠﺎح‪.‬‬
‫ﺘﺸﻐﻴﻞ ‪Alien Invasion‬‬
‫ﺒﺎ ت اﻟﻼزﻣ ﺔ ﻟ‬
‫ﺘ‬‫ﺒﻴ ﺖ اﻟﻤﻜ‬
‫ﺜ‬‫ﺳﻴﺆدي ﻫﺬا إﱃﺗ‬
‫ﺜﻞ اﻟﻘﺪرة ﻋﲆ إﺿﺎﻓ ﺔ أﺻﻮا ت ‪ ،‬ﻓﻴﻤﻜﻨﻚ أ ً‬
‫ﻳﻀﺎ‬ ‫ﺗﻘﺪﻣﺎ ﻓ ﻲ ‪Pygame ،‬ﻣ‬
‫ً‬ ‫ﺜﺮ‬
‫ﺑﻌﺾ اﻟﻮﻇﺎﺋﻒ اﻷﻛ‬‫إذا ﻛﻨ ﺖﺗﺮﻏ ﺐ ﻓ ﻲﺗﻤﻜﻴﻦ‬
‫ﺘﺎﻟﻴ ﺔ‪:‬‬
‫ﺒﺎ ت اﻟ‬
‫ﺘ‬‫إﺿﺎﻓ ﺔ اﻟﻤﻜ‬

‫‪sudo apt-get install libsdl-mixer1.2-dev libportmidi-dev‬‬


‫‪$ sudo apt-get install libswale-dev libsmpeg-dev libavformat-dev libavcode-dev‬‬
‫‪sudo apt-get install python-numpy‬‬

‫ﺒﺎ ﻟﻨﻈﺎﻣﻚ(‪:‬‬
‫ﺘﺨﺪم ‪pip3‬إذا ﻛﺎن ﻫﺬا ﻣﻨﺎﺳ ً‬
‫ﺒﻴ ﺖ ‪Pygame‬ﻋﻦ ﻃﺮﻳﻖ إدﺧﺎل ﻣﺎﻳﻠ ﻲ )اﺳ‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬‫اﻵن ﻗﻢ‬

‫ﺘﺨﺪم ‪hg + http: //bitbucket.org/pygame/pygame‬‬


‫ﺒﻴ ﺖ ‪$ Pip -‬اﻟﻤ ﺴ‬
‫ﺜ‬‫ﺗ‬

‫ﺒﺎ ت‬
‫ﺘ‬‫ﺑﺎﻟﻤﻜ‬‫ﺑﻌﺪ إﻋﻼﻣﻚ‬‫ﺘًﺎ ﻟﻠﺤﻈ ﺔ‬
‫ﺘﻮﻗﻒ اﻹﺧﺮاج ﻣﺆﻗ‬
‫ﺳﻴ‬
‫ﺒﻴ ﺖ‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬‫ﺒﺎ ت‪.‬ﻳﺠ ﺐ أنﺗﺮى رﺳﺎﻟ ﺔﺗﻔﻴﺪ‬
‫ﺘ‬‫ﺑﻌﺾ اﻟﻤﻜ‬‫ﺜﻮر ﻋﲆ ‪Pygame.‬اﺿﻐﻂ ﻋﲆ ‪Enter ،‬ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ ﻓﻘﺪان‬
‫ﺗﻢ اﻟﻌ‬
‫ﺑﻨﺠﺎح‪.‬‬
‫‪Pygame‬‬
‫ﺑﺈدﺧﺎل ﻣﺎﻳﻠ ﻲ‪:‬‬
‫ﺘﻴﺮاد ‪Pygame‬‬
‫ﺘﺸﻐﻴﻞ ﺟﻠ ﺴ ﺔ ﻃﺮﻓﻴ ﺔ ‪Python‬وﺣﺎول اﺳ‬
‫ﺑ‬‫ﺒﻴ ﺖ ‪ ،‬ﻗﻢ‬
‫ﺜ‬‫ﺘ‬‫ﺘﺄﻛﻴﺪ اﻟ‬
‫ﻟ‬

‫ﺜﻮن ‪3‬‬
‫ﺑﻴ‬
‫ﺘﻴﺮاد ‪pygame‬‬
‫>>>اﺳ‬
‫>>>‬

‫ﺒ ﺔ" ﻓ ﻲ اﻟﺼﻔﺤ ﺔ ‪240.‬‬


‫ﺑﺪء ﻣﺸﺮوع اﻟﻠﻌ‬
‫ﺘﻘﻞ إﱃ "‬
‫إذا ﻧﺠﺢ ذﻟﻚ ‪ ،‬ﻓﺎﻧ‬

‫ﺒﻴ ﺖ ‪Pygame‬ﻋﲆ ‪OS X‬‬


‫ﺜ‬‫ﺗ‬
‫ﺒﻴ ﺖ‬
‫ﺜ‬‫ﺘ‬‫ﺑ‬‫ﺑﺎﻟﻔﻌﻞ‬‫ﺘﻤﺪ ﻋﻠﻴﻬﺎ ‪Pygame.‬إذا ﻟﻢﺗﻜﻦ ﻗﺪ ﻗﻤ ﺖ‬
‫ﺘ ﻲﺗﻌ‬
‫ﺑﻌﺾ اﻟﺤﺰم اﻟ‬‫ﺒﻴ ﺖ‬
‫ﺜ‬‫ﺘ‬‫ﺘﺎج إﱃ ‪Homebrew‬ﻟ‬
‫ﺘﺤ‬‫ﺳ‬
‫‪Homebrew ،‬ﻓﺮاﺟﻊ اﻟﻤﻠﺤﻖ أ ﻟﻠﺤﺼﻮل ﻋﲆ اﻹرﺷﺎدا ت‪.‬‬
‫ﺘﻤﺪ ﻋﻠﻴﻬﺎ ‪Pygame ،‬أدﺧﻞ ﻣﺎﻳﻠ ﻲ‪:‬‬
‫ﺘ ﻲﺗﻌ‬
‫ﺒﺎ ت اﻟ‬
‫ﺘ‬‫ﺒﻴ ﺖ اﻟﻤﻜ‬
‫ﺜ‬‫ﺘ‬‫ﻟ‬

‫‪$ brew install hg sdl sdl_image sdl_ttf‬‬

‫‪239-‬ﻣ ﺴﻌﻮد‬
‫‪Machine Translated by Google‬‬

‫ﺘﺸﻐﻴﻞ ‪Alien Invasion.‬ﻳﺠ ﺐ‬


‫ﺒﺎ ت اﻟﻼزﻣ ﺔ ﻟ‬
‫ﺘ‬‫ﺒﻴ ﺖ اﻟﻤﻜ‬
‫ﺜ‬‫ﺳﻴﺆدي ﻫﺬا إﱃﺗ‬

‫ﺘ ﺔ‪.‬‬
‫ﺒ‬‫ﺜ‬‫ﺒﺔ ﻣ‬
‫ﺘ‬‫ﺑﻮاﺳﻄ ﺔ ﻛﻞ ﻣﻜ‬‫ﺘﻤﺮﻳﺮ‬
‫راﺟﻊ إﺧﺮاج اﻟ‬
‫ﺜﻞﺗﻀﻤﻴﻦ ﻣﻠﻔﺎ ت‬
‫ﺗﻘﺪﻣﺎ ‪ ،‬ﻣ‬
‫ً‬ ‫ﺜﺮ‬ ‫إذا ﻛﻨ ﺖﺗﺮﻳﺪ أ ً‬
‫ﻳﻀﺎﺗﻤﻜﻴﻦ وﻇﺎﺋﻒ أﻛ‬
‫ﺘﻴﻦ‪:‬‬
‫ﺘﻴﻦ إﺿﺎﻓﻴ‬
‫ﺒ‬‫ﺘ‬‫ﺒﻴ ﺖ ﻣﻜ‬
‫ﺜ‬‫ﻓ ﻲ اﻷﻟﻌﺎ ب ‪،‬ﻳﻤﻜﻨﻚﺗ‬

‫‪$ brew install sdl_mixer portmidi‬‬

‫ﺑﺪﻻ ً ﻣﻦ ‪pip3‬‬
‫ﺘﺨﺪم ‪pip‬‬
‫ﺒﻴ ﺖ ‪)Pygame‬اﺳ‬
‫ﺜ‬‫ﺘ‬‫ﺘﺎﻟ ﻲ ﻟ‬
‫ﺘﺨﺪم اﻷﻣﺮ اﻟ‬
‫اﺳ‬
‫ﺘﺸﻐﻴﻞ ‪Python 2.7):‬‬
‫ﺑ‬‫إذا ﻛﻨ ﺖﺗﻘﻮم‬

‫ﺘﺨﺪم ‪hg + http: //bitbucket.org/pygame/pygame‬‬


‫ﺒﻴ ﺖ ‪$ pip3 -‬اﻟﻤ ﺴ‬
‫ﺜ‬‫ﺗ‬

‫ﺘﺤﻘﻖ ﻣﻤﺎ إذا ﻛﺎن‬


‫ﺘﻮرد ‪Pygame‬ﻟﻠ‬
‫ﺑﺪأ ﺟﻠ ﺴ ﺔ ‪Python Terminal‬واﺳ‬
‫ا‬
‫ﺘﺸﻐﻴﻞ ‪Python 2.7):‬‬
‫ﺑ‬‫ﺑﺪﻻ ً ﻣﻦ ‪python3‬إذا ﻛﻨ ﺖﺗﻘﻮم‬
‫ﺑﻨﺠﺎح )أدﺧﻞ ‪python‬‬‫ﺒﻴ ﺖ‬
‫ﺜ‬‫ﺘ‬‫ﺗﻢ اﻟ‬

‫ﺜﻮن ‪3‬‬
‫ﺑﻴ‬
‫ﺘﻴﺮاد ‪pygame‬‬
‫>>>اﺳ‬
‫>>>‬

‫ﺒ ﺔ" أدﻧﺎه‪.‬‬
‫ﺑﺪء ﻣﺸﺮوع اﻟﻠﻌ‬
‫ﺘﻘﻞ إﱃ "‬
‫ﺘﻴﺮاد ‪ ،‬ﻓﺎﻧ‬
‫ﺑﻴﺎن اﻻﺳ‬‫إذا ﻧﺠﺢ‬

‫ﺒﻴ ﺖ ‪Pygame‬ﻋﲆ اﻟﻮﻳﻨﺪوز‬


‫ﺜ‬‫ﺗ‬
‫ﺒﻴ ﺖ ‪Pygame‬ﻋﲆ إﺻﺪار ‪Windows‬‬
‫ﺜ‬‫ﺘ‬‫ﺘﻀﺎﻓ ﺔ ﻣﺸﺮوع ‪Pygame‬ﻋﲆ ﻣﻮﻗﻊ ﻣﺸﺎرﻛ ﺔ رﻣﺰﻳ ﺴﻤﻰ ‪Bitbucket.‬ﻟ‬
‫ﺘﻢ اﺳ‬
‫ﻳ‬
‫ﺒ ﺖ ‪Windows‬ﻋﲆ ‪https://bitbucket.org/pygame/pygame/downloads/‬اﻟﺬي‬
‫ﺜ‬‫ﺑﺤ ﺚ ﻋﻦ ﻣ‬
‫ﺑﻚ ‪ ،‬ا‬‫اﻟﺨﺎص‬
‫ﺘﺤﻘﻖ ﻣﻦ‬
‫ﺟﺎ ﻓ ﻲ ‪Bitbucket ،‬ﻓ‬
‫ﺒ ﺖ اﻟﻤﻨﺎﺳ ﺐ ﻣﺪر ً‬
‫ﺜ‬‫ﺘﺸﻐﻴﻠﻪ‪ .‬إذا ﻛﻨ ﺖ ﻻﺗﺮى اﻟﻤ‬
‫ﺑ‬‫ﺑﻖ إﺻﺪار ‪Python‬اﻟﺬيﺗﻘﻮم‬
‫ﻳﻄﺎ‬
‫‪http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame.‬‬

‫ﺒ ﺖ إذا ﻛﺎن ﻣﻠﻒ ‪exe .‬‬


‫ﺜ‬‫ﺘﺸﻐﻴﻞ اﻟﻤ‬
‫ﺑ‬‫ﺑﻌﺪﺗﻨﺰﻳﻞ اﻟﻤﻠﻒ اﻟﻤﻨﺎﺳ ﺐ ‪ ،‬ﻗﻢ‬

‫ﺘﻘﻞ إﱃ اﻟﻤﺠﻠﺪ‬
‫ﺘﺢ ﻧﺎﻓﺬة أواﻣﺮ ‪ ،‬واﻧ‬
‫ﺑﻨ ﺴﺦ اﻟﻤﻠﻒ إﱃ دﻟﻴﻞ ﻣﺸﺮوﻋﻚ‪ .‬اﻓ‬‫ﺘﻬ ﻲ ‪ .whl ،‬ـ بﻓﻘﻢ‬
‫إذا ﻛﺎن ﻟﺪﻳﻚ ﻣﻠﻒﻳﻨ‬
‫ﺒ ﺖ‪:‬‬
‫ﺜ‬‫ﺘﺸﻐﻴﻞ اﻟﻤ‬
‫ﺘﺨﺪم اﻟﻨﻘﻄ ﺔ ﻟ‬
‫ﺒﱢ ﺖ إﻟﻴﻪ ‪ ،‬واﺳ‬
‫ﺜ‬‫اﻟﺬي ﻧ ﺴﺨ ﺖ اﻟﻤ‬

‫ﺒﻴ ﺖ ‪python -m pip --user pygame-1.9.2a0-cp35-none-win32.whl‬‬


‫ﺜ‬‫ﺗ‬‫>‬

‫ﺒﺔ‬
‫ﺑﺪء ﻣﺸﺮوع اﻟﻠﻌ‬
‫ﺜﻞ اﻟ ﺴﻔﻴﻨ ﺔ واﻷﺟﺎﻧ ﺐ‪.‬‬
‫ﺘﻨﺎ ‪ ،‬ﻣ‬
‫ﺒ‬‫ﺘﻨﺎ ﻋﻦ ﻃﺮﻳﻖ إﻧﺸﺎء داو ﻓﻮز ‪Pygame‬ﻓﺎرغﻳﻤﻜﻨﻨﺎ ﻻﺣ ًﻘﺎ رﺳﻢ ﻋﻨﺎﺻﺮ ﻟﻌ‬
‫ﺒ‬‫ﺑﻨﺎء ﻟﻌ‬‫ﺒﺪأ اﻵن ﻓ ﻲ‬
‫ﺳﻨ‬
‫ﺗﺤﻤﻴﻞ ﺻﻮرة اﻟ ﺴﻔﻴﻨ ﺔ‪.‬‬
‫ﺗﻌﻴﻴﻦ ﻟﻮن اﻟﺨﻠﻔﻴ ﺔ ‪ ،‬و‬
‫ﺘﺨﺪم ‪ ،‬و‬
‫ﺘﻨﺎ ﻹدﺧﺎل اﻟﻤ ﺴ‬
‫ﺒ‬‫ﺑ ﺔ ﻟﻌ‬
‫ﺘﺠﺎ‬ ‫ﺳﻴﻜﻮن ﻟﺪﻳﻨﺎ أ ً‬
‫ﻳﻀﺎ اﺳ‬

‫‪240‬اﻟﻔﺼﻞ ‪12‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪم‬
‫ﺑ ﺔ ﻹدﺧﺎﻻ ت اﻟﻤ ﺴ‬
‫ﺘﺠﺎ‬
‫إﻧﺸﺎء ﻧﺎﻓﺬة ‪Pygame‬واﻻﺳ‬
‫ﺑﻠﻐ ﺔ ‪Pygame:‬‬‫ﺑﺔ‬
‫ﺘﻮ‬‫ﺒ ﺔ ﻣﻜ‬ ‫أوﻻ ً ‪،‬ﺳﻨﻨﺸ ﺊ ﻧﺎﻓﺬة ‪Pygame‬ﻓﺎرﻏ ﺔ‪ .‬إﻟﻴﻚ اﻟ‬
‫ﺒﻨﻴ ﺔ اﻷﺳﺎﺳﻴ ﺔ ﻟﻠﻌ‬

‫ﺘﻴﺮاد اﻟﻨﻈﻢ‬
‫اﺳ‬
‫‪alien_ Invasion.py‬‬
‫ﺘﻴﺮاد ‪pygame‬‬
‫اﺳ‬

‫‪def run_game ():‬‬


‫ﺒ ﺔ وإﻧﺸﺎء ﻛﺎﺋﻦ ﺷﺎﺷ ﺔ‪.‬‬
‫ﺗﻬﻴﺌ ﺔ اﻟﻠﻌ‬
‫‪#‬‬
‫)( ‪u pygame.init‬‬
‫‪v‬اﻟﺸﺎﺷ ﺔ ))‪= pygame.display.set_mode ((1200 ، 800‬‬
‫ﺒ ﻲ"(‬
‫‪")pygame.display.set_caption‬اﻟﻐﺰو اﻷﺟﻨ‬

‫ﺒ ﺔ‪.‬‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﻌ‬
‫ﺑﺪأ اﻟﺤﻠﻘ ﺔ اﻟﺮ‬
‫‪#‬ا‬
‫ﺑﻴﻨﻤﺎ ﺻﺤﻴﺢ‪:‬‬
‫‪w‬‬

‫ﺗﻴﺢ واﻟﻤﺎوس‪.‬‬
‫‪#‬ﻣﺸﺎ ﻫﺪة أﺣﺪا ث ﻟﻮﺣ ﺔ اﻟﻤﻔﺎ‬
‫س‬ ‫ﻟﻠﺤﺪ ث ﻓ ﻲ ‪pygame.event.get ():‬‬
‫ص‬ ‫إذا ﻛﺎن ‪event.type == pygame.QUIT:‬‬
‫)( ‪sys.exit‬‬

‫ﺋﻴ ﺔ‪.‬‬
‫‪#‬اﺟﻌﻞ أﺣﺪ ث ﺷﺎﺷ ﺔ ﻣﺮﺳﻮﻣ ﺔ ﻣﺮ‬
‫ض‬ ‫)( ‪pygame.display.flip‬‬

‫ﺒ ﺔ اﻟﻤﺪى)(‬
‫ﻟﻌ‬

‫ﺘﺨﺪم وﺣﺪة‬
‫ﺒ ﺔ‪.‬ﺳﻨ ﺴ‬
‫ﺘﻮي وﺣﺪة ‪pygame‬ﻋﲆ اﻟﻮﻇﺎﺋﻒ اﻟﻼزﻣ ﺔ ﻹﻧﺸﺎء ﻟﻌ‬
‫ﺗﺤ‬‫ﺗ ﻲ ‪sys‬و ‪pygame .‬‬
‫ﺘﻴﺮاد وﺣﺪ‬
‫ﺑﺎﺳ‬‫أوﻻ ً ‪ ،‬ﻧﻘﻮم‬
‫ﺘﻘﻴﻞ اﻟﻼﻋ ﺐ‪.‬‬
‫ﺒ ﺔ ﻋﻨﺪﻣﺎﻳ ﺴ‬
‫اﻟﻨﻈﺎم ﻟﻠﺨﺮوج ﻣﻦ اﻟﻠﻌ‬

‫ﺒ ﻲ ﻛﻮﻇﻴﻔ ﺔ ‪run_game ().‬ﺧﻂ )( ‪pygame.init‬‬


‫ﺒﺪأ اﻟﻐﺰو اﻷﺟﻨ‬
‫ﻳ‬
‫ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪.‬‬‫ﺘﺎﺟﻬﺎ ‪Pygame‬ﻟﻠﻌﻤﻞ‬
‫ﺘ ﻲﻳﺤ‬
‫ﻓ ﻲ ‪u‬ﻳﻬﻴ ﺊ إﻋﺪادا ت اﻟﺨﻠﻔﻴ ﺔ اﻟ‬
‫ﺘ ﻲﺳﻨﺮﺳﻢ ﻋﻠﻴﻬﺎ ﺟﻤﻴﻊ اﻟﻌﻨﺎﺻﺮ‬
‫ﻓ ﻲ ‪v ،‬ﻧ ﺴﻤ ﻲ )( ‪pygame.display.set_mode‬ﻹﻧﺸﺎء ﻧﺎﻓﺬة ﻋﺮضﺗ ﺴﻤﻰ ‪screen ،‬واﻟ‬
‫ﺒ ﺔ‪.‬‬
‫ﺑﻌﺎد ﻧﺎﻓﺬة اﻟﻠﻌ‬
‫ﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋ ﺔﺗﺤﺪد أ‬
‫ﺒ ﺔ‪The argu ment (1200، 800) .‬ﻋ‬
‫اﻟﺮﺳﻮﻣﻴ ﺔ ﻟﻠﻌ‬

‫ﺗﻔﺎع ‪800‬‬
‫ﺑﻜ ﺴﻞ وار‬
‫ﺑﻌﺮض ‪1200‬‬‫ﺒﺔ‬
‫ﺑﺈﻧﺸﺎء ﻧﺎﻓﺬة ﻟﻌ‬‫ﺑﻌﺎد إﱃ ‪pygame.display.set_mode () ،‬ﻧﻘﻮم‬
‫ﻣﻦ ﺧﻼلﺗﻤﺮﻳﺮ ﻫﺬه اﻷ‬
‫ﺘﻚ‪(.‬‬
‫ﺒﻂ ﻫﺬه اﻟﻘﻴﻢ ﺣ ﺴ ﺐ ﺣﺠﻢ ﺷﺎﺷ‬
‫ﺑﻜ ﺴﻞ‪) .‬ﻳﻤﻜﻨﻚ ﺿ‬

‫ﺒﺔ ‪،‬‬
‫ﺒ ﺔ ‪ .‬ﻛﻞ ﻋﻨﺼﺮ ﻓ ﻲ اﻟﻠﻌ‬
‫ﻛﺎﺋﻦ اﻟﺸﺎﺷ ﺔﻳ ﺴﻤﻰ اﻟ ﺴﻄﺢ‪ .‬اﻟ ﺴﻄﺢ ﻓ ﻲ ‪ Pygame‬ﻫﻮ ﺟﺰء ﻣﻦ اﻟﺸﺎﺷ ﺔ ﺣﻴ ﺚﺗﻌﺮض ﻋﻨﺼﺮ اﻟﻠﻌ‬
‫ﺑﺄﻛﻤﻠﻬﺎ‪ .‬ﻋﻨﺪﻣﺎ‬‫ﺒﺔ‬
‫ﺜﻞ ﻧﺎﻓﺬة اﻟﻠﻌ‬
‫ﺑﻮاﺳﻄ ﺔ )( ‪display.set_mode‬ﻳﻤ‬‫ﺜﻞ اﻟﻔﻀﺎﺋﻴﻴﻦ أو اﻟ ﺴﻔﻴﻨ ﺔ ‪ ،‬ﻫﻮﺳﻄﺢ‪ .‬اﻟ ﺴﻄﺢ اﻟﺬيﺗﻢ إرﺟﺎﻋﻪ‬
‫ﻣ‬
‫ﺒﺮ اﻟﺤﻠﻘ ﺔ‪.‬‬
‫ﺘﻢ إﻋﺎدة رﺳﻢ ﻫﺬا اﻟ ﺴﻄﺢﺗﻠﻘﺎﺋ ًﻴﺎ ﻋﻨﺪ ﻛﻞﺗﻤﺮﻳﺮة ﻋ‬
‫ﺒ ﺔ ‪،‬ﻳ‬
‫ﺘﺤﺮﻛ ﺔ ﻟﻠﻌ‬
‫ﺘﻨﺸﻴﻂ ﺣﻠﻘ ﺔ اﻟﺮﺳﻮم اﻟﻤ‬
‫ﺑ‬‫ﻧﻘﻮم‬

‫ﺜﺎ ت اﻟﺸﺎﺷ ﺔ‪ .‬اﻟﺤﺪ ث‬


‫ﺘﻮي ﻋﲆ ﺣﻠﻘ ﺔ ﺣﺪ ث وﻛﻮدﻳﺪﻳﺮﺗﺤﺪﻳ‬
‫ﺘ ﻲﺗﺤ‬
‫ﺑﻮاﺳﻄ ﺔ ﺣﻠﻘ ﺔ ‪while loop w‬اﻟ‬‫ﺒﺔ‬
‫ﺘﺤﻜﻢ ﻓ ﻲ اﻟﻠﻌ‬
‫ﺘﻢ اﻟ‬
‫ﻳ‬
‫ﺘﺠﻴ ﺐ ﻟﻸﺣﺪا ث ‪،‬‬
‫ﺑﺮﻧﺎﻣﺠﻨﺎﻳ ﺴ‬‫ﺘﺎح أوﺗﺤﺮﻳﻚ اﻟﻤﺎوس ‪ .‬ﻟﺠﻌﻞ‬
‫ﺜﻞ اﻟﻀﻐﻂ ﻋﲆ ﻣﻔ‬
‫ﺒﺔ ‪ ،‬ﻣ‬
‫ﺛﻨﺎء ﻟﻌ ﺐ اﻟﻠﻌ‬
‫ﺘﺨﺪم أ‬
‫ﺑﻪ اﻟﻤ ﺴ‬‫ﻫﻮ إﺟﺮاءﻳﻘﻮم‬
‫ﺘﻤﺎدًا ﻋﲆ ﻧﻮع اﻟﺤﺪ ث اﻟﺬي وﻗﻊ‪ .‬اﻟﺤﻠﻘ ﺔ ‪for‬ﻋﻨﺪ ‪ x‬ﻫ ﻲ ﺣﻠﻘ ﺔ‬
‫ﺒ ﺔ اﻋ‬
‫ﺗﻨﻔﻴﺬ ﻣﻬﻤ ﺔ ﻣﻨﺎﺳ‬
‫ﺘﻤﺎع إﱃ ﺣﺪ ث ﻣﺎ و‬
‫ﺘ ﺐ ﺣﻠﻘ ﺔ ﺣﺪ ث ﻟﻼﺳ‬
‫ﺳﻨﻜ‬
‫ﺣﺪ ث‪.‬‬

‫‪241-‬ﻣ ﺴﻌﻮد‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪم )( ‪pygame.event.get‬‬
‫ﺘﺸﻔﻬﺎ ‪Pygame ،‬ﺳﻨ ﺴ‬
‫ﺘ ﻲ اﻛ‬
‫ﻟﻠﻮﺻﻮل إﱃ اﻷﺣﺪا ث اﻟ‬
‫ﺒﺎرا ت‬
‫ﺘ ﺐﺳﻠ ﺴﻠ ﺔ ﻣﻦ ﻋ‬
‫ﺗﻴﺢ أو اﻟﻤﺎوس إﱃﺗﺸﻐﻴﻞ ﺣﻠﻘ ﺔ ‪for .‬داﺧﻞ اﻟﺤﻠﻘ ﺔ ‪،‬ﺳﻨﻜ‬
‫ﻃﺮﻳﻘ ﺔ‪.‬ﺳﻴﺆدي أي ﺣﺪ ث ﻓ ﻲ ﻟﻮﺣ ﺔ اﻟﻤﻔﺎ‬
‫ﺘﻢ‬
‫ﺒ ﺔ ‪،‬ﻳ‬
‫ﺜﺎل ‪ ،‬ﻋﻨﺪﻣﺎﻳﻨﻘﺮ اﻟﻼﻋ ﺐ ﻋﲆ زر إﻏﻼق ﻧﺎﻓﺬة اﻟﻠﻌ‬
‫ﺒﻴﻞ اﻟﻤ‬
‫ﺑ ﺔ ﻟﻬﺎ‪ .‬ﻋﲆﺳ‬
‫ﺘﺠﺎ‬
‫‪if‬ﻟﻠﻜﺸﻒ ﻋﻦ أﺣﺪا ث ﻣﻌﻴﻨ ﺔ واﻻﺳ‬
‫ﺒ ﺔ ‪y.‬‬
‫ﺘﺪﻋﺎء )( ‪sys.exit‬ﻟﻠﺨﺮوج ﻣﻦ اﻟﻠﻌ‬
‫ﺑﺎﺳ‬‫ﺘﺸﺎف ﺣﺪ ث ‪pygame.QUIT‬وﻧﻘﻮم‬
‫اﻛ‬

‫ﺋﻴ ﺔ‪ .‬ﻓ ﻲ ﻫﺬه اﻟﺤﺎﻟ ﺔ ‪،‬ﻳﻘﻮم‬


‫ﺑﺠﻌﻞ أﺣﺪ ث ﺷﺎﺷ ﺔ ﻣﺮﺳﻮﻣ ﺔ ﻣﺮ‬
‫ﺒﺮ ‪Pygame‬‬
‫ﺘﺪﻋﺎء ‪pygame.display.flip () at z‬ﻳﺨ‬
‫اﺳ‬
‫ﺑﺤﻴ ﺚﺗﻈﻬﺮ اﻟﺸﺎﺷ ﺔ اﻟﺠﺪﻳﺪة ﻓﻘﻂ‪.‬‬‫ﺑﺮﺳﻢ ﺷﺎﺷ ﺔ ﻓﺎرﻏ ﺔ ﻓ ﻲ ﻛﻞ ﻣﺮة ﻣﻦ ﺧﻼل ﺣﻠﻘ ﺔ ‪while loop‬ﻟﻤ ﺴﺢ اﻟﺸﺎﺷ ﺔ اﻟﻘﺪﻳﻤ ﺔ‬
‫ﺘﻤﺮار ﻹﻇﻬﺎر اﻟﻤﻮاﺿﻊ اﻟﺠﺪﻳﺪة‬
‫ﺑﺎﺳ‬‫ﺘﺤﺪﻳ ﺚ اﻟﻌﺮض‬
‫ﺑ‬‫ﺒ ﺔ ‪،‬ﻳﻘﻮم )( ‪pygame.display.flip‬‬
‫ﺘﺤﺮﻳﻚ ﻋﻨﺎﺻﺮ اﻟﻠﻌ‬
‫ﺑ‬‫ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﺑﺎﻟﺤﺮﻛ ﺔ اﻟ ﺴﻠ ﺴ ﺔ‪.‬‬‫ﻟﻠﻌﻨﺎﺻﺮ وإﺧﻔﺎء اﻟﻌﻨﺎﺻﺮ اﻟﻘﺪﻳﻤ ﺔ ‪ ،‬ﻣﻤﺎﻳﺨﻠﻖ اﻟﻮ ﻫﻢ‬

‫ﺋﻴ ﺴﻴ ﺔ‪.‬‬
‫ﺒﺪأ اﻟﺤﻠﻘ ﺔ اﻟﺮ‬
‫ﺒ ﺔ وﻳ‬
‫ﺒ ﺔ اﻷﺳﺎﺳﻴ ﺔ ‪run_game () ،‬اﻟﺬيﻳﻬﻴ ﺊ اﻟﻠﻌ‬
‫ﺑﻨﻴ ﺔ اﻟﻠﻌ‬‫ﺘﺪﻋ ﻲ اﻟ ﺴﻄﺮ اﻷﺧﻴﺮ ﻓ ﻲ‬
‫ﻳﺴ‬

‫ﺘﺮى ﻧﺎﻓﺬة ‪Pygame‬ﻓﺎرﻏ ﺔ‪.‬‬


‫ﺘﺸﻐﻴﻞ ﻫﺬا اﻟﻜﻮد اﻵن ‪ ،‬وﺳ‬
‫ﺑ‬‫ﻗﻢ‬

‫ﺒﻂ ﻟﻮن اﻟﺨﻠﻔﻴ ﺔ‬


‫ﺿ‬
‫ﺘﻠﻒ‪:‬‬
‫ﺘﻌﻴﻴﻦ ﻟﻮن ﺧﻠﻔﻴ ﺔ ﻣﺨ‬
‫ﺑ‬‫ﺘﺮاﺿ ﻲ ‪ ،‬ﻟﻜﻦ ﻫﺬا ﻣﻤﻞ‪ .‬ﻟﻨﻘﻢ‬
‫ﺑﺸﻜﻞ اﻓ‬‫ﻳﻨﺸ ﺊ ‪Pygame‬ﺷﺎﺷ ﺔﺳﻮداء‬

‫‪--‬ﻗﺺ‪--‬‬
‫‪alien_ Invasion.py‬‬ ‫‪def run_game ():‬‬
‫‪--‬ﻗﺺ‪--‬‬
‫ﺒ ﻲ"(‬
‫‪")pygame.display.set_caption‬اﻟﻐﺰو اﻷﺟﻨ‬

‫ﺗﻌﻴﻴﻦ ﻟﻮن اﻟﺨﻠﻔﻴ ﺔ‪.‬‬


‫‪#‬‬
‫ش )‪bg_color = (230 ، 230 ، 230‬‬

‫ﺒ ﺔ‪.‬‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﻌ‬
‫ﺑﺪأ اﻟﺤﻠﻘ ﺔ اﻟﺮ‬
‫‪#‬ا‬
‫اﺣﻴﺎﻧﺎ ﺻﺤﻴﺢ‪:‬‬

‫ﺗﻴﺢ واﻟﻤﺎوس‪.‬‬
‫‪#‬ﻣﺸﺎ ﻫﺪة أﺣﺪا ث ﻟﻮﺣ ﺔ اﻟﻤﻔﺎ‬
‫‪--‬ﻗﺺ‪--‬‬

‫ﺒﺮ اﻟﺤﻠﻘ ﺔ‪.‬‬


‫ﺛﻨﺎء ﻛﻞﺗﻤﺮﻳﺮة ﻋ‬
‫‪#‬أﻋﺪ رﺳﻢ اﻟﺸﺎﺷ ﺔ أ‬
‫اﻟﺨﺎﻣ ﺲ‬
‫)‪screen.fill (bg_color‬‬

‫ﺋﻴ ﺔ‪.‬‬
‫‪#‬اﺟﻌﻞ أﺣﺪ ث ﺷﺎﺷ ﺔ ﻣﺮﺳﻮﻣ ﺔ ﻣﺮ‬
‫)( ‪pygame.display.flip‬‬

‫ﺒ ﺔ اﻟﻤﺪى)(‬
‫ﻟﻌ‬

‫ﺗﺨﺰﻳﻨﻪ ﻓ ﻲ ‪ bg_color u.‬ﻫﺬا اﻟﻠﻮن‬


‫ﺑﺈﻧﺸﺎء ﻟﻮن اﻟﺨﻠﻔﻴ ﺔ و‬‫أوﻻ ً ‪ ،‬ﻧﻘﻮم‬
‫ﺋﻴ ﺴﻴ ﺔ ‪.‬‬
‫ﺒﻞ اﻟﺪﺧﻮل إﱃ ﺣﻠﻘ ﺔ ‪while‬اﻟﺮ‬
‫ﺘﻪ ﻗ‬
‫ﻳﺠ ﺐﺗﺤﺪﻳﺪه ﻣﺮة واﺣﺪة ﻓﻘﻂ ‪ ،‬ﻟﺬﻟﻚ ﻧﺤﺪد ﻗﻴﻤ‬

‫ﺘﺮاوح ﻛﻞ ﻗﻴﻤ ﺔ‬
‫ﺘﻢﺗﺤﺪﻳﺪ اﻷﻟﻮان ﻓ ﻲ ‪Pygame‬ﻋﲆ أﻧﻬﺎ أﻟﻮان ‪RGB:‬ﻣﺰﻳﺞ ﻣﻦ اﻷﺣﻤﺮ واﻷﺧﻀﺮ واﻷزرق‪.‬ﻳﻤﻜﻦ أنﺗ‬
‫ﻳ‬
‫ﻟﻮن ﻣﻦ ‪0‬إﱃ ‪255.‬ﻗﻴﻤ ﺔ اﻟﻠﻮن )‪(255 ، 0 ، 0‬ﺣﻤﺮاء ‪(0 ، 255 ، 0) ،‬ﺧﻀﺮاء ‪ ،‬و )‪(0 ، 0 ، 255‬زرﻗﺎء‪.‬ﻳﻤﻜﻨﻚ ﻣﺰج ﻗﻴﻢ‬
‫ﺘ ﺴﺎوﻳ ﺔ ﻣﻦ اﻷﺣﻤﺮ واﻷزرق واﻷﺧﻀﺮ ‪ ،‬ﻣﻤﺎ‬
‫‪RGB‬ﻹﻧﺸﺎء ‪16‬ﻣﻠﻴﻮن ﻟﻮن‪.‬ﺗﻤﺰج ﻗﻴﻤ ﺔ اﻟﻠﻮن )‪(230 ، 230 ، 230‬ﻛﻤﻴﺎ ت ﻣ‬
‫ﺗﺢ‪.‬‬
‫ﺘﺞ ﻋﻨﻪ ﻟﻮن ﺧﻠﻔﻴ ﺔ رﻣﺎدي ﻓﺎ‬
‫ﻳﻨ‬

‫‪242‬اﻟﻔﺼﻞ ‪12‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺨﺪام اﻟﺸﺎﺷ ﺔ‪.‬‬


‫ﺑﺎﺳ‬‫ﺑﻠﻮن اﻟﺨﻠﻔﻴ ﺔ‬‫ﻓ ﻲ ‪v ،‬ﻧﻤﻸ اﻟﺸﺎﺷ ﺔ‬
‫اﻷﺳﻠﻮ ب ‪ ،‬اﻟﺬيﻳﺄﺧﺬ وﺳﻴﻄ ﺔ واﺣﺪة ﻓﻘﻂ‪ :‬اﻟﻠﻮن‪.‬‬

‫إﻧﺸﺎء ﻓﺌ ﺔ اﻹﻋﺪادا ت‬
‫ﺑﺪﻻ ً ﻣﻦ إﺿﺎﻓ ﺔ اﻹﻋﺪادا ت‬ ‫ﺑﻌﺾ اﻹﻋﺪادا ت اﻟﺠﺪﻳﺪة أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ً‬
‫ﻋﺎدة‬ ‫ﺘﻨﺎ ‪،‬ﺳﻨﻘﺪم‬
‫ﺒ‬‫ﻓ ﻲ ﻛﻞ ﻣﺮة ﻧﻘﺪم ﻓﻴﻬﺎ وﻇﺎﺋﻒ ﺟﺪﻳﺪة ﻓ ﻲ ﻟﻌ‬
‫ﺘﺨﺰﻳﻦ ﺟﻤﻴﻊ اﻹﻋﺪادا ت‬
‫ﺘﻮي ﻋﲆ ﻓﺌ ﺔﺗ ﺴﻤﻰ اﻹﻋﺪادا ت ﻟ‬
‫ﺘ ﺐ وﺣﺪةﺗ ﺴﻤﻰ اﻹﻋﺪادا تﺗﺤ‬
‫ﻓ ﻲ ﺟﻤﻴﻊ أﻧﺤﺎء اﻟﻜﻮد ‪ ،‬دﻋﻨﺎ ﻧﻜ‬
‫ﺑﺪﻻ ً ﻣﻦ اﻟﻌﺪﻳﺪ ﻣﻦ اﻹﻋﺪادا ت اﻟﻔﺮدﻳ ﺔ‪.‬‬‫ﺑﺎﻟﻤﺮور ﺣﻮل ﻛﺎﺋﻦ إﻋﺪادا ت واﺣﺪ‬‫ﻓ ﻲ ﻣﻜﺎن واﺣﺪ‪.‬ﻳ ﺴﻤﺢ ﻟﻨﺎ ﻫﺬا اﻷﺳﻠﻮ ب‬

‫ﺒ ﺔ ﻣﻊ ﻧﻤﻮ ﻣﺸﺮوﻋﻨﺎ‪.‬‬
‫ﺑ ﺴﻂ وﻳﺠﻌﻞ ﻣﻦ اﻟ ﺴﻬﻞﺗﻌﺪﻳﻞ ﻣﻈﻬﺮ اﻟﻠﻌ‬
‫ﺘﻨﺎ أ‬
‫ﺘﺪﻋﺎءا ت وﻇﻴﻔ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ ذﻟﻚ ‪ ،‬ﻓﺈﻧﻪﻳﺠﻌﻞ اﺳ‬
‫ﺗﻨﺎ‪.‬‬
‫ﺘﻠﻔ ﺔ ﻓ ﻲ ﻣﻠﻔﺎ‬ ‫ﺑﺪﻻ ً ﻣﻦ اﻟ‬
‫ﺒﺤ ﺚ ﻋﻦ إﻋﺪادا ت ﻣﺨ‬ ‫ﺑﻌﺾ اﻟﻘﻴﻢ ﻓ ﻲ ‪settings.py‬‬‫ﺘﻐﻴﻴﺮ‬
‫ﺑ‬‫ﺒ ﺴﺎﻃ ﺔ‬
‫ﺑ‬‫ﺒ ﺔ ‪،‬ﺳﻨﻘﻮم‬
‫ﺘﻌﺪﻳﻞ اﻟﻠﻌ‬
‫ﻟ‬

‫إﻟﻴﻚ ﻓﺌ ﺔ اﻹﻋﺪادا ت اﻷوﻟﻴ ﺔ ‪:‬‬

‫‪settings.py‬‬ ‫إﻋﺪادا ت اﻟﻔﺼﻞ ‪():‬‬


‫ﺘﺨﺰﻳﻦ ﻛﺎﻓ ﺔ إﻋﺪادا ت اﻟﻐﺰو اﻟﻔﻀﺎﺋ ﻲ‪"" ".‬‬
‫"""ﻓﺌ ﺔ ﻟ‬

‫ﺗ ﻲ(‪:‬‬
‫__ ‪)def __init‬ذا‬
‫ﺒ ﺔ‪"" ".‬‬
‫ﺗﻬﻴﺌ ﺔ إﻋﺪادا ت اﻟﻠﻌ‬
‫"""‬
‫‪#‬إﻋﺪادا ت اﻟﺸﺎﺷ ﺔ‬
‫ﻋﺮض_ﻧﻔ ﺲ اﻟﺸﺎﺷ ﺔ ‪= 1200‬‬
‫ﺗﻔﺎع اﻟﺸﺎﺷ ﺔ_اﻟﻨﻔ ﺲ ‪= 800‬‬
‫ار‬
‫)‪self.bg_color = (230 ، 230 ، 230‬‬

‫ﺘﻌﺪﻳﻞ‬
‫ﺑﺎﻟ‬‫ﺗﻨﺎ ‪ ،‬ﻗﻢ‬
‫ﺘﺨﺪاﻣﻪ ﻟﻠﻮﺻﻮل إﱃ إﻋﺪادا‬
‫ﺜﻴﻞ ﻟﻺﻋﺪادا ت واﺳ‬
‫ﻟﻌﻤﻞ ﻣ‬
‫ﺘﺎﻟ ﻲ‪:‬‬
‫‪alien_invasion.py‬ﻋﲆ اﻟﻨﺤﻮ اﻟ‬

‫‪alien_ Invasion.py‬‬
‫‪--‬ﻗﺺ‪--‬‬
‫ﺘﻴﺮاد ‪pygame‬‬
‫اﺳ‬

‫ﺘﻴﺮاد اﻹﻋﺪادا ت‬
‫ﻣﻦ إﻋﺪادا ت اﺳ‬

‫‪def run_game ():‬‬


‫ﺗﻬﻴﺌ ﺔ ‪pygame‬واﻹﻋﺪادا ت وﻛﺎﺋﻦ اﻟﺸﺎﺷ ﺔ‪.‬‬
‫‪#‬‬
‫)( ‪pygame.init‬‬
‫= ‪u ai_settings‬اﻹﻋﺪادا ت )(‬
‫‪v‬اﻟﺸﺎﺷ ﺔ ( ‪= pygame.display.set_mode‬‬
‫))‪(ai_settings.screen_width، ai_settings.screen_height‬‬
‫ﺒ ﻲ"(‬
‫‪")pygame.display.set_caption‬اﻟﻐﺰو اﻷﺟﻨ‬

‫ﺒ ﺔ‪.‬‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﻌ‬
‫ﺑﺪأ اﻟﺤﻠﻘ ﺔ اﻟﺮ‬
‫‪#‬ا‬
‫اﺣﻴﺎﻧﺎ ﺻﺤﻴﺢ‪:‬‬

‫‪--‬ﻗﺺ‪--‬‬
‫ﺒﺮ اﻟﺤﻠﻘ ﺔ‪.‬‬
‫ﺛﻨﺎء ﻛﻞﺗﻤﺮﻳﺮة ﻋ‬
‫‪#‬أﻋﺪ رﺳﻢ اﻟﺸﺎﺷ ﺔ أ‬
‫ث‬ ‫)‪screen.fill (ai_settings.bg_color‬‬

‫ﺋﻴ ﺔ‪.‬‬
‫‪#‬اﺟﻌﻞ أﺣﺪ ث ﺷﺎﺷ ﺔ ﻣﺮﺳﻮﻣ ﺔ ﻣﺮ‬
‫)( ‪pygame.display.flip‬‬

‫ﺒ ﺔ اﻟﻤﺪى)(‬
‫ﻟﻌ‬

‫‪243-‬ﻣ ﺴﻌﻮد‬
‫‪Machine Translated by Google‬‬

‫ﺗﺨﺰﻳﻨﻪ ﻓ ﻲ‬
‫ﺜﻴﻞ ﻣﻦ اﻹﻋﺪادا ت و‬
‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﺛﻢ ﻧﻘﻮم‬‫ﺋﻴ ﺴ ﻲ ‪،‬‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﺮ‬
‫ﺘﻴﺮاد اﻹﻋﺪادا ت إﱃ ﻣﻠﻒ اﻟ‬
‫ﺑﺎﺳ‬‫ﻧﻘﻮم‬
‫ﺘﺨﺪمﺳﻤﺎ ت ‪screen_width‬‬
‫ﺑﺈﻧﺸﺎء ﺷﺎﺷ ﺔ ‪v ،‬ﻓﺈﻧﻨﺎ ﻧ ﺴ‬‫ﺘﺪﻋﺎء ‪pygame.init () u.‬ﻋﻨﺪﻣﺎ ﻧﻘﻮم‬
‫ﺑﻌﺪ إﺟﺮاء اﺳ‬
‫‪ai_settings‬‬
‫ﺘﺨﺪم إﻋﺪادا ت ‪ai‬ﻟﻠﻮﺻﻮل إﱃ ﻟﻮن اﻟﺨﻠﻔﻴ ﺔ ﻋﻨﺪ ﻣﻞء اﻟﺸﺎﺷ ﺔ ﻓ ﻲ ‪w‬أ ً‬
‫ﻳﻀﺎ‪.‬‬ ‫ﺛﻢ ﻧ ﺴ‬
‫و ‪screen_height‬ﻣﻦ ‪ai_settings ،‬‬

‫إﺿﺎﻓ ﺔ ﺻﻮرة اﻟ ﺴﻔﻴﻨ ﺔ‬


‫ﺘﺨﺪم ﻃﺮﻳﻘ ﺔ‬
‫ﺛﻢ ﻧ ﺴ‬‫ﺘﺤﻤﻴﻞ ﺻﻮرة‬
‫ﺑ‬‫ﺘﻨﺎ‪ .‬ﻟﺮﺳﻢﺳﻔﻴﻨ ﺔ اﻟﻼﻋ ﺐ ﻋﲆ اﻟﺸﺎﺷ ﺔ ‪،‬ﺳﻨﻘﻮم‬
‫ﺒ‬‫اﻵن دﻋﻨﺎ ﻧﻀﻴﻒ اﻟ ﺴﻔﻴﻨ ﺔ إﱃ ﻟﻌ‬
‫)( ‪Pygame blit‬ﻟﺮﺳﻢ اﻟﺼﻮرة‪.‬‬

‫ﺒﺎه إﻟﻴﻪ‬
‫ﺘ‬‫ﺑﻚ ‪،‬ﺗﺄﻛﺪ ﻣﻦ اﻻﻧ‬
‫ﺘﻴﺎر ﻋﻤﻞ ﻓﻨ ﻲﻷﻟﻌﺎ‬
‫ﻋﻨﺪ اﺧ‬
‫ﺘﺨﺪام رﺳﻮﻣﺎ ت ﻣﺮﺧﺼ ﺔ ﻣﺠﺎﻧًﺎﻳﻤﻜﻨﻚﺗﻌﺪﻳﻠﻬﺎ ﻣﻦ ﻣﻮﻗﻊ‬ ‫ﺜﺮ أﻣﺎﻧًﺎ واﻷرﺧﺺ ﻟﻠ‬
‫ﺒﺪء ﻫ ﻲ اﺳ‬ ‫ﺘﺮﺧﻴﺺ‪ .‬اﻟﻄﺮﻳﻘ ﺔ اﻷﻛ‬
‫اﻟ‬
‫ﺜﻞ ‪http://pixabay.com/.‬‬
‫وﻳ ﺐ ﻣ‬
‫ﺘﻚ ‪ ،‬ﻟﻜﻨﻬﺎ أﺳﻬﻞ‬
‫ﺒ‬‫ﺒﺎ ﻓ ﻲ ﻟﻌ‬
‫ﺘﺨﺪام أي ﻧﻮع ﻣﻦ ﻣﻠﻔﺎ ت اﻟﺼﻮرﺗﻘﺮﻳ ً‬
‫ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺘﺮاﺿ ﻲ‪.‬‬
‫ﺑﺸﻜﻞ اﻓ‬‫ﺘﺤﻤﻴﻞ اﻟﺼﻮر اﻟﻨﻘﻄﻴ ﺔ‬
‫ﺑ‬‫ﺘﺨﺪم ﻣﻠﻒ ﺻﻮرة ﻧﻘﻄﻴ ﺔ )‪(.bmp‬ﻷن ‪Pygame‬ﻳﻘﻮم‬
‫إذا ﻛﻨ ﺖﺗ ﺴ‬
‫ﺒﺎ ت‬
‫ﺘ‬‫ﺘﻤﺪ ﻋﲆ ﻣﻜ‬
‫ﺑﻌﺾ أﻧﻮاع اﻟﻤﻠﻔﺎ تﺗﻌ‬‫ﺘﺨﺪام أﻧﻮاع ﻣﻠﻔﺎ ت أﺧﺮى ‪ ،‬إﻻ أن‬
‫ﻋﲆ اﻟﺮﻏﻢ ﻣﻦ أﻧﻪﻳﻤﻜﻨﻚﺗﻜﻮﻳﻦ ‪Pygame‬ﻻﺳ‬
‫ﺑﻚ‪.‬‬‫ﺗﺮ اﻟﺨﺎص‬
‫ﺒﻴﻮ‬
‫ﺘﻬﺎ ﻋﲆ ﺟﻬﺎز اﻟﻜﻤ‬
‫ﺒﻴ‬‫ﺜ‬
‫ﺻﻮر ﻣﻌﻴﻨ ﺔﻳﺠ ﺐﺗ‬
‫ﺘﺨﺪام أدوا ت‬
‫ﺑﺎﺳ‬‫ﺘﻨ ﺴﻴﻘﺎ ت ‪ gpj.‬أو ‪ gnp.‬أو ‪ ، fig.‬وﻟﻜﻦﻳﻤﻜﻨﻚﺗﺤﻮﻳﻠﻬﺎ إﱃ ﺻﻮر ﻧﻘﻄﻴ ﺔ‬
‫ﺑ‬‫ﺘﺠﺪ ﻫﺎ‬
‫ﺘ ﻲﺳ‬
‫)ﻣﻌﻈﻢ اﻟﺼﻮر اﻟ‬
‫ﺜﻞ ‪Photoshop‬و ‪GIMP‬و )‪Paint.‬‬
‫ﻣ‬
‫ﺗﻬﺎ‪.‬‬
‫ﺘﺮ‬‫ﺘ ﻲ اﺧ‬
‫ﺑﺸﻜﻞ ﺧﺎص إﱃ ﻟﻮن اﻟﺨﻠﻔﻴ ﺔ ﻓ ﻲ اﻟﺼﻮرة اﻟ‬‫ﺒﻪ‬
‫ﺘ‬‫اﻧ‬
‫ﺑﺸﻜﻞ‬‫ﺑﻚ‬
‫ﺘﻈﻬﺮ أﻟﻌﺎ‬
‫ﺘﺨﺪام ﻣﺤﺮر اﻟﺼﻮر‪.‬ﺳ‬
‫ﺑﺎﺳ‬‫ﺑﺄي ﻟﻮن ﺧﻠﻔﻴ ﺔ‬‫ﺒﺪاﻟﻬﺎ‬
‫ﺘ‬‫ﺑﺨﻠﻔﻴ ﺔ ﺷﻔﺎﻓ ﺔﻳﻤﻜﻨﻚ اﺳ‬‫ﺜﻮر ﻋﲆ ﻣﻠﻒ‬
‫ﺣﺎول اﻟﻌ‬
‫ﺒ ﺔ‪.‬‬
‫ﺑﻖ ﻟﻮن ﺧﻠﻔﻴ ﺔ اﻟﺼﻮرة ﻣﻊ ﻟﻮن ﺧﻠﻔﻴ ﺔ اﻟﻠﻌ‬
‫أﻓﻀﻞ إذاﺗﻄﺎ‬

‫ﺑﺨﻠﻔﻴ ﺔ اﻟﺼﻮرة‪.‬‬‫ﺘﻚ‬
‫ﺒ‬ ‫ﺑﺪﻻ ً ﻣﻦ ذﻟﻚ ‪،‬ﻳﻤﻜﻨﻚ ﻣﻄﺎ‬
‫ﺑﻘ ﺔ ﺧﻠﻔﻴ ﺔ ﻟﻌ‬

‫ﺘﺨﺪام ﻣﻠﻒ ‪)ship.bmp‬اﻟﺸﻜﻞ ‪12-1) ،‬واﻟﺬي‬


‫ﺒ ﺔ ﻟـ ‪Alien Invasion ،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺑﺎﻟﻨ ﺴ‬
‫ﺘﺎ ب ﻣﻦ ﺧﻼل ‪https://www.nostarch.com/‬‬
‫ﺘﺎح ﻓ ﻲ ﻣﻮارد اﻟﻜ‬
‫ﻣ‬
‫ﺑﺈﻧﺸﺎء ﻣﺠﻠﺪ‬‫ﺘﺨﺪﻣﻬﺎ ﻓ ﻲ ﻫﺬا اﻟﻤﺸﺮوع‪ .‬ﻗﻢ‬
‫ﺘ ﻲ ﻧﺴ‬
‫ﺑﻖ ﻟﻮن ﺧﻠﻔﻴ ﺔ اﻟﻤﻠﻒ ﻣﻊ اﻹﻋﺪادا ت اﻟ‬
‫ﺘﻄﺎ‬
‫‪pythoncrashcourse /.‬ﻳ‬
‫ﺋﻴ ﺴ ﻲ ‪(alien_invasion).‬اﺣﻔﻆ ﻣﻠﻒ ‪ship.bmp‬ﻓ ﻲ ﻣﺠﻠﺪ اﻟﺼﻮر ‪.‬‬
‫ﻳ ﺴﻤﻰ اﻟﺼﻮر داﺧﻞ ﻣﺠﻠﺪ ﻣﺸﺮوﻋﻚ اﻟﺮ‬

‫ﺒﻲ‬
‫اﻟﺸﻜﻞ ‪12-1:‬ﺳﻔﻴﻨ ﺔ ﻏﺰو أﺟﻨ‬

‫‪244‬اﻟﻔﺼﻞ ‪12‬‬
‫‪Machine Translated by Google‬‬

‫إﻧﺸﺎء ﻓﺌ ﺔ اﻟ ﺴﻔﻴﻨ ﺔ‬
‫ﺘﻲ‬
‫ﺘ ﺐ وﺣﺪةﺗ ﺴﻤﻰ اﻟ ﺴﻔﻴﻨ ﺔ ‪ ،‬واﻟ‬
‫ﺘﻨﺎ ‪،‬ﺳﻨﻜ‬
‫ﺘﺨﺪامﺳﻔﻴﻨ‬
‫ﺘﺎج إﱃ ﻋﺮﺿﻬﺎ ﻋﲆ اﻟﺸﺎﺷ ﺔ‪ .‬ﻻﺳ‬
‫ﺘﻴﺎر ﺻﻮرة ﻟﻠ ﺴﻔﻴﻨ ﺔ ‪ ،‬ﻧﺤ‬
‫ﺑﻌﺪ اﺧ‬
‫ﺘﻮي ﻋﲆ ﻓﺌ ﺔ اﻟ ﺴﻔﻴﻨ ﺔ‪.‬ﺳﻴﺪﻳﺮ ﻫﺬا اﻟﻔﺼﻞ ﻣﻌﻈﻢﺳﻠﻮكﺳﻔﻴﻨ ﺔ اﻟﻼﻋ ﺐ‪.‬‬
‫ﺗﺤ‬

‫‪ship.py‬‬ ‫ﺘﻴﺮاد ‪pygame‬‬


‫اﺳ‬

‫ﻓﺌ ﺔ اﻟ ﺴﻔﻴﻨ ﺔ ‪():‬‬

‫ﺗ ﻲ ‪ ،‬ﺷﺎﺷ ﺔ(‪:‬‬
‫__ ‪)def __init‬ذا‬
‫ﺒﺪاﻳ ﺔ‪"" ".‬‬
‫ﺗﻌﻴﻴﻦ ﻣﻮﺿﻊ اﻟ‬ ‫ﺗﻬﻴﺌ ﺔ اﻟ ﺴﻔﻴﻨ ﺔ و‬
‫"""‬
‫= ‪self.screen‬ﺷﺎﺷ ﺔ‬

‫ﺘﻄﻴﻠﻬﺎ‪.‬‬
‫ﺘﺤﻤﻴﻞ ﺻﻮرة اﻟ ﺴﻔﻴﻨ ﺔ واﺣﺼﻞ ﻋﲆ ﻣ ﺴ‬
‫ﺑ‬‫‪#‬ﻗﻢ‬
‫اﻷﺷﻌ ﺔ‬
‫)'‪self.image = pygame.image.load ('images / ship.bmp‬‬
‫ﻓﻮق‬
‫)( ‪self.rect = self.image.get_rect‬‬
‫ﺒﻨﻔ ﺴﺠﻴ ﺔ‬
‫اﻟ‬
‫)( ‪self.screen_rect = screen.get_rect‬‬

‫ﺘﺼﻒ اﻟﺠﺰء اﻟ ﺴﻔﻠ ﻲ ﻣﻦ اﻟﺸﺎﺷ ﺔ‪.‬‬


‫ﺑﺪأ ﻛﻞﺳﻔﻴﻨ ﺔ ﺟﺪﻳﺪة ﻓ ﻲ ﻣﻨ‬
‫‪#‬ا‬
‫‪x‬‬ ‫‪self.rect.centerx = self.screen_rect.centerx‬‬
‫‪self.rect.bottom = self.screen_rect.bottom‬‬

‫ﺗ ﻲ(‪:‬‬
‫‪)y def blitme‬ذا‬
‫"""ارﺳﻢ اﻟ ﺴﻔﻴﻨ ﺔ ﻓ ﻲ ﻣﻮﻗﻌﻬﺎ اﻟﺤﺎﻟ ﻲ‪"" ".‬‬
‫ﺗ ﻲ(‬
‫ﺗﻴ ﺔ ‪،‬ﺗﺼﺤﻴﺢ ذا‬
‫‪)self.screen.blit‬ﺻﻮرة ذا‬

‫ﺗ ﻲ واﻟﺸﺎﺷ ﺔ ﺣﻴ ﺚ‬
‫ﺘﻴﻦ‪ :‬اﻟﻤﺮﺟﻊ اﻟﺬا‬
‫ﺗﺄﺧﺬ ﻃﺮﻳﻘ ﺔ )( __ ‪__init‬ﻟﻠ ﺴﻔﻴﻨ ﺔ ﻣﻌﻠﻤ‬
‫ﺘﻴﺮاد وﺣﺪة ‪pygame .‬‬
‫ﺑﺎﺳ‬‫أوﻻ ً ‪ ،‬ﻧﻘﻮم‬
‫ﺳﻨﺮﺳﻢ اﻟ ﺴﻔﻴﻨ ﺔ‪.‬‬
‫ﺘﺨﺰﻳﻨﻪ ﻓ ﻲ‬
‫ﺑ‬‫ﺜﻞ اﻟ ﺴﻔﻴﻨ ﺔ ‪ ،‬ﻧﻘﻮم‬
‫ﺑﺈرﺟﺎعﺳﻄﺢﻳﻤ‬‫ﺗﻘﻮم ﻫﺬه اﻟﻮﻇﻴﻔ ﺔ‬
‫ﺘﺤﻤﻴﻞ اﻟﺼﻮرة ‪ ،‬ﻧ ﺴﻤ ﻲ ‪pygame.image.load () u.‬‬
‫ﻟ‬
‫ﺗﻴ ﺔ‪.‬‬
‫اﻟﺼﻮرة اﻟﺬا‬
‫ﺘﻄﻴﻞ اﻟ ﺴﻄﺢ‬
‫ﺘﺨﺪم )( ‪get_rect‬ﻟﻠﻮﺻﻮل إﱃ ﻣ ﺴ‬
‫ﺑﻤﺠﺮدﺗﺤﻤﻴﻞ اﻟﺼﻮرة ‪ ،‬ﻧ ﺴ‬
‫ﺘﻄﻴﻼ ت‬
‫ﺜﻞ اﻟﻤ ﺴ‬
‫ﺒﺔ ﻣ‬
‫ﺘﻌﺎﻣﻞ ﻣﻊ ﻋﻨﺎﺻﺮ اﻟﻠﻌ‬
‫ﺘﻴﺢ ﻟﻚ اﻟ‬
‫ﺘ ﻲﺗﺠﻌﻞ ‪Pygame‬ﻓﻌﺎﻟ ﺔ ﻟﻠﻐﺎﻳ ﺔ ﻫﻮ أﻧﻬﺎﺗ‬
‫ﺒﺎ ب اﻟ‬
‫اﻟ ﺴﻤ ﺔ ‪v.‬أﺣﺪ اﻷﺳ‬
‫ﺘﻄﻴﻞ أﻣ ﺮًا ﻓﻌﺎﻻ ًﻷن‬
‫ﺒﺮ ﻣﻌﺎﻣﻠ ﺔ ﻋﻨﺼﺮ ﻣﺎ ﻛﻤ ﺴ‬
‫ﺘ‬‫ﺘﻄﻴﻠ ﺔ‪.‬ﺗﻌ‬
‫ﺜﻞ اﻟﺰواﻳﺎ اﻟﻤ ﺴ‬
‫ﺗﻤﺎﻣﺎ ﻣ‬
‫ً‬ ‫ﺘﺸﻜﻞ‬
‫ﺘﻰ ﻟﻮ ﻟﻢﺗ‬
‫ﺘﻄﻴﻼ ت( ‪ ،‬ﺣ‬
‫)اﻟﻤ ﺴ‬
‫ﺑﺤﻴ ﺚ ﻻﻳﻼﺣﻆ أي ﺷﺨﺺﻳﻠﻌ ﺐ‬‫ﺑﻤﺎﻳﻜﻔ ﻲ‬ ‫ً‬
‫ﻋﺎدة ﻣﺎﻳﻌﻤﻞ ﻫﺬا اﻟﻨﻬﺞ ﺟﻴﺪًا‬ ‫ﺑ ﺴﻴﻄ ﺔ‪.‬‬‫ﺒﺎرة ﻋﻦ أﺷﻜﺎل ﻫﻨﺪﺳﻴ ﺔ‬
‫ﺘﻄﻴﻼ ت ﻋ‬
‫اﻟﻤ ﺴ‬
‫ﺒ ﺔ‪.‬‬
‫ﺑﺎﻟﺸﻜﻞ اﻟﺪﻗﻴﻖ ﻟﻜﻞ ﻋﻨﺼﺮ ﻣﻦ ﻋﻨﺎﺻﺮ اﻟﻠﻌ‬‫ﺒ ﺔ أﻧﻨﺎ ﻻ ﻧﻌﻤﻞ‬
‫اﻟﻠﻌ‬

‫ﺛﻴﺎ ت ‪x‬و ‪y‬‬


‫ﺘﺨﺪام إﺣﺪا‬
‫ﺘﻄﻴﻞ ‪،‬ﻳﻤﻜﻨﻚ اﺳ‬
‫ﺑﺠ ﺴﻢ ﻣ ﺴ‬‫ﻋﻨﺪ اﻟﻌﻤﻞ‬
‫ﺑﺎﻹﺿﺎﻓ ﺔ إﱃ اﻟﻤﺮﻛﺰ‪.‬ﻳﻤﻜﻨﻚﺗﻌﻴﻴﻦ أي ﻣﻦ ﻫﺬه اﻟﻘﻴﻢ‬‫ﺘﻄﻴﻞ ‪،‬‬
‫ﻣﻦ اﻟﺤﻮاف اﻟﻌﻠﻮﻳ ﺔ واﻟ ﺴﻔﻠﻴ ﺔ واﻟﻴ ﺴﺮى واﻟﻴﻤﻨﻰ ﻟﻠﻤ ﺴ‬
‫ﺘﻘﻴﻢ‪.‬‬
‫ﺘﺤﺪﻳﺪ اﻟﻤﻮﺿﻊ اﻟﺤﺎﻟ ﻲ ﻟﻠﻤ ﺴ‬
‫ﻟ‬

‫ﺒ ﺔ ‪ ،‬ﻓﺎﻋﻤﻞ ﻣﻊ ‪center‬أو ‪centx‬أو‬


‫ﺘﻮﺳﻴﻂ ﻋﻨﺼﺮ ﻟﻌ‬
‫ﺑ‬‫ﻋﻨﺪﻣﺎﺗﻘﻮم‬

‫ﺘﺨﺪم اﻟ ﺴﻤﺎ ت اﻟﻌﻠﻮﻳ ﺔ أو اﻟ ﺴﻔﻠﻴ ﺔ أو اﻟﻴ ﺴﺮى أو‬


‫ﺘﻘﻴﻢ‪ .‬ﻋﻨﺪﻣﺎﺗﻌﻤﻞ ﻋﲆ ﺣﺎﻓ ﺔ اﻟﺸﺎﺷ ﺔ ‪ ،‬اﺳ‬
‫اﻟﺼﻔﺎ ت اﻟﻤﺮﻛﺰﻳ ﺔ ﻟﻠﻤ ﺴ‬
‫ﺛﻴﺎ ت‬
‫ﺘﺨﺪامﺳﻤﺎ ت ‪x‬و ‪y ،‬و ﻫﻤﺎ إﺣﺪا‬
‫ﺘﻘﻴﻢ ‪،‬ﻳﻤﻜﻨﻚ ﻓﻘﻂ اﺳ‬
‫ﺒﻂ اﻟﻤﻮﺿﻊ اﻷﻓﻘ ﻲ أو اﻟﺮأﺳ ﻲ ﻟﻠﻤ ﺴ‬
‫ﺑﻀ‬‫اﻟﻴﻤﻨﻰ ‪ .‬ﻋﻨﺪﻣﺎﺗﻘﻮم‬
‫ﺘﻌﻴﻦ ﻋﲆ ﻣﻄﻮري‬
‫ﺑﺎ ت ﻛﺎنﻳ‬
‫‪x‬و ‪y‬ﻓ ﻲ اﻟﺰاوﻳ ﺔ اﻟﻴ ﺴﺮى اﻟﻌﻠﻮﻳ ﺔ‪.‬ﺗﻮﻓﺮ ﻟﻚ ﻫﺬه اﻟ ﺴﻤﺎ ت ﻣﻦ اﻻﺿﻄﺮار إﱃ إﺟﺮاء ﺣ ﺴﺎ‬
‫ﺜﻴ ﺮًا‪.‬‬
‫ﺘﺨﺪﻣﻬﺎ ﻛ‬
‫ﺘﺴ‬‫ﺘﺠﺪ أﻧﻚﺳ‬
‫ﺑﻖ إﺟﺮاؤ ﻫﺎﻳﺪوﻳًﺎ ‪ ،‬وﺳ‬
‫اﻷﻟﻌﺎ ب ﻓ ﻲ اﻟ ﺴﺎ‬

‫‪245-‬ﻣ ﺴﻌﻮد‬
‫‪Machine Translated by Google‬‬

‫ﺛﻴﺎ ت ﻛﻠﻤﺎﺗﻨﺰل إﱃ اﻷﺳﻔﻞ‬


‫ﺗﺰداد اﻹﺣﺪا‬
‫‪N ote‬ﻓ ﻲ ‪Pygame ،‬ﻳﻜﻮن اﻷﺻﻞ )‪(0 ، 0‬ﻓ ﻲ اﻟﺰاوﻳ ﺔ اﻟﻌﻠﻮﻳ ﺔ اﻟﻴ ﺴﺮى ﻣﻦ اﻟﺸﺎﺷ ﺔ ‪ ،‬و‬
‫ﺛﻴﺎ ت‬
‫ﺑﻬﺎ اﻹﺣﺪا‬‫ﺑﻤﻘﺎس ‪1200 × 800 ،‬ﻳﻜﻮن اﻷﺻﻞ ﻓ ﻲ اﻟﺰاوﻳ ﺔ اﻟﻌﻠﻮﻳ ﺔ اﻟﻴ ﺴﺮى واﻟﺰاوﻳ ﺔ اﻟﻴﻤﻨﻰ اﻟ ﺴﻔﻠﻴ ﺔ‬‫وإﱃ اﻟﻴﻤﻴﻦ‪ .‬ﻋﲆ ﺷﺎﺷ ﺔ‬
‫‪(1200 ، 800).‬‬

‫ﺛﻢ اﺟﻌﻞ‬
‫ﺘﻄﻴﻞ اﻟﺸﺎﺷ ﺔ ﻓ ﻲ ‪self.screen_rect w ،‬‬
‫ﺘﺨﺰﻳﻦ ﻣ ﺴ‬
‫ﺑ‬‫ﺑﺬﻟﻚ ‪ ،‬ﻗﻢ أوﻻ ً‬‫ﺘﺼﻒ اﻟﺸﺎﺷ ﺔ‪ .‬ﻟﻠﻘﻴﺎم‬
‫ﺳﻨﻀﻊ اﻟ ﺴﻔﻴﻨ ﺔ ﻓ ﻲ أﺳﻔﻞ ﻣﻨ‬
‫ﺑﻖ ‪centx‬‬
‫ﺛ ﻲ ‪x‬ﻟﻤﺮﻛﺰ اﻟ ﺴﻔﻴﻨ ﺔ(ﺗﻄﺎ‬
‫ﻗﻴﻤ ﺔ ‪)self.rect.centerx‬اﻹﺣﺪا‬

‫ﺘﻘﻴﻢ ﻟﻠﺸﺎﺷ ﺔ ‪.‬‬


‫ﺛ ﻲ ‪y‬ﻟﻘﺎع اﻟ ﺴﻔﻴﻨ ﺔ( ﻣ ﺴﺎوﻳ ﺔ ﻟﻘﻴﻤ ﺔ اﻟ ﺴﻤ ﺔ اﻟ ﺴﻔﻠﻴ ﺔ ﻟﻠﻤ ﺴ‬
‫ﺘﻄﻴﻞ اﻟﺸﺎﺷ ﺔ س‪ .‬اﺟﻌﻞ ﻗﻴﻤ ﺔ ‪)self.rect.bottom‬إﺣﺪا‬
‫ﺻﻔ ﺔ ﻣ ﺴ‬

‫ﺘﻢﺗﻮﺳﻴﻄﻬﺎ أﻓﻘ ًﻴﺎ وﻣﺤﺎذاة اﻟﺠﺰء اﻟ ﺴﻔﻠ ﻲ ﻣﻦ‬


‫ﺑﺤﻴ ﺚﻳ‬‫ﺘﻘﻴﻤ ﺔ ﻟﻮﺿﻊ ﺻﻮرة اﻟ ﺴﻔﻴﻨ ﺔ‬
‫ﺘﺨﺪم ‪ Pygame‬ﻫﺬه اﻟ ﺴﻤﺎ ت اﻟﻤ ﺴ‬
‫ﺘﺴ‬‫ﺳ‬

‫ﺷﺎﺷ ﺔ‪.‬‬

‫ﺑﻮاﺳﻄ ﺔ ‪self.rect.‬‬‫ﺘﺮﺳﻢ اﻟﺼﻮرة ﻋﲆ اﻟﺸﺎﺷ ﺔ ﻓ ﻲ اﻟﻤﻮﺿﻊ اﻟﻤﺤﺪد‬


‫ﺘ ﻲﺳ‬
‫ﻓ ﻲ ‪y‬ﻧﺤﺪد ﻃﺮﻳﻘ ﺔ ‪blitme () ،‬واﻟ‬

‫رﺳﻢ اﻟ ﺴﻔﻴﻨ ﺔ ﻋﲆ اﻟﺸﺎﺷ ﺔ‬


‫ﺘﺪﻋ ﻲ ﻃﺮﻳﻘ ﺔ )( ‪blitme‬ﻟﻠ ﺴﻔﻴﻨ ﺔ ‪:‬‬
‫ﺗﺴ‬‫ُﻨﺸ ﺊﺳﻔﻴﻨ ﺔ و‬
‫ﺘﻰﺗ‬
‫ﺘﺤﺪﻳ ﺚ ‪alien_invasion.py‬ﺣ‬
‫ﺑ‬‫ﻟﻨﻘﻢ اﻵن‬

‫‪--‬ﻗﺺ‪--‬‬
‫‪alien_ Invasion.py‬‬ ‫ﺘﻴﺮاد اﻹﻋﺪادا ت‬
‫ﻣﻦ إﻋﺪادا ت اﺳ‬
‫ﺘﻴﺮاد اﻟ ﺴﻔﻴﻨ ﺔ‬
‫ﻣﻦﺳﻔﻴﻨ ﺔ اﺳ‬

‫‪def run_game ():‬‬


‫‪--‬ﻗﺺ‪--‬‬
‫ﺒ ﻲ"(‬
‫‪")pygame.display.set_caption‬اﻟﻐﺰو اﻷﺟﻨ‬

‫‪#‬اﺻﻨﻊﺳﻔﻴﻨ ﺔ‪.‬‬
‫= ‪u ship‬ﺳﻔﻴﻨ ﺔ )ﺷﺎﺷ ﺔ(‬

‫ﺒ ﺔ‪.‬‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﻌ‬
‫ﺑﺪأ اﻟﺤﻠﻘ ﺔ اﻟﺮ‬
‫‪#‬ا‬
‫اﺣﻴﺎﻧﺎ ﺻﺤﻴﺢ‪:‬‬

‫‪--‬ﻗﺺ‪--‬‬
‫ﺒﺮ اﻟﺤﻠﻘ ﺔ‪.‬‬
‫ﺛﻨﺎء ﻛﻞﺗﻤﺮﻳﺮة ﻋ‬
‫‪#‬أﻋﺪ رﺳﻢ اﻟﺸﺎﺷ ﺔ أ‬
‫)‪screen.fill (ai_settings.bg_color‬‬
‫اﻟﺨﺎﻣ ﺲ‬
‫)( ‪ship.blitme‬‬

‫ﺋﻴ ﺔ‪.‬‬
‫‪#‬اﺟﻌﻞ أﺣﺪ ث ﺷﺎﺷ ﺔ ﻣﺮﺳﻮﻣ ﺔ ﻣﺮ‬
‫)( ‪pygame.display.flip‬‬

‫ﺒ ﺔ اﻟﻤﺪى)(‬
‫ﻟﻌ‬

‫ﺒﻞ ﺣﻠﻘ ﺔ ‪main u‬‬


‫ﺗ ﻲﻗ‬
‫ﺑﻌﺪ إﻧﺸﺎء اﻟﺸﺎﺷ ﺔ‪.‬ﻳﺠ ﺐ أنﺗﺄ‬‫ﺜﻴﻞ ﻟﻠ ﺴﻔﻴﻨ ﺔ ) اﻟ ﺴﻔﻴﻨ ﺔ اﻟﻤ ﺴﻤﺎة(‬
‫ﺑﻌﻤﻞ ﻣ‬‫ﺛﻢ ﻧﻘﻮم‬‫ﺘﻴﺮاد اﻟ ﺴﻔﻴﻨ ﺔ‬
‫ﺑﺎﺳ‬‫ﻧﻘﻮم‬

‫ﺒﺮ اﻟﺤﻠﻘ ﺔ‪.‬‬


‫ﺜﻴﻞ ﺟﺪﻳﺪ ﻟﻠ ﺴﻔﻴﻨ ﺔ ﻓ ﻲ ﻛﻞ ﻣﺮةﺗﻤﺮ ﻋ‬
‫ﺑﺈﻧﺸﺎء ﻣ‬‫ﺘﻰ ﻻ ﻧﻘﻮم‬
‫‪while‬ﺣ‬

‫ﺑﺤﻴ ﺚﺗﻈﻬﺮ اﻟ ﺴﻔﻴﻨ ﺔ أﻋﲆ اﻟﺨﻠﻔﻴ ﺔ ‪v.‬‬‫ﺑﻌﺪ ﻣﻞء اﻷرﺿﻴ ﺔ اﻟﺨﻠﻔﻴ ﺔ ‪،‬‬
‫ﺘﺪﻋﺎء )( ‪ship.blitme‬‬
‫ﻧﺮﺳﻢ اﻟ ﺴﻔﻴﻨ ﺔ ﻋﲆ اﻟﺸﺎﺷ ﺔ ﻋﻦ ﻃﺮﻳﻖ اﺳ‬

‫ﺒ ﺔ ﻓﺎرﻏ ﺔ‬
‫ﻋﻨﺪﺗﺸﻐﻴﻞ ‪alien_invasion.py‬اﻵن ‪،‬ﻳﺠ ﺐ أنﺗﺮى ﻟﻌ‬
‫ﺘﺼﻒ اﻟ ﺴﻔﻠ ﻲ ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓ ﻲ اﻟﺸﻜﻞ ‪12-2.‬‬
‫ﺘﻨﺎ اﻟﺼﺎروﺧﻴ ﺔ ﺟﺎﻟ ﺴ ﺔ ﻓ ﻲ اﻟﻤﻨ‬
‫ﺷﺎﺷ ﺔ ﻣﻊﺳﻔﻴﻨ‬

‫‪246‬اﻟﻔﺼﻞ ‪12‬‬
‫‪Machine Translated by Google‬‬

‫ﺘﺼﻒ اﻟﺸﺎﺷ ﺔ‬
‫ﺒ ﻲ ﻟﻠ ﺴﻔﻴﻨ ﺔ ﻓ ﻲ أﺳﻔﻞ ﻣﻨ‬
‫اﻟﺸﻜﻞ ‪12-2:‬ﻏﺰو أﺟﻨ‬

‫ﺑﻨﺎء دﻳﻮن‪ :‬وﺣﺪة ‪game_functions‬‬‫إﻋﺎدة‬


‫ﺒﺮﻣﺠﻴ ﺔ‪.‬ﺗﻌﻤﻞ إﻋﺎدة‬
‫ﺘﻌﻠﻴﻤﺎ ت اﻟ‬
‫ﺒﻞ إﺿﺎﻓ ﺔ اﻟﻤﺰﻳﺪ ﻣﻦ اﻟ‬
‫ﺘﻪ ﻗ‬
‫ﺒ‬‫ﺘ‬‫ﺒﺎ ﻣﺎﺗﻌﻴﺪ ﺻﻴﺎﻏ ﺔ اﻟﻜﻮد اﻟﺬي ﻛ‬
‫ﺒﻴﺮة ‪ ،‬ﻏﺎﻟ ً‬
‫ﻓ ﻲ اﻟﻤﺸﺎرﻳﻊ اﻟﻜ‬
‫ﺒﻨﺎء ﻋﻠﻴﻪ‪ .‬ﻓ ﻲ ﻫﺬا اﻟﻘ ﺴﻢ ‪،‬ﺳﻨﻨﺸ ﺊ وﺣﺪة ﻧﻤﻄﻴ ﺔ ﺟﺪﻳﺪة‬
‫ﺑﺎﻟﻔﻌﻞ ‪ ،‬ﻣﻤﺎﻳ ﺴﻬﻞ اﻟ‬‫ﺘﻪ‬
‫ﺒ‬‫ﺘ‬‫ﺑﻨﻴ ﺔ اﻟﻜﻮد اﻟﺬي ﻛ‬‫ﺒ ﺴﻴﻂ‬
‫ﺒﻨﺎء ﻋﲆﺗ‬
‫اﻟ‬
‫ﺘﻌﻤﻞ وﺣﺪة‬
‫ﺘ ﻲﺗﺠﻌﻞ ﻣﻦ ‪Alien Invasion‬ﻧﺎﺟﺤًﺎ‪.‬ﺳ‬
‫ﺘﺨﺰن ﻋﺪدًا ﻣﻦ اﻟﻮﻇﺎﺋﻒ اﻟ‬
‫ﺘ ﻲﺳ‬
‫ﺗ ﺴﻤﻰ ‪game_functions ،‬واﻟ‬
‫ﺘﺠﻌﻞ اﻟﻤﻨﻄﻖ ﻓ ﻲ‬
‫ﺒﺢ ﻃﻮﻳﻠ ﺔ ﺟﺪًا وﺳ‬
‫ﺒﻞ أنﺗﺼ‬
‫‪game_functions‬ﻋﲆﺗﻨﻔﻴ ﺲ ‪alien_invasion.py‬ﻗ‬
‫ﺑﻌ ﺔ‪.‬‬
‫ﺘﺎ‬
‫‪alien_invasion.py‬أﺳﻬﻞ ﻓ ﻲ اﻟﻤ‬

‫داﻟ ﺔ )( ‪check_events‬‬
‫ﺒ ﺴﻴﻂ )(‬
‫ﺑﻨﻘﻞ اﻟﻜﻮد اﻟﺬيﻳﺪﻳﺮ اﻷﺣﺪا ث إﱃ وﻇﻴﻔ ﺔ ﻣﻨﻔﺼﻠ ﺔﺗ ﺴﻤﻰ ‪check_events ().‬ﺳﻴﺆدي ذﻟﻚ إﱃﺗ‬‫ﺒﺪأ‬
‫ﺳﻨ‬
‫ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ ﻋﻦ ﺟﻮاﻧ ﺐ أﺧﺮى ﻣﻦ‬‫ﺘﻴﺢ ﻟﻚ ﻋﺰل ﺣﻠﻘ ﺔ اﻟﺤﺪ ث إدارة اﻷﺣﺪا ث‬
‫‪run_game‬وﻋﺰل ﺣﻠﻘ ﺔ رﺟﻞ اﻟﺤﺪ ث‪.‬ﻳ‬
‫ﺜﻞﺗﺤﺪﻳ ﺚ اﻟﺸﺎﺷ ﺔ‪.‬‬
‫ﺒﺔ ‪ ،‬ﻣ‬
‫اﻟﻠﻌ‬

‫ﺿﻊ )( ‪check_events‬ﻓ ﻲ وﺣﺪة ﻣﻨﻔﺼﻠ ﺔﺗ ﺴﻤﻰ ‪game_functions:‬‬

‫‪game_ import sys‬‬


‫وﻇﺎﺋﻒ‬
‫ﺘﻴﺮاد ‪pygame‬‬
‫اﺳ‬

‫‪def check_events ():‬‬


‫ﺗﻴﺢ وأﺣﺪا ث اﻟﻤﺎوس‪"" ".‬‬
‫"""اﻟﺮد ﻋﲆ ﺿﻐﻄﺎ ت اﻟﻤﻔﺎ‬
‫ﻟﻠﺤﺪ ث ﻓ ﻲ ‪pygame.event.get ():‬‬
‫إذا ﻛﺎن ‪event.type == pygame.QUIT:‬‬
‫)( ‪sys.exit‬‬

‫‪247-‬ﻣ ﺴﻌﻮد‬
‫‪Machine Translated by Google‬‬

‫ﺘﺎج اﻟﻮﻇﻴﻔ ﺔ إﱃ ﻣﻌﻠﻤﺎ ت‬


‫ﺘﺨﺪاﻣﻬﺎ ﻓ ﻲ ﺣﻠﻘ ﺔ ﻓﺤﺺ اﻟﺤﺪ ث‪ .‬ﻻﺗﺤ‬
‫ﺘﻢ اﺳ‬
‫ﺘ ﻲﻳ‬
‫ﺘﻮرد ﻫﺬه اﻟﻮﺣﺪة ‪sys‬و ‪pygame ،‬واﻟ‬
‫ﺗﺴ‬
‫ﺘﻢ ﻧ ﺴﺦ اﻟﺠ ﺴﻢ ﻣﻦ ﺣﻠﻘ ﺔ اﻟﺤﺪ ث ﻓ ﻲ ‪alien_invasion.py.‬‬
‫ﻓ ﻲ ﻫﺬه اﻟﻤﺮﺣﻠ ﺔ ‪ ،‬وﻳ‬

‫ﺘﻮرد وﺣﺪة ‪game_functions ،‬‬


‫ﺑﺤﻴ ﺚﻳ ﺴ‬
‫اﻵن دﻋﻨﺎ ﻧﻌﺪل ‪alien_invasion.py‬‬
‫ﺘﺪﻋﺎء ‪check_events ():‬‬
‫ﺑﺎﺳ‬‫ﺒﺪل ﺣﻠﻘ ﺔ اﻟﺤﺪ ث‬
‫ﺘ‬‫وﺳﻨ ﺴ‬

‫ﺘﻴﺮاد ‪pygame‬‬
‫اﺳ‬
‫‪alien_ Invasion.py‬‬
‫ﺘﻴﺮاد اﻹﻋﺪادا ت‬
‫ﻣﻦ إﻋﺪادا ت اﺳ‬
‫ﺘﻴﺮاد اﻟ ﺴﻔﻴﻨ ﺔ‬
‫ﻣﻦﺳﻔﻴﻨ ﺔ اﺳ‬
‫ﺘﻴﺮاد ‪game_functions‬ﻛـ ‪gf‬‬
‫اﺳ‬

‫‪def run_game ():‬‬


‫‪--‬ﻗﺺ‪--‬‬
‫ﺒ ﺔ‪.‬‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﻌ‬
‫ﺑﺪأ اﻟﺤﻠﻘ ﺔ اﻟﺮ‬
‫‪#‬ا‬
‫اﺣﻴﺎﻧﺎ ﺻﺤﻴﺢ‪:‬‬

‫)( ‪gf.check_events‬‬

‫ﺒﺮ اﻟﺤﻠﻘ ﺔ‪.‬‬


‫ﺛﻨﺎء ﻛﻞﺗﻤﺮﻳﺮة ﻋ‬
‫‪#‬أﻋﺪ رﺳﻢ اﻟﺸﺎﺷ ﺔ أ‬
‫‪--‬ﻗﺺ‪--‬‬

‫ﺘﺨﺪاﻣﻪ ﻓﻘﻂ ﻓ ﻲ اﻟﻮﺣﺪة اﻟﻨﻤﻄﻴ ﺔ‬


‫ﺘﻢ اﺳ‬
‫ﺋﻴ ﺴ ﻲ ‪،‬ﻷﻧﻪﻳ‬
‫ﺒﺮﻧﺎﻣﺞ اﻟﺮ‬ ‫ً‬
‫ﺒﺎﺷﺮة إﱃ ﻣﻠﻒ اﻟ‬
‫ﺘﻴﺮاد ‪sys‬ﻣ‬
‫ﺑﺤﺎﺟ ﺔ إﱃ اﺳ‬‫ﻟﻢ ﻧﻌﺪ‬
‫ﺒ ﺴﻴﻂ‪.‬‬
‫ﺘ‬‫ﺘﻌﺎر ‪gf‬ﻟﻠ‬
‫ﺘﻮردة اﻻﺳﻢ اﻟﻤ ﺴ‬
‫‪game_functions‬اﻵن‪ .‬ﻧﻌﻄ ﻲ وﺣﺪة ‪game_functions‬اﻟﻤ ﺴ‬

‫وﻇﻴﻔ ﺔ )( ‪update_screen‬‬
‫ﺘﺤﺪﻳ ﺚ اﻟﺸﺎﺷ ﺔ إﱃ وﻇﻴﻔ ﺔ ﻣﻨﻔﺼﻠ ﺔﺗ ﺴﻤﻰ )( ‪update_screen‬ﻓ ﻲ ‪game_functions.py‬‬
‫ﺑ‬‫دﻋﻨﺎ ﻧﻨﻘﻞ اﻟﻜﻮد اﻟﺨﺎص‬
‫ﺒﺮ‪:‬‬
‫ﺑﺸﻜﻞ أﻛ‬
‫ﺒ ﺴﻴﻂ )( ‪run_game‬‬
‫ﺘ‬‫ﻟ‬

‫ﺒ ﺔ_ ‪-‬ﻗﺮﻗﻌ ﺔ‪--‬‬
‫ﻟﻌ‬
‫وﻇﺎﺋﻒ‬
‫‪def check_events ():‬‬
‫‪--‬ﻗﺺ‪--‬‬

‫‪def update_screen (ai_settings، screen، ship):‬‬


‫ﺗﺤﺪﻳ ﺚ اﻟﺼﻮر ﻋﲆ اﻟﺸﺎﺷ ﺔ واﻟﻮﺟﻪ إﱃ اﻟﺸﺎﺷ ﺔ اﻟﺠﺪﻳﺪة‪"" ".‬‬
‫"""‬
‫ﺒﺮ اﻟﺤﻠﻘ ﺔ‪.‬‬
‫ﺛﻨﺎء ﻛﻞﺗﻤﺮﻳﺮة ﻋ‬
‫‪#‬أﻋﺪ رﺳﻢ اﻟﺸﺎﺷ ﺔ أ‬
‫)‪screen.fill (ai_settings.bg_color‬‬
‫)( ‪ship.blitme‬‬

‫ﺋﻴ ﺔ‪.‬‬
‫‪#‬اﺟﻌﻞ أﺣﺪ ث ﺷﺎﺷ ﺔ ﻣﺮﺳﻮﻣ ﺔ ﻣﺮ‬
‫)( ‪pygame.display.flip‬‬

‫ﺘﺎج اﻵن إﱃ‬


‫ﺛﻼ ث ﻣﻌﻠﻤﺎ ت‪ai_settings :‬واﻟﺸﺎﺷ ﺔ واﻟﺸﺤﻦ ‪ .‬ﻧﺤ‬‫ﺗﺄﺧﺬ وﻇﻴﻔ ﺔ )( ‪update_screen‬اﻟﺠﺪﻳﺪة‬
‫ﺗﺤﺪﻳ ﺚ ﺣﻠﻘ ﺔ ‪while‬ﻣﻦ ‪alien_invasion.py‬‬
‫ﺘﺪﻋﺎء ‪update_screen ():‬‬
‫ﻣﻊ اﺳ‬

‫‪alien_ Invasion.py‬‬
‫‪--‬ﻗﺺ‪--‬‬
‫ﺒ ﺔ‪.‬‬
‫ﺋﻴ ﺴﻴ ﺔ ﻟﻠﻌ‬
‫ﺑﺪأ اﻟﺤﻠﻘ ﺔ اﻟﺮ‬
‫‪#‬ا‬

‫‪248‬اﻟﻔﺼﻞ ‪12‬‬

You might also like