في البداية، يجدر بنا أن نلاحظ أن الكود الذي قدمته يستخدم بيئة Python 2، حيث أنه يستخدم دالة print
كجملة وليس كدالة كما هو الحال في Python 3. لذا يفضل ترقية الكود إلى Python 3 لتجنب مشاكل التوافق.
الخطأ الذي تواجهه يعود إلى عدم توفر الأقواس لدعم الدوال في Python 2. يجب أن تتأكد من أنك تستخدم أقواسًا حول النص الذي يُطبع بواسطة دالة print
، ويجب أيضاً استخدام دالة raw_input
بدلاً من input
.
لتصحيح هذا، يمكنك تحديث الكود كما يلي:
python# استخدام أقواس في دالة الطباعة واستخدام raw_input بدلاً من input
print("To play this game, you use your 1-9 keys")
print("This is layout of each number representing a square")
print("7|8|9")
print("4|5|6")
print("1|2|3")
print(" ")
# ...
# استخدام دالة raw_input بدلاً من input
letter = raw_input("Do you want to be X or O? ").upper()
# ...
# استخدام دالة raw_input بدلاً من input
print("Do you want to play again?(Y/N)")
return raw_input("").lower().startswith('y')
# ...
# استخدام دالة raw_input بدلاً من input
print("Flipping the coin...")
sleep(2)
يرجى تحديث الأمور المشار إليها ومن ثم إعادة تشغيل البرنامج. إذا استمرت المشكلة، يمكنك مشاركة الأخطاء الجديدة التي تظهر لك حتى أتمكن من تقديم المساعدة بشكل أفضل.
المزيد من المعلومات
في محاولة لتحسين الكود وتوضيح الأخطاء، دعنا نقوم بإجراء بعض التعديلات. قد تواجه تحديات إضافية بناءً على التغييرات التي قد تطرأ على الأكواد الأخرى في المشروع. يرجى التأكد من تحديث الجزء التالف بالشكل الصحيح:
- استخدام دالة
input()
بدلاً منraw_input()
:
pythonletter = input("Do you want to be X or O? ").upper()
-
تحديث دوال
raw_input
في دوال أخرى أيضًا. -
في دالة
choosemovefromlist
, قم بتصحيح الأخطاء في استخدام اسم المتغيرmovelist
بشكل صحيح، وكذلك في استخدامpossiblemove
بدلاً منpossiblemoves
:
pythondef choosemovefromlist(board, movelist):
possiblemoves = []
for i in movelist:
if isspacefree(board, i):
possiblemoves.append(i)
if len(possiblemoves) != 0:
return random.choice(possiblemoves)
else:
return None
- في دالة
computerai
, تأكد من تصحيح الأخطاء في الاستدعاءات لدوالgetboardcopy
وgetplayermove
:
pythondef computerai(board, computerletter):
if computerletter == 'X':
playerletter = 'O'
else:
playerletter = 'X'
for i in range(1,10):
dupe = getboardcopy(board)
if isspacefree(dupe, i):
makemove(dupe, computerletter, i)
if winner(dupe, computerletter):
return i
for i in range(1,10):
dupe = getboardcopy(board)
if isspacefree(dupe, i):
makemove(dupe, playerletter, i)
if winner(dupe, playerletter):
return i
move = choosemovefromlist(board, [1, 3, 7, 9])
if move != None:
return move
if isspacefree(board, 5):
return 5
return choosemovefromlist(board, [2, 4, 6, 8])
تأكد من تنفيذ هذه التحسينات وإعادة تشغيل البرنامج. إذا واجهت أي أخطاء إضافية، يرجى مشاركتها لكي أتمكن من تقديم المساعدة المناسبة.