Python 谷歌2020年启动一个错误的答案

Python 谷歌2020年启动一个错误的答案,python,python-3.6,Python,Python 3.6,问题链接: 问题 有N栋房子待售。买第i栋房子要花Ai美元。你的预算是B美元。 你最多能买多少套房子 输入 输入的第一行给出了测试用例的数量,然后是T.T测试用例。每个测试用例从一行开始,其中包含两个整数N和B。第二行包含N个整数。第i个整数是Ai,第i个房子的成本 输出 对于每个测试用例,输出一行包含用例#x:y,其中x是测试用例编号(从1开始),y是您可以购买的最大房屋数量 **Limits** Time limit: 15 seconds per test set. Memory limi

问题链接:

问题 有N栋房子待售。买第i栋房子要花Ai美元。你的预算是B美元。 你最多能买多少套房子

输入 输入的第一行给出了测试用例的数量,然后是T.T测试用例。每个测试用例从一行开始,其中包含两个整数N和B。第二行包含N个整数。第i个整数是Ai,第i个房子的成本

输出 对于每个测试用例,输出一行包含用例#x:y,其中x是测试用例编号(从1开始),y是您可以购买的最大房屋数量

**Limits**
Time limit: 15 seconds per test set.
Memory limit: 1GB.
1 ≤ T ≤ 100.
1 ≤ B ≤ 105.
1 ≤ Ai ≤ 1000, for all i.

**Test set 1**
1 ≤ N ≤ 100.

**Test set 2**
1 ≤ N ≤ 105.

**Sample Input** 
3
4 100
20 90 40 90
4 50
30 30 10 10
3 300
999 999 999

**Sample Output**  
Case #1: 2
Case #2: 3
Case #3: 0
在示例案例1中,您的预算为100美元。你可以花20+40=60美元购买第一套和第三套房子。 在示例案例2中,您的预算为50美元。你可以花30+10+10=50美元购买第一、第三和第四套房子。 在示例案例3中,您的预算为300美元。你不能买任何房子(所以答案是0)

以下是我的解决方案(Python 3):

T=int(输入())
res=[]
对于范围(T)内的i:
N、 B=map(int,input().split(“”))
ai=列表(映射(int,input().split(“”)))
ai.sort()
对于范围内的k(len(ai)):
B=B-ai[k]
如果B<0:
附加(k)号决议
打破
elif k==len(ai)-1:
res.append(k+1)
对于范围(T)内的i:
打印(“Case#”,i+1,”:“,res[i])

我已经尝试了我能想到的所有测试用例,并且得到了预期的输出。但当我试图提交时,它说样本失败:回答错误。请让我知道我的解决方案到底有什么问题,以及如何改进。

我认为问题出在您上次打印的声明中,您有:

>>> print("Case #", i+1, ":", res[i])
Case # 0 : 2
请注意,在“#”之后和“:”之前有一个比竞赛指定的多的空格。尝试:

>>> print("Case #", i+1, ": ", res[i], sep="")
Case #0: 2

我建议您稍微简化一下代码,并确保使用字符串格式。如果是Python3.6及更高版本,则可以使用f-string或string.format

#你的第二个for循环
计数器=0
对于ai中的k:
如果B-k>=0:
B-=k
计数器+=1
其他:
res.append(计数器)
打破
对于范围内的i(len(res)):
#使用f字符串
print(f“Case{i+1}:{res[i]}”)
#使用字符串格式
打印(“大小写:{}”。格式(i+1,res[i]))
这个解决方案是用Python3实现的

n=int(输入())
h=[]
对于范围(n)中的i:
N、 B=map(int,input().split())
B=int(B)
d=[]
a=0
n=已排序(列表(映射(int,input().split()[:n]))
对于j in n:

如果j允许其他人为您编写正确的解决方案吗?如果是跑步比赛,我想没关系,否则就不行了。是吗?说明书上说输出的是
“Case#3:2”
,但您的输出是
“Case#3:2”
。你会不会被绊倒?还有,你能告诉我是否有办法改进这段代码吗?
>>> print("Case #", i+1, ": ", res[i], sep="")
Case #0: 2
n = int(input())
h = []
for i in range(n):
    N, B = map(int,input().split())
    B = int(B)
    d = []
    a = 0
    n = sorted(list(map(int,input().split()[:N])))
    for j in n:
        if j <= B:
            B = B-j
            a+=1
    h.append("Case #{}: {}".format(i+1,a))
for i in h:
print(i)