好吧..我正在尝试编写一个程序来创建一个儿子字典:父条目和另一个包含父:子条目的字典。该程序必须向用户提供一个包含五个选项的菜单。
文本文件是这样的:john:fred,fred:bill,sam:tony,jim:william,william:mark,krager:holdyn,danny:brett,danny:issak,danny:jack,blasaen:zade,david:节食者,adamLseth,seth:enos
问题陈述:
编写一个程序,创建一个son的字典:父条目和另一个包含father:son条目的字典。您的程序必须向用户显示包含五个选项的菜单。以下仅为示例:
父亲/儿子查找器
0 - 退出
1 - 找一位父亲
2 - 找一位祖父
3 - 寻找儿子
4 - 找一个孙子
选项0结束程序。
选项1提示用户输入儿子的名字。如果字典包含son:father对,则程序显示父亲。否则,程序应该告诉用户它不知道父亲是谁。
选项2提示用户输入孙子的名字。如果字典包含足够的信息,程序将显示祖父。否则,程序应告诉用户它不知道祖父是谁。
选项3提示用户输入父亲的姓名。如果字典包含son:father对,则程序显示子。否则,程序应告诉用户它不知道儿子是谁。
选项4提示用户输入祖父的姓名。如果字典包含足够的信息,程序将显示孙子。否则,程序应该告诉用户它不知道孙子是谁。
程序必须创建字典结构并根据提供给您的文件中包含的数据填充它。此外,程序必须继续要求用户选择菜单,直到用户选择退出。
到目前为止,我有这个。我还没有走得太远......
sons_fathers = {}
fathers_sons = {}
#open filename: names.dat
fo = open("names.dat", "r")
data = fo.read()
print (data)
for line in fo:
这是流程图:![流程图] [1]
https://jsu.blackboard.com/bbcswebdav/pid-2384378-dt-content-rid-3427920_1/xid-3427920_1
感谢您的帮助。我需要它大声笑。
答案 0 :(得分:1)
您如何描述您的解决方案,我认为字典不是您想要的。
密钥必须是唯一的。
# wont work, keys aren't unique
father_son = {'danny':'brett', 'danny':'issak', 'danny':'jack'}
但是,您可以尝试使用列表作为值的字典:
father_son = {'danny':['brett','issak', 'jack']}
if 'danny' in father_son.keys() and 'brett' in father_son['danny']:
#do something
或者您可以使用存储对的2元组列表:
father_son = [('danny', 'brett'), ('danny', 'issak'), ('danny', 'jack')]
if ('danny', 'brett') in father_son:
#do something
答案 1 :(得分:1)
让我们希望没有人能为您提供这个家庭作业的精确解决方案。
这里有一些提示,你需要知道你可以用string做些什么,string.split()会对你有所帮助。另外,请阅读dictionary可以执行的操作。您还需要raw_input function
其余的是简单的编程。祝你好运。
答案 2 :(得分:0)
sons_fathers = {} # one father per son
fathers_sons = {} # one or many sons per father, use list or
# set for the values
with open("names.dat", "r") as fo: # use context manager to close file automatically
for line in fo: # ?? is there only one line, or one pair per line??
# do something with line
# assume you extracted "son" and "father"
sons_fathers[son] = father
if father in fathers_sons:
fathers_sons[father].add(son)
else:
fathers_sons[father] = {son}