Задача Питон.Никак не могу разобраться

Задача 1. Ревью кода

Ваня работает middle-разработчиком на Python в IT-компании. Один кандидат на junior-разработчика прислал ему код тестового задания. Задание состояло в следующем: есть словарь из трёх студентов. Необходимо:

Вывести на экран список пар «ID студента — возраст».
Написать функцию, которая принимает в качестве аргумента словарь и возвращает два значения: полный список интересов всех студентов и общую длину всех фамилий студентов.
Далее в основном коде эта функция вызывается, и значения присваиваются отдельным переменным, которые после выводятся на экран. (Т.е. нужно распаковать все возвращаемые значения в отдельные переменные.)
Ваня — очень придирчивый программист, и после просмотра кода он понял, что этого кандидата на работу не возьмёт, даже несмотря на то, что он выдаёт верный результат. Вот сам код кандидата:

students = {

    1: {

        'name': 'Bob',

        'surname': 'Vazovski',

        'age': 23,

        'interests': ['biology, swimming']

    },

    2: {

        'name': 'Rob',

        'surname': 'Stepanov',

        'age': 24,

        'interests': ['math', 'computer games', 'running']

    },

    3: {

        'name': 'Alexander',

        'surname': 'Krug',

        'age': 22,

        'interests': ['languages', 'health food']

    }

}





def f(dict):

    lst = []

    string = ''

    for i in dict:

        lst += (dict[i]['interests'])

        string += dict[i]['surname']

    cnt = 0

    for s in string:

        cnt += 1

    return lst, cnt





pairs = []

for i in students:

    pairs += (i, students[i]['age'])





my_lst = f(students)[0]

l = f(students)[1]

print(my_lst, l)

Перепишите этот код так, чтобы он был максимально pythonic и Ваня мало к чему мог придраться (ну только если очень захочется). Убедитесь в том, что программа работает всё так же верно. Различные проверки на существование записей в словаре не обязательны, но приветствуются :slight_smile:

Так а проблемы с чем именно?

1.Вывести на экран список пар «ID студента — возраст»
2.Написать функцию, которая принимает в качестве аргумента словарь и возвращает два значения: полный список интересов всех студентов и общую длину всех фамилий студентов.
3.Далее в основном коде эта функция вызывается, и значения присваиваются отдельным переменным, которые после выводятся на экран. (Т.е. нужно распаковать все возвращаемые значения в отдельные переменные.)

Вы уже скинули это задание в первом посте, но не рассказали что именно у вас не получается.

вы мне можете помочь или вы умеете задавать только вопросы?

Вы понимаете разницу между “помочь” и “тупо сделать учебную задачу за кого-то (тем самым сделав её бесполезной)”?

1 лайк

Что значит

возможно перефразировать?

Если в лекциях не подсказали чего-то конкретного, то можно начать с
PEP 8 -- Style Guide for Python Code | Python.org
PEP 20 -- The Zen of Python
What is Pythonic? | Secret Weblog

Ну и давать нормальные имена, особенно функциям. Не перекрывать имена стандартных типов.

Часть из этого подскажет IDE типа PyCharm.

думаю, что речь идёт о

https://habr.com/ru/post/114731/

Если правильно понял, “код” это синоним для Pythonic. А “быдло-код” синоним для unPythonic.
Разница только в том что синонимы применимы к любому языку, не только к Python.
Я так это понял.