我们如何在python中使用'或'和'*'?

时间:2017-08-25 19:29:20

标签: python python-3.x

查看链接中的第一个答案: convert number words to Integers Python Code

作者使用

for idx, word in enumerate(scales):
   numwords[word] = (10 ** (idx * 3 or 2), 0)

作者如何在这里使用'或'与乘法(*):

10 ** (idx * 3 or 2)

2 个答案:

答案 0 :(得分:3)

在表达式10 ** (idx * 3 or 2)中,如果值 idx 是zéro,那么0 * 3 = 0

在Python中,00.0""[](){}False等所有值,None被评估为False。请参阅官方文档:Truth Value Testing

如果 ixd 为0,等式idx * 3 or 2等同于False or 2。结果为2.

如果 idx 不为0,则结果为idx * 3运算符不会被评估。

答案 1 :(得分:1)

这是因为idx的定位。

例如: 如果我们在代码中省略“或2”并且idx = 0,那么......

10 **(0 * 3)将给我们1而不是正确答案。

一个更好的例子:

让我们说这个数字是“一百”。刻度中“百”的idx位置为0.因此代码中没有“或2”,“百”将等于...... 10 **(0 * 3)= 1这在逻辑上是不正确的,所以你必须对10(因此“或2”起作用)进行校正...... 10 **(2)= 100。