第1关:类的声明与定义
编程要求:
本关的编程任务是补全Book.py
文件中的代码,具体要求如下:
- 在类头部填入定义
Book
类的代码。
本关涉及的代码文件Book.py
的代码框架如下:
# 请在下面填入定义Book类的代码
########## Begin ##########
########## 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))
测试说明:
本文的测试文件是Booktest.py
,具体测试过程如下:
- 平台自动编译生成
Booktest.exe
; - 平台运行
Booktest.exe
,并以标准输入方式提供测试输入; - 平台获取
Booktest.exe
输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step1/Booktest.py
的样例测试集:
预期输入:
java
56
预期输出:
java的销售价格为56
预期输入:
python
45
预期输出:
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
文件中的声明变量和实例化部分,具体要求如下:
- 填入声明两个变量名分别为
name
和country
的字符串变量的代码; - 填入对类
People
进行实例化的代码,实例对象为p
。
本关涉及的代码文件People.py
的代码框架如下:
class People:
# 请在下面填入声明两个变量名分别为name和country的字符串变量的代码
########## Begin ##########
########## End ##########
def introduce(self,name,country):
self.name = name
self.country = country
print("%s来自%s" %(name,country))
name = input()
country = input()
# 请在下面填入对类People进行实例化的代码
########## Begin ##########
########## End ##########
p.introduce(name,country)
测试说明:
本关要求完成声明变量与对类进行实例化,根据运行结果判断正误,所以无测试文件。以下是平台对src/step2/People.py
的样例测试集: 预期输入:
jim
中国
预期输出:
jim来自中国
预期输入:
jane
美国
预期输出:
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)
方法来调用peven
与podd
两个方法,fp
为方法名,最后返回计算结果。
本关的编程任务是补全fractionSum.py
文件中的创建实例与调用方法部分,具体要求如下:
- 填入创建
fractionSum
的实例fs
的代码; - 填入调用
fractionSumtest
类中dcall
方法的代码,计算当n
为偶数时计算的和; - 填入调用
fractionSumtest
类中dcall
方法的代码,计算当n
为奇数时计算的和。
测试说明:
本关涉及的代码文件fractonSum.py
的代码框架如下:
import fractionSumtest
# 请在下面填入创建fractionSum的实例fs的代码
########## Begin ##########
########## End ##########
n = int(input())
if n % 2 == 0:
# 请在下面填入调用fractionSumtest类中dcall方法的代码,计算当n为偶数时计算的和
########## Begin ##########
########## End ##########
else:
# 请在下面填入调用fractionSumtest类中dcall方法的代码,计算当n为奇数时计算的和
########## Begin ##########
########## End ##########
print(sum)
测试说明:
本文的测试文件是fractionSumtest.py
,具体测试过程如下:
- 平台自动编译生成
fractionSumtest.exe
; - 平台运行
fractionSumtest.exe
,并以标准输入方式提供测试输入; - 平台获取
fractionSumtest.exe
输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step3/fractionSumtest.py
的样例测试集: 预期输入:
5
预期输出:
1.5333333333333332
预期输入:
8
预期输出:
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
的代码框架如下:
class BookSell:
static_var = 100
def sell(self,name,author,version,price):
print("%s的销售价格为%d" %(name,int(price)))
# 请在下面填入函数修饰符将printStatic()方法声明为静态方法
########## Begin ##########
########## End ##########
def printStatic():
print(BookSell.static_var)
# 请在下面填入函数修饰符将printVersion(cls)方法声明为类方法
########## Begin ##########
########## End ##########
def printVersion(cls):
print(cls)
测试说明:
本文的测试文件是BookSelltest.py
,具体测试过程如下:
- 平台自动编译生成
BookSelltest.exe
; - 平台运行
BookSelltest.exe
,并以标准输入方式提供测试输入; - 平台获取
BookSelltest.exe
输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step4/BookSelltest.py
的样例测试集: 预期输入:
java
Joshua Bloch
1
5
预期输出:
java的销售价格为56
100
<class 'BookSell.BookSell'>
预期输入:
python
Julien Danjou
1
78
预期输出:
python的销售价格为78
100
<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
的代码框架如下:
# 从 DataChangetest 模块中导入 DataChange 类,并使用该类中的 eightToten(self,p) 方法,实现将输入的八进制转换成十进制输出。
########## Begin ##########
########## End ##########
测试说明:
本文的测试文件是DataChangetest.py
,具体测试过程如下:
- 平台自动编译生成
DataChangetest.exe
; - 平台运行
DataChangetest.exe
,并以标准输入方式提供测试输入; - 平台获取
DataChangetest.exe
输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step5/DataChangetest.py
的样例测试集: 预期输入:
12
预期输出:
10
预期输入:
45
预期输出:
37
解答:
# 从 DataChangetest 模块中导入 DataChange 类,并使用该类中的 eightToten(self,p) 方法,实现将输入的八进制转换成十进制输出。
########## Begin ##########
from DataChangetest import DataChange
n = input()
result = DataChange()
result.eightToten(n)
########## End ##########