我正在尝试在Python中进行集成,但每当我键入一个值时,我的输出总是会产生0.这是什么原因?
例如:
def main():
eq_of_form()
value_of_a()
value_of_b()
value_of_c()
value_of_m()
value_of_n()
value_of_x()
area_under_graph()
def eq_of_form():
print "Eq of the form y = ax^m + bx^n + c " + ":"
def value_of_a():
return raw_input("Enter value for a \n")
def value_of_b():
return raw_input("Enter value for b \n")
def value_of_c():
return raw_input("Enter value for c \n")
def value_of_m():
return raw_input("Enter value for m \n")
def value_of_n():
return raw_input("Enter value for n \n")
def value_of_x():
return raw_input("Enter a value for x to find " +
"value of y and the gradient at that point \n " + "x = ")
def area_under_graph():
y = (int(value_of_a())*int(value_of_x())**(int(value_of_m())+1))/((int(value_of_m())+1))
// * 2nd part.This works for me(:
// + (int(value_of_b())) * (int(value_of_x())**
// (int(value_of_n())+1))/(int(value_of_n())+1) + ((int(value_of_c())*int(value_of_x())))
print y
main()
Run Code Online (Sandbox Code Playgroud)
(*注意:eq在area_under_graph()函数下只有一半,因为另一半的工作,所以我没有发布:))对于顶部代码,我尝试在这里输入值:(也许你可以尝试使用相同的( :)
a = 1
b = 2
c = 1
m = 2
n = 1
x = 1
Run Code Online (Sandbox Code Playgroud)
我应该得到7/3这是2.333,但我最终得到2.问题似乎在于eq的第一部分.
对不起新手问题.
您的代码在开始时是错误的.您需要在阅读用户输入后分配变量:
value_of_a()
Run Code Online (Sandbox Code Playgroud)
应该:
a = value_of_a()
Run Code Online (Sandbox Code Playgroud)
也没有必要编写一个单独的函数来输入每个变量.你可以改为使用一个带参数的函数:
def get_user_value(name):
return raw_input("Enter value for %s\n" % name)
a = get_user_value("a")
b = get_user_value("b")
# etc..
Run Code Online (Sandbox Code Playgroud)
但是你忽略了所有这些值并在area_under_curve()方法中再次读取它们.这可能不是你打算做的.此外,在此方法中,您假设所有参数都是整数.如果您使用的是Python 2.5,则此处的除法是整数除法:
m1/m2
Run Code Online (Sandbox Code Playgroud)
当结果实际上应该是非整数(如0.125)时,这可能返回0.您需要使用浮点数而不是整数来进行计算.您可以使用float(m)在Python 2.5中执行此操作.在Python 3.0中,除法运算符默认执行您想要的操作.