关于python的代码问题,终端打印为什么会起飞


def odd(max):
    n=1
    count=0
    while True:
        yield n
        n+=2

        count=count+1
        if count == max:
            break
            raise StopIteration
add=input('请输入你要输入得奇数得个数')
print(add)
oddnum = odd(add)
for num in oddnum:
    print(num)

我通过定义一个输入来获得我想要的奇数的个数,但是在输出的过程中,终端打印了很多的数据,随后我把迭代器的部分注释掉,直接显示输入数据add,显示的仍然是我输入的数。比如我输入一个数5.根据odd方法应该生成1 3 5 7 9 5个奇数,但是终端打印却不停生成新的奇数。这又不符合我的输入,想稳一下为什么

因为你的while循环中的等式不成立,无法退出,input输入是字符串型的,所以无法成立等式,将其改为如下即可

def odd(max):
    n = 1
    count = 0
    while True:
        yield n
        n += 2
        count = count + 1
        if count == int(max):
            break


add = input('请输入你要输入得奇数得个数')
print(add)
oddnum = odd(add)
for num in oddnum:
    print(num)