【发布时间】:2021-05-17 23:17:20
【问题描述】:
我在 Raspberry Pi 网站上做一个项目,并且正在跟踪 ISS。然后,我开始玩它,让运动变为现实,并将位置放在左下角(纬度和经度)。
我创建了一个函数来将十进制度转换为度 (°) 分 (') 和秒 (") - 一种更易读的格式:
def to_hr(d):
d = float(d)
mod = d%1
min_ = int(mod*60)
sec = int(mod*36000%60)/10
d = int(d)
deg = d
return "{}° {}' {}\"".format(deg, min_,sec)
然后我用turtle.write()把经纬度显示在屏幕上:
text1 = "Lat: {} Lon: {}".format(to_hr(lat), to_hr(lon))
text.color((110, 250, 85))
style = ("Arial", 7, "bold")
text.clear()
text.goto(-175, -85)
text.write(text1, font=style)
text 之前定义为 turtle.Turtle()。
我不认为这是
turtle.Write()函数。我认为这是不确定的结果。
预期输出:
-7° 3' 45.1"
153° 9' 36.5"
0° 0' 0"
-34 5' 6"
实际输出:
-7° 3' 45.1"
153° 9' 36.5"
0° 0' 0"
-34° 5' 6"
有谁知道它为什么这样做?在return 中,我没有在返回中提到这个'Â' 字符(Unicode 是U+00C2),它不应该出现在结果中。我将d 设为整数,deg 也是。
【问题讨论】:
-
您的模板使用 UTF-8,但您的输出似乎使用
latin-1。注意"{}° {}' {}\"".encode().decode('latin-1') == '{}° {}\' {}"' -
所以,我必须添加
.encode()?如果是这样,在.format()之前还是之后?
标签: python python-3.x