Python挑战解决方案



我正在参加一个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在一行中(不要用"像字符串"给出(

最新更新