我正在尝试创建格式化的打印件,但收到此错误输出。我对python相当陌生,使用python3.x,所以任何输入都将不胜感激!谢谢!!
avgPetal_widthS = Average(petal_widthS)
avgPetal_widthVe = Average(petal_widthVe)
avgPetal_widthVi = Average(petal_widthVi)
avgPetal_lengthS = Average(petal_lengthS)
avgPetal_lengthVe = Average(petal_lengthVe)
avgPetal_lengthVi = Average(petal_lengthVi)
avgSepal_widthS = Average(sepal_widthS)
avgSepal_widthVe = Average(sepal_widthVe)
avgSepal_widthVi = Average(sepal_widthVi)
avgSepal_lengthS = Average(sepal_lengthS)
avgSepal_lengthVe = Average(sepal_lengthVe)
avgSepal_lengthVi = Average(sepal_lengthVi)
setosa = []
versicolor = []
virginica = []
setosa.append(['Setsota',avgPetal_lengthS,avgPetal_widthS,avgSepal_lengthS,avgSepal_widthS])
versicolor.append(['Versicolor',avgPetal_lengthVe,avgPetal_widthVe,avgSepal_lengthVe,avgSepal_widthVe])
virginica.append(['Virginica',avgPetal_lengthVi,avgPetal_widthVi,avgSepal_lengthVi,avgSepal_widthVi])
avgIris = (
['Setsota',avgPetal_lengthS,avgPetal_widthS,avgSepal_lengthS,avgSepal_widthS],
['Versicolor',avgPetal_lengthVe,avgPetal_widthVe,avgSepal_lengthVe,avgSepal_widthVe],
['Virginica',avgPetal_lengthVi,avgPetal_widthVi,avgSepal_lengthVi,avgSepal_widthVi])
gap = ' '*3
heading = f"{'Species:':11s}{gap}{'Petal Length':12s}{gap}{'Petal Width':11s}{gap}{'Sepal Length':12s}{gap}{'Sepal Width':11s}"
print("\n")
print("="*69)
print(heading)
print("-"*69)
print("Attributes (cm):")
for i in avgIris:
rec = f"{avgIris[i][0]:11s}{gap}{avgIris[i][1]:12f}{gap}{avgIris[i][2]:11f}{gap}{avgIris[i][3]:12f}{gap}{avgIris[i][4]:11f}"
print(rec)
我收到的错误特别与 rec=
部分有关,我试图将元组浮点数隔开。
错误是:
=====================================================================
Species: Petal Length Petal Width Sepal Length Sepal Width
---------------------------------------------------------------------
Attributes (cm):
Traceback (most recent call last):
File "/Users/meikebuettner/hello/a5_mbuettner/a5_mbuettner2017.py", line 90, in <module>
rec = f"{avgIris[i][0]:11s}{gap}{avgIris[i][1]:12f}{gap}{avgIris[i][2]:11f}{gap}{avgIris[i][3]:12f}{gap}{avgIris[i][4]:11f}"
TypeError: tuple indices must be integers or slices, not list
答案 0 :(得分:1)
您将 avgIris 中的项目与索引混淆了。任何一个都有效,但项目 = 里面的列表,索引 = 指向哪个列表的指针。另外,通常我会为此使用列表而不是元组。您可以使用这些替换代码片段中的任何一个来获取所需的 rec。使用 item 较短,因此您可能更喜欢它。
for i in range(len(avgIris)):
rec = f"{avgIris[i][0]:11s}{gap}{avgIris[i][1]:12f}{gap}{avgIris[i][2]:11f}{gap}{avgIris[i][3]:12f}{gap}{avgIris[i][4]:11f}"
for item in avgIris:
rec = f"{item[0]:11s}{gap}{item[1]:12f}{gap}{item[2]:11f}{gap}{item[3]:12f}{gap}{item[4]:11f}"