Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么要断行破坏python代码_Javascript_Python - Fatal编程技术网

Javascript 为什么要断行破坏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==

如果听起来太无聊,我们很抱歉。但这是我们一生中第一次遇到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==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)…
@Mina
x,y=n
是元组拆分。例如,要使
x,y=n
起作用,n必须是元组。然后,元组的第一项和第二项分别分配给x和y。我在我的问题中添加了一些js代码。这会让事情更清楚一点吗?@Mina:你正在查看的函数似乎故意使其变得神秘。Python通常不是这样。你可以轻松编写神秘的Javascript或更神秘的Javascript,但(希望)你不会。@user2357112但要编写神秘的js,我需要首先了解这一点。你从这段代码中获得了意义吗?@Mina,js也有列表(数组)理解,但我对语法不够熟悉,无法理解您的JS代码是否正确。文档说“不要使用”,但似乎很有帮助。它似乎使用了的关键字
,而不是
关键字中的Python
。@BrianMinton:文档说“不要使用”因为数组理解没有成为标准,只有Firefox有。