HDU树夏 2021-10-28 20:57 采纳率: 0%
浏览 4

关于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个奇数,但是终端打印却不停生成新的奇数。这又不符合我的输入,想稳一下为什么

  • 写回答

1条回答 默认 最新

  • 辉煌仪奇 2021-10-28 21:02
    关注

    因为你的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)
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月28日

悬赏问题

  • ¥15 在matlab中Application Compiler后的软件无法打开
  • ¥15 想问一下STM32创建工程模板时遇到得问题
  • ¥15 Fiddler抓包443
  • ¥20 Qt Quick Android 项目报错及显示问题
  • ¥15 而且都没有 OpenCVConfig.cmake文件我是不是需要安装opencv,如何解决?
  • ¥15 oracleBIEE analytics
  • ¥15 H.264选择性加密例程
  • ¥50 windows的SFTP服务器如何能批量同步用户信息?
  • ¥15 centos7.9升级python3.0的问题
  • ¥15 安装CentOS6时卡住