Seite 1 von 1

Absturz eines Python-Skriptes

Verfasst: Freitag 21. April 2006, 15:06
von murph
Nach dem try-and-error-verfahren habe ich einen Sudokufeldgenerator zu programmieren versucht, aber nachdem ich dann das dictionairy (zahl = {})
benutzt habe, gibt der Skript keine Fehler wieder, macht aber auch nichts:

Code: Alles auswählen

#!/usr/bin/env python
#<<<murph>>>
import random

#at first, we generate 9*9 digits of random
#a and c are two counters, a is the row left-right, c is the row up-down 
def digitgenerator():
    a = 1
    c = 1
    while a < 9:
        while c < 9:
            zahl[a/c] = random.randint(1,9)
        c+=1    
    a+=1

#now we have a lot of number created by random, but we have to get the digits from 1 till 9
#with every digit, so we test the row a

def linegenerator():
    za = 1
    zc = 1
    x = 1
    while za < 9:
        while zc < 9:
            while x < 9:
                if zahl[a/c] == zahl[x/zc]:
                    if zahl[a/c] < 1:
                        zahl[a/c]-=1
                    elif zahl[a/c] == 1:
                        zahl[a/c] = 9        
                
                
                   
                x +=1
            x = 0
            while x < 9:
                if zahl[a/c] == zahl[za/x]:
                    if zahl[a/c] < 1:
                        zahl[a/c]-= 1
                    elif zahl[a/c] == 1:
                        zahl[a/c] = 9 
                     
            zc +=1           
        za +=1

def ausgabe():
    za = 1
    zb = 1
Ich erwrte nur die Lösung für den Absturz, möchte mir selbst meine Zähne daran ausbeißen! (Oder generiert er das Feld, nur ich bin zu ungeduldig?)

Verfasst: Freitag 21. April 2006, 15:15
von Rebecca
Das Programm stuerzt nicht ab sondern es tut einfach... nichts! :P

Du definierst jede Menge Funktionen, aber aufrufen tust du sie nicht. Ausserdem wird nirgendwo irgendwas ausgegeben, selbst wenn deine ganzen Funktionen ausgefuehrt wuerden, wuerdest du es gar nicht mitbekommen...

Ausserdem tut jede Funktion was fuer sich, aber sie koennen nicht miteinander kommunizieren. Keine Uebergabewerte, keine Rueckgabewerte.

Verfasst: Samstag 22. April 2006, 22:08
von modelnine
Unabhängig davon kann das Programm in der Form nicht funktionieren. Was soll zahl[a/c] machen? Überleg mal, was a/c macht, und dann, was zahl[a/c] dementsprechend macht. Das Programm kann also in der Form definitiv keine Sudokus lösen.

Unabhängig davon: "Ich erwarte nur die Lösung für den Absturz" ist ein ziemlich falscher Weg um Interesse zu wecken Sich mit deinem Programm auseinanderzusetzen. Aber die Diskussion hatten wir ja in ähnlicher Form schon mal... ;-)

Verfasst: Sonntag 23. April 2006, 16:58
von murph
OK, dass mit dem Erwarten war unglücklich formuliert.
Ich habe leider vergessen, dass a/c auch eine Bedeutung hat, will eigentlich diese als Koordinaten übergeben. Such als ich jetzt die Funktionen aufgerufen habe, hat es nicht funktioniert, aber erstmal werde ich eine einfache Datenbank anlegen, weil ich schließlich frei Daten in Verbvindung bringen möchte (die beiden Koordinaten und den Wert.

Verfasst: Montag 24. April 2006, 07:15
von BlackJack
Eine Datenbank!?

Du kannst in Dictionaries übrigens Tupel als Schlüssel verwenden:

Code: Alles auswählen

In [2]:a = dict()

In [3]:a[(42, 23)] = 4711

In [4]:a
Out[4]:{(42, 23): 4711}

Verfasst: Montag 24. April 2006, 14:12
von mitsuhiko
BlackJack hat geschrieben:Eine Datenbank!?

Du kannst in Dictionaries übrigens Tupel als Schlüssel verwenden:

Code: Alles auswählen

In [2]:a = dict()

In [3]:a[(42, 23)] = 4711

In [4]:a
Out[4]:{(42, 23): 4711}
Geht auch noch einfacher:

Code: Alles auswählen

>>> d = {('a', 'b'): 'c'}
>>> d['a', 'b']
'c'

Verfasst: Montag 24. April 2006, 18:32
von murph
Ach, die Klammern waren es!
Ich hatte immer einen Parameter zu viel, was durchaus verständlich war.
Aber wenn ich zwei Parameter so zusammenschließen kann...Damit werde ich das dann einmal versuchen.