在python中,将秒转化为时分秒,以字符形式返回,为什么明明转换成05:23:19了,但是数组中只显示05:23呢,不显示秒
后来发现,无论怎样输出,反正只能显示4个字符
timetable_best有问题,如果timetable_best是正常的二维数组,那么是可以的。由于没有给出更多的代码,不知道题主的timetable_best具体情况,建议不使用np.array处理,或者使用后将其转化为list,参考:
arr = np.array([1, 2, 3])
list1 = arr.tolist()
timetable_best = [['1', '2', '3', '4', '3436', '3445'],
['2', '2', '2', '2', '1213', '3436'],
['3', '4', '5', '6', '1344', '2246']]
def transform(x):
m, s = divmod(eval(x), 60)
h, m = divmod(m, 60)
hour = h+4
print("%02d:%02d:%02d" % (hour, m,s))
return ("%02d:%02d:%02d" % (hour, m,s))
for i in range(len(timetable_best)):
timetable_best[i][4] = transform(timetable_best[i][4])
timetable_best[i][5] = transform(timetable_best[i][5])
print(timetable_best)
注意到输出时,np.array数据之间是没有逗号分隔的,list是有逗号分割的。
b = 0
for i in range(5):
while 1:
try:
a = eval(input("请输入第{}门课的成绩:\n".format(i+1)))
if a>=0 and a<=100:
b = b+a
break
else:
#print("请输入第{}门课的成绩:\n".format(i+1))
continue
except NameError:
continue
except SyntaxError:
continue
except TypeError:
continue
b = b/5
print("你的平均成绩为:{:.2f}!".format(b))
将秒数转换为时分秒格式的字符串可以使用以下代码:
def sec_to_time_str(seconds):
"""
将秒数转换为时分秒字符串
参数:
seconds: 表示秒数的整数
返回:
表示时分秒的字符串,格式为 "hh:mm:ss"
"""
m, s = divmod(seconds, 60)
h, m = divmod(m, 60)
time_str = "{:02d}:{:02d}:{:02d}".format(h, m, s)
return time_str
这个函数将秒数先转换成小时数、分钟数和剩余的秒数,然后格式化输出为 "hh:mm:ss" 的形式,最后返回这个字符串。
为了限制字符数组的长度以确保显示完整时间信息,我们可以根据最长的时间单位选择相应的位数进行显示。例如,对于 7087 秒,小时数为 1,所以选用"hh:mm:ss"表示时分秒,同时我们只需要保留两位小时数和两位分钟数,因为秒数已经包含在时分里面了。可以使用下面的代码:
def sec_to_time_str(seconds):
"""
将秒数转换为时分秒字符串,限制字符数组的长度以确保显示完整时间信息
参数:
seconds: 表示秒数的整数
返回:
表示时分秒的字符串,格式为 "hh:mm:ss"
"""
m, s = divmod(seconds, 60)
h, m = divmod(m, 60)
if h > 99:
time_str = "{:03d}:{:02d}".format(h, m)
else:
time_str = "{:02d}:{:02d}:{:02d}".format(h, m, s)
return time_str
这个函数会先判断小时数是否超过99,如果超过,则只显示小时数和分钟数,以保证显示完整信息;否则按照"hh:mm:ss"的格式输出。
最后给出一个例子,在Python中将秒数 7087 转换为字符格式 "01:58:07",可以这样调用:
time_str = sec_to_time_str(7087)
print(time_str) # 输出: "01:58:07"