لعبة بايثون بلاك جاك - تمت الإشارة إليها قبل المهمة

StackOverflow https://stackoverflow.com//questions/25071529

  •  26-12-2019
  •  | 
  •  

سؤال

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

singlePlayerCard = random.choice(availableCards)
singlePlayerCard2 = random.choice(availableCards)

if(singlePlayerCard == [1,2,3,4,5,6,7,8,9,10]):
    singlePlayerCardValue = singlePlayerCard

if(singlePlayerCard2 == [1,2,3,4,5,6,7,8,9,10]):
    singlePlayerCard2Value = singlePlayerCard2


singlePlayerCardValueTotal = singlePlayerCardValue+singlePlayerCard2Value
print ("The total of your card values is %i"%singlePlayerCardValueTotal)

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

كما هو الحال دائما، شكرا مقدما!:)

هل كانت مفيدة؟

المحلول

كما لاحظت في تعليقك، فإن عبارة "تمت الإشارة إليه قبل التعيين" تعني أنك ذكرت متغيرًا قبل أن يتم إعطاؤه قيمة.

يبدو أن مشكلتك هي التالية:

if(singlePlayerCard == [1,2,3,4,5,6,7,8,9,10]):
    singlePlayerCardValue = singlePlayerCard

منذ الخاص بك singlePlayerCard أبدا يساوي القائمة [1,2,3,4,5,6,7,8,9,10], ، لن تقوم بتعيين قيمة للمتغير عندما يكون عبارة عن بطاقة أرقام.

ال == عامل التشغيل ليس هو الطريقة للتحقق مما إذا كانت القائمة تحتوي على قيمة.جرب هذا بدلاً من ذلك:

if(singlePlayerCard in [1,2,3,4,5,6,7,8,9,10]):
    singlePlayerCardValue = singlePlayerCard
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top