一些Python问题

时间:2011-09-14 16:51:46

标签: javascript python

我正在尝试从javascript中的后台学习Python。我看到有人做了一个递归函数来找到最小公分母,并想知道为什么他们不只是使用一个循环,所以,无论是为了体验还是为了自娱自乐,我写了一个更简单的一个:

我想出了:

def LCM(n,d):
    while(n%d++ != 0 ):
        continue
    return d-1
print(LCM(99,12))

毋庸置疑,对于那些了解Python的人来说,++不是一个有效的运算符。我也试过

def LCM(n,d):
    while(n%(d+=1) != 0 ):
        continue
    return d-1
print(LCM(99,12))

为了确保这不是我的想法,我在javascript尝试了同样的事情:

function LCM(b,d){
   while(b%d++ != 0){
   }
return d-1;
}

Python不允许使用javascript中的表达式吗?还有,缩进是定义某事的唯一方法吗?我知道分号不是必需的,但可以使用,在关闭循环或函数定义方面是否有类似的东西?

最后,isis not是Python equal-without-type-coersion运算符吗?

P.S。我意识到如果没有检查各种输入的输入,这个功能是不实际的,但这不是写它的重点。

P.P.S此外,是否有一个Python等价的javascript evaluation ? on true : on false if语句缩写?

2 个答案:

答案 0 :(得分:8)

Python不允许在表达式中进行赋值(例如i+=1),因为这些可能导致代码混乱,并且Python旨在使编写令人困惑的代码变得困难,并且使编写明显代码变得简单。 / p>

你可以简单地写一下:

def LCM(n,d):
    while n%d != 0:
        d += 1
    return d-1
print(LCM(99,12))

Python的is测试两个对象是相同的对象而不是相等。请考虑以下事项:

d = {}
e = d
assert d == {}     # Empty dictionaries equal each other
assert d is not {} # .. but are not identical
assert d is e      # d and e refer to the same object

JavaScript中没有与is等效的运算符,并且Python中没有与JavaScript ==等效的运算符。 Python的==会对内置类型进行类型检查。

条件运算符(JavaScript中的a ? b : c)在Python中写为:

 b if a else c

答案 1 :(得分:0)

Python中不需要分号,一切都是用缩进完成的。此外,混合标签和空格可能会导致问题。坚持一个或另一个。 :)