البرمجة

طريقة طباعة قيم المتغيرات في Python

بدايةً، يبدو أنك تحاول طباعة قيم متغيرات Python الموجودة في القائمة باستخدام حلقة تكرارية. ومع ذلك، يبدو أن الطريقة التي تستخدمها للوصول إلى اسماء المتغيرات “a1″، “a2″، “a3” غير صحيحة.

في الواقع، عند استخدام “temp” لتخزين اسم المتغير، فإنك تخزن فقط السلسلة “a” مع قيمة متغير العداد. ومن ثم عند طباعة “temp”، سيتم طباعة هذه السلاسل بدلاً من قيم المتغيرات الفعلية.

لحل هذه المشكلة، يمكنك استخدام دالة eval() لتقوم بتقييم السلسلة كتعبير Python صحيح، مما يجعلها تُعيد قيمة المتغير بدلاً من اسمه. ولكن يجب أن تكون حذرًا عند استخدام eval() لأنه يمكن أن يكون غير آمن إذا تم استخدامه مع بيانات مدخلة خارجية.

إليك كيف يمكن تعديل الشيفرة لتحقيق المطلوب:

python
a1 = 1 a2 = 2 a3 = 3 for i in range(1, 4): temp = "a" + str(i) print(eval(temp))

باستخدام eval(temp)، سيتم تقييم السلسلة “temp” وإرجاع قيمة المتغير المقابلة (“a1″، “a2″، “a3”) بدلاً من السلسلة نفسها. وبالتالي، ستحصل على الإخراج المرغوب والذي يعرض قيم المتغيرات (1، 2، 3) بدلاً من أسمائها.

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

بالطبع، دعني أوضح المزيد حول الطريقة التي تم استخدامها في الشيفرة السابقة لتحقيق الهدف المطلوب.

في البداية، لدينا قائمة من المتغيرات في Python تحتوي على القيم التالية:

  • a1 بقيمة 1
  • a2 بقيمة 2
  • a3 بقيمة 3

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

لحل هذه المشكلة، استخدمنا الدالة eval() في السطر التالي:

python
print(eval(temp))

هذا يعني أننا نقوم بتقييم السلسلة temp كتعبير Python صحيح، مما يعني أن Python سيقوم بالبحث عن المتغير ذو الاسم المحدد (مثل “a1″، “a2″، “a3”) وإعادة قيمته.

ومع ذلك، يجب التنبيه إلى أن استخدام eval() يجب أن يتم بحذر بالغ، خاصة عندما يتم استخدامه مع بيانات مدخلة من مصادر غير موثوق بها، لأنه يمكن أن يؤدي إلى ثغرات أمنية إذا تم تقييم بيانات خبيثة.

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