查看链接中的第一个答案: 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)
答案 0 :(得分:3)
在表达式10 ** (idx * 3 or 2)
中,如果值 idx 是zéro,那么0 * 3 = 0
。
在Python中,0
,0.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。