Python 在线评委中来自标准输入的输入
Python input from stdin in online judges
我是竞争性编程的初学者,正在入门。熟悉C和C++,但Python就是我learning.I输入困难Python
问题就像:对于给定数量的测试用例,对于每个测试用例,您将在同一行中获得一个数字 N 和另一个数字 K。在这一行之后,一行中将有 N 个整数。你只需要像下面给出的那样划分和总结(括号只是为了跟踪)
1 #test cases
3 2 #N #K
4 5 7 #N integers
答案是 sum : 7
即 4/2 + 5/2 + 7/2 = 7(整数除法)
我写了一个简单的 Python 2.7 程序来接受输入和执行操作。
t = map(int,raw_input())
t = t[0]
while t>=0:
count=0
n,k = map(int,raw_input().split())
candies = map(int,raw_input().split())
for candy in candies:
count += candy/k
t -= 1
我遇到错误:
vivek@Pavilion-dv6:~/Desktop$ python kids_love_candies.py <in.txt >out.txt
Traceback (most recent call last):
File "kids_love_candies.py", line 6, in <module>
n,k = map(int,raw_input().split())
EOFError: EOF when reading a line
另一个 link 建议使用 sys.stdin.readline()
读取输入,但我不知道如何将它应用到我的问题中。
我应该使用哪一个?为什么?学习和使用它们的正确方法是什么?
您尝试读取的行过多,您的 while 条件应为 > 0
。但是整个事情比需要的要复杂
t = int(raw_input()) # no need to map
for _ in range(t): # loop with range instead of manual counting
# loop body
当我想遍历来自标准输入的行时,我通常使用 sys.stdin
代替。在那种情况下,您可以忽略 count
raw_input() # ignore the size
for line in sys.stdin:
n, k = (int(i) for i in line.split())
count = sum(int(c) for c in raw_input.split()) / k
我是竞争性编程的初学者,正在入门。熟悉C和C++,但Python就是我learning.I输入困难Python 问题就像:对于给定数量的测试用例,对于每个测试用例,您将在同一行中获得一个数字 N 和另一个数字 K。在这一行之后,一行中将有 N 个整数。你只需要像下面给出的那样划分和总结(括号只是为了跟踪)
1 #test cases
3 2 #N #K
4 5 7 #N integers
答案是 sum : 7
即 4/2 + 5/2 + 7/2 = 7(整数除法)
我写了一个简单的 Python 2.7 程序来接受输入和执行操作。
t = map(int,raw_input())
t = t[0]
while t>=0:
count=0
n,k = map(int,raw_input().split())
candies = map(int,raw_input().split())
for candy in candies:
count += candy/k
t -= 1
我遇到错误:
vivek@Pavilion-dv6:~/Desktop$ python kids_love_candies.py <in.txt >out.txt
Traceback (most recent call last):
File "kids_love_candies.py", line 6, in <module>
n,k = map(int,raw_input().split())
EOFError: EOF when reading a line
另一个 link 建议使用 sys.stdin.readline()
读取输入,但我不知道如何将它应用到我的问题中。
我应该使用哪一个?为什么?学习和使用它们的正确方法是什么?
您尝试读取的行过多,您的 while 条件应为 > 0
。但是整个事情比需要的要复杂
t = int(raw_input()) # no need to map
for _ in range(t): # loop with range instead of manual counting
# loop body
当我想遍历来自标准输入的行时,我通常使用 sys.stdin
代替。在那种情况下,您可以忽略 count
raw_input() # ignore the size
for line in sys.stdin:
n, k = (int(i) for i in line.split())
count = sum(int(c) for c in raw_input.split()) / k