为什么如果语句在Deg Min Sec忽略条件下测试正确的符号?

时间:2015-02-02 20:30:14

标签: python-2.7 if-statement while-loop conditional-statements

我有一个包含多个函数的脚本,其中一个函数负责ArcMAP中的方向距离遍历,并进行测试以确保输入遵循Degrees Minutes Seconds的标准指南。它检查北部和东部西部就好了,但是当它达到方向的实际数值时,当我输入N88-12-9E并且进入我的条件语句“秒不能大于60”时它会失败。 “

代码从字符串的开头和结尾剥离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)

在上面,它在进入第一次迭代之前处理原始的分割/条带。我不明白为什么当我输入有效的DMS轴承时,它会响应我的错误检查......

1 个答案:

答案 0 :(得分:0)

您正在比较字符串,就好像它们是整数一样。

例如:

'11' > '9'

将评估为False,因为它们是字符串,不会作为整数进行比较。

那么,你怎么解决呢?

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

int('11')

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