Hjälp med simpel python kod.
Jag har kört fast och suttit och stirrat på koden en stund nu och förstår inte riktigt varför det blir fel. Tänkte kanske någon kan peka på var felet skulle kunna vara.
Funktionen på koden:
STEG 1:
Är att den först ska kontrollera om talet (fyrsiffrigt) finns i ett binärt sökträd, gör den det ska den bara gå vidare till den hittar ett tal som inte gör det.
STEG 2:
Här ska den ta den gissningen och se till så att alla siffrorna i talet är unika tex 1023 (inte 1030).
STEG 3:
När den hittat ett tal som uppfyller båda talen ska den helt enkelt returnera detta tal. OBS! Här är felet någonstans.
Koden ser ut enligt följande:
def nygissning(gissning):
while tree.exists(gissning):
gissning = gissning + 1
print "Gissningen", gissning, "finns redan i tradet"
else:
tree.insert(gissning)
s_giss = [int(i) for i in str(gissning)]
print "GISSNING", gissning
for i in range(0,3):
k = 3
print "-----","i=",i,"-----"
while k>i:
print "nuvarande gissning:", gissning, "Varv:", k
if s_giss[i] == s_giss[k]:
s_giss = [int(i) for i in str(gissning)]
print "Gissningen",gissning, "har inte unika siffror"
gissning = gissning + 1
nygissning(gissning)
print
else:
k = k - 1
if i == 2:
print "--- NU HAR JAG HITTAT EN GISSNING ---"
return gissning
Utrskriften:
My guess is 1029
Your answer is:
Gissningen 1030 finns redan i tradet
GISSNING 1030
----- i= 0 -----
nuvarande gissning: 1030 Varv: 3
nuvarande gissning: 1030 Varv: 2
nuvarande gissning: 1030 Varv: 1
----- i= 1 -----
nuvarande gissning: 1030 Varv: 3
Gissningen 1030 har inte unika siffror
GISSNING 1031
----- i= 0 -----
nuvarande gissning: 1031 Varv: 3
Gissningen 1031 har inte unika siffror
GISSNING 1032
----- i= 0 -----
nuvarande gissning: 1032 Varv: 3
nuvarande gissning: 1032 Varv: 2
nuvarande gissning: 1032 Varv: 1
----- i= 1 -----
nuvarande gissning: 1032 Varv: 3
nuvarande gissning: 1032 Varv: 2
----- i= 2 -----
nuvarande gissning: 1032 Varv: 3
--- NU HAR JAG HITTAT EN GISSNING ---
----- i= 1 -----
nuvarande gissning: 1032 Varv: 3
nuvarande gissning: 1032 Varv: 2
----- i= 2 -----
nuvarande gissning: 1032 Varv: 3
--- NU HAR JAG HITTAT EN GISSNING ---
----- i= 2 -----
nuvarande gissning: 1031 Varv: 3
--- NU HAR JAG HITTAT EN GISSNING ---
Slutgiltig gissning: 1031
Till problemet:
Problemet är att den inte stannar där jag har satt "return gissning" utan den fortsätter och vad jag inte är varför den börjar på varv 1 och inte 0 igen i for satsen? Hur ska jag lyckas få den att stanna och returnera, i detta fall, 1032 som den hittar?
Tack på förhand // Patrik