4 回答
TA贡献1966条经验 获得超4个赞
avg是一个数字。为了与其他字符串连接,需要先变成一个字符串str()
此外,您正在对字符串求和,在求和之前需要将其转换为数字。
def calcMarks():
#input = Jack,10,10,9,10,10
userInput = input('Enter marks:')
l = userInput.split(',')
name = l.pop(0)
l = [int(x) for x in l]
avg = sum(l)/len(l)
print(name + ' ' + str(avg))
TA贡献1824条经验 获得超5个赞
您的方法的问题是,当您读取时input总是会得到一个字符串,因此您必须将标记转换为整数来计算平均值。这是我将如何做到这一点:
def calcMarks():
# unpack the input into user and marks
# having split the string by ','
user, *marks = input('Enter marks:').split(',')
# take the average of the marks cast to int
avg_mark = sum(map(int,marks))/(len(marks))
# you can use f-strings to print the output
print(f'{user} has an average of {avg_mark}')
# print('{} has an average of {}'.format(user, avg_mark)) # for python 3.5<
calcMarks()
Enter marks:Jack,10,10,9,10,10
Jack has an average of 9.8
TA贡献1848条经验 获得超10个赞
如果您希望获得返回intorfloat值的函数的输出,您可以添加而,不是添加:+print1
def calcMarks():
#input = Jack,10,10,9,10,10
userInput = input('Enter marks:')
inputs = userInput.split(',')
name = inputs.pop(0)
input_list = [int(i) for i in inputs]
#print(type(list))
#print(type(name))
avg = sum(input_list)/(len(input_list))
print(name + ' ',avg)
calcMarks()
输出:
Enter marks:Jack,10,10,9,10,10
Jack 9.8
添加回答
举报
