简答题
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()函数
不可变集合
- 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(2017,2018))
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,而
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,完成下列要求:
输出矩阵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行和第5行元素对调后,输出新的矩阵a。
b = a[1]
a[1] = a[4]
a[4] = b
print(a)
用对角线上的各元素分别去除各元素所在行,输出新的矩阵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. 已知:
其中,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')