Çözüldü Python Key Error:0 Hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

faik mermer

Megapat
Katılım
26 Ekim 2016
Mesajlar
142
Çözümler
2
Normalde Python dili bir native dil kadar iyi bilirim. Ama bazen o gün dikkatiniz ve kafanız çalışmaz şu an o durumdayım. Anlayamadığım bir yerden hata alıyorum ama dikkatimi bir türlü toparlayıp hatamı bulamıyorum. Hatamı düzeltecek arkadaşlara şimdiden teşekkürler diyorum.


Python:
breadth first searchfrom collections import deque

queue = deque()

graph = {}

graph["you"] = ["faik"]
graph["faik"] = ["ali", "özge", "serkan"]
graph["ali"] = ["kamil", "derya"]
graph["özge"] = ["derya"]
graph["serkan"] = ["mehmet"]
graph["kamil"] = []
graph["derya"] = []
graph["mehmet"] = []

class Graph:
    def __init__(self):
        self.elemanlar = []
        self.kökler = {}
  
    def graphs(self, grh):
      
        for i in grh:
            self.kökler[i] = grh[i]
            self.elemanlar.append(i)
  
    def bsf(self, hedef, kök= None):
        if kök is None:
            kök = self.kökler[0]

        bsf_kök = self.kökler;
        kontrol_kümesi = []
        queue.append(kök)
        kontrol_kümesi.append(kök)
      
        while(len(queue)):
            k = queue.popleft()
          
            if(k == hedef):
                return True
          
            for i in range(len(bsf_kök)):
                if not kontrol_kümesi[bsf_kök[k][i]] :
                    kontrol_kümesi.append(bsf_kök[k][i])
                    queue.append(bsf_kök[k][i])
      
        return False
      
grf = Graph()
grf.graphs(graph)
grf.bsf("mehmet")
 

Dosya Ekleri

  • Screenshot from 2023-02-15 22-37-14.png
    24,9 KB · Görüntüleme: 47
Çözüm
self.kökler = {} dediğin yerde dictionary oluşturuyorsun. sonra kök = self.kökler[0] dediğin yerde key'i 0 olan elemanı çağırıyorsun ama hiçbir yerde sıfır koymamışsın ki. Hata gayet açık şekilde KeyError: 0 diyor sana.
self.kökler = {} derken set yapmaya çalıştıysan o parantez dictionary oluşturur. Set için set() demelisin.

@Recep Baltaş Fan ufak bir hata ile düzgün paylaşılan kodu kötü paylaşmanızın nedeni nedir?
Hatayı buraya yapıştırabilir misiniz?
 
Python:
from collections import deque

graph = {}
graph["you"] = ["faik"]
graph["faik"] = ["ali", "özge", "serkan"]
graph["ali"] = ["kamil", "derya"]
graph["özge"] = ["derya"]
graph["serkan"] = ["mehmet"]
graph["kamil"] = []
graph["derya"] = []
graph["mehmet"] = []

class Graph:
    def __init__(self):
        self.nodes = []
        self.edges = {}
 
    def add_node(self, node):
        self.nodes.append(node)
        self.edges[node] = []
 
    def add_edge(self, node1, node2):
        self.edges[node1].append(node2)
        self.edges[node2].append(node1)
 
    def bfs(self, start_node, target_node):
        queue = deque()
        visited = set()
        queue.append(start_node)
        visited.add(start_node)
    
        while queue:
            node = queue.popleft()
            if node == target_node:
                return True
            for neighbor in self.edges[node]:
                if neighbor not in visited:
                    visited.add(neighbor)
                    queue.append(neighbor)
    
        return False

grf = Graph()
for node in graph:
    grf.add_node(node)
for node in graph:
    for neighbor in graph[node]:
        grf.add_edge(node, neighbor)
      
print(grf.bfs("you", "mehmet")
 
self.kökler = {} dediğin yerde dictionary oluşturuyorsun. sonra kök = self.kökler[0] dediğin yerde key'i 0 olan elemanı çağırıyorsun ama hiçbir yerde sıfır koymamışsın ki. Hata gayet açık şekilde KeyError: 0 diyor sana.
self.kökler = {} derken set yapmaya çalıştıysan o parantez dictionary oluşturur. Set için set() demelisin.

@Recep Baltaş Fan ufak bir hata ile düzgün paylaşılan kodu kötü paylaşmanızın nedeni nedir?
 
Çözüm
Hocam kusura bakmayın yanlışlıkla gönderdim.
 
Evet farkettim. Komik bir hata yapmışım . Bazen çok zor sorunların altından kalkarken böyle komik ve amatör gibi gözüken durumlarda can sıkıntısından gözden kaçabiliyor. Teşekkürler.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…