haininglingjunj 发表于 2020-3-23 12:07

有没有会python大佬教一下题目的

真的不会了

kingxc2020 发表于 2020-3-23 13:02

先友情支持你一下,本人也才开始接触Python,过几天可能对你提出的问题会回答,现在你比我强太多了,

ctOS_ 发表于 2020-3-23 13:27

为什么发两张一样的图?
另外我只看到题目的说明,具体是要干嘛?

miaolei545 发表于 2020-3-23 13:28

不知道各位朋友在哪里学?如果是自学,我提议咱们建立一个群,确定一份适合的教材一起学。
这样第一可以统一进度互相探讨和交流,第二也可以彼此影响能够坚持啊!你们觉得怎么样?

miaolei545 发表于 2020-3-23 13:29

kingxc2020 发表于 2020-3-23 13:02
先友情支持你一下,本人也才开始接触Python,过几天可能对你提出的问题会回答,现在你比我强太多了,

不知道各位朋友在哪里学?如果是自学,我提议咱们建立一个群,确定一份适合的教材一起学。
这样第一可以统一进度互相探讨和交流,第二也可以彼此影响能够坚持啊!你们觉得怎么样?

haininglingjunj 发表于 2020-3-23 14:42

ctOS_ 发表于 2020-3-23 13:27
为什么发两张一样的图?
另外我只看到题目的说明,具体是要干嘛?

这两题不会 大哥会不

kingxc2020 发表于 2020-3-23 14:56

miaolei545 发表于 2020-3-23 13:28
不知道各位朋友在哪里学?如果是自学,我提议咱们建立一个群,确定一份适合的教材一起学。
这样第一可以统 ...

现在这种学习群应该不少,严格说我是昨晚上才开始入手学习的,在我们论坛下了一个通宵的资料,只是我们论坛不允许发布QQ群吧?不然,真可以搞一个,

Virgo之最 发表于 2020-3-23 15:32

本帖最后由 Virgo之最 于 2020-3-23 17:39 编辑

import math


class Point(object):
    def __init__(self, x, y):
      self._x = x
      self._y = y

    def area(self):
      return 0

    def __str__(self):
      return '({}, {})'.format(self._x, self._y)


class Circle(Point):
    def __init__(self, x, y, radius):
      super().__init__(x, y)
      self._radius = radius

    def area(self):
      # S=2πr*r
      return math.pi * self._radius * self._radius

    def perimeter(self):
      # C=2πr
      return 2 * math.pi * self._radius

    def __str__(self):
      return 'Center={}, Radius={}'.format(super().__str__(), self._radius)


class Cylinder(Circle):
    def __init__(self, x, y, radius, height):
      super().__init__(x, y, radius)
      self._height = height

    def area(self):
      # S=2πrr + 2πrh
      return (super().area()) + (super().perimeter()*self._height)

    def volume(self):
      # V = Sh
      return super().area()*self._height

    def __str__(self):
      return 'Cylinder: {}, Height={}'.format(super().__str__(), self._height)

if __name__ == "__main__":
    cy = Cylinder(1, 2, 1, 4)
    print(cy)
    print('表面积: {}'.format(cy.area()))
    print('体积: {}'.format(cy.volume()))



输出是这样的:

Cylinder: Center=(1, 2), Radius=1, Height=4
表面积: 28.274333882308138
体积: 12.566370614359172

学java时候比较经典的一个例子

写的急 没加注释, 如果是初学者可以尝试自己去加一下注释

主要还是公式,还有对继承的理解.
代码中公式记得不清了 没查 没准会有错误
建议提前查查公式

---------------------------
还是简单解释一下吧, 题目中要求私有属性。
那么 __init__内部属性变量名开头就要加个下划线 _
关于super(), 简单理解就是调用父类
所以才会有 这类代码 super().area() 意思就是调用父类中的area函数

剩下就没啥了 全是数学公式
此题主要意思就是 学会在子类中如何调用父类中的方法

bitterain 发表于 2020-3-23 15:43

# -*- coding: utf-8 -*-
"""
Created on Mon Mar 23 14:59:01 2020

@author: bitterain
"""
"""
类Point x,y __init__() area()(点的面积直接return 0   __str__()
类Circleradius__init__()area()perimeter()__str__()
类Cylinderheight__init__()area()volume()__str__()
所有的属性都定义为私有的。
圆继承点,把点作为圆的圆心,圆柱体继承圆,把圆作为圆柱体的底面

"""
from math import pi as PI

class Point(object):
    def __init__(self,x=0,y=0):
      self.__x = x
      self.__y = y
      
    def area(self):
      return 0
   
    def __str__(self):
      return f"{(self.__x,self.__y)}"
   
class Circle(Point):
    def __init__(self,x,y,radius):
      super().__init__(x,y)
      self.__radius = radius
      
    def area(self):
      return PI * self.__radius * self.__radius
   
    def perimeter(self):
      return 2 * PI * self.__radius
   
    def __str__(self):
      return "圆心为:"+super().__str__()+f"半径为:{self.__radius}"

class Cylinder(Circle):
    pass#这个类你可以参照上面的类来完成了

if __name__ == "__main__":
    c1 = Circle(10,5,5)
    print(c1.area())

haininglingjunj 发表于 2020-3-25 19:04

bitterain 发表于 2020-3-23 15:43
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 23 14:59:01 2020


多谢大哥
页: [1]
查看完整版本: 有没有会python大佬教一下题目的