我最近第一次參加了黑客馬拉松,並陷入了第一個問題。我解決了算法,但無法弄清楚如何使用Python從stdin中獲取值。這是一個問題:使用Python的Stdin問題
有兩個大學生想在宿舍裏聚在一起。宿舍裏有各種大小的房間。有些房間可以容納兩個額外的學生,而另一些則不能。
輸入:第一個輸入行將是一個數字n(1≤n≤100),它是宿舍中的房間總數。之後會有n行,其中每行包含兩個數字,p和q(0≤p≤q≤100)。 P是已經在房間裏的學生人數,而q是可以住在房間裏的最多學生人數。
輸出:打印室,兩個學生可以住在數量
這是我的解決方案。我使用raw_input()測試了它,它在我的解釋器上完美工作,但是當我將其更改爲input()時,我收到一條錯誤消息。
def calcRooms(p, q):
availrooms = 0
if q - p >= 2:
availrooms += 1
return availrooms
def main():
totalrooms = 0
input_list = []
n = int(input())
print n
while n > 0:
inputln = input().split() #accepts 2 numbers from each line separated by whitespace.
p = int(inputln[0])
q = int(inputln[1])
totalrooms += calcRooms(p, q)
n -= 1
return totalrooms
print main()
錯誤消息:
SyntaxError: unexpected EOF while parsing
如何接受正確地從標準輸入數據?
[raw_input](https://docs.python.org/2/library/functions.html#raw_input) – DOOM 2014-09-27 19:06:15
我喜歡使用sys.stdin.readline()或「for sys.stdin中的行:」。然後你可以「line.split()」並轉換爲int或其他。 input()在CPython 2.x中工作,但它是不安全的。在3.x中,我相信input()很好。在2.x中,你必須使用raw_input()並記住不要使用input()。但我仍然喜歡使用sys.stdin。 – user1277476 2014-09-27 19:12:01