我是 Python 新手,這是我的代碼:
import numpy as np
x = [0, 0, 0, 0, 5, 0, 10, 5]
y = [4, 4, 4, 4, 9, 4, 2, 9]
def unitvector1 (x,y):
looplim=(len(x) 1)
for i in range (0,looplim):
z=i 1
alfa = np.arccos((x[i]*x[z]) (y[i]*y[z])) / ((np.sqrt(x[i] ^ 2 y[i] ^ 2) * np.sqrt(x[z] ^ 2 y[z] ^ 2)))
beta = (180-alfa)
return (beta)
temp=unitvector1(x,y)
print(temp)
我收到了這個錯誤:
IndexError:串列索引超出范圍
我試圖用兩個 for 回圈來做,但沒有用。
非常需要您的幫助,非常感謝您的幫助。
uj5u.com熱心網友回復:
串列從 0 開始索引,因此對于長度為 13 的串列,最后一個有效索引是 12,即比長度小 1。
當你做looplim=(len(x) 1)thenfor i in range (0,looplim)時,最后一個值i是looplim-1等于len(x),所以它是長度而不是小于 1。
uj5u.com熱心網友回復:
looplim=len(x)
for i in range(looplim-1):
alfa = np.arccos((x[i]*x[z]) (y[i]*y[z])) / ((np.sqrt(x[i] ^ 2 y[i] ^ 2) *
np.sqrt(x[z] ^ 2 y[z] ^ 2)))
對于“alfa”的每個迭代值是 nan
uj5u.com熱心網友回復:
從 looplim=(len(x) 1) 和 z = i 1 中洗掉 1 然后運行代碼!
uj5u.com熱心網友回復:
好的,首先你應該看看你的變數 z。當 i=7 z=8 且 x 陣列中沒有 8 的索引元素時。其次,不知道為什么要嘗試“looplim”。如果您想以這種方式對 n 和 n 1 個元素進行操作,我們可以添加下一個:
def unitvector1 (x,y):
for i in range (len(x)-1):
z=i 1
if z==len(x) 1:
z=0
alfa = np.arccos((x[i]*x[z]) (y[i]*y[z])) / ((np.sqrt(x[i] ^ 2 y[i] ^ 2) * np.sqrt(x[z] ^ 2 y[z] ^ 2)))
beta = (180-alfa)
return (beta)
但是沒有作業!因為 arccos(alpha) 應該有 alpha<|1|
如果你能解釋你想計算什么,也許我們可以幫助你
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/424729.html
