2016-01-16 59 views
0

這裏是我的名單,我提出:類型錯誤:對於一元+壞數類型:「STR」到一個列表

nums= [] 
for n in range(10): 
    thenums= random.randint(10,90) 
    print(thenums, end= " ") 
    nums.append(thenums) 

,現在我需要幫助單獨寫的每一個整數,但我有一個問題,寫作列表中的每個數字都來自文件上的某一行。

with open("angles.txt", 'w') as h: 
    for n in nums: 
     h.write[str(n), + '\n'] 
+0

'h.write [str(n),+'\ n']'或'h.write(str(n)+'\ n')'? –

+1

方括號('[]')用於_list indexing_,而不是函數調用,所以你的'h.write ['是無稽之談。更重要的是,'str(n),+'\ n''是一個SyntaxError,你將''\ n''附加到__what__? – ForceBru

+0

我使用'\ n'在每個整數之後創建另一行。我相信... – bogdan

回答

3

你的語法相當的差。行

h.write[str(n), + '\n'] 

產生兩個元件,str(n)+ '\n'的元組;後者拋出的異常:

>>> + '\n' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: bad operand type for unary +: 'str' 

沒有逗號,你正確地串聯數和字符串:

>>> n = 42 
>>> str(n) + '\n' 
'42\n' 

但你也嘗試使用h.write喜歡它是一個列表或字典:

>>> h = open('/tmp/demo.txt', 'w') 
>>> h.write['42\n'] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'builtin_function_or_method' object has no attribute '__getitem__' 

使用(...)圓括號來調用某些東西;正確的表達式是:

h.write(str(n) + '\n') 
+0

逗號是改變方形手鐲後的問題。 – bogdan

相關問題