生成器yield的用法

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
# coding=utf-8

def test():
    print("start!")
    i=1
    while True:
        temp=yield i  # 下次迭代时,代码从`yield`的下一条语句(不是下一行)开始执行
        i+=1
        print(f'i:{i}')
        print(f"temp:{temp}")
    print("end!")
    return "done!"


if __name__ == '__main__':
    a=test()
    a.__next__()
    a.__next__()
    a.__next__()

运行结果及报错内容
C:\Users\黄佳文\AppData\Local\Microsoft\WindowsApps\python3.10.exe D:/pythonProject/pythonProject/pythonProject/pythonProject/生成器和迭代器/02_生成器函数yield的用法.py
start!
i:2
temp:None
i:3
temp:None

进程已结束,退出代码0


我的解答思路和尝试过的方法
我想要达到的结果:

为什么11行代码没有运行,还说此代码无法访问?我该怎么做?

因为你使用了while True循环,中途没有退出过,而你只有三个__next__。
这是一个无限生成的生成器,你在调用最后一个next的时候,因为while True的缘故,又回到while True开头执行。
尽管你最后没有调用了,但是生成器的工作还是没有停止,堵在了while True那边