yuzz6310 发表于 2022-5-7 20:57:14

小白求解死循环


def int_put(putin):
    while True:
      try:
            int(input(putin))
            break
      except (ValueError, KeyboardInterrupt, EOFError) as reason:
            print('输入错误!' + str(reason))


int_put('请输入一个整数:')


在键盘按了ctrl + D后,就一直循环去了,stop后就报错了,请求各位大神给个简单的解释。

Twilight6 发表于 2022-5-7 21:04:10


没遇到过这种问题,百度了下 EOF when reading a line 找到了下面这篇文章:

https://dev.to/rajpansuriya/eoferror-eof-when-reading-a-line-12fe

虽然是全英文的,但是现在浏览器自带翻译很方便啦~

wp231957 发表于 2022-5-7 21:04:25

你那第三行代码就是死循环啊

yuzz6310 发表于 2022-5-7 21:28:26

wp231957 发表于 2022-5-7 21:04
你那第三行代码就是死循环啊

我按了ctrl+d后就自动一直循环下去了,不用在输入什么东西了~~啥原因咧,像是把输出内容当成输入内容一直运行下去了···

wp231957 发表于 2022-5-7 21:32:25

yuzz6310 发表于 2022-5-7 21:28
我按了ctrl+d后就自动一直循环下去了,不用在输入什么东西了~~啥原因咧,像是把输出内容当成输入内容一直 ...

为啥要按ctrl+d呢

Twilight6 发表于 2022-5-7 22:18:46

yuzz6310 发表于 2022-5-7 21:28
我按了ctrl+d后就自动一直循环下去了,不用在输入什么东西了~~啥原因咧,像是把输出内容当成输入内容一直 ...


上面那篇文章就有解决方法,为什么忽视呢

yuzz6310 发表于 2022-5-8 10:07:50

Twilight6 发表于 2022-5-7 22:18
上面那篇文章就有解决方法,为什么忽视呢

问题是可以解决,
我是想搞明白:在提示输入的时候按了crtl+d,为什么程序自动循环下去了,这个逻辑到底是什么,
我在PyCharm中编译就会出现这种情况,在IDLE中同样的操作,每次循环它会提示进行输入。

Twilight6 发表于 2022-5-8 10:25:58

yuzz6310 发表于 2022-5-8 10:07
问题是可以解决,
我是想搞明白:在提示输入的时候按了crtl+d,为什么程序自动循环下去了,这个逻辑到 ...



这确实不太清楚了,可能和 PyCharm 是虚拟环境有关系吧

页: [1]
查看完整版本: 小白求解死循环