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

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

04.11.2020, 19:55. Показов 2731. Ответов 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
5234 / 3479 / 1175
Регистрация: 21.03.2016
Сообщений: 8,306
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
5234 / 3479 / 1175
Регистрация: 21.03.2016
Сообщений: 8,306
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
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
04.11.2020, 21:14
code lightning, нет. Это тоже не так. В такой постановке задача не имеет решения. Можно только так, как это выше сделал Semen-Semenich
0
 Аватар для Semen-Semenich
5234 / 3479 / 1175
Регистрация: 21.03.2016
Сообщений: 8,306
04.11.2020, 21:28
Catstail, мне кажется просто ошибка в понятии функции. в других языках функция которая ничего не возвращает считается процедурой а в питоне это просто функция и задача скорее всего общая для всех языков. подправьте если что то не точно описал.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 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
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 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
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru