अध्याय 05

अंकगणित — भाग, शेषफल और दशमलव का जाल

सात अंकगणितीय ऑपरेटर, कौन सा पहले चलता है, फ्लोर डिवीजन और शेषफल कहाँ उपयोगी हैं, और दशमलव संख्याएं कभी-कभी अजीब परिणाम क्यों देती हैं।

30 मिनटPython 3.12
  1. 1समस्या
  2. 2समझें
  3. 3उदाहरण
  4. 4अनुमान
  5. 5स्वयं करें
  6. 6चुनौती

वह समस्या जिसे हम हल कर रहे हैं

17 किताबें हैं और एक बॉक्स में 5 किताबें आती हैं। कुल कितने भरे हुए बॉक्स होंगे, और कितनी किताबें बचेंगी?

इसका उत्तर 17 / 5 नहीं है। वह 3.4 देता है, और 3.4 बॉक्स जैसी कोई चीज़ नहीं होती। आपको दो अलग-अलग उत्तरों की आवश्यकता है: कितने पूरे बॉक्स भरे और कितनी किताबें शेष बचीं। पायथन में दोनों के लिए अलग-अलग ऑपरेटर हैं: // (फ्लोर डिवीजन) और % (मॉड्यूलो / शेषफल)।

इसके अतिरिक्त एक और महत्वपूर्ण बात है: पायथन में 0.1 + 0.2 का परिणाम 0.3 नहीं आता। ऐसा क्यों होता है और इससे कैसे निपटें, यह भी हम इस मिशन में सीखेंगे।

इस मिशन के अंत तक आप सीखेंगे

  • सात गणितीय ऑपरेटरों का उपयोग करना
  • यह बताना कि कौन सी गणना पहले चलती है (ऑपरेटर वरीयता)
  • यह पहचानना कि // और % का उपयोग कब करना चाहिए
  • यह समझना कि / हमेशा दशमलव संख्या (float) क्यों देता है
  • फ़्लोटिंग-पॉइंट संख्याओं की सटीकता सीमाओं को ध्यान में रखकर गणना करना

पूर्वापेक्षाएँ: वेरिएबल और प्रकार.


सात अंकगणितीय ऑपरेटर

python
print(10 + 3)
print(10 - 3)
print(10 * 3)
print(10 / 3)
print(10 // 3)
print(10 % 3)
print(10 ** 3)
text
13
7
30
3.3333333333333335
3
1
1000

विशेष ऑपरेटर:

  • // — फ्लोर डिवीजन (Floor Division): भाग देता है और केवल पूर्णांक भाग रखता है
  • % — मॉड्यूलो (Modulo): भाग देने के बाद बचा हुआ शेषफल
  • ** — घात (Exponentiation): 10 ** 3 का अर्थ है 10 की घात 3 (1000)
/ हमेशा float देता है। यहाँ तक कि 10 / 5 का परिणाम भी 2.0 होता है, 2 नहीं। यदि आपको पूर्ण संख्या चाहिए, तो // का उपयोग करें।

बॉक्स समस्या का समाधान

python
books = 17
per_box = 5

full_boxes = books // per_box
left_over = books % per_box

print("Full boxes:", full_boxes)
print("Left over :", left_over)
text
Full boxes: 3
Left over : 2

3 पूरे बॉक्स भरते हैं और 2 किताबें शेष रह जाती हैं। // और % हमेशा एक जोड़ी के रूप में काम करते हैं।

एक संपूर्ण उदाहरण

packing.py:

python
# Work out packing and shipping for one order
total_items = 47
items_per_box = 6
box_cost = 35.5

full_boxes = total_items // items_per_box
loose_items = total_items % items_per_box

# A partly filled box still costs a full box
boxes_needed = full_boxes
if loose_items > 0:
    boxes_needed = full_boxes + 1

shipping = boxes_needed * box_cost

print("Items        :", total_items)
print("Full boxes   :", full_boxes)
print("Loose items  :", loose_items)
print("Boxes needed :", boxes_needed)
print("Shipping     :", round(shipping, 2))
text
Items        : 47
Full boxes   : 7
Loose items  : 5
Boxes needed : 8
Shipping     : 284.0

सामान्य गलतियाँ और समाधान

ZeroDivisionError: division by zero किसी संख्या को शून्य से भाग देने का प्रयास किया गया। गणित में भी यह अपरिभाषित है, इसलिए पायथन प्रोग्राम रोक देता है।

10 / 5 ने 2.0 दिया और मुझे 2 चाहिए इसके स्थान पर // का प्रयोग करें: 10 // 5।

दशमलव के बाद बहुत सारे अंक आना यह त्रुटि नहीं बल्कि कंप्यूटर में दशमलव संख्याओं का आंतरिक व्यवहार है। प्रदर्शित करते समय इसे round() से छोटा करें।