Advertisement
Guest User

Untitled

a guest
Apr 27th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.47 KB | None | 0 0
  1. # Delak Jure
  2. # VS
  3. # Windows
  4. '''
  5. Potrebno je v Pythonu narediti meni, ki uporabniku omogoča naslednje možnosti:
  6.  Izpis vseh oseb v izbrani hiši
  7.  Izpis vseh znancev za izbrano osebo (torej vseh mrežnih sosedov)
  8.  Izpis vseh znancev, ampak ločeno po hišami (samo za Romea in Julijo)
  9.  Izpis osebe s največ znancev
  10. Na koncu shraniti omrežje v formatu po izbiri, tako da vse informacije glede omrežja ostanejo
  11. shranjene
  12. '''
  13. import matplotlib.pyplot as plt
  14. import networkx as nx
  15. #from matplotlib import    (izberemo posamezno funkcijo)
  16. graf=nx.Graph()
  17. #kreiramo vozlišča
  18. vozlisca=['Nurse','Tybalt','Friar Laurence','Capulet','Romeo','Benvolio','Montague',
  19. 'Escalus','Mercutio','Paris','Juliet']
  20. graf.add_nodes_from(vozlisca)
  21. print graf.nodes()
  22. #dodajanje povezav
  23. povezave=[('Juliet','Nurse'),
  24.     ('Juliet','Tybalt'),
  25.     ('Friar Laurence','Juliet'),
  26.     ('Juliet','Romeo'),
  27.     ('Juliet','Capulet'),
  28.     ('Tybalt','Capulet'),
  29.     ('Capulet','Escalus'),
  30.     ('Capulet','Paris'),
  31.     ('Romeo','Friar Laurence'),
  32.     ('Romeo','Benvolio'),
  33.     ('Romeo','Mercutio'),
  34.     ('Benvolio','Montague'),
  35.     ('Montague','Escalus'),
  36.     ('Mercutio','Escalus'),
  37.     ('Mercutio','Paris'),
  38.     ('Romeo','Montague'),
  39.     ('Paris','Escalus')]
  40. graf.add_edges_from(povezave)
  41. nx.draw(graf,with_labels=True)
  42. #---dodajanje hiš v atribute---
  43.  
  44.     #capuleti
  45. graf.node['Juliet']['hisa']='House of Capulet'
  46. graf.node['Capulet']['hisa']='House of Capulet'
  47. graf.node['Tybalt']['hisa']='House of Capulet'
  48.     #montague
  49. graf.node['Romeo']['hisa']='House of Montague'
  50. graf.node['Benvolio']['hisa']='House of Montague'
  51. graf.node['Montague']['hisa']='House of Montague'
  52.     #verona
  53. graf.node['Escalus']['hisa']='Rulling house of Verona'
  54. graf.node['Mercutio']['hisa']='Rulling house of Verona'
  55. graf.node['Paris']['hisa']='Rulling house of Verona'
  56.     #brez hiše
  57. graf.node['Nurse']['hisa']='nima hiše'
  58. graf.node['Friar Laurence']['hisa']='nima hiše'
  59.  
  60. montague={}
  61. capulet={}
  62. verona={}
  63. brez={}
  64.  
  65. hise={}
  66. nx.set_node_attributes(graf,'hisa',hise)
  67. atribut=nx.get_node_attributes(graf,'hisa')
  68. nx.write_gml(graf,"graf_gml.gml")
  69. input1=input('Za izpis vseh oseb v izbrani hiši vtipkaj 1, za izpis vseh znancev za izbrano osebo (torej vseh mrežnih sosedov) vtipkaj 2,za izpis vseh znancev, ampak ločeno po hišami (samo za Romea in Julijo) vtipkaj 3,za izpis osebe s največ znancev vtipkaj 4: ')
  70.  
  71. #izpis oseb po hišah
  72. if input1==1:
  73.     input11=raw_input('Izbrali ste izpis oseb v izbrani hiši, sedaj vnesite ime hiše za katero želite izpisati osebe (Montague,Verona ali Capulet): ')
  74.     if input11=='Montague':
  75.         print ('Osebe ki prihajajo iz hiše Montague so:')
  76.         for voz in graf.nodes():
  77.             if atribut[voz]=='House of Montague':
  78.                 print voz
  79.        
  80.     elif input11=='Capulet':
  81.         print ('Osebe ki prihajajo iz hiše Capulet so:')
  82.         for voz in graf.nodes():
  83.             if atribut[voz]=='House of Capulet':
  84.                 print voz
  85.          
  86.            
  87.            
  88.     elif input11=='Verona':
  89.         print ('Osebe ki prihajajo iz hiše Verona so:')
  90.         for voz in graf.nodes():
  91.             if atribut[voz]=='Rulling house of Verona':
  92.                 print voz
  93.  
  94.     else:
  95.         print (' Ta hiša žal ne obstaja')
  96.        
  97.        
  98. #izpis vseh znancev za izbrano osebo
  99. elif input1==2:
  100.     input22=raw_input('Vnesi ime za katerega želimo preveriti njegove sosede: ')
  101.     for sosedi in graf.nodes():
  102.         a=graf.has_edge(input22,sosedi)
  103.         if a==True:
  104.             print ('Sosed/a %s je %s' %(input22,sosedi))
  105.            
  106.            
  107. #izpis vseh znancev ločeno po hišami samo za Romea in Julijo
  108. elif input1==3:
  109.     input33=raw_input('Vnesite Juliet ali Romeo in izpisal vam bom sosede razvrščene po hišah: ')
  110.     stevec1=0
  111.     stevec2=0
  112.     stevec3=0
  113.     stevec4=0
  114.     if input33=='Juliet' or input33=='Romeo':
  115.         for sosedi1 in graf.nodes():
  116.             a=graf.has_edge(input33,sosedi1)
  117.             if a==True:
  118.                 hisaizpis=atribut[sosedi1]
  119.                 if hisaizpis=='House of Montague':
  120.                     montague[stevec1]=sosedi1
  121.                     stevec1=stevec1+1
  122.                 elif hisaizpis=='House of Capulet':
  123.                     capulet[stevec2]=sosedi1
  124.                     stevec2=stevec2+1
  125.                 elif hisaizpis=='Rulling house of Verona':
  126.                     verona[stevec3]=sosedi1
  127.                     stevec3=stevec3+1
  128.                 elif hisaizpis=='nima hiše':
  129.                     brez[stevec4]=sosedi1
  130.                     stevec4=stevec4+1
  131.         print ('Osebe ki so sosedje %s in prihajajo iz različnih hiš so:' %(input33))
  132.         print ('Hiša Montague:')
  133.         for m in range(0,len(montague)):
  134.             print (montague[m])
  135.         print ('Hiša Capulet:')
  136.         for c in range(0,len(capulet)):
  137.             print (capulet[c])
  138.         print ('Hiša Verona:')
  139.         for v in range(0,len(verona)):
  140.             print (verona[v])
  141.         print ('Brez hiše:')
  142.         for b in range(0,len(brez)):
  143.             print (brez[b])
  144.            
  145.     else:
  146.         print('Narobe ste vpisali imena')      
  147.            
  148. #izpis osebe z največ znanci
  149. elif input1==4:
  150.     stopnje=list(graf.degree().values())
  151.     maximum=max(stopnje)
  152.     for i in range(0,len(stopnje)) :
  153.         if stopnje[i]==maximum:
  154.             print 'Oseba ki ima največ povezav (%d) je: %s'%(maximum,vozlisca[i])
  155.    
  156. else:
  157.     print('Vnesli ste napačno številko')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement