اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

الكود ده موجود في كورس CS50 week 1  مكتوب بلغه C فا عند مضاعفه العدد كان بيجي ارقام غريب زي اقارم سالب وبعد كده رقم 0 

بس انا كتب الكود ده بلغه باثيون المشكليه ده مش بتظهر ليه ؟

وده الكود بلغه باثيون 

dollars = 1

while True:
    c = input(f"Here s ${dollars}. Duble it and give it to the next person? ")
    if c == 'y':
        dollars *= 2

    elif c == 'n':
        break

    else:
        print("Enter Yes or No!")

 

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته .

إن تعامل python مع البيانات وخاصة الأرقام مختلف تمام عن التعامل معها في لغة C.

حيث أن python هى لغة Dynamic Type حيث يمكنك تغير نوع البيانات في وقت ال run time فإذا كنت قد عرفت المتغير ك int يمكنك تغيره إلى float أو حتى سلسلة نصية و python تسمح لك بهذا و في بايثون الأعداد الصحيحة يمكن أن تنمو بمرونة إلى أي حجم يتسع له الذاكرة المتاحة.

أما لغة C هي لغة Static Type حيث لا يمكن تغير نوع المتغير بعد تعريفه فلا يمكن تغير النوع من int إلى float أو أى نوع أخر . 

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

image.thumb.png.7ea21a25a12d718989f1bcd87cf55750.png

والصورة السابقة للجدول الخاص بأنواع البيانات في لغة c و المجال الذي يتسع له كل نوع بيانات .

فلاحظ النوع int يتسع من -32,768 إلى 32,767  لو كان 2 byte أي إذا تم وضع 32,768 لاحظ أنه زيادة رقم عن المجال المسموح ستحدث مشكلة ال overflow وستجد أن المتغير يحوى أرقام سالبة أو حتى صفر . 

لذلك في الكود الذي بلغة c يفضل إستخدام نوع بيانات كبير مثل unsigned long حيث المجال الخاص به كبير كما موضح في الجدول .

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...