У меня есть текст, "остаток 5, когда 45 делится на 8"
Я просто хочу назначить оператору разделения '/' программно к тексту "Разделите" и оценивайте 45/8 и получите результат (остаток 5). Таким образом, я проверяю, что текст правильный.
Я пробовал это ...
word= "45 divided by 8"
rep=word.replace('divided by','/')
print(rep)
Но я получаю 45/8, а не 5 как остаток
0
Ravi S Ranjan
30 Сен 2019 в 18:21
1 ответ
Лучший ответ
Поскольку речь идет о переводе, словарь - хорошая идея:
translations = {
'divided by': '//',
'multiplied by' : '*',
'times' : '*',
'seven': '7',
}
def evaluate(sentence):
for k, v in translations.items():
sentence = sentence.replace(k, v)
result = eval(sentence)
return result
#examples
sentences = [
"45 divided by 8",
"45 multiplied by 8",
"4 times 2 divided by seven",
"4 times 2 times seven",
]
for s in sentences:
print(s, 'evaluates to ', evaluate(s))
# displays:
# 45 divided by 8 evaluates to 5
# 45 multiplied by 8 evaluates to 360
# 4 times 2 divided by seven evaluates to 1
# 4 times 2 times seven evaluates to 56
Обратите внимание, что люди часто рекомендуют ast.literal_eval
вместо eval
, см. E.g. Использование Eval () python () vs. ast.literal_eval ()?
0
Demi-Lune
30 Сен 2019 в 19:45
Похожие вопросы
Связанные вопросы
Новые вопросы
python-3.x
По вопросам программирования Python, относящегося к версии языка 3+. Используйте более общий тег [python] для всех вопросов Python и добавляйте его только в том случае, если ваш вопрос зависит от версии. Используйте теги [python-2.x] для вопросов Python 2.