Python 多次读取 stdin 导致它阻塞
Python multiple read on stdin cause it to block
我是一名编程学校的学生,需要完成一个使用金融股票数据的项目。
我选择了 Python 因为这是我玩了几天的唯一一种语言,我的学校没有教过它,我必须能够在标准输入上阅读并且我能够阅读一次但不是第二次,程序无限期地等待,我必须使用 ctrl+c 引发 KeyboardInterrupt
来停止它
这是我得到的代码:
#!/usr/bin/python
from __future__ import print_function
import sys
if __name__ == "__main__":
capital = int(sys.stdin.readline())
days = int(sys.stdin.readline())
initial = int(sys.stdin.readline())
for day in range(days - 1):
print("wait")
try:
value = int(sys.stdin.readline())
except ValueError:
break
这里有一些关于我得到的输入格式的提示。
首先,我一次在三行不同的行中得到三个数字。
然后我得到与第一个输入的第二个数字一样多的输入,所以我在它上面循环。
我一到达
sys.stdin.readline()
在 try/catch 程序块中,我实际上不知道为什么会这样。
而不是
sys.stdin.readline()
在 Python 2 中使用(我想你正在使用未来导入)
raw_input()
或者,在 Python 3 中,
input()
根据您对问题的描述,我相信您可能 运行 遇到缓冲问题,并且 raw_input
和 input
内置函数采取了避免缓冲所需的所有措施问题,所以您不必在低层次上深入挖掘自己解决问题。
我是一名编程学校的学生,需要完成一个使用金融股票数据的项目。
我选择了 Python 因为这是我玩了几天的唯一一种语言,我的学校没有教过它,我必须能够在标准输入上阅读并且我能够阅读一次但不是第二次,程序无限期地等待,我必须使用 ctrl+c 引发 KeyboardInterrupt
来停止它这是我得到的代码:
#!/usr/bin/python
from __future__ import print_function
import sys
if __name__ == "__main__":
capital = int(sys.stdin.readline())
days = int(sys.stdin.readline())
initial = int(sys.stdin.readline())
for day in range(days - 1):
print("wait")
try:
value = int(sys.stdin.readline())
except ValueError:
break
这里有一些关于我得到的输入格式的提示。
首先,我一次在三行不同的行中得到三个数字。 然后我得到与第一个输入的第二个数字一样多的输入,所以我在它上面循环。
我一到达
sys.stdin.readline()
在 try/catch 程序块中,我实际上不知道为什么会这样。
而不是
sys.stdin.readline()
在 Python 2 中使用(我想你正在使用未来导入)
raw_input()
或者,在 Python 3 中,
input()
根据您对问题的描述,我相信您可能 运行 遇到缓冲问题,并且 raw_input
和 input
内置函数采取了避免缓冲所需的所有措施问题,所以您不必在低层次上深入挖掘自己解决问题。