Python期末习题练习

简答题
1. Python语言有哪些数据类型?

​ int float bool complex string 元组(Tuple) 列表(list) 字典(Distrionary) 集合(Set)

2. 为什么要在程序中加注释?怎样在程序中加注释?加入注释对程序的执行有没有影响?

​ 注释的作用是帮助理解程序的有效的手段之一,帮助自己和他人理解程序。注释有单行注释,多行注释等。快捷键 加注释的方法:选中一部分,同时按ctrl+/,给这些行加上注释(适用于批量加注释)。注释对程序没有影响。

3. 什么叫字符串?有哪些常用的字符编码方案?

​ 有限字符的序列

​ Unicode、ASCII、GBK、GB2312、UTF-8

4.什么叫序列?它有哪些类型?各有什么特点?

​ 指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们

​ 序列类型包括字符串、列表、元组

特点

​1. 字符串:有序,不可变的字符序列
2. 列表: 有序,可变,可重复的数据序列
3. 元组:有序,不可变,可重复的数据序列

5.集合有哪两种类型?分别如何创建?

​ 可变集合(set),不可变集合(frozenset)

可变集合
  1. 用一对大括号将多个用逗号分隔的数据括起来
  2. 使用set()函数
不可变集合
  1. frozenset()函数
6.Python支持的集合运算有哪些?集合的比较运算有哪些?集合对象的方法有哪些?

​ 有并集,交集,差集,对称差集,比较,并入,遍历

​ ==,!=,<,>,<=,>=

可变和不可变
issubset()
issuperset()
isdisjoint()
union()
intersection()
difference()
symmetric_difference()
copy()
可变集合
add()
update()
intersection_update()
difference_update()
symmetric_difference_update()
remove()
discard()
pop()
clear()
7.什么叫lambda函数?举例说明。

​ lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的匿名函数。

f = lambda x,y:x+y
print(f(20172018))
8.什么叫装饰器?它有何作用?

​ 可以理解为一个函数,一个用来包装函数的函数,经常用于为已经存在的函数添加额外的功能

9.类的属性有哪几种?如何访问它们?

​ 公有属性,私有属性

​ 公有属性直接在类外通过对象名访问,私有属性需要在前面加两个下划线

10.继承与派生有何关系?如何实现类的继承?

​ 继承是从已有的类中派生出新的类,新类具有原类的数据属性和行为,并能扩展新的行为

​ Python继承与派生有何关系如何实现类的继承

​ 在类名后的小括号()中写入要继承的父类名,如果要继承多个类则中间用逗号分隔

11.什么是多态?在Python中如何体现?

​ 同一名字的方法产生了多个不同的动作行为,也就是不同的对象收到相同的消息时产生不同的行为方式

​ 在运行时确定其状态,在编译阶段无法确定其类型

​ 在运行时通过参数类型确定其具体的计算过程

​ 同一操作具有不同的形态

12.文本文件的操作步骤是什么?
13.二进制文件的操作步骤是什么?

​ Python对文本文件和二进制文件采用统一的操作步骤:即“打开—操作—关闭”。

14.程序的逻辑错误能否算作异常?为什么?

​ 不算,因为异常是指程序运行过程中出现的错误或遇到的意外情况,而逻辑错误主要表现为程序运行后,得到的结果与预想的不一致。

15.什么叫异常?异常处理有何作用?在Python中如何处理异常?

​ 异常是指程序运行过程中出现的错误或遇到的意外情况

​ 对异常情况给予适当处理的技术就是异常处理。简而言之,作用就是对异常情况进行适当处理。如提高程序的健壮性,并把Python中晦涩难懂的错误信息转换为友好的提示呈现 给用户。

​ 在Python中,异常也是对象,Python提供了try-except和try-finally语句来进行处理

16.语句try-except和try-finally有何不同?

​ try-except出错的时候执行, Except有特定的错误类型

​ try-finally无论如何都强制执行

编程题
1. 输入三个整数给a,b,c,然后交换它们的值:把a中原来的值给b,把b中原来的值给c,c中原来的值给a。
a, b, c = eval(input('please input 3 numbers:'))

print(a, b, c)
a, b, c = c, a, b
print(a, b, c)
2. 输入是三个数,判断它们能否组成三角形。若能,则输出三角形是等腰三角形,等边三角形,直角三角形,还是普通三角形;若不能,则输出“不能组成三角形”提示信息。
a, b, c = eval(input('please input 3 numbers:'))

print(a, b, c)

if a + b > c and a + c > b and b + c > a:
    # 满足三角形
    if a == b == c:
        # 等边三角形
        print('等边三角形')
    elif a == b != c or a == c != b or c == b != a :
        # 等腰三角形
        print('等腰三角形')
    elif a**2 + b**2 == c**2 or a**2 + c**2 == b**2 or c**2 + b**2 == a**2:
        # 直角三角形
        print('直角三角形')
    else:
        print('普通三角形')
else:
    print('不能组成三角形')
3.求满足如下条件的3位数:它除以9的商等于它各位数字的平方和。例如224,它除以9的商为24,而

2 2 + 2 2 + 4 2 = 24 2^2+2^2+4^2=24 22+22+42=24

for i in range(100, 999):
    s = int(i / 9)
    a = int(i / 100)
    b = int((i % 100) / 10)
    c = int((i % 100) % 10)
    if s == b ** 2 + c ** 2 + a ** 2:
        print(s, a, b, c)
        print(i)
4. 梅森尼数是指(2^n)-1为素数的数n,求[1,21]内有多少个梅尼森数以及最大的梅尼森数。
def sushu(n):
    for i in range(2, n):
        if n % i ==0:
            return False
    return True
def masonNumber(n):
    list = []
    for i in range(2, n):
        if sushu(2**i-1):
             list.append(2**i-1)
    return list
print (masonNumber(21))
print("最大的梅森尼数为:",max(masonNumber(21)))
5. 输入一个英文句子,将其中的小写字母转换成大写字母后并输出。
a=input()
print(a.upper())
6. 输入5x5矩阵a,完成下列要求:
  1. 输出矩阵a。
    count = 1
    a = []
    for i in range(0, 5):
        temp = []
        for j in range(0, 5):
            temp.append(count)
            count += 1
        a.append(temp)
    print(a)
    
  2. 将第2行和第5行元素对调后,输出新的矩阵a。
    b = a[1]
    a[1] = a[4]
    a[4] = b
    print(a)
    
  3. 用对角线上的各元素分别去除各元素所在行,输出新的矩阵a。
    for m in range(1, 6):
        a[m - 1][m - 1] = a[m - 1][m - 1] / m
    print(a)
    
7. 从键盘输入若干数据建立一个字典,然后读取其键和值,并分别存入两个列表中。
dic = {}
while True:
    key = input('Input key:')
    if key == '':
        break
    value = input('Input value:')
    dic[key] = value
print(dic.keys())
print(dic.values())
8. 输入全班30名学生的姓名和成绩,输出其中最高分和最低分,并求全班同学的平均分。要求利用字典实现。
count =30
s = []
for i in range(count):
    print(i+1)
    name = input('姓名:')
    score = int(input('成绩:'))
    t = {}
    t['姓名'] = name
    t['成绩'] = score
    s += [t]
print(s)
sum = 0
max = s[0]['成绩']
min = s[0]['成绩']
i1=i2=0
for k in range(count):
    if max < s[k]['成绩']:
        max = s[k]['成绩']
        i1=k
    if min > s[k]['成绩']:
        min = s[k]['成绩']
        i2=k
    sum += s[k]['成绩']    
print('最高分:' + s[i1]['姓名'] + ' ' + str(s[i1]['成绩']))
print('最低分:' + s[i2]['姓名'] + ' ' + str(s[i2]['成绩']))
print('平均分:' + str(sum/count))
9. 已知:

y = s ( x , n ) s ( x + 1.75 , n ) + s ( x , n + 5 ) y=\frac{s(x,n)}{s(x+1.75,n)+s(x,n+5)} y=s(x+1.75,n)+s(x,n+5)s(x,n)

其中,s(x,n)=x+x2/2!+x3/3!+…+x^n/n!,输入x和n的值,求y值。要求分两种情况实现:直接在程序中定义函数s(x,n);在模块中定义函数s(x,n)。
import math
def func(n):
    if n == 0 or n == 1:
        return 1
    else:
        return (n * func(n - 1))
def s(x, n):
    sum = 0
    for i in range(1,n+1):
        sum += math.pow(x, n) / func(n)
    return sum
x = int(input("请输入x的值:"))
n = int(input("请输入n的值:"))
y = s(x, n) / (s(x + 1.75, n) + s(x, n + 5))
print(y)
10. 利用面向对象方法求n!,并输出10!的值。
class Factorial:
    def fac (self,num):
        factorial = 1
        for i in range(1,num+1):
            factorial *= i
        return factorial
        
if __name__ == '__main__':
    factorial = Factorial()
    n=int(input('请输入n:'))
    print(n,'!=',factorial.fac(n))
11. 设文件integer.dat中放了一组整数,统计文件中正整数,零和负整数的个数,将统计结果追加到文件integer.dat的尾部,并输出到屏幕上。
file = open("integer.dat","r+")
s=file.readline()
a,b,c=0,0,0
while s != '':
    if int(s)> 0:
        a+=1
    elif int(s) == 0:
        b+=1
    else:
        c+=1
    s=file.readline()
print(a,b,c)
file.write('正数:'+str(a)+'\n')
file.write('零:'+str(b)+'\n')
file.write('负数:'+str(c)+'\n')
file.close()
12. 从键盘输入x和y的值,计算y=In(3x-y+1)的值。要求设置异常处理,对负数求对数的情况给出提示。
import math

class LowZeroError(Exception):
    def __init__(self,data):
        self.data=data

class ZeroError(Exception):
    def __init__(self,data):
        self.data=data

x,y=eval(input('Please input x and y:'))
try:
    d = 3*x+y-1
    if d == 0:
        raise ZeroError('零不能用于求对数')
    if d < 0:
        raise LowZeroError('负数不能用于求对数')
    n = math.log(d)
    print(n)
except ZeroError as e:
    print(e)
except LowZeroError as e:
    print(e)
except:
    print('Error')
  • 43
    点赞
  • 180
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值