Python 以0开头的一小时如何int()?

Python 以0开头的一小时如何int()?,python,datetime,Python,Datetime,我正在使用一个时间计算器,每件事都可以,但当实际时间在小时或分钟前有一个0时(如09:08),它不能正确地使用int()我如何使它工作?在这种情况下,我已经尝试使用IFs来切断线,但效果不太好 [...] hour = int(input('hour') minute = int(input('minute') def chronus(): MB = minute HB1 = hour HB = HB1 * 60 now = datetime.datetime.

我正在使用一个时间计算器,每件事都可以,但当实际时间在小时或分钟前有一个0时(如09:08),它不能正确地使用int()我如何使它工作?在这种情况下,我已经尝试使用IFs来切断线,但效果不太好

[...]
hour = int(input('hour')
minute = int(input('minute')

def chronus():
    MB = minute
    HB1 = hour
    HB = HB1 * 60
    now = datetime.datetime.now().strftime('%H:%M')
    own = str(now)
    nwo = own.split(':')
    ho,min = nwo[0],nwo[1]
    HA1 = int(xa,0)#here show the problem: invalid literal for int() with base 0:'09'<- the hour I 
                     did the code
    MA = int(xo,0)
    HA = HA1 * 60
    print(HA)
    print(MA)
    M1 =(HA + MA)
    M2 =(MB + HB)

    print(M1/60)
    print(M2/60)
    M3 = M2 - M1
    print(M3)
    print(M1)
    if M3 < 0:
        M5 = M3 * -1
        M4 = (1440 - M1) + M5
    print(M4)
[...]
[…]
小时=整数(输入(‘小时’)
分钟=整数(输入(“分钟”)
def chronus():
MB=分钟
HB1=小时
HB=HB1*60
now=datetime.datetime.now().strftime(“%H:%M”)
own=str(现在)
nwo=own.split(“:”)
ho,min=nwo[0],nwo[1]
HA1=int(xa,0)#这里显示问题:基为0的int()的文本无效:“09”
模块
内置
中有关类
int
的帮助:

class int(对象)

int([x])
->integer

int(x,基数=10)
->integer

将数字或字符串转换为整数,如果没有参数,则返回
0

如果
x
是一个数字,则为浮点返回
x.\uuuu int\uuuu()

数字,这将向零截断

如果
x
不是一个数字,或者如果给定了
base
,则
x
必须是一个
str
ing

字节
,或
字节数组
实例,表示

给定
base
。文本前面可以有
'+'
'-'
并被包围

按空格。基本
默认为10。有效的基本
0
2
-
36

Base 0
表示将字符串中的
Base
解释为 整数文字。

换句话说,字符串
'09'
被解析为Python代码中的文本。事实上:

>>> x = 09
  File "<stdin>", line 1
    x = 09
         ^
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers
但是,您首先编写此代码的原因非常不清楚。您的代码没有显示
xa
的值来自何处,而且似乎您已经有了必要的
hour
minute
值-但是如果您需要从表示时间的字符串中提取它们,这就是
strtime
代表(请注意如何使用
strftime
创建字符串?
f
代表
format
,而
p
代表
parse
),正如其他人指出的,如果您真正想做的是对时间值进行算术运算,这就是
timedelta
类存在的原因

模块
内置
中有关类
int
的帮助:

class int(对象)

int([x])
->integer

int(x,基数=10)
->integer

将数字或字符串转换为整数,如果没有参数,则返回
0

如果
x
是一个数字,则为浮点返回
x.\uuuu int\uuuu()

数字,这将向零截断

如果
x
不是一个数字,或者如果给定了
base
,则
x
必须是一个
str
ing

字节
,或
字节数组
实例,表示

给定
base
。文本前面可以有
'+'
'-'
并被包围

按空格。基本
默认为10。有效的基本
0
2
-
36

Base 0
表示将字符串中的
Base
解释为 整数文字。

换句话说,字符串
'09'
被解析为Python代码中的文本。事实上:

>>> x = 09
  File "<stdin>", line 1
    x = 09
         ^
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers

但是,您首先编写此代码的原因非常不清楚。您的代码没有显示
xa
的值来自何处,而且似乎您已经有了必要的
hour
minute
值-但是如果您需要从表示时间的字符串中提取它们,这就是
strtime
表示(注意如何使用
strftime
创建字符串?
f
表示
format
p
表示
parse
)正如其他人所指出的,如果您真正想做的是对时间值进行算术运算,这就是为什么存在
timedelta
类。

为什么您要将
0
的基数传递给
int
…直接使用
int
,它默认为基数10…或者如果您真的想要,显式地将基数10传递给它?匹配你的括号可能会有帮助。为什么
int(xa,0)
?为什么要输入0?第二个参数指定基数,它与
xa
可以以零开头无关。为什么要首先解析
datetime
值的字符串表示形式?只需直接访问
now.hour
now.minute
now=datetime.datetime.now()HA1=now.hour;MA=now.minute
@chepner,然后查看其余的位-看起来它可能被
timedelta
可以做的事情所覆盖…为什么您试图将
0
的基数传递给
int
…直接使用
int
,它默认为基数10…或者显式地将基数10传递给
int
如果你真的想,它可以吗?匹配所有括号可能会有帮助。为什么
int(xa,0)
?为什么要输入0?第二个参数指定基数,它与
xa
可以以零开头无关。为什么要首先解析
datetime
值的字符串表示形式?只需直接访问
now.hour
now.minute
now=datetime.datetime.now()HA1=now.hour;MA=now.minute
@chepner,然后查看其余的位-看起来它可能被
timedelta
所能做的事情所覆盖…真的非常感谢它让我停了下来,但我想使用
>>> x = 09
  File "<stdin>", line 1
    x = 09
         ^
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers
int('09') # evaluates to 9