为什么 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')
注意:您的两个操作数都必须是整数才能获得所需的结果。
我有一个具有多种功能的脚本,其中之一是在 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')
注意:您的两个操作数都必须是整数才能获得所需的结果。