#python-3.x
Вопрос:
Вопрос: Подсчитайте общее количество яблок, купленных только в понедельник и в субботу.
В настоящее время это мой код:
apple = 0
banana = 0
orange = 0
#number of fruits bought on monday, tuesday and wendsday respectively
fruit = [ ['apple', 'cherry', 'apple', 'orange'],
['orange', 'apple', 'apple', 'banana'],
['banana', 'apple', 'cherry', 'orange'] ]
for x in fruit:
if 'apple' in x:
if fruit.index(x) == 0 or fruit.index(x) == 2:
apple 1
print(apple)
По какой-то причине текущий результат, который я получаю для печати apple
, таков 0
.
Что не так с моим кодом?
Комментарии:
1.
apple 1
должно бытьapple = 1
Ответ №1:
проблема в вашем коде заключается в том, что вы только увеличиваете количество яблок, но не присваиваете их какой-либо переменной, поэтому она печатает свое начальное значение:
apple = 0
apple 1
вам нужно сделать:
apple = 1
а также fruit.index(x) всегда возвращает индекс первого появления этого элемента, то есть:
fruit[1].index('apple')
вернет индекс первого появления «яблока» во фруктах[1], равный 1.
но, согласно вашему вопросу, это решение неверно, потому что они не просили яблок только в понедельник и среду, поэтому вам нужно сделать это вручную, потому что, согласно вашему решению, оно также будет считать яблоки во вторник, где индекс «яблоко» равен 0 или 2. ниже приведено правильное решение
apple = 0
banana = 0
orange = 0
#number of fruits bought on monday, tuesday and wendsday respectively
fruit = [ ['apple', 'cherry', 'apple', 'orange'],
['orange', 'apple', 'apple', 'banana'],
['banana', 'apple', 'cherry', 'orange'] ]
apple = fruit[0].count('apple')
apple = fruit[2].count('apple')
print(apple)
Комментарии:
1. а ну понятно. Спасибо!
2. всегда помните, что index() вернет индекс первого появления. В основном эту ошибку совершают программисты
3. спасибо за совет. Я искренне этого не знал; ха-ха-ха :П
Ответ №2:
В вашем коде есть две проблемы.
Первый вопрос заключается в:
if fruit.index(x) == 0 or fruit.index(x) == 2:
apple 1
apple 1
не делает ничего осмысленного. Если вы хотите , чтобы вам нужно было увеличить apple
, вам нужно это сделать apple = 1
. Это приводит к apple
тому, что 2
Вторая проблема заключается в том, что вам нужно рассчитать общее количество, которое является 3
яблоками и нет 2
. Два яблока были куплены в понедельник и 1 в среду.
Вы можете использовать collections.Counter
для этого
from collections import Counter
for x in fruit:
if 'apple' in x:
if fruit.index(x) == 0 or fruit.index(x) == 2:
apple = Counter(x)['apple']
Комментарии:
1. Большое вам спасибо!
Ответ №3:
так и должно быть apple = 1
, а не apple 1