我正在尝试创建一个取数字的平均值程序,直到用户要求程序计算它。我正在使用一个类来改进课程,我希望有人解释为什么我编写的代码在运行它并尝试计算平均值时不起作用。
from statistics import mean
class User():
def __init__(self):
self.name = input("Name: ")
self.numbers = []
self.check_name()
def check_name(self):
self.ask_user()
#adding in later
def ask_user(self):
asking = True
while asking:
try:
self.number = int(input())
self.numbers.append(self.number)
except ValueError:
if str(self.number) == "calc":
self.calc()
asking = False
break
else:
print("Only enter numbers. ")
def calc(self):
avg = mean(self.numbers)
print("Average =",str(avg))
User()
答案 0 :(得分:1)
代码中的问题是您总是尝试将输入字符串转换为整数。如果失败,如果有人键入" calc",则不会重新定义变量self.number
。
如果您将通话移至int()
到下一行,此代码可以正常运行,并取消对str()
的通话,这是不必要的:
def ask_user(self):
asking = True
while asking:
try:
self.number = input()
self.numbers.append(int(self.number))
except ValueError:
if self.number == "calc":
self.calc()
asking = False
break
else:
print("Only enter numbers. ")
答案 1 :(得分:0)
每次输入数字时,20
都包含一个数字。当self.number
和self.number = int(input())
返回input()
时,语句失败,因此"calc"
仍然是一个数字。毕竟,它不能是self.number
。