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

पायथन में एक्सेल स्प्रेडशीट ऑपरेशन करने का प्रोग्राम


मान लीजिए हमारे पास एक 2D मैट्रिक्स है जो एक एक्सेल स्प्रेडशीट को दर्शाता है। हमें सभी सेल और फ़ॉर्मूला की गणना के साथ वही मैट्रिक्स ढूंढना है। एक एक्सेल स्प्रेडशीट नीचे जैसी दिखती है

B170
35=A1+A2

स्तंभों के नाम (A, B, C...) हैं और पंक्तियाँ (1, 2, 3....) हैं। प्रत्येक सेल में या तो एक मान होगा, किसी अन्य सेल का संदर्भ, या संख्याओं या सेल संदर्भ के बीच ऑपरेशन के लिए एक एक्सेल फ़ॉर्मूला। (उदाहरण. "=A1+5", "=A2+B2", या "=2+5")

उदाहरण के लिए, यदि इनपुट है

B170
35=A1+A2

तो आउटपुट होगा

770
3510

क्योंकि B1 = 7 (पहली पंक्ति दूसरा स्तंभ) और "=A1 + A2" 7 + 3 = 10 है।

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

  • एक फ़ंक्शन resolve() परिभाषित करें। यह s लेगा
  • यदि s संख्यात्मक है, तो s को पूर्णांक के रूप में लौटाएं
  • अन्यथा solve(getIdx(s)) लौटाएं
  • एक फ़ंक्शन getIdx() परिभाषित करें। यह s लेगा
  • एक सूची लौटाएं जहां पहला मान s का सबस्ट्रिंग 1 से अंत तक पूर्णांक के रूप में है और दूसरा मान s[0] का ASCII - "A" का ASCII है
  • एक फ़ंक्शन do() परिभाषित करें। यह a, b, op लेगा
  • यदि op "+" के समान है, तो
    • a + b लौटाएं
  • यदि op "-" के समान है, तो
    • a - b लौटाएं
  • यदि op "*" के समान है, तो
    • a * b लौटाएं
  • यदि op "/" के समान है, तो
    • a / b लौटाएं
  • एक फ़ंक्शन solve() परिभाषित करें। यह i, j लेगा
  • यदि matrix[i,j] संख्यात्मक है तो वह मान लौटाएं
  • अन्यथा:
    • s := matrix[i, j]
    • यदि s[0] "=" के समान है, तो
      • s[इंडेक्स 2 से अंत तक] के सबस्ट्रिंग में प्रत्येक c के लिए, करें
        • यदि c (+, -, /, *) में कोई ऑपरेटर है, तो
          • op := c
          • लूप से बाहर निकलें
      • [a, b] := s के सबस्ट्रिंग [इंडेक्स 1 से अंत] और op से विभाजित
      • [aRes, bRes] := [resolve(a) , resolve(b)]
      • do(aRes, bRes, op) लौटाएं
    • अन्यथा,
      • solve(getIdx(s)) लौटाएं
  • i को 0 से मैट्रिक्स की पंक्ति संख्या तक रेंज में, करें
    • j को 0 से मैट्रिक्स की स्तंभ संख्या तक रेंज में, करें
      • matrix[i, j] := (solve(i, j)) स्ट्रिंग के रूप में
  • matrix लौटाएं

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

उदाहरण

class Solution:    def solve(self, matrix):       def resolve(s):          try:             return int(s)          except:             return solve(*getIdx(s))       def getIdx(s):          return [int(s[1:]) - 1, ord(s[0]) - ord("A")]       def do(a, b, op):          if op == "+":             return a + b          if op == "-":             return a - b          if op == "*":             return a * b          if op == "/":             return a / b       def solve(i, j):          try:             return int(matrix[i][j])          except:             s = matrix[i][j]             if s[0] == "=":                for c in s[2:]:                   if c in "+-/*":                      op = c                      break                a, b = s[1:].split(op)                aRes, bRes = resolve(a), resolve(b)                return do(aRes, bRes, op)             else:                return solve(*getIdx(s))       for i in range(len(matrix)):          for j in range(len(matrix[0])):             matrix[i][j] = str(solve(i, j))       return matrix ob = Solution() matrix = [    ["B1", "7", "0"],    ["3", "5", "=A1+A2"] ] print(ob.solve(matrix))

इनपुट

[["B1", "7", "0"], ["3", "5", "=A1+A2"] ]

आउटपुट

[['7', '7', '0'], ['3', '5', '10']]

  1. पायथन का उपयोग करके शतरंज बोर्ड के वर्ग का रंग निर्धारित करने का प्रोग्राम पायथन का उपयोग करके शतरंज बोर्ड के वर्ग का रंग निर्धारित करने का प्रोग्राम

    मान लीजिए हमारे पास एक शतरंज बोर्ड निर्देशांक है, जो शतरंज बोर्ड की पंक्ति और स्तंभ के निर्देशांक को दर्शाने वाली एक स्ट्रिंग है। नीचे आपके संदर्भ के लिए एक शतरंज बोर्ड है। हमें जांचना है कि दिया गया सेल सफेद है या नहीं, यदि सफेद है तो true वापस करें, अन्यथा false वापस करें। उदाहरण के लिए, यदि इनप

  1. - पायथन में दो आयतों के ओवरलैप की जांच करने का प्रोग्राम

    मान लीजिए हमारे पास एक आयत है जिसे चार तत्वों की सूची [x1, y1, x2, y2] के रूप में दर्शाया गया है, जहां (x1, y1) उसके निचले-बाएं कोने के निर्देशांक हैं, और (x2, y2) उसके ऊपरी-दाएं कोने के निर्देशांक हैं। दो आयत ओवरलैप होते हैं जब उनके प्रतिच्छेदन का क्षेत्रफल धनात्मक होता है। केवल कोने या किनारों को

  1. - Python प्रोग्राम में callable() फ़ंक्शन

    इस ट्यूटोरियल में, हम अंतर्निहित विधि callable() पर चर्चा करने जा रहे हैं। यह एक आर्गुमेंट लेता है और लौटाता है कि आर्गुमेंट कॉल करने योग्य है या नहीं। यदि आप कोई फ़ंक्शन या क्लास लेते हैं, तो वे कॉल करने योग्य हैं। इंटीजर, फ्लोट, स्ट्रिंग आदि जैसे स्थिरांक कॉल करने योग्य नहीं हैं। उदाहरण आइए कुछ उ