墨祁hhh 2021-05-17 17:35 采纳率: 100%
浏览 100
已采纳

请问这一道面向对象程序设计的python代码错在哪里了?

题目:

(1)定义圆锥类Cone,其包含两个实例属性:底面半径r,高h,定义构造方法对实例属性进行赋值初始化。

(2)定义私有方法__volume,计算其体积:v=1/3*π*r2*h,作为返回值返回。其中圆周率π请通过math.pi获取。

  (3) 定义公有方法print_info,打印其底面半径r,高h,以及体积v。例如打印:Cone: r=1.0, h=2.0, v=2.09,其中计算体积需要调用已定义的私有方法__volume。

  (4) 创建Cone的对象c,其底面半径r=1.0,高h=2.0,调用其print_info方法打印其信息。

from math import *
class Cone:
    def __init__(self,r,h):
        self.r=r
        self.h=h
    def __getvolume(self):
        v=1/3*pi*r^2*h
        return v
    def print_into(self):
        self.__getvolume()
        print('r=',self.r,'h=',self.h,'v=',v)
        return print_into
c=Cone(1.0,2.0)
c.print_into()
Traceback (most recent call last):
  File "E:\learn\python\作业\作业三\2.py", line 14, in <module>
    c.print_into()
  File "E:\learn\python\作业\作业三\2.py", line 10, in print_into
    self.__getvolume()
  File "E:\learn\python\作业\作业三\2.py", line 7, in __getvolume
    v=1/3*pi*r^2*h
NameError: name 'r' is not defined
  • 写回答

6条回答 默认 最新

  • 关注
    from math import *
    class Cone:
        def __init__(self,r,h):
            self.r=r
            self.h=h
        def __getvolume(self):
            v=1/3*pi*self.r**2*self.h
            return v
        def print_into(self):
            v = self.__getvolume()
            print('r=',self.r,'h=',self.h,'v=',v)
    
    c=Cone(1.0,2.0)
    c.print_into()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 虚心请教几个问题,小生先有礼了
  • ¥30 截图中的mathematics程序转换成matlab