Python进阶篇——面向对象:类的基础语法

 第1关:类的声明与定义

编程要求:

本关的编程任务是补全Book.py文件中的代码,具体要求如下:

  • 在类头部填入定义Book类的代码。

本关涉及的代码文件Book.py的代码框架如下:

  1. # 请在下面填入定义Book类的代码
  2. ########## Begin ##########
  3. ########## End ##########
  4. '书籍类'
  5. def __init__(self,name,author,data,version):
  6. self.name = name
  7. self.author = author
  8. self.data = data
  9. self.version = version
  10. def sell(self,bookName,price):
  11. print("%s的销售价格为%d" %(bookName,price))

测试说明:

本文的测试文件是Booktest.py,具体测试过程如下:

  1. 平台自动编译生成Booktest.exe
  2. 平台运行Booktest.exe,并以标准输入方式提供测试输入;
  3. 平台获取Booktest.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

以下是平台对src/step1/Booktest.py的样例测试集:

预期输入:

  1. java
  2. 56

预期输出:

  1. java的销售价格为56

预期输入:

  1. python
  2. 45

预期输出:

  1. python的销售价格为45

解答: 

# 请在下面填入定义Book类的代码
########## Begin ##########
class Book:
########## End ##########
    '书籍类'
    def __init__(self,name,author,data,version):
        self.name = name
        self.author = author
        self.data = data
        self.version = version

    def sell(self,bookName,price):
        print("%s的销售价格为%d" %(bookName,price))

第2关:类的属性与实例化

编程要求:

本关的编程任务是补全People.py文件中的声明变量和实例化部分,具体要求如下:

  • 填入声明两个变量名分别为namecountry的字符串变量的代码;
  • 填入对类People进行实例化的代码,实例对象为p

本关涉及的代码文件People.py的代码框架如下:

  1. class People:
  2. # 请在下面填入声明两个变量名分别为name和country的字符串变量的代码
  3. ########## Begin ##########
  4. ########## End ##########
  5. def introduce(self,name,country):
  6. self.name = name
  7. self.country = country
  8. print("%s来自%s" %(name,country))
  9. name = input()
  10. country = input()
  11. # 请在下面填入对类People进行实例化的代码
  12. ########## Begin ##########
  13. ########## End ##########
  14. p.introduce(name,country)

测试说明:

本关要求完成声明变量与对类进行实例化,根据运行结果判断正误,所以无测试文件。以下是平台对src/step2/People.py的样例测试集: 预期输入:

  1. jim
  2. 中国

预期输出:

  1. jim来自中国

预期输入:

  1. jane
  2. 美国

预期输出:

  1. jane来自美国

解答: 

class People:
    # 请在下面填入声明两个变量名分别为name和country的字符串变量的代码
    ########## Begin ##########
    name = "name"
    country = "country" 
    ########## End ##########
    def introduce(self,name,country):
        self.name = name
        self.country = country
        print("%s来自%s" %(name,country))
name = input()
country = input()
# 请在下面填入对类People进行实例化的代码,对象为p
########## Begin ##########
p = People()
########## End ##########
p.introduce(name,country)

第3关:绑定与方法调用

编程要求:

本关的测试文件给出了一个类fractionSum,此类的作用是当输入一个数n,如果n为偶数,求1/2+1/4+...+1/n的和,如果输入n为奇数,求1/1+1/3+...+1/n的和。

fractionSum中,定义了方法peven(self,n)用来求当n为偶数时的结果,定义了podd(self,n)用来求当n为奇数时的结果,定义了dcall(self,fp,n)方法来调用pevenpodd两个方法,fp为方法名,最后返回计算结果。

本关的编程任务是补全fractionSum.py文件中的创建实例与调用方法部分,具体要求如下:

  • 填入创建fractionSum的实例fs的代码;
  • 填入调用fractionSumtest类中dcall方法的代码,计算当n为偶数时计算的和;
  • 填入调用fractionSumtest类中dcall方法的代码,计算当n为奇数时计算的和。

测试说明:

本关涉及的代码文件fractonSum.py的代码框架如下:

  1. import fractionSumtest
  2. # 请在下面填入创建fractionSum的实例fs的代码
  3. ########## Begin ##########
  4. ########## End ##########
  5. n = int(input())
  6. if n % 2 == 0:
  7. # 请在下面填入调用fractionSumtest类中dcall方法的代码,计算当n为偶数时计算的和
  8. ########## Begin ##########
  9. ########## End ##########
  10. else:
  11. # 请在下面填入调用fractionSumtest类中dcall方法的代码,计算当n为奇数时计算的和
  12. ########## Begin ##########
  13. ########## End ##########
  14. print(sum)

测试说明:

本文的测试文件是fractionSumtest.py,具体测试过程如下:

  1. 平台自动编译生成fractionSumtest.exe
  2. 平台运行fractionSumtest.exe,并以标准输入方式提供测试输入;
  3. 平台获取fractionSumtest.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

以下是平台对src/step3/fractionSumtest.py的样例测试集: 预期输入:

  1. 5

预期输出:

  1. 1.5333333333333332

预期输入:

  1. 8

预期输出:

  1. 1.0416666666666665

解答: 

import fractionSumtest
# 请在下面填入创建fractionSum的实例fs的代码
########## Begin ##########
fs = fractionSumtest.fractionSum()
########## End ##########
n = int(input())
if n % 2 == 0:
    # 请在下面填入调用fractionSumtest类中dcall方法的代码,计算当n为偶数时计算的和
    ########## Begin ##########
    sum = fs.dcall(fs.peven, n)
    ########## End ##########
else:
    # 请在下面填入调用fractionSumtest类中dcall方法的代码,计算当n为奇数时计算的和
    ########## Begin ##########
    sum = fs.dcall(fs.podd, n)
    ########## End ##########
print(sum)

第4关:静态方法与类方法

编程要求:

本关的编程任务是补全BookSell.py文件中的函数修饰符部分,将函数声明为相应的类型,具体要求如下:

  • 填入函数修饰符将printStatic()方法声明为静态方法;
  • 填入函数修饰符将printVersion(cls)方法声明为类方法。

本关涉及的代码文件BookSell.py的代码框架如下:

  1. class BookSell:
  2. static_var = 100
  3. def sell(self,name,author,version,price):
  4. print("%s的销售价格为%d" %(name,int(price)))
  5. # 请在下面填入函数修饰符将printStatic()方法声明为静态方法
  6. ########## Begin ##########
  7. ########## End ##########
  8. def printStatic():
  9. print(BookSell.static_var)
  10. # 请在下面填入函数修饰符将printVersion(cls)方法声明为类方法
  11. ########## Begin ##########
  12. ########## End ##########
  13. def printVersion(cls):
  14. print(cls)

测试说明:

本文的测试文件是BookSelltest.py,具体测试过程如下:

  1. 平台自动编译生成BookSelltest.exe
  2. 平台运行BookSelltest.exe,并以标准输入方式提供测试输入;
  3. 平台获取BookSelltest.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

以下是平台对src/step4/BookSelltest.py的样例测试集: 预期输入:

  1. java
  2. Joshua Bloch
  3. 1
  4. 5

预期输出:

  1. java的销售价格为56
  2. 100
  3. <class 'BookSell.BookSell'>

预期输入:

  1. python
  2. Julien Danjou
  3. 1
  4. 78

预期输出:

  1. python的销售价格为78
  2. 100
  3. <class'BookSell.BookSell'>

解答: 

class BookSell:
    static_var = 100
    def sell(self,name,author,version,price):
        print("%s的销售价格为%d" %(name,int(price)))
    # 请在下面填入函数修饰符将printStatic()方法声明为静态方法
    ########## Begin ##########
    @staticmethod
    ########## End ##########
    def printStatic():
        print(BookSell.static_var)
    # 请在下面填入函数修饰符将printVersion(cls)方法声明为类方法
    ########## Begin ##########
    @classmethod
    ########## End ##########
    def printVersion(cls):
        print(cls)

第5关:类的导入

编程要求:

本关的测试文件DataChangetest.py中定义了一个类DataChange,这个类实现了将八进制转换为十进制然后输出,这个功能由这个类中的eightToten(self,p)方法实现。

本关的编程任务是补全DataChange.py文件中的导入模块并调用方法实现数制转换功能,具体要求如下:

  • DataChangetest模块中导入DataChange类,并使用该类中的eightToten(self,p)方法,实现将输入的八进制转换成十进制输出。

本关涉及的代码文件DataChange.py的代码框架如下:

  1. # 从 DataChangetest 模块中导入 DataChange 类,并使用该类中的 eightToten(self,p) 方法,实现将输入的八进制转换成十进制输出。
  2. ########## Begin ##########
  3. ########## End ##########

测试说明:

本文的测试文件是DataChangetest.py,具体测试过程如下:

  1. 平台自动编译生成DataChangetest.exe
  2. 平台运行DataChangetest.exe,并以标准输入方式提供测试输入;
  3. 平台获取DataChangetest.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

以下是平台对src/step5/DataChangetest.py的样例测试集: 预期输入:

  1. 12

预期输出:

  1. 10

预期输入:

  1. 45

预期输出:

  1. 37

解答: 

# 从 DataChangetest 模块中导入 DataChange 类,并使用该类中的 eightToten(self,p) 方法,实现将输入的八进制转换成十进制输出。
########## Begin ##########

from DataChangetest import DataChange
n = input()
result = DataChange()
result.eightToten(n)

########## End ##########
  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python语法是指对Python编程语言更深入理解和运用的一些高级特性和技巧。掌握这些语法可以让我们编写更高效、灵活和复杂的Python程序。 首先,函数式编程是Python语法中的重要一环。函数是一等公民,可以作为参数传递和返回值返回,使得程序的设计更加灵活和模块化。除了普通函数外,Python还支持匿名函数(lambda表达式)、高函数(map、reduce、filter等)和装饰器等函数式编程的特性。 其次,生成器和迭代器也是Python语法中的关键概念。生成器函数可以通过yield关键字实现状态的保存和暂停执行,提高代码的可读性和性能。而迭代器则是一种用于迭代访问集合元素的对象,通过实现__iter__和__next__方法,可以自定义迭代器。 另外,元类(metaclass)是Python语法中的高级特性。元类可以定制类的创建过程,可以在类定义之后对类行修改,实现一些元编程的功能。它可以用于创建自己的类创建函数,对类的属性和方法行自动初始化等。 此外,异步编程也是Python语法中的重要内容。asyncio模块和async/await关键字的引入,使得Python可以更好地支持协程编程和异步IO操作,提高程序的并发性和响应性。 最后,对于性能优化和调试技巧,Python语法中也涉及一些相关的知识。比如使用装饰器对函数行性能统计,使用线程池或程池并行执行任务,使用性能分析工具对代码行调优等。 总而言之,Python语法包含了函数式编程、生成器和迭代器、元类、异步编程以及性能优化和调试技巧等多个方面的知识,掌握这些知识可以使我们编写更高级、更复杂的Python程序。 ### 回答2: Python语法是指在掌握基础语法基础一步学习和应用的Python语言的一系列高级特性和用法。通过学习Python语法,可以更加灵活地编写代码,提高代码的可读性和可维护性,实现更加复杂的功能。 Python语法包括但不限于以下几个方面。 1. 函数式编程:函数是Python的核心组件之一,语法中可以更加深入地理解函数的原理和特性,并学习使用高函数、匿名函数、闭包等概念和技巧,提高代码的简洁性和可重用性。 2. 迭代器和生成器:迭代器和生成器是处理可迭代对象的重要工具,语法可以学习如何自定义迭代器和生成器,以及它们的底层原理和性能优化策略。 3. 装饰器:装饰器是Python中强大且灵活的语法特性,可以在不修改原函数代码的情况下为函数添加新的功能,比如日志记录、计时统计等,提高代码的灵活性和可扩展性。 4. 异常处理:语法中可以学习如何更好地处理异常,包括自定义异常类、多个异常的处理顺序等,提高代码的健壮性和可靠性。 5. 面向对象编程:语法中可以深入学习和应用面向对象编程的概念和技巧,包括类的继承和多态等,实现更加复杂的程序设计。 总之,Python语法是在基础语法基础一步扩展和应用的一系列高级特性和用法。掌握这些语法可以使我们更加灵活地编写代码,提高代码质量和开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值