尝试操作字符串时在 codewars 上收到退出代码错误
Receiving an exit code error on codewars when trying to manipulate a string
请尽量不要剧透。
我正在研究 Kata 感叹号系列 #1:从字符串末尾删除感叹号 并且一直收到 IndexError:字符串索引尽管我的代码执行正确,但超出范围。
该程序的目的是删除字符串末尾的感叹号(如果存在)。
def remove(s):
length = len(s)
if s[len(s)-1] == '!':
new = slice(0,-1,)
return(s[new])
else:
return(s)
错误出现在:
if s[len(s)-1] == '!':
如果有人能解释为什么我会收到此错误,将不胜感激!
如果您输入空字符串,您的代码会崩溃(您将收到 IndexError。)
此外,它不是很pythonic,你有一个未使用的变量。例如,您不需要 return
之后的括号,而 [-1]
可以让您直接访问字符串的最后一个元素。这是一种写法:
def remove(s):
if s and s[-1] == '!':
return s[:-1]
return s
if s
将检查输入字符串是否不同于 ''
以确保输入不是空字符串,然后检查 '!'
是否在其中。
您也可以使用 str.endswith()
,正如用户 Boris 指出的那样(我之前并不知道。)
编辑:如果您需要我删除代码以避免任何剧透,我很乐意,但您的 post 本身包含对模型解决方案的尝试。
试试这个
def remove(s):
return s[:-1] if s.endswith('!') else s
如果您使用空字符串调用您的函数,您将收到该错误,即:
def remove(s):
length = len(s)
if s[len(s)-1] == '!':
new = slice(0,-1,)
return(s[new])
else:
return(s)
remove("")
结果:
Traceback (most recent call last):
File "/Users/steve/Development/Inlet/inletfetch_if2/test/behave/features/Blah.py", line 9, in <module>
remove("")
File "/Users/steve/Development/Inlet/inletfetch_if2/test/behave/features/Blah.py", line 3, in remove
if s[len(s)-1] == '!':
IndexError: string index out of range
出现这种情况是因为您要查找字符串中的最后一个字符,而由于字符串中没有字符,因此字符串中没有最后一个字符。
请尽量不要剧透。
我正在研究 Kata 感叹号系列 #1:从字符串末尾删除感叹号 并且一直收到 IndexError:字符串索引尽管我的代码执行正确,但超出范围。
该程序的目的是删除字符串末尾的感叹号(如果存在)。
def remove(s):
length = len(s)
if s[len(s)-1] == '!':
new = slice(0,-1,)
return(s[new])
else:
return(s)
错误出现在:
if s[len(s)-1] == '!':
如果有人能解释为什么我会收到此错误,将不胜感激!
如果您输入空字符串,您的代码会崩溃(您将收到 IndexError。)
此外,它不是很pythonic,你有一个未使用的变量。例如,您不需要 return
之后的括号,而 [-1]
可以让您直接访问字符串的最后一个元素。这是一种写法:
def remove(s):
if s and s[-1] == '!':
return s[:-1]
return s
if s
将检查输入字符串是否不同于 ''
以确保输入不是空字符串,然后检查 '!'
是否在其中。
您也可以使用 str.endswith()
,正如用户 Boris 指出的那样(我之前并不知道。)
编辑:如果您需要我删除代码以避免任何剧透,我很乐意,但您的 post 本身包含对模型解决方案的尝试。
试试这个
def remove(s):
return s[:-1] if s.endswith('!') else s
如果您使用空字符串调用您的函数,您将收到该错误,即:
def remove(s):
length = len(s)
if s[len(s)-1] == '!':
new = slice(0,-1,)
return(s[new])
else:
return(s)
remove("")
结果:
Traceback (most recent call last):
File "/Users/steve/Development/Inlet/inletfetch_if2/test/behave/features/Blah.py", line 9, in <module>
remove("")
File "/Users/steve/Development/Inlet/inletfetch_if2/test/behave/features/Blah.py", line 3, in remove
if s[len(s)-1] == '!':
IndexError: string index out of range
出现这种情况是因为您要查找字符串中的最后一个字符,而由于字符串中没有字符,因此字符串中没有最后一个字符。