当在当前时间的某个地方有一个零时,将其转换为二进制失败



我的任务是创建一个二进制时钟,将当前时间转换为二进制时间。最后,它应该是这样的:(当时间=19:58:37时(

hour    minute    second
0 1      0 1        0 0
0 0      1 0        0 1
0 0      0 0        1 1
1 1      1 0        1 1

我的代码如下:

from datetime import datetime
hour = 'datetime.now().hour'
minute = 'datetime.now().minute'
second = 'datetime.now().second'
hourc = str(hour)
minutec = str(minute)
secondc = str(second)
# cut
hour1 = hourc[:1]
hour2 = hourc[1:2]
minute1 = minutec[:1]
minute2 = minutec[1:2]
second1 = secondc[:1]
second2 = secondc[1:2]
# covert to binary
binstunde1 = '{0:04b}'.format(hour1)
binstunde2 = '{0:04b}'.format(int(hour2))
binminute1 = '{0:04b}'.format(int(minute1))
binminute2 = '{0:04b}'.format(int(minute2))
binsekunde1 = '{0:04b}'.format(int(second1))
binsekunde2 = '{0:04b}'.format(int(second2))

我现在的问题是,当当前时间的某个地方为零时,我会收到一条错误消息。例如:当当前时间是07:52:19时,我收到以下错误消息:

binstunde1 = '{0:04b}'.format(int(hour1)) 
ValueError: invalid literal for int() with base 10: 'd'

我试着避免使用整数,而是使用字符串,但后来我收到了以下错误消息:

binstunde1 = '{0:04b}'.format(hour1)
ValueError: Unknown format code 'b' for object of type 'str'

我的第二个问题是,我不知道如何像我的例子中那样垂直地并排打印输出。

您必须更正以下代码:

更新根据您的评论:

from datetime import datetime
hour = str(datetime.now().hour)
if len(hour)==1:
hour="0"+hour
minute = str(datetime.now().minute)
if len(minute)==1:
minute="0"+minute
second = str(datetime.now().second)
if len(second)==1:
second="0"+second

# cut
hour1 = hour[:1]
hour2 = hour[1:2]
minute1 = minute[:1]
minute2 = minute[1:2]
second1 = second[:1]
second2 = second[1:2]
# covert to binary
binstunde1 = '{0:04b}'.format(int(hour1))
binstunde2 = '{0:04b}'.format(int(hour2))
binminute1 = '{0:04b}'.format(int(minute1))
binminute2 = '{0:04b}'.format(int(minute2))
binsekunde1 = '{0:04b}'.format(int(second1))
binsekunde2 = '{0:04b}'.format(int(second2))
print('hour'+'t'+'minute'+'t'+'second')
print(binstunde1+'t'+binminute1+'t'+binsekunde1)
print(binstunde2+'t'+binminute2+'t'+binsekunde2)

结果:

hour    minute  second
0000    0100    0101
1000    0100    0011

初始答案:

from datetime import datetime
from itertools import zip_longest

hour = datetime.now().hour
minute = datetime.now().minute
second = datetime.now().second
print(hour,minute,second)
# covert to binary
binstunde1 = '{0:08b}'.format(hour)
binminute = '{0:08b}'.format(int(minute))
binsekunde = '{0:08b}'.format(int(second))
print('hour    '+'t'+'minute  '+'t'+'second')
print(binstunde1+'t'+binminute+'t'+binsekunde)

结果:

hour            minute          second
00001000        00001101        00000011

最新更新