我的主要問題是在以下情況下列印索引。
catNames = []
while True:
print('Enter the name of cat ' str(len(catNames) 1) ' (or enter nothing to stop.):')
name = input()
if name == '':
break
catNames = catNames [name]
print('The cat names are:')
for name in catNames:
print(str(catNames.index(name) 1) '. ' name)
在第一個場景中,結果是
Enter the name of cat 1 (or enter nothing to stop.):
george
Enter the name of cat 2 (or enter nothing to stop.):
sally
Enter the name of cat 3 (or enter nothing to stop.):
chloe
Enter the name of cat 4 (or enter nothing to stop.):
The cat names are:
1. george
2. sally
3. chloe
這完全符合預期。
但是,當我在另一種情況下嘗試此操作時,它不起作用。下一個示例如下:
supplies = ['pens', 'staplers', 'flamethrowers', 'binders']
for i in supplies:
print('Index ' str(supplies.index(i) 1) 'in supplies is: ' supplies[i])
相反,我收到錯誤訊息“TypeError:串列索引必須是整數或切片,而不是 str”。
我知道有一種更好的方式來表達耗材示例,range(len(supplies)但我只是想了解為什么使用該for i in supplies版本不起作用,盡管它適用于catNames. 謝謝!
uj5u.com熱心網友回復:
你在這里做得很好
for name in catNames:
print(str(catNames.index(name) 1) '. ' name)
你在這里做不同的使用supplies[i]
for i in supplies:
print('Index ' str(supplies.index(i) 1) 'in supplies is: ' supplies[i])
解決方案
做和它作業時一樣
for i in supplies:
print('Index ' str(supplies.index(i) 1) 'in supplies is: ' i)
提升
用于enumerate在迭代時產生當前索引,您甚至可以選擇起始值
for idx, supply in enumerate(supply, 1):
print('Index ' idx 'in supplies is: ' supply)
uj5u.com熱心網友回復:
"TypeError: list indices must be integers or slices, not str".
它發生的地方:supplies[i]
supplies= ['pens', 'staplers', 'flamethrowers', 'binders']
i= pens(例如)
所以用這條線supplies[i]你試著這樣做supplies[pens]
list idx 必須像 [::-1] 或 [0] 而不是 str,不是 'pen'
ps最好的方法是enumerate:
supplies = ['pens', 'staplers', 'flamethrowers', 'binders']
for idx,i in enumerate(supplies):
print(f'Index {idx} in supplies is: {i}')
# Index 0 in supplies is: pens
# Index 1 in supplies is: staplers
# Index 2 in supplies is: flamethrowers
# Index 3 in supplies is: binders
uj5u.com熱心網友回復:
supplies = ['pens', 'staplers', 'flamethrowers', 'binders']
for i in supplies:
print('Index ' str(supplies.index(i) 1) 'in supplies is: ' supplies[i])
這段代碼不起作用的原因是因為i在這種情況下不是整數,而是supplies串列中的各個字串項。
所以本質supplies[i]上在這種情況下是supplies['pens'],supplies[staplers]而不是supplies[0],supplies[1]等等。
您只能使用索引來訪問使用此方法的串列中的特定專案。
為了糾正這個問題,我建議enumerate像其他人提到的那樣使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/529027.html
