У меня есть следующий код:
-- content of sys.argv is 2 and 10 which is assigned to the specified variables.
wthreshold, cthreshold = sys.argv
def Alerting():
if PatternCount < wthreshold:
print
print LRangeA
print
print 'PatternMatch=(' + str(PatternCount) + '),' + 'ExactTimeFrame[' + str(BeginSearchDVar) + ',' + str(EndinSearchDVar) + ']=(Yes)'
print
sys.exit(0)
elif PatternCount >= wthreshold and PatternCount < cthreshold:
print
print LRangeA
print
print 'PatternMatch=(' + str(PatternCount) + '),' + 'ExactTimeFrame[' + str(BeginSearchDVar) + ',' + str(EndinSearchDVar) + ']=(Yes)'
print
sys.exit(1)
elif PatternCount >= cthreshold:
print
print LRangeA
print
print 'PatternMatch=(' + str(PatternCount) + '),' + 'ExactTimeFrame[' + str(BeginSearchDVar) + ',' + str(EndinSearchDVar) + ']=(Yes)'
print
sys.exit(2)
else:
print
print LRangeA
print
print 'PatternMatch=(' + str(PatternCount) + '),' + 'ExactTimeFrame[' + str(BeginSearchDVar) + ',' + str(EndinSearchDVar) + ']=(Yes)'
print
sys.exit(3)
LRangeA = """this line 1
another line 2
one more line 3
line 4
line 5
line 6
line 7
line 8"""
PatternCount = len(LRangeA.split('\n'))
Alerting()
Когда я запускаю этот код, он, похоже, не корректно проверяет числа в операторах if. Код всегда, кажется, входит в первый оператор if, хотя значение PatternCount равно 8.
wthreshold
и cthreshold
- строки, исходящие из аргументов командной строки. Если вы хотите сравнить их численно, вам нужно преобразовать их в числа:
wthreshold, cthreshold = [int(x) for x in sys.argv]
arg
. Например:someVariable = int(sys.argv[2]
.