在python中处理返回值

时间:2018-02-26 14:43:15

标签: python python-3.x

我正在尝试使用以下代码将十进制度转换为度,分和秒:

def dd2dms(deg):
    d = int(deg)
    md = abs(deg - d) * 60
    m = int(md)
    sd = (md - m) * 60
    return [d, m, sd]

full = 500/60
print(full)
print(dd2dms(full))

但我得到以下输出:

8.333333333333334 [8, 20, 0]

我希望输出为:

8.333333333333334 8:20:0

我怎样才能做到这一点?我正在学习Python的步骤。 :)

5 个答案:

答案 0 :(得分:1)

如果它仅用于显示目的,例如:

print("{0}:{1}:{2}".format(*dd2dms(full)))

答案 1 :(得分:1)

这是一个围绕你的角度构建的小类,它有一个dms的转换函数,还有一个格式很好的字符串表示法:

class Angle(float):
    def __init__(self, degrees):
        self.degrees = degrees

    def __repr__(self):
        return "<Angle of {}° ({})>".format(self.degrees, self.dms)            

    @property
    def dms(self):
        deg = self.degrees
        d = int(deg)
        md = abs(deg - d) * 60
        m = int(md)
        sd = (md - m) * 60
        return "{:g}:{:g}:{:g}".format(d, m, sd)

演示:

In[1]: a = Angle(90.173)
In[2]: print(a)
90.173
In[3]: print(a.dms)
90:10:22.8
In[4]: a
Out[4]: <Angle of 90.173° (90:10:22.8)>

由于它继承自float,你甚至可以用它来计算。请注意,返回值将是普通浮点数(不是Angle)而无需进一步调整类。

答案 2 :(得分:0)

如果dd2dms返回一个数组,你只需要提取数组元素,将它们转换为字符串然后连接。如果您刚刚开始学习Python,请尝试这样简单的事情:

result = dd2dms(full)
print(str(result[0]) + ":" + str(result[1]) + ":" + str(result[2]))

其中result[i]返回数组i的{​​{1}} - 元素,result从其参数构造一个字符串,然后您可以将字符串与{{连接起来1}}。

答案 3 :(得分:0)

从return语句中删除方括号(返回一个元组而不是列表):

return d, m, sd

并格式化输出字符串:

"%s:%s:%s" % dd2dms(full)

完整摘录:

def dd2dms(deg):
    d = int(deg)
    md = abs(deg - d) * 60
    m = int(md)
    sd = (md - m) * 60
    return d, m, sd

full = 500/60
print(full)
print("%s:%s:%s" % dd2dms(full))

答案 4 :(得分:0)

在python 3.6中,您可以使用文字字符串插值https://www.python.org/dev/peps/pep-0498/来执行以下操作:

def dd2dms(deg):
    d = int(deg)
    md = abs(deg - d) * 60
    m = int(md)
    sd = (md - m) * 60
    return f'{d}:{m}:{sd}'

你甚至可以在字符串中进行计算

例如,你可以这样做:

def dd2dms(deg):
    d = int(deg)
    md = abs(deg - d) * 60
    m = int(md)
    return f'{d}:{m}:{(md - m) * 60}'

但是,明确声明变量通常会更好。