Змея / Говнокод #27273 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
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)}")

Ебучий универ и ебучее задание на питоне. Всё было бы збс, если бы не математика.
Прога считает проценты, бабки, переплаты и чёт ещё, наверное

Запостил: warzon131 warzon131, (Updated )

Комментарии (12) RSS

    • Не, Украина, первый курс, пытаюсь достать проекты за прошлый год, ибо немного проебался
      Ответить
  • для первого курса норм прога

    а чо, в --type" нельзя запихать список значений? argparse разве так не может?
    Ответить
      • например, сразу видно из одной строчки, какие значения поддерживаются

        parser.add_argument('--type', choices=['diff', 'annuity'], default='diff')
        Ответить
        • там дело ДАЖЕ не в том, что видно, а в том, что пользователь получает внятную ошибку

          смысл argparse в том, что бы человек сказал --help, и понял как пользоваться твоим софтом
          Ответить
          • Да я просто не так вопрос понял. Я думал ты список хочешь аргументом в --type хуйнуть.
            Ответить
      • чтобы пользователю сразу сообшалось, что он перредал неверное значение

        в чем вообшще смысл аргпарса?
        Ответить
        • А, ты про список допустимых значений. Да, можно. Я туда, емнип, даже енум передавал и он сам с ним разбирался.
          Ответить
    • Я бы лучше проверку на «annuity» вынес, чтобы три раза это слово не писать.

      А ещё нужно Decimal использовать для вычислений, а то деньги проебутся.
      Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8