Home › Hindi › input() Hindi में

Python input() Hindi में — number कैसे लें और ValueError कैसे रोकें

🌐 यह page Hindi में है · Read this in English →

input() हमेशा string देता हैValueError का पक्का fixFree browser practice

एक बात जो सब कुछ समझा देती है

input() हमेशा string लौटाता है — चाहे user ने number ही क्यों न टाइप किया हो। बस यही एक बात beginners के 90% input-related bugs की जड़ है।

umar = input("Apni umar likho: ")   # user ने टाइप किया: 20

print(umar)          # 20
print(type(umar))    # <class 'str'>   ← number नहीं, text है!
print(umar + 5)      # ❌ TypeError
TypeError: can only concatenate str (not "int") to str

Python के लिए "20" और 20 दो अलग चीज़ें हैं — एक text है, दूसरा number। जोड़ने से पहले बदलना पड़ता है।

Number में बदलना — int() और float()

umar = int(input("Apni umar likho: "))
print(umar + 5)        # ✅ 25

price = float(input("Price likho: "))
print(price * 2)       # ✅ 199.8 जैसा

# उल्टा काम — number को text बनाना
print("Umar: " + str(umar))
print(f"Umar: {umar}")     # ✅ बेहतर तरीका (f-string)

int() पूरा number चाहिए तब, float() दशमलव चाहिए तब। एक बात याद रखो: int("3.5") नहीं चलेगा — पहले float("3.5") करो फिर int(): int(float("3.5")) → 3।

ValueError — जब user कुछ और लिख दे

umar = int(input())     # user ने लिखा: bees

ValueError: invalid literal for int() with base 10: 'bees'

इस message को ऐसे पढ़ो: "जो text मिला ('bees') उसे number बनाया ही नहीं जा सकता।" यह galti आपकी नहीं, user के input की है — इसलिए code को इसे सँभालना चाहिए:

try:
    umar = int(input("Apni umar likho: "))
except ValueError:
    print("Sirf number likho, jaise 20")
    umar = 0

सही input आने तक बार-बार पूछना हो तो loop लगाओ:

while True:
    text = input("Apni umar likho: ")
    if text.strip().isdigit():
        umar = int(text)
        break
    print("Galat input — sirf number likho")

.strip() ज़रूरी है: user अक्सर आगे-पीछे space छोड़ देता है, और " 20 ".isdigit() False होता है। (वैसे int(" 20 ") spaces खुद सँभाल लेता है।)

एक line में कई numbers लेना

यह competitive programming और board दोनों में काम आता है:

# user टाइप करता है: 10 20 30

nums = input().split()
print(nums)        # ['10', '20', '30']  ← अभी भी strings हैं!

nums = [int(x) for x in input().split()]
print(nums)        # [10, 20, 30]  ✅
print(sum(nums))   # 60

# दो values एक साथ
a, b = map(int, input().split())
print(a + b)

# comma से अलग किए हों: 10,20,30
nums = [int(x) for x in input().split(",")]

map(int, ...) और list comprehension दोनों एक ही काम करते हैं। a, b = ... वाला तरीका तभी चलेगा जब user ने ठीक 2 numbers दिए हों, वरना ValueError: not enough values to unpack आएगा।

4 galtiyan और उनका fix

आखिरी tip: prompt हमेशा input() के अंदर लिखो (input("Naam: ")), अलग print() में नहीं — output साफ दिखता है और एक line बचती है।

🛠️ Practice करो (free, browser में)

पढ़ना काफी नहीं — यही bug खुद fix करके देखो। नीचे के problems browser में ही चलते हैं, कोई install नहीं, कोई login नहीं।

सारे free problems देखो →

अक्सर पूछे जाने वाले सवाल

Python में input() से number कैसे लें?

int(input()) लिखो — पहले input() text लेता है, फिर int() उसे पूरा number बना देता है। दशमलव चाहिए तो float(input()) use करो।

input() का output हमेशा string क्यों होता है?

क्योंकि keyboard से जो भी आता है वह characters का सिलसिला होता है, और Python अंदाज़ा नहीं लगाता कि आप उसे number चाहते हो या text। इसलिए खुद int() या float() से बदलना पड़ता है।

invalid literal for int() with base 10 का मतलब क्या है?

मतलब जो text int() को दिया गया वह number जैसा दिखता ही नहीं — जैसे 'bees' या खाली string। इसे try/except ValueError से सँभालो या input लेने से पहले .strip().isdigit() से जाँच लो।

एक ही line में दो numbers कैसे लें?

a, b = map(int, input().split()) लिखो। split() space पर तोड़ता है और map(int, ...) दोनों टुकड़ों को number बना देता है। comma से अलग हों तो split(",") use करो।

आगे पढ़ो