पायथन के पावर ऑपरेटर के दाईं ओर जुड़ने का औचित्य क्या है?


9

मैं गणितीय अभिव्यक्ति तार को पार्स करने के लिए कोड लिख रहा हूं, और मैंने देखा कि पायथन में जंजीर वाले बिजली ऑपरेटरों का मूल्यांकन किस क्रम से किया जाता है, यह एक्सेल के क्रम से भिन्न होता है।

से http://docs.python.org/reference/expressions.html :

"इस प्रकार, शक्ति और यूनिरी संचालकों के एक अपरिवर्तनीय अनुक्रम में, ऑपरेटरों को दाएं से बाएं का मूल्यांकन किया जाता है (यह ऑपरेंड के लिए मूल्यांकन आदेश को बाधित नहीं करता है): -1 में -1 * 2 परिणाम।" *

इसका मतलब यह है कि, पायथन में: के 2**2**3रूप में मूल्यांकन किया जाता है2**(2**3) = 2**8 = 256

Excel में, यह दूसरे तरीके से काम करता है: के 2^2^3रूप में मूल्यांकन किया जाता है(2^2)^3 = 4^3 = 64

मुझे अब अपने खुद के पार्सर के लिए एक कार्यान्वयन का चयन करना होगा। एक्सेल आदेश को लागू करना आसान है, क्योंकि यह गुणन के मूल्यांकन क्रम को दर्शाता है।

मैंने कार्यालय के आस-पास के कुछ लोगों से पूछा कि मूल्यांकन के लिए उनकी आंत क्या है 2^2^3और मिश्रित प्रतिक्रियाएं मिलीं।

क्या किसी को पायथन कार्यान्वयन के पक्ष में किसी अच्छे कारण या सहमति का पता है? और अगर आपके पास कोई उत्तर नहीं है, तो कृपया परिणाम के साथ टिप्पणी करें जो आपको आंत से लगता है - 64या 256?


इसे लागू करना उतना कठिन नहीं है। वैसे भी, आपके पार्सर को असाइनमेंट जैसी चीजों के लिए किसी न किसी तरह से सही सहयोग का समर्थन करना होगा।
मार्को-फिसेट

हाँ, यह नहीं है, मैं वास्तव में इसे लागू किया गया। लेकिन मैं एक्सेल सम्मेलन में वापस लौट आया, क्योंकि मेरी लाइब्रेरी का एक प्राथमिक उपयोग एक्सेल के समीकरणों को निर्यात करना है, इसलिए यह समीकरणों के काम करने के तरीके से चिपके रहने के लिए अधिक समझ में आता है।
पीटर मुलर

जवाबों:


10

गणित में स्टैक्ड एक्सपोर्टरों के ऊपर से नीचे तक लागू होने का कारण यह है कि दूसरे तरीके से आप सिर्फ एक्सपीरियंस को गुणा कर सकते हैं:

(((2^3)^4)^5) = 2^(3 * 4 * 5)

यह आपके उत्तर को स्पष्ट नहीं करता है .... लेकिन यह नहीं है कि कैसे एक्सपोर्टर उस संदर्भ में काम करते हैं ? ((2 ^ 3) ^ 4) = 8 ^ 4 = (2 ^ 3 ) * (2 ^ 3) * (2 ^ 3) * (2 ^ 3) = 2 ^ (3 + 3 + 3 + 3) = 2 ^ 12
प्यूरफेरेट

3
हाँ यही है। मेरी बात यह है कि आप जो दो आदेश चुन सकते हैं, उनमें से एक ऐसा कुछ पैदावार है जिसे आप एक्सपोजर को स्टैक किए बिना लिख ​​सकते हैं। तो दिलचस्प जुड़ाव अन्य एक है।
एंड्रिया

14

विकिपीडिया (और मेरा गणित शिक्षक) मुझे बताता है: ऊपर से नीचे की ओर स्टैक्ड एक्सपोर्टर लगाए जाते हैं।

यह उस तरह से परिलक्षित होता है जिस तरह से पायथन इसका मूल्यांकन करता है। Microsoft गलत है (एक बार और)

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


4
ऑपरेटर की डी भाषा के कार्यान्वयन के बारे में इस दिलचस्प पोस्ट को भी देखें, जो सही समरूपता का समर्थन करता है।
पेड्रो रोमानो

मुझे याद है कि विज़ुअल बेसिक उसी तरह से इसका मूल्यांकन कर रहा है, लेकिन मुझे यकीन नहीं है कि यह इस पद्धति में विश्वसनीयता जोड़ता है। ;)
जिओन

Microsoft केवल "गलत" है अगर यह कुछ विनिर्देशन का पालन करने में विफल रहता है जो इसे पालन करने का दावा करता है। विभिन्न भाषाएं गणितीय कार्यों का अलग-अलग मूल्यांकन करती हैं। एपीएल, अगर मैं सही ढंग से याद करता हूं, तो सभी ऑपरेशनों को सही-सहयोगी बनाया। एक अलग विनिर्देश के साथ असंगति कष्टप्रद है, लेकिन जरूरी नहीं कि "गलत"।
कीथ थॉम्पसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.