Python基础知识应用


一、基本数据类型、常量和变量

  1. Python是一种编译型程序设计语言。
    • A. √
    • B. ×
  2. 离开了集成开发环境,Python就无法解释和运行程序。
    • A. √
    • B. ×
  • 数字
    • 整形(int)
      在这里插入图片描述
    • 布尔型(bool)
      在这里插入图片描述
    • 浮点型(float)
      在这里插入图片描述
    • 复数型(complex)
      在这里插入图片描述
  • 字符串
    在这里插入图片描述
  • 序列(列表、与那组、字典、集合)
    在这里插入图片描述
    在这里插入图片描述

总结:不可变数据类型更改后地址发生改变,
可变数据类型更改地址不发生改变
python中不可变数据类型和可变数据类型

在这里插入图片描述

二、顺序和分支程序应用

2.1 找零和简单贪心

  • 贪心法
    在这里插入图片描述
  • 找零钱

这里是引用
在这里插入图片描述

代码如下(示例):
在这里插入图片描述

  • 代码修改后:
    在这里插入图片描述

  • 贪心的缺陷

贪心法虽然步步最优,不一全局最优

在这里插入图片描述

总结:现实生活中,我们经常下意识的做贪心的选择,例如选择手机的时候:性价比相同时,我们选择价格低的;价格相同时,选择技术好的
在这里插入图片描述

  1. Python中浮点数也可以执行求余运算。
    • A. √
    • [] B. ×
>>> 3.333%2
1.3330000000000002
  1. Python中的整数存储在计算机中最多存储8个字节,存储大于8个字节所能表示的数会出现“溢出”。
    • A. √
    • B. ×
  2. 在Python 3.X版本中,整除运算符产生的结果的数据类型可能为浮点型
    • A. √
    • B. ×
>>> 3.333//2.2
1.0
>>> type(3.333//2.2)
<class 'float'>

2.2 求身高体重指数

  1. 身体质量指数
    在这里插入图片描述

  2. 身材计算器
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    代码如下(示例):
    在这里插入图片描述
    在这里插入图片描述

  3. 关于Python内存管理,下列说法错误的是

    • A. 变量不必事先声明
    • B. 变量无须先创建和赋值而直接使用
    • C. 变量无须指定类型
    • D. 可以使用del释放资源
本题答案选 B,原因如下:
Python 是弱类型脚本语言,变量就是变量,没有特定类型,因此不需要声明。
但每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
用 del 语句可以释放已创建的变量(已占用的资源)。

2.3 是否合法的日期

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 源码
    在这里插入图片描述
  • 修改
    在这里插入图片描述
  1. 在Python中,bool([0])的值为False
    • A. √
    • B. ×
>>> bool([0])
True
>>> bool([])
False
  1. 在Python中,bool(3 and not 5)的值为True
    • A. √
    • B. ×

>>> bool(3 and not 5)
False
>>> 3 and not 5
False
>>> 3
3
>>> not 5
False

三、循环程序与应用

3.1 猜数字与二分法

  • 规则如下:
    在这里插入图片描述
  • 简要分析
    在这里插入图片描述
    1. 产生随机数
      在这里插入图片描述
    1. 循环的选择
      在这里插入图片描述
    1. 统计次数
      在这里插入图片描述
  • 猜数字代码
    在这里插入图片描述
  • 运行结果
  1. 下列代码中,循环体执行_2_次

    for i in range(5):
    print(i)


>>> for i in range(1,5,2):
...     print(i)
...
1
3

和range()函数的用法有关: 左闭右开
range(1,5,2) :
1:起使 5:结束[不包括自己] 2:间隔符

3.2 X年X月X日是星期几

  • 古老问题
    在这里插入图片描述
  • 算法流程
    在这里插入图片描述
  • 传统代码
    在这里插入图片描述
  • 结论
    在这里插入图片描述
  • 使用模块
# 方法一
import datetime
anyday = datetime.datetime(2019,7,17).weekday()+1
print(anyday)
'''
>>> anyday = datetime.datetime(2021,2,18).weekday()+1
>>> print(anyday)
4
'''

# 方法二
import datetime
anyday = int(datetime.datetime(2019,7,17).strftime("%w"))
print(anyday)

Python time strftime() 方法
在这里插入图片描述

  1. 不能完成1~10的累加功能:
    在这里插入图片描述
对于A:
range(10,0,-1)意思是从列表的下标为10的元素开始,
倒序取到下标为0的元素(但是不包括下标为0元素),
也就是说list[10]-list[1],转化成range就是
相当于range(1,11)的倒序,最后得到的结果
是[10,9,8,7,6,5,4,3,2,1]

3.3 谁是罪犯?-简单逻辑分析

  1. 问题引入
    在这里插入图片描述
  • 真值表
    在这里插入图片描述
  • 思路分析
    在这里插入图片描述
  • 程序代码
    在这里插入图片描述
  1. 问题引入
    在这里插入图片描述
  • 题目分析
    在这里插入图片描述
  • 程序代码
    在这里插入图片描述
    在这里插入图片描述
for item in canditates:
    print(item)
'''
(0, 0, 0, 0, 0)
(0, 0, 0, 0, 1)
(0, 0, 0, 1, 0)
(0, 0, 0, 1, 1)
(0, 0, 1, 0, 0)
(0, 0, 1, 0, 1)
(0, 0, 1, 1, 0)
(0, 0, 1, 1, 1)
(0, 1, 0, 0, 0)
(0, 1, 0, 0, 1)
(0, 1, 0, 1, 0)
(0, 1, 0, 1, 1)
(0, 1, 1, 0, 0)
(0, 1, 1, 0, 1)
(0, 1, 1, 1, 0)
(0, 1, 1, 1, 1)
(1, 0, 0, 0, 0)
(1, 0, 0, 0, 1)
(1, 0, 0, 1, 0)
(1, 0, 0, 1, 1)
(1, 0, 1, 0, 0)
(1, 0, 1, 0, 1)
(1, 0, 1, 1, 0)
(1, 0, 1, 1, 1)
(1, 1, 0, 0, 0)
(1, 1, 0, 0, 1)
(1, 1, 0, 1, 0)
(1, 1, 0, 1, 1)
(1, 1, 1, 0, 0)
(1, 1, 1, 0, 1)
(1, 1, 1, 1, 0)
(1, 1, 1, 1, 1)
'''

3.4 打印9*9乘法表

  • 九九乘法表
    在这里插入图片描述
  • 要点分析
    在这里插入图片描述
  • 源程序分析
    在这里插入图片描述

关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符。

在这里插入图片描述

  1. while循环和for循环可以互相嵌套,break语句只能跳出一层循环。
    • A. √
    • B. ×

3.5 百钱百鸡与代码优化

  • 百钱百鸡问题
    在这里插入图片描述
  • 穷举法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 总结
    在这里插入图片描述
    • 优点
      在这里插入图片描述
    • 缺点
      在这里插入图片描述

四、数据类型和应用

4.1 统计字符的使用频率

Python实现对哈利波特小说单词统计

  1. 字典的键可以是字符串常量也可以是整型常量,甚至还可以是列表。
    • A. √
    • B. ×
列表不能作为字典的键

4.2 利用正则表达式提取电话号码

  • 实际问题
    在这里插入图片描述
  • 正则表达式
    • 元字符
      在这里插入图片描述
      在这里插入图片描述
  • 例子
    在这里插入图片描述
  • 实例1
    在这里插入图片描述
    • 代码
      在这里插入图片描述
  • 实列2
    在这里插入图片描述
  • 代码
    在这里插入图片描述
    • findall()
      在这里插入图片描述
  • Python——re.search().group()
import re
a = "123abc456"
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0)   #123abc456,返回整体
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1)   #123
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2)   #abc
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3)   #456

正则表达式中的三组括号把匹配结果分成三组"

  1. group() 同group(0)就是匹配正则表达式整体结果
    group(1) 列出第一个括号匹配部分,
    group(2) 列出第二个括号匹配部分,
    group(3) 列出第三个括号匹配部分。
  2. 没有匹配成功的,re.search()返回None
  • 总结
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4.3 列表与复杂排序

  • Python对排序的支持
    在这里插入图片描述
    在这里插入图片描述
  • 通过reverse参数控制升序和降序
    在这里插入图片描述
  • 通过key参数来决定如何比较元素
    在这里插入图片描述

4.3.1 lambda表达式在sort函数中的使用

假如a是一个由元组构成的列表,对该列表进行排序时,我们需要用到参数key,也就是关键词,如下面代码所示:
lambda是一个匿名函数,是固定写法;
x表示匿名函数的输入,即列表中的一个元素在这里,表示一个元组,x只是临时起的一个名字,你可以使用任意的名字;
x[0]表示匿名函数的输出,即元组里的第一个元素,即key = x[0]
所以这句命令的意思就是按照列表中第一个元素进行排序。

>>> a = [('b', 4), ('a', 12), ('d', 7), ('h', 6), ('j', 3)]
>>> a.sort(key=lambda x: x[0])
>>> print(a)
[('a', 12), ('b', 4), ('d', 7), ('h', 6), ('j', 3)]

在这里插入图片描述

  • 利用排序的稳定性实现多关键字排序
    在这里插入图片描述
  • 世界杯小组排名程序
    在这里插入图片描述
    在这里插入图片描述

t[1]:进球数 t[3]:净胜球数 t[4]:积分
先对次关键字排序,再对主关键字排序
reverse = True 降序排序

在这里插入图片描述

  1. sorted函数的第一个参数不仅可以是列表,也可以是元组。

    • A. √
    • B. ×
  2. 如下代码的运行结果是_D_

lst1=[25,77,48]
lst2=lst1
lst1.sort()
print(lst2)
  • A. [25,77,48]
  • B. [77,48,25]
  • C. [77,25,48]
  • D. [25,48,77]
sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

4.4 二分检索

  • "20个问题"游戏
    在这里插入图片描述
    在这里插入图片描述
  • 查找问题
    在这里插入图片描述
    在这里插入图片描述
  • 具体实例
    在这里插入图片描述
    在这里插入图片描述

4.4.1 二分查找

在这里插入图片描述

  • 代码
    在这里插入图片描述
  1. 已知列表x = [1, 2],那么执行语句 x.extend([3])之后,x的值为[1, 2, 3]
    • A. √
    • B. ×
>>> x.extend([3])
>>> x
[1, 2, 3]
>>> x.append([3])
>>> x
[1, 2, 3, [3]]
  1. 对Python的字典的key使用二分检索,将会加快字典获取对应项的速度。
    • A. √
    • B. ×

五、函数与应用

5.1 函数与问题分而治之

  • 问题
    在这里插入图片描述
  • 程序要求
    在这里插入图片描述
  • 程序结构
    在这里插入图片描述
    在这里插入图片描述
  • 函数举例
    • 素数的判断
      在这里插入图片描述

5.1.1 练习题

  1. 下面说法错误的是__

    • A. 函数能提高应用的模块性,和代码的重复利用率
    • B. python的函数可以分为内置函数和用户自定义函数
    • C. 不带返回值的return,相当于返回None
    • D. 每个return语句只能返回一个值
  2. 函数没有参数时,定义函数和调用函数都不用可以省略函数名后的括号。

    • A. √
    • B. ×
  3. 带有默认值的参数必须出现在参数列表的最右端,任何一个带有默认值的参数右边不允许出现没有默认值的参数

    • A. √
    • B. ×
  4. 在Python中定义函数时不需要声明函数参数的类型

    • A. √
    • B. ×

5.2 基于函数验证哥德巴赫猜想

  • 哥德巴赫猜想

质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。

在这里插入图片描述

  • 函数设计
    在这里插入图片描述
  • 代码设计
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 在调用函数时,必须牢记函数形参顺序才能正确传值

    • A. √
    • B. ×
  2. 在定义函数时,某个参数名字前面带有一个*符号表示可变长度参数,可以接收任意多个普通实参并存放于一个元组之中

    • A. √
    • B. ×
  3. 在定义函数时,某个参数名字前面带有两个*符号表示可变长度参数,可以接收任意多个普通实参并存放于一个元组之中

    • A. √
    • B. ×

5.3 多种方法实现十进制转二进制

  • 进制/位置计数法
    在这里插入图片描述
  • 内置函数bin
    在这里插入图片描述
  • 如何将十进制装换成二进制
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5.4 种方法求圆周率

  • 认识圆周率
    在这里插入图片描述

  • 计算圆周率

    • 方法一 --莱布尼兹计数法

      在这里插入图片描述
    • 程序实现
      在这里插入图片描述
    • 方法二-- 蒙特卡洛法
      在这里插入图片描述
      在这里插入图片描述

>>> random.random()
0.3755504274986339
>>> random.random()
0.8985415647687107
>>> random.random()
0.6393932313870814
>>> random.random()
0.34291115616134593

在这里插入图片描述
在这里插入图片描述

  1. 在函数内部没有任何方法可以影响实参的值
    • A. √
    • B. ×
  2. 在函数内部直接修改形参的值并不影响外部实参的值。
    • A. √
    • B. ×

5.5 Base64编码

在这里插入图片描述

  • Base64编码表
    在这里插入图片描述
  • 编码方法
    在这里插入图片描述
  • 编码实列
    在这里插入图片描述
  1. 在Python函数中,一条return语句可以返回多个值
    • A. √
    • B. ×

5.6 递归思想和递归函数

  • 递归

    • 一种描述方法
      在这里插入图片描述
    • 一种解决问题方式
      在这里插入图片描述
  • 递归要素
    在这里插入图片描述

  • 实例
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 递归的不足
    在这里插入图片描述

5.7 车队的公共钥匙盒

  • 车队的公共钥匙盒
    在这里插入图片描述
  • 问题
    在这里插入图片描述
  • 问题
    在这里插入图片描述
  • 代码
    在这里插入图片描述

六、文件

6.1 文件操作与英汉字典

  • 文件

变量都是在内存中的

在这里插入图片描述

  • 文件操作步骤
    在这里插入图片描述
    • 打开文件
      在这里插入图片描述
    • 关闭文件
      在这里插入图片描述
    • 读文件

太大的文件不适合用read(0)和readlines()这样会消耗太多的内存

在这里插入图片描述

小结:
在这里插入图片描述

6.2 文件加密解密实例

  • 维吉尼亚加密法
    在这里插入图片描述
    在这里插入图片描述
  • 实现
    在这里插入图片描述

msg:待转换字符串 key:密钥 mode:转换操作
cipher[ ] : 存储转换后的字符
第15行:计算其对应的整数,若不是英文字母返回-1

在这里插入图片描述

  • 测试代码
    在这里插入图片描述
  1. write方法用于把字符串写入文本文件并在最后添加换行符。
    • A. √
    • B. ×

七、异常处理

7.1 异常处理与程序健壮性

  • 程序正常与非正常结束
    在这里插入图片描述
  • 异常
    在这里插入图片描述
  • 异常处理
    在这里插入图片描述
  • 异常关键字
    在这里插入图片描述
  • 除数为0的问题
    在这里插入图片描述
  • 异常处理的执行流程
    在这里插入图片描述
  • 一个完备的异常处理器
    在这里插入图片描述
  • 错误处理原则
    在这里插入图片描述
  • 小结
    在这里插入图片描述
    Python内建异常类的基类是_BaseException_

7.2 异常处理实际使用

  • 常见异常
    在这里插入图片描述
    在这里插入图片描述

  • 异常实例
    在这里插入图片描述
    在这里插入图片描述

  • 异常特殊用法
    在这里插入图片描述

    • 跳出多层循环
      在这里插入图片描述
    • 从函数递归调用中返回
    • 八皇后问题
      在这里插入图片描述
      在这里插入图片描述
  • 小结
    在这里插入图片描述

  1. 异常处理时,如果一个except后面没有写任何参数,那么表示该except可以捕获任意类型的异常。
    • A. √
    • B. ×
  2. 在捕获到异常时,如果不想处理异常,而是让程序继续运行下去,可以使用pass语句
    • A. √
    • B. ×
  3. Python中,对于代码中的每个try,必须至少有一个except与它匹配
    • A. √
    • B. ×

使用__finally_关键字,可以保证之后的代码块无论是否发生异常,一定会被执行。

总结

1.查看变量的类型,内存地址,所占字节的大小:

# 利用内置type()函数
>>> a = 1+1j
>>> a
(1+1j)
>>> type(a)
<class 'complex'>

# 利用内置函数id(),是以十进制显示
>>> id(a)
2294149873552

# 查看变量所占字节的大小
>>> import sys
>>> print(sys.getsizeof(a))
32

2.不管从键盘上想要获取什么样数据,input函数都是字符形

3.format格式化函数的使用

>>>"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'
 
>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'
 
>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'

也可以设置参数:

print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))

# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必须的

字典

# 通过字典设置参数
site = {
    
    "name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))

print('{name}的女朋友是{gf},我也喜欢{gf}!'.format(**{
    
    'name':'钢铁侠','gf':'小辣椒'}))
# 钢铁侠的女朋友是小辣椒,我也喜欢小辣椒!

4.参数的序列解包

传递参数时,可以通过在实参序列前加星号将其解包,然后传递给多个单变量形参。
在这里插入图片描述
5.map函数

map() 函数会根据提供的函数对指定序列做映射。

  • 实例
>>> def square(x) :         # 计算平方数
...     return x ** 2
...
>>> map(square, [1,2,3,4,5])    # 计算列表各个元素的平方
<map object at 0x100d3d550>     # 返回迭代器
>>> list(map(square, [1,2,3,4,5]))   # 使用 list() 转换为列表
[1, 4, 9, 16, 25]
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))   # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
>>>

猜你喜欢

转载自blog.csdn.net/HG0724/article/details/113838156
今日推荐