新手·ing 发表于 2017-9-14 21:33:04

Python:每日一题(开胃菜)

请编写一个函数,它可以接受一个函数为字符串。
如此字符串的长度(len)为偶数,
返回此字符串的中间两个字符;
如此字符串的长度(len)为基数,
则返回中间的一个字符。

Example:
Kata.getMiddle("test") should return "es"

Kata.getMiddle("testing") should return "t"

Kata.getMiddle("middle") should return "dd"

Kata.getMiddle("A") should return "A"

大家好好写,共同提高Python水平。

楼主解法(提高是自己的事,智慧的人会先思考再看答案)
**** Hidden Message *****

gunjang 发表于 2017-9-14 23:14:23

def getMiddle(s):
        return s[(len(s)+1)//2-1: (len(s))//2+1]

jerryxjr1220 发表于 2017-9-14 23:47:08

换一种思路
def getMiddle(s):
        while len(s)>2:
                s = s
        return s

醉酒青牛 发表于 2017-9-15 13:38:58

本帖最后由 醉酒青牛 于 2017-9-15 13:41 编辑

class Kata:
   def getMiddle(self,str1):
      len1 = len(str1)
      if len1%2 == 0:
         str2 = str1
         return str2
      else:
         return str1       
>>> kata = Kata()
>>> kata.getMiddle('test')
'es'
>>> kata.getMiddle('testing')
't'
>>>

bush牛 发表于 2017-9-14 22:13:13

本帖最后由 bush牛 于 2017-9-14 22:19 编辑

def middle(List):
    d = len(List) / 2
    if d.is_integer():
      print(List)
    else:
      print(List)

python2 和python3 的除法有区别。电脑没装2, 这个测试不知道是否正确。

upc-xiaoxiao 发表于 2017-9-14 22:36:07

厉害了

wc365 发表于 2017-9-14 23:29:38

def getMiddle(p):
    if len(p) % 2 == 0:
      return p[(len(p)//2 - 1):(len(p)//2 + 1)]
    else:
      return p

suloman 发表于 2017-9-14 23:36:20

def get(a):
    b=len(a)/2
    if b==float(int(b)):
      return(a)
    else:
      return(a)
      
print(get("fuhgjb"))
print(get("huwfg"))

suloman 发表于 2017-9-14 23:37:27

不减0.5也行。。。

chunchun2017 发表于 2017-9-15 10:57:28

本帖最后由 chunchun2017 于 2017-9-15 10:59 编辑

def getmid(s):
    print(s if (len(s))%2!=0 else s+s)

2740710202 发表于 2017-9-15 11:17:00

baicel21314 发表于 2017-9-15 12:30:02

看看帖子里藏了啥好东西~~~

vivishow 发表于 2017-9-15 12:41:22

def get_middle(x):
m = len(x) // 2
if len(x) % 2 == 0:
    return x
else:
    return x

baicel21314 发表于 2017-9-15 13:15:54

本帖最后由 baicel21314 于 2017-9-15 13:19 编辑

def get_middle(input_str):
    if len(input_str)%2==0:
      output_str=input_str+input_str
    else:
      output_str = input_str
    return output_str

balalalalla 发表于 2017-9-15 15:01:12

{:10_277:}

Teagle 发表于 2017-9-15 15:01:43

def getMiddle(string):
    return {0:string,1:string}

{:5_90:} {:5_90:}
一天只能上传三个图片是什么鬼
{:5_104:} {:5_104:}

Teagle 发表于 2017-9-15 15:05:55

为奇数的时候,直接取单个数值喽
return s
{:5_92:}{:5_92:}

懒惰有只猫 发表于 2017-9-15 15:18:58

def getMiddle(context):
    strLen = len(context)
    if strLen % 2 == 0:
      return context
    else:
      return context

新手·ing 发表于 2017-9-15 18:06:33

——————华丽分割线——————

solomonxian 发表于 2017-9-15 18:26:05

len/2 就是0或者余1两种结果
def fun(s):
    return s
页: [1] 2 3 4
查看完整版本: Python:每日一题(开胃菜)