2011-02-10 8 views
101

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

testVar = input("Ask user for something.") 

क्या टेस्टवायर स्ट्रिंग होने का कोई तरीका है जिसके बिना उपयोगकर्ता उद्धरण में अपनी प्रतिक्रिया टाइप करता है? यानी "हैलो" बनाम हैलो

हैं हैलो में उपयोगकर्ता प्रकार, मैं निम्नलिखित त्रुटि मिलती है:

NameError: नाम 'नमस्ते' से परिभाषित नहीं है

उत्तर

188

उपयोग raw_input() बजाय input():

testVar = raw_input("Ask user for something.") 

input() वास्तव में इनपुट को पायथन कोड के रूप में मूल्यांकन करता है। मैं इसका कभी भी उपयोग नहीं करने का सुझाव देता हूं। raw_input() उपयोगकर्ता द्वारा दर्ज वर्बैटिम स्ट्रिंग देता है।

+77

के लिए: यदि आप eval डाली NameError के लिए एक स्ट्रिंग दर्ज #eval इनपुट : eval() इनपुट ("एक नाव संख्या लिखें") पायथन ** 3 **, 'इनपुट' अब इस तरह से काम करता है, और raw_input चला गया है। –

+2

क्या आप उपयोगकर्ता को अपने कोड में पायथन कोड डालने की अनुमति देना चाहते हैं? – JFA

+0

@JFA: मुझे नहीं लगता कि 'इनपुट()' एक उपयोगी कार्य है, और मैं इसका उपयोग करने की अनुशंसा नहीं करता हूं। –

8

फ़ंक्शन input उस डेटा का भी मूल्यांकन करेगा जो इसे केवल पाइथन कोड के रूप में पढ़ता है, जो वास्तव में आप नहीं चाहते हैं।

सामान्य दृष्टिकोण उपयोगकर्ता इनपुट (sys.stdin से) किसी अन्य फ़ाइल की तरह व्यवहार करना होगा।

import sys 
sys.stdin.readline() 

प्रयास करें तो आप इसे कम रखना चाहते हैं, तो आप raw_input जो input रूप में ही है, लेकिन मूल्यांकन को छोड़ देता है का उपयोग कर सकते हैं।

+1

भी, यदि आप एक इंटरैक्टिव प्रोग्राम लिख रहे हैं, तो 'रीडलाइन' आयात करने पर विचार करें - इससे बैश के समान सुविधाएं मिलेंगी (इतिहास के बाहर के इतिहास, ऑटो-पूर्णता को कुछ लेगवर्क की आवश्यकता होगी) –

+0

ठीक है! मैंने उम्र के लिए एक ही समारोह का उपयोग किया है और यह कभी भी अच्छा काम करता है। –

2
testVar = raw_input("Ask user for something.") 
-4

यह मुद्दा पायथन संस्करण 3.4.2 में हल किया गया प्रतीत होता है।

testVar = input("Ask user for something.") 

ठीक काम करेगा।

+3

पायथन 3.x 'इनपुट' पायथन 2.x' raw_input' के बराबर है (https://docs.python.org/3.0/whatsnew/3.0.html#builtins देखें); यह 2.x के लिए विशिष्ट मुद्दा है। – jonrsharpe

4

आप अजगर 2.x में के बजाय इनपुट raw_input का उपयोग करना चाहते हैं, तो इस चाल आ जाएगा काम

if hasattr(__builtins__, 'raw_input'): 
     input=raw_input 

, जो बाद

testVar = input("Ask user for something.") 

ठीक काम करेंगे।

0

सुधारों के साथ मेरे कार्य करने कोड:

import random 
import math 
print "Welcome to Sam's Math Test" 
num1= random.randint(1, 10) 
num2= random.randint(1, 10) 
num3= random.randint(1, 10) 
list=[num1, num2, num3] 
maxNum= max(list) 
minNum= min(list) 
sqrtOne= math.sqrt(num1) 

correct= False 
while(correct == False): 
    guess1= input("Which number is the highest? "+ str(list) + ": ") 
    if maxNum == guess1: 
     print("Correct!") 
     correct = True 
    else: 
     print("Incorrect, try again") 

correct= False 
while(correct == False): 
guess2= input("Which number is the lowest? " + str(list) +": ") 
if minNum == guess2: 
    print("Correct!") 
    correct = True 
else: 
    print("Incorrect, try again") 

correct= False 
while(correct == False): 
    guess3= raw_input("Is the square root of " + str(num1) + " greater than or equal to 2? (y/n): ") 
    if sqrtOne >= 2.0 and str(guess3) == "y": 
     print("Correct!") 
     correct = True 
    elif sqrtOne < 2.0 and str(guess3) == "n": 
     print("Correct!") 
     correct = True 
    else: 
     print("Incorrect, try again") 

print("Thanks for playing!") 
0

यह मेरा चारों ओर काम के मामले में सुरक्षित विफल अगर मैं भविष्य में अजगर 3 पर जाने के लिए की आवश्यकता होगी है।

def _input(msg): 
    return raw_input(msg) 
2

हम अजगर 3 में अजगर 2 और इनपुट() फ़ंक्शन में raw_inpu() फ़ंक्शन का उपयोग कर सकते डिफ़ॉल्ट रूप से इनपुट समारोह स्ट्रिंग प्रारूप

अन्य डेटा के लिए

टाइप आप उपयोगकर्ता कास्ट करने के लिए है के रूप में इनपुट लेता है इनपुट

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

एक्स = raw_input ("एक नंबर दर्ज करें:") #String इनपुट

एक्स = पूर्णांक (raw_input ("एक नंबर दर्ज करें:")) #integer इनपुट

एक्स इनपुट #float

एक्स = eval (raw_input ("एक नाव नंबर दर्ज करें:")): = नाव() raw_input ("एक नाव संख्या लिखें") #eval इनपुट

अजगर 3 में हम का उपयोग इनपुट () फ़ंक्शन जो उपयोगकर्ता इनपुट मान

012 लौटाता है

एक्स = इनपुट ("एक नंबर दर्ज करें:") #String इनपुट

यदि आप एक स्ट्रिंग, पूर्णांक, नाव में प्रवेश, eval यह स्ट्रिंग इनपुट के रूप में

एक्स = पूर्णांक (इनपुट ले जाएगा ("दर्ज एक नंबर: ")) #integer इनपुट अगर आप पूर्णांक डाली ValueError के लिए एक स्ट्रिंग दर्ज:

एक्स = नाव (इनपुट (: आधार 10 के साथ पूर्णांक() के लिए अमान्य शाब्दिक" एक नाव नंबर दर्ज करें: ")) #float इनपुट यदि आप फ्लोट कास्ट के लिए स्ट्रिंग दर्ज करते हैं ValueError: स्ट्रिंग को फ्लोट में परिवर्तित नहीं कर सका

x = नाम '' उन त्रुटि भी लागू परिभाषित नहीं है हालांकि किसी को भी यह पढ़ प्रयोग करने के लिए अजगर 2

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