当前时间某处有零时,将其转换为二进制失败
When there is a zero somewhere in the current time, converting it to binary fails
我的任务是创建一个二进制时钟,将当前时间转换为二进制。最后,它应该是这样的:
(当时间 = 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
我的任务是创建一个二进制时钟,将当前时间转换为二进制。最后,它应该是这样的: (当时间 = 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