Создать список, который зависит от переменной

на самом деле у меня проблема, потому что я хочу создать список внутри функции, но это зависит от переменной, я имею в виду ... с помощью ввода я хочу определить значение переменной, с помощью кода, который я смоделировал программу ресторана сервировать стол, и я должен иметь возможность добавить к списку каждого стола то, что они просят. Теперь это мой код:

foodlist = []
table_1 = []
table_2 = []
table_3 = []
table_4 = []
table_5 = []
table_6 = []
p = 0

def openFile():
    file = open("cartarest.txt","r",1,"utf-8")
    line = file.readline().strip()
    while line != "":    
        parts = line.split(";")
        name = parts[0]
        price = int(parts[1])
        type = parts[2]     
        foodlist.append(parts)
        line = file.readline().strip()
        p += 1
    return (foodlist,p)

def serveTable(x):
    print("The menu of the restaurant is:")
    print(foodlist)
    add = input("Which food do you want to add?: ")
    while add != 0:
        for i in range(p):
            if add.lower() == foodlist[i][0]:
                **table_+x.append(foodlist[i])**
        add = input("Which food do you want to add?: ")

openFile()
tableserve = input("What table do you want to attend?")
while tableserve.lower() != "cerrar":
    serveTable(tableserve)
    tableserve = input("What table do you want to attend?")

Обновлено: я решил проблему с переменной 'p', но теперь у меня есть вопрос, как ограничить диапазон таблиц, потому что я попытался установить значение типа «-1», и код работает нормально, это не должно не работает, только со значениями от 1 до 6 (очевидно, используя ответ @Tim)

Какой у Вас вопрос? Какая у вас проблема?

Tim 18.12.2018 18:36

файл формата ((название; цена; вид еды))

Victor Caicedo 18.12.2018 18:36
tables = [[] for _ in range(6)]; не имеют 6 разных переменных с одинаковыми названиями.
chepner 18.12.2018 18:36

@Tim код не меняет список, не добавляйте ничего

Victor Caicedo 18.12.2018 18:37

Вам нужно создать список таблиц вместо отдельных переменных для каждой таблицы

Sir1 18.12.2018 18:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
5
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо 6 табличных переменных используйте список списков и передайте номер своей таблицы в качестве индекса:

tables = [[] for _ in range(ntables)]
def serveTable(x):
    print("The menu of the restaurant is:")
    print(foodlist)
    add = input("Which food do you want to add?: ")
    while add != 0:
        for i in range(p):
            if add.lower() == foodlist[i][0]:
                tables[x].append(foodlist[i])
        add = input("Which food do you want to add?: ")

теперь у меня другая проблема NameError: имя 'p' не определено, я пробовал разные формы, но переменная не определена, и я не могу использовать global: D (изменить)

Victor Caicedo 18.12.2018 19:14

Переместите определение p в функцию openFile, которая увеличивает его: def openFile(): p = 0 ...

Tim 18.12.2018 19:18

Я сделал это, но ничего не происходит

Victor Caicedo 18.12.2018 19:28

Вы не улавливаете возвращаемые переменные. У вас есть openFile(), тогда как должен быть foodlist, p = openFile()

Tim 18.12.2018 19:29

Я пытался что-то сделать с твоим советом, но не могу понять, куда мне положить это

Victor Caicedo 18.12.2018 19:37

Другие вопросы по теме