مشق For Loop & Range پر مشق

محمداحمد

لائبریرین
For Loop & Range آپ یہاں پڑھ چکے ہیں۔

اب مشق کیجے:

1.1۔ ایک فنکشن بنائیے جو ایک نمبر آرگیومینٹ لے اور یہ فنکشن For Loopاور Range کی مدد سے 0 سے لے کر آرگیومینٹ میں دیئے گئے نمبر تک تمام نمبرز کی رینج بشمول (آرگیومینٹ میں دیے گئے نمبر) کا حاصل جمع فراہم کرے۔

مثال:
کوڈ:
>>> sum_series(5)
15
 
>>> sum_series(55)
1540


1.2۔ درج ذیل فنکشن اور اس کے نتائج کو بغور دیکھیے اور اپنے الفاظ میں سمجھائیے کہ یہ فنکشن کیا کام کرتا ہے۔ فنکشن میں استعمال کیے گئے مراحل کی درجہ بہ درجہ وضاحت کیجے۔

فنکشن :
PHP:
def sum_odd(x,y):
    if x % 2 == 0:
        x += 1
    accumulated_total = 0
    for i in range(x,y+1,2):
        accumulated_total = accumulated_total + x
        x = x + 2
    return accumulated_total

نتائج:
PHP:
>>> sum_odd(2,9)
24
>>> sum_odd(5,500)
62496


1.3۔ فنکشن sum_odd میں کیا تبدیلی کی جائے کہ یہ sum_even کا کام کرنے لگ جائے۔

******
 

عائشہ عزیز

لائبریرین
For Loop & Range

1.1۔ ایک فنکشن بنائیے جو ایک نمبر آرگیومینٹ لے اور یہ فنکشن For Loopاور Range کی مدد سے 0 سے لے کر آرگیومینٹ میں دیئے گئے نمبر تک تمام نمبرز کی رینج بشمول (آرگیومینٹ میں دیے گئے نمبر) کا حاصل جمع فراہم کرے۔

PHP:
def sum_series(x):
    sum = 0
    for i in range(0, x+1):
        sum = sum + i
    return sum

نتائج :
PHP:
>>> sum_series(5)
15
>>> sum_series(55)
1540
>>> sum_series(7)
28
>>> sum_series(4)
10
 

عائشہ عزیز

لائبریرین
For Loop & Range

1.2۔ درج ذیل فنکشن اور اس کے نتائج کو بغور دیکھیے اور اپنے الفاظ میں سمجھائیے کہ یہ فنکشن کیا کام کرتا ہے۔ فنکشن میں استعمال کیے گئے مراحل کی درجہ بہ درجہ وضاحت کیجے۔

فنکشن :
PHP:
def sum_odd(x,y):
    if x % 2 == 0:
        x += 1
    accumulated_total = 0
    for i in range(x,y+1,2):
        accumulated_total = accumulated_total + x
        x = x + 2
    return accumulated_total

اس پروگرام میں ہم نے sum_odd کے نام سے ایک فنکشن بنایا جو دو ویری ایبلز لیتا ہے اور پھر ان ویری ایبلز کے درمیان سارے odd نمبرز کو جمع کرکے ویلیو ریٹرن کرتا ہے۔
فنکشن باڈی میں سب سے پہلے ہم نے ایک شرط لگائی کہ اگر نمبر even ہے تو اس میں ایک جمع کرکے اسے odd بنا دیں۔ پھر ہم نے ایک ویری ایبل بنایا جس کی ویلیو بائے ڈیفالٹ صفر رکھی۔
اس کے بعد فور لوپ لگایا جس میں رینج کے آرگومنٹس دیئے۔ اب i کی ویلیو ویری ایبل x کے نئی ویلیو (جو کہ ایک جمع کرنے کے بعد آئی) سے لیکر y +1 تک ہوگی۔ یہاں ہم نے y+1 اس لیے استعمال کیا کیونکہ ہمیں معلوم ہے کہ رینج میں آخری ویلیو exclude کردی جاتی ہے۔ اس لیے آخری ویلیو کو شامل کرنے کے لیے ہم y کی بجائے y+1 یوز کریں گے۔ اور تیسرے آرگومنٹ میں جو کہ اسٹیپ ہے ہم نے 2 ویلیو پاس کرائی۔تاکہ x کی ویلیو odd ہی رہے۔
اب ویری ایبل جس کی ویلیو پہلے بائے ڈیفالٹ صفر ویلیو تھی اس کو ایک نئی ویلیو دی جو کہ اسی ویری ایبل میں x پلس کرنے سے حاصل ہوگی۔ یہاں ہم x کی جگہ i بھی یوز کر سکتے ہیں کیونکہ جیسے جیسے x ویلیو بدل رہی ہے ایسے i بھی تبدیل ہو رہا ہے۔
اب اگلے odd نمبر کے لیے x میں دو جمع کر دیا۔
اس طرح فور لوپ بار بار چلے گا جب تک کہ x آؤٹ آف رینج نہ ہو جائے، ایسا ہونے پر لوپ مزید کام نہیں کرے گا اور جب ایسا ہوگا تو ہم ریٹرن فنکشن سے وہ ویلیو ریٹرن کر دیں گے جو آخری بار ویری ایبل accumulated_total میں سیو ہوئی تھی۔


محمداحمد بھیاااا
چیک کر لیں۔
 

عائشہ عزیز

لائبریرین
1.3۔ فنکشن sum_odd میں کیا تبدیلی کی جائے کہ یہ sum_even کا کام کرنے لگ جائے۔

ہم دو طرح سے اس کو لکھ سکتے ہیں۔

PHP:
def sum_even(x,y):
    if x % 2 == 1:
        x += 1
    accumulated_total = 0
    for i in range(x,y+1,2):
        accumulated_total = accumulated_total + i
        x = x + 2
    return accumulated_total

PHP:
def sum_even(x,y):
    if x % 2 != 0:
        x += 1
    accumulated_total = 0
    for i in range(x,y+1,2):
        accumulated_total = accumulated_total + i
        x = x + 2
    return accumulated_total

نتائج :

PHP:
>>> sum_even(2,9)
20
>>> sum_even(1,10)
30
 

عائشہ عزیز

لائبریرین
ایک اور بات ایڈ کر رہی ہوں۔ یہ ابھی ابھی سیکھی ۔۔
سوال یہ تھا کہ اگر ان نمبرز کو جمع کرنے کی بجائے ضرب کرنا ہو تو پھر اسی پروگرام کو کیسے لکھیں گے؟
اس میں دو تبدیلیاں ہوئیں۔ ایک تو بائی ڈیفالٹ ہم نے ویری ایبل کی ویلیو 1 اسائن کی تاکہ وہ ضرب ہو کر صفر نہ ہو جائے۔ اور دوسرا ہم نے فور لوپ کے اندر ویری ایبل کو نئی ویلیو دیتے ہوئے "+" کی بجائے "*" کا سائن یوز کیا۔

PHP:
def sum_even(x,y):
    if x % 2 == 1:
        x += 1
    accumulated_total = 1
    for i in range(x,y+1,2):
        accumulated_total = accumulated_total * i
        x = x + 2
    return accumulated_total
 
Top