оператор if не работает с целочисленными значениями

1

У меня есть следующий код:

-- 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.

Теги:
if-statement

1 ответ

2
Лучший ответ

wthreshold и cthreshold - строки, исходящие из аргументов командной строки. Если вы хотите сравнить их численно, вам нужно преобразовать их в числа:

wthreshold, cthreshold = [int(x) for x in sys.argv]
  • 0
    имя сценария, функция, файл журнала, диапазон дат, строка A, строка B, wthreshold, cthreshold, option = sys.argv (как это будет работать, если число параметров изменяется, как показано здесь?)
  • 0
    @swenson Просто добавьте больше переменных в левую часть операции. В качестве альтернативы, вы можете просто явно извлечь их из arg . Например: someVariable = int(sys.argv[2] .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню