def draw_constellation_file(file_name):
x = open(file_name)
y = x.read()
y = y.splitlines()
for i in range(0, len(y)):
a = y[i]
b = a.split(',')
aa = str(get_line_for_star_name(b[0]))
cc = get_star_point_from_line(aa)
return aa
get_star_point_from_line
看起来像这样:
def get_star_point_from_line(stardata):
stardata = stardata.split(',')
x = float(stardata[0])
y = float(stardata[1])
return [x, y]
输出:
ValueError:无法将字符串转换为float:无
事情就是这样:stardata.split
似乎没有分裂。我确定它与None
有关。
有什么想法吗?
答案 0 :(得分:-1)
“无”倾向于表示没有任何内容传递给相关函数。您应该确保传入的数据符合您的预期。
在这种情况下,stardata[0]
或stardata[1]
可能不存在。话虽如此,您需要检查行号以了解哪个是问题。
答案 1 :(得分:-1)
此代码似乎有错误
def get_star_point_from_line(stardata):
stardata = stardata.split(',')
x = float(stardata[0]) //passing string value in float will cause an error
y = float(stardata[1])
return [x, y]
我认为参数stardata
中的数据包含字符串值。
答案 2 :(得分:-1)
你正在通过aa = str(get_line_for_star_name(b[0]))
进入get_star_point_from_line(stardata):
并显示只传递1个索引:b [0]。
如果b [0]不是一个完整列表,只有一个字符串,而不是指定x = float(stardata[0])
和y = float(stardata[1])
,那么你试图将这些变量分配给不存在的索引。
如果b [0]是一个完整的字符串,它可能会以你想象的方式分裂。我会尝试使用split()
代替split(',')
然后使用rstrip(',')
来分割它以删除逗号。
如果不知道最初做aa = str(get_line_for_star_name(b[0]))
时列表的内容,很难确定问题。顺便说一句,将其转换为字符串,然后您尝试将其重新转换为浮点数,我认为这有点奇怪。
答案 3 :(得分:-1)
在draw_constellation_file中,你设置b = a.split(',')并将b [0]传递给get_line_for_star_name,b [0]将没有',',所以你可以发布get_line_for_star_name的代码来看看问题的原因