繁体   English   中英

Python脚本不产生输出

[英]Python script not producing output

我的任务是读取用户输入的值(使用 while 循环),然后将它们存储在列表/数组中,同时使用try: except:来确定给定的输入是否无效。 继续,如果用户输入“完成”作为值,它将break循环并print()所有估算值的总数、总和和平均值。

到目前为止,我已经得到了这个片段:

class Input:
      def __init__(self, number_input_value, total_to_be_calculated, main_value):
            self.number_input_value = 0
            self.total_to_be_calculated = 0.0
            self.main_value = input('Enter A Number: ')
            self.number_input_value1 = float(self.main_value)

      def loop_get_inputs(self):
            while True:
                  self.main_value
                  if self.main_value == 'done':
                        break
                  try :
                        self.number_input_value1
                  except :
                        print('INVAL["VAL"]')
                        continue
                  self.number_input_value = self.number_input_value1
                  self.total_to_be_calculated = self.total_to_be_calculated + self.number_input_value1

            print ("Finished successfully!")
            print (
              self.total_to_be_calculated,
              self.number_input_value,
              self.total_to_be_calculated/self.number_input_value
            )

if __name__ in '__main__':
      Input
      

我不知道出了什么问题,因为当它运行时它什么也不输出。

输出:

>>>

您需要创建类“Input”的实例并调用该方法:

##(self, number_input_value, total_to_be_calculated, main_value)

inp = Input(100, 1000, 10) 
#call the method
inp.loop_get_inputs()

基本上:
1 - 您必须在使用之前初始化您的类/对象。
2 - 不建议在构造上使用代码。 您应该调用类的公共方法来启动“进程”。
3 - 那个 try-except 没有做太多。 例如,您可以将字符串(来自input() )括起来转换为 float 并在输入无法转换时打印 INVALID 。
4 - 您可以使用+=来简化a = a + b
5 - lower() 将用户输入转换为小写,这意味着 DONE、done 和 DoNe(等)将被视为“退出”输入。

这有意义吗?

class Input:
    def __init__(self):
        self.number_inputs = 0
        self.total = 0.0

    def run(self):
        self.__get_user_values()
        print(f"total: '{self.total}'")
        print(f"number_inputs: '{self.number_inputs}'")
        print(f"average: '{self.total / self.number_inputs}'")

    def __get_user_values(self):
        while True:
            value = input('Enter A Number: ')
            if value.lower() == 'done':
                break

            if self.__is_valid_input(value):
                self.total += float(value)
                self.number_inputs += 1

    def __is_valid_input(self, value) -> bool:
        try:
            float(value)
            return True
        except ValueError:
            print('INVAL["VAL"]')
            return False


if __name__ in '__main__':
    input_wrapper = Input()
    input_wrapper.run()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM