我参与了Python挑战,这个问题出现了,希望你能提供帮助。
输入
第1行: N,选择的参赛者数量
第二行: P,问题数量
第3行: P整数,每个问题的难度
第4行: C参赛者人数
第5行: C整数,每位参赛者的能力
参赛者可以解决难度不高于其能力的问题
输出
Print 'yes'
如果我们能找到前N名选手,else print 'no'
。
示例
输入: 1 2 5 10 3 5 9 10
输出: 'yes'
我的尝试:
if __name__ == '__main__':
N = int(input())
P = int(input())
P_diff = list(map(int, input().split()))
assert len(P_diff) == P
C = int(input())
exp = list(map(int, input().split()))
assert len(exp) == C
assert not N > C
a = 0
for k in P_diff:
for l in exp:
while l >= k:
a += 1
if C - a == N:
print('yes')
else:
print('no')
答案 0 :(得分:0)
在我对您的问题的理解中,我对您的代码进行了一些更改,只需尝试并检查它是否符合您的要求:
N = int(input())
P = int(input())
P_diff = list(int(input()) for i in range(P))
assert len(P_diff) == P
C = int(input())
exp = list(int(input()) for j in range(C))
assert len(exp) == C
assert not N > C
a = 0
a = sum([a+1 for x in P_diff for y in exp if x >= y])
if a >= N:
print('yes')
else:
print('no')
如果它可以满足您的需求,我们可以对此代码进行更改并使其更有效。
更新:
如果你想在一行中获取该数组的元素,你可以这样做:
P_diff = [int(i) for i in input().split()]
print(P_diff)
输入如:5 10 11
并打印如下:
[5, 10, 11]
编辑:
如果您希望首先在一行中提供所有输入,请执行以下操作:
li = [int(i) for i in input().split()]
print(li)
N = li[0]
P = li[1]
P_diff = list(li[i] for i in range(2, 2+P))
assert len(P_diff) == P
C = li[2+P]
exp = list(li[j] for j in range(3+P, 3+P+C))
assert len(exp) == C
assert not N > C
a = 0
a = sum([a+1 for x in P_diff for y in exp if x >= y])
if a >= N:
print('yes')
else:
print('no')
在这里您可以输入如下的输入:1 2 5 10 3 5 9 10
在一行中(不要像''一样给出字符串)