报错原因好像是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()
测试样例(改进版):