Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
import math
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--type")
parser.add_argument("--principal", type=int)
parser.add_argument("--periods", type=int)
parser.add_argument("--interest", type=float)
parser.add_argument("--payment", type=float)
args = parser.parse_args()
choose = args.type
p = args.principal
n = args.periods
i = args.interest
a = args.payment
if i is None or p is None and a is None:
print("Incorrect parameters.")
exit(0)
i = (i * 0.01) / (12 * 1)
if choose == "diff":
m = 1
overpayment_all = 0
while m <= n:
d = math.ceil(p / n + i * (p - ((p * (m - 1)) / n)))
m += 1
overpayment_all += d
print(f"Month {m - 1}: payment is {d}")
print()
print(f"Overpayment = {overpayment_all - p}")
elif choose == "annuity" and a is None:
a = math.ceil(p * (i * math.pow((1 + i), n)) / (math.pow((1 + i), n) - 1))
print(f"Your monthly payment = {a}!")
over = a * n - p
print(f"Overpayment = {math.ceil(over)}")
elif choose == "annuity" and p is None:
p = int(a / (i * math.pow(1 + i, n) / (math.pow(1 + i, n) - 1)))
print(f"Your loan principal = {p}!")
m = 1
over = a * n - p
print(f"Overpayment = {math.ceil(over)}")
elif choose == "annuity":
n = math.ceil(math.log(a / (a - i * p), 1 + i))
zxc = math.ceil(math.log(a / (a - i * p), 1 + i))
years = 0
while n >= 12:
n -= 12
years += 1
if years == 0:
print(f"It will take {n} months to repay this loan!")
over = a * zxc - p
print(f"Overpayment = {math.ceil(over)}")
elif n == 0:
print(f"It will take {years} years to repay this loan!")
over = a * zxc - p
print(f"Overpayment = {math.ceil(over)}")
else:
print(f"It will take {years} years and {n} months to repay this loan!")
over = a * zxc - p
print(f"Overpayment = {math.ceil(over)}")
Ебучий универ и ебучее задание на питоне. Всё было бы збс, если бы не математика.
Прога считает проценты, бабки, переплаты и чёт ещё, наверное
а чо, в --type" нельзя запихать список значений? argparse разве так не может?
смысл argparse в том, что бы человек сказал --help, и понял как пользоваться твоим софтом
в чем вообшще смысл аргпарса?
А ещё нужно Decimal использовать для вычислений, а то деньги проебутся.