क्या पाइथन में एक शर्त को सत्य होने का कोई तरीका है? मैंने इसे पहले हास्केल में किया है और सोच रहा हूं कि क्या आप इसे पायथन कर सकते हैं। उदाहरण के लिए:पायथन बल एक शर्त
>>> 2+2==5
True
क्या पाइथन में एक शर्त को सत्य होने का कोई तरीका है? मैंने इसे पहले हास्केल में किया है और सोच रहा हूं कि क्या आप इसे पायथन कर सकते हैं। उदाहरण के लिए:पायथन बल एक शर्त
>>> 2+2==5
True
ठीक है आपको केवल चार बराबर पांच सेट करने की आवश्यकता है।
import ctypes
def deref(addr, typ):
return ctypes.cast(addr, ctypes.POINTER(typ))
deref(id(4), ctypes.c_int)[6] = 5
2 + 2
#>>> 5
2 + 2 == 5
#>>> True
जाहिर है ...
यहां आपके बीच साहसी के लिए एक चुनौती है: 100 की तरह कुछ सेट करें (क्योंकि 2 9 का उपयोग नहीं किया जाता है, इसलिए यह दुभाषिया को दुर्घटनाग्रस्त नहीं करेगा) और इसे * वापस * बदलने का प्रयास करें। समाधान और अन्य प्रशंसक प्रयास [यहां उपलब्ध] (http://www.reddit.com/r/Python/comments/2441cv/can_you_change_the_value_of_1/)। – Veedrac
वीड्राक, शायद ही कभी एसओ पर कुछ भी मुझे जोर से हँसते हैं, लेकिन ... एलओएल। (और मेरा मतलब है कि सबसे अच्छे तरीके से!) –
हाहाहा, यह वही जवाब है जो मैं चाहता था! : डी –
आप के लिए समानता ऑपरेटर को फिर से परिभाषित कर सकते हैं एक subclassed पूर्णांक:
>>> class MyInt(int):
... def __eq__(self, other):
... return True
...
>>> five = MyInt(5)
>>> five
5
>>> 2+2 == five
True
यह कम से कम इन उत्तरों के हानिकारक खुद आज़माने के लिए है। लेकिन अगर आप उत्पादन कोड में यह (या इनमें से कोई भी) करते हैं, तो आपको शायद निकाल दिया जाएगा।
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.displayhook = lambda x : sys.__displayhook__(True if x is False else x)
>>> 2+2==5
True
>>>
अपनी खुद की दुभाषिया लिखें? ;-) – NPE
आप ऐसा क्यों करना चाहते हैं? यह स्वाभाविक रूप से गलत लगता है। –
[एक प्रोग्राम लिखें जो 2 + 2 = 5 बनाता है] (http://codegolf.stackexchange.com/q/28786) में एक * रोचक * पायथन समाधान है। आप * वास्तव में ऐसा नहीं करना चाहते हैं * हालांकि। –