ivandev

Untitled

Oct 27th, 2021
727
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from math import floor
  2.  
  3. rates = {1: "Доллары", 2: "Eвро", 3: "Рубли"}
  4.  
  5.  
  6. def how_much_money():
  7.     dollars = input("Введи сколько долларов у тебя:    ")
  8.     while not dollars.isdigit():
  9.         dollars = input("Неверное значение! Должно быть целое число! Введи сколько у тебя долларов:")
  10.     else:
  11.         dollars = [int(dollars)]
  12.  
  13.     euros = input("Введи сколько euro у тебя:    ")
  14.     while not euros.isdigit():
  15.         euros = input("Неверное значение! Должно быть целое число! Введи сколько у тебя eвро:    ")
  16.     else:
  17.         euros = [int(euros)]
  18.  
  19.     rubles = input("Введи сколько рублей у тебя:    ")
  20.     while not rubles.isdigit():
  21.         rubles = input("Неверное значение! Должно быть целое число! Введи сколько у тебя рублей:    ")
  22.     else:
  23.         rubles = [int(rubles)]
  24.  
  25.     return {1: dollars, 2: euros, 3: rubles}
  26.  
  27.  
  28. def exchange_rates(item: int):
  29.     if item == 1:
  30.         dollar = input("Введи сколько стоит доллар в рублях:    ")
  31.         while not dollar.isdigit():
  32.             dollar = input("Введи сколько стоит доллар в рублях:    ")
  33.         return int(dollar)
  34.     elif item == 2:
  35.         euro = input("Введи сколько стоит евро в рублях:")
  36.         while not euro.isdigit():
  37.             euro = input("Введи сколько стоит евро в рублях:")
  38.         return int(euro)
  39.     elif item == 3:
  40.         return 1
  41.     else:
  42.         return None
  43.  
  44.  
  45. def get_amount(_from: str, _to: str, how_much: dict):
  46.     from_max = how_much.get(int(_from))
  47.     to_max = how_much.get(int(_to))
  48.  
  49.     amount = input(f"Напиши сумму конвертации. Максимум: {from_max}     ")
  50.  
  51.     ex_from = exchange_rates(int(_from))
  52.     ex_to = exchange_rates(int(_to))
  53.     result = floor((ex_from * int(amount)) / ex_to)
  54.     if amount.isdigit():
  55.         if int(amount) <= from_max[0]:
  56.             if result < to_max[0]:
  57.                 from_max[0] -= int(amount)
  58.                 to_max[0] += int(amount)
  59.                 return result
  60.             else:
  61.                 print(f"Конечная сумма не может быть больше чем {to_max}!")
  62.                 get_amount(_from, _to, how_much)
  63.         else:
  64.             print(f"Сумма не может быть больше чем {from_max}!")
  65.             get_amount(_from, _to, how_much)
  66.     else:
  67.         print("Сумма должна быть числом!")
  68.         get_amount(_from, _to, how_much)
  69.  
  70.  
  71. def convert(how_much: dict):
  72.     _from = input("Выбери, что перевести: 1. Доллар 2. Евро 3. Рубль    ")
  73.  
  74.     while not _from.isdigit():
  75.         _from = input("Это не число! Выбери от 1 до 3, что перевести: 1. Доллар 2. Евро 3. Рубль   ")
  76.     else:
  77.         while not int(_from) in range(1, 4):
  78.             _from = input("Неверное значение! Выбери от 1 до 3, что перевести: 1. Доллар 2. Евро 3. Рубль    ")
  79.  
  80.     _to = input("Выбери, во что перевести: 1. Доллар 2. Евро 3. Рубль   ")
  81.  
  82.     while not _to.isdigit():
  83.         _to = input("Это не число! Выбери от 1 до 3, что перевести: 1. Доллар 2. Евро 3. Рубль   ")
  84.     else:
  85.         while not int(_to) in range(1, 4):
  86.             _to = input("Неверное значение! Выбери от 1 до 3, что перевести: 1. Доллар 2. Евро 3. Рубль   ")
  87.  
  88.     res = get_amount(_from, _to, how_much)
  89.     return {"amount": res, "from": _from, "to": _to}
  90.  
  91.  
  92. how_much = how_much_money()
  93.  
  94.  
  95. def main():
  96.     print(f"У тебя {how_much[1]} долларов, {how_much[2]} евро и {how_much[3]} рублей")
  97.     res = convert(how_much)
  98.     print(f"Ты конвертировал {rates[int(res.get('from'))]} в {rates[int(res.get('to'))]} И"
  99.           f" получил сумму {res['amount']} {rates[int(res.get('to'))]}")
  100.     print(f"Теперь у тебя {how_much[1]} долларов, {how_much[2]} евро и {how_much[3]} рублей")
  101.  
  102.     ask = input("Продолжить работу? (y/n)")
  103.    
  104.     while ask not in ("y", "n"):
  105.         ask = input("Выбери y или n. Продолжить работу? (y/n)")
  106.     if ask == "y":
  107.         main()
  108.     elif ask == "n":
  109.         print("---------- Программа закончила работу -----------")
  110.  
  111.  
  112. main()
  113.  
RAW Paste Data