Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में स्ट्रिंग के रूप में एस-अभिव्यक्ति का मूल्यांकन करने का कार्यक्रम

मान लीजिए कि हमारे पास एस-एक्सप्रेशन के रूप में एक स्ट्रिंग है। हमें उस एस-एक्सप्रेशन का मूल्यांकन करना होगा और परिणाम को पूर्णांक के रूप में वापस करना होगा। जैसा कि हम जानते हैं कि s-अभिव्यक्ति एक व्यंजक है जो या तो एक संख्या है, या (+ (- 3 2) (* 3 3)) जैसे कोष्ठकों में लिपटा हुआ एक पुनरावर्ती व्यंजक है, जो (3 - 2) + (3 *) को इंगित करता है। 3) =10. यहां मान्य ऑपरेटर +, -, *, और / हैं।

इसलिए, यदि इनपुट s ="(- (+ 3 2) 2)" जैसा है, तो आउटपुट 3 होगा, जैसे ((3 + 2) - 2) =3.

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • स्टैक :=एक नया स्टैक

  • s के उद्घाटन और समापन कोष्ठक को हटा दें

  • a :=रिक्त स्थान का उपयोग करके विभाजित करें और विभाजनों की सूची बनाएं

  • प्रत्येक i के लिए एक उल्टे क्रम में, करें

    • यदि i> 1 का आकार है, तो

      • अगर मैं [0] "-" के समान है, तो

        • मुझे स्टैक में पूर्णांक के रूप में पुश करें

        • अगले पुनरावृत्ति के लिए जाएं

      • अन्यथा,

        • मुझे स्टैक में पूर्णांक के रूप में पुश करें

    • अन्यथा जब मैं एक अंक हूं, तब

      • मुझे स्टैक में पूर्णांक के रूप में पुश करें

    • अन्यथा,

      • यदि ढेर का आकार>=2, तो

        • num1 :=स्टैक से पॉप

        • num2 :=स्टैक से पॉप

        • अगर मैं "+" जैसा ही हूं, तो

          • num1 + num2 निष्पादित करें और स्टैक में पुश करें

        • अन्यथा जब मैं "-" जैसा ही होता हूं, तब

          • num1 - num2 निष्पादित करें और स्टैक में पुश करें

        • अन्यथा जब मैं "*" जैसा ही होता हूं, तब

          • num1 * num2 निष्पादित करें और स्टैक में पुश करें

        • अन्यथा,

          • num1 / num2 परफॉर्म करें और स्टैक में पुश करें

  • स्टैक से शीर्ष तत्व लौटाएं, और शीर्ष तत्व को हटा दें

उदाहरण

आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -

class Solution:
   def solve(self, s):
      stack = list()
      s = s.replace("(", "")
      s = s.replace(")", "")
      a = s.split()
      for i in a[::-1]:
         if len(i) > 1:
            if i[0] == "-":
               stack.append(int(i))
               continue
            else:
               stack.append(int(i))
         elif i.isdigit():
            stack.append(int(i))
         else:
            if len(stack) >= 2:
               num1 = stack.pop()
               num2 = stack.pop()
               if i == "+":
                  stack.append(int(num1 + num2))
               elif i == "-":
                  stack.append(int(num1 - num2))
               elif i == "*":
                  stack.append(int(num1 * num2))
               else:
                  stack.append(int(num1 / num2))
      return stack.pop()
ob = Solution()
s = "(- (+ 3 2) 2)"
print(ob.solve(s))

इनपुट

s = "(- (+ 3 2) 2)"

आउटपुट

3

  1. हेक्स स्ट्रिंग को दशमलव में बदलने के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक हेक्साडेसिमल स्ट्रिंग दी गई है, हमें इसे इसके दशमलव समकक्ष में बदलने की जरूरत है। समस्या को हल करने के लिए हमारे पास दो दृष्टिकोण हैं- क्रूर-बल दृष्टिकोण अंतर्निहित मॉड्यूल का उपयोग करना ब्रूट-फोर्स मेथड

  1. एक स्ट्रिंग में यूआरएल की जांच करने के लिए पायथन प्रोग्राम

    इस मामले में हम पाइथन में री मॉड्यूल का उपयोग करते हैं, यहां हम एक स्ट्रिंग स्वीकार करते हैं और जांचते हैं कि स्ट्रिंग में चींटी यूआरएल है या नहीं। यदि URL स्ट्रिंग में मौजूद है तो प्रदर्शित करें। हम इस समस्या को हल करने के लिए findall () पद्धति का उपयोग करते हैं। एल्गोरिदम Step 1: given string as i

  1. एक स्ट्रिंग में दर्पण वर्ण खोजने के लिए पायथन प्रोग्राम

    उपयोगकर्ता इनपुट स्ट्रिंग और उस स्थिति से स्थिति को देखते हुए हमें वर्णों को वर्णानुक्रम में स्ट्रिंग की लंबाई तक दर्पण करने की आवश्यकता है। इस ऑपरेशन में, हम a को z, b से y, c से x, d से w में बदलते हैं और इसी तरह से पहला कैरेक्टर आखिरी हो जाता है और इसी तरह चालू। Inpu t: p = 3 Input string = p