Форум сайта python.su
Здравствуйте!
Цель проекта: создать универсальный калькулятора для себя и моих однокурсников на финансовом направлении.
Реализация: пайтон последней версии, telegrambotapi последней версии.
Моя задумка реализации: всунуть уже мною написанный под пк(на консоли только работает), уже имеющийся скрипт - алгоритм вычисления сложной процентой ставки раз в n промежуток времени, под среду телеграмботапи.
Проблема: В чем она, я тольком не пойму - но как понимаю исходя из скудности гугл инфы о калькуляторах на телеграмботапи, телеграм и алгебраические вычисления не сильно дружат.
Скрипт калькулятора на консоли:
K = int(input('Введите первоначальную сумму K: ')) #первоначальная сумма n = int(input('Введите число лет n: ')) #число лет klow = int(input('Число начислений в год ( Год(12), полгода(6) ) k: ')) #квартал пока нету, год и полгода в месяцах r = int(input('Введите сложную годовую процентную ставку r: ')) Knk = int running = True #print('K_n*klow = ' + str(K*(1+r/100*klow)**n*klow)) a = float(1+(r/(100*klow))) w = float(n*klow) c = float(a**w) print("-----> K"+str(w)+" = " + str(K * c))
import telebot bot = telebot.TeleBot('понятное дело что тут придется скрыть)') #keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True) #keyboard1.row('Зум-айди', '/eko') K = int n = int klow = int r = int Knk = int #сверху мы видим собственно переменные которые я создал как в калькуляторе. @bot.message_handler(commands=['start']) def send_welcome(message): bot.send_message(message.chat.id, 'Для начала работы со мной, введи \n/start !!!') bot.send_message(message, "Я - бот курса 111063.\n/mat\n/eko\n/fil\n/his\n/inf\n/eng") #reply_markup=keyboard1 bot.send_message(message.chat.id, 'Калькулятор сложных процентов - /knk') @bot.message_handler(commands=['mat', 'eko', 'fil', 'his', 'inf', 'eng']) def zoomid(message): #дефолт message, uroki - то что в принципе и должно отвечать за заданного в переменной uroki = ['mat', 'eko', 'fil', 'his', 'inf', 'eng'] mat = 7490563693 eko = 9433130879 fil = 8821266565 his = 4792894841 inf = 3273128376 eng = 3377977051 if message.text == '/mat': bot.send_message(message.chat.id, 'Zoom ID старого ублюдка:' + str(mat)) elif message.text == '/eko': bot.send_message(message.chat.id, 'Zoom ID безмикрофонного:' + str(eko)) elif message.text == '/fil': bot.send_message(message.chat.id, 'Zoom ID:' + str(fil)) elif message.text == '/his': bot.send_message(message.chat.id, 'Zoom ID:' + str(his)) elif message.text == '/inf': bot.send_message(message.chat.id, 'Zoom ID:' + str(inf)) elif message.text == '/eng': bot.send_message(message.chat.id, 'Zoom ID:' + str(eng)) #снизу идет уже чисто моя логика, сверху же писалось под исходники #ВВОД ДАННЫХ К Н КЛОУ Р #ОПЕРАЦИЯ #РЕЗУЛЬТ @bot.message_handler(commands=['rez'])#попытка создать команду показывающую результат def calik(message): K = int n = int klow = int r = int Knk = int #print('Knk = ' + str(K*(1+r/100*klow)**n*klow)) #просто прототип вычисления a = float(1+(r/(100*klow))) w = float(n*klow) c = float(a**w) print("-----> K"+str(w)+" = " + str(K * c)) #это тут просто так висит prin = 'K' + eval(str(w)+ '=' + str(K* c)) #тут по сути должен выводиться ответ таким способом #user_result = eval(str(user_num1) + user_proc + str(user_num2)) #копировал с другого кода для прототипа return prin @bot.message_handler(commands=['calc'])#Это попытка создать нечто типа K = int(input()) def k_n_klow_r(message): K = int(str(message.text)) n = int(str(message.text)) klow = int(str(message.text)) r = int(str(message.text)) Knk = int(str(message.text)) calik() #попытка, дабы функция калик вызывалась уже на этом моменте и не приходилось псиать отдельно команду результата bot.polling()
Прикреплённый файлы: bot.py (1,4 KБ)
Офлайн
сначала надо с функцией разобраться что у нее на входе и что на выходе,
я правильно понимаю
def calc(k,n,klow,r,): """Калькулятор финансовый. :param k: первоначальная сумма :param n: число лет :param klow: число начислений в год( Год(12),полгода(6)) :param r: годовая процентная ставка :return list: список из общего числа начислений и итоговая сумма(???здесь поправить) """ a = float(1 + (r / (100 * klow))) w = float(n * klow) c = float(a ** w) out = k*c return [w,out]
rate = calc(1000,3,12,4)
print(f'-----> K{rate[0]}={rate[1]}')
print(calc.__doc__)
-----> K36.0=1127.2718745179145 Калькулятор финансовый. :param k: первоначальная сумма :param n: число лет :param klow: число начислений в год( Год(12),полгода(6)) :param r: годовая процентная ставка :return list: список из общего числа начислений и итоговая сумма(???здесь поправить) Process finished with exit code 0
Офлайн
вот набросок
import telebot #=================================== def calc(k,n,klow,r,): """Калькулятор финансовый. :param k: первоначальная сумма :param n: число лет :param klow: число начислений в год( Год(12),полгода(6)) :param r: годовая процентная ставка :return list: список из общего числа начислений и итоговая сумма(???здесь поправить) """ a = float(1 + (r / (100 * klow))) w = float(n * klow) c = float(a ** w) out = k*c return [w,out] #=================================== bot = telebot.TeleBot('Ваш API') @bot.message_handler(commands=['rez']) def get_message(message): answer = bot.send_message(message.chat.id,"введите через запятую ----> сумма,чило лет,число начислений в год,годовая процентная ставка") bot.register_next_step_handler(answer,message_text_handler) def message_text_handler(message): chat = message.chat.id args = message.text.split(',') list_float = [] if len(args)!=4: bot.send_message(chat,'Недопустимое количество аргументов,должно быть четыре') return for i in args: if i.strip().isdigit(): list_float.append(float(i)) else: bot.send_message(chat,f'недопустимый символ в аргументе {i}') return w,out = calc(*list_float) bot.send_message(message.chat.id,f'-----> K{w}={out}') bot.polling(none_stop=True)
Офлайн