Python类中实现多输入求平均值遇故障,寻求解决方法
嘿,我来帮你搞定这两个Python问题!
问题1:如何让Python接收用户的多个输入?
这里有几种实用的方法,根据你的需求选就行:
一次性输入多个值(用空格/逗号分隔)
适合知道固定输入数量的场景,比如要输入3个数字:# 用空格分隔输入,转成整数;如果要小数就用float num1, num2, num3 = map(int, input("输入三个数字,空格分开:").split())要是习惯用逗号分隔,就把
split()改成split(',')就行。循环逐个输入
如果不确定输入数量,或者想让用户逐个输入:numbers = [] count = int(input("你要输入几个数字?")) for i in range(count): num = float(input(f"请输入第{i+1}个数字:")) numbers.append(num)批量读取大量输入(进阶)
要是需要处理很多输入,用sys.stdin会更高效,不过新手用前面两种就够啦。
问题2:修复你的类实现平均值计算程序
先看你的代码,核心逻辑其实没问题,但大概率是调用类的方式不对,或者输入没转成数字导致报错。我给你调整并优化一下:
优化后的灵活版本(支持任意数量数字)
这个版本比固定三个数字的写法更实用,能处理用户输入的任意个数数字:
class AverageCalculator: def __init__(self, *numbers): # 用*args接收任意数量的参数 self.numbers = numbers def calculate_average(self): if not self.numbers: # 避免空输入除以0的错误 return 0.0 return sum(self.numbers) / len(self.numbers) # 接收用户输入并处理 user_input = input("输入多个数字,空格分隔:").split() input_numbers = list(map(float, user_input)) # 把字符串转成浮点数 # 创建实例并计算平均值 calculator = AverageCalculator(*input_numbers) average = calculator.calculate_average() print(f"平均值是:{average}")
如果你坚持用固定三个数字的原逻辑
那你需要确保调用时传对参数,并且输入转成数字:
class my_class(object): def __init__(self, number1, number2, number3): self.number1 = number1 self.number2 = number2 self.number3 = number3 def defAvrg(self): return (self.number1 + self.number2 + self.number3) / 3 # 正确调用方式 num1, num2, num3 = map(float, input("输入三个数字,空格分开:").split()) my_obj = my_class(num1, num2, num3) result = my_obj.defAvrg() print(f"三个数的平均值:{result}")
常见坑点提醒
- 别忘记把输入的字符串转成数字!直接用
input()得到的是字符串,字符串相加会拼接,不是数值相加,肯定出错。 - 调用方法时要加括号!比如
my_obj.defAvrg()才是调用方法,少了括号你拿到的是方法对象,不是计算结果。 - 如果输入个数不对(比如固定三个数字但只输了两个),会触发解包错误,这时候用
*args的灵活版本就没这个问题。
内容的提问来源于stack exchange,提问作者Barish Ahsen
相关产品推荐
相关产品推荐

