Найти - Пользователи
Полная версия: ошибка во время исполнения
Начало » Python для новичков » ошибка во время исполнения
1
bovaniko
Подскажите что может быть не так в коде
Функция нахождения не нулевых значений в коде
py.user.next
bovaniko
Функция нахождения не нулевых значений в коде
  
>>> lst = [1, 0, 2, 0, 3, 0, 0, 0, 4]
>>> 
>>> out = list(filter(bool, lst))
>>> out
[1, 2, 3, 4]
>>>
bovaniko
Большое спасибо!
bovaniko
Добрый день. Еще одна задача. на транслитерацию.
Все работает. но также пишет ошибку. Может я неправильно понимаю условия задачи. но по мне все логично
 enter_str = input()
enter_number = input()
num_dist = {'2': ['а', 'б', 'в', 'г'],
            '3': ['д', 'e', 'ж', 'з'],
            '4': ['и', 'й', 'к', 'л'],
            '5': ['м', 'н', 'о', 'п'],
            '6': ['р', 'с', 'т', 'у'],
            '7': ['ф', 'х', 'ц', 'ч'],
            '8': ['ш', 'щ', 'ъ', 'ы'],
            '9': ['ь', 'э', 'ю', 'я'],
            '1': ['.', ',', '-'],
            '0':[]}
enter_number_list = list(enter_number)
enter_str_list = enter_str.split()
result_list = []
for i in range(len(enter_number_list)):
             
     for word in enter_str_list: 
        word_list = list(word.lower()) 
        if word_list[i] not in num_dist[enter_number_list[i]] and enter_number_list[i]!=0:    
               enter_str_list.remove(word)          
for j  in enter_str_list:
        if j not in result_list:
            result_list.append(j)      
print (' '.join(result_list))   
py.user.next
bovaniko
Все работает. но также пишет ошибку.
Запустил без каких-либо внесённых изменений. Всё работает.
  
>>> def f():
...     enter_str = input()
...     enter_number = input()
...     
...     num_dist = {'2': ['а', 'б', 'в', 'г'],
...                 '3': ['д', 'e', 'ж', 'з'],
...                 '4': ['и', 'й', 'к', 'л'],
...                 '5': ['м', 'н', 'о', 'п'],
...                 '6': ['р', 'с', 'т', 'у'],
...                 '7': ['ф', 'х', 'ц', 'ч'],
...                 '8': ['ш', 'щ', 'ъ', 'ы'],
...                 '9': ['ь', 'э', 'ю', 'я'],
...                 '1': ['.', ',', '-'],
...                 '0':[]}
...     enter_number_list = list(enter_number)
...     enter_str_list = enter_str.split()
...     result_list = []
...     
...     for i in range(len(enter_number_list)):
...          for word in enter_str_list:
...             word_list = list(word.lower())
...             if word_list[i] not in num_dist[enter_number_list[i]] and enter_number_list[i]!=0:
...                    enter_str_list.remove(word)
...     
...     for j  in enter_str_list:
...             if j not in result_list:
...                 result_list.append(j)
...     
...     print (' '.join(result_list))
... 
>>> f()
кот арбуз слово завтрак кнопка лес Лоб
45
кот кнопка Лоб
>>>

А просмотрел код и задался вопросом вот к этому куску
  
and enter_number_list[i]!=0:
Когда это он будет равняться числу ноль, если там всегда строка?
  
>>> 0 == '0'
False
>>>

И я тебе не скажу, что твой код классный. Он слишком запутанный, так как он слишком перегружен, усложнён. Это происходит из-за того, что ты сначала пишешь код, а потом думаешь, правильно ли он всё делает. А надо-то делать наоборот: сначала ты должен придумать словесную форму алгоритма в полном виде, потом составить для этой словесной формы блок-схему, потом для этой блок-схемы написать псевдокод, а потом для этого псевдокода написать код. На каждом из этих этапов можно вносить исправления и оптимизации. Таким образом в итоге и получается чистый и компактный код. А вот это вот, когда оно заставляет шарики в голове крутиться на каждой строке, чтобы понять эту каждую строчку, говорит о том, что код неясный, трудный для понимания и поэтому предрасположен к спрятавшимся в нём ошибкам. Это как на улице ночью. Когда фонарь не светит на дорогу, ты не знаешь, есть ли там кто-то, туда надо идти и проверять. Другое дело, когда улица вся освещена фонарями и тебе просто видно, что там никого нет и для этого туда даже идти не надо. Вот чем запутаннее код, тем больше нужно ходить и проверять в нём. А чем яснее код, тем меньше нужно времени на работу с ним, потому что без проверок всё видно.
bovaniko
Спасибо за расширенный комментарий! Постараюсь учесть при изучении языка!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB