البرمجة

تحسين برنامج حجر ورقة مقص بلغة Python 2.7

في هذا البرنامج الذي تم تقديمه، يبدو أن هناك مشكلة في هيكلة الشيفرة وفي السياق البرمجي الخاص به. دعونا نقوم بتحليل الشيفرة لنحدد المشكلة ونقدم بعض التوجيهات لتصحيحها.

أولًا، يظهر أن هناك مشكلة في هيكل البرنامج حيث يبدو أن بعض الدوال تم تضمينها داخل دالة أخرى، مما يتسبب في عدم استدعائها بشكل صحيح. على سبيل المثال، دالة “scores” تبدو وكأنها جزء من دالة “result”، ولكنها ليست موضحة بشكل صحيح.

ثانيًا، يوجد خطأ في كتابة دالة “raw_input”، حيث يجب أن تكون “input” في Python 3، ولكن بما أنك تستخدم Python 2.7، فيجب أن تكون “raw_input”. يمكنك تصحيح ذلك في الدالة “play_again”.

ثالثًا، تظهر أن دالة “start” لا تستدعى بشكل صحيح في الكود. يجب أن تكون الدالة “start” متصلة بشكل صحيح مع الكود الرئيسي للبرنامج. يمكنك تصحيح ذلك عن طريق استبدال “if name == ‘main‘:” بـ “if name == ‘main‘:”.

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

اليك نموذج لتصحيح الشيفرة:

python
import random import time rock = 1 paper = 2 scissors = 3 names = {rock: "Rock", paper: "Paper", scissors: "Scissors"} rules = {rock: scissors, paper: rock, scissors: paper} player_score = 0 computer_score = 0 def start(): print("Let's play a game of rock paper and scissors") while game(): pass scores() def game(): player = move() computer = random.randint(1, 3) result(player, computer) return play_again() def move(): while True: print() player = raw_input("Rock = 1\nPaper = 2\nScissors =3\nMake a move: ") try: player = int(player) if player in (1, 2, 3): return player except ValueError: pass print("Oops! I didn't understand that. Please enter 1,2 or 3.") def result(player, computer): print("1...") time.sleep(1) print("2...") time.sleep(1) print("3...") time.sleep(0.5) print("Computer threw {0}!".format(names[computer])) global player_score, computer_score if player == computer: print("Tie game.") else: if rules[player] == computer: print("Your victory has been assured.") player_score += 1 else: print("The computer laughs as you realize you have been defeated.") computer_score += 1 def play_again(): answer = raw_input("Would you like to play again? y/n: ") if answer.lower() in ("y", "yes", "of course"): return True else: print("Thank you very much for playing our game. See you next time!") return False def scores(): global player_score, computer_score print("High Scores") print("Player:", player_score) print("Computer:", computer_score) if __name__ == '__main__': start()

بتطبيق هذه التغييرات، يجب أن يعمل البرنامج بشكل صحيح ويعرض النتائج بشكل صحيح على الشاشة.

المزيد من المعلومات

التعديلات التي قدمتها في الشيفرة البرمجية تستهدف حل المشكلات المحددة التي تم التعرف عليها في الكود الأصلي. إليك بعض المعلومات الإضافية حول الشيفرة المعدلة:

  1. دالة raw_input: في Python 2.7، تُستخدم raw_input لقراءة الإدخال من المستخدم كسلسلة نصوص. لكن في Python 3، تم استبدالها بدالة input. في الشيفرة المعدلة، تم استخدام raw_input بما أنك تستخدم Python 2.7.

  2. دالة play_again: تم تعديل شرط الإدخال من "Y", "Y" , "yes" , "Yes" , "Of course!" إلى "y", "yes", "of course" لتكون أكثر مرونة وتقبل إدخالات مختلفة من المستخدم بدون أي حساسية لحالة الأحرف.

  3. الترتيب الصحيح لدوال البرنامج: تم تصحيح ترتيب الدوال لضمان استدعائها بشكل صحيح وتنفيذها بالتسلسل الصحيح. تم وضع الشرط if __name__ == '__main__': بشكل صحيح حول الدالة start لتكون نقطة البداية الرئيسية لتنفيذ البرنامج.

  4. إصلاح الهمزات والتسويات: تم تصحيح الهمزات والتسويات في الشيفرة لتحسين قابلية القراءة والفهم.

  5. تحسين الأمان: تم إجراء تعديلات لضمان استجابة البرنامج بشكل صحيح لإدخالات المستخدم وتحسين تجربة المستخدم عند استخدام البرنامج.

عمومًا، يُفضل دائمًا توثيق الشيفرة وتنظيمها بشكل جيد لتسهيل فهمها وصيانتها في المستقبل.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!