一个非常短的代码,但在python中语法无效?

时间:2014-09-30 03:15:21

标签: python syntax

def decode(string):
    L=float(string[0])
    if (L==4):
        messageFrom4=[[string[0::L], string[1::L], string[2::L], string[3::L]]
        return messageFrom4
    if L!=4:
        return messageFrom4[0:L]

第二个返回突出显示,“无效语法错误”是它不会运行的问题。

3 个答案:

答案 0 :(得分:3)

这一行还有一个额外的[会造成麻烦:

messageFrom4=[[string[0::L], string[1::L], string[2::L], string[3::L]]
              ^
             here

尝试这样做,并注意L必须是一个整数,如果它将被用作切片索引,如果条件相互排斥,那么最好使用else

def decode(string):
    L=int(string[0])
    if L==4:
        messageFrom4=[string[0::L], string[1::L], string[2::L], string[3::L]]
        return messageFrom4
    else:
        return string[0:L]

答案 1 :(得分:2)

在这一行

  

messageFrom4 = [[string [0 :: L],string [1 :: L],string [2 :: L],string [3 :: L]]

你打开两个括号,只关闭其中一个。

答案 2 :(得分:1)

messageFrom4仅在L==4时声明。

要解决此问题,只需将messageFrom4声明为当L不等于4时