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



这是我得到的任务:

给定长度相等的字符串,返回前半部分。所以字符串"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中:

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

在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函数。

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

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

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

你在寻找这样的东西吗:

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]

这是相当模糊的,因为您还没有解释当提供长度不均匀的字符串时该怎么办。

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

最新更新