2013-11-21 84 views
-2

好吧所以..我試圖編寫一個程序,創建一個兒子字典:父項和另一個字典,其中包含父親:兒子條目。該程序必須向用戶呈現具有五個選項的菜單。我需要幫助,我的字典程序在python

文本文件是這樣的:john:fred,fred:bill,sam:tony,jim:william,william:mark,krager:holdyn,danny:brett,danny:issak,danny:jack,blasaen:zade,david :減肥,adamLseth,賽斯:eNOS的

問題陳述:

編寫創建兒子的字典程序:父親條目,幷包含父親另一詞典:子項。您的程序必須向用戶提供包含五個選項的菜單。以下僅是一個例子:


父/子搜索

0 - 退出

1 - 查找父

2 - 查找祖父

3 - 查找一個兒子

4 - 找到一個孫子


選項0結束程序。

選項1提示用戶輸入一個兒子的名字。如果字典包含兒子:父親對,程序顯示父親。否則,程序應該告訴用戶它不知道父親是誰。

選項2提示用戶輸入孫子的名字。如果字典包含足夠的信息,程序將顯示祖父。否則,程序應該告訴用戶它不知道祖父是誰。

選項3提示用戶輸入父親的姓名。如果字典包含兒子:父親對,程序顯示兒子。否則,程序應告訴用戶它不知道兒子是誰。

選項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

感謝您的幫助。我需要它。

+4

家庭作業援助? – rdodev

+1

您的鏈接位於付費牆後面。 – Nil

回答

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 
+0

我添加了一個圖像,以更好地協助 – user3015794

+2

這顯然是一個家庭作業問題。提供具體的解決方案只會鼓勵更多這類問題。 – rdodev

+0

認真嗎?他的問題是寫一個程序。我提供了2行代碼。 – bcorso

1

讓我們希望沒有人給你一個確切的解決方案,這個作業。

這裏有一些提示,你需要知道你可以用string做什麼,string.split()會幫助你很多。另外,請閱讀你可以用dictionary做什麼。你也需要raw_input function

其餘的是簡單的編程。祝你好運。

+0

感謝提示 – user3015794

+2

Stackoverflow的存在是爲了回答問題,而不是對作業做出道德判斷。 –

+0

你是對的@gnibbler。你和其他人都可以自由地向他提供他所要求的,但我相信我們不應該那樣做。我通過編程學習編程,而不是通過從SO複製完整程序。對於我認識的所有程序員同樣如此。 – Nil

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}