Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 SyntaxError无效令牌_Python_Python 3.x_Syntax - Fatal编程技术网

Python SyntaxError无效令牌

Python SyntaxError无效令牌,python,python-3.x,syntax,Python,Python 3.x,Syntax,当我试图给一个变量赋值时,我遇到了一个问题。当我尝试按以下顺序将日期设置为元组或列表时,就会出现问题:年、月、日。 >>> a = (2016,04,03) # I try to put the date into variable 'a' as a tuple. SyntaxError: invalid token >>> a = [2016,04,03] # I try to put the date into variab

当我试图给一个变量赋值时,我遇到了一个问题。当我尝试按以下顺序将日期设置为元组或列表时,就会出现问题:
年、月、日。

>>> a = (2016,04,03)         # I try to put the date into variable 'a' as a tuple.
SyntaxError: invalid token
>>> a = [2016,04,03]         # I try to put the date into variable 'a' as a list.
SyntaxError: invalid token
  • 为什么会这样

  • 我怎么修理它

  • 在Python中,token是什么意思


  • 问题是4之前的0。 如果您想存储此类信息,请尝试使用字符串

    a = (2016,04,03) --> Error
    a = (2016,4,3) --> No Error
    a = ("2016","04","03") --> No Error
    a = "2016-04-03" --> you could retrieve Year, Month and Day by splitting this string
    
    在Python2.x中,04被解释为一个八进制数。
    在Python3中,八进制数以0o4的形式写入,如下所示:

    04
    在Python2.x中是有效的整数文本。它被解释为基数为8(八进制)的数字
    09
    也将是无效的令牌,因为
    9
    不是有效的八进制数字

    在Python3中,八进制文字的形式发生了变化。仅前导零不再有效;您需要显式地指定基。例如,
    0o12
    等于
    10


    在您的情况下,您可能只想删除前导的0:
    a=(2016,4,3)
    。必要时,可以将前导零添加到元组的字符串表示中,而不是尝试显式存储它们。

    在Python 3中,数字上不允许前导零。例如:

    05
    0123
    
    不允许使用Etc,但应改为写为
    5
    123

    然而,在Python 2中,前导零表示该数字是一个八进制数(以8为基数),因此
    04
    03
    分别表示八进制中的
    4
    3
    ,但
    08
    将无效,因为它不是有效的八进制数

    在Python 3中,八进制的语法更改为:

    0o10
    0o4
    
    (以及允许使用
    0b
    0x
    前缀的其他基数,如二进制和十六进制。)

    至于您的另一个问题,Python中的令牌是Python解释器将代码分割成块的方式,以便它能够理解它(请参阅)。在这里,当标记器尝试拆分代码时,它不希望在那里看到零,因此会抛出一个错误


    我建议(与其他答案类似)删除前导零(
    (2016,4,3)
    )或使用字符串(
    (“2016”,“04”,“03”)
    )表示这些零。

    在python 2.7版中,在任何数字之前使用0时会出现错误,并且该数字在八进制系统中无效。例如,如果我们使用08或09,那么我们将遇到相同的错误“无效令牌”

    Python解释器将整个脚本划分为不同的部分,这些部分称为令牌。这里,08将被视为令牌,因此它在该数字系统中是八进制和无效的,因此发生这种错误。


    你能试着运行一个简单的语句,比如a=04,并提及结果吗?如果它只在使用tuple或list时工作并失败,那么这可能是特定python版本的问题。如果它不工作,那么您的机器配置有问题。在这种情况下,如果您使用的是较旧的版本,则可以升级python版本

    出现此错误的另一个原因可能是“SyntaxError invalid token”(与问题无关,但这是我如何得到此问题的),即python变量是否以数字开头。下面是Python中的一些其他命名约定,

    04
    对Python没有任何意义,请尝试使用
    4
    3
    ,不要使用零!是的,它可以工作,但为什么它可以工作,当kick zero
    04
    对python有意义时,它在python 2.xTry中表示八进制数,将04加上引号,例如“04”@zixrobert,您使用的python版本是什么?这在2.7中似乎很好,您应该解释出现错误的原因。这是OP提出的问题之一。这对他们没有多大帮助。是的,我不知道,但为什么在我使用04&03@zixrobert读另一个答案。它实际上解释了这一点。为什么错误不是“语法错误”,而是“无效令牌”?@brainLoop:它已经说了SyntaxError。“无效标记”是一种语法错误。@user2357112我的意思是,为什么不用“SyntaxError:invalid syntax”代替“SyntaxError:invalid token”