2015-01-27 62 views
0

我是一名編程學校的學生,需要完成一個使用財務股票數據的項目。python在stdin上多次讀取導致它阻止

我選擇在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() 

/趕上程序塊,我反倒沒有關於爲什麼發生這種情況的想法。

+0

它被阻塞,因爲沒有線正在被寫入......多數民衆贊成在做什麼......它正在等待一行輸入來sys.stdin – 2015-01-27 00:32:11

+0

你的代碼正在做它應該的,你正在輸入在範圍天 – 2015-01-27 00:33:35

+0

你只是想採取用戶輸入? – 2015-01-27 00:35:08

回答

0

而不是

sys.stdin.readline() 

使用,在Python 2(我想象你正在使用給未來進口)

raw_input() 

,或者在Python 3,

input() 

我相信你可能會遇到緩衝問題,因爲你的問題描述和raw_inputinput內置函數採取所有必要的措施來避免緩衝問題,因此您不必深入底層去自行修復問題。

+0

你間接保存了我的問題 我使用#!/ usr/bin/python作爲shebang,在學校計算機集成python2.7,pŷthon3和python3.3,所以我想它是使用了一堆不同的版本,我用3.3代替,現在一切都在使用input() – soueuls 2015-01-27 00:43:10

+0

其實我試圖用raw_input指定2.7 shebang( )只是一個測試,似乎我運行在相同的阻塞問題。 – soueuls 2015-01-27 00:47:12