文章目录
一、选择题
//和/的区别
" / " 表示浮点数除法,返回浮点结果;
" // " 表示整数除法,返回不大于结果的一个最大的整数
例题1:
print(1.0//2, 1/2)
#打印0.0 0.5
print("6 // 4 = " + str(6 // 4))
print("6 / 4 =" + str(6 / 4))
# 6 // 4 = 1
# 6 / 4 = 1.5
例题2:
x, y = 5.0, 2
print("%s %s" % ( x/y, x//y))
#考察的还是//和/ 的区别,无非是换了一种打印方式。
列表的操作
-
使用
[ ]
代表一个列表,列表乘以某一个数,如list2 = list1 * 2 得到一个新的列表是list1的元素重复n次,且list1不改变。例题:
print([1, 2]*3)
#[1,2]为一个列表,再乘以3 就是链表元素重复三次
-
list[10:]
代表选择从list列表的第十个元素开始到最后例题:
list = ['a', 'b', 'c', 'd', 'e'] print(list[2:]) # 注意角标从0开始 ['c','d','e'] list = ['a', 'b', 'c', 'd', 'e'] print(list[10:]) # 因为list列表中只有5个元素,所以从10开始打印为[]
-
list[:2]代表从角标为0的元素,一直选择到角标为2的元素(不包含角标为2的元素)
例题:
lst = [1, 2, 3, 4, 5, 0, 2, 1] print(lst[:-1]) #代表从list列表的第一个元素到最后一个元素(不包含最后一个元素) #打印结果为[1, 2, 3, 4, 5, 0, 2] #补充: -1为倒数第一个元素,-2为倒数第二个元素.....
-
len函数代表打印列表的长度
例题:
lst = [1, 21]
print(len(lst))
#因为lst长度为2,所以打印2
-
min函数代表选择列表中元素最小值,max函数为选择最大值
例题:
lst = [1, 2, 3, 4, 5, 0, 2, 1]
print(min(lst))
#lst列表中最小值为0,所以打印0
lst = [1, 2, 3, 4, 5, 0, 2, 1]
print(max(lst))
#打印最大值 5
print(min('abc'))
#打印ASCII码最小的,也就是a
字典
python中字典是一种存储数据的容器,存储方式为key和value的形式
格式为:{ 'name':'小胖','age':30 }
-
get函数获取指定值
a = { 'name':'小胖','age':30 } print(a.get('name')) # 打印结果为小胖,a.get('name')的意思是获取a字典中name所对应的值 print({1:2, 3:4}.get(2)) # 打印结果为None,因为字典中没有key为2的项 # 补充:冒号前面的为key后面的为value,get方法只会查找key
-
len函数求长度
len({1:2, 3:4}) # 因为只有两组数据,所以长度为2
-
min和max函数
print(min({1:2, 3:4})) # 会求得字典中key为最小的那个值,注意只会比较key 也就是每个冒号前的元素
字符串
-
字符串相加会直接拼接
print('12'+'13') # 打印1213
-
字符串比较大小比较的是ASCII码
print('a' < 'b') #打印为true
-
find函数为寻找子串在父串中的位置,如果父串中没有则返回-1
例题:
'abc'.find('d') #这里'abc'指的是父串,'d'为子串,因为abc中没有d 所以返回为-1
-
index和find函数作用一样,也是寻找子串在父串中的位置,只不过index在找不到的情况下会报错
print('abc'.index('ddd')) #因为'abc'中没有'ddd'所以报错,如果把index函数替换为find 则会打印-1
-
list函数会将字符串转换为列表
print(list('abc')) # 会将abc转换为列表,即['a', 'b', 'c']
-
startswith函数检查字符串是否以指定的字符串开头,如果是返回True
print('abcabc'.startswith('abc')) # 因为字符串'abcabc'是以'abc'开头的,所以返回True
-
in关键字,如果在父串中找到则返回true
print('12' in '74125') # 因为12可以在74125中找到,所以返回True
-
字符串的len和列表中的len函数一样,都是求长度
print(len('abc')) #'abc'的长度为3,所以打印3
运算
-
在纯or语句中,只要有一个表达式不是假的话,那么就返回这个表达式的值。只有所有都是假,才返回假
a = 'a' print(a > 'b' or 'c') # 结合上面的结论,因为 a > 'b' 为假,所以直接返回c
-
例题
a = '123' b = '123' print(a is b) # 打印结果为true,is比较的是值和内存地址是否相同。 # 在执行a = '123'的时候,会将字符串123加入到串池中去,当再次执行b = '123'的时候,会将串池中已经存在的字符串123返回。所以a和b的内存地址也相同
类的继承
例题:
以下代码的执行结果
class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass
Child1.x = 3
print(Parent.x, Child1.x, Child2.x)
# 1,3,1
解题思路:
class Parent(object)
代表Parent类继承了Object基类,同理Child1和Child2继承了Parent类继承了
Parent
之后就有了Parent
类里的 x = 1
Child1.x = 3
将Child1里面的x改为了3,所以打印结果为1,3,1
程序阅读题
例题1:
求下列语句执行后,a的值
a = 2
for i in range(5):
if i == 3:
continue
else:
a += 1
考察知识点:
for循环和if判断语句
解题思路:
首先明确range函数的作用,是生成一个迭代对象,也可以把它当成列表(当然他不是列表)。例如range(5)就默认从0开始,生成一个长度为5的整数列表。所以range(5)就为[ 0, 1, 2, 3, 4]
其次要弄明白for循环的含义,
for i in range(5)
这句话的意思是遍历range(5)生成的列表的每一个元素,将每一个元素的值赋给i 。也就是一共循环5次,第一次i为0,第二次i为1…最后一次i为4 continue关键字的作用是跳过本次循环
这道题简单的来讲就是循环5次,在 i = 3的时候不对a进行加一,其余的四次都对a加一,2 + 4 = 6
例题2:
a = 1
b = 2 * a / 4 #计算出b=0.5
a = "none"
print(a, b)
#打印结果为 none, 0.5
例题3:
a = 1
for i in range(5):
if i == 2:
break
a += 1
# 输出为3
解题思路:
参考例题1的解题思路,唯一不同的是break关键字代表终止循环,而continue代表跳过本次循环
简单的来讲总共循环了两次(i = 0的时候和i = 1的时候),1 + 2 = 3
例题4:
def func(x, y=6):
print(x, y)
func(1, 3)
# 此代码无非是定义了一个函数,紧接着有对次函数进行了调用,调用时传递了形参
# 打印结果为1,3
二、判断题
-
列表元素可修改,但元素不可重复。 错
解释:列表元素可以重复
-
表达式是用来计算的,语句是用来执行的。 对
-
标识符的第一个字符不能是数字。 对
-
列表是有序的对象集合。 对
-
python可以同时为多个变量赋值。 对
-
在python中,一个变量可以通过赋值指定不同类型的对象。 对
-
某种数据集合是由大括号形式,那么它一定是字典。 错
-
元组与列表的区别是元组的元素不可以修改。 对
-
封装指的是向外部隐藏不必要的细节。 对
-
每个对象都属于特点的类,并被称为该类的实例。 对
三、简答题
在python中,递归函数的特性是什么?
(1)必须有一个明确的结束条件
(2)每次进入更深一层递归时,问题规模相比上次递归都应有所减少
(3)递归效率不高,递归层次过多会导致溢出
阐释python是什么样的一门编程语言及应用场景?
Python是一门动态解释性的强数据类型的编程语言
应用场景:大数据、云计算、人工智能、爬虫
阐述类的三大特性是什么,你是如何理解的?
类的三大特性是封装、继承和多态。
(1)封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
(2)继承:类之间的关系,在这种关系中,一个类共享了一个或多个其他类定义的结构和行为。继承描述了类之间的关系。子类可以对基类的行为进行扩展、覆盖、重定义。
(3)多态:一个接口,多种实现,例如:人都会说话,但说的不同语言。
二分查找基本思路是什么?
假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;
若 x 大于当前位置值则在数列的后半段中继续查找;直到找到为止
面向过程与面向对象编程的区别是什么?
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
列表、元组的形式及元素特点?
(1)列表在方括号内,元素以逗号分隔
列表元素的特点:可重复,可修改,可嵌套,支持多种数据类型
(2)元组在小括号中,使用逗号隔开元素
元组元素的特点:可重复,不可修改,可嵌套,支持多种数据类型
变量命名规则内容是什么?
(1)标识符只能由字母、数字或下划线组成。
(2)标识符的第一个字符不能是数字。
(3)标识符区分大小写。
(4)关键字不能声明为标识符
四、编程题
用函数编程,编程实现求列表元素偶数之和,并调用运行,输出运行结果。
def func(l):
sum = 0
for i in range(len(l)):
if l[i] % 2 == 0:
sum += l[i]
print(sum)
list1 = [1, 2, 3, 4, 5]
func(list1)
用函数编程,实现删除列表里面的重复元素函数,并调用运行,输出运行结果。
def func(l):
res = list(set(l))
print(res)
list1 = [1,2,3,4,5,5,4]
func(list1)
用函数编程,实现求斐波那契数列前10项程序,并调用运行,输出运行结果。
def fun(i):
if i == 1 or i == 2:
return 1
else:
return fun(i-2)+fun(i-1)
for i in range(1,11):
print(fun(i),end=' ')