python快速编程入门第二版课后编程题答案

这篇文章主要介绍了python快速编程入门第二版课后编程题答案,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

Python课后题答案

第1章Python概述

一、填空题

1.对象
2.可移植
3.字节码
4.UTF-8

二、判断题

1.对
2.对
3.对
4.对
5.错
6.错
7.对
8.错
9.对
10.错

三、选择题

1.C
2.ABCD
3.B
4.C
5.D

四、简答题。

1. Python具有的特点如下:

简单易学
开源
高级语言
可移植性
解释性
面向对象
可扩展性
丰富的库
规范的代码

  1. Python可以应用在下列领域:

web应用开发
操作系统管理、服务器运维的自动化脚本
科学计算
桌面软件
服务器软件(网络软件)
游戏
构思实现,产品早期原型和迭代

  1. Python2.x和Python3.x的区别如下:

(1)在python2.x中,输出数据使用的是print语句用python绘制精灵球扔向皮卡丘。但是在python3.x中,print语句没有了,取而代之的是print()函数
(2)python2有ASCI Str()类型,unicode()是单独的,不是byte类型。在python3.x版本的源代码中,默认使用的是UTF-8编码,从而可以很好的支持中文字符。
(3)在python2.x中,使用运算符/进行除法运算,整数相除的结果是一个整数,浮点数除法会保留小数点的部分得到一个浮点数的结果。在python 3.x中使用运算符/进行除法,整数之间的相除,结果也会是浮点数。
(4)相比python2.x版本,python3.x版本在异常方面有很多改变:
在python2.x版本,所有类型的对象都是直接被抛出的,但是,在python3.x版本中,只有继承自BaseException的对象才可以被抛出。
在python2.x版本中,捕获异常的语法是exceptexc,var。在python3.x版本中,引入了as关键字,捕获异常的语法变更为except exc as var。
在python2.x版本中,处理异常使用raise Exception(args)。在python3.x版本中,处理异常使用raiseException,args。
python3.x取消了异常类的序列行为和.message属性。
(5)在Python3.x中,表示八进制字面量的方式只有一种,并且必须写0o1000这样的方式,原来01000的方式不能使用了。
(6)Python 2.x中不等于有两种写法 != 和 <>;但是,Python 3.x中去掉了<>, 只有!=一种写法
(7)python3.x去除了long类型,现在只有一种整型int,但它的行为就像是python2.x版本的long。

  1. Python程序的执行原理如图所示。

python解释器将源代码转换为字节码,然后把编译好的字节码转发到Python虚拟机(PVM)中进行执行

  1. IPython的特点如下:

IPython具有卓越的Python shell,其性能远远优于标准Python的shell。
IPython支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。
IPython提供了基于控制台命令环境的定制功能,可以十分轻松地将交互式Python shell包含在各种Python应用中,甚至可以当作系统级shell来使用。

五、编程题。

1. 代码如下:

print("+++++++++++")
print("+         +")
print("+++++++++++")

或者

print('''+++++++++++
+         +
+++++++++++
''')
  1. 代码如下:
print("学Python,来传智播客黑马程序员")
print("学Python,来传智播客黑马程序员")
print("学Python,来传智播客黑马程序员")
print("学Python,来传智播客黑马程序员")
print("学Python,来传智播客黑马程序员")

第2章Python基本语法

一、填空题

1.int
2.True False
3.8
4.1.2e5
5.00000010
6.0b10100
7.type()
8.1
9.20
10.4.34×103

二、判断题

1.对
2.错
3.对
4.对
5.错
6.错
7.对
8.对
9.对
10.对

三、选择题

1.D
2.D
3.A
4.A
5.C
6.A
7.B
8.B
9.C
10.D

四、简答题
  1. Python中标识符的命名规则如下所示:
    标示符由字母、下划线和数字组成,且数字不能开头
    python中的标识符是区分大小写的。
    python中的标示符不能使用关键字
  2. 简述Python中的数字类型有:int(整型)、long(长整型)、float(浮点数)、complex(复数)
五、编程题
  1. 代码如下:
import math
 	a=float(input("请输入斜边 1 的长度")) #输入实数
 	b=float(input("请输入斜边 2 的长度")) #输入实数
 	c=a*a+b*b #计算,得到的是斜边的平方
 	c=sqrt(c) #开方,得到的是斜边长
 	print("斜边长为:",c) #显示,一项是字符串,一项是 c 表示的斜边长
  1. 代码如下:
# 用户输入
x = input('输入 x 值: ')
y = input('输入 y 值: ')
# 不使用临时变量
x,y = y,x
print('交换后 x 的值为: {}'.format(x))
print('交换后 y 的值为: {}'.format(y))

第3章Python常用语句

一、填空题

1.break
2.elif
3.continue
4.True
5.pass

二、判断题

1.错
2.对
3.对
4.对
5.对

三、选择题

1.C
2.C
3.C
4.C
5.D

四、简答题

1.Pass语句Python中的pass是空语句,它的出现是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。
2.break语句用于结束整个循环;continue的作用是用来结束本次循环,紧接着执行下一次的循环。

五、编程题

1.代码如下:

for i in range(1,11):
    print(i)

2.代码如下:

a=int(input("请输入一个数:"))
 	if a>0:
    		print("a是一个正数")
 	elif a<0:
     	print("a是一个负数")
 	else:
     	print("a等于0")

3.代码如下:

i=1
   	while i<10:
       	j=1
       	while j<=i:
           	print("%d*%d=%-2d "%(i,j,i*j),end='')
           	j+=1
       	print("\n")
       	i+=1

第4章字符串

一、单选题

1.A
2.D
3.B
4.C
5.C
6.B
7.A

二、判断题

1.对
2.对
3.错
4.对
5.错
6.错
7.错

三、填空题

1.文本
2.转义
3.input
4.切片
5.开

四、程序分析题

1.答:不能编译通过。因为num1和num2属于字符串类型,不能执行取余操作。
2.结果为:J
3.答:由于没有在字符串中找到子串,index方法默认会抛出ValueError异常。
4.结果为:Hello World(默认删除两头的空格)
5.结果为:HelloPython

五、编程题

1.答案:

myStr = input("请输入任意字符串:")
num = 0
for s in myStr:
    if s.isdigit():
        num += 1
print(num)

2.答案:

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
while True:
    myStr = input("请输入任意一个字母:")
    upMyStr = myStr.upper()
    for weekS in week:
        if upMyStr == weekS[0]:
            if weekS.startswith("M"):
                print("星期一")
            elif weekS.startswith("W"):
                print("星期三")
            elif weekS.startswith("F"):
                print("星期五")
            elif weekS.startswith("T") or weekS.startswith("S"):
                secondStr = input("请再输入任意一个字母:")
                newStr = upMyStr+secondStr
                print(newStr)
                for weekStr in week:
                    if weekStr.find(newStr,0,2) != -1:
                        if newStr == "Tu":
                            print("星期二")
                        elif newStr == "Th":
                            print("星期四")
                        elif newStr == "Sa":
                            print("星期六")
                        elif newStr == "Su":
                            print("星期日")
                        break
            break

3.答案:

str = "Hello,welcome to itheima!!"
print(str.count("o"))

第5章列表、元组和字典

一、单选题

1.D
2.B
3.C
4.D
5.D
6.C
7.A
8.B
9.C

二、判断题

1.对
2.对
3.对
4.对
5.错
6.错
7.错

三、填空题

1.字典
2.字典,列表
3.not in
4.sort
5.小括号

四、简答题

1.答案:

(1)外形:列表是中括号括起来的数据;元组是圆括号括起来的数据;字典是花括号括起来的数据
(2)存储结构:列表可以存储多个不同类型的数据,以逗号分隔;元组同样能存储多个不同类型的数据,以逗号分隔;字典能存储多个键值对,以逗号分隔,键是唯一的,值是任何类型的。
(3)访问方式:列表可以通过下标索引访问元素,索引从0开始;元组可以通过下标索引访问值,索引从0开始;字典通过键来访问值。
(4)是否可变类型:列表是可变类型,列表是不可变类型,字典是可变类型。

五、程序分析题

1.答案:程序运行错误,元组不能使用下标增加元素。
2.结果为:3
3.结果为:1,26

六、编程题

1.答案:

def message():
    myStr = input("请输入密码,只能为字母和数字:")
    if myStr.isalnum():
        print("符合要求")
    else:
        print("不符合要求")

2.答案:

arr = []
evenStr = ""
oddStr = ""
message = input("请输入任意字符串:")
for string in message:
    arr.append(string)
for eStr in (arr[::2]):
    evenStr = evenStr+eStr
for oStr in (arr[1::2]):
    oddStr = oddStr+oStr
print(evenStr+oddStr)

3.答案:

arr = []
def count():
    myStr = input("请输入只包含字母的字符串:")
    if myStr.isalpha():
        newStr = myStr.lower()
        for string in newStr:
            arr.append(string)
        a = {}
        for i in arr:
            if arr.count(i) >= 1:
                a[i] = arr.count(i)
        print(a)
    else:
        print("输入的内容有误")
count()

4.答案:

arr = []
result = ""
myStr = input("请输入字符串:")
for string in myStr:
    arr.append(string)
last = arr[-1]
arr.remove(last)
arr.insert(0,last)
for new in arr:
    result = result + new
print(result)

5.答案:

arr = []
length = int(input("请要输入数字的总个数(必须为奇数):"))
i = 0
while i < length:
   num =  int(input("输入第%d个数字:"%(i+1)))
   arr.append(num)
   i+=1
arr.sort()
index = int(length/2)
print(arr[index])

6.答案:

第一种:

arr = [1,2,3,4,5]
arr.reverse()
print(arr)

第二种:

arr = [1,2,3,4,5]
arr.sort(reverse=True)
print(arr)

7.答案:

arr = []
length = int(input("请输入数字的总个数:"))
i = 0
while i < length:
   num =  int(input("输入第%d个数字:"%(i+1)))
   arr.append(num)
   i+=1
print("排序前:%s"%arr)
# 对列表排序
for i in range(length):
    flag = 0
    for j in range(1,length):
        if arr[j-1] > arr[j]:
            arr[j-1],arr[j] = arr[j],arr[j-1]
            flag = 1
    if not flag:
        break
print("排序后:%s"%arr)

8.答案:

arr = []
length = int(input("请输入列表的总个数:"))
i = 0
while i < length:
   element =  input("输入第%d个元素:"%(i+1))
   arr.append(element)
   i+=1
# 列表转为集合
newList = set(arr)
print(newList)

9.答案:

def add(a, b):
    # 下面两行保证输入的a和b是维数相同的矩阵,根据实际情况不要也可以
    assert (len(a) == len(b))
    assert (all([len(a[i]) == len(b[i]) == len(a[0]) for i in range(len(a))]))
    i, j = len(a), len(a[0])
    c = [[0] * j] * i
    for m in range(i):
        for n in range(j):
            c[m][n] = a[m][n] + b[m][n]
    return c
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[9, 8, 7], [6, 5, 4], [3, 2, 1]]
c = add(a, b)
print(c)

10.答案:

dic = {}
i=0
while i<3:
     number = input("输入学生学号:")
     name = input("输入学生姓名:")
     dic.__setitem__(number,name)
     i+=1
print("排序前:%s"%dic)
def dict2list(dic:dict):
    ''' 将字典转化为列表 '''
    keys = dic.keys()
    vals = dic.values()
    lst = [(key, val) for key, val in zip(keys, vals)]
    return lst
new = sorted(dict2list(dic), key=lambda x:x[0], reverse=False)
print("排序后:%s"%new)

11.答案:

def delMale(dict):
    keys = []
    values = []
    for (key,value) in dict.items():
        keys.append(key)
        values.append(value)
    for value in values:
        if value == 0:
            index = values.index(value)
            arrKey = keys[index]
            del dict[arrKey]
            values[index] = 3
            keys[index] = "占位"
dic = {"小明":0, "小红":1,"小兰":1,"小白":0}
print("删除前:%s"%dic)
delMale(dic)
print("删除后:%s"%dic)

12.答案:

arr = [12,3,37,7,91,67,27,45,6]
def delPrime(arr):
    for element in arr:
        # 质数大于 1
        if element > 1:
            # 查看因子
            for i in range(2, element):
                if (element % i) == 0:
                    break
            else:
                arr.remove(element)
delPrime(arr)
print(arr)

第6章函数

一、单选题

1.C
2.D
3.C
4.A
5.C
6.D

二、判断题

1.错
2.对
3.对
4.错
5.对
6.对
7.错
8.对

三、填空题

1.逗号
2.return
3.return
4.不定长
5.嵌套
6.局部
7.整个程序
8.global

四、简答题

1.答案:
局部变量:
(1)函数内部定义的变量;
(2)作用域是函数的内部。
全局变量:
(1)函数外部定义的变量;
(2)作用域是整个程序。

2.答案:
(1)以def关键字开头,后面接函数标识符名称和圆括号;
(2)给函数起名字的时候,规则跟变量的名字是一样的;
(3)任何传入参数和自变量必须放在圆括号中间;
(4)函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明;
(5)函数内容以冒号起始,并且缩进;
(6)return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

五、程序分析题

1.结果为100
2.结果为:200
3.结果为:200,100

六、编程题

1.答案:

def getMax():
    num1 = int(input("请输入第1个整数:"))
    num2 = int(input("请输入第2个整数:"))
    num3 = int(input("请输入第3个整数:"))
    temp = 0 # 临时变量,存放中间产生的第2大数值
    if num1 > num2:
        temp = num1
    else:
        temp = num2
    if temp>num3:
        return "其中最大值为:"+ str(temp)
    else:
        return "其中最大值为:"+ str(num3)
maxValue = getMax()
print(maxValue)

2.答案:

def sum(n):
    res = 0
    while n >= 1:
        if n%2 == 0:
            res -= 1.0/(n*(n+1))
        else:
            res += 1.0/(n*(n+1))
        n-=1
    return res
num = int(input("请输入一个整数:"))
print(sum(num))

3.答案:

def is_palindrome(n):
    n=str(n)
    m=n[::-1]
    return n==m
result = is_palindrome(1247321)
print(result)

4.答案

def sjx(a, b, c):
    if (a + b > c and a + c > b and b + c > a):
        return "能构成三角形"
    else:
        return "不能构成三角形"
result1 = sjx(3, 4, 5)
print(result1)
result2 = sjx(1, 1, 2)
print(result2)

5.答案:

# 定义函数
def lcm(x, y):
   #  获取最大的数
   if x > y:
       greater = x
   else:
       greater = y
   while(True):
       if((greater % x == 0) and (greater % y == 0)):
           lcm = greater
           break
       greater += 1
   return lcm
# 获取用户输入
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
print( num1,"和", num2,"的最小公倍数为", lcm(num1, num2))

第7章高级函数

一、单选题

1.B
2.C
3.D
4.A

二、判断题

1.错
2.错
3.错
4.对
5.对
6.错
7.错
8.对
9.对
10.错
11.对

三、填空题

1.闭包
2.函数
3.被修饰的函数
4.@
5.内嵌
6.map
7.None
8.filter
9.布尔
10.两

四、简答题

1.答案:
(1)存在于嵌套关系的函数中;
(2)嵌套的内部函数引用了外部函数的变量;
(3)嵌套的外部函数会将内部函数名作为返回值返回。

2.答案:
(1)引入日志;
(2)函数执行时间统计;
(3)执行函数前预备处理;
(4)执行函数后清理功能;
(5)权限校验;
(6)缓存。

3.答案:
map函数会根据提供的函数对指定的序列做映射。
filter函数会对指定序列执行过滤操作。
reduce函数会对参数序列中的元素进行累积。

五、程序分析题

1.能,结果为:
6
7
8

2.能,结果为:
6
6
6

六、编程题

答案:

result = filter(lambda x:(x+1)%2, [1, 2, 3, 4, 5])
print(result)

第8章文件

一、单选题

1.C
2.A
3.C
4.B
5.D
6.D
7.C

二、判断题

1.对
2.对
3.对
4.对
5.错

三、填空题

1.close()
2.offset
3.列表
4.文件夹
5.tell

四、简答题

1.答案:
文本文件存储的是常规字符串,由若干文本行组成,通常每行以换行符“\n”结尾。二进制文件把对象内容以字节串进行存储,无法用记事本或其他普通字处理软件直接进行编辑,无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取、显示、修改或执行。

2.答案:
(1)使用read(size)方法可以指定读取的字节数,或者读取整个文件;
(2)使用readlines方法可以把整个文件的内容进行一次性读取;
(3)使用readline方法一行一行读数据。

五、程序题

1.答案:

new = []
f = open('itheima.txt', 'r')
contents = f.readlines()
for ele in contents:
    if ele.startswith('#') == False:
        new.append(ele)
print(new)
f.close()

2.答案:

# 密码薄
passwordBook = {}
def add(password, value):
    if password not in passwordBook.keys():
        passwordBook[password] = value
        save()
    else:
        print("该密码已存在")
def delete(password):
    if password in passwordBook.keys():
        del passwordBook[password]
        print(passwordBook)
        save()
    else:
        print("该密码不存在")
def modify(password, newValue):
    if password in passwordBook.keys():
        passwordBook[password] = newValue
        print(passwordBook)
        save()
    else:
        print("该密码不存在")
def find(value):
    if value in passwordBook.values():
        print("该网址存在")
    else:
        print("该网址不存在")
def save():
    f = open("password.txt","w")
    f.write(str(passwordBook))
    f.close()
def printInfo():
    print("密码簿的功能如下:")
    print("1.添加")
    print("2.删除")
    print("3.修改")
    print("4.查找")
i = 0
while i<5:
    printInfo()
    num = int(input("请输入要选择的功能:"))
    if num==1:
        web = input("请输入存入的网址:")
        password1 = input("请输入密码:")
        add(password1, web)
        print(passwordBook)
    elif num==2:
        password2 = input("请输入密码:")
        delete(password2)
    elif num==3:
        password3 = input("请输入密码:")
        value3 = input("请输入新的网址:")
        modify(password3,value3)
    elif num==4:
        value4 = input("请输入要查找的网址:")
        find(value4)
    i+=1

3.答案:

f = open("itheima.txt","r")
content = list(eval(f.read()))
content.sort()
print(content)

4.答案:

f = open("itheima.txt","r")
content = f.read()
newStr = ""
for string in content:
    temp = ord(string)
    if temp in range(65,91):
        if temp == 90:
            char1 = chr(temp-25)
            newStr += char1
        else:
            char2 = chr(temp+1)
            newStr += char2
    elif temp in range(97,123):
        if temp == 122:
            char3 = chr(temp-25)
            newStr += char3
        else:
            char4 = chr(temp + 1)
            newStr += char4
    else:
        newStr = newStr+string
f.close()
f2 = open("itheima-加密后.txt","w")
f2.write(newStr)
f2.close()

5.答案:

f = open(r'd:\1.txt','r') 
s = f.readlines() 
f.close() 
r = [i.swapcase() for i in s] 
f = open(r'd:\2.txt','w') 
f.writelines(r) 
f.close()

6.答案:

import pickle 
d = {'张三':98,'李四':90,'王五':100} 
print(d) 
f = open('score.dat','wb') 
pickle.dump(1,f) 
pickle.dump(d,f) 
f.close 
 f = open('score.dat','rb') 
pickle.load(f) 
d = pickle.load(f) 
f.close() 
print(d) 

第9章异常

一、单选题

1.B
2.A
3.C
4.D
5.A
6.C
7.D
二、判断题
1.对
2.错
3.错
4.对
5.对
6.对
三、填空题
1.Exception
2.索引
3.finally
4.assert
5.except
四、简答题
1.答案:
在Python中,程序在执行的过程中产生的错误称为异常,比如列表索引越界、打开不存在的文件等。
2.答案:
try/except/else/finally语句

五、编程题

1.答案:

class HeightException(Exception):
    pass
try:
    height = int(input("请输入您的身高:"))
    if height<30 or height>250:
        raise HeightException
    weight = int(input("请输入您的体重:"))
    weightS = height-100
    if weight > weightS and weight-weightS < 0.05*weightS:
        print("体重达标")
    elif weight < weightS and weightS-weight < 0.05*weightS:
        print("体重达标")
    else:
        print("体重不达标")
except HeightException:
    print("您输入的身高有误")

2.答案:

try:
    score = int(input("请输入学生的成绩:"))
    if score>=90 and score<=100:
        print("A:优秀")
    elif score>=80 and score<90:
        print("B:良好")
    elif score>=60 and score<80:
        print("C:合格")
    else:
        assert score>60,"D:不及格"
except Exception as result:
    print("低于60分:\n",result)

第10章Python模块

一、单选题

1.C
2.D
3.A

二、判断题

1.错
2.对
3.对
4.对
5.错

三、填空题

1.random. randint
2.文件
3.name
4.包
5.安装
6.path

四、简答题

1.答案:
每个Python脚本在运行时都有一个“name”属性。如果脚本作为模块被导入,则其“name”属性的值被自动设置为模块名;如果脚本独立运行,则其“name”属性值被自动设置为“name”属性。利用“name”属性即可控制Python程序的运行方式。
2.答案:
(1)搜索当前目录,如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
(2)如果都找不到。Python会继续查看默认路径。
3.答案:
在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块。
4.答案:
在Python中用关键字import来引入某个模块:
(1)导入模块,使用“import 模块”引入;
(2)导入模块中的某个函数,使用“from 模块名 import 函数名”引入;
(3)导入模块的全部内容,使用“from 模块 import *”。

五、编程题

答案:
互换值.py

def changeNum1AndNum2(num1, num2):
    temp = num1
    num1 = num2
    num2 = temp
    return (num1, num2)

第11章面向对象编程(上)

一、单选题

1.B
2.D
3.C
4.C
5.A
6.A
7.B

二、判断题

1.错
2.错
3.错
4.对
5.错
6.对

三、填空题

1.class
2.对象
3.self
4.init
5.参数

四、简答题

1.不用实例化对象就能够在本类中访问自身的属性或方法。
2.类名,属性,方法
3.分别用于初始化对象的属性和释放类所占用的资源。

五、程序分析题

1.能,结果为:我的名字是小明
2.能,结果为:
–del–
–end–

六、编程题

1.答案:

class Circle:
    def __init__(self,tup, radius, color):
        self.center = tup
        self.radius = radius
        self.color = color
    def perimeter(self):
        return 3.14 * 2 * self.radius
    def area(self):
        return 3.14 * self.radius * self.radius
circle = Circle((0,0),5,"蓝色")
print(circle.perimeter())
print(circle.area())

2.答案:

class Curriculum:
    def __init__(self):
        self.number = 1001
        self.name = "语文"
        self.teacher = "小明"
        self.__address = "2号教学楼3层305室"
    def __str__(self):
        return """
            课程编号:%d
            课程名称:%s
            任课教师:%s
            上课地点:%s
        """%(self.number,self.name,self.teacher,self.__address)
curri = Curriculum()
print(curri)

第12章面向对象编程(下)

一、单选题

1.D
2.A
3.C
4.C
5.B
6.C
7.A

二、判断题

1.对
2.错
3.对
4.错
5.对
6.错
7.对
8.对

三、填空题

1.下划线
2.父类
3.私有
4.多
5.重写
6.super()
7.类
8.@classmethod

四、简答题

1.答案:
(1)把属性定义为私有属性,即在属性名的前面加上两个下划线;
(2)添加用于设置或者获取属性值的两个方法供外界调用。
2.答案:
类的继承是指在一个现有类的基础上构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类的属性和方法。
3.答案:
当在一个类的内部定义了私有方法或者私有属性的时候,Python在运行的过程中,把属性或者方法的名字进行了修改,即在属性或者方法名称的前面加上“_类名”,导致原有的方法无法访问到。
4.答案:
在Python中,多态是指在不考虑对象类型的情况下使用对象。
5.答案:
类方法需要使用@classmethod进行标识,该方法可以访问类属性,无法访问实例属性,可以通过类实例和类进行调用。
静态方法使用@staticmethod进行标识,该方法无法访问实例属性和类属性,起到类似于函数的作用,使用类或者类实例进行调用。
实例方法直接在类中使用def进行定义,可以访问其实例属性和类属性,使用类实例进行调用。
如果要修改实例属性的值,就直接使用实例方法;如果要修改类属性的值,就直接使用类方法;如果是辅助功能,比如打印菜单,这时可以考虑使用静态方法,可以在不创建对象的前提下使用。
6.答案:
在Python中,以下划线开头的变量名有着特殊的含义,尤其是在类的定义中。用下划线作为变量前缀和后缀来表示类的特殊成员:
(1)_xx:这样的对象叫做保护变量,不能用from module import *导入,只有类对象和子类对象能够访问这些变量。
(2)xx:系统定义的特殊成员名字。
(3)_xx:类中的私有成员,只有类对象自己能访问,子类对象也不能访问到这个成员,但在对象外部可以通过“对象名.类名 xx”这样特殊的方式来访问。Python中没有纯粹的C++意义上的私有成员。

五、编程题

1.答案:

class Student(object):
    # 构造方法
    def __init__(self, name, age, scores):
        self.__name = name     # 姓名
        self.__age = age       # 年龄
        self.__scores = scores # 分数
    def get_name(self):
        return self.__name
    def get_age(self):
        return self.__age
    def get_course(self):
        return max(self.__scores)
stu = Student('小丸子', 18, [89, 90, 91])
print("姓名:%s"%(stu.get_name()))
print("年龄:%s"%(stu.get_age()))
print("最高分:%s"%(stu.get_course()))

2.答案:

class Animal(object):
    def __init__(self, color):
        self.color = color #颜色
    def call(self):
        print("动物叫")
class Fish(Animal):
    def __init__(self, color):
        super().__init__(color)
        self.tail = True
    def call(self):
        print("-%s的鱼在吐泡泡-"%self.color)
fish = Fish("蓝色")
fish.call()
  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值