我需要使用一个txt文件来跟踪飓风并在python上用乌龟绘制它。这是我的代码,但我不知道为什么它不起作用。有人可以帮忙吗?
def irma():
(t, wn, map_bg_img) = irma_setup()
text = open("irma.csv", "r")
lines = text.readlines()
lines = lines[1:]
t.penup()
category = 0
for line in lines:
line = line.strip()
line = line.split(",")
lat = float(line[2])
lon = float(line[3])
wind = float(line[4])
if wind < 74:
t.color("white")
t.pensize(5)
elif 74 <= wind <= 95:
t.color("blue")
t.pensize(10)
category = 1
elif 96 <= wind <= 110:
t.color("green")
t.pensize(15)
category = 2
elif 111 <= wind <= 129:
t.color("yellow")
t.pensize(20)
category = 3
elif 130 <= wind <= 156:
t.color("orange")
t.pensize(25)
category = 4
else:
t.color("red")
t.pensize(30)
category = 5
t.goto(lat, lon)
t.pendown()
t.write(category)
if __name__ == "__main__":
irma()
答案 0 :(得分:0)
您的代码的特定问题:
您的缩进是一场灾难,使您的代码无法正常工作。
您已经颠倒了纬度和经度到X&Y的映射。经度是绕地球的 long 方向,因此它是X坐标;纬度就是Y。
输入类别编号时,使用的颜色与绘制粗线相同,因此看不到。
这是我对您的代码的重做,以解决大多数问题:
def irma():
text = open("irma.csv")
lines = text.readlines()
category = 0
t, wn, map_bg_img = irma_setup()
t.penup()
for line in lines[1:]:
line = line.strip().split(",")
lat = float(line[2])
lon = float(line[3])
wind = float(line[4])
if wind < 74:
t.color("white")
t.pensize(5)
elif 74 <= wind <= 95:
t.color("blue")
t.pensize(10)
category = 1
elif 96 <= wind <= 110:
t.color("green")
t.pensize(15)
category = 2
elif 111 <= wind <= 129:
t.color("yellow")
t.pensize(20)
category = 3
elif 130 <= wind <= 156:
t.color("orange")
t.pensize(25)
category = 4
else:
t.color("red")
t.pensize(30)
category = 5
t.goto(lon, lat)
t.pendown()
t.color("black")
t.write(category)
wn.mainloop()
if __name__ == "__main__":
irma()
该类别的标签仍无法正常工作,但我将由您自己解决。