Двойное назначение переменных при реализации правил проверки - PullRequest
0 голосов
/ 21 апреля 2020

Может ли кто-нибудь объяснить, почему я должен ввести свое «имя» два раза? Также если у вас есть чаевые. Я хочу, чтобы пользователь вводил имя еще раз, если l oop не находит совпадений.

import xlrd

def open_file(path):
    wb = xlrd.open_workbook(path)
    sheet = wb.sheet_by_index(0)

    while True:
        name = input("name: ")
        nbre_consulate = 1

        for row_num in range(sheet.nrows):
            row_value = sheet.row_values(row_num)

            if row_value[0] == name and row_value[1] == nbre_consulate:
                return int(row_value[2])

path = "imperator.xlsx"
open_file(path)

print(open_file(path))

Мне нужно дважды написать "имя", прежде чем мой row_value[3]. Я не могу понять, почему.

name: Spurius Lartius
name: Spurius Lartius
506

Спасибо за любые советы!

1 Ответ

1 голос
/ 21 апреля 2020

Вы должны ввести свое имя дважды, потому что дважды запускаете всю функцию. Вы видите, где вы запускаете функцию, а затем делаете то же самое с оператором print? Значение, которое вы видите, не только печатается, но и генерируется тем, где вы выполняете свою функцию в операторе печати. Чтобы исправить это, вы можете назначить его переменной при запуске, а затем распечатать переменную по отдельности, например:

path = "imperator.xlsx"
row_value_3 = open_file(path)

print(row_value_3)
...