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

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


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

उदाहरण के लिए, यदि इनपुट है expire = 6, फिर ऑब्जेक्ट obj बनाएं, और फ़ंक्शन कॉल करें obj.limit(0,10), obj.limit(0,16), obj.limit(0,17) और obj.limit(1,20), तो आउटपुट क्रमशः False, False, True और False होगा क्योंकि यूजर 0 के लिए, शुरुआत में कोई रिक्वेस्ट नहीं थी तो False, फिर टाइम 16 पर यह अंतिम रिक्वेस्ट 10 से एक्सपायर टाइम 6 से अधिक नहीं है, लेकिन 17 पर यह True है और अंतिम रिक्वेस्ट के लिए, यह यूजर 1 के लिए है तो शुरुआती रिक्वेस्ट False है।

समाधान दृष्टिकोण

  • कंस्ट्रक्टर परिभाषित करें जो expire लेता है:
    • lastCall := एक डिक्शनरी बनाएं जिसका डिफ़ॉल्ट मान -1 हो
  • limit() फ़ंक्शन परिभाषित करें जो uid, timestamp लेता है:
    • last := lastCall[uid]
    • यदि last -1 के बराबर है या (last + expire) <= timestamp, तो:
      • lastCall[uid] := timestamp
      • False लौटाएं
    • True लौटाएं

उदाहरण कोड

from collections import defaultdict
class RateLimit:
    def __init__(self, expire):
        self.expire = expire
        self.lastCall = defaultdict(lambda: -1)
    def limit(self, uid, timestamp):
        last = self.lastCall[uid]
        if last == -1 or last + self.expire <= timestamp:
            self.lastCall[uid] = timestamp
            return False
        return True

expire = 6
obj = RateLimit(expire)
print(obj.limit(0,10))
print(obj.limit(0,16))
print(obj.limit(0,17))
print(obj.limit(1,20))

इनपुट

RateLimit(6) obj.limit(0,10) obj.limit(0,16) obj.limit(0,17) obj.limit(1,20)

आउटपुट

False False True False
  1. पायथन प्रोग्राम: कंपाउंड इंटरेस्ट पायथन प्रोग्राम: कंपाउंड इंटरेस्ट

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

  1. पायथन प्रोग्राम: साधारण ब्याज की गणना पायथन प्रोग्राम: साधारण ब्याज की गणना

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में साधारण ब्याज की गणना के बारे में जानेंगे।साधारण ब्याज की गणना दैनिक ब्याज दर को मूल राशि से गुणा करके और फिर भुगतानों के बीच बीते दिनों की संख्या से गुणा करके की जाती है।गणितीय रूप से,Simple Interest = (P x T x R) / 100जहां, P मूल राशि हैT समय है

  1. पायथन प्रोग्राम: सिलेक्शन सॉर्ट एल्गोरिदम पायथन प्रोग्राम: सिलेक्शन सॉर्ट एल्गोरिदम

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में सिलेक्शन सॉर्ट और इसके कार्यान्वयन के बारे में जानेंगे।सिलेक्शन सॉर्ट एल्गोरिदम में, एक सरणी को अनसॉर्टेड भाग से न्यूनतम तत्व को पुनरावर्ती रूप से ढूंढकर और इसे शुरुआत में डालकर सॉर्ट किया जाता है। दिए गए सरणी पर सिलेक्शन सॉर्ट के निष्पादन के दौरा