我正在参加一个python挑战,这个问题提出了,希望您可以提供帮助。
输入
第一行: n,选择
的参赛者数量第二行: P,问题数
第三行: p整数,每个问题的难度
第四行: c参赛者的数量
第五行: 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')
在我对您的问题的理解时,我对您的代码进行了一些更改,只需尝试一下,然后检查它是否符合您的要求:
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
在一行中(不要用"像字符串"给出(