Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数字体返回-错误_Python_String_If Statement_Compiler Errors - Fatal编程技术网

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]

这是我在哪里练习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]        # 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:]