python如何读取一行直到EOF



我正在尝试阅读一些行,直到EOF回答这个问题:

https://open.kattis.com/problems/tight

这是我尝试过的:

from collections import defaultdict
import sys

def get_ans(n, k):
dp = defaultdict(int)
total = defaultdict(int)
for i in range(n):
for num in range(k+1):
if num+1 <= k:
dp[(i, num)] += dp[(i-1, num+1)]
if num-1 >= 0:
dp[(i, num)] += dp[(i-1, num-1)]
dp[(i, num)] += dp[(i-1, num)]
dp[(i, num)] = max(dp[(i, num)], 1)
total[i] += dp[(i, num)]
return total[n-1]/((k+1)**n)*100

def main():
for line in sys.stdin:
if line == "":
break
print(line)
k, n = map(int, input().split())
ans = get_ans(n, k)
print(str.format('{0:.6f}', ans))

if __name__ == "__main__":
main()

问题:如果我复制输入并将其全部粘贴到终端中运行脚本,我的输出如下所示:

我的输入:

4 1
2 5
3 5
8 7

终端输出

40.740741
3 5

似乎有些行没有被处理 - 我不明白为什么。

有人可以指出我正确的方向吗?

main我建议使用 while 循环,并且正如已经指出的那样inputinput为您处理来自sys.stdin的传入数据。

def main():
line = input()
while line:
k, n = map(int, line.split())
ans = get_ans(n, k)
print(str.format('{0:.6f}', ans))
line = input()

正如@ForceBru指出的那样,我是在input()而不是line上分裂。

最新更新