Разделение переменной на переменные

Рейтинг: 0Ответов: 1Опубликовано: 05.02.2023

Допустим, на вход подается строка: 2 + x = 12 программа должна разделить это на 4 переменные:

first = 2
second = x
third = 12
task = "+"

как такое сделать?

Ответы

▲ -1Принят

Вы можете использовать регулярные выражения для вашей задачи (или нет - см. примечание в конце):

import re

inp = "2 + x = 12"     # или  inp = input()  для ввода из консоли
first, task, second, __, third = re.split(r"\s+", inp)

first = int(first)
third = int(third)

После этого кода будут значения переменных такие:

first = 2
second = "x"
third = 12
task = "+"

Объяснение:

  1. Функция split() модуля re (т.е. re.split()) принимает как первый параметр регулярное выражение, для которого второй параметр будет делиться на части.

    В регулярном выражении r"\s+":

    • \s значит пробел (space) или табулятор (или другой пустой символ),
    • + значит, что такой символ может повториться.

    Значит, строка inp будет делиться на основании присутствия подстрок из пустых символов.

  2. Таким образом, результатом использования функции re.split() будет список

    ["2", "+", "x", "=", "12"]
    

    из которого вытащим отдельные элементы так называемой распаковкой списка:

    first, task, second, __, third = ...  
    

    Для ненужного элемента = мы использовали (чудесное) имя __, чтобы ясно было видеть, что нам его не надо.


Примечание:

В вашем конкретном случае, когда между отдельными частями находятся только пробелы, возможно обойтись без регулярных выражений (import re) а применить только стандартную функцию split():

first, task, second, __, third = inp.split()