TLDR
- पायथन 3
input
फ़ंक्शन के साथ प्राप्त डेटा का मूल्यांकन नहीं करता है , लेकिन पायथन 2 का input
कार्य करता है (निहितार्थ को समझने के लिए अगला भाग पढ़ें)।
- अजगर 3 की अजगर 2 के बराबर
input
है raw_input
समारोह।
अजगर 2.x
उपयोगकर्ता इनपुट प्राप्त करने के लिए दो कार्य थे, कहा जाता है input
और raw_input
। उनके बीच का अंतर, raw_input
डेटा का मूल्यांकन नहीं करता है और जैसा है वैसा ही लौटाता है। लेकिन, input
आपने जो भी दर्ज किया है उसका मूल्यांकन करेंगे और मूल्यांकन का परिणाम वापस आ जाएगा। उदाहरण के लिए,
>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)
डेटा 5 + 17
का मूल्यांकन किया जाता है और परिणाम होता है 22
। जब यह अभिव्यक्ति का मूल्यांकन करता है 5 + 17
, तो यह पता लगाता है कि आप दो नंबर जोड़ रहे हैं और इसलिए परिणाम भी उसी int
प्रकार का होगा। तो, प्रकार रूपांतरण मुफ्त में किया जाता है और 22
परिणाम के रूप में लौटाया जाता है input
और data
चर में संग्रहीत किया जाता है । आप सोच सकते हैं input
के रूप में raw_input
एक साथ बना eval
कॉल।
>>> data = eval(raw_input("Enter a number: "))
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)
नोट: जब आप input
पाइथन 2.x का उपयोग कर रहे हैं तो आपको सावधान रहना चाहिए । मैंने बताया कि इस उत्तर में इसका उपयोग करते समय किसी को सावधान क्यों रहना चाहिए ।
लेकिन, raw_input
इनपुट और रिटर्न का मूल्यांकन नहीं करता है क्योंकि यह एक स्ट्रिंग के रूप में है।
>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = raw_input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <type 'str'>)
अजगर 3.x
Python 3.x's input
और Python 2.x raw_input
समान हैं और raw_input
Python 3.x में उपलब्ध नहीं है।
>>> import sys
>>> sys.version
'3.4.0 (default, Apr 11 2014, 13:05:11) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <class 'str'>)
उपाय
अपने प्रश्न का उत्तर देने के लिए, चूंकि Python 3.x डेटा प्रकार का मूल्यांकन और रूपांतरण नहीं करता है, इसलिए आपको स्पष्ट रूप से int
s के साथ बदलना होगा int
, जैसे कि
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
आप किसी भी आधार के नंबरों को स्वीकार कर सकते हैं और उन्हें int
फंक्शन के साथ सीधे बेस -10 में बदल सकते हैं
>>> data = int(input("Enter a number: "), 8)
Enter a number: 777
>>> data
511
>>> data = int(input("Enter a number: "), 16)
Enter a number: FFFF
>>> data
65535
>>> data = int(input("Enter a number: "), 2)
Enter a number: 10101010101
>>> data
1365
दूसरा पैरामीटर बताता है कि दर्ज किए गए संख्याओं का आधार क्या है और फिर आंतरिक रूप से इसे समझता है और इसे रूपांतरित करता है। यदि दर्ज किया गया डेटा गलत है तो वह उसे फेंक देगा ValueError
।
>>> data = int(input("Enter a number: "), 2)
Enter a number: 1234
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '1234'
उन मानों के लिए जिनमें एक भिन्नात्मक घटक हो सकता है, प्रकार इसके float
बजाय होगा int
:
x = float(input("Enter a number:"))
इसके अलावा, आपके प्रोग्राम को थोड़ा बदला जा सकता है, जैसे
while True:
...
...
if input("Play again? ") == "no":
break
आप play
चर का उपयोग करके छुटकारा पा सकते हैं break
और while True
।