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_inputPython 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 डेटा प्रकार का मूल्यांकन और रूपांतरण नहीं करता है, इसलिए आपको स्पष्ट रूप से ints के साथ बदलना होगा 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।