我使用Python來運行地下水模型 我的問題是:運行一次
我存儲在列表Model_Names三個地下水模型[慢速,中速,快速]
每模型有不同的性質和不同的MODELNAME即SLOW
我的腳本生成的輸入文件所特有的每個MODELNAME
我正在串聯的三個型號的車型,每個示範運行5次,總共的15次運行。
每次生成地下水位。
除了每個模型的第一次運行(設置水平)之外,先前的模擬中模擬的水平被設置爲下一次模擬的起始水平。在SLOW(我) 即起始水平=模擬水平SLOW(I-1)
不過,我不希望使用模擬水平不同型號
即。我不想在SLOW含水層中模擬水平,以通知中等含水層模擬。
所以我想寫一個for循環,檢查modelname是否等於之前的modelname
然後確定使用哪個輸入文件。
,但我有工作了代碼使用指定循環的先前重複
我曾嘗試下面的代碼,在這裏我想目前MODELNAME印刷相比
for m, modelname in enumerate(Model_Name):
print('Model Name = ' +modelname)
if m!=0 and modelname == Model_Name[m-1]:
print ('** STARTING HEAD INPUT FILE UPDATED WITH HEADS FROM PREVIOUS SIMULATION')
else:
print('** STARTING HEAD INPUT FILE BUILT ')
問題
但是它將modelname(i)與modelname(i-1)進行了三次比較,因爲它循環了Model_Names的整個長度。
我希望它只檢查modelnames(i)== modelnames(i-1)每個模型運行一次,而不循環Model_Names的整個長度。有沒有一種方法來檢查每個模型運行的modelname,而不通過Model_Names循環?
我也使用
while modelname == modelname[i-1]:
我找不到
任何引用我想做些什麼嘗試。
對不起,我應該提到的是,for循環嵌套在另一個for循環:
Lag_times = [0.0000864, 0.000864, 0.00864]
Manage_Freq = [30, 183, 365, 730, 1825, 3650, 18250]
Model_Name = ['SLOW', 'MEDIUM', 'FAST']
# Loop through each model variable, build and run model
for i, j in zip (Lag_times, Model_Name):
hk = i # set hydraulic conductivity
modelname = j
for k in Manage_Freq:
Freq = k
# The code in here builds and runs model
然後我想檢查,如果模型運行的MODELNAME等於先前#modelname
if modelname !=0 and modelname == Model_Name[modelname-1]:
print (' STARTING HEAD INPUT FILE UPDATED WITH HEADS FROM PREVIOUS SIMULATION')
else:
print('** STARTING HEAD INPUT FILE BUILT ')
我不認爲我需要通過Model_Names循環,但我無法確定輸入什麼代碼來檢查modelname(i)== modelname(i-1)而不使用Model_Names。
for循環應該只覆蓋'Model_Name'一次,而不是三倍的長度。請編輯您的帖子以修復代碼的縮進 –
是的,它將modelname(i)與modelname(i-1)進行了三次比較(實際上是長度爲3的列表中的兩次),因爲您試圖比較當前名字到前一個......仍然不清楚你想要什麼。 –
對不起,請重新提問 – Emma