【发布时间】:2017-02-17 01:54:38
【问题描述】:
我正在尝试创建一个简单的纬度/经度转换器(从度/分/秒到十进制度),但我遇到了函数如何请求和处理用户输入的问题,即关于基本方向纬度 (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 的,因此任何其他错误或指针(尤其是处理整数和浮点数处理)都会受到赞赏。
【问题讨论】:
-
除非 W 由用户定义,否则他们将不得不在 W 周围添加引号。当您使用字母 W 时,python 正在寻找一个名为 W 的变量来传递它的值进入你的功能。 TL;DR,您将需要引号。
-
任何有 Python 经验的人都会使用引号来传递字符串输入。按照您的建议进行操作会造成更多混乱。
-
这是关于解释用户的输入,对吧?输入根本不需要引号。澄清一下:
for line in sys.stdin: print(line)用户键入“W”并打印 W 作为响应。您的逻辑不是打印,而是进入该循环的主体。
标签: string python-3.x user-input