簡體   English   中英

在Python中使用raw_input讀取值

[英]Reading values with raw_input in 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()

(*注意: area_under_graph()函數下的eq僅是它的一半,因為另一半是工作,所以我沒有發布它:))對於頂部代碼,我嘗試在此處輸入值:(也許您可以嘗試使用相同的(:)

a = 1
b = 2
c = 1
m = 2
n = 1
x = 1

我應該得到7/3,即2.333,但最終得到2。問題似乎出在等式的第一部分。

對不起,新手問題。

一開始您的代碼是錯誤的。 閱讀用戶輸入后,需要分配變量:

value_of_a()

應該:

a = value_of_a()

也不必編寫用於輸入每個變量的單獨函數。 您可以改用帶有參數的函數:

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..

但是隨后您將忽略所有這些值,並在area_under_curve()方法中再次讀取它們。 這可能不是您打算做的。 此外,在此方法內部,您假定所有參數都是整數。 如果您使用的是Python 2.5,則此處的除法是整數除法:

m1/m2

當結果實際上應該是非整數(如0.125)時,它可以返回0。 您需要使用浮點數而不是整數來進行計算。 您可以在Python 2.5中使用float(m)進行此操作。 在Python 3.0中,除法運算符默認情況下會執行您想要的操作。

/在Python2中執行Integer除法,這意味着a/bc*b <=a的最大整數c ,因此7/3的確是2 您需要浮點數,因此需要使用它們..在代碼中將所有int替換為float

您可能也應該再看一下函數...您的代碼可以短很多:-)

在Python 2.x中,將一個整數除以另一個整數將得出一個整數。 可以from __future__ import division ,也可以將整數之一傳遞給float()將其轉換為float()

問題是您正在使用整數算術-查看到處都有的所有int調用。 整數算術(在Python 2.x中)只會返回整數,因此您永遠不會得到2.33,只有2。

使用float()而不是int() ,事情應該可以進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM