Member 14935944 Ответов: 1

Я сделал это программирование, но не получил правильный вывод


Вопрос:- это вопрос Python, основанный на словаре


dict1 = {1:"яблоко",2:"манго", 3:"банан"]}​
​ цель состоит в том, чтобы создать два списка: list1 и list2
​ list1 - это список слов со средней буквой в качестве гласной
​ list2 - это список слов с согласной средней буквой.

Что я уже пробовал:

dict1={1:"яблоко",2:"манго",3:"банан"}


список1=список(dict1.значения())


список2=['А','Е','я','о','п',]

list_vowel=[]
list_cons=[]

от математики импорт потолка

для Слова в списке 1:
middle_index= ceil(len(word)/2)
middle_word= слово[middle_index]

если middle_word.lower() в списке 2:
list_vowel.append(слово)
еще:
list_cons.добавить(слово)


печати(list_vowel)
печать(list_cons)

Member 14935944

Я не получаю правильный вывод пожалуйста дайте мне знать где я ошибаюсь

Richard MacCutchan

Какой результат вы получаете?

Patrice T

Какой результат вы получаете и чего ожидали ?

Richard MacCutchan

Я только что попробовал ваш код, используя оба варианта ceil и floor чтобы найти среднюю букву и результаты будут правильными:

['banana'] -> middle letter 'a'
['apple', 'mango'] -> middle letters 'p' and 'n'

1 Ответов

Рейтинг:
1

OriginalGriff

Отсутствие синтаксических ошибок не означает, что ваш код верен! :смеяться:
Подумайте о процессе разработки как о написании электронного письма: успешная компиляция означает, что вы написали электронное письмо на правильном языке - например, на английском, а не на немецком, - а не то, что письмо содержало сообщение, которое вы хотели отправить.

Итак, теперь вы входите во вторую стадию разработки (на самом деле это четвертая или пятая, но вы перейдете к более ранним стадиям позже): тестирование и отладка.

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

Input   Expected output    Actual output
  1            2                 1
  2            4                 4
  3            6                 9
  4            8                16
Тогда совершенно очевидно, что проблема заключается в бите, который удваивает его - он не прибавляет себя к себе или умножает его на 2, он умножает его на себя и возвращает квадрат входного сигнала.
Таким образом, вы можете посмотреть на код, и очевидно, что он находится где-то здесь:
int Double(int value)
   {
   return value * value;
   }

Как только у вас появится идея, что может пойти не так, начните использовать отладчик, чтобы выяснить, почему. (Если вы еще не использовали отладчик, начните здесь: pdb — отладчик Python — документация по Python 3.9.0[^] и здесь: Отладка Python С Pdb – Real Python[^] ) Поместите точку останова в первую строку метода и запустите свое приложение. Когда он достигнет точки останова, отладчик остановится и передаст управление вам. Теперь вы можете запускать свой код построчно (так называемый "одноступенчатый") и просматривать (или даже изменять) содержимое переменных по мере необходимости (черт возьми, вы даже можете изменить код и повторить попытку, если вам это нужно).
Подумайте о том, что должна делать каждая строка кода перед ее выполнением, и сравните это с тем, что она действительно делала, когда вы использовали кнопку "Step over" для выполнения каждой строки по очереди. Он сделал то, что вы ожидали? Если да, то переходите к следующей строке.
Если нет, то почему? Чем это отличается?
Надеюсь, это поможет вам определить, в какой части этого кода есть проблема и в чем она заключается.
Это навык, и его стоит развивать, поскольку он помогает вам как в реальном мире, так и в развитии. И, как и все навыки, он только улучшается при использовании!