Discuss / Python / 在PyCharm中 运行问题

在PyCharm中 运行问题

Topic source

我跟随实例在PyCharm中编写此代码,当我右键 Run xxx.py时,最后的for循环一直在打印空白 未退出 for循环后面的测试也未执行,请问有人知道是怎么回事么?

class Fib(object):    def __init__(self):        self.__a, self.__b = 0, 1   # 初始化两个计数器 a,b    def __iter__(self):        return self                 # 实例本身是迭代对象    def __next__(self):        self.__a, self.__b = self.__b, self.__a + self.__b        if self.__a > 100:        # 设置退出循环的条件            return StopIteration()        return self.__a             # 返回下一个值    def __getitem__(self, idx):        __a, __b = 1, 1        for x in range(idx):            __a, __b = __b, __a + __b        return __a# 测试__iter__,__getitem__for n in Fib():    print(n)

以下是格式化后的代码,默认粘贴后,格式不对,不好意思

class Fib(object):
     def __init__(self):
          self.__a, self.__b = 0, 1 # 初始化两个计数器 a,b
def __iter__(self):
return self # 实例本身是迭代对象

def __next__(self):
         self.__a, self.__b = self.__b, self.__a + self.__b
if self.__a > 100:  # 设置退出循环的条件
return StopIteration()
         return self.__a  # 返回下一个值

def __getitem__(self, idx):
         __a, __b = 1, 1
for x in range(idx):
             __a, __b = __b, __a + __b
         return __a

# 测试__iter__,__getitem__
for n in Fib():
     print(n)

f = Fib()
print(f[0])
print(f[1])

class Fib(object):    def __init__(self):        self.__a, self.__b = 0, 1   # 初始化两个计数器 a,b    def __iter__(self):        return self                 # 实例本身是迭代对象    def __next__(self):        self.__a, self.__b = self.__b, self.__a + self.__b        if self.__a > 100:        # 设置退出循环的条件            return StopIteration()        return self.__a             # 返回下一个值    def __getitem__(self, idx):        __a, __b = 1, 1        for x in range(idx):            __a, __b = __b, __a + __b        return __a# 测试__iter__,__getitem__for n in Fib():    print(n)

我去,原来是因为用了return 而不是raise 异常


  • 1

Reply