代码出错不知道错在了哪里

img


它显示的错误没看懂是什么意思,不知道怎么修改,它显示第九行出错但是还涉及到了第十行

报错原因好像是int()将字符转整型而导致,因为那里有个空格字符

你输入的c是用空格隔离的两个年龄,for循环的时候会把空格当字符串进行int转换,而空格是无法进行int转换的,所以你要在for循环里加一个g不等于空的判断:

for g in c:
  if g != " ":
    sum = sun + int(g)

错误解释:
该错误的意思是,第九行出现数值错误,错因在于不规范地使用了int()语句。
int()语句可以将仅包含数字的其他类型数据转换为整数型数据。

分析:
第三行的输入语句为变量c赋值,从控制台输入情况看,c的值为'1 3',属于字符串型(str)数据;
这个值在下面的第九至十行的for循环中被调用,调用形式为随循环进行,遍历字符串取值,并转换为整数型数据,并参与sum变量的迭代。
在“转换为整数型”这一步,因为字符串'1 3'的第二位上的值是空格值(即' '),不能被int()转换,所以报错。

修改:

a=input("请输入学生的姓名:")
b=input("请输入学生的性别:")
c=input("请输入学生的年龄:").strip().split(' ')
n=len(a)
for i in range(0,n):
    print(a[1],b[1],c[1],end="")
Sum=0
for g in c:
    Sum=Sum+int(g)
avg=Sum/len(c)
print("pingjunhianling:{:.2f}".format(avg))

可能的改进方案:

def aver():
    names = input("请输入学生的姓名:").strip().split()
    genders = input("请输入学生的性别:").strip().split()
    ages =[int(i) for i in input("请输入学生的年龄:").strip().split()]
    num = len(names)
    print('输出报告:\n姓名\t性别\t年龄(单位:岁)')
    for i in range(0, num):
        print(f'{names[i]}\t{genders[i]}\t{ages[i]}')
    Sum = sum(ages)
    avg = Sum / num
    print("\n\n平均年龄:{:.2f}岁".format(avg))
aver()

测试样例(改进版):

img