为什么 if 语句要在 Deg Min Sec 中测试正确的符号而忽略条件?

Why if statement to test for correct notation in Deg Min Sec ignoring condition?

我有一个具有多种功能的脚本,其中之一是在 ArcMAP 中获取方向距离遍历的方位,并进行测试以确保输入符合度分秒的标准准则。它可以很好地检查南北和东西,但是当它到达方向的实际数值时,当我输入 N88-12-9E 并转到 "seconds cannot be greater than 60."[=11 的条件语句时它会失败=]

代码从字符串的开头和结尾去除 N/S E/W,然后通过拆分删除“-”。留下 3 个数字的列表。在上面的例子中,它留下 ['88', '12', '9'] 其中 9 是秒,12 分钟,88 度。

这是带有 if 语句的小代码:

if dmSplit[1] >= '60' or dmSplit[-1] >= '60':
    while dmSplit[1] >= '60':
        print("\nMinutes must be less than 60.")
        bearing = str(raw_input("Enter the bearing (N/Sdeg-min-secE/W): "))
        bearing = string.upper(bearing)
        dms = bearing.strip('NSEW')
        dmSplit = dms.split('-', 2)
    while dmSplit[-1] >= '60':
        print("\nSeconds must be less than 60.")
        bearing = str(raw_input("Enter the bearing (N/Sdeg-min-secE/W): "))
        bearing = string.upper(bearing)
        dms = bearing.strip('NSEW')
        dmSplit = dms.split('-', 2)

在到达第一次迭代之前,它会处理原始 split/strip。我不明白为什么当我输入有效的 DMS 方位时,它以我的错误检查作为响应...

实际情况是您将字符串当作整数进行比较。

例如:

'11' > '9'

将计算为 False,因为它们是字符串而不是作为整数进行比较。

那么,怎么解决呢?

只使用整数,或者在比较之前将字符串转换为 int:

int('11')

注意:您的两个操作数都必须是整数才能获得所需的结果。