首页 > 代码库 > Python全栈考试(一)
Python全栈考试(一)
1、执行 Python 脚本的两种方式
你也可以用PyCharm
2、简述位、字节的关系
数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B)
3、简述 ascii、unicode、utf--‐8、gbk 的关系
ASCII码最多只能表示 255 个符号
unicode最多只能表示65536个字符
utf--‐8是对Unicode编码的压缩和优化:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
gbk是汉字内码扩展规范
4、请写出 “李杰” 分别用 utf--8 和 gbk 编码所占的位数
用utf-8占48位
用gbk占32位
5、Pyhton 单行注释和多行注释分别用什么?
python中单行注释采用 # 开头
python 中多行注释使用三个单引号(‘‘‘)或三个双引号(""")
6、声明变量注意事项有那些?
(1.) 变量名只能是 字母、数字或下划线的任意组合
(2.)变量名的第一个字符不能是数字
(3.)以下关键字不能声明为变量名
[‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]
8、如何查看变量在内存中的地址?
id(变量名)
9、执行 Python 程序时,自动生成的 .pyc 文件的作用是什么?
运行Python程序,PyCodeObject编译保存文件,.pyc文件是PyCodeObject永久性保存文件
10、
写代码
a.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!
name = input("name:")#输入账号
passwd = input("passwd:")#输入密码
if name == "seven" and passwd == "123":#判断用户名和密码是否相等
print("登陆成功")
else:
print("用户名或密码不正确,请重新输入!")
教训: python中break,continue只能用于for,while这样的循环中,不然会报错。
b.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
for i in range(3):
name = input("name:")#输入账号
passwd = input("passwd:")#输入密码
if name == "seven" and passwd == "123":#判断用户名和密码是否相等
print("登陆成功")
else:
print("用户名或密码不正确,请重新输入!")
c.实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
for i in range(3):
name = input("name:")#输入账号
passwd = input("passwd:")#输入密码
if name == "seven" or name == "alex" and passwd == "123":#判断用户名和密码是否相等
print("登陆成功")
else:
print("用户名或密码不正确,请重新输入!")
11、写代码
a. 使用 while 循环实现输出 2 -‐ 3 + 4 ‐ 5 + 6 ... + 100 的和
i = 2;
j=0;
while i <= 100:
if(i%2 == 0):
j = j + i;
else:
j = j - i;
i+=1;
print(j);
b. 使用 for 循环和 range 实现输出 1 ‐ 2 + 3 ‐ 4 + 5 -‐ 6 ... + 99 的和
b = 0
for i in range(1,100):
if i%2 == 0:
b = b - i
else:
b = b +i
i +=1
print(b)
c. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12
i=0;
while i<12:
i+=1;
if(i == 6 or i == 10 ):
print("\t",end=" ");
continue;
print(i,",",end="");
d. 使用 while 循环实现输出 1‐100 内的所有奇数
i=1
while i <=100:
if(i%2 !=0 ):
print(i)
i+=1
e. 使用 while 循环实现输出 1‐100 内的所有偶数
i=1
while i <=100:
if(i%2 ==0 ):
print(i)
i+=1
12、分别书写数字 5,10,32,7 的二进制表示
5:0000 0101 10:0000 1010 32:0010 0000 7:0000 0111
13、简述对象和 类的关系(可用比喻的手法)
类就是文件夹,对象就是文件夹的文件 类有列表,元组,字典等 里面的元素就是对象
14、现有如下两个变量,请简述 n1 和 n2 是什么关系?
n1 = 123
n2 = 123
内存地址一样
python内部的优化:
-
5
到
157
之间的赋值变量都是相同的地址,超过这个限制内存地址不同。
15、现有如下两个变量,请简述 n1 和 n2 是什么关系?
n1 = 123456
n2 = 123456
内存地址不一样
16、现有如下两个变量,请简述 n1 和 n2 是什么关系?
n1 = 123456
n2 = n1
内存地址一样
17、如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示?
print(int(5).bit_length()); #3个
18、布尔值分别有什么?
19、阅读代码,请写出执行结果
a = "alex"
b = a.capitalize()
print(a)
print(b)
请写出输出结果: alex Alex
20、写代码,有如下变量,请按照要求实现每个功能
name = " aleX"
a. 移除 name 变量对应的值两边的空格,并输入移除有的内容
name.strip()
b. 判断 name 变量对应的值是否以 "al" 开头,并输出结果
print(name.startswith("al")) #False
c. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
print(name.endswith("X")) #True
d. 将 name 变量对应的值中的 “l” 替换为 “p” ,并输出结果
print(name.replace("l","p")) # apeX
e. 将 name 变量对应的值根据 “l” 分割,并输出结果。
print(name.split("l")) #[‘ a‘, ‘eX‘]
f. 请问,上一题 e 分割之后得到值是什么类型?
列表
g. 将 name 变量对应的值变大写,并输出结果
print(name.upper()) #ALEX
h. 将 name 变量对应的值变小写,并输出结果
print(name.lower()) #alex
i. 请输出 name 变量对应的值的第 2 个字符?
print(name[1]) #a
j. 请输出 name 变量对应的值的前 3 个字符?
print(name[0:3]) #al
k. 请输出 name 变量对应的值的后 2 个字符?
print(name[-2:]) #eX
l. 请输出 name 变量对应的值中 “e” 所在索引位置?
print(name.find("e")) #3
21、字符串是否可迭代?如可以请使用 for 循环每一个元素?
name = "zhangsunan"
for i in name:
print(i)
22、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = [‘alex‘, ‘eric‘, ‘rain‘]
li2= li[0]+"_"+li[1]+"_"+li[2]
22、写代码,有如下列表,按照要求实现每一个功能
li = [‘alex‘, ‘eric‘, ‘rain‘]
a. 计算列表长度并输出
print(len(li)) #3
b. 列表中追加元素 “seven” ,并输出添加后的列表
li.append("seven")
#[‘alex‘, ‘eric‘, ‘rain‘, ‘seven‘]
c. 请在列表的第 1 个位置插入元素 “Tony” ,并输出添加后的列表
li.insert(0,"Tony")
#[‘Tony‘, ‘alex‘, ‘eric‘, ‘rain‘]
d. 请修改列表第 2 个位置的元素为 “Kelly” ,并输出修改后的列表
li[1]="Kelly"
#[‘alex‘, ‘Kelly‘, ‘rain‘]
e. 请删除列表中的元素 “eric” ,并输出修改后的列表
li = [‘alex‘, ‘eric‘, ‘rain‘]
li.remove(‘eric‘)
print(li)
#[‘alex‘, ‘rain‘]
f. 请删除列表中的第 2 个元素,并输出删除的元素的值和删除元素后的列表
print(li.pop(1))
#eric
#[‘alex‘, ‘rain‘]
g. 请删除列表中的第 3 个元素,并输出删除元素后的列表
li.pop(2)
#[‘alex‘, ‘eric‘]
h. 请删除列表中的第 2 至 4 个元素,并输出删除元素后的列表
del li[1:3]
#[‘alex‘, ‘nimeide‘]
i. 请将列表所有的元素反转,并输出反转后的列表
li.reverse() #[‘nimeide‘, ‘rain‘, ‘eric‘, ‘alex‘]
j. 请使用 for、len、range 输出列表的索引
for i in range(len(li)): print(i,li[i]); #0 alex #1 eric #2 rain #3 nimeide
k. 请使用 enumrate 输出列表元素和序号(序号从 100 开始)
for i, j in enumerate(li): print(i+100, j) #100 alex #101 eric #102 rain #103 nimeide
l. 请使用 for 循环输出列表的所有元素
for i in range(len(li)): print(li[i]);
23、写代码,有如下列表,请按照功能要求实现每一个功能
li = ["hello", ‘seven‘, ["mon", ["h", "kelly"], ‘all‘], 123, 446]
a. 请输出 “Kelly”
print(li[2][1][1])
b. 请使用索引找到 ‘all‘ 元素并将其修改为 “ALL”
print(li[2][2].upper())
24、写代码,有如下元组,按照要求实现每一个功能tu = (‘alex‘, ‘eric‘, ‘rain‘)
a. 计算元组长度并输出
print(len(tu)) #3
b. 获取元组的第 2 个元素,并输出
print(tu[1])
c. 获取元组的第 1-2 个元素,并输出
print(tu[0:2])
d. 请使用 for 输出元组的元素
for i in range(len(tu)): print(tu[i])
e. 请使用 for、len、range 输出元组的索引
for i in range(len(tu)): print(i,tu[i])
f. 请使用 enumrate 输出元祖元素和序号(序号从 10 开始)
for i,j in enumerate(tu): print(i+10,j)
25、有如下变量,请实现要求的功能 tu = ("alex", [11, 22, {"k1": ‘v1‘, "k2": ["age", "name"], "k3": (11,22,33)}, 44])
a. 讲述元祖的特性
不可修改,所以又叫不可变列表
b. 请问 tu 变量中的第一个元素 “alex” 是否可被修改?
不可以修改
c. 请问 tu 变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
可以修改,是列表
tu[1][2]["k1"] = "seven"
d. 请问 tu 变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
tu[1][2]["k3"]=list(tu[1][2]["k3"]) tu[1][2]["k3"].append("Seven") tu[1][2]["k3"]=tuple(tu[1][2]["k3"])print(tu)
26、字典 dic = {‘k1‘: "v1", "k2": "v2", "k3": [11,22,33]}
a. 请循环输出所有的 key
for i in dic.keys(): print(i)
b. 请循环输出所有的 value
for i in dic.values(): print(i)
c. 请循环输出所有的 key 和 value
for i,j in dic.items(): print(i,j)
d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
dic["k4"] = "v4" #{‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘, ‘k3‘: [11, 22, 33], ‘k4‘: ‘v4‘}
e. 请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典
dic["k1"] = "alex" #{‘k1‘: ‘alex‘, ‘k3‘: [11, 22, 33], ‘k2‘: ‘v2‘}
f. 请在 k3 对应的值中追加一个元素 44,输出修改后的字典
dic["k3"].append(44)
#{‘k1‘: ‘v1‘, ‘k3‘: [11, 22, 33, 44], ‘k2‘: ‘v2‘}
g. 请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典
dic["k3"].insert(0,18) #{‘k3‘: [‘18‘, 11, 22, 33], ‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘}
27、转换
a. 将字符串 s = "alex" 转换成列表
print(list(s))
b. 将字符串 s = "alex" 转换成元祖
print(tuple(s))
c. 将列表 li = ["alex", "seven"] 转换成元组
print(tuple(li))
d.将元祖 tu = (‘Alex‘, "seven") 转换成列表
print(list(tu))
e.将列表 li = ["alex", "seven"] 转换成字典且字典的 key 按照 10 开始向后递增
li2 = [10,11] print(dict(zip(li2,li)))
28、转码
n = "老男孩"
a. 将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8 编码字符串,再输出
sstr=n.encode("UTF-8") sstr.decode("UTF-8") print(sstr)
b. 将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出
sstr=n.encode("GBK") print(sstr.decode("GBK"))
Python全栈考试(一)