2016-11-21 80 views
-1

现在我正在做一个非常小的问题HackRank关于字符串操作,它很容易就像家庭作业转储一样。问题是将一个给定的字符串转换为大写,他们提到他们的问题就像下面一样字符串大写python

给你一个字符串。你的任务是利用S的每个字

输入格式

包含字符串输入的单次线,S.

约束

0< len(s) <1000 

字符串由字母数字字符和空间。 输出格式

采样输入

hello world 

样本输出

Hello World 

我在这里做我从蟒蛇写了两行脚本,我提出,但 他们说,这是一个错误的答案但我不明白为什么我的代码是按照

l=list(map(str.capitalize,input().strip(' ').split())) 
print(' '.join(l)) 

任何人都可以告诉我我的代码有什么问题 (它在Python 3的测试用例1/3/4/5上失败,所以)

+0

请人民**阅读问题**运算不是要求“如何”,也不是“更好的方式”,他询问**为什么**他的代码无法通过HackRank进行测试! –

回答

0

如果您没有将分隔符指定为str.split(),则“任何空格字符串都是分隔符,并且空字符串将从结果中删除。请注意,这里的“空白”包括制表符,换行符等。

问题没有明确指出(没有关于“词”的含义的定义),我们不知道它们用于测试用例,但我假设它们有一些字符串或换行符等。总之:显式地指定" "作为分隔符,使测试通过!

# Python 2 
s = raw_input() 
print " ".join(x.capitalize() for x in s.strip().split(" ")) 

# Python 3 
s = input() 
print(" ".join(x.capitalize() for x in s.strip().split(" "))) 
+0

谢谢你先生。最后我的代码也工作了。谢谢你先生! 'l = list(map(str.capitalize,input()。strip('').split(''))) print(''.join(l))' –

+0

现在您知道代码失败的原因,你可能想要阅读帕特里克霍的答案......虽然没有回答你的问题,但仍然是将字符串中的所有单词进行大写处理的pythonic方法。 –

1

使用str.title

>>>'aba aba'.title() 
'Aba Aba' 
+0

这是如何回答这个问题的? –

+0

它不,但它解决了最初的问题 – Ravenix

+0

@brunodesthuilliers http://meta.stackexchange.com/a/66378 –

-1

我相信错误是input()。如果HackRank使用Python 2.7,它将尝试评估输入,而不是返回一个字符串。因此,输入hello world将尝试评估这个字符串,这是无稽之谈。如果您尝试使用raw_input(),则应该解决此问题。

+0

我刚刚在HackRank上尝试过这个问题,并且您确实有Python 2或Python 3的选择。我认为OP确实将它作为Python 2提交。 –

+0

不,我用python 3。我在HackRank上复查了它 –

+0

好吧,它在测试用例1/3/4/5与Python 3上失败,所以'输入()'不是罪魁祸首。 –