我的任务是创建一个二进制时钟,将当前时间转换为二进制时间。最后,它应该是这样的:(当时间=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