View difference between Paste ID: HCDSy3PQ and F1pLSc2x
SHOW: | | - or go back to the newest paste.
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