【问题标题】:Python Challenge SolutionPython挑战解决方案
【发布时间】:2023-04-15 19:07:02
【问题描述】:

我参加了一个 Python 挑战,出现了这个问题,希望你能帮忙。

输入

第一行: 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')

【问题讨论】:

  • 能否请您描述一下您面临的问题?
  • 我正在寻找这个 python 挑战问题的解决方案,我的尝试似乎并不适用于所有情况
  • @mij09,你的代码哪一点不起作用?
  • 那么这绝对是一个挑战
  • 当它针对测试用例运行时,它并没有通过所有测试用例。我想知道是否有人可以发现它的问题?

标签: python


【解决方案1】:

根据我对您的问题的理解,我已经对您的代码进行了一些更改,它的工作原理,只需尝试并检查它是否符合您的要求:

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 在一行中(不要像字符串一样使用'')

【讨论】:

  • P_diff = list(int(input()) for i in range(P)) ValueError: invalid literal for int() with base 10: '5 10' 你认为为什么会这样?
  • 这个错误是由于int('5 10')不是一个有效的数字而无法转换
  • @mij09 你必须一个一个地给输入数字..不像字符串那样在一起
  • @VikasDamodar 好的,感谢它现在的工作。有什么办法可以在一行上有多个输入?
  • @mij09 你的意思是通过一行给出所有输入值(包括 N、P、P_diff、C...)?