How to calculate user input in python
我应该用python编写一个程序,一次要求一个等级。当用户输入"完成"时,计算以下内容:平均成绩。
这就是我目前为止所拥有的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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() |
每当我输入"完成"时,程序就会给出这个错误。
TypeError: 'int' object is not iterable
我已尝试将用户输入变量更改为:
user_input = int(input("Enter grade:"))
但是,另一个错误:类型错误:
'int' object is not iterable user input
我对编程非常陌生。有人能帮我解决这个问题吗?在过去的两个小时里,我一直在网上搜索,没有发现任何不只是产生另一个错误的东西。
我注意到一些事情可以帮你解决这个问题。
你的逻辑有一些缺陷。
- 每次在
main() 中请求用户输入时,都会覆盖user_input 的值。您应该做的是将每个数字收集到一个list() 中。 - python提出的错误告诉您,内建函数
sum() 采用的是一个数字列表,而不是您传入的单个数字。 input() 函数返回一个字符串,因此需要将输入转换为整数。
我将把你的程序改写为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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() |