Python不允许乌龟否定我

2024-05-15 01:10:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用“海龟”来显示国际空间站在世界地图上的位置。我从一个API上获取了经度和纬度。然后将坐标保存到变量“lon”和“lat”。在

但是当我使用iss.goto(lon, lat)时,我收到一个TypeError。我相信这是由于经纬度坐标有时是负数,所以浮点数的前缀是“-”。在

谁能帮我修好这个吗?在

import tkinter
import turtle
import json
import urllib.request

url = 'http://api.open-notify.org/iss-now.json'
response = urllib.request.urlopen(url)
result = json.loads(response.read())

location = result['iss_position']
lat = (location['latitude'])
lon = (location['longitude'])
print('latitude: ', lat)
print('longitude: ', lon)

screen = turtle.Screen()
screen.setup(3000, 1500)
screen.setworldcoordinates(-180, -90, 180, 90)
screen.register_shape('iss2.gif')

screen.bgpic('world_map.png')

iss = turtle.Turtle()
iss.shape('iss2.gif')
iss.setheading(90)
iss.penup()

iss.goto(lon, lat) #  I get the error here

tkinter.mainloop()

错误消息:

^{pr2}$

Tags: importjsonurltkinterresponserequestlocationresult
1条回答
网友
1楼 · 发布于 2024-05-15 01:10:35

错误是抱怨不能从字符串中减去浮点值。在

所以,这个问题与一些值是浮动的,或者一些浮动是负的无关。不能从字符串中减去int,或从字符串中减去正浮点,或从字符串中减去任何其他值。问题是有些值是字符串。在

如果打印出值的repr而不是直接打印值的repr,则可以看到:

print('latitude: ', repr(lat))
print('longitude: ', repr(lon))

你会看到这样的画面:

^{pr2}$

所以,要解决这个问题,只需将这些字符串转换为浮点:

lat = float(location['latitude'])
lon = float(location['longitude'])

相关问题 更多 >

    热门问题