我從未像現在這樣迷失過編碼,我將鏈接細節,但我不知道如何從檔案中的特定列或行中獲取平均值。到目前為止,我已經能夠:打開檔案、拆分列并分配成績值。我正在努力:從列/行中平均出特定值,并將其寫入新檔案。我知道我需要做什么,但我不知道怎么做。任何幫助將不勝感激具體 細節
file = input()
with open(file) as f:
data = f.read()
data = data.split("\t")
for line in f:
student_average = line.mean()
if student_average >= 90:
grade = "A"
elif 80 <= student_average < 90:
grade = "B"
elif 70 <= student_average < 80:
grade = "C"
elif 60 <= student_average < 70:
grade = "D"
else:
Grade = "F"
uj5u.com熱心網友回復:
三個問題:您使用的是不存在的mean()方法。您正在嘗試遍歷檔案物件。而且您的數字是字串,它們需要轉換為數字資料型別。
import statistics
data = '90.5\t80.1\t70.9' # <--- assuming this is the data structure of your file
data = data.split("\t")
data = [float(d) for d in data]
avg = statistics.mean(data)
print('average:', avg)
uj5u.com熱心網友回復:
if student_average >= 90: grade = "A" elif 80 <= student_average < 90: grade = "B"
沒有意義......你可能會這樣做elif student_average >= 80:,因為你已經確定它的< 90else wiseif student_average >= 90:會匹配。
也很糟糕:
- 沒有從字串到數字的轉換
- 沒有平均計算
- 用盡檔案
data = f.read()然后嘗試做for line in f:等。
使固定:
with open ("t.txt","w" ) as f:
f.write("95\t95\t95\t95\t95\t95\n")
f.write("85\t85\t85\t85\t85\t85\n")
f.write("75\t75\t75\t75\t55\t65\n")
f.write("65\t65\t65\t65\t65\t65\n")
f.write("25\t35\t45\t55\t65\t75\n")
def mean(itrable):
return sum(itrable)/len(itrable)
with open("t.txt") as f:
for line in f:
line = list(map(int,line.strip().split("\t")))
student_average = mean(line)
if student_average >= 90:
grade = "A"
elif student_average >= 80: # only reached if not >= 90
grade = "B"
elif student_average >= 70:
grade = "C"
elif student_average >= 60:
grade = "D"
else:
grade = "F"
print(line, student_average, grade, sep=" ==> ")
輸出:
[95, 95, 95, 95, 95, 95] ==> 95.0 ==> A
[85, 85, 85, 85, 85, 85] ==> 85.0 ==> B
[75, 75, 75, 75, 55, 65] ==> 70.0 ==> C
[65, 65, 65, 65, 65, 65] ==> 65.0 ==> D
[25, 35, 45, 55, 65, 75] ==> 50.0 ==> F
uj5u.com熱心網友回復:
我不會做整個事情,但你可以先按行拆分,然后再按制表符拆分。您可以在...之后添加自己的邏輯
#/usr/bin/python3
StudentsInfoFile = open("StudentsInfo.tsv")
data = StudentsInfoFile.read().split("\n")
for item in data:
if item:
row = item.split("\t")
print(row)
first_name = row[0]
last_name = row[1]
exam1 = row[2]
exam2 = row[3]
print("first name : " first_name)
print("last name : " last_name)
print("first grade : " exam1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/455904.html
上一篇:使用正則運算式找到正確匹配的問題
