MERHABA BİR FİLM OTOMASYONU YAPIYORUM.KENDİMİN 2 ÖZELLİK EKLEMEM GEREKİYOR.lÜTFEN DOSYA İŞLEMLERİNİ KULLANARAK YARDIMCI OLUR MUSUNUZ?
Oluruz ama tam olarak neye?
Film otomasyonu ne? Filmin bitince otomatik olarak yeniden başlaması mı? Filmleri otomatik indirmesi mi? Film otomasyonu pek bir şey ifade etmiyor.
Şöyle ki öncelikle evet haklısınız hemen detay vereyim ve alta da kodumu ekleyeyim. Filmlerin adını,türünü,yönetmenini,yapım yılını ve imbd puanını kullanıcıdan alıyoruz.Daha sonra arama,güncelleme,silme ve kayıt ekleme fonksiyonlarımızı menümüz yoluyla kullanıyoruz.(Silmeyi yapamadım yardımcı olursanız çok sevinirim ) Daha sonra filmleri puanına göre sıralamak istiyorum fakat hem ismi hem puanı aynı anda almayı başaramadım.Bir de türüne göre film aramak istiyorum onu da yapamadım.
puanlist=[]
def kayit_ekle():
id = input(“Film Id:”)
ad = input(“Filmin Adi:”)
yil = input(“Yapim Yili:”)
tur = input(“Filmin Turu:”)
yonetmen = input(“Yonetmen:”)
puan = input(“IMBD Puani:”)
puanlist.append(puan)
with open("filmler.txt","a", encoding="utf-8") as file:
file.write(id+'-'+ad+':'+yil+'-'+tur+'-'+yonetmen+'-'+puan+'\n')
def kayitguncelle():
print(“Film Güncelleme İşlemleri”)
id = input(“Güncellemek İstediğiniz Ad Soyad’ı Giriniz:”)
with open('filmler.txt') as file:
veri = file.read()
if id in veri:
yeniid = input("Yeni Id'yi Giriniz:")
yeniad = input("Yeni Adı Giriniz:")
yeniyil = input("Yeni Yılı Giriniz:")
yenipuan = input("Yeni Puani Giriniz:")
yenitur = input("Yeni Tur Giriniz:")
yeniyonetmen = input("Yeni Yonetmen Gir:")
with open("filmler.txt", "w", encoding="utf-8") as file:
file.write(yeniid+'-'+yeniad+'-'+yeniyil+'-'+ yenitur+'-'+yeniyonetmen + '-'+yenipuan +'\n')
def kayitsil():
with open(“filmler.txt”,“r”) as file:
filmler = file.readlines()
gfilmler = []
for film in filmler:
gfilmler.append(" ".join(film[:-1].split("-")))
for film in gfilmler:
print(film)
sec = int(input("Lütfen silmek istediğiniz filmin id'sini giriniz:"))
filmler.pop(sec)
sayac = 1
dfilmler= []
for film in filmler:
dfilmler.append(str(sayac) + "-" + film.split("-")[1])
sayac+=1
with open ("filmler.txt","w") as dosya:
dosya.writelines(dfilmler)
def kayitlistele():
with open(“filmler.txt”,“r”) as file:
for satir in file:
print(satir)
def sirala():
with open (“filmler.txt”,“r”) as file:
filmler = file.readlines()
puanlar =[]
for film in filmler:
puanlar.append(int(film.split("-")[-1]))
puanlar.sort(reverse = False)
print(puanlar)
def ara():
aranan_kelime = input("Aradigin kelimeyi gir ")
with open(‘filmler.txt’) as file:
veri = file.read()
if aranan_kelime in veri:
print(“Bulundu”, aranan_kelime)
else:
print(“Bulunamadi”)
while True:
islem = input(‘1- Film Kayit Ekleme\n2- Film Kayit Guncelle\n3- Film Kayit Ara\n4- Film Kayitlarini Listele\n5- IMBD Puanina Gore Sirala\n6- Turune Gore Arama\n7- Cikis\nSeciminiz:’)
if islem == '1':
kayit_ekle()
elif islem == '2':
kayitguncelle()
elif islem == '3':
kayitsil()
elif islem == '4':
ara()
elif islem == '5':
sirala()
elif islem == '6':
pass
else:
break
Yavaş yavaş, aşama aşama gidelim.
Her gün bir fonksiyon yazalım, paylaşalım, kodu deneyelim, anlamaya çalışalım, soruları cevaplayalım. Ne dersiniz?
Böylece Öğrenim aşaması daha faydalı olur/gelişir diye düşünüyorum.
Haydi başlayalım:
Önce,
- Menüyü oluşturalım, Neleri yapmak istiyoruz belirleyelim.
- Fonksiyon isimlerini belirleyip “pass” ya da “Print” komutuyla içeriğini sonra doldurmak üzere kenarda bekletelim.
Şu an sadece “Film Ekleme” ve “Listeleme” fonksiyonları işlevsel, diğerleri sadece konsolda işleme dair bilgi veriyor.
def ekle(): # MENU 1
id_no = input("Film Id:")
ad = input("Filmin Adi:")
yil = input("Yapim Yili:")
tur = input("Filmin Turu:")
yonetmen = input("Yonetmen:")
puan = input("IMBD Puani:")
with open("filmler.txt","a", encoding="utf-8") as file:
file.write(id_no + ',' + ad + ',' + yil + ',' + tur + ',' + yonetmen + ',' + puan + '\n')
def guncelle(): # MENU 2
print("Güncelleme İşlemi Başlıyor...")
def sil(): # MENU 3
print("Silme İşlemi Gerçekleşiyor...")
def film_ara(): # MENU 4
print("Film Arama İşlemi Başlıyor...")
def listele(): # MENU 5
with open ("filmler.txt","r") as file:
print("\nDosyadaki Filmler;\nid_no, ad, yil, tür, yonetmen, puan")
for i in file:
print(i[:-1])
print("\n")
def sirala(): # MENU 6
print("Puana Göre Sıralama İşlemi Başlıyor...")
def tur_ara(): # MENU 7
print("Film Türüne Göre Arama İşlemi Başlıyor...")
while True:
print("*" * 20, " MENÜ ", "*" * 20)
islem = input("1- Film Ekle\n2- Film Kaydını Güncelle\n3- Filmi Sil\n4- Film Ara\n5- Filmleri Listele\n6- IMBD Puanına Göre Sırala\n7- Türü Göre Ara\nÇIKIŞ İÇİN 1-7 ARASI SAYILARIN DIŞINDA BİR TUŞA BASIN\nMenüden Bir İşlem Seçin: ")
if islem == '1':
ekle()
elif islem == '2':
guncelle()
elif islem == '3':
sil()
elif islem == '4':
film_ara()
elif islem == '5':
listele()
elif islem == '6':
sirala()
elif islem == '7':
tur_ara()
else:
break
Bu da, örnek/uydurma bir film listesi:
1,film_adi_01,2012,Macera,Yönetmen_1,8
2,film_adi_02,1987,Aksiyon,Yönetmen_2,3
3,film_adi_03,1988,Romantik,Yönetmen_3,1
4,film_adi_04,1981,Komedi,Yönetmen_4,5
5,film_adi_05,1995,3D,Yönetmen_5,1
6,film_adi_06,2018,Animasyon,Yönetmen_6,7
7,film_adi_07,2005,Dram,Yönetmen_7,1
8,film_adi_08,1981,Dram,Yönetmen_8,5
9,film_adi_09,1991,Romantik,Yönetmen_9,8
10,film_adi_10,2014,Aksiyon,Yönetmen_10,8
11,film_adi_11,1983,Komedi,Yönetmen_11,2
12,film_adi_12,1982,Dram,Yönetmen_12,6
13,film_adi_13,2000,Romantik,Yönetmen_13,6
14,film_adi_14,2006,Macera,Yönetmen_14,2
15,film_adi_15,2014,Macera,Yönetmen_15,4
16,film_adi_16,1985,Macera,Yönetmen_16,8
17,film_adi_17,1998,Romantik,Yönetmen_17,6
18,film_adi_18,1984,Aksiyon,Yönetmen_18,4
19,film_adi_19,2017,Komedi,Yönetmen_19,3
20,film_adi_20,1983,Komedi,Yönetmen_20,4
21,film_adi_21,2015,Dram,Yönetmen_21,4
22,film_adi_22,1983,3D,Yönetmen_22,2
23,film_adi_23,1987,Aksiyon,Yönetmen_23,5
24,film_adi_24,1991,3D,Yönetmen_24,3
Merhaba hocam, bir sürü koşul yazmak yerine şöyle bir şey düşündüm.
function_list = {k:v for k, v in zip(list(range(1,4)),[func1,func2, func3])}
while True:
try:
islem= input(":")
function_list[islem]()
except KeyError:
print("Geçersiz")
break
Silme ve Güncelleme Fonksiyonları ile, sonraki günlerde ilgilenelim.
Pandas Kütüphanesi, Menü fonksiyonlarını oluşturuken işimizi oldukça kolaylaştırdı.
Pandas, Harikulade bir kütüphane. Öğrenilmesini şiddetle tavsiye ederim.
Kullanımı son derece kolay ve sonuçları itibari ile de oldukça etkili bir kütüphane.
NOT:
- İMDB’den kopyaladığım film listesinde tür ve yönetmen bilgileri olmadığı için, Uydurma bilgiler yazdım.
- Filmler dosyasını TXT uzantılı değil, CSV uzantılı olarak kullandım.
Yeni Kodlarımız;
import pandas as pd
df = pd.read_csv('filmler.csv')
def ekle(): # MENU 1
id_no = input("Film Id:")
ad = input("Filmin Adi:")
yil = input("Yapim Yili:")
tur = input("Filmin Turu:")
yonetmen = input("Yonetmen:")
print("Filme Puan verirken, Ondalık ayırıcı olarak VİRGÜL yerine NOKTA kullanın")
puan = input("IMBD Puanı: ")
with open("filmler.csv","a", encoding="utf-8") as file:
file.write(id_no + ',' + ad + ',' + yil + ',' + tur + ',' + yonetmen + ',' + puan + '\n')
def guncelle(): # MENU 2
print("Güncelleme İşlemi Başlıyor...")
def sil(): # MENU 3
print("Silme İşlemi Gerçekleşiyor...")
def film_ara(): # MENU 4
film = input("Aramak istediğiniz Film Adını Yazınız: ")
print(df[df.FILMADI == film])
def listele(): # MENU 5
print(df.sort_index())
def sirala(): # MENU 6 - MDB Puanına Göre Sırala
print(df.sort_values("IMDB_PUANI", ascending=False))
def tur_ara(): # MENU 7 - Türü Göre Ara
tur = input("Aramak istediğiniz Türü Yazınız: ")
print(df[df.TUR == tur])
function_list = {"1": ekle, "2": guncelle, "3": sil, "4": film_ara, "5": listele, "6": sirala, "7": tur_ara}
while True:
try:
print("*" * 20, " MENÜ ", "*" * 20)
islem = input("Seçiminiz: ")
function_list[islem]()
except KeyError:
print("Geçersiz Seçim")
break
Yeni Film Listemiz.
ID_NO,FILMADI,YILI,TUR,YONETMEN,IMDB_PUANI
1,TheShawshankRedemption,1994,TUR_1,YONETMEN_1,9.3
2,TheDarkKnight,2008,TUR_2,YONETMEN_2,9
3,TheGodfather,1972,TUR_3,YONETMEN_3,9.2
4,TheGodfatherPartII,1974,TUR_4,YONETMEN_4,9
5,FightClub,1999,TUR_5,YONETMEN_5,8.8
6,TheLordoftheRingsTheReturnoftheKing,2003,TUR_6,YONETMEN_6,9
7,PulpFiction,1994,TUR_7,YONETMEN_7,8.9
8,TheGoodtheBadandtheUgly,1966,TUR_8,YONETMEN_8,8.8
9,12AngryMen,1957,TUR_9,YONETMEN_9,9
10,TheLordoftheRingsTheFellowshipoftheRing,2001,TUR_10,YONETMEN_10,8.8
11,Inception,2010,TUR_1,YONETMEN_11,8.8
12,ForrestGump,1994,TUR_2,YONETMEN_12,8.8
13,TheLordoftheRingsTheTwoTowers,2002,TUR_3,YONETMEN_13,8.8
14,Interstellar,2014,TUR_4,YONETMEN_14,8.6
15,TheDarkKnightRises,2012,TUR_5,YONETMEN_15,8.4
16,ThePrestige,2006,TUR_6,YONETMEN_16,8.5
17,Memento,2000,TUR_7,YONETMEN_17,8.4
18,TheDeparted,2006,TUR_8,YONETMEN_18,8.5
19,TheGreenMile,1999,TUR_9,YONETMEN_19,8.6
20,Gladiator,2000,TUR_10,YONETMEN_20,8.5
21,BacktotheFuture,1985,TUR_1,YONETMEN_21,8.5
22,Terminator2JudgmentDay,1991,TUR_2,YONETMEN_22,8.6
23,GraveoftheFireflies,1988,TUR_3,YONETMEN_23,8.5
24,Scarface,1983,TUR_4,YONETMEN_24,8.3
25,StarWarsEpisodeV-TheEmpireStrikesBack,1980,TUR_5,YONETMEN_25,8.7
26,StarWars,1977,TUR_6,YONETMEN_26,8.6
27,OneFlewOvertheCuckoo'sNest,1975,TUR_7,YONETMEN_27,8.7
28,Goodfellas,1990,TUR_8,YONETMEN_28,8.7
29,TheMatrix,1999,TUR_9,YONETMEN_29,8.7
30,SevenSamurai,1954,TUR_10,YONETMEN_30,8.6
31,TheMessage,1976,TUR_1,YONETMEN_31,8.1
32,TheUsualSuspects,1995,TUR_2,YONETMEN_32,8.5
33,Se7en,1995,TUR_3,YONETMEN_33,8.6
34,AmericanHistoryX,1998,TUR_4,YONETMEN_34,8.5
35,LéonTheProfessional,1994,TUR_5,YONETMEN_35,8.5
36,LifeIsBeautiful,1997,TUR_6,YONETMEN_36,8.6
37,It'saWonderfulLife,1946,TUR_7,YONETMEN_37,8.6
38,Psycho,1960,TUR_8,YONETMEN_38,8.5
39,IndianaJonesandtheRaidersoftheLostArk,1981,TUR_9,YONETMEN_39,8.4
40,TaxiDriver,1976,TUR_10,YONETMEN_40,8.2
41,Braveheart,1995,TUR_1,YONETMEN_41,8.4
42,VforVendetta,2005,TUR_2,YONETMEN_42,8.2
43,Schindler'sList,1993,TUR_3,YONETMEN_43,9
44,MyFatherandMySon,2005,TUR_4,YONETMEN_44,8.2
45,OnceUponaTimeintheWest,1968,TUR_5,YONETMEN_45,8.5
46,CityLights,1931,TUR_6,YONETMEN_46,8.5
47,ModernTimes,1936,TUR_7,YONETMEN_47,8.5
48,TheSilenceoftheLambs,1991,TUR_8,YONETMEN_48,8.6
49,SavingPrivateRyan,1998,TUR_9,YONETMEN_49,8.6
50,TheIntouchables,2011,TUR_10,YONETMEN_50,8.5
51,SpiritedAway,2001,TUR_1,YONETMEN_51,8.6
52,RearWindow,1954,TUR_2,YONETMEN_52,8.5
53,Dr.StrangeloveorHowILearnedtoStopWorryingandLovetheBomb,1964,TUR_3,YONETMEN_53,8.4
54,ThePianist,2002,TUR_4,YONETMEN_54,8.5
55,Alien,1979,TUR_5,YONETMEN_55,8.5
56,DjangoUnchained,2012,TUR_6,YONETMEN_56,8.4
57,TheBandit,1996,TUR_7,YONETMEN_57,8.1
58,2001ASpaceOdyssey,1968,TUR_9,YONETMEN_58,8.3
59,DieHard,1988,TUR_10,YONETMEN_59,8.2
60,BatmanBegins,2005,TUR_1,YONETMEN_60,8.2
61,IndianaJonesandtheLastCrusade,1989,TUR_2,YONETMEN_61,8.2
62,RagingBull,1980,TUR_3,YONETMEN_62,8.2
63,PK,2014,TUR_4,YONETMEN_63,8.1
64,HarryPotterandtheDeathlyHallowsPart2,2011,TUR_5,YONETMEN_64,8.1
65,PisoftheCaribbeanTheCurseoftheBlackPearl,2003,TUR_6,YONETMEN_65,8.1
66,X-MenDaysofFuturePast,2014,TUR_7,YONETMEN_66,7.9
67,ShutterIsland,2010,TUR_8,YONETMEN_67,8.2
68,TheBourneUltimatum,2007,TUR_9,YONETMEN_68,8
69,TheAvengers,2012,TUR_10,YONETMEN_69,8
70,IpMan,2008,TUR_1,YONETMEN_70,8
71,LikeStarsonEarth,2007,TUR_2,YONETMEN_71,8.3
72,3Idiots,2009,TUR_3,YONETMEN_72,8.4
73,CinemaParadiso,1988,TUR_4,YONETMEN_73,8.5
74,PathsofGlory,1957,TUR_5,YONETMEN_74,8.4
75,TheGreatDictator,1940,TUR_6,YONETMEN_75,8.4
76,TheShining,1980,TUR_7,YONETMEN_76,8.4
77,WALL·E,2008,TUR_8,YONETMEN_77,8.4
78,Amélie,2001,TUR_9,YONETMEN_78,8.3
79,AmericanBeauty,1999,TUR_10,YONETMEN_79,8.4
80,Aliens,1986,TUR_1,YONETMEN_80,8.4
81,ToyStory3,2010,TUR_2,YONETMEN_81,8.3
82,AClockworkOrange,1971,TUR_3,YONETMEN_82,8.3
83,TheSixthSense,1999,TUR_4,YONETMEN_83,8.2
84,ABeautifulMind,2001,TUR_5,YONETMEN_84,8.2
85,TaeGukGiTheBrotherhoodofWar,2004,TUR_6,YONETMEN_85,8
86,HachiADog'sTale,2009,TUR_7,YONETMEN_86,8.1
87,TheElephantMan,1980,TUR_8,YONETMEN_87,8.2
88,IntotheWild,2007,TUR_9,YONETMEN_88,8.1
89,TheUntouchables,1987,TUR_10,YONETMEN_89,7.9
90,EdwardScissorhands,1990,TUR_1,YONETMEN_90,7.9
91,CityofGod,2002,TUR_2,YONETMEN_91,8.6
92,ApocalypseNow,1979,TUR_3,YONETMEN_92,8.5
93,TheLionKing,1994,TUR_4,YONETMEN_93,8.5
94,Whiplash,2014,TUR_5,YONETMEN_94,8.5
95,PrincessMononoke,1997,TUR_6,YONETMEN_95,8.4
96,Oldboy,2003,TUR_7,YONETMEN_96,8.4
97,StarWarsEpisodeVI-ReturnoftheJedi,1983,TUR_8,YONETMEN_97,8.3
98,ReservoirDogs,1992,TUR_9,YONETMEN_98,8.3
99,RequiemforaDream,2000,TUR_10,YONETMEN_99,8.3
100,EternalSunshineoftheSpotlessMind,2004,TUR_1,YONETMEN_100,8.3
Menü 4 ve sonrasına ait çıktılar;
Seçiminiz: 4
Aramak istediğiniz Film Adını Yazınız: Inception
ID_NO FILMADI YILI TUR YONETMEN IMDB_PUANI
10 11 Inception 2010 TUR_1 YONETMEN_11 8.8
******************** MENÜ ********************
Seçiminiz: 5
ID_NO FILMADI YILI TUR YONETMEN IMDB_PUANI
0 1 TheShawshankRedemption 1994 TUR_1 YONETMEN_1 9.3
1 2 TheDarkKnight 2008 TUR_2 YONETMEN_2 9.0
2 3 TheGodfather 1972 TUR_3 YONETMEN_3 9.2
3 4 TheGodfatherPartII 1974 TUR_4 YONETMEN_4 9.0
4 5 FightClub 1999 TUR_5 YONETMEN_5 8.8
.. ... ... ... ... ... ...
95 96 Oldboy 2003 TUR_7 YONETMEN_96 8.4
96 97 StarWarsEpisodeVI-ReturnoftheJedi 1983 TUR_8 YONETMEN_97 8.3
97 98 ReservoirDogs 1992 TUR_9 YONETMEN_98 8.3
98 99 RequiemforaDream 2000 TUR_10 YONETMEN_99 8.3
99 100 EternalSunshineoftheSpotlessMind 2004 TUR_1 YONETMEN_100 8.3
[100 rows x 6 columns]
******************** MENÜ ********************
Seçiminiz: 6
ID_NO FILMADI YILI TUR YONETMEN IMDB_PUANI
0 1 TheShawshankRedemption 1994 TUR_1 YONETMEN_1 9.3
2 3 TheGodfather 1972 TUR_3 YONETMEN_3 9.2
3 4 TheGodfatherPartII 1974 TUR_4 YONETMEN_4 9.0
42 43 Schindler`sList 1993 TUR_3 YONETMEN_43 9.0
5 6 TheLordoftheRingsTheReturnoftheKing 2003 TUR_6 YONETMEN_6 9.0
.. ... ... ... ... ... ...
67 68 TheBourneUltimatum 2007 TUR_9 YONETMEN_68 8.0
68 69 TheAvengers 2012 TUR_10 YONETMEN_69 8.0
89 90 EdwardScissorhands 1990 TUR_1 YONETMEN_90 7.9
88 89 TheUntouchables 1987 TUR_10 YONETMEN_89 7.9
65 66 X-MenDaysofFuturePast 2014 TUR_7 YONETMEN_66 7.9
[100 rows x 6 columns]
******************** MENÜ ********************
Seçiminiz: 7
Aramak istediğiniz Türü Yazınız: TUR_3
ID_NO FILMADI YILI TUR YONETMEN IMDB_PUANI
2 3 TheGodfather 1972 TUR_3 YONETMEN_3 9.2
12 13 TheLordoftheRingsTheTwoTowers 2002 TUR_3 YONETMEN_13 8.8
22 23 GraveoftheFireflies 1988 TUR_3 YONETMEN_23 8.5
32 33 Se7en 1995 TUR_3 YONETMEN_33 8.6
42 43 Schindler`sList 1993 TUR_3 YONETMEN_43 9.0
52 53 Dr.StrangeloveorHowILearnedtoStopWorryingandLo... 1964 TUR_3 YONETMEN_53 8.4
61 62 RagingBull 1980 TUR_3 YONETMEN_62 8.2
71 72 3Idiots 2009 TUR_3 YONETMEN_72 8.4
81 82 AClockworkOrange 1971 TUR_3 YONETMEN_82 8.3
91 92 ApocalypseNow 1979 TUR_3 YONETMEN_92 8.5
******************** MENÜ ********************
Seçiminiz: 9
Geçersiz Seçim
Yazdığın kodu denediğimde maalesef istediğim sonucu elde edemedim.
islem = input(":")
ilekullanıcıdan alınan çıktı her daim string ifade verdiği için,işlem sonucu tüm tuşlara “Key Error:” sonucu “Geçersiz” sonucu dönüyor.
Menü olarak, Sonuçta yine senin kodunun temelini olan sözlük yapısını kullandım.
Evet hocam, fark ettim. Şöyle bir değişiklik yaptım:
function_list = {k:v for k, v in zip([str(i) for i in list(range(1,4))],[func1,func2, func3])}
while True:
try:
islem= input(":")
function_list[islem]()
except KeyError:
print("Geçersiz")
break
çok yararlı oldu elinize sağlık dostlar