Форум сайта python.su
0
JOHN_16Я не против!
и да и нет. Да - если вы хотите педантично последовательно следовать всему что написано в конкретно этой книге. Нет - если вы действительно хотите обучиться языку и программированию в целом, то про такой узкий подход надо забыть сразу. Программисту свойственно широко черпать информацию и из разных источников, и не останавливатсья на достигнутом.
И еще, не читал Доусона, но в целом могу сказать что учебные примеры в реальные жизни часто не используются. Ибо на то они и учебные. Так что на них зацикливаться может и вовсе не стоит.
Офлайн
0
Может поздно, а может кому и пригодиться, исходя из изученного в книге до главы в которой эта задача включительно, у меня получилось вот( то что я изучил в этой книге до этого момента, весь опыт в программировании, который у меня есть):
print("""Для изменения характеристики героя введите её номер: 1 - Здоровье 2 - Сила 3 - Мудрость 4 - Ловкость """) character = [["Здоровье",0] , ["Сила",0] , ["Мудрость",0] , ["Ловкость",0] , ["Нераспределенное",30]] choice = "" while choice != "хватит": for i in character: print(i) choice = int(input("Выберите характеристику для изменения:")) value = int(input("Введите число на которое изменяете начение, если уменьшить то отрицательное:")) character[choice-1][1] += value character[4][1] -= value if character[4][1] <= 0: print("У вас нет такого количества свободных очков, свободные очки в пункте - Нераспределенное!") character[4][1] += value character[choice-1][1] -= value
Офлайн
568
Babay82
Позволю себе маленький совет по чистоте кода. Ваша программа нарушает принцип DRY
Офлайн
0
FishHook
FishHookА можно поинтересоваться в чем именно? Погуглил информацию по DRY не совсем понял в чем нарушение?
Babay82Позволю себе маленький совет по чистоте кода. Ваша программа нарушает принцип DRY
Офлайн
568
Babay82
Очевидно, что если вы захотите проапгрейдить свою программу и “Мудрость” переназвать “Знанием”, то исправления коснутся двух частей программы
print("""Для изменения характеристики героя
введите её номер:
1 - Здоровье
2 - Сила
3 - Мудрость # ТУТ
4 - Ловкость
""")
character = [["Здоровье",0] ,
["Сила",0] ,
["Мудрость",0] , # И ТУТ
["Ловкость",0] ,
["Нераспределенное",30]]Офлайн
0
FishHook
Я изучаю программирование вообще( не именно я зык Python) месяц, по часу / два ( а иногда ни одного) в день. По книге Доусона. Тут задача стояла, с помощью изученного к данному моменту материала( с 1й по 5ю главу- это типы, переменные, ветвление, циклы while и for, строки, кортежи, списки, словари и всё)) , написать программу которая между 4мя характеристиками распределяет 30 очков, и при этом что бы была возможность вернуть их обратно и перераспределить. Код писался непосредственно только для выполнения этой задачи, без дальнейших планов модификации, исключительно в целях усвоения пройденного материала(верхняя строка описание дописалась уже после , для порядка). Меня интересует оценка непосредственно самого кода выполнения программы, относительно поставленных задач?
Офлайн
0
FishHook
А DRY у нас ещё впереди, будем изучать и применять
Офлайн
294
Babay82Ну как вам сказать, ИМХО тут нехватает “защиты от дурака”. Вы сделали только контроль нераспределенных характеристик при списывании, а где контроль при возврате? Тоесть я могу ввести -10000 и получу 10030 нераспределенных очков сходу.
Код писался непосредственно только для выполнения этой задачи, без дальнейших планов модификации, исключительно в целях усвоения пройденного материала(верхняя строка описание дописалась уже после , для порядка). Меня интересует оценка непосредственно самого кода выполнения программы, относительно поставленных задач?
[code python][/code]
Офлайн
568
Babay82
Код писался непосредственно только для выполнения этой задачи, без дальнейших планов модификации, исключительно в целях усвоения пройденного материала(верхняя строка описание дописалась уже после , для порядка). Меня интересует оценка непосредственно самого кода выполнения программы, относительно поставленных задач?
character[4][1] -= value
Babay82Отлично! У вас есть все, чтобы написать программу более правильно. Попробуйте.
переменные, ветвление, циклы while и for, строки, кортежи, списки, словари и всё
Отредактировано FishHook (Фев. 21, 2019 05:06:10)
Офлайн
0
PEHDOM
print("""Для изменения характеристики героя введите её номер: 1 - Здоровье 2 - Сила 3 - Мудрость 4 - Ловкость """) character = [["Здоровье",0] , ["Сила",0] , ["Мудрость",0] , ["Ловкость",0] , ["Нераспределенное",30]] choice = "" while choice != "хватит": for i in character: print(i) choice = int(input("Выберите характеристику для изменения:")) value = int(input("Введите число на которое изменяете начение, если уменьшить то отрицательное:")) character[choice-1][1] += value character[4][1] -= value if character[4][1] < 0 or character[4][1] > 30: print("Вы превысили лимит! Сумма всех очов не может быть больше 30!") character[4][1] += value character[choice-1][1] -= value

Офлайн