Вопрос пользователя Vitaly Chekunov в уроке «Создание списков и добавление элементов», курс «Python: Списки»

Vitaly Chekunov

Не проходит ни один тест и линтер. В чем может быть проблема?

# BEGIN (write your solution here)
from math import sqrt


def get_square_roots(n):
    if n == 0:
        return [0]
    elif n < 0:
        return[]
    return [sqrt(n) * -1, sqrt(n)]
# END


# BEGIN (write your solution here)
def get_range(n):
    l = [0]
    i = 0
    while i != n - 1:
        i += 1
        l.append(i)
    return l
# END
10 0

Aleksei Pirogov

Вы бы хоть сообщения от линтера прикрепили!

Вопрос от меня: почему у вас табами отступы сделаны? Настройте редактор, чтобы он вставлял 4 пробела вместо символа табуляции, как в Python принято!

0

Vitaly Chekunov

Aleksei Pirogov, Можете подсказать как настроить? До этого курса все задания так делал, ничего не менял. Все проходило.

0

Aleksei Pirogov

То есть это па сайте так себя редактор ведёт? С этим будем разбираться. А линтер-то что пишет?

0

Vitaly Chekunov

Aleksei Pirogov, Тесты

Линтер.

/usr/src/app/src/solution.py:7:1: W191 indentation contains tabs
if n == 0:
^
/usr/src/app/src/solution.py:7:2: E117 over-indented
if n == 0:
^
/usr/src/app/src/solution.py:8:1: W191 indentation contains tabs
return [0]
^
/usr/src/app/src/solution.py:8:3: E117 over-indented
return [0]
^
/usr/src/app/src/solution.py:9:1: W191 indentation contains tabs
elif n < 0:
^
/usr/src/app/src/solution.py:10:1: W191 indentation contains tabs
return[]
^
/usr/src/app/src/solution.py:10:3: E117 over-indented
return[]
^
/usr/src/app/src/solution.py:11:1: W191 indentation contains tabs
return [sqrt(n) * -1, sqrt(n)]
^
/usr/src/app/src/solution.py:17:1: W191 indentation contains tabs
l = [0]
^
/usr/src/app/src/solution.py:17:2: E741 ambiguous variable name 'l'
l = [0]
^
/usr/src/app/src/solution.py:17:2: E117 over-indented
l = [0]
^
/usr/src/app/src/solution.py:18:1: W191 indentation contains tabs
i = 0
^
/usr/src/app/src/solution.py:19:1: W191 indentation contains tabs
while i != n - 1:
^
/usr/src/app/src/solution.py:20:1: W191 indentation contains tabs
i += 1
^
/usr/src/app/src/solution.py:20:3: E117 over-indented
i += 1
^
/usr/src/app/src/solution.py:21:1: W191 indentation contains tabs
l.append(i)
^
/usr/src/app/src/solution.py:22:1: W191 indentation contains tabs
return l
^
0

Vitaly Chekunov

Aleksei Pirogov, убрал табы и сделал пробелы. Теперь линтер ругается только на это.

/usr/src/app/src/solution.py:18:5: E741 ambiguous variable name 'l'
l = [0]
^

Тесты по прежнему не прохожу. Почему нельзя отступы делать табами? Один таб = четыре пробела. В чем разница?

0

Aleksei Pirogov

Почему нельзя отступы делать табами? Один таб = четыре пробела. В чем разница?

Вы путаете нажатие клавиши <Tab> и вставку символа табуляции! Если редактор настроен "под Python", то он будет по нажатию <Tab> вставлять четыре пробела. Если не настроен, то будет вставлять один символ табуляции (символ с кодом 08h).

Линтер ругается на использование однобуквенной переменной, имя которой содержит один из символов, которые люди часто путают: например, l путают с I. Рекомендую вообще не использовать однобуквенные имена.

0

Vitaly Chekunov

Aleksei Pirogov, спасибо, с линтером вопрос решил, все отлично, ошибок нет. Как теперь пройти тест в целом? Вывод тестов.

make: Entering directory '/usr/src/app'
env PYTHONPATH=src pytest src tests

.
Makefile:2: recipe for target 'test' failed

make: *** [test] Killed

make: Leaving directory '/usr/src/app'

В REPL все тесты проходит.

0

Aleksei Pirogov

Что значит "В REPL все тесты проходит."? Чьи тесты, ваши? Нужно, чтобы код наши тесты проходил :)

У вас функция get_range включает само переданное число в результирующий список. Это противоречит условиям задачи.

0

Vitaly Chekunov

Aleksei Pirogov, не включает, я проверял.

0

Aleksei Pirogov

Да, я проверил. Не влючает. Зато get_range зацикливается, если передать в качестве аргумента ноль или отрицательное число. Это неправильное поведение. А всему виной условие у while: ноль или отрицательное число никогда не дадут True в таком условии! Когда вы используете цикл со счётчиком, стоит всегда проверять неравенство (i < n вместо i != n - 1).

0

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг». Защита от спама reCAPTCHA «Конфиденциальность» и «Условия использования».

Похожие вопросы

Iuliia Popova 20 августа 2020 →

Добрый день! Подскажите пожалуйста, на что ругается линтер? /usr/src/app/src/solution.py:14:9: WPS331 Found...

Maxim Mirny 14 июля 2020 →

Здравствуйте. Нет сил и понимания что не так. Первое задание сделано не так, как ожидалось, в этом ли проб...

Максим Шафранский 10 июля 2020 →

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

F L 04 июня 2020 →

Всем привет! Что тут не так? https://ru.hexlet.io/code_reviews/275249

Ахматнур Хасаншин 23 апреля 2020 →

Подскажите пожалуйста, вот по тексту урока после l.append(4); l.append(5) при вызове l получаем [1, 2, 3, 4...