私はPython3.5を使用していますが、私が選択して計算を実行するデータが格納されたSQLiteデータベースを持っています。私が使用しているコードは以下の通りです。入れ子になったforループの動作に問題があります
def Horizontal_Cyl():
c.execute("SELECT DIR_Dish1 FROM Tanks")
DIR_Dish1 = c.fetchall()
print ("Dish ",DIR_Dish1)
c.execute("SELECT DIR_Radius FROM Tanks")
DIR_Radius = c.fetchall()
print ("Radius",DIR_Radius)
c.execute("SELECT VAR_LevelReg FROM Tanks")
VAR_LevelReg = c.fetchall()
print ("Level",VAR_LevelReg)
c.execute("SELECT DIR_Length FROM Tanks")
DIR_Length = c.fetchall()
print ("Length",DIR_Length)
x = Dish_Vol()
dish1Volume = x
for row in c.execute("SELECT DIR_Radius, VAR_LevelReg, DIR_Length FROM Tanks"):
for DIR_Radius in row:
for VAR_LevelReg in row:
for DIR_Length in row:
cylinderVolume = (((DIR_Radius * DIR_Radius) * math.acos((DIR_Radius - VAR_LevelReg)/DIR_Radius)) - \
((DIR_Radius - VAR_LevelReg) * math.sqrt((DIR_Radius * DIR_Radius) - \
((DIR_Radius - VAR_LevelReg) * (DIR_Radius - VAR_LevelReg))))) * (DIR_Length/1000)
volume = cylinderVolume/1000
Total = volume + dish1Volume + dish1Volume
print ("Total: ",Total)
ここで、Dish_Volは、後で使用する数値xを与えるもう1つのコードです。
私は問題を抱えていますがここにある:総ため
for row in c.execute("SELECT DIR_Radius, VAR_LevelReg, DIR_Length FROM Tanks"):
for DIR_Radius in row:
for VAR_LevelReg in row:
for DIR_Length in row:
cylinderVolume = (((DIR_Radius * DIR_Radius) * math.acos((DIR_Radius - VAR_LevelReg)/DIR_Radius)) - \
((DIR_Radius - VAR_LevelReg) * math.sqrt((DIR_Radius * DIR_Radius) - \
((DIR_Radius - VAR_LevelReg) * (DIR_Radius - VAR_LevelReg))))) * (DIR_Length/1000)
volume = cylinderVolume/1000
Total = volume + dish1Volume + dish1Volume
print ("Total: ",Total)
、私は出力を取得しています:
Total: 4664.471999862134
Total: 5045.348779887742
Total: 27614.512396288894
Total: 5148.702861581893
Total: 5575.141845226646
Total: 30844.130922594857
Traceback (most recent call last):
File "C:\Users\TJgro\workspace\SQLite Practise\Dish_Vol\Calculations \__init__.py", line 204, in <module>
main()
File "C:\Users\TJgro\workspace\SQLite Practise\Dish_Vol\Calculations\__init__.py", line 202, in main
Horizontal_Cyl()
File "C:\Users\TJgro\workspace\SQLite Practise\Dish_Vol\Calculations\__init__.py", line 190, in Horizontal_Cyl
cylinderVolume = (((DIR_Radius * DIR_Radius) * math.acos((DIR_Radius - VAR_LevelReg)/DIR_Radius)) - \
ValueError: math domain error
エラーの前にリストされている最終合計。 30,844 ....私が探している正しい結果です。私が仮定している数学的なドメインの誤差は、三角法との相互作用を実行している反復からの負の出力があるためです。
私は理解できないようですが、forループがどのように動作しているのか、私はそれらをフォローするように見えず、出力として取得する数字に到達することができません。プログラムの 前の部分では、私は、例えば書かれている:
for row in c.execute("SELECT DIR_Dish1 FROM Tanks"): #Main loop
for DIR_Dish1 in row: #Select the column DIR_Dish1 for each entry
if DIR_Dish1 > 0.001:
そして、これは計算が唯一の変数DIR_Dish1を関与として私は、タスクを達成しましょう持っています。
for row in c.execute("SELECT DIR_Radius, VAR_LevelReg, DIR_Length FROM Tanks"):
for DIR_Radius, VAR_LevelReg, DIR_Length in row:
が、これはint型を反復可能なエラーではないスロー:今直面しprobelmイムは、私が実行する必要がある計算は、DIR_Dish1は、VAR_LevelReg、 によって私はに似何かを書くと言う掛ける関与していることです。
私はちょうど値30,844に到達することができますどのように助けていただければ幸いです... forループを使用して出力されています。ありがとうございました。
エラーが発生したときの計算にはどのような値がありますか? –
DIR_Radius = 1371 VAR_LevelReg = 1500 DIR_Length = 9144 Dish1 = 180 X = 308.27451 –
そして、これらの値から 'cylinderVolume'をcalcualteするformularは動作しますか?これらの値だけを使って定型句を実行しようとしましたか? –