2016-11-21 2 views
2

Ich mache gerade einen Programmierkurs für Python und dies ist eine meiner Aufgaben. Ich musste im Grunde durch Addieren multiplizieren. Ich hatte es bis zu dem Punkt, wo ich alles getan habe, was getan werden muss, aber das hier ist ein zusätzlicher Kredit. Ich habe den Auftrag bereits eingereicht, aber jetzt bin ich hier, um zu fragen, warum das nicht funktioniert.Schnellanfrage Über mein Programm

Das Problem ist, dass es nicht funktionierte, wenn die yMult Variable eine Gleitkommazahl war. Was ich denke, ist, dass mein Zähler (wie der Lehrer es mit einer Schleife und einem Zähler wollte) jedes Mal um 1 steigt und wenn ich eine Gleitkommazahl wie die yMult habe, die es nicht hätte xMult gehen durch wie sagen .5. Was würde ich tun, um das zu beheben und/oder wie würde es aussehen? Hier

ist der Code, den ich gemacht hatte:

def add(xAdd, yAdd):  
    return xAdd + yAdd 

def subtract(xSub, ySub):  
    return xSub + (-ySub) 

def multiply(xMult, yMult):  
    total = 0.0  
    counter = 0.0  
    while counter > yMult:  
     if yMult <= 0.0: 
      total = add(total, -xMult) 
      counter = add(counter, -1.0) 
    while counter < yMult: 
     if yMult >= 0.0: 
      total = add(total,xMult) 
      counter = add(counter, 1.0) 
    return total 

def main(): 
    print multiply (5.5,9), multiply(9,5.5), multiply(2,4), multiply(2,-4), multiply(-4,2), multiply(-4,-2), multiply(4,1), multiply(1, 4), multiply(4, 0), multiply(0, 4), multiply(4, -1) 

main() 

Die Ergebnisse waren wie folgt: 49.5 54.0 8.0 -8.0 -8.0 8.0 4.0 4.0 0.0 0.0 -4.0

Jede Hilfe wäre genial!

Antwort

0

Ich bin mir nicht sicher, ob Sie das ohne eine gewisse Multiplikation beheben können.
Wenn Sie mit 0,5 fortfahren möchten, müssen Sie die Hälfte einer anderen Zahl hinzufügen, was bedeutet, dass sie mit 0,5 multipliziert wird.
Aber wenn Sie garantiert mindestens eine ganze Zahl erhalten, dann könnte man es als Zähler verwendet werden:

def multiply(xMult, yMult):  
total = 0.0  
counter = 0.0  
limit = yMult 
toAdd = xMult 
if isinstance(xMult,int): 
    limit = xMult 
    toAdd = yMult 
while counter <abs(limit):  
    if limit <= 0.0: 
     total = add(total, -toAdd) 
    else: 
     total = add(total,toAdd) 
    counter = add(counter, 1.0) 
return total 
+0

ja, ich weiß, wie ich es mit der Multiplikation tun würde, aber das Problem ist, dass der Professor sagte ausdrücklich nicht überall Multiplikation im Problem XD – DiabolicNick