Главная страница

Разработка программного продукта для решения прикладных задач. Тема курсовой работы Разработка программного продукта для решения прикладных задач


Скачать 1.19 Mb.
НазваниеТема курсовой работы Разработка программного продукта для решения прикладных задач
АнкорРазработка программного продукта для решения прикладных задач
Дата06.03.2023
Размер1.19 Mb.
Формат файлаdocx
Имя файлаOtchet.docx
ТипКурсовая
#971818
страница2 из 3
1   2   3

Задание №2

from PyQt5.QtWidgets import *
import gui
import sys

"""
Данная программа служит для работы
С данными о клиентах и их банковских счетах.
Автор: Брянцев Вячеслав Павлович
Дата написания: 19.05.2021
"""


class Exercise(QMainWindow, gui.Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setFixedSize(640, 320)

# Подключаем кнопки к функциям
self.clear_btn.clicked.connect(self.clear)
self.calculate_btn.clicked.connect(self.calculate)

def clear(self):
self.line_edit.setText('')
self.text_edit.setPlainText('')

def calculate(self):
# Счётчик общего количества комманд.
total_commands = 0

# Переменная, которая получает команды из основного поля ввода.
cmd = self.line_edit.text().split(' ')
# Переменная, содержащая все возможные для исполнения команды
cmd_list = ['DEPOSIT', 'WITHDRAW', 'BALANCE', 'TRANSFER', 'INCOME']

# Проходим по полю ввода в поисках команд для исполнения.
for i in range(len(cmd)):
# Если элемент [i] содержится в списке команд:
if cmd[i] in cmd_list:
if total_commands < 20:
# Если элемент [i] равен DEPOSIT
if cmd[i] == cmd_list[0]:
# Увеличиваем значение счётчика команд на 1
total_commands += 1

# Задаём значения переменных. Имя = первое слово после команды, сумма - второе.
name_1 = cmd[i+1]
sum_1 = int(cmd[i+2])

# Открываем файл для редактирования.
with open('Clients.txt', 'r+') as f:
# Переменная, содержащая в себе весь текст из документа, разделённый по пробелам.
text_clients = f.read().split()

# Проверяем наличие имени в text_clients
if name_1 in text_clients:
# С помощью данной переменной будем обновлять текст в документе.
text_to_update = ''
for h in range(len(text_clients)):
if text_clients[h] == name_1:
balance = int(text_clients[h+1]) + sum_1
text_clients[h+1] = str(balance)

# Добавляем данные в text_to_update. После каждого второго элемента
# добавляем строку
for d in range(len(text_clients)):
text_to_update = text_to_update + text_clients[d] + " "
if d % 2 != 0:
text_to_update = text_to_update + '\n'
f.seek(0)
f.write(text_to_update)
else:
text_to_update = name_1 + " " + str(sum_1)
f.seek(0, 2)
f.write(text_to_update)

# Если элемент [i] равен WITHDRAW
elif cmd[i] == cmd_list[1]:
# Увеличиваем значение счётчика команд на 1
total_commands += 1

# Задаём значения переменных. Имя = первое слово после команды, сумма - второе.
name_1 = cmd[i + 1]
sum_1 = int(cmd[i + 2])

# Открываем файл для редактирования.
with open('Clients.txt', 'r+') as f:
# Переменная, содержащая в себе весь текст из документа, разделённый по пробелам.
# text = f.read()
text_clients = f.read().split()

# Проверяем наличие имени в text_clients
if name_1 in text_clients:
# С помощью данной переменной будем обновлять текст в документе.
text_to_update = ''
for h in range(len(text_clients)):
if text_clients[h] == name_1:
balance = int(text_clients[h + 1]) - sum_1
print(balance)
text_clients[h + 1] = str(balance)

# Добавляем данные в text_to_update. После каждого второго элемента
# добавляем строку
for d in range(len(text_clients)):
text_to_update = text_to_update + text_clients[d] + " "
if d % 2 != 0:
text_to_update = text_to_update + '\n'
f.seek(0)
f.write(text_to_update)
else:
text_to_update = name_1 + " " + str(sum_1)
f.seek(0, 2)
f.write(text_to_update)

# Если элемент [i] равен BALANCE:
elif cmd[i] == cmd_list[2]:
total_commands += 1

# Открываем файл для чтения.
with open('Clients.txt') as f:
try:
# Если следующий элемент = команда, то выводим баланс всех клиентов.
if cmd[i+1] in cmd_list:
text = f.read()
self.text_edit.setPlainText(text)
# Иначе - ищем имя клиента в файле и выводим его на экран вместе с балансом
else:
text = f.read()
text = text.split()

if cmd[i+1] in text:
name_1 = cmd[i+1]
for h in range(len(text)):
if text[h] == name_1:
text_to_show = text[h] + ' ' + text[h+1]
self.text_edit.setPlainText(text_to_show)
# Если не находит имя клиента в списке, то выводит NO CLIENT.
else:
self.text_edit.setPlainText('NO CLIENT')

# Если список кончился, вылезает ошибка IndexError.
# Это значит, что команда является последней в списке.
# Поэтому выводим список всех клиентов
except IndexError:
text = f.read()
self.text_edit.setPlainText(text)

# Если элемент [i] равен TRANSFER
elif cmd[i] == cmd_list[3]:
total_commands += 1
name_1 = cmd[i+1]
name_2 = cmd[i+2]
sum_1 = int(cmd[i+3])

with open('Clients.txt', 'r+') as f:
# Переменная, содержащая в себе весь текст из документа, разделённый по пробелам.
text_clients = f.read().split()

# Проверяем наличие имени 1 клиента в text_clients
if name_1 in text_clients and name_2 in text_clients:
text_to_update = ''

for h in range(len(text_clients)):
if text_clients[h] == name_1:
balance_1 = int(text_clients[h+1]) - sum_1
text_clients[h+1] = str(balance_1)

elif text_clients[h] == name_2:
balance_2 = int(text_clients[h+1]) + sum_1
text_clients[h+1] = str(balance_2)

# Добавляем данные в text_to_update. После каждого второго элемента добавляем строку
for d in range(len(text_clients)):
text_to_update = text_to_update + text_clients[d] + " "
if d % 2 != 0:
text_to_update = text_to_update + '\n'
f.seek(0)
f.write(text_to_update)

elif name_1 not in text_clients and name_2 in text_clients:
text_to_update = ''

balance_1 = str(-sum_1)
for h in range(len(text_clients)):
if text_clients[h] == name_2:
balance_2 = int(text_clients[h+1]) + sum_1
text_clients[h+1] = str(balance_2)

for d in range(len(text_clients)):
text_to_update = text_to_update + text_clients[d] + " "
if d % 2 != 0:
text_to_update = text_to_update + '\n'
text_to_update += name_1 + " " + balance_1

f.seek(0)
f.write(text_to_update)

elif name_2 not in text_clients and name_1 in text_clients:
text_to_update = ''

balance_2 = str(sum_1)
for h in range(len(text_clients)):
if text_clients[h] == name_1:
balance_1 = int(text_clients[h+1]) - sum_1
text_clients[h+1] = str(balance_1)

for d in range(len(text_clients)):
text_to_update = text_to_update + text_clients[d] + " "
if d % 2 != 0:
text_to_update = text_to_update + '\n'
text_to_update += name_2 + " " + balance_2

f.seek(0)
f.write(text_to_update)

elif name_1 not in text_clients and name_2 not in text_clients:
text_to_update = ''
balance_1 = str(-sum_1)
balance_2 = str(sum_1)

for d in range(len(text_clients)):
text_to_update = text_to_update + text_clients[d] + " "
if d % 2 != 0:
text_to_update = text_to_update + '\n'

text_to_update += name_1 + " " + balance_1 + '\n'
text_to_update += name_2 + " " + balance_2

f.seek(0)
f.write(text_to_update)

# Если элемент [i] равен INCOME
elif cmd[i] == cmd_list[4]:
total_commands += 1
sum_1 = int(cmd[i+1])
sum_1 = sum_1 / 100 + 1

with open('Clients.txt', 'r+') as f:
# Переменная, содержащая в себе весь текст из документа, разделённый по пробелам.
text_clients = f.read().split()
text_to_update = ''

# Каждый второй элемент - сумма на счёте клиента, поэтому перебираем их.
for s in range(1, len(text_clients), 2):
if int(text_clients[s]) > 0:
text_clients[s] = str(int(int(text_clients[s]) * sum_1))

for d in range(len(text_clients)):
text_to_update = text_to_update + text_clients[d] + " "
if d % 2 != 0:
text_to_update = text_to_update + '\n'

f.seek(0)
f.write(text_to_update)

else:
pass


if __name__ == '__main__':
app = QApplication(sys.argv)
form = Exercise()
form.show()

app.exec()

Задание №3

from PyQt5.QtWidgets import *
import gui
import math
import sys

"""
Данная программа - калькулятор с расширенным инженерным функционалом
Возможностью построчного вывода команд
Пятью слотами памяти
Автор: Брянцев Вячеслав Павлович
Дата написания: 05.05.2021
"""

# Задаём начальные значения для переменных
num = 0.0
newNum = 0.0
sumIt = 0.0
sumAll = 0.0
operator = ""
temp_str = ''
memory_1 = '0'
memory_2 = '0'
memory_3 = '0'
memory_4 = '0'
memory_5 = '0'
digital_display_on = True
opVar = False


class Calculator(QMainWindow, gui.Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setFixedSize(319, 331)
self.setWindowTitle('Калькулятор - обычный режим')

all_memory_clear_buttons = [self.memory_clear_1, self.memory_clear_2, self.memory_clear_3, self.memory_clear_4,
self.memory_clear_5]
all_memory_save_buttons = [self.memory_save_1, self.memory_save_2, self.memory_save_3, self.memory_save_4,
self.memory_save_5]
all_memory_read_buttons = [self.memory_read_1, self.memory_read_2, self.memory_read_3, self.memory_read_4,
self.memory_read_5]
all_memory_plus_buttons = [self.memory_plus_1, self.memory_plus_2, self.memory_plus_3, self.memory_plus_4,
self.memory_plus_5]
all_memory_minus_buttons = [self.memory_minus_1, self.memory_minus_2, self.memory_minus_3, self.memory_minus_4,
self.memory_minus_5]

for i in all_memory_clear_buttons:
i.clicked.connect(self.all_memory_clear)
for i in all_memory_save_buttons:
i.clicked.connect(self.all_memory_save)
for i in all_memory_read_buttons:
i.clicked.connect(self.all_memory_read)
for i in all_memory_plus_buttons:
i.clicked.connect(self.all_memory_plus)
for i in all_memory_minus_buttons:
i.clicked.connect(self.all_memory_minus)

# Списки с кнопками. Нужны, чтобы подключить их к функциям.
nums = [self.zero, self.one, self.two, self.three, self.four, self.five, self.six, self.seven, self.eight,
self.nine]
operators = [self.ce, self.c, self.plus, self.minus, self.multiply, self.divide, self.equals, self.times]
others = [self.squared, self.fraction, self.percent, self.point, self.root, self.switch, self.factorial,
self.asina, self.acosa, self.atga, self.log_xy, self.expansion, self.ce, self.c, self.digital_display]
others_funcs = [self.squared_f, self.fraction_f, self.percent_f, self.point_f, self.root_f, self.switch_f,
self.factorial_f, self.asina_f, self.acosa_f, self.atga_f, self.log_xy_f, self.expansion_f,
self.ce_f, self.c_f, self.digital_display_f]

# Циклы, которые подключают кнопки к функциям.
for i in nums:
i.clicked.connect(self.num_f)
for i in operators[2:]:
i.clicked.connect(self.operator)
for i in range(len(others)):
others[i].clicked.connect(others_funcs[i])

def num_f(self):
global num
global newNum
global opVar
global digital_display_on
global temp_str

sender = self.sender()
newNum = int(sender.text())
setnum = str(newNum)

if opVar is False:
self.main_calculator_window.setPlainText(self.main_calculator_window.toPlainText() + setnum)
else:
if digital_display_on:
self.main_calculator_window.append(setnum)
else:
self.main_calculator_window.setPlainText(setnum)
opVar = False

def equal(self):
global sumIt
global sumAll
global num
global newNum
global operator
global opVar
global digital_display_on

sumIt = 0
if digital_display_on:
try:
dd_num = self.main_calculator_window.toPlainText().split('\n')
dd_num = dd_num[-3:]
num = dd_num[0]
operator = dd_num[1]
newNum = dd_num[-1]
except IndexError:
pass
else:
newNum = self.main_calculator_window.toPlainText()
try:
if operator == "+":
sumAll = float(num) + float(newNum)
elif operator == "-":
sumAll = float(num) - float(newNum)
elif operator == "*":
sumAll = float(num) * float(newNum)
elif operator == "/":
if float(newNum) == 0.0:
sumAll = 'Ошибка! Попытка деления на 0!'
else:
sumAll = float(num) / float(newNum)
elif operator == "x^y":
sumAll = float(num) ** float(newNum)

if digital_display_on:
self.main_calculator_window.append('=' + '\n' + str(sumAll))
else:
self.main_calculator_window.setPlainText(str(sumAll))
except ValueError:
pass

def operator(self):
global sumIt
global num
global opVar
global operator
global digital_display_on

sumIt += 1
if sumIt > 1:
self.equal()

if digital_display_on:
if self.main_calculator_window.toPlainText() == '':
pass
else:
num = self.main_calculator_window.toPlainText()

sender = self.sender()
operator = sender.text()
if digital_display_on:
if operator != '=':
self.main_calculator_window.append(operator)

opVar = True

def all_memory_clear(self):
global memory_1, memory_2, memory_3, memory_4, memory_5

if self.sender() == self.findChild(QPushButton, "memory_clear_1"):
memory_1 = '0'
elif self.sender() == self.findChild(QPushButton, "memory_clear_2"):
memory_2 = '0'
elif self.sender() == self.findChild(QPushButton, "memory_clear_3"):
memory_3 = '0'
elif self.sender() == self.findChild(QPushButton, "memory_clear_4"):
memory_4 = '0'
elif self.sender() == self.findChild(QPushButton, "memory_clear_5"):
memory_5 = '0'

def all_memory_save(self):
global memory_1, memory_2, memory_3, memory_4, memory_5

if self.sender() == self.findChild(QPushButton, "memory_save_1"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_1 = dd_num[-1]
else:
memory_1 = self.main_calculator_window.toPlainText()
elif self.sender() == self.findChild(QPushButton, "memory_save_2"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_2 = dd_num[-1]
else:
memory_2 = self.main_calculator_window.toPlainText()
elif self.sender() == self.findChild(QPushButton, "memory_save_3"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_3 = dd_num[-1]
else:
memory_3 = self.main_calculator_window.toPlainText()
elif self.sender() == self.findChild(QPushButton, "memory_save_4"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_4 = dd_num[-1]
else:
memory_4 = self.main_calculator_window.toPlainText()
elif self.sender() == self.findChild(QPushButton, "memory_save_5"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_5 = dd_num[-1]
else:
memory_5 = self.main_calculator_window.toPlainText()

def all_memory_read(self):
global digital_display_on
global memory_1, memory_2, memory_3, memory_4, memory_5

if self.sender() == self.findChild(QPushButton, "memory_read_1"):
if digital_display_on:
self.main_calculator_window.append(memory_1)
else:
self.main_calculator_window.setPlainText(memory_1)
elif self.sender() == self.findChild(QPushButton, "memory_read_2"):
if digital_display_on:
self.main_calculator_window.append(memory_2)
else:
self.main_calculator_window.setPlainText(memory_2)
elif self.sender() == self.findChild(QPushButton, "memory_read_3"):
if digital_display_on:
self.main_calculator_window.append(memory_3)
else:
self.main_calculator_window.setPlainText(memory_3)
elif self.sender() == self.findChild(QPushButton, "memory_read_4"):
if digital_display_on:
self.main_calculator_window.append(memory_4)
else:
self.main_calculator_window.setPlainText(memory_4)
elif self.sender() == self.findChild(QPushButton, "memory_read_5"):
if digital_display_on:
self.main_calculator_window.append(memory_5)
else:
self.main_calculator_window.setPlainText(memory_5)

def all_memory_plus(self):
global memory_1, memory_2, memory_3, memory_4, memory_5
global digital_display_on

if self.main_calculator_window.toPlainText() != '':
if self.sender() == self.findChild(QPushButton, "memory_plus_1"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_1 = str(float(memory_1) + float(dd_num[-1]))
else:
memory_1 = str(float(memory_1) + float(self.main_calculator_window.toPlainText()))
elif self.sender() == self.findChild(QPushButton, "memory_plus_2"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_2 = str(float(memory_2) + float(dd_num[-1]))
else:
memory_2 = str(float(memory_2) + float(self.main_calculator_window.toPlainText()))
elif self.sender() == self.findChild(QPushButton, "memory_plus_3"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_3 = str(float(memory_3) + float(dd_num[-1]))
else:
memory_3 = str(float(memory_3) + float(self.main_calculator_window.toPlainText()))
elif self.sender() == self.findChild(QPushButton, "memory_plus_4"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_4 = str(float(memory_4) + float(dd_num[-1]))
else:
memory_4 = str(float(memory_4) + float(self.main_calculator_window.toPlainText()))
elif self.sender() == self.findChild(QPushButton, "memory_plus_5"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_5 = str(float(memory_5) + float(dd_num[-1]))
else:
memory_5 = str(float(memory_5) + float(self.main_calculator_window.toPlainText()))
else:
pass

def all_memory_minus(self):
global memory_1, memory_2, memory_3, memory_4, memory_5

if self.main_calculator_window.toPlainText() != '':
if self.sender() == self.findChild(QPushButton, "memory_minus_1"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_1 = str(float(memory_1) - float(dd_num[-1]))
else:
memory_1 = str(float(memory_1) - float(self.main_calculator_window.toPlainText()))
elif self.sender() == self.findChild(QPushButton, "memory_minus_2"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_2 = str(float(memory_2) - float(dd_num[-1]))
else:
memory_2 = str(float(memory_2) - float(self.main_calculator_window.toPlainText()))
elif self.sender() == self.findChild(QPushButton, "memory_minus_3"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_3 = str(float(memory_3) - float(dd_num[-1]))
else:
memory_3 = str(float(memory_3) - float(self.main_calculator_window.toPlainText()))
elif self.sender() == self.findChild(QPushButton, "memory_minus_4"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_4 = str(float(memory_4) - float(dd_num[-1]))
else:
memory_4 = str(float(memory_4) - float(self.main_calculator_window.toPlainText()))
elif self.sender() == self.findChild(QPushButton, "memory_minus_5"):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
memory_5 = str(float(memory_5) - float(dd_num[-1]))
else:
memory_5 = str(float(memory_5) - float(self.main_calculator_window.toPlainText()))
else:
pass

# Функция для включения расширенного режима работы калькулятора
# Расширяет окно, делая доступными для нажатия дополнительные кнопки
def expansion_f(self):
w = self.size().width()
h = self.main_calculator_window.size().height()
if h == 20:
h_window = 233
else:
h_window = 331
if w == 620:
self.setFixedSize(319, h_window)
self.setWindowTitle('Калькулятор - обычный режим')
elif w == 319:
self.setFixedSize(620, 331)
self.setWindowTitle('Калькулятор - расширенный режим')

# Функция расширенного режима цифрового дисплея
def digital_display_f(self):
global digital_display_on
w_window = self.size().width()
h = self.main_calculator_window.size().height()
w = self.main_calculator_window.size().width()

if h == 125:
digital_display_on = False
self.main_calculator_window.setFixedSize(w, 20)
self.main_calculator_window.move(10, 10)
self.widget_calculator.move(10, 35)
if w_window == 319:
h_window = 233
else:
h_window = 331
self.setFixedSize(w_window, h_window)
if h == 20:
digital_display_on = True
self.main_calculator_window.setFixedSize(w, 125)
self.main_calculator_window.move(10, 10)
self.widget_calculator.move(10, 140)
self.setFixedSize(w_window, 331)

# Функция смены знака числа
def switch_f(self):
global num
global newNum
global digital_display_on
global operator

if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
dd_num[-1] = -float(dd_num[-1])
self.c_f()
for i in range(len(dd_num)):
self.main_calculator_window.append(str(dd_num[i]))
else:
num = float(self.main_calculator_window.toPlainText())
num = -num
self.main_calculator_window.setPlainText(str(num))

# Функция очистки одного символа из текстового поля калькулятора
def ce_f(self):
ce_text = self.main_calculator_window.toPlainText()
self.main_calculator_window.setPlainText(ce_text[0:-1])

# Функция полной очистки текстового поля калькулятора
def c_f(self):
global num
global newNum
global sumAll
global operator
global digital_display_on

self.main_calculator_window.clear()

num = 0.0
newNum = 0.0
sumAll = 0.0
operator = ""

# Функция возведения в квадрат
def squared_f(self):
global num
global digital_display_on

if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
dd_num[-1] = int(dd_num[-1]) ** 2
self.main_calculator_window.append('x²' + '\n' + '=' + '\n' + str(dd_num[-1]))

else:
num = float(self.main_calculator_window.toPlainText())
num = num ** 2
self.main_calculator_window.setPlainText(str(num))

# Функция извлечения корня из числа
def root_f(self):
global num
global digital_display_on
global operator

if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
old_num = dd_num[-1]
dd_num[-1] = float(dd_num[-1]) ** 0.5
self.main_calculator_window.append(('√' + old_num + '\n' + '=' + '\n' + str(dd_num[-1])))
else:
num = float(self.main_calculator_window.toPlainText())
if num < 0.0:
self.main_calculator_window.setPlainText('Извлечение корня из отрицательного числа!')
else:
num = num ** 0.5
self.main_calculator_window.setPlainText(str(num))

# Функция по "переворачиванию" числа. (3 -> 1/3; 1/3 -> 3)
def fraction_f(self):
global num
global digital_display_on

if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
dd_num[-1] = 1 / float(dd_num[-1])
self.c_f()
for i in range(len(dd_num)):
self.main_calculator_window.append(str(dd_num[i]))
else:
num = float(self.main_calculator_window.toPlainText())
num = 1 / num
self.main_calculator_window.setPlainText(str(num))

# Перевод полученного числа сначала в тип float, затем в int
# Решает проблему, когда пользователь вводит нецелочисленное число, округляя его и делая целочисленным
def factorial_f(self):
global num
global digital_display_on

if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
old_num = dd_num[-1]
dd_num[-1] = math.factorial(int(float(dd_num[-1])))
self.main_calculator_window.append(old_num + '!' + '\n' + '=' + '\n' + str(dd_num[-1]))
else:
num = int(float(self.main_calculator_window.toPlainText()))
num = math.factorial(num)
self.main_calculator_window.setPlainText(str(num))

# Функция по вычислению арксинуса.
def asina_f(self):
global num
global digital_display_on
# Защита на тот случай, если в строке будет присутствовать что-то помимо цифр.
try:
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
if float(dd_num[-1]) < 0 or float(dd_num[-1]) > 1:
self.main_calculator_window.append('Число не может быть ниже нуля и больше единицы!')
else:
old_num = dd_num[-1]
dd_num[-1] = math.asin(float(dd_num[-1]))
self.main_calculator_window.append('asin(' + old_num + ')' + '\n' + '=' + '\n' + str(dd_num[-1]))

else:
num = float(self.main_calculator_window.toPlainText())
if num > 1 or num < 0:
self.main_calculator_window.setPlainText('Число не может быть ниже нуля и больше единицы!')
else:
num = math.asin(num)
self.main_calculator_window.setPlainText(str(num))
except ValueError:
pass

# Функция по вычислению арккосинуса.
def acosa_f(self):
global num
global digital_display_on
try:
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
if float(dd_num[-1]) < 0 or float(dd_num[-1]) > 1:
self.main_calculator_window.append('Число не может быть ниже нуля и больше единицы!')
else:
old_num = dd_num[-1]
dd_num[-1] = math.acos(float(dd_num[-1]))
self.main_calculator_window.append('acos(' + old_num + ')' + '\n' + '=' + '\n' + str(dd_num[-1]))

else:
num = float(self.main_calculator_window.toPlainText())
if num > 1 or num < 0:
self.main_calculator_window.setPlainText('Число не может быть ниже нуля и больше единицы!')
else:
num = math.acos(num)
self.main_calculator_window.setPlainText(str(num))
except ValueError:
pass

# Функция по вычислению арктангенса.
def atga_f(self):
global num
global digital_display_on
try:
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
if int(dd_num[-1]) < 0:
self.main_calculator_window.append('Введёное число ниже нуля!')
else:
old_num = dd_num[-1]
dd_num[-1] = math.atan(int(dd_num[-1]))
self.main_calculator_window.append('atga(' + old_num + ')' + '\n' + '=' + '\n' + str(dd_num[-1]))

else:
num = int(self.main_calculator_window.toPlainText())
if int(num) < 0:
self.main_calculator_window.setPlainText('Введёное число ниже нуля!')
else:
num = math.atan(num)
self.main_calculator_window.setPlainText(str(num))
except ValueError:
pass

# Функция для вычисления логарифма (между двумя числами требуется ввести любой символ-оператор)
def log_xy_f(self):
global newNum
global num
global sumAll
global digital_display_on
dd_num = self.main_calculator_window.toPlainText().split('\n')

if digital_display_on:
if len(dd_num) >= 3:
newNum = float(dd_num[-1])
num = float(dd_num[-3])
else:
newNum = float(dd_num[-1])

# Вычислить логарифм по Х Y, иначе - вычислить натуральный логарифм. Требует оператор между двумя числами.
if num != 0.0:
if float(newNum) < 0 or float(num) < 0:
self.main_calculator_window.append('Введёное число(числа) меньше нуля.')
pass
else:
if digital_display_on:
dd_log = math.log(float(dd_num[-3]), float(dd_num[-1]))
x = str(dd_num[-3])
y = str(dd_num[-1])
dd_num[-2] = f"log {x} {y}"
self.c_f() # Очищаем экран.
for i in range(len(dd_num)):
self.main_calculator_window.append(str(dd_num[i]))
self.main_calculator_window.append('=' + '\n' + str(dd_log))
else:
newNum = float(self.main_calculator_window.toPlainText())
num = float(num)
newNum = math.log(num, newNum)
self.main_calculator_window.setPlainText(str(newNum))
else:
if float(newNum) < 0:
self.main_calculator_window.append('Введёное число меньше нуля.')
pass
else:
if digital_display_on:
dd_log = math.log(float(dd_num[-1]))
self.c_f()
for i in range(len(dd_num)):
self.main_calculator_window.append('ln' + '(' + str(dd_num[i]) + ')')
self.main_calculator_window.append('=' + '\n' + str(dd_log))
else:
newNum = float(self.main_calculator_window.toPlainText())
newNum = math.log(newNum)
self.main_calculator_window.setPlainText(str(newNum))

# Функция по вычислению процентов от числа и действия с ними. Требует оператора междву двумя числами.
def percent_f(self):
global newNum
global num
global sumAll
global operator
global digital_display_on

# Если пользователь не ввёл второе число, то функция не выполняется.
try:
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
self.c_f()
dd_num[-1] = float(dd_num[-3]) * float(dd_num[-1]) / 100.0
for i in range(len(dd_num)):
self.main_calculator_window.append(str(dd_num[i]))

else:
newNum = float(self.main_calculator_window.toPlainText())
num = float(num)
newNum = (newNum * num) / 100.0
self.main_calculator_window.setPlainText(str(newNum))

except IndexError:
pass

# Функция, которая ставит точку в числе.
def point_f(self):
if digital_display_on:
dd_num = self.main_calculator_window.toPlainText().split('\n')
if "." not in dd_num[-1]:
dd_num[-1] = dd_num[-1] + '.'
self.c_f()
for i in range(len(dd_num)):
self.main_calculator_window.append(str(dd_num[i]))
else:
if "." not in self.main_calculator_window.toPlainText():
self.main_calculator_window.setPlainText(self.main_calculator_window.toPlainText() + ".")


if __name__ == '__main__':
app = QApplication(sys.argv)
form = Calculator()
form.show()

app.exec()
1   2   3


написать администратору сайта