【问题标题】:Introduction to Python, causing function to print truePython介绍,导致函数打印为真
【发布时间】:2014-07-14 15:53:58
【问题描述】:

这是我第一次使用 Python,我有一个问题要解决,下面是一个在其中输入内容时打印 true 的方法。我不明白这里发生了什么,所以有人可以尝试解释这里发生了什么,以及什么会导致某些东西打印为真的。这种方法有特定的名称吗?这里有什么策略?

基本上我在找

  • 什么会导致打印结果为 true?
  • 为什么用关键字打印 true?

提前致谢,记住我是 Python 的初学者,所以请尽量不要讨厌。

quam, quum="",""
class char:
    def __init__(self, *x): pass
    def __add__(self, x):
        try:
                  globals()['quum'] += x
        except:
                  return True
for i in [102, 114, 111, 109, 32, 122, 108, 105, 98, 32, 105, 109, 112, 111, 114, 116, 32, 100, 101, 99, 111, 109, 112, 114, 101, 115, 115, 32, 97, 115, 32, 121, 10, 102, 114, 111, 109, 32, 98, 105, 110, 97, 115, 99, 105, 105, 32, 105, 109, 112, 111, 114, 116, 32, 117, 110, 104, 101, 120, 108, 105, 102, 121, 32, 97, 115, 32, 117]:
    quam = char() + chr(i)

if char() + 100: exec(quum)
else: exec(quam)
c = 204112890334875644936547550670918483174507745028227181355093277104005052842989650193062069077845326 42489437847494411971123810887
hi = eval(y(u(hex(c)[1+1:1-1-1])))
print hi(raw_input("Your input:"))

【问题讨论】:

  • 如果你正在尝试学习python,试图弄清楚混淆代码的含义并不是一个好主意。买一本书吧,你可以在这里找到很多:wiki.python.org/moin/IntroductoryBooks。恕我直言,如果这是一些 python 课程的练习,我建议你找到一个更好的课程。

标签: python function return


【解决方案1】:

这显然是一些混淆代码。您可以通过开始打印您不理解的所有内容来支持它,例如以quum 开头,一个用代码填充并用exec() 求值的字符串:

>>> print quum
from zlib import decompress as y
from binascii import unhexlify as u

现在你知道什么是yu

>>> u
<built-in function unhexlify>
>>> y
<built-in function decompress>

现在号码 c 以某种方式处理

>>> hex(c)
'0x789ccb49cc4d4a4954a8b0aab0b5552fc9c82c8e07a2e2fcdcd4f8f2d4cca294f89cfcfcecccbcf4f882ca928cfc3c7500ab851247L'
>>> hex(c)[1+1:1-1-1]
'789ccb49cc4d4a4954a8b0aab0b5552fc9c82c8e07a2e2fcdcd4f8f2d4cca294f89cfcfcecccbcf4f882ca928cfc3c7500ab851247'

看起来像是某些字节的十六进制表示,不是吗?

>>> u(hex(c)[1+1:1-1-1])
'x\x9c\xcbI\xccMJIT\xa8\xb0\xaa\xb0\xb5U/\xc9\xc8,\x8e\x07\xa2\xe2\xfc\xdc\xd4\xf8\xf2\xd4\xcc\xa2\x94\xf8\x9c\xfc\xfc\xec\xcc\xbc\xf4\xf8\x82\xca\x92\x8c\xfc<u\x00\xab\x85\x12G'

让我们解压吧!

>>> y(u(hex(c)[1+1:1-1-1]))
"lambda x:x=='this_is_some_weird_looking_python'"

是的,这是一个字符串!

>>> hi = eval(y(u(hex(c)[1+1:1-1-1])))
>>> hi
<function <lambda> at 0x1dde938>

现在这只是一个 lambda 函数的定义,如果您输入 this_is_some_weird_looking_python,它会返回 true

简单吧?

【讨论】:

  • 太棒了!谢谢你的解释,你很有帮助!
猜你喜欢
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多