Python如何不使用time_str将时分秒参数转换为总秒数
问题原因
你写的代码的核心问题是做了完全多余且错误的类型转换操作:
- 你先把
hours*3600、minutes*60、seconds三个数值计算结果拼成元组,再对整个元组调用str(),得到的是类似"(3600, 60, 1)"这种带括号、逗号的字符串,调用split()拆分后得到的元素根本不是纯净的数字字符串,后续转int会直接报错,也没办法正常解包给hh、mm、ss三个变量。 - 整个转字符串再拆分转int的逻辑完全没有必要,入参本身就是数值类型的话,直接计算三个值的和就能得到最终的秒数。
正确实现(符合作业要求的函数签名)
def to_seconds(hours, minutes, seconds): return hours * 3600 + minutes * 60 + seconds
如果你想要兼容你看到的传入时间字符串(比如"12:34:56")的场景,也可以调整函数逻辑支持两种入参方式:
def to_seconds(*args): # 入参为3个整数:分别对应小时、分钟、秒 if len(args) == 3 and all(isinstance(i, int) for i in args): hours, minutes, seconds = args return hours * 3600 + minutes * 60 + seconds # 入参为1个时间字符串:格式要求为hh:mm:ss elif len(args) == 1 and isinstance(args[0], str): hours, minutes, seconds = map(int, args[0].split(":")) return hours * 3600 + minutes * 60 + seconds else: raise ValueError("参数错误,仅支持传入3个整数或1个hh:mm:ss格式的时间字符串")
内容的提问来源于stack exchange,提问作者Max-ine-93
相关产品推荐
相关产品推荐

