我应该用Python编写一个程序,一次要求一年级。当用户输入“完成”时,计算以下内容:平均成绩。
这是我到目前为止所做的:
def main():
user_input = input("Enter grade: ")
number = user_input
while True:
user_input = input("Enter grade: ")
if user_input == "done":
break
avg(number)
def avg(a):
average = sum(a)/len(a)
print(average)
if __name__ == "__main__":
main()
每当我输入“done”时,程序就会给我这个错误。
TypeError:'int'对象不可迭代
我尝试将user_input变量更改为:
user_input = int(输入(“输入成绩:”))
但是,另一个错误:TypeError:
'int'对象不是可迭代的用户输入
我对编程非常陌生。任何人都可以帮我解决这个问题吗?我一直在网上搜索过去两个小时,但没有发现任何不仅产生其他错误的内容。
答案 0 :(得分:1)
我注意到一些可能为你解决问题的事情。
number
函数提供avg
。答案 1 :(得分:0)
你的逻辑存在一些缺陷。
main()
中要求输入用户时,都会覆盖user_input
的值。你应该做的是,用list()
收集每个数字。sum()
,它是一个数字列表,而不是一个数字,你传入它。input()
函数返回一个字符串,因此您需要将输入转换为整数。我会将您的程序改写如下:
def main():
# create a list to store each grade
# that the user inputs.
grades = []
# while forever
while True:
# get input from the user.
# I am not converting the input to a integer
# here, because were expecting the user to
# enter a string when done.
i = input("Enter grade: ")
# if the user enters 'done' break the loop.
if i == 'done':break
# add the grade the user entered to our grades list.
# converting it to an integer.
grades.append(int(i))
# print the return value
# of the avg function.
print("Grade average:", avg(grades))
def avg(grades):
# return the average of
# the grades.
# note that I'm using the builtin round()
# function here. That is because
# the average is sometimes a
# long decimal. If this does not matter
# to you, you can remove it.
return round(sum(grades)/len(grades), 2)
# call the function main()
main()