2017-05-18 5 views
0

Hallo Ich bin ein Anfänger in Python. Ich benutze Python 3 und habe ein Problem mit meinem Code. Ich habe genau dasselbe gemacht, aber mit Addition und Subtraktion und es hat gut funktioniert, aber wenn ich es mit Division und Multiplikation mache, bekomme ich einen Fehler. Hier ist der Code:Python Taschenrechner Ausgaben

import math 

division = 'division' 
multiplication = 'multiplication' 

class calculator: 

    math = input('Enter division or multiplication: ') 

    if math == division: 
     x = float(input('First number: ')) 
     y = float(input('Second number: ')) 
     def division(x,y): 
      div = x/y 
      print(div) 
     division(x/y) 

    elif math == multiplication: 
     x = int(input('First number: ')) 
     y = int(input('Second number: ')) 
     def multiplication(x,y): 
      mult = x * y 
      print(mult) 
     multiplication(x * y) 

    else: 
     print('Invalid input!') 

und hier ist der Fehler, den ich bekommen:

Traceback (most recent call last): 
    File "/Users/linusekman/Desktop/test1.py", line 6, in <module> 
    class calculator: 
    File "/Users/linusekman/Desktop/test1.py", line 16, in calculator 
    division(x/y) 
TypeError: division() missing 1 required positional argument: 'y' 

Was kann das Problem sein?

+3

Warum haben Sie hier sogar eine Klassenaussage? – user2357112

Antwort

4

division(x/y) und multiplication(x * y) muss division(x , y) und multiplication(x , y) geändert werden, sonst sind vorbei Sie die Lösung von x/y und x*y auf die Funktion, nicht die beiden Werte selbst.

Randbemerkung: Sie sollten nicht import math wenn Sie tun es nicht zu benutzen, und dass Sie bereits overrode Variable math in der Steigung Ihre Klasse, math = input('Enter division or multiplication: ').

Eine weitere Randnotiz: Die Klassenstruktur ist nicht notwendig für das, was Sie tun, wenn Sie diesen Codeabschnitt wiederverwenden möchten, ändern Sie die Klasse in eine Funktion.

1

Sie möchten division(x, y) anstelle von division(x/y). (Das Gleiche gilt für die Multiplikation.)

0

ist bei Ihrem Beispiel aussehen lassen (^. ^)

if math == division: 
     x = float(input('First number: ')) 
     y = float(input('Second number: ')) 
     def division(x,y): 
      div = x/y 
      print(div) 
     division(x/y) <-(pay attention to this line!) 

Wenn Sie eine Funktion namens def division (x,y) erstellen Sie zum Ausdruck, dass diese Funktion zwei Variablen akzeptieren.

Sie gehen zu sagen, dass diese Funktion den Quotienten aus drucken, wenn Sie teilen x von y (div = x/y und print(div)).

Wenn Sie die Teilungsfunktion aufrufen möchten, müssen Sie ihr zwei Variablen übergeben, auf denen sie die Aufgabe ausführen kann, der Sie sie zugewiesen haben. Sie übergeben es nicht x/y, weil 1) es erfordert zwei Variablen 2) die Funktion wird das mit den beiden Variablen übergeben.

Verwandte Themen