需要更优雅的解决方案甚至字符串长度

时间:2015-07-05 15:18:43

标签: python string string-length

这是我得到的任务:

给定一串均匀长度,返回上半场。所以字符串“WooHoo”产生“Woo”。

first_half('WooHoo') → 'Woo'
first_half('HelloThere') → 'Hello'
first_half('abcdef') → 'abc'

这是我的解决方案:

def first_half(str):
    if len(str) % 2 == 0:
        b = len(str) // 2
        return str[:b]

我的问题是:

你能用Python向我展示一个更简单的解决方案吗?这个解决方案不要求我使用一个变量作为字符串长度的一半(b)?

5 个答案:

答案 0 :(得分:2)

在python中:

str = "WooHoo"   
str = str[:-len(str)/2]

答案 1 :(得分:1)

在python中:

return str[0: int(len( str )/2)];

这里无需检查它是偶数还是奇数。 len( str )/2将围绕自己。

在问题重新编辑之前回答:

在Javascript中:

 var str = "WooHoo";
 if (str.length%2 == 0) {
     console.log(str.substr(0, str.length / 2));
    }

答案是Woo

或者只是使用:

str.substr(0, str.length / 2);

无需检查if (str.length%2 == 0)

其他语言也具有length属性和substring功能。

答案 2 :(得分:1)

你在寻找这样的东西:

def first_half(str):
    if len(str) % 2 == 0:
        return str[:len(str) // 2]

或者可能是这样的?

def first_half(str):
    return str[:len(str) // 2 if len(str) % 2 == 0 else 0]

这是非常模糊的,因为你没有解释当提供不均匀长度的字符串时该怎么做。

答案 3 :(得分:1)

这是最简单直接的解决方案。

一直运行到字符串的中间,这里//用于确认除以奇数长度后,除数后我只会得到int值。

 def first_half(str):

     return str[:(len(str)//2)]

答案 4 :(得分:0)

def first_half(str): calc = len(str)/ 2 如果计算: 返回str [:calc]

其他: 如果len(str)<= 0: 返回str

first_half('abcdef')