Python如何实现类似JavaScript的算法仿写?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1020个文字,预计阅读时间需要5分钟。
前言:之前写过一篇用Python仿写JS算法的文章,当时大部分语法都已经能够很好地在Python中找到对应的语法结构。直到前几天,我用Python仿写了一个网课解析视频加密的算法,我发现很多之前没有注意到的地方。
我发现,虽然Python中有许多JS的语法结构,但也有一些细微的差别。例如,在Python中,字符串的拼接通常使用加号(+),而在JS中,可以使用加号(+)或者模板字符串。另外,Python中的列表和字典的键值对顺序可能会因为实现方式的不同而有所差异。
通过这次仿写,我对Python的语法有了更深入的了解,也发现了Python在处理一些特定问题时的一些优势。以下是我仿写过程中发现的一些有趣的现象:
1. Python中的列表推导式和字典推导式可以简化代码,提高可读性。
2.Python的装饰器可以方便地实现一些通用的功能,如日志记录、权限验证等。
3.Python的生成器可以有效地处理大量数据,提高程序的性能。
总之,通过这次仿写,我对Python的语法和特性有了更深入的了解,也提高了自己的编程能力。
前言
之前写过一篇用python 仿写 js 算法,当时以为大部分语法都已经能很好的在python找到对应的语法结构,直到前几天我用 python 仿写了 慕课网解析视频加密的算法,我发现很多之前没遇到过的问题
for循环问题
js中的for循环
for (var i = 0; i < 10; i++) {i = i+1
console.log(i)
}
其中的 i变量每一次循环都自增 1,然后在循环内部有增加 1
输出结果:
3
5
7
9
11
这种 for循环在 python中是不能用for循环写的,因为循环内部进行了 i 变量的更改,所以在python中这种for循环只能仿写成while循环,像这样:
i = 0while i < 10:
i = i + 1
i = i + 1
print(i)
在循环中 第一个 i=i+1 相当于 js的循环内部中的 i=i+1 第二个 i=i+1 相当于 js for循环中的 i++,换句话说也就是python 在循环体结尾加了一句 i=i+1 相当于 for循环中的 i++
而在循环体 内部没有改变 i变量的值的语句可以用python中的for循环来仿写
总结:
1.用python 仿写js算法时,对于没有更改 判断循环是否结束时的变量(例子中的i) 可以用 python的 for循环来仿写
2. 对于更改了判断循环是否结束时的变量(例子中的i),可以用 python中的 while 来仿写
与或语法
在仿写过程中我遇到了这种神奇的语法
0 != (i = n[r] % 3) && r + i < n.length && o = n[r + 1]简单解释一下这种语法的执行顺序
首先执行 i = n[r] % 3) 然后 进行判断 0 != i 如果为假,执行结束
如果为真,继续执行
(这段就是用到了 && 只要找到一个为假的就执行结束,否则继续判断)
在继续执行的时候 判断 r + i < n.length 如果为真继续执行,如果为假结束执行
注:这里的 i已经等于 n[r] % 3)了
如果继续执行,做一步赋值操作 o = n[r + 1]
所以这段用 Python 可以这样来仿写
i = n[r] % 3if 0 != i:
if r + i < len(n):
o = n[r + 1]
循环体结束问题
仿写的时候,遇到很多for循环或者if 后面不加大括号,导致我刚开始逻辑写错很多
正常规范 js
{
i = i+1;
console.log(i);
}
我遇到的js代码:
for (var i = 0; i <= 10; i++)i = i+1,
console.log(i);
这两行代码是相同的效果,这里解释一下:
1.首先换行相当于加 ;
2. for循环后面下一句就是循环体
3. ",“隔开内容,相当于一句代码不表示代码结束,只有换行和”;"才表示一段代码结束
所以这里的循环体相当于 i = i+1, console.log(i);
真是各种恶心不规范的语法,加一个大括号什么都解决了,真不知道 慕课网的js是谁写的
作者:Hello_wshuo
本文共计1020个文字,预计阅读时间需要5分钟。
前言:之前写过一篇用Python仿写JS算法的文章,当时大部分语法都已经能够很好地在Python中找到对应的语法结构。直到前几天,我用Python仿写了一个网课解析视频加密的算法,我发现很多之前没有注意到的地方。
我发现,虽然Python中有许多JS的语法结构,但也有一些细微的差别。例如,在Python中,字符串的拼接通常使用加号(+),而在JS中,可以使用加号(+)或者模板字符串。另外,Python中的列表和字典的键值对顺序可能会因为实现方式的不同而有所差异。
通过这次仿写,我对Python的语法有了更深入的了解,也发现了Python在处理一些特定问题时的一些优势。以下是我仿写过程中发现的一些有趣的现象:
1. Python中的列表推导式和字典推导式可以简化代码,提高可读性。
2.Python的装饰器可以方便地实现一些通用的功能,如日志记录、权限验证等。
3.Python的生成器可以有效地处理大量数据,提高程序的性能。
总之,通过这次仿写,我对Python的语法和特性有了更深入的了解,也提高了自己的编程能力。
前言
之前写过一篇用python 仿写 js 算法,当时以为大部分语法都已经能很好的在python找到对应的语法结构,直到前几天我用 python 仿写了 慕课网解析视频加密的算法,我发现很多之前没遇到过的问题
for循环问题
js中的for循环
for (var i = 0; i < 10; i++) {i = i+1
console.log(i)
}
其中的 i变量每一次循环都自增 1,然后在循环内部有增加 1
输出结果:
3
5
7
9
11
这种 for循环在 python中是不能用for循环写的,因为循环内部进行了 i 变量的更改,所以在python中这种for循环只能仿写成while循环,像这样:
i = 0while i < 10:
i = i + 1
i = i + 1
print(i)
在循环中 第一个 i=i+1 相当于 js的循环内部中的 i=i+1 第二个 i=i+1 相当于 js for循环中的 i++,换句话说也就是python 在循环体结尾加了一句 i=i+1 相当于 for循环中的 i++
而在循环体 内部没有改变 i变量的值的语句可以用python中的for循环来仿写
总结:
1.用python 仿写js算法时,对于没有更改 判断循环是否结束时的变量(例子中的i) 可以用 python的 for循环来仿写
2. 对于更改了判断循环是否结束时的变量(例子中的i),可以用 python中的 while 来仿写
与或语法
在仿写过程中我遇到了这种神奇的语法
0 != (i = n[r] % 3) && r + i < n.length && o = n[r + 1]简单解释一下这种语法的执行顺序
首先执行 i = n[r] % 3) 然后 进行判断 0 != i 如果为假,执行结束
如果为真,继续执行
(这段就是用到了 && 只要找到一个为假的就执行结束,否则继续判断)
在继续执行的时候 判断 r + i < n.length 如果为真继续执行,如果为假结束执行
注:这里的 i已经等于 n[r] % 3)了
如果继续执行,做一步赋值操作 o = n[r + 1]
所以这段用 Python 可以这样来仿写
i = n[r] % 3if 0 != i:
if r + i < len(n):
o = n[r + 1]
循环体结束问题
仿写的时候,遇到很多for循环或者if 后面不加大括号,导致我刚开始逻辑写错很多
正常规范 js
{
i = i+1;
console.log(i);
}
我遇到的js代码:
for (var i = 0; i <= 10; i++)i = i+1,
console.log(i);
这两行代码是相同的效果,这里解释一下:
1.首先换行相当于加 ;
2. for循环后面下一句就是循环体
3. ",“隔开内容,相当于一句代码不表示代码结束,只有换行和”;"才表示一段代码结束
所以这里的循环体相当于 i = i+1, console.log(i);
真是各种恶心不规范的语法,加一个大括号什么都解决了,真不知道 慕课网的js是谁写的
作者:Hello_wshuo

