गणित कार्यों में संख्यात्मक और विराम चिह्न, संभवतः 'ई' या 'ई' शामिल होंगे यदि आप तर्कसंगत संख्याओं के लिए वैज्ञानिक नोटेशन की अनुमति देते हैं, और अल्फा वर्णों का एकमात्र (अन्य) कानूनी उपयोग होगा यदि आप विशिष्ट/अनुमति प्रदान करते हैं गणित कार्य (उदाहरण के लिए stddev)। तो, अल्फा वर्णों के लिए स्ट्रिंग के साथ चलाने के लिए तुच्छ होना चाहिए और अगले छोटे बिट को संदिग्ध नहीं करना चाहिए, फिर बस कोशिश करें/ब्लॉक को छोड़कर स्ट्रिंग को निकालें।
इस उत्तर को प्राप्त करने वाली टिप्पणियों को पुन: प्राप्त करें ... मैं मानता हूं कि यह दृष्टिकोण आग से खेल रहा है। फिर भी, इसका मतलब यह नहीं है कि इसे सुरक्षित रूप से नहीं किया जा सकता है। मैं अजगर (< 2 महीने) के लिए नया हूं, इसलिए ऐसे कामकाजों को नहीं पता हो सकता है जिनके लिए यह कमजोर है (और निश्चित रूप से एक नया पायथन संस्करण हमेशा भविष्य में असुरक्षित कोड प्रस्तुत कर सकता है), लेकिन - इसके लिए कितना छोटा है (मुख्य रूप से अपने खुद के मनोरंजन) - यहाँ यह मेरी दरार है:
def evalMaths(s):
i = 0
while i < len(s):
while s[i].isalpha() and i < len(s):
idn += s[i]
i += 1
if (idn and idn != 'e' and idn != 'abs' and idn != 'round'):
raise Exception("you naughty boy: don't " + repr(idn))
else:
i += 1
return eval(s)
मुझे यह सुन कर बहुत दिलचस्पी होगी अगर/यह कैसे धोखा दिया जा सकता ... (^_^) BTW/मुझे पता है तुम जैसे कार्यों कॉल कर सकते हैं abs2783 या _983 - यदि वे अस्तित्व में थे, लेकिन वे नहीं करेंगे। मेरा मतलब कुछ व्यावहारिक है।
वास्तव में, यदि कोई ऐसा कर सकता है, तो मैं 200 बाउंटी के साथ एक प्रश्न बनाउंगा और उनका जवाब स्वीकार करूँगा।
स्रोत
2010-08-27 08:31:35
पाइपर्सिंग वास्तव में अच्छा है, हालांकि पहली नज़र में थोड़ा डरावना – dmitry