ایک انٹرایکٹو اندازہ لگانے والا کھیل بناتے وقت عام ازگر کی خرابی۔
Python سیکھتے وقت، سب سے زیادہ دلچسپ منصوبوں میں سے ایک انٹرایکٹو گیمز بنانا ہے جیسے کہ ایک عدد اندازہ لگانے والی گیم۔ اس طرح کے پروجیکٹ آپ کو یہ سمجھنے میں مدد کرتے ہیں کہ Python کس طرح صارف کے ان پٹ کے ساتھ تعامل کرتا ہے اور پروگرام کے رویے کی رہنمائی کے لیے کنٹرول فلو کا استعمال کرتا ہے۔ اس معاملے میں، مقصد یہ ہے کہ Python صارف کو 1 اور 100 کے درمیان نمبر کا اندازہ لگانے کے لیے کہے، زیادہ یا کم کا اندازہ لگانے کے لیے فیڈ بیک دے، اور آخر میں، درست اندازہ لگانے کی تصدیق کرے۔
تاہم، پروگرامنگ کی بہت سی مشقوں کی طرح، غلطیاں پیدا ہو سکتی ہیں جو فوری طور پر واضح نہیں ہوتیں۔ پائتھون ٹیوٹوریل کی پیروی کرتے ہوئے آپ کو ایک غلطی کا سامنا کرنا پڑ سکتا ہے، جیسا کہ آپ جس پر کام کر رہے ہیں، وہ ہے %: 'Math' اور 'tuple' کے لیے غیر تعاون یافتہ آپرینڈ کی قسم۔ یہ مایوس کن ہو سکتا ہے، خاص طور پر جب نحو پہلی نظر میں درست نظر آئے۔
اس اندازہ لگانے والے کھیل میں، آپ کو جس غلطی کا سامنا کرنا پڑتا ہے وہ عام طور پر اس وقت ہوتی ہے جب آپ اسٹرنگ کو غلط طریقے سے فارمیٹ کرنے کی کوشش کر رہے ہوتے ہیں۔ ریاضی میں تقریب IPython.display لائبریری یہ ایک عام غلطی ہے، لیکن ایک بار شناخت ہونے کے بعد اس کا حل سیدھا ہے۔
یہ گائیڈ آپ کو بتائے گا کہ غلطی کا کیا مطلب ہے، یہ کیوں ہوتی ہے، اور آپ اسے ٹھیک کرنے کے لیے اپنے Python کوڈ میں کیسے ترمیم کر سکتے ہیں۔ آخر تک، آپ کے پاس مبہم غلطی کے پیغام کے بغیر مکمل طور پر کام کرنے والا اندازہ لگانے والا گیم ہوگا!
حکم | استعمال کی مثال |
---|---|
random.randint() | سے یہ فنکشن بے ترتیب لائبریری ایک مخصوص رینج کے اندر ایک بے ترتیب عدد تیار کرتی ہے۔ اندازہ لگانے والی گیم میں، اس کا استعمال صارف کے اندازہ لگانے کے لیے 1 اور 100 کے درمیان بے ترتیب نمبر بنانے کے لیے کیا جاتا ہے۔ مثال: random.randint(1، 100)۔ |
IPython.display.Math() | کی طرف سے یہ حکم IPython.display ماڈیول کا استعمال ریاضیاتی تاثرات کو فارمیٹ شدہ طریقے سے ظاہر کرنے کے لیے کیا جاتا ہے۔ حل میں، یہ صحیح نمبر اور صارف کا اندازہ ظاہر کرنے کے لیے آؤٹ پٹ کو فارمیٹ کرنے میں مدد کرتا ہے۔ مثال: ریاضی(f'مبارک ہو! صحیح نمبر {a}' تھا)۔ |
unittest.mock.patch() | یہ فنکشن آپ کے کوڈ میں کسی فنکشن یا آبجیکٹ کو ٹیسٹنگ کے دوران فرضی ورژن سے تبدیل کرنے کے لیے استعمال کیا جاتا ہے۔ دستی تعامل کے بغیر صارف کے ان پٹ کی نقالی کرنے کے لیے یونٹ ٹیسٹوں میں یہ خاص طور پر مفید ہے۔ مثال: @patch('builtins.input', side_effect=[50, 75, 85, 95, 100])۔ |
unittest.TestCase | میں ایک بیس کلاس اتحاد یونٹ ٹیسٹ بنانے کے لیے استعمال ہونے والا ماڈیول۔ یہ انفرادی افعال کی جانچ کے لیے ایک فریم ورک فراہم کرتا ہے تاکہ یہ یقینی بنایا جا سکے کہ وہ توقع کے مطابق برتاؤ کرتے ہیں۔ مثال: کلاس TestGuessingGame(unittest.TestCase)۔ |
continue | یہ کنٹرول فلو کمانڈ موجودہ تکرار کو چھوڑنے اور اگلے ایک پر جانے کے لیے لوپس کے اندر استعمال کیا جاتا ہے۔ اسکرپٹ میں، یہ یقینی بناتا ہے کہ غلط ان پٹ کی وجہ سے ValueError پکڑنے کے بعد پروگرام جاری رہے۔ مثال: جاری رکھیں۔ |
try-except | خرابی سے نمٹنے کے لیے استعمال کیا جاتا ہے، یہ ڈھانچہ پروگرام کو جاری رکھنے کی اجازت دیتا ہے یہاں تک کہ جب استثناء اٹھایا جائے۔ اندازہ لگانے والی گیم میں، یہ ان صارفین کے غلط ان پٹ کو ہینڈل کرتا ہے جو عدد درج نہیں کرتے ہیں۔ مثال: کوشش کریں: ... سوائے ویلیو ایرر:۔ |
input() | یہ فنکشن صارف کے ان پٹ کو بطور سٹرنگ حاصل کرتا ہے۔ اندازہ لگانے والے کھیل میں، اس کا استعمال صارف کو اپنا اندازہ درج کرنے کے لیے کہا جاتا ہے۔ ان پٹ کو بعد میں ایک عدد میں تبدیل کر دیا جاتا ہے۔ مثال: user_guess = int(input('1 اور 100 کے درمیان نمبر لگائیں:'))۔ |
f-string | Python 3.6 میں متعارف کرایا گیا، f-strings سٹرنگ میں براہ راست تاثرات کو سرایت کر کے آسان سٹرنگ فارمیٹنگ کی اجازت دیں۔ حل میں، وہ حتمی پیغام کے لیے آؤٹ پٹ کو فارمیٹ کرنے کے لیے استعمال ہوتے ہیں۔ مثال: f'مبارک ہو! صحیح نمبر {a}' تھا۔ |
unittest.main() | یہ کمانڈ Python's میں ٹیسٹ سوٹ چلاتی ہے۔ اتحاد فریم ورک یہ پروگرام کے لیے لکھے گئے ٹیسٹوں کو خود بخود دریافت کرنے اور چلانے کے لیے استعمال ہوتا ہے۔ مثال: اگر __name__ == '__main__': unittest.main()۔ |
ازگر کے اندازہ لگانے والے گیم کوڈ کے پیچھے میکینکس کو سمجھنا
ازگر کا اندازہ لگانے والی گیم اسکرپٹ کو صارف کو 1 اور 100 کے درمیان تصادفی طور پر پیدا ہونے والی تعداد کا اندازہ لگانے کی اجازت دینے کے لیے ڈیزائن کیا گیا ہے۔ اس پروگرام کا پہلا اہم عنصر اس کا استعمال ہے۔ random.randint() فنکشن، جو مخصوص رینج (1 سے 100) کے اندر ایک بے ترتیب عدد پیدا کرتا ہے۔ یہ گیم کے پیچھے بنیادی منطق بناتا ہے، کیونکہ یہ وہ خفیہ نمبر فراہم کرتا ہے جس کا صارف کو اندازہ لگانا ہوتا ہے۔ اس کے بعد پروگرام صارف کو ان پٹ کا استعمال کرتے ہوئے اپنا اندازہ لگانے کا اشارہ کرتا ہے۔ ان پٹ () فنکشن، جو صارف کے ان پٹ کو سٹرنگ کے طور پر حاصل کرتا ہے اور بعد میں موازنہ کے مقاصد کے لیے ایک عدد میں تبدیل ہو جاتا ہے۔
کھیل کے بہاؤ کو کنٹرول کرنے میں لوپ کا ڈھانچہ اہم کردار ادا کرتا ہے۔ اے جبکہ loop کا استعمال تصادفی طور پر تیار کردہ نمبر کے خلاف صارف کے اندازوں کو مسلسل جانچنے کے لیے کیا جاتا ہے۔ جب تک صارف کا اندازہ غلط ہے، لوپ پلیئر کو یا تو "Guess High" یا "Guess Low" کا اشارہ دیتا رہتا ہے۔ لوپ کے اندر کی حالت صارف کے اندازے کا خفیہ نمبر کے ساتھ موازنہ کرتی ہے، اس بات کو یقینی بناتی ہے کہ گیم قبل از وقت ختم کیے بغیر مناسب تاثرات فراہم کرے۔ صارف کے ان پٹ کو اس طرح سنبھالنے سے، گیم انٹرایکٹو بن جاتا ہے، جو کھلاڑی کی صحیح جواب کی طرف رہنمائی کرتا ہے۔
استعمال کرتے ہوئے دوسرے اسکرپٹ میں IPython.display، ہم اس کے ساتھ ایک زیادہ نفیس آؤٹ پٹ فارمیٹ متعارف کراتے ہیں۔ ریاضی()، ایک فنکشن جو ریاضیاتی اشارے میں پیغامات کو ظاہر کرنے کے لیے استعمال ہوتا ہے۔ تاہم، متعدد متغیرات کے ساتھ پیغام کو فارمیٹ کرنے کے لیے فیصد کی علامت (%) کے ابتدائی استعمال سے ایک خرابی پیدا ہوئی: %: 'Math' اور 'tuple' کے لیے غیر تعاون یافتہ آپرینڈ قسم(s)۔ یہ خرابی اس لیے پیدا ہوتی ہے۔ ریاضی سٹرنگ انٹرپولیشن کی اس شکل کی حمایت نہیں کرتا ہے۔ اس کے بجائے، Python کی جدید f-string فارمیٹنگ کا استعمال، جو زیادہ بدیہی ہے، اس مسئلے کو حل کرتا ہے اور صارف کے صحیح اندازہ لگانے پر گیم کے اختتام پر ایک مناسب فارمیٹ شدہ پیغام دکھاتا ہے۔
مزید برآں، تیسرا اسکرپٹ ایک سیٹ کو ضم کرتا ہے۔ یونٹ ٹیسٹ ازگر کا استعمال کرتے ہوئے لکھا گیا۔ اکائی فریم ورک ان ٹیسٹوں کا مقصد گیم کی فعالیت کی توثیق کو خودکار بنانا ہے، اس بات کو یقینی بنانا کہ گیم مختلف منظرناموں میں توقع کے مطابق برتاؤ کرے۔ کا مذاق اڑانے سے ان پٹ () کا استعمال کرتے ہوئے فنکشن unittest.mock.patch، ہم دستی ان پٹ کی ضرورت کے بغیر جانچ کے دوران صارف کے ان پٹ کی نقل کرتے ہیں۔ یہ نقطہ نظر کوڈ کی مضبوطی کو بڑھاتا ہے، جس سے ڈویلپرز کو مختلف حالات میں گیم کی منطق کی تصدیق کرنے کی اجازت ملتی ہے۔ یونٹ ٹیسٹ ممکنہ کیڑے کو جلد پکڑنے میں مدد کرتے ہیں، اس بات کو یقینی بناتے ہوئے کہ پروگرام میں کوئی بھی تبدیلی موجودہ فعالیت کو توڑ نہیں دیتی ہے۔
ازگر کا اندازہ لگانے والی گیم میں غیر تعاون یافتہ آپرینڈ کی خرابی کو ٹھیک کرنا
حل 1: معیاری لائبریریوں کا استعمال کرتے ہوئے ایک سادہ ازگر کا اندازہ لگانے والا کھیل
# Importing required libraries
import random
# Function for the guessing game
def guessing_game():
# Generate a random number between 1 and 100
number_to_guess = random.randint(1, 100)
user_guess = None
# Loop until the user guesses the correct number
while user_guess != number_to_guess:
try:
# Get input from the user
user_guess = int(input('Guess a number between 1 and 100: '))
except ValueError:
print('Please enter a valid number.')
continue
# Provide hints for guessing higher or lower
if user_guess < number_to_guess:
print('Guess higher!')
elif user_guess > number_to_guess:
print('Guess lower!')
# Congratulate the user when they guess correctly
print(f'Congratulations! The correct number was {number_to_guess}.')
# Call the function
guessing_game()
IPython.display کے ساتھ غلطیوں کو ہینڈل کرنا اور Python میں سٹرنگ فارمیٹنگ کو ٹھیک کرنا
حل 2: فارمیٹ شدہ آؤٹ پٹ کے لیے IPython.display کا استعمال اور ٹیوپل ایرر کو ٹھیک کرنا
# Importing required libraries from IPython
from IPython.display import display, Math
import random
# Function for the guessing game with IPython display
def guessing_game_ipython():
number_to_guess = random.randint(1, 100)
user_guess = None
while user_guess != number_to_guess:
try:
user_guess = int(input('Guess a number between 1 and 100: '))
except ValueError:
print('Please enter a valid number.')
continue
if user_guess < number_to_guess:
print('Guess higher!')
elif user_guess > number_to_guess:
print('Guess lower!')
# Correctly formatting using the f-string instead of % formatting
display(Math(f'Congratulations! The correct number was {number_to_guess} and you typed {user_guess}'))
# Call the function
guessing_game_ipython()
پورے ماحول میں درستگی کو یقینی بنانے کے لیے یونٹ ٹیسٹ شامل کرنا
حل 3: گیم کی منطق کی توثیق کرنے کے لیے یونٹ ٹیسٹ کا نفاذ
import unittest
from unittest.mock import patch
import random
# Function for the guessing game to be tested
def guessing_game_tested():
number_to_guess = random.randint(1, 100)
user_guess = None
while user_guess != number_to_guess:
user_guess = int(input('Guess a number between 1 and 100: '))
return number_to_guess, user_guess
# Test class for the guessing game
class TestGuessingGame(unittest.TestCase):
@patch('builtins.input', side_effect=[50, 75, 85, 95, 100])
def test_guessing_game(self, mock_input):
result = guessing_game_tested()
self.assertEqual(result, (100, 100))
# Run the tests
if __name__ == '__main__':
unittest.main()
انٹرایکٹو پروگراموں میں ڈسپلے کے لیے ازگر سٹرنگ فارمیٹنگ کو بہتر بنانا
Python میں نمبروں کا اندازہ لگانے والی گیم تیار کرنے کا ایک اہم پہلو یہ ہے کہ پروگرام صارف کے ساتھ کیسے تعامل کرتا ہے۔ خاص طور پر، "Guess High" یا "Guess Low" جیسے پیغامات ڈسپلے کرتے وقت واضح اور درست فارمیٹنگ کو یقینی بنانا ضروری ہے۔ جیسے لائبریریوں کا استعمال کرتے وقت ایک عام چیلنج IPython.display آؤٹ پٹ سٹرنگز کو صحیح طریقے سے فارمیٹ کر رہا ہے۔ اگرچہ سٹرنگ انٹرپولیشن کے لیے فیصد کی علامت (%) کا استعمال روایتی ہے، لیکن یہ %: 'Math' اور 'tuple' کے لیے غیر تعاون یافتہ آپرینڈ قسم (s) جیسی خرابیوں کا باعث بن سکتا ہے۔ یہ مسئلہ اس لیے پیش آتا ہے کیونکہ کچھ لائبریریاں، جیسے ریاضی()، متبادل نقطہ نظر کی ضرورت ہے جیسے f-string فارمیٹنگ۔
جدید Python پروگرامنگ میں، f-strings سٹرنگز میں متغیرات داخل کرنے کا ایک زیادہ موثر اور پڑھنے کے قابل طریقہ پیش کرتے ہیں۔ مثال کے طور پر، "مبارک ہو! درست نمبر %g تھا" لکھنے کے بجائے آپ f-string استعمال کر سکتے ہیں جیسے f'Congratulations! The correct number was {number}'. F-strings آپ کو براہ راست اظہار کو سرایت کرنے کی اجازت دیتا ہے، کوڈ کو مزید جامع بناتا ہے اور روایتی سٹرنگ انٹرپولیشن سے وابستہ خطرات کو ختم کرتا ہے۔ یہ نہ صرف پڑھنے کی اہلیت کو بڑھاتا ہے بلکہ فارمیٹنگ کی عام غلطیوں کو بھی روکتا ہے۔
f-strings استعمال کرنے کے علاوہ، انٹرایکٹو پروگرام بناتے وقت ایک اور اہم بات صارف کی ان پٹ کی توثیق ہے۔ صارفین سے ان پٹ قبول کرتے وقت، خاص طور پر ایک ایسے کھیل میں جہاں اندازے بار بار داخل کیے جاتے ہیں، ممکنہ استثناء کو سنبھالنا، جیسے غیر عددی ان پٹ، بہت ضروری ہے۔ نافذ کرنا try-except بلاکس اس بات کو یقینی بناتا ہے کہ غلط ان پٹ کی وجہ سے پروگرام کریش نہ ہو۔ اس کے بجائے، یہ خوبصورتی سے صارف کو درست ڈیٹا داخل کرنے کا اشارہ دے سکتا ہے، اس طرح صارف کے مجموعی تجربے کو بہتر بنا سکتا ہے۔ آپٹمائزڈ سٹرنگ فارمیٹنگ اور ان پٹ توثیق کا یہ امتزاج زیادہ مضبوط اور صارف دوست ازگر ایپلی کیشنز کی طرف لے جاتا ہے۔
Python Guessing Game اور Errors کے بارے میں اکثر پوچھے گئے سوالات
- %: 'Math' اور 'tuple' کے لیے "غیر تعاون یافتہ آپرینڈ قسم(s)" کا کیا مطلب ہے؟
- یہ خرابی اس وقت ہوتی ہے جب Math() فنکشن غلط سٹرنگ فارمیٹنگ کے ساتھ استعمال ہوتا ہے۔ فیصد کی علامت (%) کو f-strings کے ساتھ تبدیل کرنے سے یہ مسئلہ حل ہو جاتا ہے۔
- Python میں فیصد (%) طریقہ سے زیادہ f-strings کیوں استعمال کریں؟
- F-strings روایتی کے مقابلے میں زیادہ پڑھنے کے قابل اور موثر فارمیٹنگ پیش کرتے ہیں۔ % طریقہ وہ پیچیدہ سٹرنگ فارمیٹنگ میں غلطیوں کے خطرے کو بھی کم کرتے ہیں۔
- میں اندازہ لگانے والی گیم میں غلط صارف ان پٹ کو کیسے ہینڈل کر سکتا ہوں؟
- آپ استعمال کر سکتے ہیں a try-except ValueError جیسی غلطیوں کو پکڑنے کے لیے بلاک کریں جب صارف نان انٹیجر ڈیٹا داخل کرتا ہے، اس بات کو یقینی بناتے ہوئے کہ گیم آسانی سے جاری رہے۔
- کا کردار کیا ہے۔ random.randint() اس کھیل میں؟
- random.randint() صارف کے لیے گیم میں اندازہ لگانے کے لیے مخصوص رینج (1 سے 100) کے اندر ایک بے ترتیب نمبر تیار کرتا ہے۔
- کیسے کرتا ہے while اندازہ لگانے والے کھیل میں لوپ مدد؟
- دی while لوپ اس بات کو یقینی بناتا ہے کہ گیم اس وقت تک چلتا رہے جب تک کہ صارف تصادفی طور پر تیار کردہ نمبر کا صحیح اندازہ نہ لگا لے۔
ازگر کا اندازہ لگانے والی گیمز میں فارمیٹنگ کی غلطیوں کو ٹھیک کرنا
سٹرنگ فارمیٹنگ کے مسئلے کو حل کرنے کے بعد ازگر میں اندازہ لگانے والی گیم آسانی سے چل سکتی ہے۔ f-strings کا استعمال کرتے ہوئے، سے متعلق خرابی ریاضی () اور tuple حل ہو گیا ہے، صارف کے ہموار تجربے کو یقینی بناتا ہے۔ فارمیٹنگ کا یہ جدید طریقہ لاگو کرنا آسان ہے اور عام خرابیوں سے بچتا ہے۔
مزید برآں، اس کے ساتھ صارف کی ان پٹ کی غلطیوں کو ہینڈل کرنا کوشش کریں سوائے بلاکس اس بات کو یقینی بناتا ہے کہ غلط ان پٹ کی وجہ سے گیم کریش نہ ہو۔ یہ ایڈجسٹمنٹ گیم کو مزید مضبوط اور صارف دوست بناتے ہیں، جو کھلاڑیوں کو مایوس کن غلطیوں کا سامنا کیے بغیر انٹرایکٹو تجربے سے لطف اندوز ہونے کے لیے ضروری تاثرات فراہم کرتے ہیں۔
Python Guessing گیم کے حوالے اور اضافی وسائل
- کے استعمال کی وضاحت کرتا ہے۔ IPython.display اور ریاضی() انٹرایکٹو پروگراموں میں فارمیٹ شدہ آؤٹ پٹ کے لیے افعال۔ مزید تفصیلات کے لیے ملاحظہ کریں۔ IPython دستاویزات .
- پر معلومات فراہم کرتا ہے۔ f-string فارمیٹنگ کلینر سٹرنگ انٹرپولیشن کے لیے ازگر میں۔ مزید پڑھنے کے لیے دیکھیں ازگر کی سرکاری دستاویزات .
- یہ ماخذ اس بات کی وضاحت کرتا ہے کہ Python کے استعمال میں غلطیوں اور مستثنیات کو کیسے ہینڈل کیا جائے۔ کوشش کریں سوائے بلاکس دیکھیں اصلی ازگر: ازگر مستثنیات .
- Python کی بنیادی باتوں کا احاطہ کرتا ہے۔ بے ترتیب اندازہ لگانے والے گیمز بنانے میں ماڈیول اور اس کا اطلاق۔ مکمل حوالہ دستیاب ہے۔ ازگر رینڈم ماڈیول .