كتاب "تعلم بيثون: برمجة اللعبة ، تصور البيانات ، تطبيقات الويب. 3rd ed.

صورة مرحبا ، habrozhiteli! أصدرنا الإصدار الثالث من أفضل بائع في Python Programming Amazon ، وهو دليل لغة Python الأكثر شعبية في العالم.

لا يمكنك تعلم ذلك بأسرع ما يمكن فحسب ، بل يمكنك أيضًا تعلم كيفية كتابة البرامج وإصلاح الأخطاء وإنشاء تطبيقات فعالة. في الجزء الأول من الكتاب ، سيتم تعريفك بمفاهيم البرمجة الأساسية مثل المتغيرات والقوائم والفصول الدراسية والحلقات ، وستعلمك التمارين البسيطة كيفية استخدام قوالب الأكواد النظيفة. سوف تتعلم كيفية جعل البرامج تفاعلية وكيفية اختبار الكود قبل الإضافة إلى المشروع.

في الجزء الثاني ، ستضع المعرفة الجديدة موضع التنفيذ وتُنشئ ثلاثة مشاريع: لعبة أركيد بأسلوب Space Invaders وتصور البيانات مع مكتبات Python المريحة وتطبيق ويب بسيط يمكن نشره سريعًا عبر الإنترنت. عند العمل مع كتاب ، ستتعلم: ∙ استخدام مكتبات قوية وأدوات Python: Pygame و Matplotlib و Plotly و Django ∙ إنشاء ألعاب ثنائية الأبعاد متفاوتة التعقيد يمكن التحكم فيها باستخدام لوحة المفاتيح والماوس ∙ إنشاء تصور تفاعلي للبيانات ∙ تصميم الويب وتخصيصه ونشره التطبيقات ∙ التعامل مع الأخطاء والأخطاء

تمت مراجعة النسخة الجديدة بعناية وتعكس أحدث التطورات في ممارسات برمجة بايثون. تم استكمال الجزء الأول من الكتاب بمعلومات جديدة عن الخطوط و الثوابت و إدارة البيانات. في الجزء الثاني ، تم تحديث رمز المشروع. أصبحت بنية المشروع ورمزه أنظف وأكثر قابلية للفهم ، والآن يستخدمون القوة الكاملة للمكتبات والأدوات الشائعة ، مثل Plotly و Django.


فيما يلي ملخص للتغييرات في الإصدار الثالث:


في الفصل 1 ، تم تبسيط تعليمات تثبيت Python للمستخدمين من جميع أنظمة التشغيل الرئيسية. الآن أوصي باستخدام محرر نصوص Sublime Text ، والذي يحظى بشعبية بين كل من المبتدئين والمحترفين ، ويعمل على جميع أنظمة التشغيل.

يقدم الفصل 2 وصفًا أكثر تفصيلًا لكيفية تنفيذ المتغيرات في بيثون. يتم وصف المتغيرات على أنها تسميات نصية للقيم ، مما يسمح للقارئ بفهم سلوك المتغيرات في بيثون بشكل أفضل. يستفيد الكتاب بشكل مكثف من الخطوط f المقدمة في Python 3.6 ، وهي آلية أكثر بساطة وأكثر ملاءمة لاستخدام القيم في الأوتار. قدم Python 3.6 أيضًا القدرة على استخدام الشرطة السفلية لتمثيل أعداد كبيرة (على سبيل المثال ، 1000_000) ؛ انها مدرجة أيضا في هذه الطبعة. تم تقديم تعيينات متعددة للمتغيرات في أحد مشاريع الإصدار الأول ؛ تم تجميع الوصف ونقله إلى الفصل 2 من أجل راحة القراء. أخيرًا ، تم أيضًا تضمين نظام اصطلاح مفهّم لتمثيل الثوابت في بيثون في هذا الفصل.

يقدم الفصل السادس طريقة get () لقراءة القيم من القاموس ، والتي يمكنها إرجاع القيمة الافتراضية إذا لم يكن هناك مفتاح.

يعتمد مشروع Alien Invasion (الفصول 12-14) بشكل كامل على استخدام الفصول الدراسية. اللعبة بحد ذاتها فئة (بدلاً من سلسلة من الوظائف ، كما في الإصدار السابق). هذا يبسط إلى حد كبير الهيكل العام للعبة ، ويقلل من عدد المكالمات الدالة والمعلمات اللازمة. سيقدر القراء المطلعون على الطبعة الأولى بساطة النهج القائم على الفصل الجديد. يمكن الآن تثبيت Pygame بأمر من سطر واحد في جميع الأنظمة ، ويمكن للقارئ الاختيار بين بدء اللعبة في وضع ملء الشاشة أو وضع النافذة.

في مشاريع تصور البيانات ، تم تبسيط تعليمات التثبيت لـ Matplotlib لجميع أنظمة التشغيل. تستخدم المرئيات المستندة إلى Matplotlib وظيفة subplots () ، والتي هي أكثر ملاءمة لتعلم كيفية إنشاء مرئيات معقدة. يستخدم مشروع Rolling Dice من الفصل 15 ، Plotly ، مكتبة التصور مع بناء جملة بسيط ، صيانة عالية الجودة ، ومخرجات جميلة مع خيارات التخصيص الغنية.

في الفصل 16 ، تمت ترجمة مشروع الأرصاد الجوية إلى بيانات NOAA ، مما أظهر ثباتًا أكبر على مر السنين مقارنة بالموقع المستخدم في الطبعة الأولى. مشروع رسم الخرائط مكرس الآن للنشاط الزلزالي العالمي ؛ عند اكتمال المشروع ، سيتم بناء تصور رائع ، مرئيًا يصور حدود الصفائح التكتونية على طول إحداثيات جميع الزلازل لفترة زمنية محددة. سوف تتعلم كيفية تعيين أي مجموعات بيانات تحتوي على إحداثيات جغرافية.

يستخدم الفصل 17 مكتبة بلوتلي لتصور النشاط المتعلق بيثون في مشاريع مفتوحة المصدر على جيثب.

اعتمد مشروع Learning Log (الفصول 18-20) على أحدث إصدار من Django ، ويستخدم أحدث إصدار من Bootstrap لتصميمه. تم تبسيط عملية نشر المشروع في Heroku باستخدام حزمة django-heroku ، ويستخدم متغيرات البيئة بدلاً من تحرير ملفات settings.py. هذا الحل أبسط وأكثر ملاءمة لكيفية نشر المبرمجين المحترفين لمشاريع Django الحديثة.

تم إعادة تصميم الملحق أ بالكامل. وشملت توصيات لتثبيت بيثون. يتضمن الملحق "ب" توصيات مفصلة لإعداد نص "سامية" ويوفر وصفًا موجزًا ​​لمحرري النصوص الرئيسيين والبيئات المتكاملة المستخدمة اليوم. يوفر الملحق "ب" روابط لمصادر أحدث وأكثر شعبية على الإنترنت للمساعدة ، ويقدم الملحق "د" تعليميًا قصيرًا حول استخدام Git للتحكم في الإصدار.

نحن نتفهم أنه من المستغرب بالنسبة للكثيرين أننا أصدرنا الطبعة الثالثة من الكتاب ، والكتاب الأصلي 2ed. سبب هذا الحادث بسيط. بعد ستة أشهر من إصدار الطبعة الأولى باللغة الروسية ، قام المؤلف بإجراء تغييرات كبيرة ولكنها بسيطة على الكتاب ، وقام بتصحيح العديد من الرموز. بعد النظر في عدد التغييرات ، قررنا تسمية الكتاب الجديد "الإصدار الثاني". لذلك تم إصدار المنشور الثاني باللغة الروسية في 30 مايو 2017.

والآن يجب أن تصدر النسخة الدولية الثانية
"تعلم بيثون: برمجة اللعبة ، تصور البيانات ، تطبيقات الويب. 3rd ed.

مقتطفات. قواميس


في بعض الأحيان يكون من الضروري حفظ العديد من القواميس في قائمة أو حفظ قائمة كقيمة عنصر القاموس. يسمى إنشاء هياكل معقدة من هذا النوع التضمين. يمكنك تضمين العديد من القواميس في قائمة ، أو قائمة بالعناصر الموجودة في القاموس ، أو حتى قاموس داخل قاموس آخر. كما توضح الأمثلة التالية ، يعتبر المرفق آلية قوية للغاية.

قائمة القواميس


يحتوي القاموس alien_0 على مجموعة متنوعة من المعلومات حول أجنبي واحد ، ولكن لا يوجد مكان لتخزين معلومات حول الأجنبي الآخر ، ناهيك عن الشاشة بأكملها المسدودة بواسطة الأجانب. كيفية محاكاة أسطول الغزو؟ على سبيل المثال ، يمكنك إنشاء قائمة الأجانب التي يكون فيها كل عنصر قاموسًا يحتوي على معلومات حول أجنبي. على سبيل المثال ، تنشئ التعليمة البرمجية التالية قائمة بثلاثة أجانب:

aliens.py alien_0 = {'color': 'green', 'points': 5} alien_1 = {'color': 'yellow', 'points': 10} alien_2 = {'color': 'red', 'points': 15} ❶ aliens = [alien_0, alien_1, alien_2] for alien in aliens: print(alien) 

أولاً ، يتم إنشاء ثلاثة قواميس ، يمثل كل منها أجنبيًا منفصلاً. عند النقطة ❶ ، يتم سرد كل قاموس باسم الأجانب. أخيرًا ، يمر البرنامج بالقائمة ويعرض كل أجنبي:

 {'color': 'green', 'points': 5} {'color': 'yellow', 'points': 10} {'color': 'red', 'points': 15} 

بالطبع ، في مثال واقعي ، سيتم استخدام أكثر من ثلاثة أجانب ، والتي سيتم إنشاؤها تلقائيًا. في المثال التالي ، تنشئ الدالة range () أسطولًا من 30 أجنبيًا:

 #      . aliens = [] #  30  . ❶ for alien_number in range(30): ❷ new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'} ❸ aliens.append(new_alien) #   5 : ❹ for alien in aliens[:5]: print(alien) print("...") #    . ❺ print(f"Total number of aliens: {len(aliens)}") 

في بداية المثال ، قائمة تخزين جميع الأجانب التي سيتم إنشاؤها فارغة. عند النقطة ❶ ، ترجع الدالة range () مجموعة من الأرقام ، والتي تخبر Python ببساطة عدد المرات التي يجب أن تتكرر فيها الحلقة. في كل مرة يتم فيها إكمال الدورة ، يتم إنشاء أجنبي جديد ، ثم يتم إضافته إلى قائمة الأجانب. عند النقطة ❹ ، يتم استخدام المقطع لعرض الأجانب الخمسة الأوائل ، وعند النقطة ❺ يتم عرض طول القائمة (لإثبات أن البرنامج قام بالفعل بإنشاء أسطول كامل مكون من 30 أجنبيًا):

 {'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', 'color': 'green', 'points': 5} ... Total number of aliens: 30 

جميع الأجانب لديهم نفس الخصائص ، لكن بيثون يعامل كل أجنبي ككائن منفصل ، والذي يسمح لك بتغيير سمات كل مالك على حدة.

كيفية العمل مع الكثير؟ تخيل أنه في هذه اللعبة يغير بعض الأجانب اللون ويبدأون في التحرك بشكل أسرع. عندما يحين الوقت لتغيير الألوان ، يمكننا استخدام حلقة for وإذا أمر لتغيير اللون. على سبيل المثال ، لتحويل الأجانب الثلاثة الأول إلى أصفر ، والانتقال بسرعة متوسطة وجلب اللاعب 10 نقاط لكل منها ، يمكنك القيام بذلك:

 #      . aliens = [] #  30  . for alien_number in range (0,30): new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'} aliens.append(new_alien) for alien in aliens[0:3]: if alien['color'] == 'green': alien['color'] = 'yellow' alien['speed'] = 'medium' alien['points'] = 10 #   5 : for alien in aliens[0:5]: print(alien) print("...") 

لتغيير الأجانب الثلاثة الأوائل ، نقوم بالتكرار على عناصر شريحة تتضمن فقط الأجانب الثلاثة الأوائل. في الوقت الحالي ، يكون جميع الأجانب أخضر ("أخضر") ، لكن هذا لن يكون دائمًا ، لذلك نكتب أمر if ، الذي يضمن أن الأجانب الأخضر فقط سيتغيرون. إذا كان الأجنبي أجنبي ، يتغير لونه إلى الأصفر ("الأصفر") ، والسرعة إلى المتوسطة ("المتوسطة") ، ويزيد المكافأة إلى 10 نقاط:

 {'speed': 'medium', 'color': 'yellow', 'points': 10} {'speed': 'medium', 'color': 'yellow', 'points': 10} {'speed': 'medium', 'color': 'yellow', 'points': 10} {'speed': 'slow', 'color': 'green', 'points': 5} {'speed': 'slow', 'color': 'green', 'points': 5} ... 

يمكن توسيع الدورة عن طريق إضافة كتلة أليف لتحويل الأجانب الصفراء إلى حمراء - بسرعة وجلب اللاعب 15 نقطة لكل منهما. لن نستشهد بكل الكود ، والحلقة تبدو كما يلي:

 for alien in aliens[0:3]: if alien['color'] == 'green': alien['color'] = 'yellow' alien['speed'] = 'medium' alien['points'] = 10 elif alien['color'] == 'yellow': alien['color'] = 'red' alien['speed'] = 'fast' alien['points'] = 15 

يعد حل تخزين القواميس في قائمة أمرًا شائعًا عندما يحتوي كل قاموس على سمات مختلفة لكائن واحد. على سبيل المثال ، يمكنك إنشاء قاموس لكل مستخدم للموقع ، كما تم في برنامج user.py على الصفحة. 114 ، واحفظ القواميس الفردية في قائمة باسم المستخدمين. يجب أن يكون لجميع القواميس في القائمة نفس البنية بحيث يمكنك تكرارها على القائمة وتنفيذ نفس العمليات مع كل كائن قاموس.

قائمة القاموس


بدلاً من وضع قاموس في قائمة ، يكون من المريح أحيانًا وضع قائمة في القاموس. تخيل كيف تصف البيتزا المطلوبة في البرنامج. إذا قصرنا أنفسنا فقط على القائمة ، يمكن فقط حفظ قائمة الطبقة للبيتزا. عند استخدام قاموس ، يمكن أن تكون القائمة الأولى من جوانب وصف البيتزا.

في المثال التالي ، يتم تخزين نوعين من المعلومات لكل بيتزا: قاعدة وقائمة تتصدر. قائمة الصدارة هي القيمة المرتبطة بمفتاح "الطبقة". لاستخدام عناصر في القائمة ، يجب عليك تحديد اسم القاموس والمفتاح "الطبقة" ، مثل أي قيمة أخرى في القاموس. بدلاً من قيمة واحدة ، سيتم الحصول على قائمة بالإضافات:

 pizza.py #     . ❶ pizza = { 'crust': 'thick', 'toppings': ['mushrooms', 'extra cheese'], } #  . ❷ print(f"You ordered a {pizza['crust']}-crust pizza " "with the following toppings:") ❸ for topping in pizza['toppings']: print("\t" + topping) 

يبدأ العمل عند نقطة ❶ بقاموس يحتوي على معلومات حول البيتزا المطلوبة. ترتبط قيمة السلسلة "thick" بمفتاح في القاموس "crust". يحتوي المفتاح الآخر "الطبقة" على قيمة قائمة تخزّن جميع العناصر المطلوبة. عند النقطة ❷ ، يتم عرض وصف الترتيب قبل إنشاء البيتزا. إذا كنت بحاجة إلى تقسيم خط طويل في مكالمة print () ، فحدد نقطة لتقسيم خط الإخراج وإنهاء السطر مع عرض أسعار. ضع مسافة بادئة في السطر التالي ، ثم أضف علامة اقتباس مفتوحة ، وتابع السطر. بيثون يسلسل آليا كل السلاسل الموجودة بين قوسين. لاستنتاج الإضافات ، يتم كتابة حلقة لـ for. لسرد الطبقة ، نستخدم مفتاح "الطبقة" ، ويأخذ بيثون قائمة الطبقة من القاموس.

تصف الرسالة التالية البيتزا التي نوشك على إنشائها:

 You ordered a thick-crust pizza with the following toppings: mushrooms extra cheese 

يمكن استخدام تداخل قائمة في القاموس في كل مرة يجب أن ترتبط أكثر من قيمة بمفتاح قاموس واحد. إذا تم حفظ الإجابات في القائمة في المثال السابق مع لغات البرمجة ، يمكن لأحد المشاركين في الاستطلاع اختيار عدة لغات مفضلة في وقت واحد. عند تعداد قاموس ، ستكون القيمة المرتبطة بكل شخص قائمة باللغات (بدلاً من لغة واحدة). في حلقة البحث عن القاموس ، يتم إنشاء حلقة أخرى للتكرار على قائمة اللغات المرتبطة بكل مشارك:

 favorite_languages.py ❶ favorite_languages = { 'jen': ['python', 'ruby'], 'sarah': ['c'], 'edward': ['ruby', 'go'], 'phil': ['python', 'haskell'], } ❷ for name, languages in favorite_languages.items(): print(f"\n{name.title()}'s favorite languages are:") ❸ for language in languages: print(f"\t{language.title()}") 

ترى عند النقطة ❶ أن القيمة المرتبطة بكل اسم أصبحت الآن قائمة. بعض المشاركين لديهم لغة برمجة واحدة مفضلة ، بينما لدى البعض الآخر عدة لغات. عند التكرار على قاموس في النقطة ❷ ، يتم استخدام متغير باسم اللغات لتخزين كل قيمة من القاموس ، لأننا نعلم أن كل قيمة ستكون قائمة. في الدورة الرئيسية ، وفقًا لعناصر القاموس ، تتكرر دورة أخرى على عناصر قائمة اللغات المفضلة لكل مشارك. الآن ، يمكن لكل مشارك في الاستطلاع تحديد العديد من لغات البرمجة المفضلة كما يحلو لهم:

 Jen's favorite languages are: Python Ruby Sarah's favorite languages are: C Phil's favorite languages are: Python Haskell Edward's favorite languages are: Ruby Go 

لزيادة تحسين البرنامج ، قم بتضمين أمر if في بداية حلقة for the Dictionary للتحقق مما إذا كان المشارك قد اختار أكثر من لغة برمجة واحدة (يعتمد التحقق على قيمة len (اللغات)). إذا كان لدى المشارك لغة واحدة مفضلة ، فسيتم تغيير نص الرسالة للمفرد (على سبيل المثال ، "لغة سارة المفضلة هي C").

»يمكن الاطلاع على مزيد من المعلومات حول الكتاب على موقع الناشر
» المحتويات
» مقتطفات

خصم 25٪ على كوبون الباعة المتجولين - بيثون

عند دفع النسخة الورقية من الكتاب ، يتم إرسال كتاب إلكتروني عبر البريد الإلكتروني.

Source: https://habr.com/ru/post/ar485874/


All Articles