从python将带有内部条件的循环转换为lang

时间:2018-12-17 18:37:39

标签: python go

im将python中的某些代码转换为

在这里我想用go lang编写相等的代码:

python:

while g_day_no >= g_days_in_month[i] + (i == 1 and leap):
    g_day_no -= g_days_in_month[i] + (i == 1 and leap)
    i+=1

我的尝试:

leap := int32(1)
var i = int32(0)
for g_day_no >= (g_days_in_month[i] + (i == 1 && leap)){
    g_day_no -= g_days_in_month[i] + (i == 1 && leap)
    i+=1
}

但是我在想法上有错误:

  

无效操作:i == 1 &&飞跃(类型不匹配的bool和int32)

本节(i == 1 && leap)

我该如何更正代码的这一部分?

1 个答案:

答案 0 :(得分:1)

Go对条件更加严格。它需要布尔值。 leap是整数,因此只需检查一下值即可:

g_day_no >= (g_days_in_month[i] || (i == 1 && leap!=0))

更详细的答案

Python中的

布尔值(TrueFalse)对应于以下整数值:

True=>1 False=>0

这可以通过以下内容看到:

>>> True+0
1
>>> False+0
0

因此,当您将两个布尔值加在一起时,它与OR相同:

True  + True  => 2 (True)
False + True  => 1 (True)
True  + False => 1 (True)
False + False => 0 (False)

这是与OR相同的“真值表”:

真或真=>真    假或真=>真    正确或错误=>正确    FALSE OR FALSE =>错误

因此,将您的+更改为||({Go中的||OR)。

相关问题