Crossin的编程教室

标题: python自动计算学生平均值求助 [打印本页]

作者: Wouivu    时间: 2020-7-3 06:21
标题: python自动计算学生平均值求助
请问怎么样才能自动识别list里面一行有一个元素呢?
谢谢老师!现在是用的手动input
t = open('scores.txt', encoding='utf-8')
lines = t.readlines()
print(lines)
t.close()

results = []
e = int(input())

for line in lines:
    print (line)
    data = line.split()

    sum = 0
    score_list = data[1:]
    for score in score_list:
        sum += int(score)
    result = '%s \t: %d\n' % (data[0], sum/e)

    results.append(result)
output = open('result.txt', 'w', encoding='gbk')
output.writelines(results)
output.close()


作者: crossin先生    时间: 2020-7-3 15:14
对于一个列表 x,它的个数可以通过
len(x)
得到
作者: Wouivu    时间: 2020-7-4 01:46
crossin先生 发表于 2020-7-3 15:14
对于一个列表 x,它的个数可以通过
len(x)
得到

但是获取出来的是这个文档内有几行而不是几列呀
作者: crossin先生    时间: 2020-7-4 15:41
Wouivu 发表于 2020-7-4 01:46
但是获取出来的是这个文档内有几行而不是几列呀

len(data)

你这里每一行的数据是 data
作者: Wouivu    时间: 2020-7-5 09:28
crossin先生 发表于 2020-7-4 15:41
len(data)

你这里每一行的数据是 data

老师你好,我尝试了改成len(data)
t = open('scores.txt', encoding='utf-8')
lines = t.readlines()
print(lines)
t.close()

results = []
e = len(data)

for line in lines:
    print (line)
    data = line.split()

    sum = 0
    score_list = data[1:]
    for score in score_list:
        sum += int(score)
    result = '%s \t: %d\n' % (data[0], sum/e)

    results.append(result)
output = open('result.txt', 'w', encoding='gbk')
output.writelines(results)
output.close()
但是报错了
Traceback (most recent call last):
  File "C:/Users/13611/Desktop/学习/score.py", line 7, in <module>
    e = len(data)
NameError: name 'data' is not defined
请问能帮我看看是哪里有问题吗
作者: crossin先生    时间: 2020-7-5 20:23
Wouivu 发表于 2020-7-5 09:28
老师你好,我尝试了改成len(data)
t = open('scores.txt', encoding='utf-8')
lines = t.readlines()

把你加的那行去了,或者放在后面
e = len(data)
result = '%s \t: %d\n' % (data[0], sum/e)

data在循环里才被定义
作者: Wouivu    时间: 2020-7-6 04:40
crossin先生 发表于 2020-7-5 20:23
把你加的那行去了,或者放在后面
e = len(data)
result = '%s \t: %d\n' % (data[0], sum/e)

成功了,感谢老师!




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5