@e_butcher

Где ошибка в коде?

Никак не получается завершить 12 урок яндекс практикума "Основы Python и анализа данных".
Задача 1/3:
"Допишите код, чтобы он выводил текст:
в ячейке шириной в 15 символов;
с выравниванием по правому краю;
с заполнением пустот пробелами."

Мой код:
data = [
['Ухмыляюсь', 2.26, 1.02, 87.3],
['Сияю от радости', 19.1, 1.69, 150.0],
['Катаюсь от смеха', 25.6, 0.774, 0.0],
['Слёзы радости', 233.0, 7.31, 2270.0],
['Подмигиваю', 15.2, 2.36, 264.0],
['Счастлив', 22.7, 4.26, 565.0],
['Глаза-сердца', 64.6, 11.2, 834.0],
['Целую', 87.5, 5.13, 432.0],
['Задумчивость', 6.81, 0.636, 0.0],
['Равнодушие', 6.0, 0.236, 478.0],
['Солнечные очки', 4.72, 3.93, 198.0],
['Громко плачу', 24.7, 1.35, 654.0],
['След от поцелуя', 21.7, 2.87, 98.7],
['Два сердца', 10.0, 5.69, 445.0],
['Сердце', 118.0, 26.0, 1080.0],
['Червы', 3.31, 1.82, 697.0],
['Класс', 23.1, 3.75, 227.0],
['Пожимаю плечами', 1.74, 0.11, 0.0],
['Огонь', 4.5, 2.49, 150.0],
['Переработка', 0.0333, 0.056, 932.0]
]

print('{: >15}'.format('Название эмодзи'), ' | ', '{: >15}'.format('EmojiXpress, млн'), ' | ', '{: >15}'.format('Instagram, млн'), ' | ', '{: >15}'.format('Твиттер, млн'))
print('------------------------------------------------------------------')
for row in data:
print('{:>15}'.format(row[0]), ' | ', '{: >15}'.format(row[1]), ' | ', '{: >15}'.format(row[2]), ' | ', '{: >15}'.format(row[3]))

Что я делаю не так?
  • Вопрос задан
  • 2909 просмотров
Решения вопроса 1
@antoremin
Привет! Если я все правильно понял, и речь идет о первой задаче (на всякий случай приложил скриншот первой задачи), то там не требуется цикл, нужно дописать прекод, который был в задаче, чтобы он соответствовал трем условиям из задания.
Прекод выглядит так:
```
print('|{}|'.format('Сердце'))
````
Для этого нужно вписать нужные параметры внутри фигурных скобок.

Пример из теории к этому уроку:
```
print('|{: <20}|'.format('Ухмыляюсь'))
```
С такими параметрами (пробел, знак «меньше», 20) вызов функции print выведет на экран значение в ячейке, по левому краю, с шириной ячейки 20 символов, а пустоты заполнит пробелами.
В задании нужно сделать аналогично, но с шириной в 15 символов.

5c6dc40bc861a593876441.png

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

Прекод в задаче такой (опустил `data=...`)
```
print('Название эмодзи | EmojiXpress, млн | Instagram, млн | Твиттер, млн')
print('-------------------------------------------------------------------')
for row in data:
# В функцию format() можно передавать несколько
# аргументов и для каждого указывать, как его выводить.
# Напишите код форматирования вместо многоточий.
print('{...} | {...} | {...} | {...}'.format(row[0], row[1], row[2], row[3]))
```
Два вызова `print()` с обычными строками — это просто шапка таблички, ее трогать не нужно.
Дальше идет цикл, который построчно проходит по табличке с данными, берет значения из каждого столбца (название смайлика, число, число, число) и печатает их на экран.
Чтобы табличка получилась красивая, нужно заменить троеточия в фигурных скобках на параметры, которые указаны в задании: первый столбец выровнен влево и имеет ширину 20 символов, остальные выровнены вправо, шириной 16 символов.

Если речь идет о третьей задаче, рекомендую взять этот прекод, подставить его вместо своего кода и дописать параметры. Правда, придется вручную выставить отступы после начала цикла (строчки после `for row in data:`), иначе питон не поймет, что дальше начался цикл.

5c6dc6903fe6b037369416.png

А еще у Практикума есть поддержка, которая помогает с такими вопросами, обычно отвечают через 10-15 минут.
https://yandex.ru/support/praktikum/feedback.html
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы