если любое математическое выражение в виде строки и в списке, как вы собираетесь решить это в Python - PullRequest
0 голосов
/ 31 октября 2019
s = ['2','+','3']
for i in s:
    if i == '+':
        w = int(i+1)+int(i-1)
print(w)

произошла ошибка, которая очевидна

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

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

eval(''.join(s)) 

подойдет. Но если у вас есть более сложные выражения, например,

s = ['e','^','2']

, вам понадобятся правила для интерпретации ^, скажем, с np.power и e как np.exp.

0 голосов
/ 31 октября 2019

Если вы хотите решить любое математическое выражение в формате строки и списка. Сначала вы должны знать, как работает нотация Infix / Postfix для математических вычислений выражений с использованием стека. Если вы не хотите их использовать, просто отсканируйте список слева направо и выполните операции, как показано ниже, и вы можете изменить его для нескольких операторов в соответствии с вашими требованиями.

s = ['2','+','3','-','5']
ans=int(s[0])
i=1
while(i<len(s)-1):
    if(s[i]=='+'):
        ans +=int(s[i+1])
    elif(s[i]=='-'):
        ans -=int(s[i+1])
    elif(s[i]=='*'):
        ans *=int(s[i+1])
    elif(s[i]=='/'):
        ans /=int(s[i+1])
    i+=1    
print(ans) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...