平均程序不起作用(Python 3.4)

时间:2016-04-30 20:25:21

标签: python

我正在尝试创建一个取数字的平均值程序,直到用户要求程序计算它。我正在使用一个类来改进课程,我希望有人解释为什么我编写的代码在运行它并尝试计算平均值时不起作用。

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()

2 个答案:

答案 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.numberself.number = int(input())返回input()时,语句失败,因此"calc"仍然是一个数字。毕竟,它不能是self.number