Как проверить, находится ли пользовательский ввод в столбце Excel с помощью модуля openpyxl - PullRequest
0 голосов
/ 24 декабря 2018

Я пишу скрипт Python для управления файлами Excel, я использую модуль openpyxl, кто-нибудь знает, как я могу проверить, находится ли пользовательский ввод в столбце, я сделал это:

def esta():
    for itemChecker in inventory["A"]:
        if itemChecker == newItem:
            item_on = True
        if itemChecker != newItem:
            item_on = False


newItem = input("New Item: ")
itemChecker = " "
item_on = False
esta()
if item_on == False:
    print("Item isn't on the column")
if item_on == True:
    print("Item is on the column")

Код внутри функции esta () выполняет следующие действия: если пользовательский ввод (newItem) находится в столбце «A» переменной, присвоенной файлу Excel с именем «инвентаризация», переменная item_onустанавливается равным True, если пользовательский ввод не находится в столбце «A», «item_on» устанавливается равным False.Оператор if делает это: если item_on равен False (это означает, что пользовательский ввод отсутствует в столбце), он печатает «Item not on the column», но если item_on равен True (пользовательский вводв столбце) печатается «Элемент в столбце».Что я делаю неправильно?Я не получаю никаких ошибок, но всегда печатается «Элемент отсутствует в столбце», даже если я знаю, что элемент находится в столбце.Пожалуйста, мне нужна помощь.

1 Ответ

0 голосов
/ 24 декабря 2018

Краткий ответ: Добавьте break.

. Код должен завершаться, когда он находит значение в столбце.В противном случае он продолжит поиск в других ячейках столбца, в которых значение отсутствует, что приведет к тому, что item_on будет установлен в False.

Кроме того, в вашем коде вы устанавливаете item_on в False,вне функции.item_on внутри esta, установленное в значение true, не повлияет на item_on вне его.

что-то вроде этого должно сработать: если весь код находится в одной области видимости.

def esta():
    for itemChecker in inventory["A"]:
        if itemChecker == newItem:
            item_on = True
            break

Хотя я думаю, что вы должны использовать esta в качестве функции.

def esta():
    for itemChecker in inventory["A"]:
        if itemChecker == newItem:
            return True
    return False


newItem = input("New Item: ")
itemChecker = " "

# assign the value of esta to a variable
item_on = esta()

# remove redundant check for True / False (refer to https://pep8.org)
if item_on:
    print("Item is on the column")
else:
    print("Item isn't on the column")

Надеюсь, это поможет.

...