需要更优雅的解决方案来解决字符串长度问题

Need more elegant solution to even string length

这是我接到的任务:

给定一个偶数长度的字符串,return前半部分。所以字符串 "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) 的一半使用变量?

在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 功能。

您是否正在寻找这样的东西:

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]

这很含糊,因为您没有解释在提供不均匀长度的字符串时该怎么做。

在python中:

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

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

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

 def first_half(str):

     return str[:(len(str)//2)]
def first_half(str):
  calc = len(str) / 2
  if calc:
    return str[:calc]
    
  else:
    if len(str) <= 0:
      return str
    
first_half('abcdef')