【发布时间】:2011-11-07 00:05:35
【问题描述】:
我正在借助 Head First Programming 自学 Python。
我想我可能会根据自己的喜好调整他们的示例,但我认为我错过了关于 time.sleep 的一些内容。
我的代码是
print("Welcome to SuperBeans!")
time.sleep(3)
answer = input("Do you need a price now? y/n: ")
但不是在欢迎消息后暂停三秒钟,而是等待 3 分钟,然后显示消息和输入请求。我错过了什么?
此外,在运行我定义的“poll”函数时,程序似乎无限期挂起,而没有显示“polling...”通知。我知道 get_price() 正在工作,因为它将它打印在另一个部分...
def poll():
price = 99.99
print(price)
while price > 4.74:
print("Polling...")
price = get_price()
time.sleep(5)
print("Buy!")
那么为什么欢迎在我认为应该暂停之前就暂停了,为什么 poll() 函数会挂起?
【问题讨论】:
-
当我运行你的第一个代码块时,它会休眠大约三秒钟。
-
这是标准输出缓冲区没有被刷新
-
这是调用
time.sleep的正确方法,并且您的代码sn-ps 在OS X 上可以正常工作。如果您单独运行它们,它们是否对您有用,而不需要程序的其余代码? -
嗯……奇怪。我正在使用 nppexec 从 notepad++ 控制台运行它。我刚刚尝试从 IDLE 运行它,它运行良好。我想这解决了一个问题,新的问题是为什么它不能从 npp 正常工作?
-
@Daniel Ball:当您以交互方式运行它时,stdin/stdout 将被行缓冲,否则使用固定缓冲区。比较
python -c'import sys; print sys.stdin.isatty()'和echo abc | python -c'import sys; print sys.stdin.isatty()'。