2010-03-21 2 views
1

Вот мой код:Learning Python и пытается получить первые две буквы и две последние буквы строки

# B. both_ends 
# Given a string s, return a string made of the first 2 
# and the last 2 chars of the original string, 
# so 'spring' yields 'spng'. However, if the string length 
# is less than 2, return instead the empty string. 
def both_ends(s): 
    if len(s) <= 2: 
    return "" 
    else: 
    return s[0] + s[1] + s[len(s)-2] + s[len(s-1)] 
    # +++your code here+++ 
    return 

К сожалению, моя программа не запускается. :(Я уверен, что я что-то с видом, так как я новичок с Python

Вот ошибка:.

> Traceback (most recent call last): 
    File "C:\Users\Sergio\Desktop\google-python-exercises\google-python-exercises\basic\string1.py", line 120, in <module> 
    main() 
    File "C:\Users\Sergio\Desktop\google-python-exercises\google-python-exercises\basic\string1.py", line 97, in main 
    test(both_ends('spring'), 'spng') 
    File "C:\Users\Sergio\Desktop\google-python-exercises\google-python-exercises\basic\string1.py", line 44, in both_ends 
    return s[0] + s[1] + s[len(s)-2] + s[len(s-1)] 
TypeError: unsupported operand type(s) for -: 'str' and 'int' 

Спасибо за помощь, ребята.: D

+1

'", если длина строки меньше, чем 2, возвращение вместо пустой строки. ", а затем в вашем коде у вас есть' if len (s) <= 2: return "" '. обратите внимание на разницу? (<2 vs <= 2) – Ponkadoodle

ответ

2

Существует ошибка в последней части:

return s[0] + s[1] + s[len(s)-2] + s[len(s)-1] 

Вы можете думать о перезаписи его в более вещий образом:

return s[0] + s[1] + s[-2] + s[-1] 
4

Misplaced скобка:

return s[0] + s[1] + s[len(s)-2] + s[len(s)-1] 

Кстати:

return s[0] + s[1] + s[-2] + s[-1] 

или

return s[:2] + s[-2:] 
+0

Оказывается, это работает. return s [0] + s [1] + s [-2] + s [-1] – 2010-03-21 00:23:41

4

Ваша ближайшая задача s[len(s-1)] вместо s[len(s)-1].

Возможно, вы также можете упростить до s[:2] + s[-2:].

Смежные вопросы