[英]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.