Как обновить переменную в python
Перейти к содержимому

Как обновить переменную в python

  • автор:

Обмен значений переменных

Обмен значений переменных

Если попытаться сделать такой обмен, сначала присвоив первой переменной значение второй, а второй — значение первой, ничего не получится. Допустим, есть две переменные 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

Python: Изменение переменной

Само слово «переменная» подсказывает, что ее можно менять. И действительно, со временем внутри программы значения переменных могут изменяться.

# greeting - переводится как приветствие greeting = 'Father!' print(greeting) # => Father! greeting = 'Mother!' print(greeting) # => Mother! 

Имя осталось тем же, но внутри появились другие данные. Отметим, что переменные в Python не требуют специального объявления. Вместо этого переменная объявляется, когда ее впервые используют в программе.

Переменные — мощная и в то же время рисковая вещь. Нельзя сразу с уверенностью сказать, что внутри нее записано — сначала надо проанализировать код, который находится перед переменной. Именно этим занимаются разработчики во время отладки, когда пытаются разобраться, почему программа работает не так, как задумано.

Задание

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

Обратите внимание: в данном задании вам предстоит писать код между строчками с комментариями # BEGIN и # END (об этом говорилось ранее, но это первый раз, когда вы встречаетесь с таким форматом).

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

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

В моей среде код работает, а здесь нет ��

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя ��

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

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно ��

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

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

Определения

  • Переменная — способ сохранить информацию и дать ей имя для последующего использования в коде.

Как мне сделать обновление переменной/функции?

Я пишу программу, в которой при нажатии кнопки включается функция, которая берет текст из буфера обмена, кое как изменяет этот текст и вставляет обратно в буфер обмена.
Как мне сделать так, что бы переменная, которая хранит этот текст, обновлялась либо через какой-то промежуток времени, или при изменении данных буфера обмена (предпочтительнее), или вообще хоть как то работало автоматически.
Я в гугле искал, не нашел.

  • Вопрос задан более трёх лет назад
  • 306 просмотров

Комментировать

Решения вопроса 1

А на счёт проверки, самое тупое решение, чтобы не думать — создать функцию в которой будет переменная из старой информацией и в цыкле While True каждую секунду будем получать данные с буфера и if’ом проверять одинаковы ли они

Ответ написан более трёх лет назад

Onigire @Onigire Автор вопроса

Когда я делаю функции по типу while true, у меня программа зависает и выключается.

ловите ошибки через try, except тогда

Ответы на вопрос 0

Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python
  • +1 ещё

Error Connecting: HTTPSConnectionPool(host=’url’, port=443) как решить?

  • 1 подписчик
  • час назад
  • 7 просмотров

Как обновить значение переменной в цикле for Python после каждой итерации?

Всем привет, я пока что новичок в python, балуюсь с кодом, мне нужно обновлять значение переменной Zombie.hp после каждой смерти зомби, чтобы жизни не уходили ниже нуля
Zombie.hp = 20 использовать не хочу, т.к собираюсь увеличивать количество жизней. Буду очень признателен если поможете.

from time import sleep import random class Player(): hp = 100 class Zombie(): hp = 20 damage = 1 class Wave(): count_of_zombies = 5 exist_zombies = True class Pistol(): firerate = 1 damage = 5 for zombie in range(Wave.count_of_zombies): while Wave.exist_zombies: sleep(Pistol.firerate) shoot = input('') if shoot == '' or shoot.split() == ' ': Zombie.hp -= Pistol.damage print(f'Жизней: ') if Zombie.hp 
  • Вопрос задан более трёх лет назад
  • 1968 просмотров

Комментировать

Решения вопроса 2

Системный администратор

Ну поставь какой-нибудь Zombie.default_hp и после смерти Zombie.hp=Zombie.default_hp.

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

Big dreamer

Перед while добавить
NewZombie = Zombie()
И далее по коду заменить Zombie на NewZombie?

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

Ответы на вопрос 0

Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python
  • +1 ещё

Error Connecting: HTTPSConnectionPool(host='url', port=443) как решить?

  • 1 подписчик
  • час назад
  • 7 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *