2017-05-18 74 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)函数将通过两个变量传递。