Python全栈考试(一)

Python全栈考试(一)

1、执行 Python 脚本的两种方式 

    答:

      1)python x.py

      2)../x.py 

2、简述位、字节的关系 

     答:

       1)位:二进制位(bit)是计算机存储信息的基本单位,代表1个二进制数位,其值为0或1.

       2)字节:8个连续的二进制位为一个字节,可以存放1个西文字符的编码.

       3)字:2个字节为一个字.

3、简述 asciiunicodeutf-8gbk 的关系 

   答:

 1) ASCII码使用一个字节编码,所以它的范围基本是只有英文字母、数字和一些特殊    符号 ,只有256个字符。

2) Unicode能够表示全世界所有的字节

3)GBK是只用来编码汉字的,GBK全称《汉字内码扩展规范》,使用双字节编码。

4)UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。英语占1个字节,汉语占3个字节.

 

4、请写出 “李杰” 分别用 utf-8 gbk 编码所占的位数 

  答:

      1)UTF - 8 “李杰” 占6个字节

       2)gbk “李杰” 占4个字节

5Pyhton 单行注释和多行注释分别用什么? 

   答:

       1)单行注释 #注释一行

        2)多行注释 ’’’注释多行’’’

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、如何查看变量在内存中的地址

  答:

   1)id(变量名)

9、执行 Python 程序时,自动生成的 .pyc 文件的作用是什么? 

 1).pyc文件是由.py文件经过编译后生成的字节码文件,其加载速度相对于之前的.py文件有所提高,而且还可以实现源码隐藏,以及一定程度上的反编译。比如,Python3.3编译生成的.pyc文件,Python3.4就别想着去运行

10、写代码
a.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败! 

 1 import getpass
 2 username = input("用户名:")              #getpass模块会报错
 3 
 4 password = getpass.getpass("密码:")
 5 
 6 print(username,password)
 7 
 8 if username == "seven" and password == "123":
 9 
10     print("欢迎",username,"!")
11 
12 else:
13     print("错误的用户名或密码!")

b.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 

 1 import getpass #getpass模块会报错
 2 username = ("seven") #设定一个用户名
 3 password = 123 #设定一个密码
 4 cance = 0 #设置一个计数
 5 while cance < 3: #循环大于3停止
 6     username = input("用户名:")        #提示用户输入
 7     cance+=1 #循环计数
 8     password = getpass.getpass("密码:")  #提示用户输入密码
 9     print(username,password)
10 
11     if username == "seven" and password == "123": #判断用户名和密码是否相等
12 
13         print("欢迎",username,"!") #欢迎用户
14         break
15 
16     else:
17         print("错误的用户名或密码!")

c.实现用户输入用户名和密码,当用户名为 seven alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 

 1 import getpass #getpass模块会报错
 2 cance = 0
 3 while cance < 3: #循环3次
 4     username = input("用户名:")        #输入用户名
 5     cance+=1 #循环计数
 6     password = getpass.getpass("密码:") #输入密码
 7 
 8     print(username,password) #打印用户输入
 9 
10     if username == "seven" or username== "alex": #判断用户名是否相等
11         if password == "123": #判断密码是否相等
12 
13             print("欢迎",username,"!") #登录成功欢迎他
14             break
15 
16     else:
17         print("错误的用户名或密码!") #提示用户是否正确

11、写代码
a. 使用while循环实现输出2-3+4-5+6...+100 的和

 1 i,b = 2,0
 2 while i <= 100:#i取2-100
 3     if i%2 == 0:#判断是偶数
 4         b = b + i #结果加当前的i 0+2
 5         print(b)
 6 
 7     else:#奇数
 8         b = b - i #结果减当前i
 9     i += 1 #判断完自增一
10 print(b) #结果为51


b. 使用for循环和range实现输出 1-2+3-4+5-6...+99 的和

1 a = 0
2 for i in range(1,100):
3     if i%2 == 0: #判断偶数
4 
5         a = a - i #a - 当前的i
6     else:
7         a = a + i #a + 当前的i
8     i += 1 #判断i+1
9 print(a) #结果为50


c. 使用 while 循环实现输出 123457891112 d. 使用 while 循环实现输出 1-100 内的所有奇数

1 a = 1
2 while a < 13:
3     if a == 6 or a == 10:
4         pass #相等就跳过
5     else:
6         print(a)
7     a += 1


e. 使用 while 循环实现输出 1-100 内的所有偶数 

1 a = 1
2 while a <100:
3     if a%2 == 0: #判断偶数
4         pass
5     else:
6         print(a)
7     a += 1 #打印奇数

12、分别书写数字 510327 的二进制表示 

   答:

       1)5   == 00000101 

       2)10 == 00010010

       3)32 == 00100000

       4)7   == 00000111

13、简述对象和 类的关系(可以用手比喻) 

  答:

   1)类就是手掌,对象就是手指纹.类(手)有几个手指,分别是列表,元组,字典等里面的元素就是对象(指纹)

 

14、现有如下两个变量,请简述 n1 n2 是什么关系? 

n1 = 123 

n2 = 123 

答:n1和n2是2个不同的标签相同的ID号,数值指向同一个内存地址.

15、现有如下两个变量,请简述 n1 n2 是什么关系? 

n1 = 123456 

n2 = 123456 

答:n1和n2是2个不同的标签不同的ID号,数值指向同一个内存地址

 

16、现有如下两个变量,请简述 n1 n2 是什么关系? 

n1 = 123456 

n2 = n1

答:n1是123456的标签,n2是贴在n1上的标签.两者代表的都是123456

17、如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示? 

 1 n1 = 5

print(n1.bit_length()) 

18、布尔值分别有什么? 

 答:True 真  1 and False 假  0

19、阅读代码,请写出执行结果 

a = "alex"
b = a.capitalize()

print(a)
print(b) 

请写出输出结果: a = alex b = Alex

20、写代码,有如下变量,请按照要求实现每个功能 name = " aleX" 

name = " aleX"

 

a. 移除 name 变量对应的值两边的空格,并输入移除有的内容

 1 name = " aleX"

2 print(name.strip()) 

b. 判断 name 变量对应的值是否以 "al" 开头,并输出结果

 1 name = " aleX"

2 print(name.startswith("al")) 

c. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果

 1 name = " aleX"

2 print(name.endswith("X")) 

d. 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果

1 name = " aleX"
2 
3 name = name[:2]+"p"+name[-2:]
4 
5 print(name)

e. 将 name 变量对应的值根据 “l” 分割,并输出结果。

1 name = " aleX"
2 
3 name1 = name[:2]
4 
5 name2 = name[-2:]
6 
7 print(name1,name2)

f. 请问,上一题 e 分割之后得到值是什么类型?

 

答:字符串

 

g. 将 name 变量对应的值变大写,并输出结果

 1 name = " aleX"

2 print(name.upper()) 

h. 将 name 变量对应的值变小写,并输出结果

 1 name = " aleX"

2 print(name.lower()) 

i. 请输出 name 变量对应的值的第 2 个字符?

 1 name = " aleX"

2 print(name[1:2]) 

j. 请输出 name 变量对应的值的前 3 个字符?

 1 name = " aleX"

2 print(name[:3]) 

k. 请输出 name 变量对应的值的后 2 个字符?

 1 name = " aleX"

2 print(name[-2:]) 

l. 请输出 name 变量对应的值中 “e” 所在索引位置?

1 name = " aleX"
2 
3 for i,v in enumerate(name):
4 
5     if v == "e":
6 
7         print("e的索引是:%s"%i)

21、字符串是否可迭代?如可以请使用 for 循环每一个元素?

 

1 name = "xiaoming"
2 
3 for i in name:
4 
5     print(i)

 22、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain'] 22、写代码,有如下列表,按照要求实现每一个功能 

1 li = ['alex', 'eric', 'rain']
2 
3 b = li[0]+”_"+li[1]+"_"+li[2]
4 
5 print(b)

a. 计算列表长度并输出

 1 print(len(li)) 
b. 列表中追加元素 “seven”,并输出添加后的列表

1 li = ['alex', 'eric', 'rain']
2 
3 li.append("seven")
4 
5 print(li)

c. 请在列表的第 1 个位置插入元素 “Tony”,并输出添加后的列表

1 li = ['alex', 'eric', 'rain', 'seven']
2 
3 li.insert(0,"Tony")
4 
5 print(li)

d. 请修改列表第 2 个位置的元素为 “Kelly”,并输出修改后的列表

1 li = ['Tony', 'alex', 'eric', 'rain', 'seven']
2 
3 li[1] = "kelly"
4 
5 print(li)

 


e. 请删除列表中的元素 “eric”,并输出修改后的列表

1 li = ['Tony', 'kelly', 'eric', 'rain', 'seven']
2 
3 li.remove('eric')
4 
5 print(li)

 


f. 请删除列表中的第 2 个元素,并输出删除的元素的值和删除元素后的列表

1 li = ['Tony', 'kelly', 'eric', 'rain', 'seven']
2 
3 print(li.pop(1))
4 
5 print(li)

g. 请删除列表中的第 3 个元素,并输出删除元素后的列表

1 li = ['Tony', 'eric', 'rain', 'seven']
2 
3 li.pop(2)
4 
5 print(li)

 


h. 请删除列表中的第 2 4 个元素, 并输出删除元素后的列表

1 li = ['Tony', 'eric', ‘rain’] #列表元素不够了
2 
3 li.pop(2)
4 
5 print(li)

i. 请将列表所有的元素反转,并输出反转后的列表 

1 li = ['Tony', 'eric']
2 
3 b=list(reversed(li))
4 
5 print (b)

 

j. 请使用 forlenrange 输出列表的索引

1 li = ['eric', 'Tony']
2 
3 for i,name in enumerate(li,100):
4 
5     print(i,name)

k. 请使用 enumrate 输出列表元素和序号(序号从 100 开始) l. 请使用 for 循环输出列表的所有元素 

1 li = ['eric', 'Tony']
2 
3 for i,name in enumerate(li,100):
4 
5     print(i,name)

23、写代码,有如下列表,请按照功能要求实现每一个功能 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446] a. 请输出 “Kelly

1 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
2 
3 name = str(li[2][1][1])
4 
5 print(name.capitalize())


b. 请使用索引找到 'all' 元素并将其修改为 “ALL” 

1 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
2 
3 name = str(li[2][2])
4 
5 print(name.upper())

24、写代码,有如下元组,按照要求实现每一个功能 tu = ('alex', 'eric', 'rain')
a. 计算元组长度并输出

1 tu = ('alex', 'eric', 'rain')
2 
3 print(len(tu))

b. 获取元组的第 2 个元素,并输出

1 tu = ('alex', 'eric', 'rain')
2 
3 print(tu[1]) 

 

c. 获取元组的第 1-2 个元素,并输出

1 tu = ('alex', 'eric', 'rain')
2 
3 print(tu[:2]) 

d. 请使用 for 输出元组的元素

1 tu = ('alex', 'eric', 'rain')
2 
3 for i in tu:
4 
5     print(i)

e. 请使用 forlenrange 输出元组的索引

1 tu = ('alex', 'eric', 'rain')
2 
3 for i in range(len(tu)):
4 
5     print(i)


f. 请使用 enumrate 输出元祖元素和序号(序号从 10 开始) 

1 tu = ('alex', 'eric', 'rain')
2 
3 for i,name in enumerate(tu,10):
4 
5     print(i,name)

25、有如下变量,请实现要求的功能

tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44]) 

  1. 讲述元祖的特性     答:不可修改
  2. 请问 tu 变量中的第一个元素 “alex” 是否可被修改?     答:不可以修改
  3. c. 请问 tu 变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven
  4. 1.可以修改
  5. tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
  6. b = tu[1][2]["k2"] = [].append("Seven")
  7. print(tu)
  8. d. 请问 tu 变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven” 

26、字典
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} 

a. 请循环输出所有的 key b. 请循环输出所有的 value 

c. 请循环输出所有的 key value
d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
e. 请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典 f. 请在 k3 对应的值中追加一个元素 44,输出修改后的字典
g. 请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典 

27、转换
a. 将字符串 s = "alex" 转换成列表
b. 将字符串 s = "alex" 转换成元祖
b. 将列表 li = ["alex", "seven"] 转换成元组
c. 将元祖 tu = ('Alex', "seven") 转换成列表
d. 将列表 li = ["alex", "seven"] 转换成字典且字典的 key 按照 10 开始向后递增 

27、转码 

n = "老男孩"
a. 将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8 编码字符串,再输出 a. 将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出 

28、求 1-100 内的所有数的和 

1 b = 0
2 for i in range(0,101):
3     b = b + i
4 print(b)
5 结果:5050

29、元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个 key 中,将小于 66 的值保存至第二个 key 的值中。 

即: {'k1': 大于 66 的所有值, 'k2': 小于 66 的所有值

 1 li = [11,22,33,44,55,66,77,88,99]
 2 l1 = []
 3 l2 = []
 4 for i in li:
 5     if i >66:
 6         l1.append(i)
 7     else:
 8         l2.append(i)
 9 dict = {"k1":l1,"k2":l2}
10 print(dict)

30、购物车 功能要求: 

要求用户输入总资产,例如:2000 显示商品列表,让用户根据序号选择商品,加入购物车 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。 

goods = [
{"name": "电脑", "price": 1999}, 

{"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, 

代码如下:

 1 商品列表 = [
 2 
 3 {"name": "电脑", "price": 1999},
 4 
 5 {"name": "鼠标", "price": 10},
 6 
 7 {"name": "游艇", "price": 20},
 8 
 9 {"name": "美女", "price": 998},
10 
11 ]
12 
13 总金额 = int(input("请输入金额:"))
14 
15 while True:#用于循环购买
16 
17     for i,商品 in enumerate(商品列表, 1):#循环商品信息
18 
19         print(i, 商品列表[i - 1]["name"], 商品列表[i - 1]["price"])#打印列表
20 
21     余额 = int(input("请选择商品:"))#输入商品序号
22 
23     if 余额 >0 and 余额 <=len(商品列表):#判断输入是否在列表中
24 
25         if int(商品列表[余额-1]["price"]) <= 总金额:#余额大于商品金额
26 
27             总金额 = 总金额 - int(商品列表
28 
29                                     [余额 - 1]["price"])#减商品金额
30 
31             print("购买 %s 成功,余额为 %s" % (商品列表[余额 - 1]["name"]
32 
33                                             , 总金额))#打印成功信息
34 
35         else:
36 
37             print("余额不足,请及时充值.再见!")
38 
39             break #退出
40 
41     else:
42 
43         print("无此商品!")
44 
45         continue
原文地址:https://www.cnblogs.com/lixiaomingpython/p/6648968.html