Как мне подсчитать количество «ребер» в слове на Python, используя словарь?

#python-3.x #dictionary

#python-3.x #словарь

Вопрос:

Для этого упражнения мне нужно подсчитать «количество ребер» в слове «AARDGASRESERVES» (голландский), используя цикл for и словарь. У меня уже есть следующий код, но это не дает мне требуемого результата (который должен быть 31). Я считаю, что средняя часть еще не совсем правильная.

 # dictionary of number of edges per letter
edges = {"A": 2, "R": 2, "D": 0,"G": 2,"S": 2,"R": 2,"E": 3, "V": 2}

word = "AARDGASRESERVES"

# loop over the letters in the word and count the number of edges
total_edges = 0
for key in edges:
    if edges[key] == word:
        total_edges  = [value]

# print the total
print("Total number of edges:", total_edges)
 

Я if edges[key] in word: тоже пытался, но это приводит к ошибке. Я все еще новичок в Python, так что, возможно, я написал что-то, что даже невозможно.

Ответ №1:

Простой способ сделать то, что вы хотите, это:

 edges = {"A": 2, "R": 2, "D": 0,"G": 2,"S": 2,"R": 2,"E": 3, "V": 2}
word = "AARDGASRESERVES"

total_edges = sum([edges[c] for c in word])

# print the total
print("Total number of edges:", total_edges) # Output: 31
 

Тем не менее, я советую вам внимательно изучить свой код, чтобы понять, почему он не работает. Например, здесь:

 ...
if edges[key] == word:
...
 

вы сравниваете, равно ли число (значение вашего dict) целому слову, что является иррациональным if-statement .

Комментарии:

1. Спасибо за ваш ответ и комментарий. Теперь я вижу, что этот оператор if не является хорошим. Как я уже сказал, я новичок в Python, поэтому такие комментарии действительно ценятся!

2. Пожалуйста! Поскольку вы новичок, попробуйте, когда у вас возникнет подобная проблема, использовать print инструкции, чтобы узнать, каковы значения ваших переменных. Это самый первый способ «отладки», чтобы понять, что происходит не так с вашим кодом.

Ответ №2:

Из того, что я понимаю о назначении этого кода. Это должно быть сделано следующим образом

     # dictionary of number of edges per letter
    edges = {"A": 2, "R": 2, "D": 0,"G": 2,"S": 2,"R": 2,"E": 3, "V": 2}

    word = "AARDGASRESERVES"

    # loop over the letters in the word and count the number of edges
    total_edges = 0
    for key in word:
        total_edges  = edges[key]

    # print the total
    print("Total number of edges:", total_edges)
 

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

Комментарии:

1. Спасибо! Это действительно то, что я искал. Спасибо и за объяснение, оно действительно очень помогает мне в изучении Python