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

क्या हम Python Strings पर Math Operations कर सकते हैं?


Strings पर Mathematical Expressions Evaluate करना

आप Mathematical Expressions को Strings में Evaluate करने के लिए eval Function का उपयोग कर सकते हैं।

उदाहरण

उदाहरण के लिए, यदि आपके पास Content (4*5) + 21 वाला String है, तो आप इसे Eval कर सकते हैं और Result प्राप्त कर सकते हैं।

>>> s = "(4*5) + 22"
>>> eval(s)
42

eval Python Rules को Follow करता है Mathematical Expressions Evaluate करने के लिए उन Cases में जहां Parentheses प्रदान नहीं किए गए हैं, आदि।

⚠️ Security Warning - बहुत सावधान रहें!

eval का उपयोग करते समय बहुत सावधान रहें क्योंकि यह Huge Security Loopholes और Bugs का Source हो सकता है।

# DANGEROUS EXAMPLES - कभी न करें:
eval("__import__('os').system('rm -rf /')")  # System Command Execution!
eval("open('/etc/passwd').read()")           # File Read!
eval("__import__('subprocess').run(['ls'])") # Command Execution!

Safer Alternatives:

1. ast.literal_eval (केवल Literals के लिए):

import ast

# Safe - केवल Literals
ast.literal_eval("[1, 2, 3]")      # [1, 2, 3]
ast.literal_eval("{'a': 1}")       # {'a': 1}
ast.literal_eval("(4*5) + 22")     # ValueError - Expression नहीं है!

2. Simple Calculator (Safe Subset):

import re
import operator

OPS = {
    '+': operator.add, '-': operator.sub,
    '*': operator.mul, '/': operator.truediv,
    '//': operator.floordiv, '%': operator.mod,
    '**': operator.pow,
}

def safe_eval(expr):
    """Simple Arithmetic Only - No Functions, Names, etc."""
    # Validate: Only Numbers, Operators, Parentheses, Spaces
    if not re.match(r'^[\d\s+\-*/().%]+$', expr):
        raise ValueError("Invalid Characters")
    
    # Additional Safety: No Double Operators, etc.
    # ... Validation Logic ...
    
    return eval(expr, {"__builtins__": {}}, {})  # No Builtins!

3. Use a Parser Library:

# pip install pyparsing
from pyparsing import *

# Or use dedicated expression evaluators like:
# - simpleeval
# - numexpr
# - asteval

Bottom Line:

Production Code में कभी भी eval() का उपयोग न करें जब तक कि Input पूरी तरह से Trusted न हो। Safer Alternatives का उपयोग करें।


  1. - पायथन यूनिकोड स्ट्रिंग्स का टुपल कैसे बनाएं?

    आप इस टुपल को परिभाषित करते समय u सिंटैक्स का उपयोग करके पायथन में यूनिकोड स्ट्रिंग्स का टुपल बना सकते हैं। उदाहरण a = [(u亀,), (u犬,)] print(a) आउटपुट यह आउटपुट देगा: [(亀,), (犬,)] ध्यान दें कि यदि आप यह कहना चाहते हैं कि यह एक यूनिकोड स्ट्रिंग है तो आपको u प्रदान करना होगा। अन्यथा इसे नॉर्मल बाइनरी

  1. - Python स्ट्रिंग्स को टपल में कैसे बदलें?

    Python का बिल्ट-इन फंक्शन `tuple()` किसी भी अनुक्रम ऑब्जेक्ट को टपल में बदलता है। यदि यह एक स्ट्रिंग है, तो प्रत्येक कैरेक्टर को एक स्ट्रिंग के रूप में माना जाता है और कॉमा से अलग करके टपल में डाला जाता है। >>> string = Tutorialspoint >>> tuple(string) (T, u, t, o, r, i, a, l, s,

  1. - पायथन में तारीख और समय की गणना कैसे करें?

    पायथन में timedelta ऑब्जेक्ट्स का उपयोग करके तारीख और समय की गणना करना बहुत आसान है। जब भी आप किसी तारीख/समय में जोड़ना या घटाना चाहते हैं, datetime.datetime() का उपयोग करें, फिर datetime.timedelta() इंस्टेंस जोड़ें या घटाएं। एक timedelta ऑब्जेक्ट एक अवधि को दर्शाता है, दो तारीखों या समयों के बीच क