python基础总结与作业

day01总结

  1. 了解硬件 & 操作系统 & 软件(应用系统)之间的关系。

  2. 了解常见的操作系统都有哪些。

  3. 了解编译器和解释器的区别和作用。

  4. 编程语言进行分类

  5. 了解Python解释器的种类

  6. 了解CPython解释器的版本

  7. 学会如何安装Python解释器。

  8. 了解什么环境变量的作用。

  9. 了解Python和Pycharm的区别。

作业day01 作业答案和讲解

 

1、简述硬件 & 操作系统 & 软件(应用系统)之间的关系。

2、列举常见的操作系统都有哪些。

3、简述编译器和解释器的区别和作用。

4、编程语言进行分类

5、Python解释器的种类有哪些?

6、CPython解释器的版本有哪些?你现在用的是哪个版本?

7、系统环境变量的作用是什么?

8、Python和Pycharm的区别是什么?

day02总结

  1. 什么是编码?打开文件时为什么会出现乱码?

  2. pycharm如何设置文件编码?

  3. python解释器去打开代码文件时,默认使用编码是什么?如何修改?

  4. print输入

  5. 各数据类型格式 以及 相关之间如何实现转换?

  6. 变量的命名规范

  7. 用户通过input输的内容均为字符串类型。

  8. 条件语句。

注意:类型转换不是改变原来值,实际在底层是新创建了一个值。例如有整数 6 ,然后使用 str(6) 转化了一下得到 “6”,实际上这个字符串”6”是依据整数6新创建的。

练习题

  1. 提示用户输入用户名和密码,用户名等于"wupeiqi"且密码等于"uuu"就输出登录成功;否则输出登录失败。

  2. 猜数字,提示用户输入一个数字,判断数字如果大于10,就输出猜错了;否则输出猜对了。

  3. 提示用户输入一个数字,判断是否为偶数,是偶数则输出 偶偶偶数,否则输出 奇奇奇数。

今日作业

  1. 作业答案

    1. 谈谈你了解的编码以及为什么会出现乱码的现象?

    2. Python解释器默认编码是什么?如何修改?

    3. 用print打印出下面内容:

      ⽂能提笔安天下,
      武能上⻢定乾坤.
      ⼼存谋略何⼈胜,
      古今英雄唯是君。
    4. 变量名的命名规范和建议?

      三条规范(必须遵循,否则定义变量会报错)
      - 变量名只能由 字母、数字、下划线 组成。
      - 变量名不能以数字开头。
      - 变量名不能是Python内置关键字
      二条建议(遵循可以显得更加专业,不遵循也可以正常运行不报错)
      - 下划线命名法,多个单词表示的变量名用下划线连接(均小写)
      - 见名知意,通过阅读变量名就能知道此变量的含义。
    5. 如下那个变量名是正确的?

    6. 设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。

    7. 提示⽤户输入 "爸爸" ,判断⽤户输入的对不对。如果对, 提示真聪明, 如果不对, 提示你是傻逼么。

    8. 写程序,成绩有ABCDE5个等级,与分数的对应关系如下.

    9. 要求用户输入0-100的数字后,你能正确打印他的对应成绩等级.

      
      

day03总结

  1. while循环语句

  2. break和continue关键字的作用

  3. 三种字符串格式化的方式

  4. 基本运算符(逻辑运算符涉及的相关面试题)

判断下列逻辑语句的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,就退出程序,如何猜对了,就直接退出。

练习题

  1. 补充代码实现 猜数字,设定一个理想数字比如:66,一直提示让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有输入等于66,显示猜测结果正确,然后退出循环。

      number = 66
    flag = True
    while flag:
    ...
  2. 使用循环输出1~100所有整数。

  3. 使用循环输出 1 2 3 4 5 6 8 9 10,即:10以内除7以外的整数。

  4. 输出 1~100 内的所有奇数。

  5. 输出 1~100 内的所有偶数。

  6. 求 1~100 的所有整数的和。

  7. 输出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

 

总结

本章的知识点属于理解为主,了解这些基础之后有利于后面知识点的学习,接下来对本节所有的知识点进行归纳总结:

  1. 计算机上所有的东西最终都会转换成为二进制再去运行。

  2. ascii编码、unicode字符集、utf-8编码本质上都是字符与二进制的关系。

    • ascii,字符和二进制的对照表。

    • unicode,字符和二进制(码位)的对照表。

    • utf-8,对unicode字符集的码位进行压缩处理,间接也维护了字符和二进制的对照表。

  3. ucs2和ucs4指的是使用多少个字节来表示unicode字符集的码位。

  4. 目前最广泛的编码为:utf-8,他可以表示所有的字符且存储或网络传输也不会浪费资源(对码位进行压缩了)。

  5. 二进制、八进制、十进制、十六进制其实就是进位的时机不同。

  6. 基于Python实现二进制、八进制、十进制、十六进制之间的转换。

  7. 一个字节8位

  8. 计算机中常见单位b/B/KB/M/G的关系。

  9. 汉字,用gbk编码需要用2个字节;用utf-8编码需要用3个字节。

  10. 基于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)
    复制代码
  11. 基于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总结

本章的知识点属于理解为主,了解这些基础之后有利于后面知识点的学习,接下来对本节所有的知识点进行归纳总结:

  1. 计算机上所有的东西最终都会转换成为二进制再去运行。

  2. ascii编码、unicode字符集、utf-8编码本质上都是字符与二进制的关系。

    • ascii,字符和二进制的对照表。

    • unicode,字符和二进制(码位)的对照表。

    • utf-8,对unicode字符集的码位进行压缩处理,间接也维护了字符和二进制的对照表。

  3. ucs2和ucs4指的是使用多少个字节来表示unicode字符集的码位。

  4. 目前最广泛的编码为:utf-8,他可以表示所有的字符且存储或网络传输也不会浪费资源(对码位进行压缩了)。

  5. 二进制、八进制、十进制、十六进制其实就是进位的时机不同。

  6. 基于Python实现二进制、八进制、十进制、十六进制之间的转换。

  7. 一个字节8位

  8. 计算机中常见单位b/B/KB/M/G的关系。

  9. 汉字,用gbk编码需要用2个字节;用utf-8编码需要用3个字节。

  10. 基于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)
    复制代码

     

  11. 基于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)
  12.  

day05总结

  1. 整型在Python2和Python3中的区别?

  2. 进制之间的转换。

  3. 其他类型转换为布尔类型时,空和0为False,其他均为True。

  4. 条件语句中可自动化转换布尔类型来做判断。

    if "武沛齐":
    print(666)
    else:
    print(999)
  5. 字符串中常见的独有功能。

  6. 字符串中常见的公共功能。

  7. 字符串创建之后是不可以被修改的。



练习题
写代码实现判断用户输入的值否以 "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. 概述

    • 列表,以后写程序会用的非常多,要多些多练。

    • 元组,以后写程序用的不是很多,主要以了解其特殊和用法为主。

  2. 列表和元组的区别。

  3. 可变类型和不可变类型。

  4. 列表独有功能 & 公共功能(不用特地去记,多做题目去用,以后每天都会有相关的练习题)。

  5. 列表和元组等数据的嵌套

  6. 元组中 (1) 和 (1,) 的区别。

  7. 元组的元素不能被替换,但元组的元素如果是可变类型,可变类型内部是可以修改的。

 

作业

  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)
    """
    复制代码

列表阶段作业

  1. 写代码,有如下列表,按照要求实现每一个功能。

    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个元素,并输出删除元素后的列表

  2. 写代码,有如下列表,利用切片实现每一个功能

    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]

  3. 写代码,有如下列表,按照要求实现每一个功能。

    lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    • 将列表lis中的第2个索引位置的值变成大写,并打印列表。

    • 将列表中的数字3变成字符串"100"

    • 将列表中的字符串"tt"变成数字 101

    • 在 "qwe"前面插入字符串:"火车头"

  4. 请用代码实现循环输出元素和值:users = ["武沛齐","景女神","肖大侠"] ,如:

    0 武沛齐
    1 景女神
    2 肖大侠
  5. 请用代码实现循环输出元素和值:users = ["武沛齐","景女神","肖大侠"] ,如:

    1 武沛齐
    2 景女神
    3 肖大侠
  6. 写代码实现以下功能

    • 如有变量 goods = ['汽车','飞机','火箭'] 提示用户可供选择的商品:

      0,汽车
      1,飞机
      2,火箭
    • 用户输入索引后,将指定商品的内容拼接打印,如:用户输入0,则打印 您选择的商品是汽车。

  7. 利用for循环和range 找出 0 ~ 50 以内能被3整除的数,并追加到一个列表。

  8. 利用for循环和range 找出 0 ~ 50 以内能被3整除的数,并插入到列表的第0个索引位置,最终结果如下:

    [48,45,42...]
  9. 查找列表li中的元素,移除每个元素的空格,并找出以"a"开头,并添加到一个新列表中,最后循环打印这个新列表。

    li = ["alexC", "AbC ", "egon", " riTiAn", "WuSir", "  aqc"]
  10. 将以下车牌中所有 的车牌搞到一个列表中,并输出京牌车辆的数量。

    data = ["京1231", "冀8899", "京166631", "晋989"]

day07总结

  1. 集合,是 无序、不重复、元素必须可哈希、可变的一个容器(子孙元素都必须是可哈希)。

  2. 集合的查找速度比较快(底层是基于哈希进行存储)

  3. 集合可以具有 交并差 的功能。

  4. 字典是 无序、键不重复 且 元素只能是键值对的可变的一个容器(键子孙元素都必须是可哈希)。

  5. py3.6+之后字典就变为有序了。

  6. py3.9 新增了一个 {} | {}运算。

  7. 字典的常见功能。

  8. 在python2和python3中,字典的 keys() 、values()、items() 三个功能获取的数据类型不一样。

  9. None是代表内存中的一个空值。

    0
    ""
    [] or list()
    () or tuple()
    set()
    None
    {} or dict()
  10. 浮点型用于表示小数,但是由于其内部存储原理可能会引发数据存储不够精准。

 

作业

  1. 根据需求写代码

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

    # 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
    # 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
    # 请在k3对应的值中追加一个元素 44,输出修改后的字典
    # 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
  2. 根据需求写代码

    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删除
  3. 循环提示用户输入,并将输入内容添加到字典中(如果输入N或n则停止循环)

    例如:用户输入 x1|wupeiqi ,则需要再字典中添加键值对 {'x1':"wupeiqi"}
  4. 判断以下值那个能做字典的key ?那个能做集合的元素?

    • 1

    • -1

    • ""

    • None

    • [1,2]

    • (1,)

    • {11,22,33,4}

    • {'name':'wupeiq','age':18}

  5. 将字典的键和值分别追加到 key_list 和 value_list 两个列表中,如:

    key_list = []
    value_list = []
    info = {'k1':'v1','k2':'v2','k3':'v3'}
  6. 字典dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}

    a. 请循环输出所有的key
    b. 请循环输出所有的value
    c. 请循环输出所有的key和value
  7. 请循环打印k2对应的值中的每个元素。

    info = {
    'k1':'v1',
    'k2':[('alex'),('wupeiqi'),('oldboy')],
    }
  8. 有字符串"k: 1|k1:2|k2:3 |k3 :4" 处理成字典 {'k':1,'k1':2....}

  9. 写代码

    """
    有如下值 li= [11,22,33,44,55,66,77,88,99,90] ,将所有大于 66 的值保存至字典的第一个key对应的列表中,将小于 66 的值保存至第二个key对应的列表中。

    result = {'k1':[],'k2':[]}
    """
  10. 输出商品列表,用户输入序号,显示用户选中的商品

    """
    商品列表:
    goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998}
    ]
    要求:
    1:页面显示 序号 + 商品名称 + 商品价格,如:
    1 电脑 1999
    2 鼠标 10
    ...
    2:用户输入选择的商品序号,然后打印商品名称及商品价格
    3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    4:用户输入Q或者q,退出程序。
    ""

"""
准则:
- 尽可能少if嵌套
- 简单的逻辑先处理
"""

 

posted @ 2022-11-18 00:24  贰号猿  阅读(384)  评论(0)    收藏  举报