我在解决一个问题,这个问题要求我为给定的输入序列提供一个输出。第一个输入是“N”,它是天数,第二个输入是一个由N个整数组成的序列,用空格隔开,第三个输入是Q(测试用例的数量),然后是两个整数(l和r,l<;r),用空格隔开(Q次)。你知道吗
样本输入:
5
65 615 16 516 651
5
45 65
63 5635
654 862
0 956
56 89
我需要生成的输出是,对于每个测试用例,当利润在l和r(都包括在内)之间时有多少天。你知道吗
样本输入的预期输出:
1
4
0
5
1
我已经用python3编写了这段代码。但是它只适用于第一个测试用例,对于所有其他的用例,它打印0。你知道吗
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)
有人能解释一下我做错了什么吗?或者有没有其他方法来解决这个问题? 我想我的解决办法应该行得通。如果你需要知道的话,我正在使用Jupyterlab和python3。你知道吗
假设您的原始文章中
return days
的缩进是一个错误,问题是在python3中map()
返回一个充当生成器的对象。这意味着您只能使用它的元素一次,例如:为了能够多次迭代,您需要做一些类似于显式创建
list
的操作:也就是说,列表理解可能更清晰:
相关问题 更多 >
编程相关推荐