在Python中使用raw_input读取值

blu*_*959 0 python

我正在尝试在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)

(*注意:eqarea_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的第一部分.

对不起新手问题.

Mar*_*ers 5

您的代码在开始时是错误的.您需要在阅读用户输入后分配变量:

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中,除法运算符默认执行您想要的操作.