0

だからここに私は次のコードを持っています

def u_id(_id = '6397' , uid = '97492035'):
  n = _id if _id != None else '5000'
  try:
    return "".join(list(map(lambda x: str(x[0] + x[1])[-1], list(zip(list(map(lambda x: int(x), n)), list(map(lambda x: int(x), uid[4:])))))))
  except ValueError:
    return "none"

正直なところ、これはかなり不必要に見えます。この関数の仕組みは、提供された uid と _id を受け取り、'6119' を返すことです。基本的に、このコードがコード化されている方法から、このコードがどのように機能するかを理解することはできません。これをコーディングするための別の不可解な方法はありますか?または、この機能がどのように機能するかを説明しない場合。ありがとうございました。

4

2 に答える 2

0

関数は実際には難読化されていますが、思ったようには機能しません。あなたはそれが「6119」を返すと言いますが、次のコードを実行すると

def u_id(_id = '6397' , uid = '97492035'):
  n = _id if _id != None else '5000'
  try:
    return "".join(list(map(lambda x: str(x[0] + x[1])[-1], list(zip(list(map(lambda x: int(x), n)), list(map(lambda x: int(x), uid[4:])))))))
  except ValueError:
    return "none"

print u_id()

私にとっての出力は8322

また、コードが 2 スペースのインデントを使用していることも付け加えておく必要があります。これはあまり正統的ではありません。4 スペースを使用することをお勧めします。

私はあなたのためにこの問題を解決しません (かなり退屈に見えます.これを書いた人は誰でも明快さのファンではありませんでした!) しかし、私はそれを解決する方法を教えます - あなたはそれらの内部関数のそれぞれを取得する必要があります独自の行を作成し、それぞれの出力を印刷します。

于 2013-09-01T04:45:46.480 に答える