a, b, c = 1, 1, 1
while c < 11:
print(b, end = ' ')
a, b, c = b, a + b, c + 1
#output
#1 2 3 5 8 13 21 34 55 89
a, b, c = 1, 1, 1
while c < 11:
print(b, end = ' ')
a = b;
b = a + b
c = c + 1
#output
#1 2 4 8 16 32 64 128 256 512
a, b, c = 1, 1, 1
while c < 11:
print(b, end = ' ')
a, b, c = b, a + b, c + 1
#output
#1 2 3 5 8 13 21 34 55 89
a, b, c = 1, 1, 1
while c < 11:
print(b, end = ' ')
a = b;
b = a + b
c = c + 1
#output
#1 2 4 8 16 32 64 128 256 512
الفرق بين البرنامجين يكمن هنا:
a, b, c = b, a + b, c + 1a = b; b = a + b c = c + 1
في البرنامج الأول تغيير قيم كل من a b ِc
تتم في وقت واحد لذا
فإن b يأخذ قيمة a قبل القديمة أي قبل تنفيذ a=b
أما في الحالة الثانية
تغيير القمة لا يتم بوقت واحد
ينفذ أمر بعد الآخر
هذه الطريقة تمكننا من تغيير قسمة متغيرين من دون إستعمال متغير ثالث
a=2b=3a,b=b,a
طيب كيف و print قبل المتغيرات حتى لو كان في البرنامج الاول المتغيرات تاخذ القيم في وقت واحد والثاني واحد تلو الاخر print لن تطبع الا بعد مايتم تعيين قيمة المتغيرات!
هل كلامي صحيح ؟
تم تعديل هذه المشاركة بواسطة m ahmed في 2 يونيو 2014 في 21:13
المشكلة ليست في print
كما قلت لك الأمر متعلق بما ذكرته فقط
المتغييرات ذات علاقة ببعضها البعض لذا بين أن تنفذ مع بعض أو واحدة تلو الأخرى فالنتيحة تختلف
سأشرح أكثر لك
في البرنامج الأول b تأ خذ القيمة القديمة ل a + القيمة الموجودة فيها(قيمة b القديمة)
أما في البرنامج الثاني
a = b; b = a + b
b تأخذ القيمة الجديدة ل a و التي هي b و تضيفها بقسمتها السابقة(قيمة b القديمة)
يمكننا إستبدال هذين السطرين ب:
b=b*2
و النتيجة ستبقي نفسها
يا أخى بما أنك مبرمج فأنا بالتأكيد تعرف أن ترتيب العمليات يغير النتيجة
مثلا
في هذا البرنامج نغير قيمة b ثم نغير قيمة a
a=1b=1for i in range(10): b=a+b a=a+bprint a,b#17711 10946
أما هنا فنغير قيمة a أولا
a=1b=1for i in range(10): a=a+b b=a+bprint a,b#17711 10946
كما تلاحط النتيجة تختلف
إن لم تفهم هذا فراجع أولويات العمليات
أخي شكرا لك ع المساعدة، لكنك ربما لم تفهمني بشكل جيد
ماتعنيه مفهوم وواضح بالنسبة لي لكن سؤالي مختلف بعض الشيء
أجبتك عن سؤالك في ردي الأول
لكنك بعدما رديت علي لاحضت أنك لا تفهم الأوليات
لذا شرحت لك في ردي الثاني
على العموم وضح أكثر إن لم أكن قد وفقت في فهم مرادك
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…