Как записать цикл в одну строку
Добрый день! Начала изучать Python недавно, подскажите пожалуйста — как с помощью while решить данную задачу:
Для 6 человек дано их общее число постов и общее число лайков, которые они получили. Посчитайте сколько лайков набирает пост данного человека с помощью while.
posts = [3, 12, 74, 634, 36, 147]
likes = [973, 15, 263, 11, 1265, 125]
Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как записать цикл в одну строку?
Доброго времени суток. Начал учить питон по книге Лутц М. — Изучаем Python (4-е издание)- 2011.
Как записать строку с кавычками в одну строку?
string s = "lol "123" "; ругается и говорит то что после lol должно быть ); как это всё записать в.
Как записать одну Unicode строку в другую ?
Вот моя попытка : void Students::setInfo(UnicodeString mass, int choice_c) < switch (choice_c).
Подскажите как записать в одну строку, строки с переносами
Здравствуйте, подскажите пожалуйста самый простой метод для преобразования любой переменной типа.
Как правильно записать массив из строк в одну строку?
Как правильно записать массив из строк в одну строку? Потому что вместо этого у меня выводит много.
62 / 54 / 11
Регистрация: 08.04.2019
Сообщений: 106
Сообщение было отмечено qwerty16298 как решение
Решение
Типа такого?
1 2 3
posts = [3, 12, 74, 634, 36, 147] likes = [973, 15, 263, 11, 1265, 125] print([round(likes[i] / j, 2) for i, j in enumerate(posts)])
Добавлено через 58 секунд
Не понимаю, зачем тут цикл while, и как его вообще можно преобразовать в строчное выржение
Как сделать цикл for и условие if in в одну строку?
вопрос следующего типа.
цикл for с последующим условием if in будет использоваться более 1000 раз.
Можно ли как то сократить в 1 строку?
- Вопрос задан 02 апр.
- 577 просмотров
Комментировать
Решения вопроса 1

цикл for с последующим условием if in будет использоваться более 1000 раз.
Можно ли как то сократить в 1 строку?
Можешь пояснить, какая вообще связь между длиной кода и числом использований?
В принципе ты можешь использовать регулярные выражения под эти цели. Они более гибкие, чем просто набор подстрок.
Сейчас выглядит как будто ты пишешь этакого чат-бота для терминала. Если я прав, то длинная цепочка из if-elif-elif тут не подойдёт.
Но если прямо невтерпёж, то
if any(word in text for word in ["привет", "хай"]):
Ответ написан 02 апр.
Нравится 2 6 комментариев

RoMoN @RoMoN777 Автор вопроса
от души эта строка то что мне нужно.
да делаю чат бота телеграмм.

RoMoN, лучше используй существующие средства для выбора команды. У большинства библиотек что-то да есть.
А как в таком однострочнике расположить break ?

hulitolku, никак, да и не надо. Как ты это себе вообще представляешь?
Vindicar, Ну допустим список [«привет», «хай»] состоит из десятки тысяч элементов, и чтобы не тратить время, пробегая по всему списку, если например слово найдется в самом начале, то брейк будет прерывать цикл.

hulitolku, почитай как работает any(). А вообще в таких случаях нужен не линейный перебор списка, а быстрый поиск в отсортированной коллекции, тут уже лучше свою функцию для проверки вхождения написать.
Ответы на вопрос 1

Вроде человек. Вроде учусь. Вроде пайтону
походу, никак
C:\Users\User>py Python 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> text = '123' >>> print('hello') if command in text for command in ["привет", "хай"] File "", line 1 print('hello') if command in text for command in ["привет", "хай"] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SyntaxError: expected 'else' after 'if' expression >>> print('hello') if command in text else pass for command in ["привет", "хай"] File "", line 1 print('hello') if command in text else pass for command in ["привет", "хай"] ^^^^ SyntaxError: invalid syntax >>> print('hello') if command in text else . for command in ["привет", "хай"] File "", line 1 print('hello') if command in text else . for command in ["привет", "хай"] ^^^ SyntaxError: invalid syntax >>> print('hello') if command in text else print('',end='') for command in ["привет", "хай"] File "", line 1 print('hello') if command in text else print('',end='') for command in ["привет", "хай"] ^^^ SyntaxError: invalid syntax >>> command print('hello') if command in text else print('',end='') for command in ["привет", "хай"] File "", line 1 command print('hello') if command in text else print('',end='') for command in ["привет", "хай"] ^^^^^ SyntaxError: invalid syntax >>> print('hello') if command in text else print('',end='') command for command in ["привет", "хай"] File "", line 1 print('hello') if command in text else print('',end='') command for command in ["привет", "хай"] ^^^^^^^ SyntaxError: invalid syntax >>> print('hello') if command in text else print('',end='') for command in ["привет", "хай"] File "", line 1 print('hello') if command in text else print('',end='') for command in ["привет", "хай"] ^^^ SyntaxError: invalid syntax
Цикл for в одну строку

Как и большинство программистов, вы знаете, что после создания массива, вам нужно написать цикл для его обработки. С этим нет никаких проблем, но иногда нам не нужно использовать несколько строк для написания полного цикла for для одной простой задачи. К частью, Python это понимает и предоставляет замечательный инструмент для использования в таких ситуациях. Этот инструмент называется генератор списка (list comprehensions, списковое включение).
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Что это за зверь?
Списковое включение (List comprehensions) – это списки, которые генерируются с циклом for внутри. Они очень распространены в Python и выглядят примерно следующим образом:
[ thing for thing in list_of_things ]
Возможно, вы еще сильнее запутались, так что сделаем шаг назад. Список содержит в себе множество вещей, но определяется между квадратными скобками. Скажем, мне нужно получить функцию, которая удваивает значения всех чисел в списке. Для начала, мне нужно создать список чисел.
my_list = [ 21 , 2 , 93 ]
Теперь создадим функцию. Назовем ее list_doubler , так как это именно то, что она делает, и она будет принимать аргумент, который является списком, который мы будем удваивать.
def list_doubler ( lst ) :
for num in lst :
doubled . append ( num * 2 )
return doubled
Вызов этой функции даст нам новый список с удвоенными элементами.
my_doubled_list = list_doubler ( lst )
my_doubled_list теперь содержит значения 42 , 4 и 186 . Эта функция простая и делает то, что нам нужно простым способом, но это пять строк, учитывая определяющую строку. Также есть переменная, с которой мы ничего не делаем, кроме как добавляем и в конце возвращаем её.
Единственная часть функции, которая по-настоящему работает – это цикл for. Цикл for тоже мало что делает, просто умножает число на 2. Это идеальный кандидат для превращения в списковое включение.
Создание спискового включения
Давайте сохраним его как функцию, которую мы будем вызывать. Нам нужно только упростить тело функции. Так как списковое включение создает списки, а списки могут быть назначены к переменным, примем это во внимание и расположим списковое включение справа от doubled и продолжим.
doubled = [ thing for thing in list_of_things ]
Хорошо, теперь нам нужно заполнить правую сторону. Как и с нормальным циклом for, а правая часть списка выглядит именно так, нам нужно назвать элементы в нашем цикле. Сначала, назовем каждый объект, и мы также будем использовать переменную списка, которая будет передана.
doubled = [ thing for num in lst ]
Это не может работать в полной мере, так как элемент не является… элементом. В нашей изначальной функции мы выполнили num * 2 , так что давайте сделаем это еще раз.
doubled = [ num * 2 for num in lst ]
Все что находится перед циклом for точно внесено в список. Наконец, нам нужно вернуть наш новый список.
def list_doubler ( lst ) :
doubled = [ num * 2 for num in lst ]
return doubled
Запускаем нашу новую функцию.
my_doubled_list = list_doubler ( [ 12 , 4 , 202 ] )
И да, my_doubled_list содержит ожидаемые значения 24 , 8 и 404 . Отлично, все работает! Но так как мы создаем и моментально возвращаем переменную, давайте просто применим списковое включение напрямую.
def list_doubler ( lst ) :
return [ num * 2 for num in lst ]
Хорошо, отлично, но зачем мне это нужно?
Списковые включения (генератор списка, list comprehensions) отлично подходят для случаев, когда нам нужно сохранить немного места в коде. Они также удобны в случаях, когда вам просто нужно быстро обработать списки, чтобы сэкономить время над рутинной работой с этим списком.
Они также очень полезны, если вы хотите больше узнать о функциональном программировании, но эту тему мы обсудим в будущем.
Применяем условие if в список
Давайте сделаем новую функцию, которая будет давать только длинные слова из списка. Скажем, каждое слово, которое состоит более чем из 5 букв, будет считаться длинным. Для начала пропишем их вручную.
def long_words ( lst ) :
for word in lst :
if len ( word ) > 5 :
words . append ( word )
return words
Мы создали переменную для хранения наших слов, применяем цикл над всеми словами в нашем списке, и проверяем длинну каждого слова. Если оно длиннее 5 букв, мы вносим слово в список, и затем, наконец, мы отсылаем список назад. Давайте попробуем.
long_words([‘blog’, ‘Treehouse’, ‘Python’, ‘hi’]) возвращает [‘Treehouse’, ‘Python’] . Это как раз то, чего мы и ожидали.
Хорошо, давайте перепишем это в списковое включение. Для начала, построим то, что мы и так знаем.
def long_words ( lst ) :
return [ word for word in lst ]
Это возвращает нам все слова, не только те, которые длиннее 5 букв. Мы вносим условный оператор в конец цикла for.
def long_words ( lst ) :
return [ word for word in lst if len ( word ) > 5 ]
Итак, мы использовали всё то же условие if, но поместили его в конец спискового включения. Оно использует то же наименование переменной, которое мы используем для элементов в списке.
Хорошо, давайте опробуем эту версию long_words([‘list’, ‘comprehension’, ‘Treehouse’, ‘Ken’]) возвращает [‘comprehension’, ‘Treehouse’] .
Примеры
1. Возводим в квадрат все числа от 1 до 9. Применяем функцию range.
[ x * * 2 for x in range ( 10 ) ]
[ 0 , 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64 , 81 ]
2. Все цифры которые делятся на 5 без остатка, в диапазоне от 0 до 100.
[ x for x in range ( 100 ) if x % 5 == 0 ]
[ 0 , 5 , 10 , 15 , 20 , 25 , 30 , 35 , 40 , 45 , 50 , 55 , 60 , 65 , 70 , 75 , 80 , 85 , 90 , 95 ]
3. Все цифры которые делятся на 3 и 6 без остатка, в диапазоне от 0 до 50.
[ x for x in range ( 50 ) if x % 3 == 0 and x % 6 != 0 ]
[ 3 , 9 , 15 , 21 , 27 , 33 , 39 , 45 ]
4. Первая буква из каждого слова предложения.
phrase = «Тестовое сообщение из мира Python для сообщества.»
print ( [ w [ 0 ] for w in phrase . split ( ) ] )
[ ‘Т’ , ‘с’ , ‘и’ , ‘м’ , ‘P’ , ‘д’ , ‘с’ ]
5. Заменяем букву А в каждом слове на # .
phrase = «АБАЖУР, АБАЗИНСКИЙ, АБАЗИНЫ, АББАТ, АББАТИСА, АББАТСТВО»
print ( » . join ( [ letter if letter != ‘А’ else ‘#’ for letter in phrase ] ) )
#Б#ЖУР, #Б#ЗИНСКИЙ, #Б#ЗИНЫ, #ББ#Т, #ББ#ТИС#, #ББ#ТСТВО
Итоги
Надеюсь это руководство помогло вам понять простой способ экономии кода , который вам нужно написать для получения конкретной готовой работы с вашими списками.
Старайтесь сохранять ваши списковые включения короткими, а условия if – простыми. Несложно разглядеть решение многих ваших проблем в списковых включениях и превратить их в огромный беспорядок.
Если это только распалило ваш аппетит, посмотрим, сможете ли вы разобраться со словарными включениями самостоятельно. Они используют конструкторы dict, , но они довольно похожи. Вы также можете проработать установочные включения. Также ознакомьтесь с функциональным программированием в Python, если считаете себя готовым.
Больше примеров
- https://www.python.org/dev/peps/pep-0289/
- https://legacy.python.org/dev/peps/pep-0274/

Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»
Как записать цикл for в одну строку python

Простейший пример такого цикла:
>>> for i in range(5): print('Python') Python Python Python Python Python
Другой пример простого цикла – перебор элементов какой-либо коллекции:
for название_переменной in название_коллекции: тело цикла
Код и результат работы подобного цикла выглядят так:
>>> for i in 'Python': print(i) P y t h o n
Первая строка, открывающая цикл for , завершается двоеточием : . Такие двоеточия используются во многих конструкциях Python, не только в for , и каждый раз, обнаруживая : , интерпретатор будет ожидать индентацию (отступ) на следующей строке. Отступы в Python разделяют код на логические блоки (в других языках такое разделение происходит с помощью иных знаков – фигурных скобок, точки с запятой). В соответствии с руководством PEP8 , отступ может состоять либо из 4 пробелов, либо из одного символа табуляции Tab. Индентация пробелами – предпочтительна, табами – допустима. Однако недопустимо смешивать пробелы и табуляцию – это сразу же приведет к ошибке:
TabError: inconsistent use of tabs and spaces in indentation
Недостаток или избыток пробелов также приводят к ошибке, поскольку не дают интерпретатору определить, к какому именно логическому блоку относится фрагмент кода:
IndentationError: unindent does not match any outer indentation level
Структура вложенного цикла for
Любой цикл for может включать в себя другой for-цикл (или даже несколько):
lst1 = ['1', '2', '3', '4', '5'] lst2 = ['a', 'b', 'c', 'd', 'e'] for i in lst1: for j in lst2: print(i + j)
Во время выполнения вложенного цикла Python сначала перебирает все элементы внутреннего цикла, а затем переходит к следующему элементу внешнего цикла:
1a 1b 1c 1d 1e 2a 2b 2c 2d 2e 3a 3b 3c 3d 3e 4a 4b 4c 4d 4e 5a 5b 5c 5d 5e
Структура цикла for с условием
Для проверки соответствия переменных (элементов) каким-либо условиям в Python используется конструкция вида if… elif… else… :
age = int(input('Сколько тебе лет? ')) if age < 7: print('В какой детсад ходишь?') elif 7 90: print('Долгожитель!') else: print('Где работаешь?')
Разумеется, при решении более простых задач условие может выглядеть гораздо проще:
st = 'abracad5bra' for i in st: if not i.isalpha(): print(i)
Структура цикла for с прерыванием break и пропуском continue
Иногда цикл нужно завершить досрочно в связи с обнаружением какого-либо значения или события. В этом случае используют оператор break :
st = '32ey.5yhsf$h%owe82038e-3q0dwaefsfdgfhyfWfd9fG' for i in st: if i.isdigit() and int(i) > 8: break
Выполнение этого кода прервется, как только интерпретатор дойдет до цифры 9 в строке st .
Помимо прерывания цикла, часто возникает необходимость не совершать операцию (или набор действий) для определенного элемента. Для этого используют оператор continue , который переходит к следующей итерации при обнаружении элемента, который не следует обрабатывать:
st = 'м.у$т^а>б(о@р' for i in st: if not i.isalpha(): continue else: print(i)
Этот код пропускает все символы, которые не являются буквами. Результат:
м у т а б о р
Ввод и вывод данных с помощью цикла for в Питоне
Цикл for часто используют для ввода данных. Например, так можно ввести вложенный список (матрицу) из n строк:
n = int(input()) lst = [] for i in range(n): lst.append(list(map(int, input().split())))
А так матрицу можно вывести:
# 1-й способ вывода for i in lst: print(*i) # 2-й способ вывода for i in range(len(lst)): for j in range(len(lst)): print(lst[i][j], end=' ') print() print()
Результат вывода матрицы из 5 строк:
1 2 3 4 7 7 8 3 9 0 1 3 9 5 3 2 7 4 9 2 1 9 0 4 5
Особенности цикла for в Python
1. В цикле for может быть более одной переменной. Например, так можно вывести на экран элементы словаря:
>>> my_dict = >>> for k, v in my_dict.items(): print(f' - ') цвет - красный артикул - ABC123 цена - 650
2. Если переменная не используется в теле цикла, вместо названия можно указывать символ подчеркивания _ :
>>> mydict = <> >>> for _ in range(int(input())): k, v = input().split(': ') mydict[k.capitalize()] = v.title() 3 жанр: ужасы, триллер название: "мизери" автор: стивен кинг >>> print(mydict)
3. В цикле for можно использовать дополнительные параметры функции range() – старт и шаг :
>>> for i in range(1, 12, 2): print('*' * i) * *** ***** ******* ********* ***********
4. Для проверки множества условий в цикле for очень удобно использовать словарь:
ops = a, b = int(input('Введите значение a: ')), int(input('Введите значение b: ')) op = input('Введите знак операции: ') if op in ops.keys(): print(eval(ops[op])) else: print('Поддерживаются операции +, -, * и /')
Без словаря код выглядел бы так:
a, b = int(input('Введите значение a: ')), int(input('Введите значение b: ')) op = input('Введите знак операции: ') if op == '-': print(a - b) elif op == '+': print(a + b) elif op == '/': print(a / b) elif op == '*': print(a * b) else: print('Поддерживаются операции +, -, * и /')
5. Несмотря на то, что во многих случаях цикл for – простой, вложенный, с условиями – можно заменить генератором или списковым включением, обычный цикл читается легче – сравните эти примеры:
my_dict =
Обычный цикл for:
for _ in range(int(input())): k, v = input().split(': ') my_dict[k.lower()] = v
Кроме того, решение многих задач с помощью циклов выглядит более понятным и интуитивным – сравните цикл и генератор для вычисления ряда Фибоначчи:
Цикл + кортежи:
f1, f2 = 1, 1 for i in range(int(input())): print(f1) f1, f2 = f2, f1 + f2
Генератор Фибоначчи:
fib = [1, 1] calc = [fib.append(fib[i - 1] + fib[i - 2]) for i in range(2, int(input()))] print(*fib)
6. Вложенные циклы делают код для ввода и вывода матриц (вложенных списков) довольно объемным. Предположим, что нужно написать программу для ввода и вывода матрицы n x m. При n = 4 и m = 3 результат вывода выглядит так:
2 5 6 1 7 8 9 0 3 4 7 5
Сравним код ввода и вывода, написанный с применением вложенных циклов и код, реализованный с помощью генератора:
Вложенные циклы:
n, m = int(input()), int(input()) matrix = [] for i in range(n): matrix.append([]) for j in range(m): temp = input() matrix[i].append(temp) for i in range(n): for j in range(m): print(matrix[i][j], end=' ') print()
n, m = int(input()), int(input()) matrix = [[input() for word in range(m)] for _ in range(n)] [print(*i) for i in matrix]
7. Хотя генераторы и списковые включения являются, по сути, сжатой формой записи цикла, в синтаксисе циклов и генераторов есть различия. Например, в генераторax и списковыx включениях, в отличие от циклов, не используются операторы break и continue – вместо этого условие формулируется по-другому:
st = input() sp = [] for i in st: if i.isalpha(): sp.append(i) else: continue print(sp)
sp2 = [i for i in st if i.isalpha()] print(sp2)
8. Для параллельной итерации вместо вложенного цикла удобнее использовать простой for вместе с функцией zip():
>>> list1 = ['а', 'б', 'в', 'г', 'д'] >>> list2 = [1, 2, 3, 4, 5] >>> for i, j in zip(list1, list2): print(i + str(j)) а1 б2 в3 г4 д5
Другой способ параллельной итерации – использование индекса одного из списков. Для обращения к индексам в range() включают функцию len():
>>> lst1 = ['a', 'b', 'c', 'd', 'e'] >>> lst2 = [11, 12, 13, 14, 15] >>> for i in range(len(lst1)): print(lst1[i], lst2[i]) a 11 b 12 c 13 d 14 e 15
9. Для работы с индексами в цикле часто используется функция enumerate():
>>> my_list = ['хард-рок', 'хэви-метал', 'хип-хоп', 'рэп', 'панк-рок'] >>> for i, j in enumerate(my_list): print(i, j) 0 хард-рок 1 хэви-метал 2 хип-хоп 3 рэп 4 панк-рок
10. При решении задач в циклах часто используют счетчики. Так, например, можно подсчитать количество отрицательных чисел:
lst = [5, 6, -3, 1, 12, -2, -7, 8, 3, 2] k = 0 for i in lst: if i < 0: k += 1 print(f'Количество отрицательных чисел: ')
Количество отрицательных чисел: 3
Практика
Задание 1
Напишите программу, которая получает от пользователя число n и выводит n строк с результатом умножения чисел от 1 до n на символ *.
Пример ввода:
Умножаю * на 1: * Умножаю * на 2: ** Умножаю * на 3: *** Умножаю * на 4: **** Умножаю * на 5: ***** Умножаю * на 6: ****** Умножаю * на 7: *******
n = int(input()) for i in range(1, n + 1): print(f"Умножаю * на : ")
Задание 2
Напишите программу, которая получает от пользователя строку целых чисел, и выводит:
- Количество положительных чисел.
- Произведение всех отрицательных чисел.
- Минимальное и максимальное числа без использования функций min() и max().
Пример ввода:
3 -5 2 4 12 7 3 4 6 9 25 -50 12 35 2 11
Количество положительных чисел: 14 Произведение отрицательных чисел: 250 Минимальное число: -50 Максимальное число: 35
lst = map(int, input().split()) pos = 0 neg_prod = 1 min_num = 0 max_num = 0 for i in lst: if i > 0: pos += 1 elif i < 0: neg_prod *= i if i < min_num: min_num = i elif i >max_num: max_num = i print(f'Количество положительных чисел: ') print(f'Произведение отрицательных чисел: ') print(f'Минимальное число: ') print(f'Максимальное число: ')
Задание 3
Напишите программу, которая создает вложенный список из n строк, полученных от пользователя, и выводит сумму и произведение элементов каждого подсписка (без использования sum() и math.prod()).
Пример ввода:
6 4 5 6 7 8 2 1 3 9 8 6 4 3 2 6 9 7 6 3 2 1 4 5 7 2 7 3 2 1 6
Подсписок 0: сумма чисел = 30, произведение = 6720 Подсписок 1: сумма чисел = 53, произведение = 2903040 Подсписок 2: сумма чисел = 74, произведение = 2508226560 Подсписок 3: сумма чисел = 101, произведение = 5688657838080 Подсписок 4: сумма чисел = 120, произведение = 1592824194662400 Подсписок 5: сумма чисел = 139, произведение = 401391697054924800
n = int(input()) lst = [] for i in range(n): lst.append(list(map(int, input().split()))) summa = 0 prod = 1 for i, j in enumerate(lst): for num in j: summa += num prod *= num print(f'Подсписок : сумма чисел = , произведение = ')
Задание 4
Напишите программу, которая получает от пользователя строку текста и число n, а затем выводит вложенный список, в котором n последовательных элементов принадлежат разным подспискам.
Пример ввода:
абвгдеёжзийклмнопрстуфхцчшщъыьэюя 9
[['а', 'и', 'с', 'ъ'], ['б', 'й', 'т', 'ы'], ['в', 'к', 'у', 'ь'], ['г', 'л', 'ф', 'э'], ['д', 'м', 'х', 'ю'], ['е', 'н', 'ц', 'я'], ['ё', 'о', 'ч'], ['ж', 'п', 'ш'], ['з', 'р', 'щ']]
st = list(input()) n = int(input()) result = [] for i in range(n): result.append(st[i::n]) print(result)
Задание 5
Напишите программу для транспонирования квадратной матрицы.
Пример ввода:
5 1 4 7 8 9 3 5 6 1 0 8 2 4 7 2 8 1 0 3 6 5 4 9 1 2
1 3 8 8 5 4 5 2 1 4 7 6 4 0 9 8 1 7 3 1 9 0 2 6 2
n = int(input()) matrix = [input().split() for _ in range(n)] for i in range(n): for j in range(i, n): matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j] for i in matrix: print(*i)
Задание 6
Напишите программу, которая выводит на экран снежинку размера n x n. Элементы снежинки состоят из символов *, фон – из точек.
Пример ввода:
n = int(input()) snowflake = [['.'] * n for _ in range(n)] for i in range(n): for j in range(n): if i == n // 2 or j == n // 2: snowflake[i][j] = '*' elif i == j or i + j + 1 == n: snowflake[i][j] = '*' for line in snowflake: print(*line)
Задание 7
Напишите программу, которая:
- создает квадратную матрицу из полученных на вход строк;
- проверяет, является ли матрица симметричной относительно побочной диагонали;
- выводит Да или Нет в зависимости от результата.
Пример ввода:
4 1 2 3 1 2 2 2 3 3 3 2 2 4 3 2 1
n = int(input()) matrix = [] for _ in range(n): matrix.append(list(map(int, input().split()))) ans = 'Да' for i in range(n - 1): for j in range(n - i - 1): if matrix[i][j] != matrix[n - j - 1][n - i - 1]: ans = 'Нет' break if ans == 'Нет': break print(ans)
Задание 8
Пример ввода:
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5 1 * 6 = 6 1 * 7 = 7 1 * 8 = 8 1 * 9 = 9 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20 4 * 6 = 24 4 * 7 = 28 4 * 8 = 32 4 * 9 = 36 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45
n = int(input()) for i in range(1, n + 1): for j in range(1, 10): print(i, '*', j, '=', i * j) print()
Задание 9
Напишите программу, которая получает на вход нечетное положительное число n, и выводит треугольник, указывающий вправо.
Пример ввода:
n = int(input()) for i in range(1, n // 2 + 2): print('*' * i, sep='\n') for i in range(n // 2, 0, -1): print('*' * i)
Задание 10
Напишите программу, которая:
- получает на вход x и y координаты n точек;
- подсчитывает количество точек в каждой из координатных четвертей.
Примечание: к четвертям не относят точки, лежащие непосредственно на координатных осях X и Y.
Пример ввода:
8 -4 1 3 6 7 -9 -1 -10 15 5 -12 15 11 17 -10 1
Первая четверть: 3 Вторая четверть: 3 Третья четверть: 1 Четвертая четверть: 1
q_1, q_2, q_3, q_4 = 0, 0, 0, 0 for _ in range(int(input())): x, y = [int(i) for i in input().split()] if int(x) > 0 and int(y) > 0: q_1 += 1 elif int(x) < 0 and int(y) >0: q_2 += 1 elif int(x) < 0 and int(y) < 0: q_3 += 1 elif int(x) >0 and int(y) < 0: q_4 += 1 print(f'Первая четверть: ', f'Вторая четверть: ', f'Третья четверть: ', f'Четвертая четверть: ', sep='\n')
Подведем итоги
Цикл for универсален – его можно использовать для ввода, обработки и вывода данных. Простые циклы удобнее заменять генераторами и списковыми включениями, но сложные лучше использовать в обычном, развернутом виде – это упрощает отладку и чтение кода.
В следующей статье будем изучать особенности цикла while.
- Особенности, сферы применения, установка, онлайн IDE
- Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
- Типы данных: преобразование и базовые операции
- Методы работы со строками
- Методы работы со списками и списковыми включениями
- Методы работы со словарями и генераторами словарей
- Методы работы с кортежами
- Методы работы со множествами
- Особенности цикла for
- Условный цикл while
- Функции с позиционными и именованными аргументами
- Анонимные функции
- Рекурсивные функции
- Функции высшего порядка, замыкания и декораторы
- Методы работы с файлами и файловой системой
- Регулярные выражения
- Основы скрапинга и парсинга
- Основы ООП: инкапсуляция и наследование
- Основы ООП – абстракция и полиморфизм
- Графический интерфейс на Tkinter
- Основы разработки игр на Pygame
- Основы работы с SQLite
- Основы веб-разработки на Flask
- Основы работы с NumPy
- Основы анализа данных с Pandas
