в основном я пытаюсь прочитать файл ниже и сравнить фрукт, который хочет человек, с фруктом в словаре, и если запас выше 0, то распечатайте сообщение о том, что им дали фрукт, и если запас равен 0, то сообщение говоря, что не был дан фрукт и т. д.
ошибка, которую я получаю: «IndexError: индекс списка вне допустимого диапазона» в первой строке моего оператора if
[
["James Bruce", "Bananas"],
["Katherine Newton", "Bananas"],
["Deborah Garcia", "Pears"],
["Marguerite Kozlowski", "Pineapples"],
["Kenneth Fitzgerald", "Pineapples"],
["Ronald Crawford", "Bananas"],
["Donald Haar", "Apples"],
["Al Whittenberg", "Bananas"],
["Max Bergevin", "Bananas"],
["Carlos Doby", "Pears"],
["Barry Hayes", "Pineapples"],
["Donald Haar", "Bananas"]
]
словарь: {"Яблоки": 14, "Бананы": 14, "Ананасы": 0, "Груши": 8}
from ast import literal_eval
with open("C:\Users\dylan gornall\Desktop\Dylan's Uni Work\stock.json") as f:
a = f.read()
dic = literal_eval(a)
print(dic["Apples"])
s = open ("C:\Users\dylan gornall\Desktop\Dylan's Uni Work\queue.json", 'r')
for line in s:
parts = line.split(',')
if parts[1] == ("pears") + dic["Pears"] > 1 :
print( parts[0] + ' has been given ' + parts[1] )
elif parts[1] == ("Apples") + dic["Apples"] > 1 :
print( parts[0] + ' has been given ' + parts[1] )
elif parts[1] == ("Bananas") + dic["Bananas"] > 1 :
print( parts[0] + ' has been given ' + parts[1] )
elif parts[1] == ("Pineapples") + dic["Pineapples"] > 1 :
print( parts[0] + ' has been given ' + parts[1] )
Re: if parts[1] == ("pears") + dic["Pears"] > 1 :
... Скобки не нужны, и +
должен быть and
. Также, вероятно, понадобится >= 1
и правильный футляр для "Pears"
.
Первая строка вашего входного файла JSON - это открытая скобка. Когда вы его split()
, вы получите только один элемент в списке, но вы пытаетесь получить доступ ко второму элементу.
Рассмотрите возможность использования модуля Python json
для ввода JSON: https://docs.python.org/2/library/json.html.
Вы хорошо начали размещать Минимальный, полный, проверяемый пример. Однако у нас нет доступа к вашему диску C :. Вы предоставили нам содержимое файла, но почему бы просто не назначить переменную в MCVE?