Python中如何将JavaScript的for循环语法改写为Python语法?

python 有下面这段 js 的写法吗?


for (
    d = Math.floor(k.length / 5),
    e = parseInt(k.charAt(d) + k.charAt(2 * d) + k.charAt(3 * d) + k.charAt(4 * d) + k.charAt(5 * d)),
    f = Math.round(b.length / 2),
    g = Math.pow(2, 31) - 1,
    h = parseInt(a.substring(a.length - 8, a.length), 16),
    a = a.substring(0, a.length - 8),
    k += h; k.length > 10;) 

{

k = (parseInt(k.substring(0, 10)) + parseInt(k.substring(10, k.length))).toString();          

}


Python中如何将JavaScript的for循环语法改写为Python语法?

8 回复

写一下不就知道了,我感觉应该是有的


在Python里,JavaScript的for循环主要有两种常见形式需要转换,我直接给你看代码例子。

1. 经典的 for (let i = 0; i < n; i++) 循环 这种在Python里直接用 range() 函数搞定:

# JavaScript: for (let i = 0; i < 5; i++)
for i in range(5):
    print(i)  # 输出 0,1,2,3,4

# 如果需要指定起始值、步长
# JavaScript: for (let i = 2; i < 10; i += 2)
for i in range(2, 10, 2):
    print(i)  # 输出 2,4,6,8

2. for...in 循环遍历对象属性 这里要分情况:

  • 遍历数组/列表:Python直接用 for...in
# JavaScript: for (let item in array)
my_list = ['a', 'b', 'c']
for item in my_list:
    print(item)  # 输出 'a','b','c'
  • 遍历对象属性:Python用 .items().keys().values()
# JavaScript: for (let key in obj)
my_dict = {'x': 1, 'y': 2}
for key in my_dict:  # 或者 for key in my_dict.keys():
    print(key, my_dict[key])  # 输出 'x' 1, 'y' 2

# 更Pythonic的方式
for key, value in my_dict.items():
    print(key, value)

3. for...of 循环(ES6) 这个在Python里就是普通的 for...in

# JavaScript: for (let value of iterable)
text = "hello"
for char in text:
    print(char)  # 输出 h,e,l,l,o

关键区别记住:Python的for循环更简洁,不需要手动管理索引,range()函数处理数字序列,字典用.items()同时获取键值。

一句话建议:用range()代替计数器循环,用for...in直接遍历可迭代对象。

问题只在于把变量声明写在了 for 里而已吧
js<br>const d = Math.floor(k.length / 5),<br> e = parseInt(k.charAt(d) + k.charAt(2 * d) + k.charAt(3 * d) + k.charAt(4 * d) + k.charAt(5 * d)),<br> f = Math.round(b.length / 2),<br> g = Math.pow(2, 31) - 1,<br> h = parseInt(a.substring(a.length - 8, a.length), 16),<br> a = a.substring(0, a.length - 8);<br><br>for (k += h; k.length &gt; 10;) { <br> <br> k = (parseInt(k.substring(0, 10)) + parseInt(k.substring(10, k.length))).toString(); <br> <br>}<br><br><br>

把它们都提出来的话,不就是一个十分普通的 for 循环而已么?

这个循环有毒吧,声明了一堆的全局变量出来,或者你只是把混淆的代码前面的那一堆 var 声明给遮住了?

这是代码混淆后的结果?

这代码有毒,正常人谁会这么写代码

也就 es6 之前的垃圾语法能这么写,除了 js 没谁了。

回到顶部