需要在用户输入游戏玩家ID时找到用户得分的平均值
csv文件:
名称部落ID Score1 Score2 Score3 Score4
Aang Normad N321B 89 67 54 78Gyatso Omaticay O111C 54 78 65 54
我尝试添加一些我在SO上找到的东西,但收到错误:int()的无效文字,基数为10:“ Score1”。将不胜感激的人,只要能向我指出正确的方向,就可以开始学习python。
import csv
filePath="data.csv"
with open(filePath) as csvfile:
avatar_id= input ("Enter Avatar ID:")
reader = csv.DictReader(csvfile)
for row in reader:
if avatar_id in row['id']:
#just print some stuff
user,tribe,id, *scores= row
average= sum([int(score) for score in scores])/4
print("{0:>6}{1:>8}{2:>7}{3:>7}{4:^14}".format(row['Air'],row['Water'],row['Earth'],row['Fire'], average))
print("==============================")
else:
x=5
if x>4:
print('No avatar found')
答案 0 :(得分:0)
您的错误告诉您确切的问题是什么。您的代码正在尝试在以下行中将标题标签Score1
转换为整数:
average= sum([int(score) for score in scores])/4
并且失败。为了避免在计算中包括标题标签,请测试reader.line_num
以跳过文件的第一行。
或者,为了安全起见,只需忽略任何非数字数据:
if all(score.isdigit() for score in scores):
average= sum([int(score) for score in scores])/4
答案 1 :(得分:0)
替换
*scores= row
使用
scores = row['Score1']+row['Score2']+row['Score3']+row['Score4']
答案 2 :(得分:0)
您需要为不存在的键添加额外的检查,并删除CSV文件中的空行。您还需要在csv.DictReader中添加定界符,因为它默认为逗号分隔符。参见下面的示例:
@Override
protected void onPause() {
if (mediaPlayer != null) {
mediaPlayer.pause();
}
}
@Override
protected void onStop() {
if (mediaPlayer != null) {
mediaPlayer.pause();
}
}