क्या अजगर में उपयोगकर्ता इनपुट प्राप्त करने का एक छोटा तरीका है?


17

यह कोई चुनौती नहीं है। मैं सोच रहा था कि 19 बाइट्स के साथ अजगर (2 या 3) में दो अलग-अलग चर में उपयोगकर्ता इनपुट प्राप्त करना संभव है। ये सभी सबसे छोटे हैं जो मुझे मिल सकते हैं:

a,b=input(),input()
a=input();b=input() (newline replaced with semicolon for readability)
i=input;a,b=i(),i()

क्या ऐसा करने का कोई छोटा तरीका है?


2
यदि आप दो से अधिक इनपुट में ले रहे हैं तो तीसरा सबसे अच्छा होगा।
सुपरजेडी २२४

1
मैं कमांड लाइन तर्क के साथ a,b=sys.argv[1:2]या जो कुछ भी कहने जा रहा था, लेकिन फिर आपको एक import sys(सही?) की आवश्यकता है
एलेक्स ए

Python3 में a,b=input().split()एक और 19 बाइट्स समाधान होगा, हालांकि सुधार नहीं। ध्यान दें कि इसका मतलब है कि ए और बी तार हैं और इनपुट एक जगह से अलग हो जाते हैं।
मैटी

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

a,b=input()Py2 में
ओलिवर नी

जवाबों:


11

यदि उपयोगकर्ता को संकेत देना मायने नहीं रखता है, तो यह eval3 या उससे अधिक की तुलना में थोड़ा कम है :

a,b,c=map(input,[1]*3)
a,b,c=map(input,'111')

अगर प्रॉम्प्ट ठीक नहीं है तो भी यह छोटा है:

a,b,c=map(input,['']*3)

अफसोस की बात है, xnor का विचार 2 इनपुट के लिए कुछ भी नहीं बचाता है क्योंकि यह अभी भी लंबा है (19 बाइट्स)। हालाँकि यदि आपके पास पहले से उपयुक्त लंबाई (क्योंकि जादू?) के साथ कुछ स्ट्रिंग (या उपयुक्त चलने योग्य) है, तो यह छोटा हो सकता है।

केवल पायथन 2 में 3 इनपुट के लिए xnor ने एक जादुई स्ट्रिंग का एक उदाहरण पाया:

a,b,c=map(input,`.5`)

इसके लिए यह भी आवश्यक है कि संकेत महत्वपूर्ण नहीं हैं, हालांकि।

यह ट्रिक वास्तव में 1eXनोटेशन का उपयोग करके बड़ी संख्या में इनपुट के लिए बाइट्स को बचाने में मदद करता है (x + 3 इनपुट प्राप्त कर रहा है):

 a,b,c,d,e,f=map(input,`1e3`)

स्पष्टीकरण:

पायथन का mapकार्य उस फ़ंक्शन को निष्पादित करता है जो इसे चलने वाले प्रत्येक तत्व पर पारित किया जाता है, और इन कॉल के परिणामों वाले सूची (या मानचित्र ऑब्जेक्ट) को वापस करता है। पहले उदाहरण के लिए, नक्शे को विघटित किया जा सकता है:

[input(1), input(1), input(1)]

2
ऐसा करना map(input,'xxx')3-वर्जन के लिए समान-लंबाई है, 2 के लिए बेहतर है, और 4+ के लिए बदतर है।
xnor

3
यदि, किसी संयोग से, आपको 22 इनपुट लेने की आवश्यकता है, map(input,`id`)तो छोटा है :-)। इसी तरह, map(input,`.1`)19 आदानों के लिए।
xnor

3
वास्तव में, a,b,c=map(input,`.5`)3 इनपुट के लिए एक चार्ट को बचाता है, क्योंकि .5इसे प्रतिनिधित्व किया जाता है 0.5
xnor

हां यह बहुत अच्छा है। शांत चाल!
DJMcMayhem


4

ध्यान दें कि जब तक प्रश्न इनपुट प्रकार को निर्दिष्ट नहीं करता है या एक पूर्ण कार्यक्रम की आवश्यकता होती है, तब तक आप फ़ंक्शन तर्कों के रूप में इनपुट ले सकते हैं , इसकी आवश्यकता को काट सकते हैं input()जहां यह एक विकल्प नहीं है, निम्नलिखित कुछ मामलों में मदद कर सकता है।


यदि आप चर में एकल वर्ण चाहते हैं aऔर b, आप उपयोग कर सकते हैं

a,b=input()

2 वर्ण स्ट्रिंग में प्रवेश करने पर पहले वर्ण को सौंपा जाएगा aऔर दूसरे वर्ण को सौंपा जाएगा b। (स्ट्रिंग में 2 या 2 से कम अक्षर त्रुटि देंगे।)

यदि आपको प्रति चर एकल वर्ण से अधिक की आवश्यकता है तो यह दृष्टिकोण काम नहीं करेगा। यह अभी भी एक स्ट्रिंग के रूप में 2 एकल अंकों की संख्या दर्ज करने के लिए इस्तेमाल किया जा सकता है। यदि 9 से अधिक संख्याओं की आवश्यकता है, तो संभावित इनपुट वर्णों की पूरी श्रृंखला को संख्याओं के रूप में व्याख्या की जा सकती है।

ध्यान दें कि यह 2 से अधिक चरों के लिए भी काम करता है:

a,b,c,d,e,f,g,h=input()

यह काम करता है क्योंकि पाइथन में एक स्ट्रिंग वर्णों का एक अनुक्रम है, और कहीं भी इस्तेमाल किया जा सकता है एक अनुक्रम की उम्मीद है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.