如何定义一个函数以将字符串作为python 3中的输入



我正在尝试创建一个简单的纬度/经度转换器(从学位/分钟/秒到十进制度),但是我对函数索取和处理用户输入的方式有一个问题即,关于纬度(N/S)或经度(E/W)的基本方向。我希望该功能将用户输入N/S/E/W进行应用,并应用条件语句以确保转换输出为正(N或E)或负(S或W)。

我试图使用户界面尽可能用户友好,以便外行不必使用引号输入字符串字母。

这是到目前为止的代码:

def coord_convert (card,deg,mins,sec):
    if card == 'S' or card == 's' or card == 'W' or card == 'w':
        deg=-deg
        mins=-mins
        sec=-sec
    mins_decimal = mins + (float(sec)/60)
    deg_decimal = deg + (mins_decimal/60)
    return deg_decimal

如果用户调用函数coord_convert(W,30,30,0),这将生成错误,而coord_convert('W',30,30,0)返回正确的-30.5。有什么方法可以使此用户友好,以使card输入正确地读入字符串?

顺便说一句,此功能已从Python 2.7转换为Python 3.6,因此任何其他错误或指示器(尤其是处理整数和浮动处理)都将不胜感激。

只要您正确记录了此信息,就要求用户将字符串传递给函数输入的要求不应引起关注或问题。这是所有接受字符串输入的python函数中的标准。

当然,如果您还有其他方法可以输入信息,而不是直接与您的函数接口(即通过命令行参数),那么您不应在用户提供的字符串周围引用引号。但这将需要更多的代码,并且不会更改此功能。

如果用户将字符串存储在变量中:

相同。
cardinal = 'W'
coord_convert(cardinal, 30, 20, 10)

我建议您确保您在Python 2兼容性(使用from __future__ import division)中构建并添加功能DOCSTRING。您还可以简化检查基数的支票。

from __future__ import division
def coord_convert(cardinal, deg, mins, sec):
    '''
    This is your function docstring.
    Put some examples here, along with expected inputs and output.
    '''
    if cardinal.upper() in ['S', 'W']:
        deg = -deg
        mins = -mins
        sec = -sec
    mins_decimal = mins + (float(sec)/60)
    deg_decimal = deg + (mins_decimal/60)
    return deg_decimal

相关内容

  • 没有找到相关文章

最新更新