-
-
Save geekdinazor/0c63908574b4a75ca3b5 to your computer and use it in GitHub Desktop.
Ertonun ibretliq python kodları xD
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: cp1254 -* | |
import os | |
print "Welcome to Assignment 3 (Part1)" | |
print "-------------------------------" | |
#START | |
a = open ("commandsP1.txt") | |
b = a.read() | |
c = b.split("\n") | |
d = len(c) | |
for i in range (0, d): | |
e = c[i].split(" ") | |
if(e[0]=="AU"): #Add User | |
if(len(e)==3): | |
qx = e[1] | |
qy = e[2] | |
yazdir = open("sn_new.txt", "w") | |
aa = open ("sn.txt") | |
bb = aa.read() | |
cc = bb.split("\n") | |
dd = len(cc) | |
isimler = [] | |
degerler = [] | |
for i in range (0,dd): | |
ee = cc[i].split(":") | |
isimler.append(str(ee[0])) | |
degerler.append(str(ee[1])) | |
if qy not in isimler: | |
print "There is no user named '{0}'" .format(qy) | |
elif qx in isimler: | |
print "This user already exists!!" | |
else: | |
yer = isimler.index(qy) | |
gg = str(degerler[yer]) + " {0}".format(qx) | |
degerler[yer] = gg | |
isimler.append(str(qx)) | |
degerler.append(str(qy)) | |
dd = dd+1 | |
print "User '{0}' has been added and tied to '{1}' successfully" .format(qx, qy) | |
else: | |
print "Error: Wrong input type for 'AU'!" | |
elif(e[0]=="RU"): #Remove User | |
if (len(e)==2): | |
qx = e[1] | |
if qx not in isimler: | |
print "There is no user named 'Z'!!" | |
else: | |
yer = isimler.index(qx) | |
del isimler[yer] | |
dd = dd - 1 | |
ft = degerler[yer].split(" ") | |
#print ft | |
for i in range (0, len(ft)): | |
mx = e[1] | |
#print mx | |
ft1 = isimler.index(ft[i]) | |
erto = [] | |
one = degerler[ft1] | |
erto = one.split(" ") | |
to = erto.index(mx) | |
del erto[to] | |
kelime = "" | |
for i in range(0, len(erto)): | |
kelime = kelime + "{0} ".format(erto[i]) | |
yeni = kelime[0:len(kelime)-1] | |
degerler[ft1] = yeni | |
######### | |
full = "" | |
for i in range (0, dd): | |
full = full + "{0}:{1}\n".format(isimler[i], degerler[i]) | |
danaci = full[0:len(full)-1] | |
yazdir = open ("sn_new.txt", "w") | |
yazdir.write(danaci) | |
yazdir.close() | |
########## | |
del degerler[yer] | |
print "User 'S' and its all relations have been removed successfully." | |
else: | |
print "Error: Wrong input type! for 'RU'!" | |
elif(e[0]=="AR"): #Add New Relation | |
if(len(e)==3): | |
qx = e[1] | |
qy = e[2] | |
if qx not in isimler: | |
print "No user named '{0}' or '{1}' found!!" .format(qx, qy) | |
elif qy not in isimler: | |
print "No user named '{0}' or '{1}' found!!" .format(qx, qy) | |
else: | |
yere = isimler.index(qx) | |
yerk = isimler.index(qy) | |
if qx in degerler[yerk]: | |
print "A relation between '{0}' and '{1}' already exists!!" .format(qx, qy) | |
elif qy in degerler[yere]: | |
print "A relation between '{0}' and '{1}' already exists!!" .format(qx, qy) | |
else: | |
yere = isimler.index(qx) | |
yerk = isimler.index(qy) | |
degerler[yere] = degerler[yere] + " {0}".format(qy) | |
degerler[yerk] = degerler[yerk] + " {0}".format(qx) | |
print "Relation between '{0}' and '{1}' has been added succesfully." .format(qx, qy) | |
else: | |
print "Error: Wrong input type! for 'AR'!" | |
elif(e[0]=="RR"): # Remove Existing Relation | |
if(len(e)==3): | |
qx = e[1] | |
qy = e[2] | |
if qx not in isimler: | |
print "No user named '{0}' or '{1}' found!!" .format(qx, qy) | |
elif qy not in isimler: | |
print "No user named '{0}' or '{1}' found!!" .format(qx, qy) | |
else: | |
yere = isimler.index(qx) | |
yerk = isimler.index(qy) | |
if qx not in degerler[yerk]: | |
print "No relation between '{0}' and '{1}' found!!" .format(qx, qy) | |
elif qy not in degerler[yere]: | |
print "No relation between '{0}' and '{1}' found!!" .format(qy, qx) | |
else: | |
yere = isimler.index(qx) | |
yerk = isimler.index(qy) | |
one = degerler[yere] | |
two = degerler[yerk] | |
erto = one.split(" ") | |
to = erto.index(qy) | |
del erto[to] | |
kelime = "" | |
for i in range(0, len(erto)): | |
kelime = kelime + "{0} ".format(erto[i]) | |
yeni = kelime[0:len(kelime)-1] | |
degerler[yere] = yeni | |
erto = two.split(" ") | |
to = erto.index(qx) | |
del erto[to] | |
kelime = "" | |
for i in range(0, len(erto)): | |
kelime = kelime + "{0} ".format(erto[i]) | |
yeni = kelime[0:len(kelime)-1] | |
degerler[yerk] = yeni | |
print "A relation between '{0}' and '{1}' has been removed successfully." .format(qx, qy) | |
else: | |
print "Error: Wrong input type! for 'RR'!" | |
elif(e[0]=="PA"): #Rank Users | |
if(len(e)==2): | |
if (int(e[1])<=len(isimler)): | |
######### | |
full = "" | |
for i in range (0, dd): | |
full = full + "{0}:{1}\n".format(isimler[i], degerler[i]) | |
danaci = full[0:len(full)-1] | |
yazdir = open ("sn_new.txt", "w") | |
yazdir.write(danaci) | |
yazdir.close() | |
########## | |
k = open ("sn_new.txt") | |
l = k.read() | |
m = l.split("\n") | |
q = len(m) | |
isim = [] | |
sayi = [] | |
for i in range(0,q): | |
n = m[i].split(":") | |
o = n[1].split(" ") | |
isim.append(str(n[0])) | |
sayi.append(int(len(o))) | |
for i in range(0,q): | |
print "User '{0}' has {1} friends.".format(isim[i], sayi[i]) | |
k.close() | |
#TOP L�ST | |
yeni_isim = isim | |
yeni_sayi = sayi | |
tur = int(e[1]) | |
indisler = [] | |
sayilari = [] | |
isimleri = [] | |
for j in range(0,tur): | |
eb = int(yeni_sayi[0]) | |
indis = int(0) | |
for i in range(1,len(yeni_sayi)): | |
if(int(yeni_sayi[i]) > eb): | |
eb = yeni_sayi[i] | |
indis = int(i) | |
sayilari.append(int(eb)) | |
indisler.append(indis) | |
isimleri.append(yeni_isim[indis]) | |
del yeni_sayi[indis] | |
del yeni_isim[indis] | |
for i in range(0, tur): | |
print "{0}. '{1}': {2}" .format((i+1), isimleri[i], sayilari[i]) | |
else: | |
print "Invalid input since n is greater than {0}".format(len(isimler)) | |
else: | |
print "Error: Wrong input type! for 'PA'!" | |
elif(e[0]=="SA"): #Suggest Friendship | |
if(len(e)==3): | |
ed = e[1] | |
ek = e[2] | |
if ed not in isim: | |
print "No user named '{0}' found!!" .format(ed) | |
elif(sayi[(isim.index(ed))] < int(ek)): | |
print "User '{0}' has less friend than {1}".format(ed, ek) | |
else: | |
kisi = {} | |
for i in range (0, len(isimler)): | |
kisi.update({isimler[i]:degerler[i].replace(" ","")}) | |
#------------ | |
mundarliste = set() | |
x2 = [] | |
itsurusu = list(kisi[ed]) | |
xxx = kisi.keys() | |
xxx.remove(ed) | |
print "Suggestion List for '%s' (when MD is %s):" % (ed,ek) | |
for adam in itsurusu: | |
xxx.remove(adam) | |
for kef in itsurusu: | |
for adam in xxx: | |
if kef in kisi[adam]: | |
mundarliste.add((adam,kef)) | |
for x1 in mundarliste: | |
x2.append(x1[0]) | |
for x1 in set(x2): | |
if x2.count(x1) >= int(ek): | |
print "'%s' has %s mutual friends with %s" % (ed, ek, x1) | |
else: | |
print "Error: Wrong input type! for 'SA'!" | |
elif(e[0]=="XX"): | |
print "Error: Undefined command type!" | |
#THE END | |
#print danaci | |
######### | |
full = "" | |
for i in range (0, dd): | |
full = full + "{0}:{1}\n".format(isimler[i], degerler[i]) | |
danaci = full[0:len(full)-1] | |
yazdir = open ("sn.txt", "w") | |
yazdir.write(danaci) | |
yazdir.close() | |
########## | |
os.remove("sn_new.txt") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment