Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 01.05.2023
Сообщений: 10

Исправление кода

12.05.2023, 20:42. Показов 863. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
if function[0:13] == "сколько будет":
    result = function[14:]
    print("Результат вычисления:",result)
Нужно, чтобы result выводил решение примера, а не сам пример. Как это можно сделать? (без eval)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.05.2023, 20:42
Ответы с готовыми решениями:

Исправление кода
Нужно добавить в описание проблемы тип response в эту строчку raise TypeError('В ответе от API нет корректных данных') и тип response в...

Исправление кода
Нужно исправить код убрав лишние элементы и добавить взаимодействие с файлами вот код: import random result = list() ...

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

7
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
12.05.2023, 20:43
Karin76800, разбить на числа и арифметические знаки, вычислить
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,705
Записей в блоге: 14
12.05.2023, 22:01
Лучший ответ Сообщение было отмечено Welemir1 как решение

Решение

Цитата Сообщение от Karin76800 Посмотреть сообщение
исправление кода
- может выглядеть примерно так:

Python
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# Парсер
 
def parser(formula):
    
    res=[]
    delims="+-*/^()"
    
    par=0  # счетчик скобок
    
    tmp=""
    
    for a in formula:
        
        if a == ' ':
            continue
        
        if a in delims:
            if len(tmp) > 0: 
                res.append(tmp)
            res.append(a)
            tmp=""
            
            if a == "(":
                par+=1
            if a == ")":
                par-=1
            
            if par < 0:
                return -1,None
                
        else:
            tmp=tmp+a
            
    if len(tmp) > 0: 
        res.append(tmp)
        
    return par,res
 
# Борьба с унарным минусом  (либо в начале формулы, либо в контексте "(-ссс"
 
def macro(formula):
    if formula[0]=="-":
        formula="0"+formula
    formula=formula.replace("(-","(0-")    
    return formula
 
# Вычислитель
 
def calc(formula):
    
    def prty(op):   # дать приоритет операции
        if op=="(":
            return 0
        if op=="+" or op == "-":
            return 1
        if op=="*" or op == "/":
            return 2
        if op=="^":
            return 3
            
    def exec():      # выполнить операцию
    
        a2=s1[-1]    # второй операнд
        a1=s1[-2]    # первый операнд
        op=s2[-1]    # операция
        
        # исключить из стеков op,a1 и a2
        
        del s2[-1]
        del s1[-1]
        del s1[-1]
        
        if (op == "+"):
            r=a1+a2
            s1.append(r)
            return
        if (op == "-"):
            r=a1-a2
            s1.append(r)
            return
        if (op == "*"):
            r=a1*a2
            s1.append(r)
            return
        if (op == "/"):
            r=a1/a2
            s1.append(r)
            return
        if (op == "^"):
            r=a1**a2
            s1.append(r)
            return
 
    # Начало
 
    par,lexs=parser(macro(formula))
 
    if (par != 0):
        print("В формуле не сбалансированы скобки!")
        return None
 
    s1=[] # стек чисел
    s2=[] # стек операций
    
    for lex in lexs:
 
        #  Обработка числа
        
        if lex[0] in "0123456789":
            s1.append(float(lex))
            continue
        
        #  Открывающая скобка
        
        if lex == "(":
            s2.append(lex)
            continue
        
        # Оперция 
        
        if lex in "+-*/^":
 
            if len(s2) == 0:       # Первая (s2 пуст)
            
                s2.append(lex)
                continue
            
            else:                  # не первая
            
                p1=prty(lex)       # приотритет пришедшей операции
                p2=prty(s2[-1])    # приоритет вершины стека
                
                if p1 > p2:        # пришла более приоритетная операция
                    s2.append(lex) # в стек ее!
                    continue
                else:              # выполняем то, что накоплено
                
                    while True:   
                        exec()            # выполняем операцию
                        if len(s2) == 0:
                            break
                        p2=prty(s2[-1])   # обновляем приоритет вершины s2
                        if (p2 != p1):
                            break
 
                    s2.append(lex) # в стек пришедшую менее приоритетную операцию
                    continue
                
        if lex == ")":  # выталкиваем все операции до появления открывающей скобки
            
            while s2[-1] != "(":
                exec()
            
            # Удаляем открывающую скобку
            
            del s2[-1]
            
            continue
        
    # Финишное опустошение стреков
 
    while len(s1) > 1:
        
        exec()
        
    return s1[0]    
    
# Запрос
 
ask=input("Введите запрос: ")
 
if ask[0:13] == "сколько будет":
    result = calc(ask[14:])
    print("Результат вычисления:",result)
else:
    print("Не понял...")
Пример диалога:

Введите запрос: сколько будет (5+7)*8-5/12
Результат вычисления: 95.58333333333333
3
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.05.2023, 09:42
Catstail, ничего себе вас задача увлекла) или это из закромов старых?
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,705
Записей в блоге: 14
13.05.2023, 10:19
Welemir1, не так давно писано. Я алгоритм Бауэра студентам преподаю
1
 Аватар для Semen-Semenich
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
13.05.2023, 14:39
Цитата Сообщение от Catstail Посмотреть сообщение
Я алгоритм Бауэра студентам преподаю
жаль что я не ваш студент. мне уже пора алгоритм начисления пенсии изучать
1
13.05.2023, 15:04

Не по теме:

Semen-Semenich, все украдено посчитано за нас )))

Catstail, а вы лекции не записываете?

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,705
Записей в блоге: 14
13.05.2023, 21:12
Цитата Сообщение от Welemir1 Посмотреть сообщение
а вы лекции не записываете?
кое-что записывал. Есть простенький курс по Питону и курс по Лиспу.

Есть отдельная лекция по плавающей точке

Добавлено через 52 секунды
Semen-Semenich, да это все многократно описано...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.05.2023, 21:12
Помогаю со студенческими работами здесь

Исправление ошибок регистра в предложении
Мне необходимо написать код, который исправление ошибок регистра во введенном предложении. Например: 'привет! я Сергей'. Необходимо...

Рекурсия Код не работает, нужно исправление
F(n)=3 при n=1 если n чётно F(n)=n+F(n/2) Если n нечётно и при этом больше одного, то F(n)=3*F(n-1) Нужно найти значение от 115 ...

Исправление кода
я хочу что бы программа после нажатия на turtle мне зачитывали Переменную 'points'. но я не могу разобраться в чём ошибка. Помогите...

Исправление кода
Возможно ли как-нибудь поменять список на множество, но чтобы код оставался рабочим? Ввод: Вводится натуральное число. Вывод: ...

Исправление опечаток
Нужно с помощью регулярных выражений написать программу которая будет исправлять опечатки. Нужно чтобы принимала такую строку&quot; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru