此代码从文本文件中读取数据,然后继续按每行中包含的数字(从低到高)对程序创建的列表进行排序,然后程序应将输入的名称与列表中的名称进行匹配,然后继续计算该位置
代码如下:
def Rank():
#Declare List
RankList=[]
#Opening and reading the file
with open('GolfInfo.txt','rU') as csvfile:
reader=csv.reader(csvfile)
for row in reader:
#Data added to list
RankList.append(row)
#List is sorted by amount of strokes taken (Total) from lowest to highest
RankList.sort()
index=0
Position=0
RankMessageFull=("")
for row in RankList:
#Checks to see if Name is present in the list
if row[1] == Name.get():
Position=index+1
#These if-elif-else statements determine a suitable suffix for the rank
if Position==1:
RankMessageFull=(Position,"st")
RankMessage.set(RankMessageFull)
elif Position==2:
RankMessageFull=(Position,"nd")
RankMessage.set(RankMessageFull)
elif Position==3:
RankMessageFull=(Position,"rd")
RankMessage.set(RankMessageFull)
else:
RankMessageFull=(Position,"th")
RankMessage.set(RankMessageFull)
else:
index=index+1
文本文件显示:
63,April,"('-', 7)"
69,Betsy,"('-', 1)"
80,Laura,"('+', 10)"
93,Coco,"('+', 23)"
错误出现在行中:
if row[1] == Name.get():
但我不知道为什么。 完整的错误信息可以在这里看到:
if row[1] == Name.get():
IndexError: list index out of range
RankMessage
是一个TkinterStringvar
,Name
也是一个TkinterStringVar
csv文件中似乎有行只有一个或更少的项。您可以通过下面所示的简单更改来避免将它们添加到
RankList
。另请注意,您应该使用python3中的newline=''
选项open()
csv文件相关问题 更多 >
编程相关推荐