Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/103: Рейтинг темы: голосов - 103, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 28
1

Разобраться с массивом со сдвигом вправо

16.04.2018, 09:28. Показов 19099. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Требуется разобраться с массивом. Массивы в Питоне - для меня новое, вообще обучаюсь на паскале, поэтому пока плохо понимаю Питон.
Требуется циклически сдвигать массив из n- элементов вправо на 1 позицию, результат вывести.
Поняла как сдвинуть и заменить первый на 0, но ка сделать, чтобы a[n-1] считывался и не затирался никак не пойму.

Python
1
2
3
4
5
6
n = int(input())
a = [int(x) for x in input().split()]
for i in range(n-1,0,-1):
                 a[i] = a[i-1]
a[0]=0
print(a)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2018, 09:28
Ответы с готовыми решениями:

Вставить строку со сдвигом вправо
ребята, подскажите, как вставить строку, начиная не со столбца А, а со столбца В,т.е. сдвинуть...

Зашифровать файл циклическим сдвигом вправо
Зашифровать файл циклическим сдвигом вправо Код не работает Помогите, пожалуйста f =...

Добавление в массив чисел путем сдвигом вправо
Всем добрый вечер. Подскажите пожалуйста алгоритм. Если в массиве есть число N, то необходимо...

Автомат мура. Умножение с мл.разрядов со сдвигом суммы вправо
В общем стоит задача : Имеется уже готовая управляющая часть построенная в proteus(вложение 1)...

Умножение шестнадцатиразрядных чисел со сдвигом вправо и влево (К580ВМ80)
Подкиньте, пожалуйста, программку для умножение шестнадцатиразрядных чисел со сдвигом вправо, и...

9
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
16.04.2018, 10:04 2
Вроде так, если я правильно понял условие

Python
1
2
3
4
for i in range(n-1,0,-1):
        a[i] = a[i-1]
a[0]=0
print(a)
0
672 / 475 / 215
Регистрация: 06.09.2013
Сообщений: 1,306
16.04.2018, 10:12 3
yankis, может не лучший вариант в плане использования памяти, но зато иллюстративный:
Python
1
2
3
4
5
n = int(input())
a = [int(x) for x in input().split()]
for i in range(1, n):
    a = [a[-1]] + a[0:n - 1]
    print(a)
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 28
16.04.2018, 11:07  [ТС] 4
Сдвиг почему-то не вправо, а влево получается,
вот . если ввести типа 1,2,3, то выводит не 3,1,2, а 2,3,1
0
672 / 475 / 215
Регистрация: 06.09.2013
Сообщений: 1,306
16.04.2018, 11:48 5
Цитата Сообщение от yankis Посмотреть сообщение
Сдвиг почему-то не вправо, а влево получается,
вот . если ввести типа 1,2,3, то выводит не 3,1,2, а 2,3,1
Вам нужен всего лишь один сдвиг, а не все?
Python
1
2
3
4
n = int(input())
a = [int(x) for x in input().split()]
a = [a[-1]] + a[0:n - 1]
print(a)
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 28
16.04.2018, 12:12  [ТС] 6
Спасибо, оказалось просто.
0
928 / 690 / 269
Регистрация: 10.12.2016
Сообщений: 1,697
16.04.2018, 15:08 7
Python
1
2
3
4
5
6
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> n = 4
>>> l[-n:] + l[:-n]
[6, 7, 8, 9, 0, 1, 2, 3, 4, 5]
>>>
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 28
17.04.2018, 18:35  [ТС] 8
Странно, но задача не проходит, получается, что массив становится строчным при вводе 1 2 3 4 - выводится [4,1,2,3],
попробовала так, но почему-то опять выводится не так, там сдвиг, что не так...
Python
1
2
3
4
5
n = int(input())
a = [int(x) for x in input().split()]
a = [a[-1]] + a[0:n - 1]
for i in a:
    print("%4d" % i, end='')
Добавлено через 8 минут
Переписала так, но ничего не поменялось... Что не так?
Python
1
2
3
4
5
6
7
8
n = int(input())
a = [int(x) for x in input().split()]
s=a[-1]
print(a[-1])
for i in range(n-1,0,-1):
            a[i] = a[i-1]
a[0]=s
print(a)
Пишет на все варианты :
Первый непройденный тест - Неправильный формат вывода- 1

Добавлено через 4 минуты
Вариант такой - показал, что одна ошибка на 8 из 9 тестов
Неправильный формат вывода

Python
1
2
3
4
5
n = int(input())
a = [int(x) for x in input().split()]
a = [a[-1]] + a[0:n - 1]
for i in a:
    print("%4d" % i, end='')
0
928 / 690 / 269
Регистрация: 10.12.2016
Сообщений: 1,697
17.04.2018, 22:49 9
может так ?
Python
1
2
3
4
5
6
7
8
9
>>> l = [int(i) for i in input().split()]
1 2 3 4 5
>>> l
[1, 2, 3, 4, 5]
>>> t = l.pop()
>>> l.insert(0,t)
>>> print(*l)
5 1 2 3 4
>>>
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 28
17.04.2018, 23:02  [ТС] 10
спасибо, ошибка была не в решении, а в выводе, надо было так:

Python
1
2
3
4
5
6
7
n = int(input())
a = [int(x) for x in input().split()]
a = [a[-1]] + a[0:n - 1]
i = 0
while i!=len(a):
    print(a[i])
    i+=1
0
17.04.2018, 23:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2018, 23:02
Помогаю со студенческими работами здесь

умножение младшими разрядами множителя со сдвигом суммы вправо
при реализации возникает такая проблема что код наполовину написан ,а дальше никак не пойму как...

Задать произвольное слово и напечатать его со сдвигом вправо
Доброго времени суток, форумчане. Я только начал осваивать языки программирования и Паскаль вцелом....

Алгоритм умножения двоичных чисел со сдвигом вправо или влево
По причине низкого уровня в программировании(новичок) НУЖЕН АЛГОРИТМ умножения двоичных чисел со...

Заполнить массив строкой с последовательным циклическим сдвигом вправо вниз на n-е количество
Необходимо заполнить массив строкой с последовательным циклическим сдвигом вправо вниз на n-е...

Умножение с младших разрядов множителя и сдвигом суммы частичных произведений вправо
Алгоритм сводится к следующим шагам: 1. Исходное значение суммы частичных произведений принимается...

Зашифровать текст, записав результат в файл кодом Цезаря со сдвигом вправо на К
Сейчас пишу экзамен. Нужна срочная помощь. Как делать я вообще не понимаю Дан файл с русским...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru