2016-10-31 3 views
0

Ich versuche, einen Code zu schreiben, der die Gesamtüberträge eines langen Divisionsproblems zählt. Dies ist die Funktion, die ich für die Übertragungen geschrieben habe. Ich glaube das Problem ist, dass die erste while-Schleife nicht den ganzen Weg funktioniert. Wenn ja, warum? Dies ist in Python 3.5.Warum läuft mein Programm nicht durch die erste While-Schleife?

carries = 0 
sum1 = 0 
countx = str(x) 
county = str(y) 
countx1 = len(countx) 
county1 = len(county) 
countx2 = int(countx1) 
county2 = int(county1) 
carry_over = 0 
count = countx1 
index = 1 
index1 = 1 
carrieslist = [0,0,0,0,0,0,0,0,0,0] 
while (index1 <= county1): 
    sum3 = county[-index1] 
    while (index <= count): 
     sum2 = countx[0-index] 
     sum4 = int(sum2) 
     sum5 = int(sum3) 
     sum1 = sum4*sum5+carry_over 
     sum6 = str(sum1) 
     index = index+1 
     if (sum1 > 9): 
      carries += 1 
      carry_over = int(sum6[0]) 
      if carry_over > 0: 
       if carry_over == 1: 
        carrieslist[1] += 1 
       if carry_over == 2: 
        carrieslist[2] += 1 
       if carry_over == 3: 
        carrieslist[3] += 1 
       if carry_over == 4: 
        carrieslist[4] += 1 
       if carry_over == 5: 
        carrieslist[5] += 1 
       if carry_over == 6: 
        carrieslist[6] += 1 
       if carry_over == 7: 
        carrieslist[7] += 1 
       if carry_over == 8: 
        carrieslist[8] += 1 
       if carry_over == 9: 
        carrieslist[9] += 1 
     else: 
      carry_over = 0 
    index1 = index1 + 1 
print(" ") 
print("Carries:",carries) 
print(" ") 
if sum(carrieslist) > 0: 
    print("Carry digit --> Frequency") 
countlist = 0 
indexlist = 0 
while (countlist < len(carrieslist)): 
    if (carrieslist[indexlist] > 0): 
     print(indexlist,"-->",carrieslist[indexlist]) 
     indexlist += 1 
     countlist += 1 
    else: 
     indexlist += 1 
     countlist += 1 
+0

Versuchen Sie auf einen negativen Index in der Zeile, Grafschaft [-index1] zuzugreifen? Was ist das eigentliche Problem, vor dem Sie hier stehen? Übrigens, was ist x und y? Was willst du eigentlich machen? –

+0

x und y sind die zwei Zahlen, die ich mit langer Multiplikation multipliziere, also zum Beispiel 9929 und 129. Und ich bin nur neugierig, warum es die Übertragungen für die 9 x 9929 zählt, aber nicht weiter mit den Übertragungen für die 2 und die 1 in 129. Hoffentlich macht das Sinn Ich kann immer die Eingabeaufforderung bei Bedarf posten –

+0

Sorry, aber deine Erklärung ist mir nicht klar. Kannst du erklären, was du mit "zählt die gesamten Übertragungen eines langen Teilungsproblems" in deinem Beitrag gemeint hast? –

Antwort

1

Ich erkannte das Problem. Initialisiere einfach den Variablenindex = 1 innerhalb der äußeren while-Schleife wie folgt.

while (index1 <= county1): 
    sum3 = county[-index1] 
    index = 1 
    while (index <= count): 
     sum2 = countx[0-index] 
     sum4 = int(sum2) 
     ................ 
     ................ 

Verbessern Sie Ihren Codierungsstil, damit die Codes lesbarer werden. Ich brauchte viel Zeit, um das Problem zu finden, da es schwierig war zu verstehen, was Sie in jeder Aussage geschrieben haben.

+0

Vielen Dank und ich entschuldige mich für den verschlüsselten Code –

Verwandte Themen