2010-03-21 4 views
1

Voici mon code:Learning Python et essayer d'obtenir deux premières lettres et deux lettres d'une chaîne

# 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 

Malheureusement, mon programme ne fonctionne pas. :(Je suis sûr que je suis sur quelque chose depuis que je suis un débutant avec Python

est ici l'erreur.

> 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' 

Merci pour l'aide les gars. D

+1

'" si la longueur de la chaîne est inférieure à 2, le retour à la place, la chaîne vide. "', puis dans votre code, vous avez 'if len (s) <= 2: return" "'. remarquez la différence? (<2 vs <= 2) – Ponkadoodle

Répondre

2

Il y a une erreur dans la dernière partie:

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

Vous pouvez penser à la réécriture d'une manière plus pythonique:

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

parenthèses Misplaced:

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

Soit dit en passant:

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

ou

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

Il s'avère que cela fonctionne également. retourne s [0] + s [1] + s [-2] + s [-1] –

4

Votre problème immédiat est s[len(s-1)] au lieu de s[len(s)-1].

Vous pouvez probablement également simplifier à s[:2] + s[-2:].

Questions connexes