下面是代碼,但輸出是錯誤的,它只在循環時輸出第一個索引值。當我打印 col、rac 和 mon 的值時,它會起作用。我還檢查了 i 值以確保它們以正確的方式遞增。文本文件:Fav Color -- *color* Fav Car -- *car*Number -- *Money*代碼:with open('carstest.txt', 'r') as file : testdata = file.read()colors = ["RED","GREEN","BLUE"]car =['Ferrari', 'Mustang','Camero']Money = ['one','two','three']i =0while i <len(colors): col = colors[i] rac = car[i] mon = Money[i] testdata = testdata.replace('*color*', col) testdata = testdata.replace('*car*', rac) testdata = testdata.replace('*Money*', mon) print(testdata) i+=1else: print ("DONE")輸出:Fav Color -- RED Fav Car -- FerrariNumber -- oneFav Color -- RED Fav Car -- FerrariNumber -- oneFav Color -- RED Fav Car -- FerrariNumber -- oneDONE期望輸出:Fav Color -- RED Fav Car -- FerrariNumber -- oneFav Color -- GREENFav Car -- MustangNumber -- twoFav Color -- BLUEFav Car -- CameroNumber -- threeDONE
2 回答

炎炎設計
TA貢獻1808條經驗 獲得超4個贊
問題出在while算法上。對于每個額外的循環,您需要重新加載變量的原始內容(文件內容)。簡而言之,您要查找一個字符串*color*,但不幸的是,該字符串已str.replace()被使用而不再存在。因此testdata已更改并且下一個循環重復不再相關。否則你必須解決算法。例如,在while循環開始時,創建一個臨時變量:
with open('carstest.txt', 'r') as file :
testdata = file.read()
colors = ['RED','GREEN','BLUE']
car =['Ferrari', 'Mustang','Camero']
Money = ['one','two','three']
i = 0
while i < len(colors):
s = testdata
s = s.replace('*color*' , colors[i])
s = s.replace('*car*' , car[i])
s = s.replace('*Money*' , Money[i])
print(s)
i += 1
else:
print ("DONE")
添加回答
舉報
0/150
提交
取消