学习Python,尝试获取字符串的前两个字母和最后两个字母

1 投票
3 回答
5897 浏览
提问于 2025-04-15 20:39

这是我的代码:

# 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

3 个回答

4

你现在遇到的问题是用错了写法,应该是 s[len(s)-1],而不是 s[len(s-1)]

你也可以把代码简化成 s[:2] + s[-2:],这样写会更简单。

4

括号放错地方了:

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:]
2

最后一部分有个错误:

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

你可以考虑用更符合Python风格的方式来重写它:

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

撰写回答