欢迎来到赛兔子家园

Python基础知识考题一

什么是Python?

Python是一种解释型、面向对象、动态数据类型的高级语言;

Python在编写时无须定义变量类型,在运行时变量类型强制固定,属于强类型语言;

Python无需编译,可以在解释器环境直接运行;

如何查看Python中关键字?

Python的保留关键字,不能把它们用作任何标识符名称,关键字区分大小写。Python的标准库提供了一个keyword模块,用于输出当前版本的所有关键字。

import keyword
print(keyword.kwlist)

输出:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 
'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global',
'if', 'import', 'in', 'is', 'lambda', 'nonlocal',
'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

Python中有哪些常见运算符?

算术运算符、比较运算符、赋值运算符、逻辑运算符、成员运算符、身份运算符...

练习题:

# 真题1
print(1 or 2)  # 1
print(1 and 2)  # 2
print(1 < (2 == 2))  # False
print(1 < 2 == 2)  # (1<2) and (2==2) # True
print(True == True == False)  # (True == True) and (True==False) # False
# 真题2
value = "B" and "A" or "C"  # A
print(value)  # A

# 真题3
# 用4,9,2,7四个数字,可以用+、-、*、/每个数字使用一次,使表达式的结果24,表达式是什么?
print((9 + 7 - 4) * 2)
# 真题4
# any()和all()方法有什么区别?
# any()只要迭代器中有一个元素为真结果就为真。all()迭代器中所有元素都为真结果才是真。
# 真题5 三目运算符
# a, b = 2, 3
# print("早啊" if a < b else "您好")
# 真题6 如何声明多个变量并赋值
# 两种方式
# 方式1 :
a, b, c = 3, 4, 5
# 方式2 :
a = b = c = 3

运算符is与==有什么区别 ?

Python中对象包含三要素:id、type、value。其中,id用来唯一标识一个对象,type标识对象的类型,value是对象的值。

is判断a对象是否就是b对象,用于判断两个变量引用对象是否为同一个,是通过id来判断。

==判断a对象的值是否和b对象的值相等,是通过value来判断的。

示例:
a = [1, 2, 3]
b = a
print(b is a)  # True
print(b == a)  # True
b = a[:]
print(b is a)  # False
print(b == a)  # True

 数据类型

Python都有哪些自带的数据类型?可变类型和不可变类型分别包括哪些?

Python自带的数据类型分为【可变】和【不可变】的类型。

可变数据类型】表示允许变量的值发生变化,如果改变了数据类型对应变量的值,那么不会重新分配内存空间。即如果对变量进行append 或 +=等操作后,只是改变了变量的值,而不会新建一个对象,变量引用对象的内存地址也不会变化。对于相同值不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于相同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

可变数据类型】包括:列表(list)、集合(set)、字典(dict)。

【不可数据类型】表示不允许变量的值发生变化,如果改变了该数据类型对应变量的值,那么将重新分配内存空间,相当于新建了一个对象,不可变数据类型包含:字符串(str)、元祖(tuple)、数值(number)。

对于内存中相同值的对象,在内存中只有一个对象,内部会有一个引用计数记录有多少个变量引用这个对象。不可变数据类型对应变量的值更改后其内存地址发生变化;可变数据类型对应变量的值更改后其内存地址不会发生改变;

 示例:

 整型
a = 1
print(id(a), type(a))
a = 2
print(id(a),type(a))
# 输出:
#  140707893588816 <class 'int'>
# 140707893588848 <class 'int'>
# 结论:数据发生改变后,变量内存地址发生了改变,整型就是不可变数据类型

# 字符串
b = "Hello"
print(id(b),type(b))
b = "赛兔子"
print(id(b),type(b))
# 结论:数据发生改变后,变量内存地址发生了改变,字符串就是不可变数据类型

# 元组 li = [3, 4] t = (1, 2, li) print(t, id(t), type(t)) li[1] = "hello" print(t,id(t),type(t)) # 输出 # (1, 2, [3, 4]) 2179154624160 <class 'tuple'> # (1, 2, [3, 'hello']) 2179154624160 <class 'tuple'> # 结论:虽然元组数据发生改变,但是内存地址没有发生改变。因为:修改了元组中列表的值,列表是可变数据类型。

序列

习题1:求两个列表(list)交集、差集、并集。

方法1:使用for循环

lia = [1, 2, 3, 4, 5]
lib = [2, 4, 5, 6, 7]
# 交集 两个列表中都有的元素
print([i for i in lia if i in lib])
# 差集 lia中有lib没有
print([j for j in lia if j not in lib])
# 并集 合并lia和lib去重
rest_lia = lia
for k in lib:
    if k not in rest_lia:
        rest_lia.append(k)
print(rest_lia)

输出结果:

[2, 4, 5]
[1, 3]
[1, 2, 3, 4, 5, 6, 7]

方法2:集合(set)

lia = [1, 2, 3, 4, 5]
lib = [2, 4, 5, 6, 7]

# 交集
print(list(set(lia) & set(lib)))
# 差集
print(list(set(lia) - set(lib)))
# 并集
print(list(set(lia)|set(lib)))

输出结果:

[2, 4, 5]
[1, 3]
[1, 2, 3, 4, 5, 6, 7]

习题2:请用简洁方法合并两个list,并且list里面的元素不能重复,最终结果需要排序

方法1:使用set集合

lia = ["a","b","c","d","e","f"]
lib = ["x","y","z","d","e","f"]
rest_list = list(set(lia)|set(lib))
rest_list.sort()
print(rest_list)

输出结果:

['a', 'b', 'c', 'd', 'e', 'f', 'x', 'y', 'z']

方法2:+合并

lia = ["a","b","c","d","e","f"]
lib = ["x","y","z","d","e","f"]

lic = lia + lib
lic.sort()
print(lic)

输出结果:

['a', 'b', 'c', 'd', 'd', 'e', 'e', 'f', 'f', 'x', 'y', 'z']

如何反序迭代序列

Python中常用序列str/list/tuple/dict/set,使用下列方法反序迭代序列元素:

1、使用内置函数reversed(),它的参数可以是str/list/tuple/等序列;

2、利用range()方法获取反向索引,然后从最后元素遍历到最开始元素,实现反序;

3、使用切片[::-1]

4、list列表可以使用内置reverse()方法实现

习题:字符串实现反序

seq = "Hello world"
# 方法1:reversed()
for i in reversed(seq):
    print(i,end="")
print()
# 方法2:切片
print(seq[::-1])
# 方法3:range()
for j in range(len(seq)-1,-1,-1):
    rest = seq[j]
    print(rest,end="")
print()
# 方法4:转换list
seq = list(seq)
seq.reverse()
print("".join(seq))

 排序(正序/反序)

 

Python对序列排序提供了两种方法,一种自带的sort(),另一种内置函数sorted();
sort方法和内置函数sorted()都有key和reverse参数,key参数接收一个函数来实现自定义排序,reverse默认值是False,表示不需要反向排序,如果需要那么将reverse的值设置为True。
sort是列表方法,只能用来对列表进行排序,是在原列表上修改,不会产生新的序列。
sorted()方法可以用于任何可迭代对象(字符串、列表、元组、字典等),它会产生一个新的序列,旧的对象依然存在。

 

 

# 1、list的sort()方法对列表排序
li = [1,5,4,2,6]
li.sort()
print(li)
# 2、内置sorted()方法对列表排序
rest_list = sorted(li)
print(rest_list)
# 3、内置sorted()方法对字符串排序
seq_str = "135426"
rest_str = sorted(seq_str)
print("".join(rest_str))

 

输出结果:

[1, 2, 4, 5, 6]
[1, 2, 4, 5, 6]
123456

 

 

 

 

 

 

 

 

 

 

 

 

 







 


posted on 2024-03-09 19:40  赛兔子  阅读(5)  评论(0编辑  收藏  举报

导航