如果回答==" M":print(mult(a,b))

时间:2016-04-03 05:24:09

标签: python

我必须制作两个递归函数,在Python中进行除法和乘法,我不知道下面的代码有什么问题:

def mult(a, b):
   if a == 0:
      return 0
   elif a == 1:
      return b
   else:
      return mult(a-1, b) + b

def div(a, b):
    if (a >= b):
        return div(a - b, b) + 1
    else: return 0

def main():

    a = input("Please enter your first value.\n")
    b = input("Please enter your second value.\n")

    answer = input("Please enter M or D. M to multiply your 2 values or D for Divide.\n")

    if answer == "M":
        print(mult(a, b))
    elif answer == "D":
        print(div(a, b))

main()

3 个答案:

答案 0 :(得分:1)

假设您使用的是Python 3,ab都是字符串。如果要将它们转换为整数,可以执行以下操作:

a = int(input("Please enter your first value.\n"))
b = int(input("Please enter your second value.\n"))

答案 1 :(得分:0)

您可能正在使用Python 3。

Python 3中的input()函数将始终返回一个字符串,因此ab将成为代码中的字符串而不是整数。您必须使用

将它们显式地键入整数

a = int(a)b = int(b)

答案 2 :(得分:0)

您可能提供了错误,甚至更好地用Google搜索了错误。我运行你的代码,问题是你的输入是一个字符串,但你试图将它作为整数使用。

这些行:

a = input("Please enter your first value.\n")
b = input("Please enter your second value.\n")

应该是:

a = int(input("Please enter your first value.\n"))
b = int(input("Please enter your second value.\n"))

此外,您的代码可以检查小写" M"和" D",您可以通过在输入行的末尾添加.upper()来实现。

answer = input("Please enter M or D. M to multiply your 2 values or D for Divide.\n").upper()