Çö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

Kilopat
Katılım
26 Ekim 2016
Mesajlar
84
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
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
    Screenshot from 2023-02-15 22-37-14.png
    24,9 KB · Görüntüleme: 21
Çö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?
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")
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
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 ne
Hocam kusura bakmayın yanlışlıkla gönderdim. :(
 
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?
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. 😇
 

Geri
Yukarı