Арифметические строки python задача

Вычисление арифметического выражения, введённого в виде символьной строки

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

Входные данные:
Входная строка содержит запись арифметического выражения.

Выходные данные:
Программа должна вывести результат вычисления переданного ей выражения.

Например:
входные данные:
(2+13)*4-28*(329/(23-17))
выходные данные:
-1452

Калькулятор: вычисление арифметического выражения, введённого в виде символьной строки
Привет,не понимаю в чём смысл задачи) Питон же сам считает) Напишите программу, которая.

Вычислить значение арифметического выражения, записанного в виде символьной строки
Напишите программу, которая вычисляет значение арифметического выражения, записанного в виде.

Вычисление арифметического выражения, введённого пользователем в строку
Cобственно, условие задачи: Пользователь вводит с клавиатуры арифметическое выражение. Например.

Вычислить значение арифметического выражения, введённого в виде строки.
Нужно вернуть значения арифметического выражения введённого в виде строки. Объясните, пожалуйста, .

Эксперт Pascal/Delphi

ЦитатаСообщение от jxstixn Посмотреть сообщение

Эксперт Pascal/Delphi

Строка может быть любая, она вводится, а функция eval,насколько мне известно, действия в скобках не выполняет.

Добавлено через 15 секунд
m0nte-cr1st0, Строка может быть любая, она вводится, а функция eval,насколько мне известно, действия в скобках не выполняет.

Эксперт Pascal/Delphi

ЦитатаСообщение от jxstixn Посмотреть сообщение

ЦитатаСообщение от jxstixn Посмотреть сообщение

expression = input('Что вычислить?') print(eval(expression))

ЦитатаСообщение от jxstixn Посмотреть сообщение

ЦитатаСообщение от jxstixn Посмотреть сообщение

Строка может быть любая, она вводится, а функция eval,насколько мне известно, действия в скобках не выполняет.

Функция eval выполняет любую строку, если эта строка соответствует строке кода в питоне.

Добавлено через 8 минут
Синтаксис:

eval(expression, globals=None, locals=None) -> Результат выполненного выражения

expression : Выражение, которое требуется исполнить, в виде строки. Либо объект кода.

globals=None : Ожидается dict. Словарь глобального пространства, относительно которого следует исполнить выражение. Если указан, но не содержит атрибута __builtins__ данные указанного пространства будут дополнены данными общего глобального пространства, перед разбором выражения. Таким образом, выражение будет иметь доступ ко всем встроенным модулям.

locals=None : Ожидается объект-отображение (например, dict). Локальное пространство, в котором следует исполнить выражение. Если не указано, то используется словарь глобального пространства.
Если оба аргумента опущены, то выражение будет выполнено в среде, где был осуществлён вызов функции.
В случае ошибок возбуждает SyntaxError

Источник

Арифметические операции над строками

Никак не получается решить задачу.
Необходимо посчитать результат арифметического выражения, содержащегося в строковой переменной.
Например:
mystr = «2+3-7»
Скрипт должен вывести на экран -2.

eval использовать нельзя. Надо составить универсальный цикл, который постепенно разбирает строку.
Я создал переменную result = 0 и хочу постепенно результат из цикла выводить туда.

Арифметические операции над числами
Пытаюсь написать программу, производящую арифметические операции над числами, которые не входят в.

Операции над строками
Дня доброго. У меня есть строка из текстового файла. Допустим #какая-то строка Как мне.

Разработать алгоритм и программу на Python, используя строки и операции над строками
Дан текст (2–3 строки) в файле F1. Текст состоит из слов, отделенных друг от друга пробелами.

Задача на строковые типы данных. Разработать алгоритм и программу на Python, используя строки и операции над строками
Описать функцию работы со строкой символов, которая найдет, сколько раз входит в строку некоторый.

Арифметические действия над числами
Арифметические действия над числами обозначены следующими символами: «+» − сложение, «-».

ЦитатаСообщение от Actaeon Посмотреть сообщение

ну давайте начнем с того, что неплохо бы понять 3 вещи сначала:

1. Какие у нас бывают операторы (+-/* и тд).
2. Какие приоритеты у операторов.
3. Есть ли скобки и тд.

Эксперт функциональных языков программированияЭксперт Python

Лучший ответ

Сообщение было отмечено Actaeon как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
def calc(stri): op='' tmp='' def exec_op(op,a1,a2): if op=='+': return a1+a2 elif op=='-': return a1-a2 elif op=='*': return a1*a2 elif op=='/': return a1/a2 for s in stri: if s in ['+','-','*','/']: if op !='': a2=float(tmp) a1=exec_op(op,a1,a2) else: a1=float(tmp) op=s tmp='' else: tmp=tmp+s a2=float(tmp) return exec_op(op,a1,a2) print(calc("2*3+4*5+6"))

С приоритетами, скобками и некоторыми функциями:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
from math import sin,cos,log,exp def calc(formula): def parse(formula): res=[] tmp='' for s in formula: if s in (',','(',')','+','-','*','/','^'): if len(tmp)>0: res.append(tmp) res.append(s) tmp='' else: tmp=tmp+s if len(tmp)>0: res.append(tmp) return res def prty_arn(op): ops=['(','+','-','*','/','^','sin','cos','log','exp'] prt=[0,1,1,2,2,3,3,3,3,3] arn=[0,2,2,2,2,2,1,1,1,1] k=ops.index(op) return (prt[k],arn[k]) def exec_op(op): (_,arn)=prty_arn(op) if arn==2: a2=stack_n.pop() a1=stack_n.pop() else: a1=stack_n.pop() if op=='+': return a1+a2 elif op=='-': return a1-a2 elif op=='*': return a1*a2 elif op=='/': return a1/a2 elif op=='^': return a1**a2 elif op=='sin': return sin(a1) elif op=='cos': return cos(a1) elif op=='exp': return exp(a1) elif op=='log': return log(a1) return None arr_lex=parse(formula) stack_o=[] stack_n=[] for lex in arr_lex: if '9'>=lex[0]>='0': stack_n.append(float(lex)) elif lex=='(': stack_o.append(lex) elif lex==')': while len(stack_o)>0: op=stack_o.pop() if op=='(': break stack_n.append(exec_op(op)) else: return (None,'Несбалансированы скобки-1') else: if len(stack_o)==0: stack_o.append(lex) else: (pn,_)=prty_arn(lex) (po,_)=prty_arn(stack_o[-1]) if pn>po: stack_o.append(lex) else: while True: op=stack_o.pop() stack_n.append(exec_op(op)) if len(stack_o)==0 or stack_o[-1] != po: break stack_o.append(lex) while len(stack_o)>0: op=stack_o.pop() stack_n.append(exec_op(op)) if len(stack_n)==1: return (stack_n[0],'OK') else: return (None,'Несбалансированы скобки-2') #################################################### print(calc("5+7-sin(7*3)")) print(eval("5+7-sin(7*3)"))

Источник

Решение модуля 6.2 «Поколение Python»

Все решения и ответы на модуль (урок) 6.2 из программы «Поколение Python: курс для начинающих».

Целью этого занятия будет научиться работать со строками и производить операции с ними.

Что покажет приведенный ниже фрагмент кода?

mystr = ‘да’
mystr = mystr + ‘нет’
mystr = mystr + ‘да’
print(mystr)

Ответ: данетда

Что покажет приведенный ниже фрагмент кода?

str1 = ‘1’
str2 = str1 + ‘2’ + str1
str3 = str2 + ‘3’ + str2
str4 = str3 + ‘4’ + str3
print(str4)

Ответ: 121312141213121

Что покажет приведенный ниже фрагмент кода?

mystr = ‘123’ * 3 + ‘456’ * 2 + ‘789’ * 1
print(mystr)

Ответ: 123123123456456789

Напишите программу, которая выводит текст:

«Python is a great language!», said Fred. «I don’t ever remember having this much fun before.»

Примечание. Используйте конкатенацию строк.

a = '"Python is a great language!", said Fred. ' b = '"I don' c = "'t ever remember having this much " d = 'fun before."' print(a + b + c + d)

What’s Your Name?

Напишите программу, которая считывает с клавиатуры две строки – имя и фамилию пользователя и выводит фразу:

«Hello [введенное имя] [введенная фамилия]! You just delved into Python».

Формат входных данных
На вход программе подаётся две строки (имя и фамилия), каждая на отдельной строке.

Формат выходных данных
Программа должна вывести текст в соответствии с условием задачи.

Примечание. Между firstname lastname вставьте пробел =)

a = input() b = input() print("Hello", a, b+"!", "You just delved into Python")

Футбольная команда

Напишите программу, которая считывает с клавиатуры название футбольной команды и выводит фразу:

«Футбольная команда [введённая строка] имеет длину [длина введённой строки] символов».

Формат входных данных
На вход программе подаётся строка – название футбольной команды.

Формат выходных данных
Программа должна вывести текст в соответствии с условием задачи.

command = input() dlina = str(len(command)) print('Футбольная команда ' + command + ' имеет длину ' + dlina + ' символов')

Три города

Даны названия трех городов. Напишите программу, которая определяет самое короткое и самое длинное название города.

Формат входных данных
На вход программе подаётся названия трех городов, каждое на отдельной строке.

Формат выходных данных
Программа должна вывести самое короткое и длинное название города, каждое на отдельной строке.

Примечание. Гарантируется, что длины названий всех трех городов различны.

a = input() b = input() c = input() if min (len(a), len(b), len(c)) == len(a): print(a) elif min (len(a), len(b), len(c)) == len(b): print(b) else: print(c) if max (len(a), len(b), len(c)) == len(a): print(a) elif max (len(a), len(b), len(c)) == len(b): print(b) else: print(c)

Арифметические строки

Вводятся 3 строки в случайном порядке. Напишите программу, которая выясняет можно ли из длин этих строк построить возрастающую арифметическую прогрессию.

Формат входных данных
На вход программе подаются три строки, каждая на отдельной строке.

Формат выходных данных
Программа должна вывести строку «YES», если из длин введенных слов можно построить арифметическую прогрессию, «NO» в ином случае.

a = len(input()) b = len(input()) c = len(input()) if a + b + c == (min(a, b, c) + max(a, b, c))/2*3: print("YES") else: print("NO")

Какие значения может принимать строковая переменная s , чтобы в результате выполнения кода было выведено слово «YES»?

if s in ‘abc123abc’:
print(‘YES’)
else:
print(‘NO’)

Цвет настроения синий

Напишите программу, которая считывает одну строку, после чего выводит «YES», если в введенной строке есть подстрока «синий» и «NO» в противном случае.

Формат входных данных
На вход программе подается одна строка.

Формат выходных данных
Программа должна вывести текст в соответствии с условием задачи.

s = input() if 'синий' in s: print('YES') else: print('NO')

Отдыхаем ли?

Напишите программу, которая считывает одну строку, после чего выводит «YES», если в введённой строке есть подстрока «суббота» или «воскресенье», и «NO» в противном случае.

Формат входных данных
На вход программе подается одна строка.

Формат выходных данных
Программа должна вывести текст в соответствии с условием задачи.

s = input() if 'суббота' in s or 'воскресенье' in s: print('YES') else: print('NO')

Корректный email

Будем считать email адрес корректным, если в нем есть символ собачки (@) и точки. Напишите программу проверяющую корректность email адреса.

Формат входных данных
На вход программе подаётся одна строка – email адрес.

Формат выходных данных
Программа должна вывести строку «YES», если email адрес является корректным и «NO» в ином случае.

Примечание. Наличие символов @ и . недостаточно для корректности email адреса, однако их отсутствие гарантировано влечёт за собой неверный email.

str = input() if '@' in str and '.' in str: print('YES') else: print('NO')

Источник

Сумма чисел в строке

Доброго времени суток. На курсе задали задачу:
В виде строки записано арифметическое выражение, например:
«10 + 25 — 12» или «10 + 25 — 12 + 20 — 1 + 3» и т. д. То есть, количество действий может быть разным.
Необходимо выполнить вычисление и результат отобразить на экране. Полагается, что в качестве арифметических операций здесь используется только сложение (+) и вычитание (-), а в качестве операндов — целые неотрицательные числа. Следует учесть, что эти операторы могут быть записаны как с пробелами, так и без них.

Решаю второй день, но видимо явно не хватает знаний.

1 2 3 4 5 6 7 8 9 10 11 12 13 14
stroka = input() for elem in stroka: if elem == "+": elem = elem.replace("+", "_+") elif elem == "-": elem = elem.replace("-", "_-") elif elem == " ": elem = elem.replace(" ", "") elif elem == "'": elem = elem.replace("'", "") lis = list(map(int, stroka.split("_"))) print(sum(lis))

Ну и, как результат — ОШИБКА:
Traceback (most recent call last):
File «/media/medusa/ARHIVE_PROGRAMS/obuchenie/Pithon/Stepik/code/циклы_итераторы_генераторы списков/оператор_цикла_for_функция_enumerate/задача3_арифметические_вычисления.py», line 24, in
lis = list(map(int, stroka.split(«_»)))
ValueError: invalid literal for int() with base 10: ’10+25 — 12′

На курсе никто не помогает — он бесплатный поэтому делай. как знаешь. Решение должно быть через enumerate, но как это увязать с условием пока не пойму. Спасибо.

Источник

Читайте также:  Java lang reflect invocationtargetexception no error message
Оцените статью