arbeitet mit negativen Zahlen in Python

8

Ich bin ein Student in einem Konzept der Programmierklasse. Das Labor wird von einem TA betrieben und heute im Labor hat er uns ein wirklich einfaches kleines Programm zum Bauen gegeben. Es war einer, wo es sich durch Addition vermehren würde. Wie auch immer, er ließ uns absolut verwenden, um das Prog mit Negativen zu brechen. Ich habe es schnell hochgepeitscht und dann zehn Minuten mit ihm gestritten, dass es schlechtes Mathe ist. Es war, 4 * -5 ist nicht gleich 20, es entspricht -20. Er sagte, dass es ihm wirklich egal ist und dass es zu schwer wäre, das Prog mit den Negativen zu machen. Also meine Frage ist, wie gehe ich hier vor.

Hier ist das Prog, das ich eingegeben habe:

%Vor%

Ich möchte es ohne absolutes tun, aber jedes Mal wenn ich negative Zahlen eingib, bekomme ich eine große fette Gänsehaut. Ich weiß, dass es einen einfachen Weg dafür gibt, ich kann es einfach nicht finden.

    
dman762000 16.03.2010, 02:37
quelle

7 Antworten

4

Vielleicht würdest du das mit etwas erreichen, was

bedeutet %Vor%

oder vielleicht

%Vor%     
Mike Graham 16.03.2010, 02:52
quelle
3

Zu hart? Dein TA ist ... nun, der Satz würde mich wahrscheinlich verbieten. Wie auch immer, überprüfen Sie, ob numb negativ ist. Wenn dies der Fall ist, multiplizieren Sie numa mit -1 und do numb = abs(numb) . Dann mach die Schleife.

    
Ignacio Vazquez-Abrams 16.03.2010 02:50
quelle
3

Das abs () in der while-Bedingung wird benötigt, da es ja die Anzahl der Iterationen steuert (wie würden Sie eine negative Anzahl von Iterationen definieren?). Sie können es korrigieren, indem Sie das Vorzeichen des Ergebnisses invertieren, wenn numb negativ ist.

Dies ist also die modifizierte Version Ihres Codes. Hinweis: Ich habe die while-Schleife durch eine sauberere for-Schleife ersetzt.

%Vor%     
slacker 16.03.2010 03:03
quelle
1

Versuchen Sie dies auf Ihrem TA:

%Vor%

Ausgabe:

%Vor%     
John Machin 16.03.2010 04:13
quelle
0

Wie wäre es mit so etwas? (Verwendet keine abs () noch Multiplikation)
Hinweise:

  • Die Funktion abs () wird nur für den Optimierungstrick verwendet. Dieser Ausschnitt kann entweder entfernt oder neu codiert werden.
  • Die Logik ist weniger effizient, da wir das Vorzeichen von a und b bei jeder Iteration testen (zu zahlender Preis, um sowohl abs () als auch den Multiplikationsoperator zu vermeiden)
%Vor%     
mjv 16.03.2010 03:13
quelle
0

Danke an alle, ihr habt mir geholfen, viel zu lernen. Dies ist, was ich mit einigen Ihrer Vorschläge

gemacht habe %Vor%

Danke für die Hilfe allen.

    
dman762000 16.03.2010 23:42
quelle
-1
%Vor%     
Kitiyo 10.11.2014 20:34
quelle

Tags und Links