def calculate_budget():
total_budget = 0
while True:
amount_str = input("Amount needed(0 - stop): ")
if amount_str == 'stop':
break
amount = int(amount_str)
if amount
Python
Помогите исправить код
ммм балдежный код в цикле
def calculate_budget():
total_budget = 0
while True:
amount_str = input("Amount needed(0 - stop): ")
if amount_str == 'stop' or amount_str == "0": break
if (amount_str.isnumeric()):
amount = int(amount_str)
if amount
Императивный подход сдаёт позиции. Пиши по-питоньему:
1) Никакого дублирования кода.
2) Никакой вереницы else-if-ов.
3) Ввод семантически отделён от вывода и подсчёта суммы, но хронологически всё это выполняется именно так, как у тебя в программе (если в ней поправить отступы). Питоновские итераторы - мощная штука.
4) И всё это записано в 2 раза меньшим количеством лексических единиц, чем у тебя.
Правда, не выводится промпт. Для этого нужны дополнительные определения:
def calculate_budget():
MSGS = ("Amount below average.", "Optimal amount.", "Approval required!")
amts = (int(s) for s in iter(input, 'stop'))
amtsp = (print(MSGS[max(3, min(a // 2000, 5)) - 3]) or a for a in amts)
print(sum(amtsp))
calculate_budget()
Пример: 12000
Approval required!
10000
Approval required!
9999
Optimal amount.
8001
Optimal amount.
7999
Amount below average.
1
Amount below average.
stop
48000
1) Никакого дублирования кода.
2) Никакой вереницы else-if-ов.
3) Ввод семантически отделён от вывода и подсчёта суммы, но хронологически всё это выполняется именно так, как у тебя в программе (если в ней поправить отступы). Питоновские итераторы - мощная штука.
4) И всё это записано в 2 раза меньшим количеством лексических единиц, чем у тебя.
Правда, не выводится промпт. Для этого нужны дополнительные определения:
def calculate_budget():
MSGS = ("Amount below average.", "Optimal amount.", "Approval required!")
amts = (int(s) for s in iter(lambda: input('Amount needed (or stop): '), 'stop'))
amtsp = (print(MSGS[max(3, min(a // 2000, 5)) - 3]) or a for a in amts)
print(sum(amtsp))
calculate_budget()
def calculate_budget():
total_budget = 0
while True:
amount_str = input("Amount needed(0 - stop): ")
if amount_str == 'stop':
break
amount = int(amount_str) # unindent this line
if amount
Николай Гаврилов
не работает
Николай Гаврилов
stop
Похожие вопросы
- Помогите исправить код на питоне я постоянно проигрываю в камень ножницы бумага и игра не идёт до трех побед
- Помогите исправить ошибку в коде. Python
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- Кто поможет сократить код на tkinter
- Помогите написать код в питон
- Язык Python, помочь с кодом (не много)
- Помогите с кодом в python
- Помогите с кодом дискорд бота на питоне
- Помогите с кодом питон
- Помогите написать код в python