2013-03-01 10 views
7

मैं एक बुनियादी मेनू बनाने की कोशिश कर रहा हूं जो यह देखने के लिए जांचता है कि चर परिभाषित एक चर परिभाषित करता है या नहीं। यदि चर परिभाषित किया गया है परिभाषित चर के डेटा प्राप्त करें।उपयोगकर्ता इनपुट से दर्ज चर के मूल्य कैसे प्राप्त करें?

उदाहरण।

Item1 = "bill" 
Item2 = "cows" 
item3 = "abcdef" 
Choose_Item = input("Select your item: ") 
  • मैं Item1
  • Choose_Item में टाइप के बराबर होना चाहिए "bill"
+2

और आपने क्या प्रयास किया है? यह एक प्रश्न से कोड अनुरोध की तरह लगता है। – Hubro

+0

'' चुनें_इटम = ग्लोबल्स() [इनपुट ("अपना आइटम चुनें:")] ' – eyquem

उत्तर

18

यह वही है जिसे आप खोज रहे की तरह लगता है:

Choose_Item = eval(input("Select your item: ")) 

यह शायद सबसे अच्छा नहीं है रणनीति, हालांकि, क्योंकि एक टाइपो या दुर्भावनापूर्ण उपयोगकर्ता आसानी से आपके कोड को क्रैश कर सकता है ई, अपने सिस्टम को अधिभारित करें, या किसी अन्य प्रकार की गंदे सामान को पसंद करें। इस विशेष मामले के लिए, एक बेहतर दृष्टिकोण

items = {'item1': 'bill', 'item2': 'cows', 'item3': 'abcdef'} 
choice = input("Select your item: ") 
if choice in items: 
    the_choice = items[choice] 
else: 
    print("Uh oh, I don't know about that item") 
+0

बह आपने मुझे सचमुच एक ही सलाह के साथ पंच में मार दिया। तेज टाइपर के लिए +1;) –

+1

मैं सिर्फ आपके उत्तर पर एक समान टिप्पणी टाइप कर रहा था, इसलिए आपने कम से कम उस दौड़ को जीता। :) – Dougal

4

इस बारे में आप दो तरीकों से जा सकते हैं। बुरा रास्ता:

print eval(Choose_Item) 

बेहतर तरीका एक शब्दकोश का उपयोग करने के

items = {'1':'bill','2':'cows'} 
Choose_Item = input("Select your Item: ") 
try: 
    print(items[Choose_Item]) 
except KeyError: 
    print ('Item %s not found' % Choose_Item) 
+3

FWIW: प्रश्न python-3 टैग किया गया है, इसलिए आप उस प्रिंट स्टेटमेंट में माता-पिता चाहते हैं, और आप शायद स्ट्रिंग बनाने और इसके साथ कुछ भी नहीं करने के बजाय अपवाद मामले में कुछ प्रिंट करना चाहते हैं। :) – Dougal

+0

लेकिन यादृच्छिक तार अच्छे प्रोग्रामिंग शिष्टाचार नहीं हैं? अच्छा पकड़ महोदय, एक और कारण है कि आप इस जवाब के लायक क्यों हैं –

4

यदि आप एक चर जिसका नाम क्या उपयोगकर्ता का उत्पादन किया है का चयन करना चाहते आप locals()[Choose_Item] का उपयोग करना होगा किया जाएगा।

यह करने के लिए एक और अधिक परंपरागत तरीके से, हालांकि, एक शब्दकोश का उपयोग करना है:

items = { 
    'Item1': 'bill', 
    'Item2': 'cows', 
    'Item3': 'abcdef', 
} 

... और फिर मूल्य आप चाहते हैं items[Choose_Item] है।

+0

+1 - स्थानीय दृष्टिकोण eval से बेहतर है, जिसमें कम से कम एक दुर्भावनापूर्ण उपयोगकर्ता जाने और कोड का मूल्यांकन करने की अनुमति नहीं देता है। :) बेशक शब्दकोश दृष्टिकोण बेहतर है। – Dougal

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