我的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_phone
以0
开头(例如0124575
)时,出现了错误:
obj = Student("ELizaa",1253251,016165544)
^
SyntaxError: invalid token
为什么会这样?
答案 0 :(得分:1)
在python3中,您无法使用016165544
创建一个整数变量。在某些其他编程语言中,例如C
,它是一个八进制数字。在Python中,您应该使用0o16165544
或0O16165544
。
但是,您要创建的是学生证和电话号码,所以我建议您改用string
。
赞:
obj = Student("ELizaa", "1253251", "016165544")
答案 1 :(得分:0)
以数字0开头的数字使其成为八进制数字,但是该行为具有一些细微差别。查看此解决方案:Invalid Token when using Octal numbers
答案 2 :(得分:0)
在Python中,在任意数字前加上0
需额外
x
(十六进制),后跟十六进制数字,范围为0-9
或a-f
或A-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'
>>>