как сдвинуть код влево в python
Как сдвинуть блок кода
Когда вы пишете программу, особенно большую, то экономия времени становится как никогда актуальной. И здесь даже сэкономленные секунды в итоге складываются в часы, а то и дни (в зависимости от того, насколько сложна ваша программа).
Поэтому все профессиональные программисты стараются использовать возможности среды разработки на “всю катушку”.
В этой статье я расскажу об одной из фишек, которая используется довольно часто (во всяком случае мной) и которая на самом деле экономит время и нервы.
Итак, суть вопроса: довольно часто вы пишите, например, такой код:
В этом случае новичок делает так:
И так много много раз, потому что в большой программе таких действий приходится выполнять немало.
Но эти действия можно выполнить намного проще, потому что почти во всех современных средствах разработки есть сочетания клавиш, которые позволяют лёгким движением руки сдвинуть не одну строку, а целый блок кода, как вправо, так и влево.
Для этого просто выделяем в редакторе блок кода, который надо сдвинуть, и нажимаем нужное сочетание клавиш.
Как сдвинуть код вправо
Чтобы сдвинуть блок кода вправо в Lazarus, нажмите сочетание клавиш
CTRL + I
Чтобы сдвинуть блок кода вправо в Delphi, нажмите сочетание клавиш
CTRL + SHIFT + I
Как сдвинуть код влево
Чтобы сдвинуть блок кода влево в Lazarus, нажмите сочетание клавиш
CTRL + U
Чтобы сдвинуть блок кода влево в Delphi, нажмите сочетание клавиш
CTRL + SHIFT + U
Настройки клавиш в Lazarus
В Lazarus можно определить другие сочетания клавиш для выполнения этих действий (сдвига блока текста). Возможно, есть такое и в Delphi. Но утверждать не берусь. Потому что в моей старой версии такого нет, а в новых может и есть, но у меня нет новых версий, чтобы это проверить.
В Lazarus это делается через меню
В открывшемся окне выбрать
На этой вкладке вы можете изменить сочетания клавиш для сдвига кода. Для этого надо:
Там же можно проверить, нет ли конфликтов с другими комбинациями (то есть не задействована ли выбранная вами комбинация для других операций).
Кроме этого, вы можете поставить галочку напротив надписи ТАБ МЕНЯЕТ ОТСТУП БЛОКОВ, и тогда сдвигать блок кода можно просто одной клавишей TAB. Правда, таким образом можно сдвигать код только вправо. Но комбинации клавиш для сдвига кода вправо/влево остаются работать, так что установить эту галочку будет не лишним.
Как сдвинуть код влево в python
Шустрый
Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007
Репутация: 1
Всего: 1
Люди!
Я снова к вам обращаюсь за помощью! Простите меня, бестолковую!
Задание заключается вот в чем:
то есть в калькуляторе это будет выглядеть так:
Эта задача снова на использование цикла while, причем один в другом.
Я как-то недавно писала о задаче с удалением дубликатов:
Насколько я понимаю, она очень похожа на эту, но тут мне не совсем понятно, как в новом задании поступать с переменными i и j.
λcat.lolcat
Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich
Репутация: 6
Всего: 173
Шустрый
Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007
Репутация: 1
Всего: 1
Проблема в том, что при всем чтении учебников я едва понимаю, как все это работает.
А как быть, если сдвиг нужен в обратную сторону?
Т.е. вместо [1, 2, 3, 4, 5, 6] получить [0, 1, 2, 3, 4, 5]
λcat.lolcat
Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich
Репутация: 6
Всего: 173
А можно поинтересоваться, какими именно учебниками пользуетесь?
Шустрый
Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007
Репутация: 1
Всего: 1
Теоретической частью я более или менее овладела, а вот применить знания на практике не получается, почти никогда ничего не работает.
Препод велел еще сделать циклические сдвиги, когда в первом случае список [1, 2, 3, 4, 5, 6] превращается в [6, 1, 2, 3, 4, 5], а в другом превращается [2, 3, 4, 5, 6, 1]
λcat.lolcat
Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich
Репутация: 6
Всего: 173
Цитата(Paranorma @ 21.1.2007, 20:53 |
Россум, Дрейк, Откидач (тот же Tutorial, только по русски), «Учимся программировать вместе с Питоном» |
Шустрый
Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007
Репутация: 1
Всего: 1
Да, по Чаплыгину книга вообще хорошая.
А как превратить a = [1, 2, 3, 4, 5, 6] в a = [6, 5, 4, 3, 2, 1].
Могу конечно и так написать, но мне то через while надо:
Одинокий волк
Профиль
Группа: Участник
Сообщений: 360
Регистрация: 25.10.2005
Где: #vingrad
Репутация: 3
Всего: 15
Программа копирует элементы их массива a[] в a2[] в обратном порядке, дальше освобождаем массив
a[] от его старых элементов а потом присваиваем ему элементы массива a2[]
Код |
a = [1, 2, 3, 4, 5, 6] a2 = [] # Создаем дополнительный массив I = len(a)-1 # Запоминаем длинну a[] массива в I aLen = len(a) # Запоминаем длинну a[] массива в aLen |
Remember, st1ng3r
/server irc.ircline.ru /j #vingrad
λcat.lolcat
Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich
Репутация: 6
Всего: 173
Шустрый
Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007
Репутация: 1
Всего: 1
Эксперт
Профиль
Группа: Модератор
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом
Репутация: нет
Всего: 36
Опытный
Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь
Репутация: 1
Всего: 34
λcat.lolcat
Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich
Репутация: 6
Всего: 173
Цитата(Paranorma @ 20.1.2007, 21:57 |
Эта задача снова на использование цикла while |
Vadim A. Kazantsev
Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia
Репутация: 7
Всего: 14
Цитата(Void @ 24.1.2007, 17:43 |
Я не считаю этот способ преподавания правильным, но c’est la vie. |
Ну почему же? На ранних стадиях обучения программированию, которые, очевидно, осваивает Paranorma, главное — научиться придумыват и реализовывать своими руками элементарные алгоритмы, пользуясь примитивами, а не [сколь бы то ни было] продвинутыми методами и фишками языка.
Вот моё «безопасное» (не портящее массив-аргумент, а создающее новый) решение для задачи реверса массива (списка):
Ниже приведено понравившееся мне решение задачи левого и правого сдвигов массива (списка) slav0nic‘а с форума http://python.com.ua/forum/.
a = [1, 2, 3, 4, 5, 6]
print a
print » > 2″, right_move(a, 3)
имхо так покрасивше В)
сдвигается по 1 элементу за цикл
slav0nic =
LJ: «http://slav0nic.livejournal.com»>
def simple_dup(a):
b = []
for x in a:
b.append(x)
return b
a = [1, 2, 3, 4, 5, 6]
print a
print » > 2″, right_move(a, 3)
λcat.lolcat
Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich
Репутация: 6
Всего: 173
Произвольный сдвиг можно и попроще записать.
Шустрый
Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007
Репутация: 1
Всего: 1
Народ! тут такая проблемка.
Короче, вот как мне записать это задание:
Но не работает ведь! HELP.
Vadim A. Kazantsev
Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia
Репутация: 7
Всего: 14
З.Ы.
i += 1 # Почему ты боишься использовать такую форму?
# Она очень удобна.
# Да, на самом деле, и проста в понимании.
# Она дословно означает: «увеличить значение переменной i на единицу».
# И писать меньше, и с точки зрения человеческой логики 1 команда вместо 2-х
# («сложить i c единицей» и «присвоить переменной i вычесленное значение»).
Шустрый
Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007
Репутация: 1
Всего: 1
Цитата(Paranorma @ 25.1.2007, 23:09 |
З.Ы. i += 1 # Почему ты боишься использовать такую форму? # Она очень удобна. # Да, на самом деле, и проста в понимании. # Она дословно означает: «увеличить значение переменной i на единицу». # И писать меньше, и с точки зрения человеческой логики 1 команда вместо 2-х # («сложить i c единицей» и «присвоить переменной i вычесленное значение»). |
λcat.lolcat
Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich
Репутация: 6
Всего: 173
Эксперт
Профиль
Группа: Модератор
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом
Репутация: нет
Всего: 36
Цитата(Paranorma @ 26.1.2007, 03:28 |
Я не боюсь, по мне эта форма тоже проста и понятна, но препод ругает за ее использование. smile |
Опытный
Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия
Репутация: 2
Всего: 50
Цитата(Paranorma @ 26.1.2007, 00:28 |
Я не боюсь, по мне эта форма тоже проста и понятна, но препод ругает за ее использование. |
Эксперт
Профиль
Группа: Модератор
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом
Репутация: нет
Всего: 36
Цитата(Artemios @ 26.1.2007, 14:27 |
Мда. Бывает smile А какую он аргументацию приводит? На Паскаль не похоже? smile |
Опытный
Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006
Репутация: нет
Всего: 1
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman Циклический сдвиг строкиЦиклический сдвиг строки Напишите программу, которая будет сдвигать строки на указанное число позиций влево (если сдвиг положительный) или вправо (если отрицательный). Формат ввода Формат вывода Ввод Вывод Помощь в написании контрольных, курсовых и дипломных работ здесь. |
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Циклический сдвиг массива влево
Напишите программу, которая выполняет циклический сдвиг элементов массива влево на R элементов.
Циклический сдвиг отрезка массива влево
Напишите программу, которая выполняет циклический сдвиг части массива, начиная с элемента с номером.
Отфильтровать список и проверить на циклический сдвиг
Имеется список X, содержащий более чем 100 тысяч списков одинаковой длины (не более 10) из.
Циклический сдвиг элементов массива вправо
Дан одномерный массив числовых значений, насчитывающий N элементов. Выполнить перемещение.
Выполнить циклический сдвиг массива вправо на 4 элемента
Напишите программу для выполнения циклического сдвига массива вправо на 4 элемента питон
Циклический сдвиг списка вправо или влево на указанное число позиций
def func(l, n): return l + l try: s=input(‘Введите список чисел через пробел: ‘) l.
BestProg
Битовые операторы
Связанные темы
Поиск на других ресурсах:
1. Назначение битовых операторов. Перечень
Язык Python поддерживает работу с двоичными разрядами (битами) целочисленных величин, где каждый бит числа рассматривается в отдельности. Для обеспечения этого в Python используются так называемые битовые или поразрядные операторы, которые реализуют общеизвестные битовые операции. Поддержка битовых операторов есть также в других языках программирования.
В битовых операторах (операциях) каждый операнд рассматривается как последовательность двоичных разрядов (бит), которые принимают значение 0 или 1 (двоичная система исчисления). Над этими разрядами можно выполнять известные операции (логическое «И», логическое «ИЛИ» и т.д.)
Перечень битовых операторов языка Python в порядке убывания приоритета следующий:
2. Битовый оператор
В битовом операторе (операции)
Пример.
Операторы сдвига влево и сдвига вправо >> сдвигают каждый бит на одну или несколько позиций влево или вправо. Общая форма операторов следующая
Рисунок 1. Работа операций: а) сдвига влево (умножение на 2); b) сдвига вправо >> (целочисленное деление на 2)
Если нужно помножить число на 16, то нужно сдвинуть это число на 4 бита влево. Если нужно разделить число на 8, то нужно сдвинуть это число на 3 бита вправо. Скорость выполнения операций сдвига выше в сравнении с операциями умножения и деления на числа кратные 2 в степени N ( N – количество сдвинутых бит).
Пример.
Результат работы программы
4. Битовый оператор & (И, AND). Пример
Каждый целочисленный операнд рассматривается как набор бит, над любым из которых выполняется побитовая операция «И».
На рисунке 2 показана работа битовой операции «И».
Рисунок 2. Битовый оператор & «И»
Как видно из рисунка, бит в позиции 0 первого операнда ( x ) вычисляется с битом в позиции 0 второго операнда ( y ), соответственно бит в позиции 1 первого операнда ( x ) вычисляется с битом в позиции 1 второго операнда ( y ) и т.д. При таких вычислениях результирующее значение любого бита определяется по следующим формулам:
Пример.
Результат работы программы
5. Битовый оператор ^ (исключающее ИЛИ, XOR). Пример
Битовый оператор исключительное ИЛИ обозначается символом ^ и выполняет операцию сложения по модулю 2 для любого бита операндов. Общая форма оператора следующая
Оператор исключающего ИЛИ (XOR) оперирует двоичными разрядами. Каждый операнд рассматривается как последовательность бит. Результат побитового исключающего ИЛИ определяется по следующим формулам
На рисунке 3 отображен пример битового исключающего ИЛИ для двух операндов.
Рисунок 3. Битовый оператор «исключающее ИЛИ»
Пример.
Результат работы программы
6. Битовый оператор | ИЛИ (OR). Пример
Общая форма битового оператора | следующая
На рисунке 4 продемонстрирована работа битового оператора ИЛИ на примере двух произвольных операндов
Рисунок 4. Битовый оператор ИЛИ
Пример.
Результат работы программы
7. Примеры использования битовых операторов
Пример 1. Вытянуть из числа 4,5,6 биты и определить их целочисленное значение.
Результат работы программы
Пример 2. Умножить значения двух чисел. В первом числе взять биты, которые размещенные в позициях 0-5. Во втором числе взять биты, которые размещены в позициях 0-7.