Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 时间转换器不工作,给我;无法将字符串转换为float";_Python_Matplotlib - Fatal编程技术网

Python 时间转换器不工作,给我;无法将字符串转换为float";

Python 时间转换器不工作,给我;无法将字符串转换为float";,python,matplotlib,Python,Matplotlib,我试图将时间从小时、分钟、秒转换为秒,但我不明白为什么会出现错误“无法将字符串转换为浮点” tmp1[1]是字符串tmp1的第二个字符。如果是:或其他非数字,则无法将其转换为浮点 如果您的输入是2:34.56,tmp[1]在运行时等于: seconds = 60.0*60.0*float(tmp2[0])+60.0*float(tmp2[1])+float(tmp1[1]) 只有当len(tmp2)>2条件不运行其他条件时,您才可能打算运行该条件。一种解决方案是使用等于而不是大于 if len

我试图将时间从小时、分钟、秒转换为秒,但我不明白为什么会出现错误“无法将字符串转换为浮点”


tmp1[1]
是字符串
tmp1
的第二个字符。如果是
或其他非数字,则无法将其转换为浮点

如果您的输入是
2:34.56
tmp[1]
在运行时等于

seconds = 60.0*60.0*float(tmp2[0])+60.0*float(tmp2[1])+float(tmp1[1])
只有当
len(tmp2)>2条件不运行其他条件时,您才可能打算运行该条件。一种解决方案是使用等于而不是大于

if len(tmp2) == 2:
    seconds = 60.0*60.0*float(tmp2[0])+60.0*float(tmp2[1])+float(tmp1[1])    
elif len(tmp2) == 3:
    seconds = 60.0*60.0*float(tmp2[0])+60.0*float(tmp2[1])+float(tmp2[2])

另一种选择是交换条件(正如@Błotosmętek在其回答中所做的那样)。无论哪种方式,您都应该对第二个条件使用
elif
(else if)而不是
if
,这样,如果第一个条件已运行,第二个条件将不会运行。

如果第一个条件已执行,请不要尝试第二种形式:

if len(tmp2)>2:
    seconds = 60.0*60.0*float(tmp2[0])+60.0*float(tmp2[1])+float(tmp2[2])
elif len(tmp2)>1:
    seconds = 60.0*60.0*float(tmp2[0])+60.0*float(tmp2[1])+float(tmp1[1])

t
的值是多少?@Błotosmętek t是我输入它的时间,时间格式为2:34:56或2:34.56。依赖数据的问题应该包括数据的最小示例。-什么是
t
?请阅读。如果您正在使用一个具有调试功能的IDE,那么现在是开始学习如何使用这些工具的好时机。有时,生成中间值而不是一条长线会有所帮助,因为您可以打印这些中间值,这有助于故障排除。
t
是否可以同时具有两种形式-
'hh:mm:ss'
'hh:mm.ddd'
?其中
'mm.ddd'
是分数分钟?如何修复它?
if len(tmp2)>2:
    seconds = 60.0*60.0*float(tmp2[0])+60.0*float(tmp2[1])+float(tmp2[2])
elif len(tmp2)>1:
    seconds = 60.0*60.0*float(tmp2[0])+60.0*float(tmp2[1])+float(tmp1[1])