Python 函数字体返回-错误
这是我在哪里练习Python新技能的问题。所以我想要的是给定一个字符串,返回一个新字符串,其中交换了第一个和最后一个字符(第一个字符现在是最后一个,反之亦然) 这是我的密码:Python 函数字体返回-错误,python,string,if-statement,compiler-errors,Python,String,If Statement,Compiler Errors,这是我在哪里练习Python新技能的问题。所以我想要的是给定一个字符串,返回一个新字符串,其中交换了第一个和最后一个字符(第一个字符现在是最后一个,反之亦然) 这是我的密码: def front_back(str): if len(str)==1: #if str is 'a', it should return 'a' return str else: # len(str) is greater than one first = str[0]
def front_back(str):
if len(str)==1: #if str is 'a', it should return 'a'
return str
else: # len(str) is greater than one
first = str[0] # first character
last = str[-1] # last charater
new = last + str[1:-1] + first # new str, where first and last are exchanged
return new
当我提交答案时,CodingBat说:
“汇编问题:
错误:字符串索引超出范围“您应该为0大小的字符串添加检查:
def front_back(str):
if str:
if len(str)==1: #if str is 'a', it should return 'a'
return str
else: # len(str) is greater than one
first = str[0] # first character
last = str[-1] # last charater
new = last + str[1:-1] + first # new str, where first and last are exchanged
return new
保持简单愚蠢:
def前/后(str):
如果len(str)那么在Python中使用内置名称(如str
)就不是好的Python风格或做法。希望编码bat能在某个时候改变这一点:
您可以仅使用如下切片来解决此问题:
def front_back(s):
return s[-1:] + (s[:-1] + s[0:1])[1:]
vicaashow,您使用的是什么Python版本?您的代码对我来说是开箱即用的(在Python 3.3中),除非向它传递一个空字符串。@Sg'te'gmuj我使用的是Python 2.7.6。现在它可以工作,因为ndpu校正,除了当传递一个空字符串给它时。是的,看起来他忘记了一个步骤,不过没关系。还有,请注意:你的英语很好,如果不是很完美的话。你这么早就开始了,这真的很酷,而且看起来你对它有很好的理解(你和我在同一年龄开始)。坚持下去。还要注意的是,亲吻并不意味着粗鲁或贬损,它只是一种编程哲学。我理解它。像你这样的人激励我不断解决问题和编程。谢谢:)@vicaashow如果str:。。to if not str:如果字符串为空,则需要返回某些内容,则返回“SOMETHING”
def front_back(s):
return s[-1:] + (s[:-1] + s[0:1])[1:]