如何用python中的输入求解和方程

时间:2018-05-20 03:24:13

标签: python input equation exponent

我正在尝试创建一个在等式中使用用户输入的python程序。当我运行程序时,它会给出这个错误代码," answer =((((A * 10 A)** 2)(B * C))* D ** E) TypeError:**或pow()不支持的操作数类型:' int'和' str'"。我的代码是:

import cmath

A = input("Enter a number for A: ")
B = input("Enter a number for B: ")
C = input("Enter a number for C: ")
D = input("Enter a number for D: ")
E = input("Enter a number for E: ")

answer = ((((A*10**A)**2)**(B*C))*D**E)
print(answer)`

5 个答案:

答案 0 :(得分:1)

input()函数返回一个字符串值:您需要使用Decimal转换为数字:

from decimal import Decimal

A = Decimal(input("Enter a number for A: "))
# ... etc

但您的用户可能会输入不是十进制数字的内容,因此您可能需要进行一些检查:

from decimal import Decimal, InvalidOperation

def get_decimal_input(variableName):
    x = None
    while x is None:
        try:
            x = Decimal(input('Enter a number for ' + variableName + ': '))
        except InvalidOperation:
            print("That's not a number")
    return x

A = get_decimal_input('A')
B = get_decimal_input('B')
C = get_decimal_input('C')
D = get_decimal_input('D')
E = get_decimal_input('E')

print((((A * 10 ** A) ** 2) ** (B * C)) * D ** E)

答案 1 :(得分:0)

编译器认为您的输入是字符串类型。您可以使用float()包装A,B,C,D,E中的每一个,以将输入转换为浮点类型,前提是您实际上在终端输入数字。这样,你就可以使用浮点数而不是字符串,而python并不知道如何处理。

A = float(input("Enter a number for A: "))
B = float(input("Enter a number for B: "))
C = float(input("Enter a number for C: "))
D = float(input("Enter a number for D: "))
E = float(input("Enter a number for E: "))

答案 2 :(得分:0)

input()会返回一个字符串,您必须先将输入转换为integers(或floatsdecimals ...),然后才能在数学公式中使用它们。我建议创建一个单独的函数来包装你的输入,例如:

def num_input(msg):
    # you can also do some basic validation before returning the value
    return int(input(msg))  # or float(...), or decimal.Decimal(...) ...

A = num_input("Enter a number for A: ")
B = num_input("Enter a number for B: ")
C = num_input("Enter a number for C: ")
D = num_input("Enter a number for D: ")
E = num_input("Enter a number for E: ")

答案 3 :(得分:0)

该代码可以正常运行python 2.7我认为你使用的是python 3.5+所以你必须转换变量,这样就会变成这样的

import cmath

A = int(input("Enter a number for A: "))
B = int(input("Enter a number for B: "))
C = int(input("Enter a number for C: "))
D = int(input("Enter a number for D: "))
E = int(input("Enter a number for E: "))

answer = ((((A*10**A)**2)**(B*C))*D**E)
print(answer)

我测试了它

Enter a number for A: 2
Enter a number for B: 2
Enter a number for C: 2
Enter a number for D: 2
Enter a number for E: 2
10240000000000000000

答案 4 :(得分:0)

有三种方法可以解决它,

A = int(input("Enter a number for A: "))
B = int(input("Enter a number for B: "))
C = int(input("Enter a number for C: "))
D = int(input("Enter a number for D: "))
E = int(input("Enter a number for E: "))

将你限制为整数(整数)

或:

A = float(input("Enter a number for A: "))
B = float(input("Enter a number for B: "))
C = float(input("Enter a number for C: "))
D = float(input("Enter a number for D: "))
E = float(input("Enter a number for E: "))

将你限制为浮动数字(小数点两边都有数字,which can act a bit weird

第三种方式不像其他两种方式那样推荐,因为我不确定它是否在python 3.x中有效,但它是

A = num_input("Enter a number for A: ")
B = num_input("Enter a number for B: ")
C = num_input("Enter a number for C: ")
D = num_input("Enter a number for D: ")
E = num_input("Enter a number for E: ")