Сжатие списка в python - PullRequest
       9

Сжатие списка в python

0 голосов
/ 23 апреля 2020

Я делаю простой калькулятор в python, и у меня есть вопрос, но сначала вот мой код.

no1, sin , no2 = [str(no1) for no1 in input().split()]

If sin == "+" :                                                
    print(int(no1) + int(no2)

Мой вывод

 5 + 2                                             
 7      

Здесь вы можете увидеть что я ставлю пробел между 5, + и 2, но я не хочу ставить пробел между ними, но если я это сделаю, это показывает ошибку?

Ответы [ 4 ]

2 голосов
/ 23 апреля 2020

Если вы используете регулярное выражение с группой, re.split сохранит разделитель в выводе:

re.split(" *(\+) *","5+2")

['5', '+', '2']

Будет проще использовать, когда вы начнете анализировать несколько операторов:

re.split(" *([\+\-\*/]) *","51 + 2*38.5 - 8/2")

['51', '+', '2', '*', '38.5', '-', '8', '/', '2']
0 голосов

Метод split() по умолчанию разделяет вашу строку на пробелы и новые строки, поэтому

'5 + 2'.split() равно ['5', '+', '2']

, но

'5+2'.split() равно ['5+2']

0 голосов
/ 23 апреля 2020

Вы можете просто сделать калькулятор, используя это

print(eval(input()))

Например,

5+2 даст вам 7

5-2 даст вам 3

5*2 даст вам 10

Вы можете использовать выражение как 1+2+3-2 и 2*3/2

0 голосов
/ 23 апреля 2020

Просто переберите ввод, не разбивайте, он будет перебирать символы

no1, sin, no2 = [str(no1) for no1 in input()]
...