我正試圖在文件中寫入一個從這個函數計算出來的數據。但是這個函數被稱爲次數。假設在另一個文件中有9個數字,這個函數將計算這9個數字中的每一個的根。這個函數的這9個根應該寫在同一個文件中。但是我在這裏完成的方式會在文件中寫入計算的根,但下一個將在文件中替換它。在這個函數被調用之前,對這9個數字中的每一個都會執行其他的數學函數,因此這些函數會被再次單獨調用。是否可以將它們全部寫入同一個文件中?謝謝。在同一個文件中寫入從一個函數中計算出來的多個數據
def Newton(poly, start):
""" Newton's method for finding the roots of a polynomial."""
x = start
poly_diff = poly_differentiate(poly)
n = 1
counter = 0
r_i = 0
cFile = open("curve.dat", "w")
while True:
if (n >= 0) and (n < 1):
break
x_n = x - (float(poly_substitute(poly, x))/poly_substitute(poly_diff, x))
if x_n == x:
break
x = x_n # this is the u value corresponding to the given time
n -= 1
counter += 1
x = str(x)
cFile.write('\n' + x + '\n')
if r_i:
print "t(u) = ", (x, counter)
else:
print "t(u) = ", x
cFile.close
以下的建議後,我得到了我改變了代碼如下:
def Newton(poly, start):
""" Newton's method for finding the roots of a polynomial."""
x = start
poly_diff = poly_differentiate(poly)
n = 1
counter = 0
while True:
if (n >= 0) and (n < 1):
break
x_n = x - (float(poly_substitute(poly, x))/poly_substitute(poly_diff, x))
if x_n == x:
break
x = x_n # this is the u value corresponding to the given time
n -= 1
counter += 1
yield x
Bezier(x)
def Bezier(u_value) :
""" Calculating sampling points using rational bezier curve equation"""
u = u_value
p_u = math.pow(1 - u, 3) * 0.7 + 3 * u * math.pow(1 - u, 2) * 0.23 \
+ 3 * (1 - u) * math.pow(u, 2) * 0.1 + math.pow(u, 3) * 0.52
p_u = p_u * w
d = math.pow(1 - u, 3) * w + 3 * u * w * math.pow(1 - u, 2) + 3 * (1 - u) *\
w * math.pow(u, 2) + math.pow(u, 3) * w
p_u = p_u/d
yield p_u
plist = list (p_u)
print plist
我跟着貝塞爾()函數,但plist中同樣的事情不會創建,因爲它不打印任何東西。請幫忙。謝謝。
我以前做過這個清單。與列表中的文件一樣,下一個替換當前值。如何在函數被再次調用時附加值?謝謝 – zingy
非常感謝。將嘗試它。 – zingy
或'在牛頓中的根(...):output_file.writeline(root)'。 – katrielalex