2014-09-09 8 views
8

क्या पाइथन में एक शर्त को सत्य होने का कोई तरीका है? मैंने इसे पहले हास्केल में किया है और सोच रहा हूं कि क्या आप इसे पायथन कर सकते हैं। उदाहरण के लिए:पायथन बल एक शर्त

>>> 2+2==5 
True 
+3

अपनी खुद की दुभाषिया लिखें? ;-) – NPE

+1

आप ऐसा क्यों करना चाहते हैं? यह स्वाभाविक रूप से गलत लगता है। –

+9

[एक प्रोग्राम लिखें जो 2 + 2 = 5 बनाता है] (http://codegolf.stackexchange.com/q/28786) में एक * रोचक * पायथन समाधान है। आप * वास्तव में ऐसा नहीं करना चाहते हैं * हालांकि। –

उत्तर

8

ठीक है आपको केवल चार बराबर पांच सेट करने की आवश्यकता है।

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 

जाहिर है ...

+2

यहां आपके बीच साहसी के लिए एक चुनौती है: 100 की तरह कुछ सेट करें (क्योंकि 2 9 का उपयोग नहीं किया जाता है, इसलिए यह दुभाषिया को दुर्घटनाग्रस्त नहीं करेगा) और इसे * वापस * बदलने का प्रयास करें। समाधान और अन्य प्रशंसक प्रयास [यहां उपलब्ध] (http://www.reddit.com/r/Python/comments/2441cv/can_you_change_the_value_of_1/)। – Veedrac

+1

वीड्राक, शायद ही कभी एसओ पर कुछ भी मुझे जोर से हँसते हैं, लेकिन ... एलओएल। (और मेरा मतलब है कि सबसे अच्छे तरीके से!) –

+0

हाहाहा, यह वही जवाब है जो मैं चाहता था! : डी –

8

आप के लिए समानता ऑपरेटर को फिर से परिभाषित कर सकते हैं एक subclassed पूर्णांक:

>>> class MyInt(int): 
...  def __eq__(self, other): 
...   return True 
...   
>>> five = MyInt(5) 
>>> five 
5 
>>> 2+2 == five 
True 

यह कम से कम इन उत्तरों के हानिकारक खुद आज़माने के लिए है। लेकिन अगर आप उत्पादन कोड में यह (या इनमें से कोई भी) करते हैं, तो आपको शायद निकाल दिया जाएगा।

4
$ 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 
>>> 
संबंधित मुद्दे