python基础总结与作业
day01总结
-
了解硬件 & 操作系统 & 软件(应用系统)之间的关系。
-
了解常见的操作系统都有哪些。
-
了解编译器和解释器的区别和作用。
-
编程语言进行分类
-
了解Python解释器的种类
-
了解CPython解释器的版本
-
学会如何安装Python解释器。
-
了解什么环境变量的作用。
-
了解Python和Pycharm的区别。
作业
1、简述硬件 & 操作系统 & 软件(应用系统)之间的关系。
2、列举常见的操作系统都有哪些。
3、简述编译器和解释器的区别和作用。
4、编程语言进行分类
5、Python解释器的种类有哪些?
6、CPython解释器的版本有哪些?你现在用的是哪个版本?
7、系统环境变量的作用是什么?
day02总结
-
什么是编码?打开文件时为什么会出现乱码?
-
pycharm如何设置文件编码?
-
python解释器去打开代码文件时,默认使用编码是什么?如何修改?
-
print输入
-
各数据类型格式 以及 相关之间如何实现转换?
-
变量的命名规范
-
用户通过input输的内容均为字符串类型。
-
条件语句。
注意:类型转换不是改变原来值,实际在底层是新创建了一个值。例如有整数 6 ,然后使用 str(6) 转化了一下得到 “6”,实际上这个字符串”6”是依据整数6新创建的。
练习题
-
提示用户输入用户名和密码,用户名等于"wupeiqi"且密码等于"uuu"就输出登录成功;否则输出登录失败。
-
猜数字,提示用户输入一个数字,判断数字如果大于10,就输出猜错了;否则输出猜对了。
-
提示用户输入一个数字,判断是否为偶数,是偶数则输出 偶偶偶数,否则输出 奇奇奇数。
今日作业
-
-
谈谈你了解的编码以及为什么会出现乱码的现象?
-
Python解释器默认编码是什么?如何修改?
-
⽂能提笔安天下,
武能上⻢定乾坤.
⼼存谋略何⼈胜,
古今英雄唯是君。 -
变量名的命名规范和建议?
三条规范(必须遵循,否则定义变量会报错)
- 变量名只能由 字母、数字、下划线 组成。
- 变量名不能以数字开头。
- 变量名不能是Python内置关键字
二条建议(遵循可以显得更加专业,不遵循也可以正常运行不报错)
- 下划线命名法,多个单词表示的变量名用下划线连接(均小写)
- 见名知意,通过阅读变量名就能知道此变量的含义。 -
如下那个变量名是正确的?
-
设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。
-
提示⽤户输入 "爸爸" ,判断⽤户输入的对不对。如果对, 提示真聪明, 如果不对, 提示你是傻逼么。
-
写程序,成绩有ABCDE5个等级,与分数的对应关系如下.
-
要求用户输入0-100的数字后,你能正确打印他的对应成绩等级.
-
day03总结
-
while循环语句
-
break和continue关键字的作用
-
三种字符串格式化的方式
-
基本运算符(逻辑运算符涉及的相关面试题)
判断下列逻辑语句的True,False 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 求出下列逻辑语句的值。 8 or 3 and 4 or 2 and 0 or 9 and 7 0 or 2 and 3 and 4 or 6 and 0 or 3 下列结果是什么? 6 or 2 > 1 3 or 2 > 1 0 or 5 < 45 < 4 or 3 2 > 1 or 63 and 2 > 1 0 and 3 > 12 > 1 and 3 3 > 1 and 0 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2 实现用户登录系统,并且要支持连续三次输错之后直接退出,并且在每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)。 猜年龄游戏 要求:允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出。 猜年龄游戏升级版 要求:允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y,就继续让其猜3次,以此往复,如果回答N,就退出程序,如何猜对了,就直接退出。
练习题
-
补充代码实现 猜数字,设定一个理想数字比如:66,一直提示让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有输入等于66,显示猜测结果正确,然后退出循环。
number = 66
flag = True
while flag:
... -
使用循环输出1~100所有整数。
-
使用循环输出 1 2 3 4 5 6 8 9 10,即:10以内除7以外的整数。
-
输出 1~100 内的所有奇数。
-
输出 1~100 内的所有偶数。
-
求 1~100 的所有整数的和。
-
输出10 ~ 1 所有整数。
面试题
逻辑运算中:and or
v1 = name == "alex" and pwd == "123" # v1 = True and False if name == "alex" and pwd == "123": pass v2 = "wupeiqi" and "alex" # 第一步:将and前后的只转换为布尔值 True and True # 第二步:判断本次操作取悦于谁?由于前面的是True,所以本次逻辑判断取决于后面的值。 # 所以,后面的只等于多少最终结果就是多少。 v2 = "alex" v3 = "" and "alex" # 第一步:将and前后的只转换为布尔值 False and True # 第二步:判断本次操作取悦于谁?由于前面的是False,所以本次逻辑判断取决于前面的值。 # 所以,前面的只等于多少最终结果就是多少。 v2 = "" v4 = 1 or 8 # 第一步:将and前后的只转换为布尔值 True or True # 第二步:判断本次操作取悦于谁?由于前面的是True,所以本次逻辑判断取决于前面的值。 # v4 = 1 v5 = 0 or 8 # 第一步:将and前后的只转换为布尔值 False or True # 第二步:判断本次操作取悦于谁?由于前面的是False,所以本次逻辑判断取决于后面的值。 # v5 = 8
总结
本章的知识点属于理解为主,了解这些基础之后有利于后面知识点的学习,接下来对本节所有的知识点进行归纳总结:
-
计算机上所有的东西最终都会转换成为二进制再去运行。
-
ascii编码、unicode字符集、utf-8编码本质上都是字符与二进制的关系。
-
ascii,字符和二进制的对照表。
-
unicode,字符和二进制(码位)的对照表。
-
utf-8,对unicode字符集的码位进行压缩处理,间接也维护了字符和二进制的对照表。
-
-
ucs2和ucs4指的是使用多少个字节来表示unicode字符集的码位。
-
目前最广泛的编码为:utf-8,他可以表示所有的字符且存储或网络传输也不会浪费资源(对码位进行压缩了)。
-
二进制、八进制、十进制、十六进制其实就是进位的时机不同。
-
基于Python实现二进制、八进制、十进制、十六进制之间的转换。
-
一个字节8位
-
计算机中常见单位b/B/KB/M/G的关系。
-
汉字,用gbk编码需要用2个字节;用utf-8编码需要用3个字节。
-
基于Python实现将字符串转换为字节(utf-8编码)
# 字符串类型 name = "武沛齐" print(name) # 武沛齐 # 字符串转换为字节类型 data = name.encode("utf-8") print(data) # b'\xe6\xad\xa6\xe6\xb2\x9b\xe9\xbd\x90' # 把字节转换为字符串 old = data.decode("utf-8") print(old) -
基于Python实现将字符串转换为字节(gbk编码)
# 字符串类型 name = "武沛齐" print(name) # 武沛齐 # 字符串转换为字节类型 data = name.encode("gbk") # print(data) # b'\xe6\xad\xa6\xe6\xb2\x9b\xe9\xbd\x90' utf8,中文3个字节 print(data) # b'\xce\xe4\xc5\xe6\xc6\xeb' gbk,中文2个字节 # 把字节转换为字符串 old = data.decode("gbk") print(old)
day04总结
本章的知识点属于理解为主,了解这些基础之后有利于后面知识点的学习,接下来对本节所有的知识点进行归纳总结:
-
计算机上所有的东西最终都会转换成为二进制再去运行。
-
ascii编码、unicode字符集、utf-8编码本质上都是字符与二进制的关系。
-
ascii,字符和二进制的对照表。
-
unicode,字符和二进制(码位)的对照表。
-
utf-8,对unicode字符集的码位进行压缩处理,间接也维护了字符和二进制的对照表。
-
-
ucs2和ucs4指的是使用多少个字节来表示unicode字符集的码位。
-
目前最广泛的编码为:utf-8,他可以表示所有的字符且存储或网络传输也不会浪费资源(对码位进行压缩了)。
-
二进制、八进制、十进制、十六进制其实就是进位的时机不同。
-
基于Python实现二进制、八进制、十进制、十六进制之间的转换。
-
一个字节8位
-
计算机中常见单位b/B/KB/M/G的关系。
-
汉字,用gbk编码需要用2个字节;用utf-8编码需要用3个字节。
-
基于Python实现将字符串转换为字节(utf-8编码)
# 字符串类型 name = "武沛齐" print(name) # 武沛齐 # 字符串转换为字节类型 data = name.encode("utf-8") print(data) # b'\xe6\xad\xa6\xe6\xb2\x9b\xe9\xbd\x90' # 把字节转换为字符串 old = data.decode("utf-8") print(old) -
基于Python实现将字符串转换为字节(gbk编码)
# 字符串类型 name = "武沛齐" print(name) # 武沛齐 # 字符串转换为字节类型 data = name.encode("gbk") # print(data) # b'\xe6\xad\xa6\xe6\xb2\x9b\xe9\xbd\x90' utf8,中文3个字节 print(data) # b'\xce\xe4\xc5\xe6\xc6\xeb' gbk,中文2个字节 # 把字节转换为字符串 old = data.decode("gbk") print(old) -
day05总结
-
整型在Python2和Python3中的区别?
-
进制之间的转换。
-
其他类型转换为布尔类型时,空和0为False,其他均为True。
-
条件语句中可自动化转换布尔类型来做判断。
if "武沛齐":
print(666)
else:
print(999) -
字符串中常见的独有功能。
-
字符串中常见的公共功能。
-
字符串创建之后是不可以被修改的。
练习题 写代码实现判断用户输入的值否以 "al"开头,如果是则输出 "是的" 否则 输出 "不是的" 写代码实现判断用户输入的值否以"Nb"结尾,如果是则输出 "是的" 否则 输出 "不是的" 将 name 变量对应的值中的 所有的"l"替换为 "p",并输出结果 写代码实现对用户输入的值判断,是否为整数,如果是则转换为整型并输出,否则直接输出"请输入数字" 对用户输入的数据使用"+"切割,判断输入的值是否都是数字? 提示:用户输入的格式必须是以下+连接的格式,如 5+9 、alex+999 写代码实现一个整数加法计算器(两个数相加) 需求:提示用户输入:5+9或5+9或5+9,计算出两个值的和(提示:先分割再转换为整型,再相加) 写代码实现一个整数加法计算器(两个数相加) 需求:提示用户输入:5 +9或5+ 9或5 + 9,计算出两个值的和(提示:先分割再去除空白、再转换为整型,再相加) 补充代码实现用户认证。 需求:提示用户输入手机号、验证码,全都验证通过之后才算登录成功(验证码大小写不敏感) import random code = random.randrange(1000,9999) # 生成动态验证码 msg = "欢迎登录PythonAV系统,您的验证码为:{},手机号为:{}".format(code,"15131266666") print(msg) # 请补充代码 补充代码实现数据拼接 作业 复制代码 # 1. 请用代码实现如下进制的转换。 """ v1 = 675 # 请将v1转换为二进制(字符串类型)。 v2 = "0b11000101" # 请将二进制v2转换为十进制(整型) v3 = "11000101" # 请将二进制v3转换为十进制(整型) """ # 2.现有 `v1=123` 和 `v2=456`,请将这两个值转换为二进制,并将其二进制中的前缀 0b 去掉,然后将两个二进制拼接起来,最终再转换为整型(十进制)。 # 3. 对第2题进行补0操作 # 4.列举你了解的那些数据类型的值转换为布尔值为False。 # 5.看代码写结果 # 6.让用户输入一段文本,请实现将文本中的敏感词 `苍老师`、`波波老师`替换为 `***`,最后并输入替换后的文本。 # 7.看代码写结果 """ name = "aleX leNb " print(name.strip()) print(name.startswith("al")) print(name[0:2] == "al") print(name.endswith("Nb")) print(name[-2:] == "Nb") v1 = name.replace("l", "p") print(v1) v2 = name.split("l") print(v2) # ['a', 'eX ', 'eNb '] v3 = name.split("l", 1) print(v3) # ['a', 'eX leNb '] print(name.upper()) print(name.lower()) """ # 8.如何实现字符串的翻转?[面试题] # 9.有字符串s = "123a4b5c" """ s = "123a4b5c" print(s[0:3]) print(s[3:6]) print(s[-1]) print(s[len(s) - 1]) print(s[-3:0:-2]) """ # 10. while + 索引 """ message = "伤情最是晚凉天,憔悴厮人不堪言" index = 0 while index < len(message): print(message[index]) index += 1 """ # 11 for循环 """ message = "伤情最是晚凉天,憔悴厮人不堪言" for item in message: print(item) """ # 12.for循环+range+索引 """ message = "伤情最是晚凉天,憔悴厮人不堪言" for index in range(len(message)): print( message[index] ) """ # 13.使用for循环实现输出倒计时效果,例如:输出内容依次是:"倒计时3秒","倒计时2秒","倒计时1秒"。 # 14.让用户输入一段文本,请计算文本中 "浪" 出现的次数,并输入结果。 # 15.获取用户两次输入的内容,并提取其中的数字,然后实现数字的相加(转换为整型再相加)
day06总结
-
概述
-
列表,以后写程序会用的非常多,要多些多练。
-
元组,以后写程序用的不是很多,主要以了解其特殊和用法为主。
-
-
列表和元组的区别。
-
可变类型和不可变类型。
-
列表独有功能 & 公共功能(不用特地去记,多做题目去用,以后每天都会有相关的练习题)。
-
列表和元组等数据的嵌套
-
元组中 (1) 和 (1,) 的区别。
-
元组的元素不能被替换,但元组的元素如果是可变类型,可变类型内部是可以修改的。
作业
-
# 1.以下哪些数据类型转换为布尔值为False """ 0 1 "" -19 [] [11,22] (1) (1,2,3) () """ # 2.运算符操作 """ v1 = [] or "alex" v2 = [11, 22] and (1, 2,) """ # 3.比较:` a = [1,2,3] `和 `b = [(1),(2),(3) ]` 以及 `c = [(1,),(2,),(3,) ]` 的区别? """ a = [1, 2, 3] b = [(1), (2), (3)] c = [(1,), (2,), (3,)] """ # 4.将字符串`text = "wupeiqi|alex|eric"`根据 `|` 分割为列表,然后列表转换为元组类型。 """ text = "wupeiqi|alex|eric" data_list = text.split("|") result = tuple(data_list) print(result) """ # 5.补充代码,根据如下规则创建一副扑克牌(排除大小王)。 """ # 花色列表 color_list = ["红桃", "黑桃", "方片", "梅花"] # 牌值 num_list = [] # 1 2 3 4 5...11、12、13 for num in range(1, 14): num_list.append(num) result = [] # 请根据以上的花色和牌值创建一副扑克牌(排除大小王) # 最终result的结果格式为: [ ("红桃",1), ("红桃",2) ... ] for color in color_list: # print(color) # 红桃 for num in num_list: item = (color, num,) result.append(item) print(result) """
列表阶段作业
-
写代码,有如下列表,按照要求实现每一个功能。
li = ["alex", "WuSir", "ritian", "barry", "武沛齐"]
-
计算列表的长度并输出
-
列表中追加元素"seven",并输出添加后的列表
-
请在列表的第1个索引位置插入元素"Tony",并输出添加后的列表
-
请修改列表第2个索引位置的元素为"Kelly",并输出修改后的列表
-
请将列表的第3个位置的值改成 "妖怪",并输出修改后的列表
-
请将列表
data=[1,"a",3,4,"heart"]的每一个元素追加到列表li中,并输出添加后的列表 -
请将字符串
s = "qwert"的每一个元素到列表li中。 -
请删除列表中的元素"barry",并输出添加后的列表
-
请删除列表中的第2个元素,并输出删除元素后的列表
-
请删除列表中的第2至第4个元素,并输出删除元素后的列表
-
-
写代码,有如下列表,利用切片实现每一个功能
li = [1, 3, 2, "a", 4, "b", 5,"c"]
-
通过对li列表的切片形成新的列表 [1,3,2]
-
通过对li列表的切片形成新的列表 ["a",4,"b"]
-
通过对li列表的切片形成新的列表 [1,2,4,5]
-
通过对li列表的切片形成新的列表 [3,"a","b"]
-
通过对li列表的切片形成新的列表 [3,"a","b","c"]
-
通过对li列表的切片形成新的列表 ["c"]
-
通过对li列表的切片形成新的列表 ["b","a",3]
-
-
写代码,有如下列表,按照要求实现每一个功能。
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
-
将列表lis中的第2个索引位置的值变成大写,并打印列表。
-
将列表中的数字3变成字符串"100"
-
将列表中的字符串"tt"变成数字 101
-
在 "qwe"前面插入字符串:"火车头"
-
-
请用代码实现循环输出元素和值:users = ["武沛齐","景女神","肖大侠"] ,如:
0 武沛齐
1 景女神
2 肖大侠 -
请用代码实现循环输出元素和值:users = ["武沛齐","景女神","肖大侠"] ,如:
1 武沛齐
2 景女神
3 肖大侠 -
写代码实现以下功能
-
如有变量 goods = ['汽车','飞机','火箭'] 提示用户可供选择的商品:
0,汽车
1,飞机
2,火箭 -
用户输入索引后,将指定商品的内容拼接打印,如:用户输入0,则打印 您选择的商品是汽车。
-
-
利用for循环和range 找出 0 ~ 50 以内能被3整除的数,并追加到一个列表。
-
利用for循环和range 找出 0 ~ 50 以内能被3整除的数,并插入到列表的第0个索引位置,最终结果如下:
[48,45,42...]
-
查找列表li中的元素,移除每个元素的空格,并找出以"a"开头,并添加到一个新列表中,最后循环打印这个新列表。
li = ["alexC", "AbC ", "egon", " riTiAn", "WuSir", " aqc"]
-
将以下车牌中所有
京的车牌搞到一个列表中,并输出京牌车辆的数量。data = ["京1231", "冀8899", "京166631", "晋989"]
day07总结
-
集合,是 无序、不重复、元素必须可哈希、可变的一个容器(子孙元素都必须是可哈希)。
-
集合的查找速度比较快(底层是基于哈希进行存储)
-
集合可以具有 交并差 的功能。
-
字典是 无序、键不重复 且 元素只能是键值对的可变的一个容器(键子孙元素都必须是可哈希)。
-
py3.6+之后字典就变为有序了。
-
py3.9 新增了一个
{} | {}运算。 -
字典的常见功能。
-
在python2和python3中,字典的 keys() 、values()、items() 三个功能获取的数据类型不一样。
-
None是代表内存中的一个空值。
0
""
[] or list()
() or tuple()
set()
None
{} or dict() -
浮点型用于表示小数,但是由于其内部存储原理可能会引发数据存储不够精准。
作业
-
根据需求写代码
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
# 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
# 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
# 请在k3对应的值中追加一个元素 44,输出修改后的字典
# 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典 -
根据需求写代码
dic1 = {
'name':['alex',2,3,5],
'job':'teacher',
'oldboy':{'alex':['python1','python2',100]}
}
# 1,将name对应的列表追加⼀个元素’wusir’。
# 2,将name对应的列表中的alex全变成大写。
# 3,oldboy对应的字典加⼀个键值对’⽼男孩’:’linux’。
# 4,将oldboy对应的字典中的alex对应的列表中的python2删除 -
循环提示用户输入,并将输入内容添加到字典中(如果输入N或n则停止循环)
例如:用户输入 x1|wupeiqi ,则需要再字典中添加键值对 {'x1':"wupeiqi"} -
判断以下值那个能做字典的key ?那个能做集合的元素?
-
1
-
-1
-
""
-
None
-
[1,2]
-
(1,)
-
{11,22,33,4}
-
{'name':'wupeiq','age':18}
-
-
将字典的键和值分别追加到 key_list 和 value_list 两个列表中,如:
key_list = []
value_list = []
info = {'k1':'v1','k2':'v2','k3':'v3'} -
字典dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
a. 请循环输出所有的key
b. 请循环输出所有的value
c. 请循环输出所有的key和value -
请循环打印k2对应的值中的每个元素。
info = {
'k1':'v1',
'k2':[('alex'),('wupeiqi'),('oldboy')],
} -
有字符串"k: 1|k1:2|k2:3 |k3 :4" 处理成字典 {'k':1,'k1':2....}
-
写代码
"""
有如下值 li= [11,22,33,44,55,66,77,88,99,90] ,将所有大于 66 的值保存至字典的第一个key对应的列表中,将小于 66 的值保存至第二个key对应的列表中。
result = {'k1':[],'k2':[]}
""" -
输出商品列表,用户输入序号,显示用户选中的商品
"""
商品列表:
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}
]
要求:
1:页面显示 序号 + 商品名称 + 商品价格,如:
1 电脑 1999
2 鼠标 10
...
2:用户输入选择的商品序号,然后打印商品名称及商品价格
3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
4:用户输入Q或者q,退出程序。
""
"""
准则:
- 尽可能少if嵌套
- 简单的逻辑先处理
"""


浙公网安备 33010602011771号