2011-02-06 12 views
274

python3.x में raw_input() और input() के बीच क्या अंतर है?python3.x में raw_input() और इनपुट() के बीच क्या अंतर है?

+1

आप एक प्रोग्राम कैसे बनाते हैं जो पाइथन 2 और पायथन 3 संगत दोनों इनपुट करता है? –

+1

ऐसा करने के लिए आप 'input' को 'raw_input' पर सेट करने का प्रयास करें और नाम त्रुटियों को अनदेखा करें। –

+1

पायथन 2 और 3 संगतता के लिए 'छः' लाइब्रेरी देखें। –

उत्तर

325

अंतर यह है कि raw_input() पायथन 3.x में मौजूद नहीं है, जबकि input() करता है। असल में, पुराने raw_input() का नाम बदलकर input() कर दिया गया है, और पुराना input() चला गया है, लेकिन आसानी से eval(input()) का उपयोग कर अनुकरण किया जा सकता है। (याद रखें कि eval(), बुराई है, इसलिए यदि आपके इनपुट यदि संभव हो तो पार्स करने के लिए सुरक्षित तरीके का उपयोग करने का प्रयास करें।)

+55

"कच्चे_इनपुट' के बीच क्या अंतर है ...?" - "अंतर यह है कि कोई 'raw_input' नहीं है।" ... काफी कठोर अंतर, मैं कहूंगा! –

+8

पायथन 2 में मुझे लगता है कि वे मानते हैं कि प्रोग्रामर वास्तव में उपयोगकर्ता इनपुट को कमांड के रूप में "निष्पादित" करना चाहते थे, क्योंकि प्रारंभ में (मुझे लगता है) उपयोगकर्ता से इनपुट का अनुरोध करने के लिए केवल यही हो सकता है। लेकिन जब उन्हें एहसास हुआ कि प्रोग्रामर "कच्चे" इनपुट भी प्राप्त करना चाहते हैं, तो उन्होंने "raw_input" नामक एक और फ़ंक्शन डिज़ाइन किया है। पायथन 3 में उन्होंने देखा कि क्या बेवकूफ था और मूल इनपुट डिफ़ॉल्ट निष्पादन को हटा दिया, केवल एक साधारण कार्य प्रदान किया। –

+1

Repl.it, Py3.5.1 चलाना raw_input() को एक कीवर्ड के रूप में है। – OldBunny2800

170

अजगर में, raw_input() एक स्ट्रिंग देता है, और input() की कोशिश करता एक अजगर अभिव्यक्ति के रूप में इनपुट को चलाने के लिए।

एक स्ट्रिंग प्राप्त करने के बाद से आप हमेशा जो चाहते थे, पाइथन 3 input() के साथ करता है। जैसा कि स्वेन कहते हैं, अगर आप कभी पुराने व्यवहार चाहते हैं, eval(input()) काम करता है।

+5

आपको यह जोड़ना चाहिए कि पायथन 3 में 'raw_input() 'नहीं है। –

+0

पाइथन अभिव्यक्ति के रूप में चल रहे इनपुट का उपयोग क्या है? –

+1

@ अक्षय विजयजैन, शायद यह संख्याओं में प्रवेश के लिए था। लेकिन यह पूरी तरह से असुरक्षित है। – MarSoft

94

अजगर 2:

  • raw_input() वास्तव में क्या उपयोगकर्ता द्वारा लिखे गए लगते हैं और इसे वापस एक स्ट्रिंग के रूप गुजरता है।

  • input() पहले raw_input() लेता है और उसके बाद eval() भी करता है।

मुख्य अंतर यह है कि input() एक वाक्य रचना सही अजगर बयान जहां raw_input() नहीं है उम्मीद है।

अजगर 3:

  • raw_input()input() को नाम दिया गया था तो अब input() सटीक स्ट्रिंग देता है।
  • पुराना input() हटा दिया गया था।

आप पुराने input() उपयोग करने के लिए, जिसका अर्थ है कि आप एक अजगर बयान के रूप में एक उपयोगकर्ता इनपुट मूल्यांकन करने की जरूरत चाहते हैं, आप eval(input()) का उपयोग करके स्वयं यह करना है।

+11

... पायथन में 2. – askewchan

+1

पायथन 3 के लिए लागू नहीं है –

4

मैं पायथन 2 उपयोगकर्ताओं के लिए सभी द्वारा प्रदत्त स्पष्टीकरण के लिए थोड़ा और विवरण जोड़ना चाहता हूं। raw_input(), जो अब तक, आप जानते हैं कि यह मूल्यांकन करता है कि उपयोगकर्ता स्ट्रिंग के रूप में कितनी डेटा दर्ज करता है। इसका मतलब है कि पायथन फिर से दर्ज डेटा को समझने की कोशिश नहीं करता है। यह सब विचार करेगा कि दर्ज डेटा स्ट्रिंग होगा, चाहे वह वास्तविक स्ट्रिंग या int या कुछ भी हो।

जबकि दूसरी ओर input() उपयोगकर्ता द्वारा दर्ज किए गए डेटा को समझने का प्रयास करता है। तो helloworld जैसे इनपुट भी त्रुटि को 'helloworld is undefined' के रूप में दिखाएगा।

अंत में, अजगर 2, के लिए एक स्ट्रिंग दर्ज करने के लिए भी आप 'helloworld' जो आम तार का उपयोग करने के अजगर में इस्तेमाल किया संरचना है जैसे कि यह दर्ज करना होगा।

20

पायथन 3, raw_input() में मौजूद नहीं है जो पहले से ही स्वेन द्वारा उल्लेख किया गया था।

पायथन 2 में, input() फ़ंक्शन आपके इनपुट का मूल्यांकन करता है।

उदाहरण:

name = input("what is your name ?") 
what is your name ?harsha 

Traceback (most recent call last): 
    File "<pyshell#0>", line 1, in <module> 
    name = input("what is your name ?") 
    File "<string>", line 1, in <module> 
NameError: name 'harsha' is not defined 

उपरोक्त उदाहरण में, पायथन 2.x हर्षा एक स्ट्रिंग एक चर के बजाय के रूप में मूल्यांकन करने के लिए कोशिश कर रहा है। कि बचने के लिए, हम "हर्ष" की तरह हमारे इनपुट को दोहरे उद्धरण चिह्नों का उपयोग कर सकते हैं:

>>> name = input("what is your name?") 
what is your name?"harsha" 
>>> print(name) 
harsha 

raw_input()

raw_input() `समारोह का मूल्यांकन नहीं करता है, यह सिर्फ आप जो कुछ भी पढ़ा जाएगा दर्ज।

उदाहरण:

name = raw_input("what is your name ?") 
what is your name ?harsha 
>>> name 
'harsha' 

उदाहरण:

name = eval(raw_input("what is your name?")) 
what is your name?harsha 

Traceback (most recent call last): 
    File "<pyshell#11>", line 1, in <module> 
    name = eval(raw_input("what is your name?")) 
    File "<string>", line 1, in <module> 
NameError: name 'harsha' is not defined 

उपरोक्त उदाहरण में, मैं सिर्फ eval समारोह के साथ उपयोगकर्ता इनपुट का मूल्यांकन करने की कोशिश कर रहा था।

संबंधित मुद्दे