Int可迭代错误

时间:2018-05-05 15:49:43

标签: python

您好我有以下代码并得到此错误:TypeError:'int'对象不可迭代,我猜它与变量c相关

def dayInWeek(self):
    m = self._month, y = self._year, c = 0 ; # m - the month , _day - the day , c - the decade, y - the last 2 digit in the year
    if self._month == 1 or self._month == 2:
        m = self._month + 12
        y = self._year - 1
    c = m / 100
    y = y % 100
    return (self._day + (26 * (m +1)) / 10 + y + y / 4 + c / 4 - 2 * c) % 7

2 个答案:

答案 0 :(得分:1)

您无法在同一行声明多个变量,就像您正在做的那样。变化

m = self._month, y = self._year, c = 0

m = self._month
y = self._year
c = 0

在大多数情况下,通常认为在同一行上声明多个变量是不好的做法。

这里的错误是因为在赋值左侧使用逗号被解释为试图将右边的内容解构为元组。 0不能被解构,因为它不是可迭代的;因此错误。

答案 1 :(得分:0)

Python确实支持多个变量赋值,但不支持你这样做的方式(这就是它在C中的工作方式)。

而不是

m = self._month, y = self._year, c = 0

只做

m, y, c = self._month, self._year, 0

这种作业形式称为tuple assignment

请注意,您无需在此处声明c,只需在需要的位置定义它:

def dayInWeek(self):
    d, m, y = self._day, self._month, self._year
    if m in (1, 2):
        m += 12
        y -= 1
    c = m / 100
    y %= 100
    return (d + (26 * (m +1)) / 10 + y + y / 4 + c / 4 - 2 * c) % 7

另外,请将结尾;保留,在Python中不需要它们。