Как менять местами значения внутри переменной? [закрыт]
Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.
Закрыт 8 месяцев назад .
Мне нужно, чтобы в новой переменной старые переменные менялись местами. То есть:
from random import randint x=randint(0,9) y=randint(0,9) trial_1= trial_2= trial_3=
Нужно, чтобы в коде после знака = было 3 цифры (x, y и 0). И, чтобы эти три знака менялись местами в каждой переменной trial. Число 0 не должно стоять в начале переменной. Переменная должна на выходе быть одним числом, то есть, не (1,0,4)((например)), а 104.
Отслеживать
задан 25 мая 2023 в 9:46
55 6 6 бронзовых знаков
ну например. trial_1=[x,y,0] trial_2=[y,x,0] trial_3=[x,0,y]
25 мая 2023 в 10:13
Тогда в переменной trial_1 всегда будет один и тот же порядок, а мне нужно, чтобы при каждом запуске кода, менялся порядок в каждой переменной trial
25 мая 2023 в 10:16
«Число 0 не должно стоять в начале переменной. Переменная должна на выходе быть одним числом, то есть, не (1,0,4)((например)), а 104.» — ну это уже фактически новая задача.
26 мая 2023 в 11:07
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Используйте метод rotate класса deque из модуля collections:
from random import randint from collections import deque x = randint(0,9) y = randint(0,9) dq = deque((x ,y, 0)) print(dq) # deque([5, 6, 0]) dq.rotate() trial_1 = list(dq) dq.rotate() trial_2 = list(dq) dq.rotate() trial_3 = list(dq) print(trial_1) # [0, 5, 6] print(trial_2) # [6, 0, 5] print(trial_3) # [5, 6, 0]
Отслеживать
2,744 4 4 золотых знака 9 9 серебряных знаков 26 26 бронзовых знаков
ответ дан 25 мая 2023 в 10:14
25.4k 4 4 золотых знака 20 20 серебряных знаков 36 36 бронзовых знаков
deque — это метод? разве не класс?
25 мая 2023 в 11:28
класс, конечно. тмелось в виду «метод deque.rotate».
25 мая 2023 в 11:51
Если нужны все возможные перестановки трех значений, то нужно использовать функцию permutations из itertools :
from random import randint from itertools import permutations x = randint(0,9) y = randint(0,9) p = permutations([x, y, 0]) trials = list(p) print(trials)
[(7, 8, 0), (7, 0, 8), (8, 7, 0), (8, 0, 7), (0, 7, 8), (0, 8, 7)]
мне нужно, чтобы при каждом запуске кода, менялся порядок в каждой переменной trial
Если нужно, чтобы при каждом запуске кода выбиралось три случайные перестановки, то нужно с помощью функции random.sample выбирать из списка trials три значения (случайно выбранных) и записывать их в переменные:
trial_1, trial_2, trial_3 = sample(trials, 3) print(trial_1) print(trial_2) print(trial_3)
В принципе, можно было бы использовать random.shuffle (перемешивание), но тогда была бы вероятность, что в двух переменных окажется набор значений в одинаковом порядке.
Обмен значений двух переменных
Данная программа принимает от пользователя два значения и записывает каждое из них в отдельную переменную. Затем она меняет местами значения этих переменных без ввода временной переменной.
Решение задачи
- Пользователь вводит два значения, которые записываются в две разные переменные.
- Значения двух переменных складываются и результат сложения записывается в первую переменную.
- Далее из первой переменной вычитается вторая переменная и результат записывается во вторую переменную.
- Затем из первой переменной вычитаем вторую (с уже обновленным значением) и записываем полученный результат в первую переменную.
- Выводим полученные значения.
- Конец.
Исходный код программы
Ниже приведен исходный код программы по замене значений двух переменных без использования третьей переменной. Далее также будет приведен результат работы этого кода.
a = int(input("Введите значение первой переменной: ")) b = int(input("Введите значение второй переменной: ")) a = a + b b = a - b a = a - b print("a это:", a, " b это:", b)
Объяснение работы программы
- Пользователь вводит значение двух переменных и они записываются в переменные а и b .
- В переменную а записывается сумма а и b .
- В переменную b записывается разность переменной а (в которой сейчас находится сумма первоначальных значений a и b ) и переменной b . Таким образом первоначально введенное значение переменой a перешло в переменную b .
- Теперь вычитаем из переменной a (где сейчас по-прежнему находится сумма первоначально введенных величин) текущее значение переменной b (которое первоначально было записано в переменную a ). Таким образом в переменной a остается только значение, которое в начале программы было записано в переменную b .
- И далее выводим полученные значения на экран.
Результаты работы программы
Case 1 Введите значение первой переменной: 3 Введите значение второй переменной: 5 a это: 5 b это: 3 Case 2 Введите значение первой переменной: 56 Введите значение второй переменной: 25 a это: 25 b это: 56
Примечание переводчика
Все что было описано выше (в пунктах 2, 3, 4), в языке Python можно сделать в одну строчку. И это одно из основных достоинств этого языка программирования.
a=int(input("Введите значение первой переменной: ")) b=int(input("Введите значение второй переменной: ")) a, b = b, a # собственно здесь и происходит обмен значениями print("a это:",a," b это:",b)
Обмен значений переменных

Если попытаться сделать такой обмен, сначала присвоив первой переменной значение второй, а второй — значение первой, ничего не получится. Допустим, есть две переменные a и b . При этом a = 5 и b = 6 . Если выполнить выражение a = b , то переменная a будет хранить число 6, также как и b . Число 5 будет утеряно. После этого выражение b = a теряет смысл, так как b будет присвоено его же текущее значение. В данном случае 6.
Поэтому в программировании при обмене значений переменных обычно вводят третью, играющую роль буфера (буферная переменная). В ней сохраняют значение первой переменной, потом первой присваивают значение второй, a новое значение для второй берут из буфера.
Таким образом классический алгоритм обмена значений двух переменных выглядит так:
a = 5 b = 6 buf = a a = b b = buf
Полная версия программы, которая запрашивает ввод двух значений с клавиатуры:
a = input('a: ') b = input('b: ') buf = a a = b b = buf print('a =', a) print('b =', b)
Пример выполнения программы:
a: 91 b: 162 a = 162 b = 91
Есть другой способ, позволяющий не использовать третью переменную, — арифметический. Он подходит только для чисел.
a = 5 b = 7 a = a + b # 12 b = a - b # 12-7=5 a = a - b # 12-5=7
a = int(input('a: ')) b = int(input('b: ')) a = a + b b = a - b a = a - b print('a =', a) print('b =', b)
Третий вариант — использовать имеющееся в Python множественное присваивание. При этом обмен значений переменных выполняется одной строкой кода:
>>> a = 10 >>> b = 20 >>> a, b = b, a >>> a 20 >>> b 10
Почему такое возможно? В Питоне есть такая структура данных как кортеж.
При выполнении a, b = b, a интерпретатор Python сначала получает значения связанные с переменными b и a (правая часть) и помещает их в кортеж, в данном случае получится (10, 20) . После этого он связывает каждый элемент кортежа в определенной позиции с переменными в той же позиции, но расположенными слева.
Таким образом можно поменять значения не только двух переменных, также трех и более. Кроме того в Python можно обменивать значения переменных разных типов. Это связано с тем, что тип данных в Питоне привязан не к переменной, а к значению:
>>> a = 14 >>> b = 18 >>> c = 16 >>> a,b,c = c,a,b >>> a,b,c (16, 14, 18) >>> d = 4.56 >>> e = "hi" >>> d,e = e,d >>> d 'hi' >>> e 4.56
X Скрыть Наверх
Решение задач на Python
Ошибка сервера в приложении ‘/’.
Описание: На сервере возникла ошибка приложения. Текущая пользовательская настройка ошибок для этого приложения не позволяет удаленно просматривать сведения об ошибке данного приложения (из соображений безопасности). Однако, сведения можно просматривать в браузерах, запущенных на локальном сервере.
Сведения: Для разрешения просмотра сведений данного сообщения об ошибке на локальном сервере создайте тег в файле конфигурации «web.config», который находится в корневом каталоге текущего веб-приложения. В теге следует задать атрибут «mode» со значением «Off».
Примечания: Отображаемую в данный момент страницу ошибок можно заменить на пользовательскую страницу ошибок, изменив атрибут «defaultRedirect» тега конфигурации приложения таким образом, чтобы он содержал URL-адрес пользовательской страницы ошибок.