С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 16.09.2020
Сообщений: 14

Функция замены переменных не работает

04.11.2020, 19:55. Показов 2684. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему Функция def не меняет значения переменных?
Можете подправить программу? , не могу разобраться
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def back(x,y):
    tmp = x
    x = y
    y = tmp
a = 3
b = 6
c = 7
d = 9
back(a,b)
back(c,d)
back(a,d)
print(a)
print(b)
print(c)
print(d)
Выводит такие же значения на выходе!!!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.11.2020, 19:55
Ответы с готовыми решениями:

функция замены не работает в c++
задание: Ввести двумерные массивы. Найти наибольший элемент в каждом из массивов. В каждой матрице записать в строку, содержащую этот...

Некорректно работает функция замены
Здравствуйте! Имеется задача: Вводится текст в форму, который шифруется/дешифриуется. Проблема заключается в том, что при...

Не работает функция замены пробелов
Задача следующая: загружаем текст из файла в форму и в нем нужно каждый одиночный пробел заменить 5-ю пробелами Сама функция: void...

24
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
04.11.2020, 20:04
Область видимости в Python

Добавлено через 5 минут
Неизменяемые аргументы функции в Python передаются по значению, а, следовательно, нет возможности написать функцию swap, которую вы пытаетесь написать.
0
0 / 0 / 0
Регистрация: 16.09.2020
Сообщений: 14
04.11.2020, 20:08  [ТС]
И как быть?
Вот собственна само задание

Описать процедуру Swap(X, Y), меняющую содержимое переменных X и Y (X и Y — вещественные параметры, являющиеся одновременно входными и выходными). С ее помощью для данных переменных A, B, C, D последовательно поменять содержимое следующих пар: A и B, C и D, B и C и вывести новые значения A, B, C, D.
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
04.11.2020, 20:13
VAC, а задание точно для Python?
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
04.11.2020, 20:15
Лучший ответ Сообщение было отмечено VAC как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def back(x,y):
    return y,x
 
a = 3
b = 6
c = 7
d = 9
a,b = back(a,b)
c,d = back(c,d)
a,d = back(a,d)
print(a)
print(b)
print(c)
print(d)
2
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
04.11.2020, 20:20
Semen-Semenich, несостыковочка.
Цитата Сообщение от VAC Посмотреть сообщение
Описать процедуру Swap(X, Y), меняющую содержимое переменных X и Y
Процедура - подпрограмма, которая только выполняет операции, без возврата значения.
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
04.11.2020, 20:22
unfindable_404, ответил по теме
Цитата Сообщение от VAC Посмотреть сообщение
Функция замены переменных не работает
ну тогда только как вариант загнать переменные в список а процедура их обменяет местами, хотя процедура должна принимать 2 аргумента вообщем хз как это решать
0
 Аватар для code lightning
0 / 0 / 0
Регистрация: 24.10.2020
Сообщений: 6
04.11.2020, 21:02
Добавлено через 4 минуты
VAC, по идее можно так:
Python
1
2
def back(x, y):
    x, y = y, x
И кстати, то что ты пишешь работает так:
tmp становится равным x, а когда ты меняешь изначально значение x на y, то и tmp становится равным y, если я верно всё помню
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
04.11.2020, 21:14
code lightning, нет. Это тоже не так. В такой постановке задача не имеет решения. Можно только так, как это выше сделал Semen-Semenich
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
04.11.2020, 21:28
Catstail, мне кажется просто ошибка в понятии функции. в других языках функция которая ничего не возвращает считается процедурой а в питоне это просто функция и задача скорее всего общая для всех языков. подправьте если что то не точно описал.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
04.11.2020, 21:37
Semen-Semenich, Вы дали единственно верное решение! (по-моему)
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
05.11.2020, 02:41
VAC, Если формально, то в питоне def описывает функцию, которая в любом случае (есть ли return или нет) всегда что то возвращает. Когда нет return, то возвращается объект None. То есть формально с помощью def можно описать только функцию и нельзя описать процедуру.
https://imgist.ru/chem-procedu... vanii.html
Я не знаю, можно ли в питоне создать процедуру. Если нельзя, то эта задача формально не для питона. Если в питоне можно создать процедуру, то только не используя def.
Хотя по видимому написать процедуру в питоне можно используя блоки написанные на С++ , которые можно вызывать, но они выполняя какие либо действия, ничего не возвращают.

Добавлено через 7 минут
Можно конечно дать свое определение процедуре и называть процедурой функцию, возвращаемое значение которой не используется. Тогда можно использовать и def.

Добавлено через 1 час 27 минут
Цитата Сообщение от VAC Посмотреть сообщение
Описать процедуру Swap(X, Y), меняющую содержимое переменных X и Y (X и Y — вещественные параметры, являющиеся одновременно входными и выходными)
Условие задачи противоречит общепринятому определению процедуры. Процедура не может иметь выходных параметров.
В общем условие задачи не корректное.
Если же писать функцию, то решение дал Semen-Semenich,
0
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
05.11.2020, 10:25
Здравствуйте,
Предложу решение с помощью словаря глобальных переменных, как мне кажется, вполне соответствующее требованиям задачи:

Python
1
2
3
4
5
6
7
8
9
10
def swap(var_name1, var_name2):
    g = globals()
    g[var_name1], g[var_name2] = g[var_name2], g[var_name1]
 
a, b, c, d = 3, 6, 7, 9
print('До обмена значений переменных местами:', a, b, c, d)
swap('a', 'b')
swap('c', 'd')
swap('b', 'c')
print('После обмена значений переменных:', a, b, c, d)
С уважением,
Аксима
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
05.11.2020, 10:36
Аксима, любой ссылочный тип можно использовать. Но дизайн кода...
0
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
05.11.2020, 10:41
Уважаемый Catstail, после вашего замечания по поводу дизайна кода подумалось, что, возможно, будет нежелательно жестко кодировать имена переменных. В таком случае можно воспользоваться функцией id(), возвращающей аналог указателя на переменную.

Вот еще вариант программы:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def get_name(pointer):
    g = globals()
    for var_name in g:
        if id(g[var_name]) == pointer:
            return var_name
 
def swap(pointer1, pointer2):
    g = globals()
    var_name1 = get_name(pointer1)
    var_name2 = get_name(pointer2)
    g[var_name1], g[var_name2] = g[var_name2], g[var_name1]
 
a, b, c, d = 3, 6, 7, 9
print('До обмена значений переменных местами:', a, b, c, d)
swap(id(a), id(b))
swap(id(c), id(d))
swap(id(b), id(c))
print('После обмена значений переменных:', a, b, c, d)
2
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
05.11.2020, 10:43
Аксима, Как я написал выше, Ваша функция возвращает None. Хотя Вы это возвращаемое значение и не используете, но формально Ваша функция не является процедурой, а потому не выполняется условие задачи.
Цитата Сообщение от VAC Посмотреть сообщение
Описать процедуру Swap(X, Y)
0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
05.11.2020, 13:34
Прикольная тема! Однако я чет недопонял:

Цитата Сообщение от Catstail Посмотреть сообщение
любой ссылочный тип можно использовать. Но дизайн кода...
У меня получается, что нет, не любой!
Python
1
2
3
4
5
a,b=111,222
print(a,b)
ssylki={'a':a,'b':b}
ssylki['a'],ssylki['b']=ssylki['b'],ssylki['a']
print(a,b)
В таком случае можно воспользоваться функцией id()
Че за функция?? Никогда не работал с такой, подскажите?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
05.11.2020, 14:08
Цитата Сообщение от КулХацкеръ Посмотреть сообщение
Че за функция?
встроенная https://docs.python.org/3/libr... ight=id#id

Добавлено через 2 минуты
Аксима, ваше решение видимо единственное что хоть как-то подходит, но в первом варианте надо писать имена переменных 'a' а во втором использовать id что не подходит к ТЗ
1
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
05.11.2020, 14:47
Welemir1, спс за ссылку.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
05.11.2020, 17:00
Цитата Сообщение от КулХацкеръ Посмотреть сообщение
Че за функция??
Перевод документации по ссылке, которую дал Welemir1,
Возвращает идентификатор указанного объекта.

id(obj) -> int

obj : Объект, идентификатор которого требуется получить.

Возвращает целое, гарантированно являющееся уникальным и постоянным для объекта на время его существования.

Важное добавление:
"Следует иметь в виду, что некоторые объекты могут иметь один и тот же идентификатор, например: мелкие целые (с -5 по 256), True и False."
Python
1
2
3
4
5
6
7
8
>>> a = 1
>>> b = 1
>>> id(a) == id(b)
True
>>> a = 257
>>> b = 257
>>> id(a) == id(b)
False
Добавлено через 4 минуты
То есть в первом случае a и b содержат ссылки на один и тот же объект в памяти, а во втором случае, a и b содержат ссылки на разные объекты в памяти, с разными адресами.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2020, 17:00
Помогаю со студенческими работами здесь

Не работает функция замены атрибута jquery
Здравствуйте! На странице есть ссылка и список выбора. <a href="http://mysite.ru" class="myclass" rel="nofollow"...

Не работает функция поиска и замены информации в Word
Подскажите пожалуйста почему не работаэт ета функция(поиск и замена информации в WORD"е): function...

Не работает собственная функция обмена значений двух переменных
Не выполняется функция замены значений между двумя переменными. Почему? #include "pch.h" #include "iostream" ...

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

Не работает функция замены последнего отрицательного элемента в массиве на три элемента, равных заданному значению
//Функция поиска последнего отрицательного элемента в массиве и замена его на три элемента, равных заданному значению void...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru