مریم افتخار
محفلین
السلام علیکم! اس لڑی میں فار لوپ کے متعلق آپ کی آراء اور سوالات کا خیر مقدم کیا جاتا ہے.
ایک تو میرا خیال ہے کہ املا پر زور دینے کی خاصی ضرورت ہے کیونکہ املا ٹھیک نہ ہونے سے مطلب سمجھنے میں کافی دقت ہوتی ہے۔اس کی رینج صرف نمبر پر اپلاہی ہو سکتی ھے؟
یہاں ہم نے ایک ویری ایبل s میں "URDUWEB" کا ٹیکسٹ تفویض (assign) کیا اور پھر اس کے بعد ایک For کا حلقہ (loop) بنایا۔ فار لوپ میں ہم نے ایک ویری ایبل i کے نام سے سپرد کیا اور اسے باری باری ویری ایبل s میں موجود اسٹرنگ کو پڑھنے کا فرض سونپا
مجھ سے اس لڑی میں سے کوئی پروگرام رن نہیں ہوا، بار بار دھیان سے لکھا ہے، ٹیلی کیا ہے لیکن ایک فرق خود بخود آتا ہے کہ print سے قبل تین ڈاٹس آتے ہیں!For Loop اور Range
پائتھون میں ایک دستیاب (Built-in) فنکشن range بھی ہوتا ہے۔ range عموماً 0 سے لے کر دیے گئے عدد تک عددی ترتیب (Range) فراہم کرتا ہے۔
range فنکشن میں تین دلائل ہوتے ہیں۔ جن میں سے ایک لازمی اور دو اختیاری ہوتے ہیں۔
کوڈ:range([start,] stop[, step]) -> range object
Stop لازمی دلیل (argument) ہے۔ جبکہ Startاور Step قوسینِ کبیر [] میں دیے گئے ہیں جس کا مطلب یہ ہے کہ یہ دونوں دلائل (argument) اختیاری ہیں اور ان کا دینا لازمی نہیں ہے۔ ایک دلیل (argument) دی جائے تو اسے Stop تصور کیا جائے گا۔
فار لوپ کے ساتھ range کو اکثر استعمال کیا جاتا ہے۔
PHP:>>> for i in range (6): print (i) 0 1 2 3 4 5
اس مثال میں ہم نے range فنکشن کو کال کرتے ہوئے صرف ایک دلیل (argument) فراہم کی ہے جو بتا رہی ہے کہ کس نمبر تک لوپ چلانی ہے۔ یعنی ہم نے Rang فنکشن کو 0 سے لے کر 9 تک رینج فراہم کرنے کی ہدایت دی ہے۔ یاد رہے کہ رینج میں ویلیو 0 سے دی جاتی ہے اور دیا گیا عدد رینج میں شامل نہیں ہوتا بلکہ range ایک عدد پہلے ختم ہو جاتی ہے۔
ہماری مثال میں فار لوپ دی گئی range کے مطابق دس چکر لگائے گی اور ہر چکر میں ایک نمبر پرنٹ کرے گی۔ نتیجے کے طور پر 0 سے لے کر 9 تک کے اعداد پرنٹ ہوں گئے۔
PHP:>>> for i in range(5,12): print (i) 5 6 7 8 9 10 11
اس مثال میں ہم نے دو دلائل (arguments) دیے ہیں۔ پہلا Start اور دوسرا Stop۔ یعنی اس مثال میں range فنکشن 5 سے آغاز ہوگا اور (1-12) تک عددی ترتیب فراہم کرے گا۔ باقی نتیجہ وہی ہے جو اوپر والی مثال میں دیا گیا ہے۔
PHP:>>> for i in range(0,10,2): print (i) 0 2 4 6 8
اس مثال میں تین دلائل (arguments) دیے گئے ہیں۔ ۔ پہلا Start، دوسرا Stop اور تیسرا Step۔یہاں Step اضافی دلیل (argument) ہے جو رینج فنکشن کو یہ بتاتی ہے کہ ہر عدد کے بعد کتنے نمبر آگے بڑھنا ہے۔
بائی ڈیفالٹ اسٹیپ 0 ہوتا ہے جبکہ ہماری مثال میں یہ 2 عدد ہے۔
کیا تیسرا آرگومنٹ وہ بائے ڈیفالٹ سٹیپ کو ہی لے گا؟ اگر ہاں! تو وہ بڑی بریکٹس میں کیوں نہیں ہے جیسا کہ شروع میں کہا گیا تھا!For Loop اور Range
پائتھون میں ایک دستیاب (Built-in) فنکشن range بھی ہوتا ہے۔ range عموماً 0 سے لے کر دیے گئے عدد تک عددی ترتیب (Range) فراہم کرتا ہے۔
range فنکشن میں تین دلائل ہوتے ہیں۔ جن میں سے ایک لازمی اور دو اختیاری ہوتے ہیں۔
کوڈ:range([start,] stop[, step]) -> range object
Stop لازمی دلیل (argument) ہے۔ جبکہ Startاور Step قوسینِ کبیر [] میں دیے گئے ہیں جس کا مطلب یہ ہے کہ یہ دونوں دلائل (argument) اختیاری ہیں اور ان کا دینا لازمی نہیں ہے۔ ایک دلیل (argument) دی جائے تو اسے Stop تصور کیا جائے گا۔
فار لوپ کے ساتھ range کو اکثر استعمال کیا جاتا ہے۔
PHP:>>> for i in range (6): print (i) 0 1 2 3 4 5
اس مثال میں ہم نے range فنکشن کو کال کرتے ہوئے صرف ایک دلیل (argument) فراہم کی ہے جو بتا رہی ہے کہ کس نمبر تک لوپ چلانی ہے۔ یعنی ہم نے Rang فنکشن کو 0 سے لے کر 9 تک رینج فراہم کرنے کی ہدایت دی ہے۔ یاد رہے کہ رینج میں ویلیو 0 سے دی جاتی ہے اور دیا گیا عدد رینج میں شامل نہیں ہوتا بلکہ range ایک عدد پہلے ختم ہو جاتی ہے۔
ہماری مثال میں فار لوپ دی گئی range کے مطابق دس چکر لگائے گی اور ہر چکر میں ایک نمبر پرنٹ کرے گی۔ نتیجے کے طور پر 0 سے لے کر 9 تک کے اعداد پرنٹ ہوں گئے۔
PHP:>>> for i in range(5,12): print (i) 5 6 7 8 9 10 11
اس مثال میں ہم نے دو دلائل (arguments) دیے ہیں۔ پہلا Start اور دوسرا Stop۔ یعنی اس مثال میں range فنکشن 5 سے آغاز ہوگا اور (1-12) تک عددی ترتیب فراہم کرے گا۔ باقی نتیجہ وہی ہے جو اوپر والی مثال میں دیا گیا ہے۔
PHP:>>> for i in range(0,10,2): print (i) 0 2 4 6 8
اس مثال میں تین دلائل (arguments) دیے گئے ہیں۔ ۔ پہلا Start، دوسرا Stop اور تیسرا Step۔یہاں Step اضافی دلیل (argument) ہے جو رینج فنکشن کو یہ بتاتی ہے کہ ہر عدد کے بعد کتنے نمبر آگے بڑھنا ہے۔
بائی ڈیفالٹ اسٹیپ 0 ہوتا ہے جبکہ ہماری مثال میں یہ 2 عدد ہے۔
جی نمبر پر ہی اپلائی ہوتی ہے مگر سٹرنگ یا لسٹ پر len کا فنکشن لگا کر ان میں موجود اراکین کا نمبر معلوم کیا جا سکتا ہے اور اس رینج میں استعمال کیا جا سکتا ہے۔اس کی رینج صرف نمبر پر اپلاہی ہو سکتی ھے؟
voc = ["Sabir", "Ahmad", "Namra"]
for i in range(len(voc)):
print(i)
0
1
2
voc = ["Sabir", "Ahmad", "Namra"]
for i in voc:
print(i)
Sabir
Ahmad
Namra
کبھی کبھی کوئی ان دیکھا حرف شامل ہو جاتا ہے جس کی وجہ سے کوڈ میں مسئلہ آتا ہے۔ ایک دقت طلب حل تو یہ ہے کہ سارا کوڈ ٹائپ کریں نوٹ پیڈ میں پھر idle میں نئی فائل بنا کر محفوظ کریں اورمجھ سے اس لڑی میں سے کوئی پروگرام رن نہیں ہوا، بار بار دھیان سے لکھا ہے، ٹیلی کیا ہے لیکن ایک فرق خود بخود آتا ہے کہ print سے قبل تین ڈاٹس آتے ہیں!
اگر ایک ہی ویری ایبل لیں تو پچھلی ویلیو کی جگہ نئی ویلیو آ جائے گی اور پرانی ویلیو ختم ہو جائے گی۔ اس لیے دو ویری ایبل لیے ہیں تاکہ دو ویری ایبل میں مختلف چیزیں موجود رہیں۔دو الگ الگ ویری ایبلز لینے کی اتنی ضروت کیوں ہے؟ ایک ہی کام کیوں نہیں کر سکتا؟
اگر صرف ایک آرگومینٹ دیا جائے تو وہ سٹاپ stop تصور کیا جائے گا کہ باقی دو آرگومینٹ اختیاری ہیں اس لیے چوکور بریکٹ میں درج کیے گئے ہیں۔کیا تیسرا آرگومنٹ وہ بائے ڈیفالٹ سٹیپ کو ہی لے گا؟ اگر ہاں! تو وہ بڑی بریکٹس میں کیوں نہیں ہے جیسا کہ شروع میں کہا گیا تھا!
لیکن اس مثال میں تو سٹیپ تیسرے نمبر پر یعنی دوسری قیمت پر تھا نا؟اگر صرف ایک آرگومینٹ دیا جائے تو وہ سٹاپ stop تصور کیا جائے گا کہ باقی دو آرگومینٹ اختیاری ہیں اس لیے چوکور بریکٹ میں درج کیے گئے ہیں۔
start اور step اختیاری ہیں اور جب نہ دیے گئے ہوں تو ڈیفالٹ تصور کیے جاتے ہیں
start کی ڈیفالٹ قیمت صفر ہے۔
step کی ڈیفالٹ قیمت ایک ہے۔
مثال کا اقتباس شامل ہو تو زیادہ بہتر جواب ہو سکتا ہے۔لیکن اس مثال میں تو سٹیپ تیسرے نمبر پر یعنی دوسری قیمت پر تھا نا؟
اپنی طرف سے تو پورا اقتباس ہی لیا تھا، تاہم کوڈز شاید اقتباس میں نظر ہی نہیں آتے!مثال کا اقتباس شامل ہو تو زیادہ بہتر جواب ہو سکتا ہے۔
کاپی پیسٹ کر لیں ۔اپنی طرف سے تو پورا اقتباس ہی لیا تھا، تاہم کوڈز شاید اقتباس میں نظر ہی نہیں آتے!
>>> list=[1,2,3,4]
>>> sum=1
>>> for val in list:
sum=sum+val
print(sum)
2
4
7
11
ویری ایبل کا نام جو کوڈ میں استعمال ہوا ہے وہی استعمال کریں۔ sum کو سمجھنے میں کافی وقت لگا مجھے۔PHP:>>> list=[1,2,3,4] >>> sum=1 >>> for val in list: sum=sum+val print(sum)
اس میں اس نے سم کو صرف پہلے میں کیوں جمع کیا ھے۔باقی میں کوں نہین کیا؟؟؟کوڈ:2 4 7 11