我試圖創建一個代碼,它將打開一個包含數字列表的文件,然後將這些數字按照用戶需要的次數進行平滑處理。我打開並閱讀文件,但它不會轉置數字。在這種格式中,它給出了這個錯誤:TypeError:不支持的操作數類型爲/:'str'和'float'。我還需要弄清楚如何使數字轉換爲用戶請求的次數。我在.txt文件中使用的數字列表是[3,8,5,7,1]。如何在Python 2.7中多次平滑文件中的數字?
這正是我想要得到它做:
要求用戶輸入一個文件名
從文件中讀取所有的浮點數據到一個列表
詢問用戶有多少平滑傳遞,使
顯示平滑結果保留兩位小數
使用功能酌情
算法: 切勿均與它的兩個鄰國
這裏的值更改第一個或最後一個值 所有其他值計算新的價值觀是我到目前爲止有:
filename = raw_input('What is the filename?: ')
inFile = open(filename)
data = inFile.read()
print data
data2 = data[:]
print data2
data2[1]=(data[0]+data[1]+data[2])/3.0
print data2
data2[2]=(data[1]+data[2]+data[3])/3.0
print data2
data2[3]=(data[2]+data[3]+data[4])/3.0
print data2
該循環真的幫助,我只是不知道你的意思是解析我的文件,以及如何做到這一點。另外我會把eval或ast.literal_eval放在哪裏? (它不喜歡那個人沒有定義ast)我是新手。 – user45 2014-10-30 23:35:36
我運行它時也出現這個錯誤:data2 [i] = sum(data [i-1:i + 2])/ 3.0 TypeError:不支持的操作數類型爲+:'int'和'str' – user45 2014-10-30 23:45:23
該錯誤來自缺乏解析。如果你的文件包含文本'[3,8,5,7,1]',用'data = eval(inFile.read())'替換'data = inFile.read()'。或者導入'ast'模塊並使用'ast.literal_eval'而不是內建的'eval'函數(如果文件包含惡意數據,可能會造成不好的結果)。 – Blckknght 2014-10-31 00:32:54