Python全栈问答小技巧_1
2017-02-13 14:13
351 查看
Python全栈测试题
作者:尹正杰
声明:答案如有偏差,欢迎指正!欢迎加入高级运维工程师之路:598432640
本文答题用的Python版本是:Python 3.5.2,请知晓!
1、执行 Python 脚本的两种方式
A.在命令行中执行
执行方式:python 文件名称.py #这里要注意的是你是否有使用python命令的权限。( 举例子:python test.py 或者./test.py)
B.在python解释器中执行
这个需要我们在命令行中敲击"python",然后会进入python解释器,我们可以通过import或者form ... import的形式导入python脚本,并调用。
2、简述位、字节的关系
位:又称“bit”,是二进制位,它是计算机存储信息的基本单位(因为cpu只认识“0”和”1”),代表1个二进制数位,其值为0或1.
字节:8个连续的二进制位被当做一个字节,可以存放一个西文字符的编码。
3、简述 ascii、unicode、utf-8、gbk 的关系
ascii编码:它使用一个字节编码(8个连续的二进制位被当作一个字节),所以它的范围基本是只有英文字母,数字和一些特殊符号,只有256个字符;
unicode编码:它被称为“万国码”,也就是说它包含了任何国家的编码,(比如“utf-8”是无法直接转成“gbk”的,但是我们可以先将"utf-8"先转成unicode,然后再转成“gbk”);
utf-8编码:它是对Unicode编码的压缩和优化,用了1-6个字节编码的Unicode字节(他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存{中国的汉字就是用3个字节表示一个汉字的哟}...),用在网页上可以同一页面显示中文简体繁体及其它语言(如:英文,日文,韩文等等);
gbk编码:它是只用来编码汉字的,GBK全称<<汉字内码扩展规范>>,使用双字节编码;
4、请写出 “尹正杰” 分别用 utf-‐8 和 gbk 编码所占的位数
5、Pyhton 单行注释和多行注释分别用什么?
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']
7.如何查看变量在内存中的地址?
8.执行 Python 程序时,自动生成的 .pyc 文件的作用是什么?
在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。
我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看:
1>.当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中;
2>.当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程;
3>.当然Python解释器会自动对比pyc文件和python程序的修改时间,如果时间一致就直接加载pyc文件,否则还是会重新加载程序,变异后生成PyCodeObject对象,然后生成新的pyc文件哟!
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
9.小试牛刀:
a.实现用户输入用户名和密码,当用户名为 “yinzhengjie”且 密码为 “123”时,显示登陆成功,否则登陆失败!
b.实现用户输入用户名和密码,当用户名为 “yinzhengjie”且 密码为 “123”时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 :
c.实现用户输入用户名和密码,当用户名为 “yinzhengjie” 或 “alex” 且密码为 “123” 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
10.while与for循环的练习
a. 使用 while 循环实现输出 2 - 3 + 4 ‐ 5 + ... + 100 的和:
b. 使用 for 循环和 range 实现输出 1 ‐ 2 + 3 ‐ 4 + 5 ‐ 6 ... + 99 的和 :
c. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12 :
d. 使用 while 循环实现输出 1-‐100 内的所有奇数:
e. 使用 while 循环实现输出 1-‐100 内的所有偶数:
11.分别书写数字 5,10,32,7 的二进制表示 :
12.现有如下两个变量,请简述list_1,list_2,list_3的区别:
13.现有如下两个变量,请简述 n1 和 n2 是什么关系?
14.现有如下两个变量,请简述 n1 和 n2 是什么关系?
15.现有如下两个变量,请简述 n1 和 n2 是什么关系?
16.如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示?
17.布尔值分别有什么?
真True(非零为真)
假False (为零)
18.阅读代码,请写出执行结果 :
19.字符串方法练习,请按照要求实现每个功能 :
20.字符串是否可迭代?如可以请使用 for 循环每一个元素?
答案是肯定的,测试结果如下:
21.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'yinzhengjie', 'rain']
22.Python2 中的 range 和 Python3 中的 range 的区别?
python2中range一旦生成 就会在内存里将所有数字显示;
python3中每循环一次释放当次数字;
23.列表练习,有如下列表,按照要求实现每一个功能 :
24.列表取值练习,请按照功能要求实现每一个功能 :
25.元组练习,按照要求实现每一个功能 :
26.元组小试牛刀练习,有如下变量,请实现要求的功能 :
27.字典练习
28.数据类型互相转换
29:字符串转码
30.求 1-‐100 内的所有数的和
31.元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个 key 中,将小于 66 的值保存至第二个 key 的值中。
32.自定义购物车小程序:
作者:尹正杰
声明:答案如有偏差,欢迎指正!欢迎加入高级运维工程师之路:598432640
本文答题用的Python版本是:Python 3.5.2,请知晓!
1、执行 Python 脚本的两种方式
A.在命令行中执行
执行方式:python 文件名称.py #这里要注意的是你是否有使用python命令的权限。( 举例子:python test.py 或者./test.py)
B.在python解释器中执行
这个需要我们在命令行中敲击"python",然后会进入python解释器,我们可以通过import或者form ... import的形式导入python脚本,并调用。
2、简述位、字节的关系
位:又称“bit”,是二进制位,它是计算机存储信息的基本单位(因为cpu只认识“0”和”1”),代表1个二进制数位,其值为0或1.
字节:8个连续的二进制位被当做一个字节,可以存放一个西文字符的编码。
3、简述 ascii、unicode、utf-8、gbk 的关系
ascii编码:它使用一个字节编码(8个连续的二进制位被当作一个字节),所以它的范围基本是只有英文字母,数字和一些特殊符号,只有256个字符;
unicode编码:它被称为“万国码”,也就是说它包含了任何国家的编码,(比如“utf-8”是无法直接转成“gbk”的,但是我们可以先将"utf-8"先转成unicode,然后再转成“gbk”);
utf-8编码:它是对Unicode编码的压缩和优化,用了1-6个字节编码的Unicode字节(他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存{中国的汉字就是用3个字节表示一个汉字的哟}...),用在网页上可以同一页面显示中文简体繁体及其它语言(如:英文,日文,韩文等等);
gbk编码:它是只用来编码汉字的,GBK全称<<汉字内码扩展规范>>,使用双字节编码;
4、请写出 “尹正杰” 分别用 utf-‐8 和 gbk 编码所占的位数
我执行的环境是python3.6执行的以下代码: name = "尹正杰" #定义一个变量 gbk = name.encode("gbk") #将他转码成“gbk” utf_8 = name.encode("utf-8") #将他转码成“utf-8” print(gbk) print(utf_8) 打印结果如下: b'\xd2\xfc\xd5\xfd\xbd\xdc' #这就是gbk用2个字节存数据的证据。 b'\xe5\xb0\xb9\xe6\xad\xa3\xe6\x9d\xb0' #这就是utf-8用3个字节存数据的证据哟
5、Pyhton 单行注释和多行注释分别用什么?
1 #name = "尹正杰" #单行注释:用“#”号注释 2 3 #多行注释:用单个连续的三个单引号包裹其中的内容均不生效。 4 '''gbk = name.encode("gbk") 5 utf_8 = name.encode("utf-8") 6 print(gbk) 7 print(utf_8) 8 ''' 9 print("尹正杰") 10 11 代码执行结果: 12 尹正杰 #说明上面被单行或者多行注释的都没有生效!
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']
7.如何查看变量在内存中的地址?
1 #我们可以先定义一个变量,然后用python的内置函数来帮我们返回这个变量的内存地址。 2 name = "尹正杰" 3 print(id(name)) 4 5 代码执行结果: 6 13838816
8.执行 Python 程序时,自动生成的 .pyc 文件的作用是什么?
在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。
我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看:
1>.当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中;
2>.当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程;
3>.当然Python解释器会自动对比pyc文件和python程序的修改时间,如果时间一致就直接加载pyc文件,否则还是会重新加载程序,变异后生成PyCodeObject对象,然后生成新的pyc文件哟!
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
9.小试牛刀:
a.实现用户输入用户名和密码,当用户名为 “yinzhengjie”且 密码为 “123”时,显示登陆成功,否则登陆失败!
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 username = input("Please enter your username:>>>") 7 password = input("Please enter your password:>>>") 8 if username == "yinzhengjie" and password == "123": 9 print("登陆成功") 10 else: 11 print("登陆失败") 12 13 #成功测试结果如下: 14 Please enter your username:>>>yinzhengjie 15 Please enter your password:>>>123 16 登陆成功 17 #失败测试结果如下: 18 Please enter your username:>>>alex 19 Please enter your password:>>>123 20 登陆失败
b.实现用户输入用户名和密码,当用户名为 “yinzhengjie”且 密码为 “123”时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 :
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com counts = 0 #定义一个计数器 while counts < 3: username = input("Please enter your username:>>>") password = input("Please enter your password:>>>") if username == "yinzhengjie" and password == "123": print("登陆成功") break else: print("登陆失败") counts += 1 #当用户输入一次用户名称或者密码的时候让这个计数器自加“1” #验证成功测试结果: Please enter your username:>>>yinzhengjie Please enter your password:>>>123 登陆成功 Process finished with exit code 0 #验证失败测试结果 Please enter your username:>>>yinzheng Please enter your password:>>>1231 登陆失败 Please enter your username:>>>jie Please enter your password:>>>3213 登陆失败 Please enter your username:>>>yinzhengjie Please enter your password:>>>jie 登陆失败 Process finished with exit code 0
c.实现用户输入用户名和密码,当用户名为 “yinzhengjie” 或 “alex” 且密码为 “123” 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com counts = 0 #定义一个计数器 while counts < 3: username = input("Please enter your username:>>>") password = input("Please enter your password:>>>") if username == "yinzhengjie"or username == "alex" and password == "123": print("登陆成功") break else: print("登陆失败") counts += 1 #当用户输入一次用户名称或者密码的时候让这个计数器自加“1”
10.while与for循环的练习
a. 使用 while 循环实现输出 2 - 3 + 4 ‐ 5 + ... + 100 的和:
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 total = 0 #定义一个存储总和的变量 7 i = 2 #定义起始值 8 while i <= 100: 9 if i % 2 == 0 : #判断当前的循环的数字是否是偶数 10 total += i 11 else: 12 total -= i 13 i += 1 14 print(total)
b. 使用 for 循环和 range 实现输出 1 ‐ 2 + 3 ‐ 4 + 5 ‐ 6 ... + 99 的和 :
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 total = 0 7 for i in range(1,100): #表示循环的起始值是1,结束值是99。 8 if i % 2 == 0 : 9 total -= i 10 else: 11 total += i 12 i += 1 13 print(total)
c. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12 :
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 count = 1 7 num_list = [] #定义一个空列表,用来存储我需要存储的数字 8 while count <= 12: 9 if count == 6 or count == 10: 10 count += 1 11 continue 12 num_list.append(count) #将符合的数字追加到列表中 13 count += 1 14 str_num = str(num_list).replace("[","").replace("]","") #将列表变成字符串处理,去掉两边的空格 15 print(str_num)
d. 使用 while 循环实现输出 1-‐100 内的所有奇数:
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 start_num = 1 7 while start_num <= 100: 8 if start_num % 2 != 0: 9 print(start_num) 10 start_num += 1
e. 使用 while 循环实现输出 1-‐100 内的所有偶数:
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 start_num = 1 7 while start_num <= 100: 8 if start_num % 2 == 0: 9 print(start_num) 10 start_num += 1
11.分别书写数字 5,10,32,7 的二进制表示 :
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com '''十进制数字“5”用2进制表示方式: 5>>>对应二进制:00000101 10>>>对应二进制:00001010 32>>>对应二进制:00100000 7>>>对应二进制:00000111 '''
12.现有如下两个变量,请简述list_1,list_2,list_3的区别:
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com list_1 = ["尹正杰","吴东航","alex"] #定义一个列表 list_2 = ["尹正杰","吴东航","alex"] #定义一个列表 list_3 = list_1 #拷贝一个列表 def print_list(): print(list_1) print(list_2) print(list_3) print_list() list_1.append("廖雪峰") #对列表进行修改 print_list() #执行代码结果: ['尹正杰', '吴东航', 'alex'] ['尹正杰', '吴东航', 'alex'] ['尹正杰', '吴东航', 'alex'] ['尹正杰', '吴东航', 'alex', '廖雪峰'] ['尹正杰', '吴东航', 'alex'] ['尹正杰', '吴东航', 'alex', '廖雪峰'] #根据执行结果反推原理: 1>.list_1和list_2是单独开辟出来的2块内存; 2>.而list_3是浅拷贝list_1的执行结果,也就是说list_1和list_3同时指向了同一快内存地址!所以当我们更改list_1的内容时,list_3也会跟着变化!
13.现有如下两个变量,请简述 n1 和 n2 是什么关系?
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com n1 =123 n2 =123 print(id(n1)) #打印对应变量的内存地址 print(id(n2)) #执行脚本结果如下: 492527792 492527792 #根据结果反推原理: 从结果我们可以看出来,n1和n2这2个变量都指向了同一块内存地址!这是python解释器内部优化的机制。
14.现有如下两个变量,请简述 n1 和 n2 是什么关系?
C:\Users\yzj>python Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> n1 = 123456 >>> n2 = 123456 >>> id(n1) 10059344 >>> id(n2) 10059392 >>> #从结果反推理论: 我们发现当我们将数字变大之后,发现n1和n2的内存地址发生了变化,这是为什么呢?经查阅资料发现python内部的优化机智只适用“-5~256”之间,在这以外的数字会重新开辟内存空间哟!
15.现有如下两个变量,请简述 n1 和 n2 是什么关系?
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com n1 =12345678786 n2 = n1 print(id(n1)) #打印对应变量的内存地址 print(id(n2)) #指向脚本测试结果如下: 28531120 28531120 #根据结果反推理论 n1和n2指向同一个内存地址,说明赋值是赋给一个索引,内存地址也就一样
16.如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示?
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com n1 = 5 binary_length = n1.bit_length() #使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示 print(binary_length) #脚本执行结果: 3
17.布尔值分别有什么?
真True(非零为真)
假False (为零)
18.阅读代码,请写出执行结果 :
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com a = "yinzhengjie" b = a.capitalize() #首字母大写 print(a) print(b) #代码执行结果如下: yinzhengjie Yinzhengjie
19.字符串方法练习,请按照要求实现每个功能 :
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 name = " yinzhengJie" 7 #a.移除"name"变量对应的值两边的空格,并输入移除的的内容 8 print(name.strip()) 9 #b.判断"name"变量对应的值是否以"al"开头,并输出结果 10 print(name.startswith("al")) 11 #c.判断"name"变量对应的值是否以"Jie"结尾,并输出结果 12 print(name.endswith("Jie")) 13 #d.将"name"变量对应的值中的“z”替换为“Z”,并输出结果 14 print(name.translate(str.maketrans("z","Z"))) 15 #e.将"name"变量对应的值根据“J”分割,并输出结果。 16 print(name.split("J")) 17 #f.请问,上一题以“J”分割之后得到值是什么类型? 18 print(type(name.split("J"))) #答案是列表 19 #g.将“name”变量对应的值变大写,并输出结果 20 print(name.swapcase()) #可以将字符串大写变小写,将小写变大写 21 #h.将“name”变量对应的值变小写,并输出结果 22 print(name.lower()) #将大写变成小写 23 #i.请输出"name"变量对应的值的第 9 个字符? 24 print(name[10]) #一个字符串也包含空格哟 25 #j.请输出"name"变量对应的值的前 10 个字符? 26 print(name[:11]) 27 #k.请输出"name"变量对应的值的后 2 个字符? 28 print(name[-2:len(name)]) 29 #l.请输出"name"变量对应的值中“e”所在索引位置? 30 print(name.index("e")) ##查找出列表中的某个值所对应的索引ID,从左往有返回第一个匹配到的索引 31 #l.请输出"name"变量对应的值中“e”出现的次数 32 print(name.count("e")) 33 34 35 36 #测试结果如下: 37 yinzhengJie 38 False 39 True 40 yinZhengJie 41 [' yinzheng', 'ie'] 42 <class 'list'> 43 YINZHENGjIE 44 yinzhengjie 45 n 46 yinzhen 47 ie 48 9 49 2
20.字符串是否可迭代?如可以请使用 for 循环每一个元素?
答案是肯定的,测试结果如下:
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 name = " yinzhengJie" 7 for i in name: 8 print(i) 9 10 11 #脚本执行结果如下: 12 13 14 15 16 y 17 i 18 n 19 z 20 h 21 e 22 n 23 g 24 J 25 i 26 e
21.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'yinzhengjie', 'rain']
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com li = ["alex","yinzhengjie","rain"] print("_".join(li)) #将一个列表的中的每一个元素用前面的“—”隔开,形成一个字符串。 #执行代码结果如下: alex_yinzhengjie_rain
22.Python2 中的 range 和 Python3 中的 range 的区别?
python2中range一旦生成 就会在内存里将所有数字显示;
python3中每循环一次释放当次数字;
23.列表练习,有如下列表,按照要求实现每一个功能 :
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 li = ["alex","yinzhengjie","rain","尹正杰","廖雪峰","吴三江","孝杰","吴东航"] 7 #a.计算列表长度并输出 8 print(len(li)) 9 #b.列表中追加元素“seven”,并输出添加后的列表 10 li.append("server") 11 print(li) 12 #c.请在列表的第"1"个位置插入元素“Tony”,并输出添加后的列表 13 li.insert(0,"Tony") 14 print(li) 15 #d.请修改列表第"2"个位置的元素为“Kelly”,并输出修改后的列表 16 li[1] = "kelly" 17 print(li) 18 #e.请删除列表中的元素 “server”,并输出修改后的列表 19 li.remove("server") 20 print(li) 21 #f.请删除列表中的第"2"个元素,并输出删除的元素的值和删除元素后的列表 22 print(li.pop(1)) 23 print(li) 24 #g.请删除列表中的第"3"个元素,并输出删除元素后的列表 25 del li[2] 26 print(li) 27 #h.请删除列表中的第2至4个元素,并输出删除元素后的列表 28 del li[2:5] 29 print(li) 30 #i.请将列表所有的元素反转,并输出反转后的列表 31 # print(id(li)) 32 li.reverse() 33 # print(id(li.reverse())) #这里是指令地址返回值是None,意思是让li这个列表原地反转一下,不会使得li这个列表的内存地址变换! 34 # print(id(li)) 35 print(li) 36 #j.请使用 for、len、range 输出列表的索引 37 for i in range(len(li)): 38 print(i) 39 #k.请使用"enumrate"输出列表元素和序号(序号从 100 开始) 40 for index,item in enumerate(li): 41 print(index+100,item) 42 #l.请使用"for"循环输出列表的所有元素 43 for i in li: 44 print(i) 45 46 47 48 49 #测试结果如下: 50 51 8 52 ['alex', 'yinzhengjie', 'rain', '尹正杰', '廖雪峰', '吴三江', '孝杰', '吴东航', 'server'] 53 ['Tony', 'alex', 'yinzhengjie', 'rain', '尹正杰', '廖雪峰', '吴三江', '孝杰', '吴东航', 'server'] 54 ['Tony', 'kelly', 'yinzhengjie', 'rain', '尹正杰', '廖雪峰', '吴三江', '孝杰', '吴东航', 'server'] 55 ['Tony', 'kelly', 'yinzhengjie', 'rain', '尹正杰', '廖雪峰', '吴三江', '孝杰', '吴东航'] 56 kelly 57 ['Tony', 'yinzhengjie', 'rain', '尹正杰', '廖雪峰', '吴三江', '孝杰', '吴东航'] 58 ['Tony', 'yinzhengjie', '尹正杰', '廖雪峰', '吴三江', '孝杰', '吴东航'] 59 ['Tony', 'yinzhengjie', '孝杰', '吴东航'] 60 ['吴东航', '孝杰', 'yinzhengjie', 'Tony'] 61 0 62 1 63 2 64 3 65 100 吴东航 66 101 孝杰 67 102 yinzhengjie 68 103 Tony 69 吴东航 70 孝杰 71 yinzhengjie 72 Tony
24.列表取值练习,请按照功能要求实现每一个功能 :
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com li = [['Tony', 'alex', 'kelly','yinzhengjie', 'rain'],['尹正杰', '廖雪峰', ['吴三江', '孝杰', '吴东航'],"ALL"],123,666] #a.请输出“Kelly” print(li[0][2]) #b.请使用索引找到'all'元素并将其修改为“ALL” print(li[1][3]) #代码执行结果: kelly ALL
25.元组练习,按照要求实现每一个功能 :
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com tu = ("alex","yinzhengjie","吴三江") #a.计算元组长度并输出 print(len(tu)) #b.获取元组的第2个元素,并输出 print(tu[1]) #c.获取元组的第1-2个元素,并输出 print(tu[:2]) #d.请使用 for 输出元组的元素 for i in tu: print(i) #e.请使用 for、len、range 输出元组的索引 for i in range(len(tu)): print(i) #f.请使用“enumrate”输出元祖元素和序号(序号从 10 开始) for index ,item in enumerate(tu): print(index,item) #代码执行结果 3 yinzhengjie ('alex', 'yinzhengjie') alex yinzhengjie 吴三江 0 1 2 0 alex 1 yinzhengjie 2 吴三江
26.元组小试牛刀练习,有如下变量,请实现要求的功能 :
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 tu = ('alex', [11,22,{"k1":"v1","k2":["age","name"],"k3":(11,22,33)},44]) 7 #a.讲述元组的特性 8 ''' 9 tuple也是有序的集合,它和list不同的是它只能在初始化的时候赋值,之后就不能再进行添加删除元素了,用 () 表示。 10 元组的三个特性: 11 ①创建之后不能加减修改元素; 12 ②元素也可以是数字、字符、变量或者混杂; 13 ③元组也可以嵌套。 14 ''' 15 #b.请问 tu 变量中的第一个元素“alex”是否可被修改? 16 ''' 17 答案是否定的,不能对其进行修改!元组是写死的,不能增删改 18 ''' 19 #c.请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven” 20 print(type(tu[1][2]["k2"])) #"k2"对应的值是一个列表,是可以被修改的。 21 tu[1][2]["k2"].append("Seven") #添加一个值 22 print(tu) 23 #d.请问“tu”变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven” 24 print(type(tu[1][2]["k3"])) #"k3"对应的值是一个元组,是不可以被修改的,故无法添加元素! 25 26 27 28 #代码执行结果: 29 30 <class 'list'> 31 ('alex', [11, 22, {'k3': (11, 22, 33), 'k1': 'v1', 'k2': ['age', 'name', 'Seven']}, 44]) 32 <class 'tuple'>
27.字典练习
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 dic = {"k1":"v1","k2":"v2","k3":[11,22,33]} 7 #a.请循环输出所有的 key 8 for i in dic: 9 print(i) 10 #b.请循环输出所有的 value 11 for i in dic: 12 print(dic[i]) 13 #c.请循环输出所有的 key 和 value 14 for i in dic: 15 print(i,dic[i]) 16 #d.请在字典中添加一个键值对,"k4": "v4",输出添加后的字典 17 dic["k4"] = "v4" 18 print(dic) 19 #e.请在修改字典中“k1”对应的值为 “alex” ,输出修改后的字典 20 dic["k1"] = "alex" 21 print(dic) 22 #f.请在k3对应的值中追加一个元素44,输出修改后的字典 23 dic["k3"].append(44) 24 print(dic) 25 #g.请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典 26 dic["k3"].insert(0,18) 27 print(dic) 28 29 30 #代码执行结果如下: 31 k3 32 k2 33 k1 34 [11, 22, 33] 35 v2 36 v1 37 k3 [11, 22, 33] 38 k2 v2 39 k1 v1 40 {'k3': [11, 22, 33], 'k4': 'v4', 'k2': 'v2', 'k1': 'v1'} 41 {'k3': [11, 22, 33], 'k4': 'v4', 'k2': 'v2', 'k1': 'alex'} 42 {'k3': [11, 22, 33, 44], 'k4': 'v4', 'k2': 'v2', 'k1': 'alex'} 43 {'k3': [18, 11, 22, 33, 44], 'k4': 'v4', 'k2': 'v2', 'k1': 'alex'}
28.数据类型互相转换
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 #a.将字符串s="alex"转换成列表 7 s = "alex" 8 print(s) 9 s = list(s) 10 print(s) 11 #b.将字符串s="alex"转换成元祖 12 s = "alex" 13 print(s) 14 s = tuple(s) 15 print(s) 16 #b.将列表li = ["alex","yinzhengjie"]转换成元组 17 li = ["alex","yinzhengjie"] 18 print(li) 19 li = tuple(li) 20 print(li) 21 #c.将元祖tu = ('Alex',"yinzhengjie")转换成列表 22 tu = ('Alex',"yinzhengjie") 23 print(tu) 24 tu = list(tu) 25 print(tu) 26 #d.将列表li = ["alex","yinzhengjie"]转换成字典且字典的key按照10开始向后递增 27 li = ["alex","yinzhengjie"] 28 num = [] 29 def Transformation_dict(list_1,linst_2): 30 for i in range(10, 10 + len(list_1)): 31 linst_2.append(i) 32 list_1 = dict(zip(linst_2, list_1)) 33 return list_1 34 print(Transformation_dict(li,num)) 35 36 #代码执行结果: 37 38 alex 39 ['a', 'l', 'e', 'x'] 40 alex 41 ('a', 'l', 'e', 'x') 42 ['alex', 'yinzhengjie'] 43 ('alex', 'yinzhengjie') 44 ('Alex', 'yinzhengjie') 45 ['Alex', 'yinzhengjie'] 46 {10: 'alex', 11: 'yinzhengjie'}
29:字符串转码
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 #a.将字符串s="alex"转换成列表 7 n = "尹正杰" 8 #a.将字符串转换成utf-8编码的字节,并输出,然后将该字节再转换成utf-8编码字符串再输出 9 transcoding_byte = n.encode("utf-8") 10 print(transcoding_byte) 11 transcoding_code = transcoding_byte.decode("utf-8") 12 print(transcoding_code) 13 #b将字符串转换成gbk编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出 14 transcoding_gbk = n.encode("gbk") 15 print(transcoding_gbk) 16 transcoding_code_gbk = transcoding_gbk.decode("gbk") 17 print(transcoding_code_gbk) 18 19 20 #代码测试结果如下:(注意:这是我在pycharm测试的结果!) 21 b'\xe5\xb0\xb9\xe6\xad\xa3\xe6\x9d\xb0' 22 尹正杰 23 b'\xd2\xfc\xd5\xfd\xbd\xdc' 24 尹正杰
30.求 1-‐100 内的所有数的和
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 total = 0 7 for i in range(1,101): 8 total += i 9 i += 1 10 print(total) 11 12 13 #代码执行结果 14 5050
31.元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个 key 中,将小于 66 的值保存至第二个 key 的值中。
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 num_list = [11,22,33,44,55,66,77,88,99,90] 7 num_dict = {"k1":[],"k2":[]} 8 for i in num_list: 9 if i > 66: 10 num_dict.get("k1").append(i) 11 elif i < 66: 12 num_dict.get("k2").append(i) 13 print(num_dict) 14 15 16 #代码执行结果如下: 17 {'k2': [11, 22, 33, 44, 55], 'k1': [77, 88, 99, 90]}
32.自定义购物车小程序:
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 import sys,time 7 ''' 8 功能要求: 9 要求用户输入总资产,例如:2000 10 显示商品列表,让用户根据序号选择商品,加入购物车 11 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。 12 goods = [ 13 {"name": "电脑", "price": 1999}, 14 {"name": "鼠标", "price": 10}, 15 {"name": "游艇", "price": 20}, 16 {"name": "美女", "price": 998}, 17 ] 18 ''' 19 goods = [ 20 ("电脑",9000), 21 ("鼠标",600), 22 ("游艇",20000000), 23 ("美女",998) 24 ] 25 shopping_list = [] 26 total_consuption = 0 27 customer_deposit = input("请问您的总资产:>>>") 28 Initial_money = customer_deposit 29 if customer_deposit.isdigit(): 30 customer_deposit = int(customer_deposit) 31 else: 32 print("对不起,您仅仅能输入数字") 33 while True: 34 for index,item in enumerate(goods): 35 print(index,item) 36 user_choice = input("请选择相应的序列号来挑选商品>>: ") 37 if user_choice.isdigit(): 38 user_choice = int(user_choice) 39 if user_choice < len(goods) and user_choice >=0: 40 purchase_item = goods[user_choice] 41 if purchase_item[1] <= customer_deposit: 42 shopping_list.append(purchase_item) 43 customer_deposit -= purchase_item[1] 44 total_consuption += purchase_item[1] 45 print("已经订单的商品:'%s'" % purchase_item[0]) 46 continue_shopping = input("请问是否要继续购物呢(按任意键继续,按'Q'或者'q'停止购物)>>: ") 47 if continue_shopping == "q" continue_shopping == "Q": 48 for i in shopping_list: 49 print("您已经订单的商品‘%s’,需要花费‘%s’元人名币" % (i[0], i[1])) 50 print("您的存款是\033[31;1m%s\033[0m" % (Initial_money)) 51 print("共需要消费\033[31;1m%s\033[0m人民币" % total_consuption) 52 spend = input("是否确认购买物品(按任意键退出退出程序,按'y'确认结账)") 53 if spend == "y" spend == "Y": 54 print("欢迎来到尹正杰商城进行消费!当前您的余额是:\033[31;1m'%s'\033[0m" % customer_deposit) 55 sys.exit() 56 else: 57 print("退出商城") 58 sys.exit() 59 else: 60 print("\033[41;1m您的余额只剩【%s】啦,还买个毛线啊\033[0m" % customer_deposit) 61 else: 62 print(" 对不起您输入的序列号不正确!请重新输入!!! ") 63 time.sleep(1) 64 continue 65 66 67 68 #代码执行结果如下: 69 70 #输入错误序号: 71 请问您的总资产:>>>1111111111111 72 0 ('电脑', 9000) 73 1 ('鼠标', 600) 74 2 ('游艇', 20000000) 75 3 ('美女', 998) 76 请选择相应的序列号来挑选商品>>: 66 77 对不起您输入的序列号不正确!请重新输入!!! 78 0 ('电脑', 9000) 79 1 ('鼠标', 600) 80 2 ('游艇', 20000000) 81 3 ('美女', 998) 82 请选择相应的序列号来挑选商品>>: 83 84 85 #未结账退出测试: 86 请问您的总资产:>>>222222222222222222 87 0 ('电脑', 9000) 88 1 ('鼠标', 600) 89 2 ('游艇', 20000000) 90 3 ('美女', 998) 91 请选择相应的序列号来挑选商品>>: 2 92 已经订单的商品:'游艇' 93 请问是否要继续购物呢(按任意键继续,按'Q'或者'q'停止购物)>>: q 94 您已经订单的商品‘游艇’,需要花费‘20000000’元人名币 95 您的存款是222222222222222222 96 共需要消费20000000人民币 97 是否确认购买物品(按任意键退出退出程序,按'y'确认结账) 98 退出商城 99 100 101 #成功结账: 102 请问您的总资产:>>>55555555555555555555 103 0 ('电脑', 9000) 104 1 ('鼠标', 600) 105 2 ('游艇', 20000000) 106 3 ('美女', 998) 107 请选择相应的序列号来挑选商品>>: 2 108 已经订单的商品:'游艇' 109 请问是否要继续购物呢(按任意键继续,按'Q'或者'q'停止购物)>>: Q 110 您已经订单的商品‘游艇’,需要花费‘20000000’元人名币 111 您的存款是55555555555555555555 112 共需要消费20000000人民币 113 是否确认购买物品(按任意键退出退出程序,按'y'确认结账)y 114 欢迎来到尹正杰商城进行消费!当前您的余额是:'55555555555535555555'
相关文章推荐
- Python小技巧 - 子串查找
- Python少打字小技巧
- python个人学习小技巧 数据库Mssql 操作
- python win32api 使用小技巧
- Python:通过自定义系统级快捷键来控制程序开始或停止记录日志(使用小技巧解决一个貌似无解的问题)
- Python小技巧1
- python程序十个小技巧
- python处理中文的小技巧(太精辟了)
- Python Collection 小技巧
- Python的一些小技巧小知识
- python 提高效率的几个小技巧
- Python Collection 小技巧(转)
- python win32api 使用小技巧
- 【转载】python 提高效率的几个小技巧
- Python少打字小技巧
- python小技巧
- Python小技巧 – True or False
- python collection小技巧
- Python:通过自定义系统级快捷键来控制程序开始或停止记录日志(使用小技巧解决一个貌似无解的问题)
- Python的小技巧小知识