為什麼這段代碼打印出無限的數字?

勞拉

在這段代碼中,為什麼當我在 x1 = Chain ("6") 中放入字符串“6”而不是 6 時,它會在執行時打印出一個無限數?

class Chain:
    def __init__(self, n):
        self.n = n
        self.counter = 0

    def __next__(self):
        if self.counter != self.n:
            self.counter += 1
        else:
            raise StopIteration
        return self.counter

    def __iter__(self):
        return self


x1 = Chain("6")

for i in x1:
    print(i)
誹謗老鼠

這一行x1 = Chain("6")設置self.n = "6"了一個字符串。在對像中你有counter一個整數。整數永遠不能等於字符串,因此您self.counter != self.n總是返回True並且else永遠不會進入塊。

如果我是你,我會將你的修改__init__為:

def __init__(self, n):
        self.n = int(n)
        self.counter = 0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

為什麼這些代碼片段的行為不同?

為什麼這段代碼會產生一個空字典,我該如何解決?

為什麼這段代碼會卡在內部 while 循環中?

誰能解釋為什麼這段代碼會打印垃圾值?

為什麼這段 Golang 代碼會產生死鎖?

帶有 malloc 和 strcpy 代碼的指針數組。如果 valgrid -s 不打印任何東西,這段代碼有什麼問題嗎

為什麼這段代碼的輸出在數組中是一樣的?

為什麼這段代碼輸出錯誤的答案?

為什麼這段代碼在函數執行後需要這麼長時間?

VBA/Excel,為什麼IF 條件對這段代碼中的行高沒有影響?

為什麼這段帶有 Java 泛型的代碼不能編譯?

如何打印出一個階乘數?我的代碼不斷打印出太多數字,我不知道為什麼?

這行代碼是什麼意思?

[1] 在這個 python 代碼段中做了什麼?

請幫助我了解這段代碼中發生了什麼

這段代碼得到一個錯誤,這些變量沒有被分配到,我不知道為什麼

這段代碼中的“groupPrev.next = kth”是做什麼的?

這段代碼中sensor_rate的輸出是什麼意思?

為什麼這個 Arduino 代碼不能正確褪色,而 Python 代碼卻可以?

類型錯誤:無法讀取未定義的屬性(讀取“長度”)- 想要解釋為什麼代碼會這樣說

為什麼這個輸出是數字而不是數組中的項目?

為什麼我不能評論這個 while 循環代碼?

有人可以解釋這段代碼在做什麼嗎?

為什麼這段代碼會導致hitbox異常?

這段代碼打印空格和星號的模式有什麼問題?

為什麼我的 discord.py 代碼中有這個錯誤

為什麼這段代碼顯示測試用例錯誤?

為什麼這個 for-in-function 打印出 1 而不是 9?

Python:為什麼這個 if-else 代碼不正確?