我正在解决一个问题,要求我提供给定输入序列的输出。第一个输入是“ N”,即天数,第二个输入是由N个整数组成的序列,中间用空格隔开,第三个输入是Q(测试用例数),从第四位开始是两个整数(l和r,l 样本输入: 对于每个测试用例,我需要生成的输出是利润在l和r(包括两者)之间时有多少天。 样本输入的预期输出: 我已经用python 3编写了这段代码。但是它仅适用于第一个测试用例,在所有其他情况下,它的输出均为0。 有人可以向我解释我做错了什么吗?还是有其他方法可以解决这个问题?
我认为我的解决方案应该有效。如果您需要知道的话,我正在使用Jupyterlab和python 3。
5
65 615 16 516 651
5
45 65
63 5635
654 862
0 956
56 89
1
4
0
5
1
def solve(N,profit,l,r):
days = 0
for i in range(N):
for perdayprofit in profit:
if l <= perdayprofit <= r :
days = days + 1
return days
N = int(input())
profit = map(int,input().split(" "))
Q = int(input())
for i in range(Q):
l,r = map(int,input().split(" "))
out = solve(N,profit,l,r)
print(out)
答案 0 :(得分:1)
假设原始帖子中map()
的缩进是一个错误,问题是在python 3 >>> m = map(lambda x: x + 1, range(10))
>>> list(m)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(m)
[]
中返回了一个充当生成器的对象。这意味着您只能使用一次它的元素,例如:
list
为了能够对其进行多次迭代,您需要执行类似显式创建profit = list(map(int,input().split(" ")))
的操作:
profit = [int(i) for i in input().split(" ")]
也就是说,列表理解可能更干净:
{{1}}