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
inputलिखना,input()नहीं: brackets के बिना वह function खुद है, उसका result नहीं।print(input)कुछ अजीब छापेगा।int(input())की जगहinput(int()): brackets का क्रम उल्टा — हमेशा पहले input लो, फिर बदलो।- Python 2 वाला
raw_input(): Python 3 में हटा दिया गया है,NameErrorआएगा। सिर्फinput()use करो। eval(input())का इस्तेमाल: यह user का लिखा कोई भी code चला देता है — security का बड़ा खतरा। कभी मत करो,int()/float()ही सही हैं।
आखिरी tip: prompt हमेशा input() के अंदर लिखो (input("Naam: ")), अलग print() में नहीं — output साफ दिखता है और एक line बचती है।
🛠️ Practice करो (free, browser में)
पढ़ना काफी नहीं — यही bug खुद fix करके देखो। नीचे के problems browser में ही चलते हैं, कोई install नहीं, कोई login नहीं।
- ऐसा text बदलना जो number नहीं है — classic ValueError
- Invalid text को number बनाना — int() का असली fix
- print में text और number मिलाना — वही TypeError
अक्सर पूछे जाने वाले सवाल
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 करो।