اعلان Python سیکھنے میں کون کون دلچسپی رکھتا ہے

اسٹرنگ کا پہلا اشاریہ 0 سے شروع ہوتا ہے ، عموما تمام زبانوں میں یہی رواج ہے۔

+---+---+---+---+---+
| H | e | l | p | A |
| 4 | 3 | 2 | 1 | 0 |
0 1- 2- 3- 4-
 
کوڈ:
word = "HelpA"

یہاں اسٹرنگ کا اشاریہ 4 پر جو حرف ہے وہ پائتھون دکھائے گا۔
کوڈ:
>>> word[4]
'A'


کوڈ:
>>> word[0:2]
'He'
>>> word[2:4]
'lp'

ایک مفید کام جو اسٹرنگ پر کیا جا سکتا ہے وہ دو اشاریوں کو ایک colon کی مدد سے دکھایا جا سکتا ہے۔ اسے slice notation کہتے ہیں یعنی دو اشاریے بیچ ایک colon

[:]
پہلا اشاریہ شروعاتی پوزیشن کا بتاتا ہے اور دوسرا اشاریہ بتاتا ہے کہ کتنی مزید پوزیشن تک حروف کشید کرنے ہیں۔

اوپر والی مثالوں میں ایک دفعہ پہلی پوزیشن سے لے کر دو پوزیشن کے حروف کو کشید کر شائع کیا گیا ہے ۔
'He'

اور دوسری دفعہ تیسری پوزیشن سے چوتھی تک کے حروف کو کشید کیا گیا ہے۔

کوڈ:
>>> word[:2]    # The first two characters
'He'

اگر پہلا اشاریہ کولن سے پہلے نہ لکھیں تو وہ 0 شمار ہوتا ہے یعنی اوپر والی مثال میں پہلی دو پوزیشن سے حروف کشید کیے گئے ہیں۔

کوڈ:
>>> word[2:]    # Everything except the first two characters
'lpA'

اگر دوسرے اشاریے کی جگہ کچھ نہ دیا جائے تو یہ پہلے اشاریے سے لے کر پوری سٹرنگ کشید لی جاتی ہے۔ اوپر والی مثال میں دوسری پوزیشن سے لے کر پوری اسٹرنگ کے حروف کشیدکیے گئے ہیں۔
 
اشاریے (indices) کی مقدار منفی عدد بھی ہو سکتی ہے اور اگر ایسا ہوتو پھر گنتی دائیں طرف سے شروع کی جاتی ہے یعنی اسٹرنگ کے اختتام سے۔

کوڈ:
>>> word = 'HelpA'
>>> word[-1]    # The last character
'A'
>>> word[-2]    # The last-but-one character
'p'
>>> word[-2:]    # The last two characters
'pA'
>>> word[:-2]    # Everything except the last two characters
'Hel'
 
پائتھون میں ان پٹ لینے کے لیے ایک طریقہ ان پٹ فنکشن کا ہے ۔

کوڈ:
>>> n = input("Enter a numerical expression: ")
 
Enter a numerical expression: 12
 
>>>print (n)
12


input کا فنکشن نئے پائتھون ورژن میں استعمال ہو رہا ہے اس سے پہلے raw_input کا فنکشن استعمال ہوتا رہا ہے مگر اب یہ قابل استعمال نہیں۔
 
تبصرے (Comments)
تبصروں کے لیے ایک مخصوص علامت # استعمال کی جاتی ہے۔

کوڈ:
# compute the percentage of the hour that has elapsed
minute = 35
percentage = (minute * 100) / 60
print (percentage)
 
Control Flow Statements

ابھی تک ہم نے جتنی بھی ہدایات پروگرام میں دیکھی ہیں وہ اوپر سے نیچے کی طرف ترتیب سے لکھی جاتی ہیں اور اسی طرح سے چلائی بھی جاتی ہیں۔
پروگرام میں بہت دفعہ ایسی صورتحال پیدا ہوتی ہے جب ہمیں کچھ فیصلے کرنے پڑتے ہیں اور اس کے لیے پروگرام کی بالائی سے زیریں طریقہ کار کو بدلنا پڑتا ہے۔ اس کام کو انجام دینے کے لیے ضابطہ بہاؤ بیان (control flow statements) کی ضرورت پڑتی ہے۔

تین قسم کی control flow statements پائتھون میں رائج ہیں۔

if
for
while


If Statement
if بیان کسی بھی شرط کو جانچنے کے لیے استعمال ہوتا ہے۔ اگر شرط درست ہے تو پھر بیانات کا پورا ایک بلاک چلایا جاتا ہے (if- block) دیگر ایک اور بلاک (else-block) ۔ دیگر (else) کا جزو اختیاری ہوتا ہے۔

PHP:
>>> x = int(input("Please enter an integer: "))
Please enter an integer: 42
>>> if x < 0:
      x = 0
      print('Negative changed to zero')
elif x == 0:
      print('Zero')
elif x == 1:
      print('Single')
else:
      print('More')

اوپر والی مثال میں ان پٹ ( ()input )کے فنکشن سے پہلے عمر پوچھی گئی ہے اور پھر ایک اور فنکشن ( ()int )سے یہ تسلی کی گئی ہے کہ ان پٹ ایک نمبر ہی ہے۔

اس کے بعد if بیان کے ذریعے یہ جانچا گیا ہے کہ اگر عمر صفر سے کم ہے تو چند کام کیے جائیں دیگر

elif کے ساتھ دوبارہ یہ چیک کیا گیا ہے کہ دیا جانا نمبرصفر کے برابر ہے اور اگر ایسا ہے تو پرنٹ کیا گیا ہے۔ پھر دوبارہ 1 کے ساتھ چیک کیا گیا ہے اور پرنٹ کیا گیا ہے ۔ یہاں elif حقیقت میں اختصار ہے else if کا جو بعض دوسری زبانوں میں ایسے ہی لکھا جاتا ہے۔

آخر میں else بیان کے ذریعے آخری پرنٹ بیان۔

یعنی مختصر الفاظ میں if else بلاک کی شکل یوں ہو گی۔

if کوئی شرط
شرط پوری ہونے پر چند ہدایات یا کچھ بھی
elif مزید شرط
شرط پوری ہونے پر چند ہدایات یا کچھ بھی
else
اگر کوئی شرط بھی پوری نہ ہو تو پھر یہاں چلا آئے گا پروگرام اور جو لکھا ہو وہ پورا ہوگا۔
 

محمداحمد

لائبریرین
ایک سوال یہ ہے کہ پائتھون syntax میں indenting کی کیا اہمیت ہے۔ کیا غلط indentingیا اضافی spaces پائتھون کوڈ کی فعالیت میں مانع ہو سکتے ہیں؟ if بلاک کی مشق کے دوران مجھے ایسا لگا کہ indenting کا درست ہونا ضروری ہے۔
 

دوست

محفلین
بالکل حاشیہ بندی بہت ضروری ہے۔ پائتھون کا انٹرپریٹر اسے شناخت ہی اس بنیاد پر کرتا ہے، ورنہ جہاں تک میرا علم کہتا ہے لہرئیے دار بریکٹ بھی استعمال کی جا سکتی ہے (سی شارپ کی طرح)۔ لیکن اس کا رواج نہیں ہے۔
 
ایک سوال یہ ہے کہ پائتھون syntax میں indenting کی کیا اہمیت ہے۔ کیا غلط indentingیا اضافی spaces پائتھون کوڈ کی فعالیت میں مانع ہو سکتے ہیں؟ if بلاک کی مشق کے دوران مجھے ایسا لگا کہ indenting کا درست ہونا ضروری ہے۔

جیسا کہ شاکر نے بھی بتایا ہے ، حاشیہ بندی (indentation) لازمی ہے۔
 
Nested Conditions
if بیان پر پہلے بات ہوئی تھی ، اس میں ایک اور چیز کا اضافہ ضروری ہے کہ if بیان کی شرط میں مزید if بیانات بھی شامل کیے جا سکتے ہیں۔ مثلا

PHP:
var = 100
if var < 200:
  print ("Expression value is less than 200")
  if var == 150:
      print ("Which is 150")
  elif var == 100:
      print ("Which is 100")
  elif var == 50:
      print ("Which is 50")
elif var > 200:
  print ("Expression value is less than 200")
else:
  print ("Could not find true expression")
 
print ("Good bye!")
 
for loop
for لوپ میں کسی بھی ترتیب (sequence like strings or list) میں چیزوں کا اعادہ کیا جاتا ہے۔ سادہ الفاظ میں یہ ایسا بیانیہ ہوتا ہے جس میں کسی بھی حلقہ کے پھیروں کی تعداد کا پہلے سے علم ہوتا ہے اور اس میں کسی بھی لسٹ یا اسٹرنگ کے اجزا کا ایک ایک کرکے جائزہ لیا جا سکتا ہے، ترتیب سے ۔

PHP:
for i in range(1, 5):
    print(i)
else:
    print('The for loop is over')

اوپر والی مثال میں پائتھون کا ایک فنکشن range استعمال کیا گیا ہے جو میں ابتدائی اور اختتامی نمبر بتایا گیا ہے۔

اس کے بعد for لوپ کی مدد سے پانچ نمبروں کی رینج میں پہلے نمبر سے ترتیب وار شروع کرتے ہوئے تمام نمبروں کا اعادہ کیا ہے گا جو کہ for لوپ کی خصوصیت ہے۔ ہر نمبر کو ایک ایک کرکے پھیرے میں پرنٹ کروایا گیا ہے۔
PHP:
for letter in 'Python':    # Iterating through string "Python"
  print ('Current Letter :', letter)

دوسری مثال میں ایک اسٹرنگ "Python" لی گئی ہے اور اس کے ہر حرف کو باری باری پرنٹ کروایا گیا ہے ۔

PHP:
 a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
      print(i, a[i])

اس مثال میں range اور len دونوں فنکشن کا اکٹھا استعمال کرکے کوڈ کو مختصر کیا گیا ہے۔ رینج کے فنکشن کو ہم کسی بھی ترتیب (sequence) پر استعمال کر سکتے ہیں جس میں بار بار عناصر کا اعادہ کیا جا سکے یعنی اگر ایک لسٹ ہو اور اس کے اشاریے کی مدد سے ایک ایک عنصر کو کسی بھی for لوپ کے ذریعے باری باری پڑھ لیا جائے اور حسب منشا کوئی کام کر لیا جائے ۔ سب سے سادہ کام ہے کہ عناصر کو پرنٹ کرایا لیا جائے۔

اس مثال میں لسٹ a میں چار اسٹرنگ عناصر ہیں۔
1۔ for لوپ میں پہلے تو لسٹ کی لمبائی (len) کا فنکشن استعمال کیا گیا ہے
2۔پھر رینج کے فنکشن کی مدد سے for لوپ کو ایک عددی حد دے دی گئی تاکہ for لوپ لسٹ میں موجود عناصر کی تعداد تک پھیرے لے سکے۔
3۔ آخر میں اشاریے کا عدد اور لسٹ میں اشاریے کے مقام پر موجود اسٹرنگ کو ایک ایک کرکے پرنٹ کرایا گیا ہے۔
 

محمداحمد

لائبریرین
Nested Conditions
if بیان پر پہلے بات ہوئی تھی ، اس میں ایک اور چیز کا اضافہ ضروری ہے کہ if بیان کی شرط میں مزید if بیانات بھی شامل کیے جا سکتے ہیں۔ مثلا

PHP:
var = 100
if var < 200:
  print ("Expression value is less than 200")
  if var == 150:
      print ("Which is 150")
  elif var == 100:
      print ("Which is 100")
  elif var == 50:
      print ("Which is 50")
elif var > 200:
  print ("Expression value is more than 200")
else:
  print ("Could not find true expression")
 
print ("Good bye!")

السلام علیکم،

اس code میں جو دوسری بار if بیان دیا گیا ہے، کیا اس کی جگہ ہم elif بھی استعمال کرسکتے ہیں۔ کیا دونوں کا استعمال یکساں ہے یا اس میں کوئی فرق بھی ہے؟

code کو آپ نے php ٹیگ میں بند کیا ہے اس کی کیا وجہ ہے؟ کیا php اور python کا syntax آپس میں مماثل ہے؟
 

محمدصابر

محفلین
میں تو ابھی سٹرنگ سے ہی نکلا تھا۔آج سٹرنگ پر کچھ تجربات کیے ہیں۔
کوڈ:
print('My Words')
print("Sabir's Words")
print('Sabir\'s Words')
myText = 'Hello this is my test text\
    and I am using it to test printing strings'
print(myText)
myText = 'Hello this is my test text\n\
and I am using it to test printing strings'
print(myText)
myText = r'Hello this is my test text\n\
and I am using it to test printing strings'
print(myText)
myText = '''Hello this is my test text
and I am using it to test printing strings'''
print(myText)
سب سے پہلے تو سنگل کوٹ اور ڈبل کوٹ دونوں کا استعمال سیکھا۔ آپ ایک وقت میں ایک ہی کوٹ سٹائل استعمال کر سکتے ہیں۔ چاہے سنگل کر لیں چاہے ڈبل کر لیں۔ اور اگر ان کوٹس کو بھی سٹرنگ میں پرنٹ کروانا ہے تو پھر باہر دوسری کوٹس استعمال کریں۔ یعنی اگر سٹرنگ میں سنگل کوٹ پرنٹ کروانی ہے تو بار ڈبل کوٹس استعمال کریں۔ یا کوٹ کے نشان سے پہلے اسکیپ کریکٹر بیک سلیش\ کا استعمال کریں۔
اگر ٹیکسٹ اگلی لائن میں پرنٹ کروانا ہے تو \n\ کا استعمال کریں۔
اگر سٹرنگ کے شروع میں r لگا دیا جائے تو وہ RAWسٹرنگ بن جاتی ہے اور ویسے ہی پرنٹ ہو جاتی ہے۔
اور اگر کوٹس (سنگل یا ڈبل) کو شروع یا آخر میں بغیر سپیس کے تین دفعہ لکھا جائے تو ان کے درمیان میں جو کچھ لکھا ہو گا وہ اسی طرح پرنٹ ہو جائے گا۔
 
code کو آپ نے php ٹیگ میں بند کیا ہے اس کی کیا وجہ ہے؟ کیا php اور python کا syntax آپس میں مماثل ہے؟
کیوں کہ محفل کے ایڈیٹر میں فی الحال محض پی ایچ پی اور ایچ ٹی ایم ایل کے کوڈ ٹیگ دستیاب ہیں۔ اب ان دونوں میں پی ایچ پی کا سنٹیکس ہائلائٹر پائتھوں کے کوڈ کو زیادہ بہتر ہائیلائٹ کر سکتا ہے اس لیے اسے استعمال کیا گیا ہے۔ :)
 

نمرہ

محفلین
اس code میں جو دوسری بار if بیان دیا گیا ہے، کیا اس کی جگہ ہم elif بھی استعمال کرسکتے ہیں۔ کیا دونوں کا استعمال یکساں ہے یا اس میں کوئی فرق بھی ہے؟
نہیں، کیونکہ var==150 کی سٹیٹمنٹ ، var<200 کا ایک ذیلی کیس ہے اور کسی بھی if-else بلاک کی پہلی سطر if سے ہی شروع ہوتی ہے۔
اس پروگرام میں نیسٹڈ کنڈیشنز ہیں، یعنی ایک if بلاک کے اندر ایک اور if-else بلاک۔ پہلی سطح پر ہم var نامی ایک ویرئیبل کو چیک کر رہے ہیں کہ آیا var میں سٹور کیا گیا نمبر :
1۔ 200 سے چھوٹا ہے۔
2۔ 200 سے بڑا ہے۔
3۔ کسی وجہ سے کمپیوٹر یہ حساب نہیں لگا پا رہا کہ یہ نمبر 200 سے چھوٹا ہے یا بڑا، مثال کے طور پر اگر var میں نمبر کے بجائے کوئی سٹرنگ سٹور کی گئی ہو۔
پھر اگر یہ نمبر 200 سے چھوٹا ہے تو اس if کے ذیلی بلاک کی execution شروع ہو جائے گی۔ اس میں یہ معلوم کیا جائے گا کہ کیا یہ نمبر 150، 100 یا 50 کے برابر ہے، اور اگر ہے تو کچھ پرنٹ کیا جائے گا۔
 

محمداحمد

لائبریرین
نہیں، کیونکہ var==150 کی سٹیٹمنٹ ، var<200 کا ایک ذیلی کیس ہے اور کسی بھی if-else بلاک کی پہلی سطر if سے ہی شروع ہوتی ہے۔
اس پروگرام میں نیسٹڈ کنڈیشنز ہیں، یعنی ایک if بلاک کے اندر ایک اور if-else بلاک۔ پہلی سطح پر ہم var نامی ایک ویرئیبل کو چیک کر رہے ہیں کہ آیا var میں سٹور کیا گیا نمبر :
1۔ 200 سے چھوٹا ہے۔
2۔ 200 سے بڑا ہے۔
3۔ کسی وجہ سے کمپیوٹر یہ حساب نہیں لگا پا رہا کہ یہ نمبر 200 سے چھوٹا ہے یا بڑا۔
پھر اگر یہ نمبر 200 سے چھوٹا ہے تو اس if کے ذیلی بلاک کی execution شروع ہو جائے گی۔ اس میں یہ معلوم کیا جائے گا کہ کیا یہ نمبر 150، 100 یا 50 کے برابر ہے، اور اگر ہے تو کچھ پرنٹ کیا جائے گا۔

شکریہ۔۔۔۔! محب بھائی نے لکھا بھی ہے کہ یہ nested condition ہے پھر بھی ہم نے غور نہیں کیا۔

اینی ویز۔۔۔۔! شکریہ۔
 
break statement
بریک (break) استعمال ہوتی ہے کسی بھی لوپ میں سے باہر نکلنے کے لیے۔ یعنی اگر for یا while لوپ چل رہی ہے اور آپ چاہتے ہیں کہ اگر کوئی خاص شرط کسی موقع پر پوری ہو جائے تو حلقہ سے باہر آیا جائے تو ایسے موقع پر بریک (break) کا استعمال کیا جاتا ہے۔ مثال

PHP:
var = 10                 
while var > 0:
  print ('Current variable value :', var)
  var = var -1
  if var == 5:
      break
 
print ("Good bye!")

اس مثال میں ایک متغیر var کی قیمت 10 رکھی گئی ہے اور پھر while لوپ کی شرط رکھی گئی ہے کہ متغیر var کی قیمت 0 سے زیادہ رہے۔
while لوپ کے اندر ہر پھیرے میں متغیر varکی قیمت ایک نمبر کم کی جا رہی ہے۔
if کی مدد سے یہ چیک کیا گیا ہے کہ اگر متغیر var کی قیمت 5 ہو جاتی ہے تو بقول فراز

سلسلے توڑ گیا وہ سبھی جاتے جاتے

یعنی while لوپ سے باہر آ جائیں مکمل طور پر اور آخری پرنٹ بیان شائع کر دیں۔
 
continue statement
continue بیان کسی بھی لوپ (loop) میں اس وقت استعمال کیا جاتا ہے جب کسی خاص شرط کے پورا ہونے پر لوپ (loop)کے اندر باقی ماندہ تمام بیانات کو پھلانگنا ہو اور لوپ کے اگلے پھیرے پر جانا ہو۔


PHP:
var = 10                 
while var > 0:
  var = var -1
  if var == 5:
      continue
  print ('Current variable value :', var)
print ("Good bye!")

اس پوری مثال میں صرف بریک (break) کی جگہ continue کا استعمال کیا گیا ہے اور کوڈ کو چلانے کے بعد صرف ایک نمبر پرنٹ نہیں ہوگا اور وہ ہے 5 کیونکہ if بیان کے ذریعے یہ چیک کیا گیا ہے کہ اگر متغیر var کی قیمت 5 ہے تو جاری رکھا جائے لوپ (loop) کو مگر اگلے بیانات کو پھلانگ کر اور لوپ (loop) کے اگلے پھیرے سے پھر شروع کیا جائے۔
 
pass statement
pass بیان کا ویسے کوئی فائدہ نہیں ہوتا اور یہ صرف خانہ پوری کے لیے استعمال ہوتا ہے۔ یہ کوڈ میں ایسی جگہ استعمال کیا جاتا ہے جہاں آپ کچھ نہیں کرنا چاہ رہے مگر اس چیز کو ظاہر بھی کرنا چاہ رہے ہیں کہ یہاں ابھی کوئی کوڈ نہیں ہے مگر شاید مستقبل میں ہو۔ یہ null کے برابر ہوتا ہے جسے دیگر پروگرامنگ زبانوں میں استعمال کیا جاتا ہے۔ اس کا استعمال پروٹوٹائپ پروگرامنگ میں ہو سکتا ہے جہاں کوڈ ابھی مکمل نہیں ہوتا ۔

مثال میں Python اسٹرنگ کے تمام حروف پرنٹ کیے گئے ہیں اور جب H پر لوپ (loop) پہنچتی ہے تو ایک اضافی بیان صرف pass والے بلاک میں کوڈ کی موجودگی کے لیے استعمال کیا گیا ہے۔


PHP:
for letter in 'Python':
  if letter == 'h':
      pass
      print ('This is pass block')
  print ('Current Letter :', letter)
 
print (" !خدا حافظ")


 
تفاعل وظیفہ یا فنکشن (Functions)
فنکشن کسی بھی پروگرام میں ایسا حصہ ہوتا ہے جسے بار بار استعمال کیا جا سکتا ہے ۔
فنکشن کا آغاز ایک مختص لفظ def سے ہوتا ہے
اس کے بعد فنکشن کا نام اور قوسین () ہوتی ہیں جن کا اختتام : (colon) پر ہوتا ہے ۔ اگر کوئی پیرامیٹر (parameter) ہو تو وہ قوسین () کے درمیان آتا ہے
اگلی لائن میں فنکشن میں جو کام کرنا ہے اس کا آغاز ہوتا ہے اور یہاں سے تمام کوڈ باقاعدہ indented ہوتا ہے۔

فنکشن کو کال کرنے کے لیے فنکشن کا نام مع قوسین (paranthesis) لکھا جاتا ہے۔ اگر کوئی پیرامیٹر (parameter) ہو تو وہ فنکشن کی قوسین (paranthesis) میں لکھا جائے گا۔

PHP:
def sqr(a):
    print (a * a)
 
sqr(2)
 
4

ایک اور مفید, مثال Fibonacci series کو فنکشن میں لاگو کرنے سے واضح ہوگی۔ یہ ایسی سیریز ہوتی ہے جس میں ہر نمبر پچھلے دو نمبروں کا جمع ہوتا ہے یعنی

1 , 1, 2 , 3 , 5 , 8 , 13 , 21 ......

PHP:
def fib(n):    # write Fibonacci series up to n
    """Print a Fibonacci series up to n."""
    a, b = 0, 1
    while b < n:
        print(b, end=' ')
        a, b = b, a+b
    print()
 
fib(100)
 
 
1 1 2 3 5 8 13 21 34 55 89
 
Top