import time """我的迭代器""" class Myiterator: def __init__(self, array: list, reverse: bool): self.array = array self.reverse = reverse def __iter__(self): return self def __next__(self): if len(self.array) == 0 and not self.array: raise StopIteration else: if self.reverse: return self.array.pop(0) else: return self.array.pop() myiterator = Myiterator([i for i in range(1, 41)], reverse=False) print("\033[32m%s开始反向循环%s\033[0m" % ("-"*10, "-"*10)) ends = [] for i in myiterator: ends.append(i) # 判断列表长度并输出对应片段 if len(ends) == 10: print(f"{ends[:10]}") elif len(ends) == 20: print(f"{ends[10:20]}") elif len(ends) == 30: print(f"{ends[20:30]}") elif len(ends) == 40: print(f"{ends[30:41]}") time.sleep(0.1) print(f"\n\033[32m反向循环结果:{ends}\033[0m") print("\033[32m反向循环结束!\033[0m\n") print("\033[32m%s开始正向循环%s\033[0m" % ("-"*10, "-"*10)) starts = [] for j in Myiterator([i for i in range(1, 41)], reverse=True): starts.append(j) if len(starts) == 10: print(f"{starts[:10]}") elif len(starts) == 20: print(f"{starts[10:20]}") elif len(starts) == 30: print(f"{starts[20:30]}") elif len(starts) == 40: print(f"{starts[30:41]}") time.sleep(0.1) print(f"\n\033[32m正向循环结果:{starts}\033[0m") print("\033[32m正向循环结束!\033[0m") try: results = [] # 这里存在变量作用域问题,修改后使用双循环计算 for x in range(len(starts)): start = starts[x] for c in range(len(ends)): if x == c: # 保证索引对应 end = ends[c] result = start + end results.append(result) print(f"\n\033[32m计算结果:{results}\033[0m") results.reverse() print(f"\n\033[33m结果排序:{results}\033[0m") except Exception as e: print(f"\033[31m发生错误:{e}\033[0m") class Customize: def __new__(cls, Array, reverse: bool): print("\033[32m我是构造函数\033[0m\n") instance = super().__new__(cls) return instance def __init__(self, Array, reverse: bool): print("\033[32m我是初始化函数\033[0m") self.Array = Array self.reverse = reverse def __iter__(self): return self def __next__(self): if len(self.Array) == 0: raise StopIteration else: if self.reverse: return self.Array.pop(0) else: return self.Array.pop() customize = Customize([v for v in range(1, 41)], reverse=True) custs = [] print("\n\033[32m%s构造函数%s\033[0m" % ("-"*10, "-"*10)) for cust in customize: custs.append(cust) if len(custs) == 10: print(f"{custs[:10]}") elif len(custs) == 20: print(f"{custs[10:20]}") elif len(custs) == 30: print(f"{custs[20:30]}") elif len(custs) == 40: print(f"{custs[30:41]}") print("\n\033[32m%s反向循环%s" % ("-"*10, "-"*10)) custos = [] for n in Customize([v for v in range(41, 61)], reverse=False): custos.append(n) if len(custos) == 10: print(f"{custos[:10]}") elif len(custos) == 20: print(f"{custos[10:20]}") elif len(custos) == 30: print(f"{custos[20:30]}") elif len(custos) == 40: print(f"{custos[30:41]}") class Callable: def __init__(self, *args, **kwargs): self.args = args self.kwargs = kwargs def __call__(self): try: results = [] results.append([self.args, self.kwargs]) return [result for result in results] except Exception as e: print(e) callable = Callable([i for i in range(3)], [j for j in range(4)], {"count": i for i in range(3)}) # 注意:这里i未定义,会报错 print(callable())
Standard input is empty
[32m----------开始反向循环----------[0m [40, 39, 38, 37, 36, 35, 34, 33, 32, 31] [30, 29, 28, 27, 26, 25, 24, 23, 22, 21] [20, 19, 18, 17, 16, 15, 14, 13, 12, 11] [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] [32m反向循环结果:[40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1][0m [32m反向循环结束![0m [32m----------开始正向循环----------[0m [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [11, 12, 13, 14, 15, 16, 17, 18, 19, 20] [21, 22, 23, 24, 25, 26, 27, 28, 29, 30] [31, 32, 33, 34, 35, 36, 37, 38, 39, 40] [32m正向循环结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40][0m [32m正向循环结束![0m [32m计算结果:[41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41][0m [33m结果排序:[41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41][0m [32m我是构造函数[0m [32m我是初始化函数[0m [32m----------构造函数----------[0m [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [11, 12, 13, 14, 15, 16, 17, 18, 19, 20] [21, 22, 23, 24, 25, 26, 27, 28, 29, 30] [31, 32, 33, 34, 35, 36, 37, 38, 39, 40] [32m----------反向循环---------- [32m我是构造函数[0m [32m我是初始化函数[0m [60, 59, 58, 57, 56, 55, 54, 53, 52, 51] [50, 49, 48, 47, 46, 45, 44, 43, 42, 41] [[([0, 1, 2], [0, 1, 2, 3], {'count': 2}), {}]]