Форум сайта python.su
0
Во первых:
Прошу прощенияFishHook
, был не прав, человек горячий, критику переношу плохо, но быстро отхожу и работаю над собой)
Во вторых:
Возможно было правильнее создать новую тему, но я решил продолжить в этой т.к. в своей работе старался учитывать ваши(всех, участвовавших в обсуждении выше) рекомендации, и не знаю стоит ли плодить темы, эта вроде подходит(правил форума не нашел,может плохо искал).
В общем, учебник тот же(М.Доусон) тема та же(списки,словари), задача написать программу в которой пользователь будет называть имя человека, а программа его отца.И предоставить пользователю возможность заменять, добавлять и удалять пары “сын-отец”. Доработать программу , что бы введя имя человека можно узнать кто его дед. При этом программа должна пользоваться тем же словарем с парами “сын-отец”. Добавил возможность дописывать людей с одним именем и разными родителями.
Хотелось бы знать ваше мнение, в правильном направлении ли я двигаюсь, ну и, собственно, подзатыльников, ибо что бы научить котенка писать в горшок , его надо тыкать носом в косяки
Собственно, вот сам код, уже вижу первый подзатыльник - отсутствие комментариев:
lineage = {"София":["Илья"], "Илья":["Андрей"], "Андрей":["Степан"], "Людмила":["Олег"], "Олег":["Спиридон"], "Ирина":["Владимир"], "Тамара":["Николай"]} change = "" while change != "Закончить": print("""\nПрограмма родословная 1 - Выяснить отца и деда человека 2 - Добавить человека 3 - Внести изменения 4 - Удалить человека 5 - Вывести список всех персон 6 - Если вам надоест введите \"Закончить\" """) change = input("Выберите действие:") if change == "1": name = input("Введите имя человека:").title() if name in lineage: all_father = lineage[name] name_list = [] nam_father = len(all_father) print("Под именем ", name, "зарегистрированы следующие персоны:") print("ИМЯ\t\tОТЕЦ\t\tДЕД") for i in all_father: nam_father -= 1 father = all_father[nam_father] grandfather = lineage.get(father,["Неизвестен"]) grandfather = grandfather[0] parents = (name, father, grandfather) name_list.append(parents) name_list.sort() for parents in name_list: name, father, grandfather = parents print(name, "\t\t", father, "\t\t", grandfather) else: print("Такой человек мне не известен, попробуйте его добавить!") elif change == "2": name = input("Введите имя человека:").title() father = input("Введите имя его отца:").title() if name in lineage and father in lineage[name]: print("Такой человек уже есть в списке") else: if name in lineage: lineage[name].append(father) else: lineage[name] = [father] print(name , "добавлен в список") elif change == "3": name = input("Введите имя человека:").title() father = input("Введите имя его отца:").title() if name in lineage and father in lineage[name]: new_father = input("Введите новое имя отца:").title() if new_father in lineage[name]: print("Такой человек уже есть в списке") else: lineage[name].remove(father) lineage[name].append(new_father) print("Родословная", name,"изменена") else: print("Такой человек мне не известен, попробуйте его добавить!") elif change == "4": name = input("Введите имя человека:").title() father = input("Введите имя его отца:").title() if name in lineage and father in lineage[name]: if len(lineage[name]) > 1: lineage[name].remove(father) else: del lineage[name] print(name, "удален из списка") else: print("Такой человек мне не известен, попробуйте его добавить!") elif change == "5": for i in lineage.items(): print(i) else: print("Такого пункта в меню нет!") input("Нажмите Enter что бы выйти")
Офлайн
568
Babay82Кто-то из отцов-основателей, кажется Никлаус Вирт, сказал, что программирование - это алгоритмы + структуры данных.
Хотелось бы знать ваше мнение, в правильном направлении ли я двигаюсь
person1 = {'name': 'John', 'father': None} person2 = {'name': 'Matilda', 'father': person1} person3 = {'name': 'Michael', 'father': person1} people = [person1, person2, person3]
person = people[2] print(person["father"]['father'])
Отредактировано FishHook (Фев. 25, 2019 18:30:35)
Офлайн
0
FishHook
Спасибо, да, вы правы, но тогда нарушалось бы условие задачи- “используя один и тот же словарь с парами ‘ сын - отец’.”. Но ,если честно, ваш вариант гораздо лучше . Сам не додумался. Книгу по структурам скачал а до чтения ещё не дошёл, буду исправлять. Учусь потихоньку.
Офлайн