SyntaxError:无效的令牌python 3

时间:2019-04-06 16:26:36

标签: python python-3.x

我的Python脚本有问题。当我运行此 Python脚本

class Student:
    def __init__(self,student_name,student_id,student_phone):
        self.student_name = student_name
        self.student_id = student_id
        self.student_phone = student_phone

obj = Student("ELizaa",1253251,16165544)

print("student name",obj.student_name,"\nstudent id",obj.student_id,"\nStudent phone",obj.student_phone)

工作正常。我得到了预期的输出。 但是,当student_phone0开头(例如0124575)时,出现了错误

obj = Student("ELizaa",1253251,016165544)
                                         ^
SyntaxError: invalid token

为什么会这样?

3 个答案:

答案 0 :(得分:1)

在python3中,您无法使用016165544创建一个整数变量。在某些其他编程语言中,例如C,它是一个八进制数字。在Python中,您应该使用0o161655440O16165544

但是,您要创建的是学生证和电话号码,所以我建议您改用string

赞:

obj = Student("ELizaa", "1253251", "016165544")

答案 1 :(得分:0)

以数字0开头的数字使其成为八进制数字,但是该行为具有一些细微差别。查看此解决方案:Invalid Token when using Octal numbers

答案 2 :(得分:0)

在Python中,在任意数字前加上0需额外

  • x(十六进制),后跟十六进制数字,范围为0-9a-fA-F

  • o(八进制),后跟八进制数字0-7内的数字。

在下面看看:

>>> 0o7
7
>>> 0o71
57
>>> 0o713
459
>>>
>>> 0xa
10
>>> 0xA
10
>>> 0x67
103
>>> 
  

»如果超出范围或不使用x | o之后0

>>> 0o8
  File "<stdin>", line 1
    0o8
     ^
SyntaxError: invalid token
>>> 
>>> 08
  File "<stdin>", line 1
    08
     ^
SyntaxError: invalid token
>>> 
  

建议:如果您仍然愿意使用0并且想在手机上执行操作(以进行测试),则可以使用以下方法来更新号码。

     

在这里,我们将电话号码存储为字符串,并且每当更新电话号码时,我们都会从前面删除0,将其余部分转换为整数,添加(任何操作)将ant转换回其原始位置({ {1}}开头),我认为这很好。

0

最后,您可以用这种方式打电话(因为您已经在解决第二个问题中的问题了。)

>>> student_phone = "016165544"
>>> 
>>> # Add 3 to this
... 
>>> student_phone = "0" + str(int(student_phone.lstrip("0")) + 3)
>>> 
>>> student_phone
'016165547'
>>>