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