2017-05-18 84 views
0

你好,我是一個Python初學者。我使用Python 3,並與我的代碼有問題。我做了完全一樣的,但加法和減法,它工作得很好,但當我用分割和乘法時,我得到一個錯誤。下面是代碼:Python計算器問題

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!') 

,這裏是錯誤,我得到:

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' 

什麼可問題是什麼?

+3

爲什麼你甚至在這裏有類聲明? – user2357112

回答

4

division(x/y)multiplication(x * y)被改爲division(x , y)multiplication(x , y),否則你的x/yx*y解決方案傳遞給函數,而不是兩個數值本身。

備註:如果您不打算使用它,並且您已經超出了您班級的坡度math = input('Enter division or multiplication: ')中的變量math,則不應該使用import math

另一方面說明:如果您想要重用該代碼段,請將該類更改爲函數,則類結構對於您正在執行的操作不是必需的。

1

想要division(x, y)而不是division(x/y)。 (乘法一樣的。)需要

0

讓我們看看你的榜樣(^。^)

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!) 

當你創建一個名爲def division (x,y)功能,就表示該功能將接受變量。

你去上說,此功能將被Ÿdiv = x/yprint(div))打印時,你把X的商。

當你想調用你的除法函數時,你必須傳遞它兩個變量,它可以執行你指定的任務。你不通過它x/y,因爲1)它需要兩個變量2)函數將通過兩個變量傳遞。