2017-03-11 24 views
-1

私は学士号の仕事に取り組んでおり、私は通訳のようなものを構築しています。 JavascriptコードをPythonに変換したい。私はこのようになります私は、Pythonへのループのために変換したいポイントに来た:Javascript forループをPythonize

Pythonで
for(var x = 0; x < some_length; x++) { 
} 

それは次のようになります。

for x in range(0, some_length): 

問題は、私はすべてカバーしたいです例えば、次のように逆方向に行くような、発生する可能性があります例:

for(var x = some_length - 1; x >= 0; x--) { 
} 

誰かのpythonにこれをtranspileする関数を書くために私を助けることができますか?

重要な編集! transpileする関数への入力として

のpythonにループするためのものである:

firstAction = "x = 0", 

condition = "x < some_length" 

action = "x++" 

答えて

1
それは次のようになります

は、あなたがその詳細の多くのためrange機能を確認することができます

function pythonize(firstAction, condition, action) 

使用法:

通知手順をx++をデクリメントします。そうでない場合、forループは終了しません。

1

rangestart, end, step受け入れ、あなたは別のオプションが

for x in reversed(range(some_length)) 

ノートです

for x in range(some_length-1, -1, -1) 

行うことができます。私はあなたが

0

私はこの長いを作成した2番目の例ではx--を意味すると仮定しますPython forループにjavascript forループをトランスポーレーションする関数:

function pyt(c) { 
    var cc = c.split('(')[1]; 
    cc = cc.substr(0,cc.length-1); 
    pp = cc.split(';'); 
    var r1 = /[A-Za-z\$\_]{1}[A-Za-z0-9\_]* ?= ?(.*)/.exec(pp[0])[1]; 
    var r2 = ''; 
    if(pp[1].indexOf('<') > -1) { 
    r2 = /[A-Za-z\$\_]{1}[A-Za-z0-9\_]* ?<=? ?(.*)/.exec(pp[1])[1] 
    } else if(pp[1].indexOf('>') > -1) { 
    r2 = /[A-Za-z\$\_]{1}[A-Za-z0-9\_]* ?>=? ?(.*)/.exec(pp[1])[1] 
    } 
    var delta = 0; 
    if(pp[1].indexOf('>=')) { 
    delta = -1; 
    } 
    if(pp[1].indexOf('<=')) { 
    delta = 1; 
    } 
    var e2 = 0; 
    if(!isNaN(r2)) { 
    e2 = Number(r2) + delta; 
    } else { 
    if(delta !== 0) { 
     e2 = r2 + (delta > 0 ? '+' : '-') + delta; 
    } else { 
     e2 = r2; 
    } 
    } 

    var r3 = ''; 
    if(/[A-Za-z\$\_]{1}[A-Za-z0-9\_]*\+\+/.test(pp[2])) { 
    r3 = '1'; 
    } else if(/[A-Za-z\$\_]{1}[A-Za-z0-9\_]*\-\-/.test(pp[2])) { 
    r3 = '-1'; 
    } else { 
    if(pp[2].indexOf('+=') > -1) { 
     r3 = /[A-Za-z\$\_]{1}[A-Za-z0-9\_]* ?\+= ?(.*)/.exec(pp[2])[1]; 
    } else if(pp[2].indexOf('-=') > -1) { 
     r3 = /[A-Za-z\$\_]{1}[A-Za-z0-9\_]* ?\-= ?(.*)/.exec(pp[2])[1]; 
    } else { 
     if(/([A-Za-z\$\_]{1}[A-Za-z0-9\_]*) ?= ?\1 ?\+ ?(.*)/.test(pp[2])) { 
      r3 = /([A-Za-z\$\_]{1}[A-Za-z0-9\_]*) ?= ?\1 ?\+ ?(.*)/.exec(pp[2])[2]; 
     } else { 
     r3 = /([A-Za-z\$\_]{1}[A-Za-z0-9\_]*) ?= ?\1 ?\- ?(.*)/.exec(pp[2])[2]; 
     } 
    } 
    } 
    p = 'for i in range(' + r1 + ', ' + e2 + ', ' + r3 + ')'; 
    return p; 
} 

var c = "for(i = 30 + y;i>=10 - 1; i = i + 0.1)"; 
console.log(pyt(c)); 

https://jsfiddle.net/x7uhxbua/12/

基本的に魔法を行うために正規表現を使用しています。ほとんどのケースをカバーしますが、すべてではありません。