2016-05-23 54 views
1

我在嘗試從字符串數組中寫入一些結果到文件中。該列表是實際包含數字的字符串,我希望將其除以1000.如果將結果轉換保存到變量中,我可以將它打印到文件中沒有任何問題。但是,如果我嘗試在同一行中做同樣的事情,我會得到以下錯誤:從Python打印時發生Str/Int類型錯誤

TypeError: unsupported operand type(s) for /: 'str' and 'int' 

任何想法發生了什麼?這裏是我的代碼的簡化版本:

str_list = ['45000', '45500', '50000', '55000'] 
indx = 2 

o = open('Output_file.dat', 'w') 

這個工程....

x = float(str_list[indx])/1000 
o.write('%4.1f\t' % x) 

這不

o.write('%4.1f\t' % float(str_list[indx])/1000) 

明顯的短期解決辦法是使用第一語法,但我想了解發生了什麼,以及爲什麼第二個不起作用。

回答

1

%劃分字串第一次評估:

o.write('%4.1f\t' % float(str_list[indx])/1000) 

是像(注意括號):

o.write(('%4.1f\t' % float(str_list[indx]))/1000) 

你想:

o.write('%4.1f\t' % (float(str_list[indx])/1000)) 
+0

AHHHH,這是有道理的。謝謝! – Helos35

4

您只需塗在float(str_list[indx])/1000部分支架

o.write('%4.1f\t' % (float(str_list[indx])/1000)) 

否則,程序將嘗試通過1000