अध्याय 07

अपने प्रोग्राम का उपयोग करने वाले व्यक्ति से इनपुट लेना

input() से उपयोगकर्ता द्वारा टाइप की गई बातें पढ़ना, यह हमेशा str क्यों होती है, और int() तथा float() से बदलते समय कौन सी त्रुटियाँ आती हैं।

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

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

अब तक के सभी प्रोग्रामों में संख्याएँ और डेटा कोड के अंदर ही लिखे होते थे। अलग-अलग मानों के साथ चलाने के लिए फ़ाइल को खोलकर संपादित करना पड़ता था।

वास्तविक सॉफ़्टवेयर ऐसे काम नहीं करता। एक प्रोग्राम पूछता है, और उपयोगकर्ता उत्तर देता है।

पायथन में पूछने का काम input() का है। इसे सीखना आसान है, लेकिन इसका एक महत्वपूर्ण नियम है जो हर शुरुआती प्रोग्रामर को फंसाता है: input() हमेशा स्ट्रिंग (टेक्स्ट) ही लौटाता है — भले ही उपयोगकर्ता ने संख्या ही क्यों न टाइप की हो। इस एक नियम को न जानना आपके पहले गणना वाले प्रोग्राम को क्रैश करने के लिए काफी है।

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

  • input() द्वारा स्पष्ट प्रश्न दिखाकर उपयोगकर्ता से इनपुट लेना
  • यह समझना कि इनपुट हमेशा str क्यों होता है
  • int() और float() से इनपुट को संख्या में बदलना
  • TypeError और ValueError के बीच का अंतर समझना
  • इनपुट को साफ़ करना (strip) ताकि अतिरिक्त स्पेस प्रोग्राम को न बिगाड़े

पूर्वापेक्षाएँ: टेक्स्ट के साथ काम — इंडेक्सिंग, स्लाइसिंग और f-strings.


input() कैसे काम करता है

python
name = input("What is your name? ")
print(f"Hello, {name}!")

इसे चलाएँ:

text
What is your name? Rafi
Hello, Rafi!

यहाँ तीन बातें हुईं: input() ने कोष्ठक के अंदर का प्रश्न दिखाया; फिर वह रुक गया और उपयोगकर्ता द्वारा टाइप करके Enter दबाने की प्रतीक्षा की; फिर उसने टाइप किया गया टेक्स्ट वापस कर दिया, जिसे हमने name में सहेज लिया।

ये प्रोग्राम टर्मिनल में चलने चाहिए। input() उपयोगकर्ता के टाइप करने की प्रतीक्षा करता है, इसलिए यह ऑनलाइन सैंडबॉक्स में ठीक से काम नहीं करता। अपने टर्मिनल में python ask.py चलाएँ।

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

bill.py:

python
# Ask for one order and print a small bill
print("--- Order entry ---")

customer = input("Customer name : ").strip().title()
item = input("Item          : ").strip()
quantity = int(input("Quantity      : "))
unit_price = float(input("Unit price    : "))

subtotal = quantity * unit_price
tax = subtotal * 0.05
total = subtotal + tax

print()
print("--- Bill ---")
print(f"Customer : {customer}")
print(f"Item     : {item} x {quantity}")
print(f"Subtotal : {subtotal:.2f}")
print(f"Tax (5%) : {tax:.2f}")
print(f"Total    : {total:.2f}")
text
--- Order entry ---
Customer name :   rafi ahmed
Item          : notebook
Quantity      : 4
Unit price    : 85.50

--- Bill ---
Customer : Rafi Ahmed
Item     : notebook x 4
Subtotal : 342.00
Tax (5%) : 17.10
Total    : 359.10

चार इनपुट, चार अलग उपचार: नाम को साफ़ और कैपिटलाइज़ किया गया, आइटम को केवल साफ़ किया गया, मात्रा को पूर्णांक में बदला गया, और कीमत को दशमलव संख्या में बदला गया।


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

TypeError: can only concatenate str (not "int") to str रूपांतरण छूट गया है। int(input(...)) या float(input(...)) लिखें।

गुणा करने के बजाय टेक्स्ट दोहरा रहा है "3" * 2 का परिणाम "33" होता है। मान को int() में नहीं बदला गया था।

ValueError: invalid literal for int() with base 10 उपयोगकर्ता ने जो टाइप किया वह पूर्णांक नहीं है — कोई शब्द या दशमलव संख्या। यदि दशमलव संभव है, तो float() का उपयोग करें।