Javascript 为什么要断行破坏python代码
如果听起来太无聊,我们很抱歉。但这是我们一生中第一次遇到Python 我们这样做:Javascript 为什么要断行破坏python代码,javascript,python,Javascript,Python,如果听起来太无聊,我们很抱歉。但这是我们一生中第一次遇到Python 我们这样做: def m(n,k,c=0):x,y=n;return c if n==k else 7*(c>6)or min(m((x+a,y+b),k,c+1)for a,b in[(1,2),(1,-2),(-1,2),(-1,-2),(2,1),(2,-1),(-2,1),(-2,-1)]) print m((1,2), (5,6)) def m(n,k,c=0):x,y=n;return c if n==
def m(n,k,c=0):x,y=n;return c if n==k else 7*(c>6)or min(m((x+a,y+b),k,c+1)for a,b in[(1,2),(1,-2),(-1,2),(-1,-2),(2,1),(2,-1),(-2,1),(-2,-1)])
print m((1,2), (5,6))
def m(n,k,c=0):x,y=n;return c
if n==k else 7*(c>6) or min(m((x+a,y+b),k,c+1)for a,b in[(1,2),(1,-2),(-1,2),(-1,-2),(2,1),(2,-1),(-2,1),(-2,-1)])
这被称为:
def m(n,k,c=0):x,y=n;return c if n==k else 7*(c>6)or min(m((x+a,y+b),k,c+1)for a,b in[(1,2),(1,-2),(-1,2),(-1,-2),(2,1),(2,-1),(-2,1),(-2,-1)])
print m((1,2), (5,6))
def m(n,k,c=0):x,y=n;return c
if n==k else 7*(c>6) or min(m((x+a,y+b),k,c+1)for a,b in[(1,2),(1,-2),(-1,2),(-1,-2),(2,1),(2,-1),(-2,1),(-2,-1)])
为了理解它,我们尝试添加如下换行符:
def m(n,k,c=0):x,y=n;return c if n==k else 7*(c>6)or min(m((x+a,y+b),k,c+1)for a,b in[(1,2),(1,-2),(-1,2),(-1,-2),(2,1),(2,-1),(-2,1),(-2,-1)])
print m((1,2), (5,6))
def m(n,k,c=0):x,y=n;return c
if n==k else 7*(c>6) or min(m((x+a,y+b),k,c+1)for a,b in[(1,2),(1,-2),(-1,2),(-1,-2),(2,1),(2,-1),(-2,1),(-2,-1)])
我们不明白为什么仅仅是一个简单的新行破坏了代码
一旦我们理解了这一点,也许我们就能将该程序转换为javascript:
函数m(n,k,c=0){
x,,
y=n;
返回c
如果(n==k){
}否则{
7*(c>6)或数学最小值(m((x+a,y+b),k,c+1),对于[(1,2),(1,2),(-1,2),(-1,2),(2,1),(-2,1),(-2,1),(-2,1),(-2,1),(-2,1)]
}
}定义函数时,要么函数定义必须全部在同一行上(如原始示例中),要么标题
def m(n,k,c=0):
必须在自己的行上,其余语句必须在下一行上。你不能混搭
def m(n, k, c=0):
x, y = n
return c if n==k else \
7 * (c > 6) or min(m((x + a, y + b), k, c + 1)
for a,b in [(1,2), (1,-2), (-1,2), (-1,-2),
(2,1), (2,-1), (-2,1), (-2,-1)])
m((1,2), 3)
#7
如果n==k else…返回c的部分是Python中的三元条件运算符(类似于JS中的
?:
运算符)。例如,见。不能在那里放换行符,因为在Python中它是一个语句分隔符。换行符在Python中是语句分隔符。@user2357112但在整个代码中没有换行符。我不认为这是一个单一的声明。当然有语句分离,我不知道如何将其分解成若干部分并分别针对每个块。您只需在代码中添加一个换行符即可。如果n==k else 7*(c>6),则整个返回c,如果a,b在[(1,2),(1,-2),(-1,2),(2,1),(2,-1),(-2,1),(-2,1),(-2,1),(-2,1),(-2,1)],则返回min(m((x+a,y+a,y+b),k,c+1)
part应该是一条语句。根据您的建议,尝试在第一行(行续)末尾添加反斜杠,这将导致def m(n,k,c=0):x,y=n;如果n==k else 7*(c>6)或min(m((x+a,y+b),k,c+1),在[(1,2)、(1,-2),(-1,2),(-1,-2),(2,1),(-1),(-2,1),(-2,-1)]中返回c
,这是我所得到的。我还是不明白到底是什么我不知道你想完成什么,但是返回c
之后的任何操作都不会执行。@DYZ,它实际上是一个列表理解。它将元组a,b
顺序分配给列表中的元组[(1,2),(1,-2)…
@Minax,y=n
是元组拆分。例如,要使x,y=n
起作用,n必须是元组。然后,元组的第一项和第二项分别分配给x和y。我在我的问题中添加了一些js代码。这会让事情更清楚一点吗?@Mina:你正在查看的函数似乎故意使其变得神秘。Python通常不是这样。你可以轻松编写神秘的Javascript或更神秘的Javascript,但(希望)你不会。@user2357112但要编写神秘的js,我需要首先了解这一点。你从这段代码中获得了意义吗?@Mina,js也有列表(数组)理解,但我对语法不够熟悉,无法理解您的JS代码是否正确。文档说“不要使用”,但似乎很有帮助。它似乎使用了的关键字,而不是
关键字中的Python。@BrianMinton:文档说“不要使用”因为数组理解没有成为标准,只有Firefox有。