python

本文详细介绍了Python的基础知识,包括起源、版本、应用、安装、注释、数据类型、变量、运算符、字符串、列表、元组、字典、选择语句(if)、循环语句、函数、异常处理、文件操作、模块和面向对象编程。通过实例演示了Python的常用操作,适合初学者学习。
摘要由CSDN通过智能技术生成

Python简介

第一章 简介

1.起源

Python是由吉多-范罗苏姆在1989年圣诞节发明的一个解释程序

Python的中文释义:蟒蛇

Python是一门解释型语言,运行前无需编译

Python的版本

Python2:最初发布于2001年,是过去的版本,于2020年停止维护

Python3:最初发布于2008年,我们学习的版本

格言: Life is short, you need Python! (人生苦短,我用Python~)

2.应用

自动化测试:编写自动化脚本

Web开发:豆瓣、知乎、YouTube

人工智能:语音助手、智能音箱

云计算:云服务器

第二章 安装 python

2.1 python

在这里插入图片描述

2.2 验证

在命令行中输入: python

如果能够看到版本号以及进入交互模式,即表示安装成功

第一个Python程序

首先进入交互模式

输入第一行代码: print(“HelloWorld”) ,在屏幕上输出 HelloWorld

2.3 下载地址

官网:https://www.python.org/download

第三章 安装 pycharm

3.1 下载地址

官网:https://www.jetbrains.com/pycharm

在这里插入图片描述

3.2 安装

默认安装即可

3.3 创建项目

在这里插入图片描述

3.4 基本布局

在这里插入图片描述

3.5 设置字体

在这里插入图片描述

3.6 设置主题

在这里插入图片描述

3.7 设置运行代码快捷键

在这里插入图片描述

第四章 注释

4.1定义

注释是用来解释说明代码的作用的

注释本身是不会被运行的

4.2注释方法

单行注释用 # 表示

只在一行生效,可以写在代码后面,也可以单独写一行

多行注释

用一对 三单引号/三双引号 表示

多行注释可以换行,多行注释有特殊用途(文档注释)

注释快捷键

选中代码,按 ctrl + / ,即可快速注释

若要取消注释,再按一次 ctrl + / 即可

第五章 基础数据5类型

# type()可以查看数据的类型 
# str 字符串
print(type("abc")) 
print(type('')) # 空字符串 
print(type("i'm ok")) # 外双里单 

# int 整数 
print(type(2)) 
print(type(-2)) 
print(type(0)) 

# float 浮点数 
print(type(0.0)) 
print(type(-3.0)) 

# bool 布尔值 
print(type(True)) 
print(type(False)) 

# Nonetype 空 
print(type(None))

第六章 变量

6.1 定义

变量是一个容器,可以用来存储任意类型的数据

变量实质上是储存在内存中的一个值

变量定义好以后可以通过变量名称无限次的调用

6.2 变量命名规范

只能包含数字、字母以及下划线

不能用数字开头

不能使用系统关键字

区分大小写

# 只能包含数字、字母、下划线

student_1 = “zs”

print(student_1)

# 不能使用系统关键字

# True = 2 # ×

true = 2

print(true)

import keyword # 导入关键字模块

print(keyword.kwlist) # 查看关键字列表

# 区分大小写

a = 1

A = 2

print(A)

6.2.1 推荐命名方式

驼峰命名法:

大驼峰:每个单词的首字母大写,如 FirstLove

小驼峰:从第二个单词开始,首字母大写,如 firstLove

使用下划线拼接,如 first_love

6.3 赋值3方式

普通赋值:将右边的数据赋给左边的变量

序列解包赋值:在一行代码中,同时给多个变量赋不同的值,按照位置关系一一对应

链式赋值:在一行代码中,同时给多个变量赋同一个值

num = 1 # 普通赋值 

num1, num2 = 10, 9 # 序列解包赋值 

print(num1, num2) 

a = b = c = 99 # 链式赋值 

print(a, b, c) 

第七章 运算符

7.1 基础运算符

运算符描述
+加法,除了计算整数和,还可以拼接字符串
-计算两数之差
*计算两数的乘积,还可以复制字符串
/计算两数之商,整数相除,结果必为浮点数,使用int()可以进行 类型转换
//取整
%取余
**幂运算
print(1 + 2) 
print(1 - 2) 
print(1 * 2) 
print(8 / 2) # 整数相除,结果必为浮点数 
print(int(8 / 2)) # 类型转换 
print("a" + "99") # 加法还可以拼接字符串 
print("tashi" * 10) # 复制字符串 
# 取整除 
print(10 // 3) 
# 取余数 
print(10 % 3) 
# 幂运算 
print(2 ** 4)

7.2 复合赋值

num = 1 
print(num) 
num += 1 # num = num + 1 
print(num) 
num *= 2 # num = num * 2 
print(num) 
num /= 2 # num = num / 2 
print(num)

7.3 逻辑运算符

and:和,并且

or:或者

not:非

print(True and True) # 两边为真,结果就为真 
print(True and False) # 一边为假,结果就为假 
print(False or True) # 一边为真,结果就为真 
print(not True) # 非真即假 
print(not False) # 非假即真 
print(3 > 2 and 3 < 2)

7.4 比较运算符

运算符描述
>大于
<小于
>=大于等于
<=小于等于
!=不等于
==等等于
print(3 > 2) # True 
print(3 < 2) # False 
print(3 >= 3) # True 
print(3 <= 2) # False 
print(3 == 2) # False 判断两边是否相等 
print(3 != 3) # False 判断两边是否不相等

7.5优先级

先算小括号内,再算小括号外

第八章 字符串

字符串是由一对 单引号/双引号/三单引号/三双引号 包围

特点:

  • 有序:有索引值
  • 不可变:不能直接修改自身

8.1 索引值与取值

在这里插入图片描述

8.2 取单个值

string = "HelloWorld" 
# 取值
# 语法:字符串[索引值] 
print(string[5]) # 取出W 
print(string[-5]) # 取出W 
print(string[-1]) # 取出d 
print(string[0]) # 取出H

8.3 切片

语法: `数据/变量名[起始索引值:结束索引值:步长]

注意:只包含开始不包含结束

步长表示每隔几个取一个,步长为负数时,反过来取

# 切片 
# 语法:字符串[起始索引值:结束索引值:步长] 
# 只包含开始不包含结束 
print(string[0:2]) # 取出He 
print(string[4:7]) # 取出第5-7个字符 
print(string[-2:]) # 取出ld 
print(string[8:]) # 取出ld 
print(string[:]) # 从头取到尾 
print(string[::2]) # 从头取到尾,每隔2个取1个 
print(string[::3]) # 从头取到尾,每隔3个取1个 
print(string[::-1]) # 反转字符串 
print(string[::-5]) # 从右往左取,每隔5个取1个

8.4****转义字符

定义:用 \ 加上一些字符来表示特殊键位 
常见的转义字符: 
换行: \n 
制表符(补齐键): \t ,tab

如何使转义字符不转义: 
方法一:在每个转义字符的斜线后面再加一根斜线 
方法二:直接在整个字符串前加个r

print("tashi\ntashi") # 换行符 
print("tashi\ttashi") # 制表符(缩进) 
print("tashi\ttashi") 
print("D:\\n\\t\\test.txt") # 方法一 
print(r"D:\n\t\test.txt") # 方法二

8.5 输入字符串

输入字符串使用: input(输入提示)

注意:在Python3中,所有输入的数据都会被保存成字符串类型,如果需要保存成其他类型,需要进行类型转换

print("欢迎使用它石管理系统~") 
username = input("请输入您的用户名:") 
password = input("请输入您的密码:") 
age = int(input("请输入您的年龄:")) 
money = float(input("请输入您的余额:")) 
print(username) 
print(type(username)) 
print(type(age)) 
print(type(money))

8.6 格式化

字符串的格式化是指将字符串按照一定的格式打印或者填充

字符串的格式化方法有如下两种

方法一:使用百分号格式化 
先用下面的占位符占好位置,再将值传入: 
%s :字符串 
%d :整数 
%f :浮点数,若要指定精度,则为 %.nf , n 是一个整数,保留几位就写数字几 

print("欢迎使用它石管理系统~") 
username = input("请输入您的用户名:") 
password = input("请输入您的密码:") 
age = int(input("请输入您的年龄:")) 
money = float(input("请输入您的余额:"))

# int %d float %.nf string %s 
print("您输入的用户名是:%s,密码是:%s,年龄是:%d,余额是:%.2f元。" %(username, password, age, money))
方法二:使用format函数格式化 
统一使用 {} 占位,无需考虑数据的类型 

print("您输入的用户名是:{},密码是:{},年龄是:{},余额是:{} 元。".format(username, password, age, money))

8.7 字符串常用3方法

替换: replace(旧值,新值)

查找: find(关键字) ,返回第一个找到的字符的索引值,找不到返回 -1

切割: split(切割标志) ,返回列表

string = "china" 
print(id(string)) 
string = string.replace("c", "C") # 将c替换成C 
print(id(string)) 
print(string) 
result = "code:200, msg:login success, msg" 
print(result.find("msg")) # 在字符串中查找指定字符,返回首字母索引 
a = "a|b|c|d" 
print(a.split("c")) # 切割字符串,返回列表!!! 
ip = "IPv4 地址 . . . . . . . . . . . . : 192.168.52.57" 
print(ip.split(": "))
## 不需要记忆,,有个印象 
a = ' abCd abcd ' 
b = a.upper() # 转成大写 
c = a.count('ab') # 统计ab 出现的次数 
d = a.rstrip() # 去掉右边的空格 
e = a.lstrip() # 去掉左边的空格 
f = a.strip() # 去掉两边的空格 
= a.swapcase() # 大小写互换!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
h = a.lower() # 全部变小写 
i = a.title() # 每个单词首字母大写,其他字母小写

第九章 列表(list)

9.1 定义

列表是Python中的一种基础数据结构,由 [] 包围

列表中可以存放任意类型的数据,每个数据被称作一个元素,元素间用逗号隔开

# 定义一个数字列表 
nums = [1, 2, 3] 
print(nums) 
print(type(nums)) 
# 定义一个手机品牌的列表 
phone = ["HUAWEI", "OPPO"] 
print(type(phone))

9.2 快速生成数字列表

 range(起始值,结束值,步长) 

\# 生成一个包含1-100之间所有的整数的列表 

\# range 迭代对象 

nums = list(range(1, 101)) 

print(type(nums)) 

print(nums) 

\# 生成一个包含1-100之间所有的奇数的列表 

nums = list(range(1, 101, 2)) 

print(nums) 

\# 生成一个包含1-100之间所有的偶数的列表 

nums = list(range(2, 101, 2)) 

print(nums)

9.3 特点

  • 有序
  • 可变

9.4取值

# 定义一个手机品牌的列表 

phone = ["HUAWEI", "OPPO", "XiaoMi", "ViVO", "Apple", "MeiZu"] 

\#取出 MeiZu 

print(phone[-1]) 

列表切片 

\# 定义一个手机品牌的列表 

phone = ["HUAWEI", "OPPO", "XiaoMi", "ViVO", "Apple", "MeiZu"] 

\# 列表切片 

print(phone[:3]) 

\# 嵌套取值 

foods = [["广东", "肠粉"], ["东北", "水饺", ["10块钱一份", "便宜好 

吃"]], ["湖北", "热干面"]] 

print(foods[1][1]) # 取出水饺 

print(foods[-1][-1]) # 取出热干面 

print(foods[1][-1][0]) # 取出水饺的价格

9.5 常用方法

增加
追加元素到列表最后: append(元素) 
在指定的索引位置插入: insert(索引,值) 

nums = [3, 1, 2, 3] 
print(id(nums)) 
nums.append(4) # 追加 
nums.insert(0, "a") # 在指定的索引值前插入元素值 
print(nums)
删除
根据索引删除元素: pop(索引) ,不填则删除最后一个 
根据元素值删除元素: remove() , 如果被删除的值存在多个,只会删除第一个 
nums.pop(0) # 根据指定索引值删除元素,不填索引值则删除最后一个元素 
print(nums) 
nums.remove(3) # 根据值移除元素,如果有多个,则删除第一个 
print(nums)
合并:加号 
a = [1, 2] 
b = [3, 4] 
c = a + b 
print(c)
修改:先取到值,再重新赋值 
a = [1, 2] 
a[1] = "B" # 先取到值,再重新赋值 
print(a) 
统计
nums = [4, 2, 1, 3, 9] 
print(max(nums)) # 最大值 
print(min(nums)) # 最小值 
print(len(nums)) # 统计有几个元素 
反转
b = [2, 1] 
b.reverse() # 反转列表 -- 自身翻转 
print(b[::-1]) # 反转列表(切片法) -- 新建一个列表翻转 
排序
# 从小到大 
nums.sort() 
# 从大到小 
nums.sort(reverse=True) 
print(nums)
字符串转列表 
a = '1234567' 
a = list(a) # 得到 ['1','2','3','4','5','6','7' ]

第十章 元组(tuple)

10.1 定义

元组也是Python中的一种基础数据结构,由 () 包围 
元组中可以存放任意类型的数据,每个数据被称作一个元素,元素之间用逗号隔开 
注意:当元组中只有一个元素时,必须要以逗号结尾,否则就不是元组 

nums = (1, 2, 3) 
print(type(nums)) 

10.2 特点

有序:有索引值
不可变:不能修改自身

10.3 常用方法

# 生成一个包含1-100之间的所有整数元组 
nums = tuple(range(1, 101)) 
print(nums) # 统计 
print(max(nums)) 
print(min(nums)) 
print(len(nums)) 
# 列表与元组互转 
nums = list(nums) # 元组-->列表 
nums.append(101) # 列表追加元素 
nums = tuple(nums) # 列表-->元组 
print(nums)

第十一章 字典(dict)

11.1 定义

字典是Python中的一种基础数据结构,由 {} 包围 
字典中的数据是以 键值对 的形式存在的,每个 键值对 被称作一个元素,元素之间用逗号隔开 
注意:字典中的键不能重复,否则只会保留最后一个;键不能使用可变类型的数据,否则会报错 

# 定义一个字典 
student = {"name":"zs", "age":19, "name2":"ls"} 
# print(type(student)) 
print(student)

11.2 特点

无序 == 3.7及以后字典有序

可变

11.3 常用方法

student = {"name":"zs", "age":19, "name2":"ls"} 
print(student["age"]) # 根据键取到值 
student["age"] += 1 # 根据键修改值 
student.pop("name2") # 根据键删除键值对 
student["name2"] = "ls" # 根据键修改值,如果键不存在,则自动添加 
print(student) 
# 获取所有的键 
print(student.keys()) 
# 获取所有的值 
print(student.values()) 
# 获取所有的键值对 
print(student.items()) 

11.4 总结:

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);

可变数据(3 个):List(列表)、Dictionary(字典)、 Set(集合)

第十二章 选择语句(if)

12.1 程序的三大运行模式

在这里插入图片描述

12.2 if else

if 条件满足: 
    条件满足的时候做的事情1 
    条件满足的时候做的事情2 
    ... 
else: 
    条件不满足的时候做的事情1 
    条件不满足的时候做的事情2 
    ... 
    
 
# 酒吧:保安询问每个顾客的年龄,18岁及以上可以进入,否则不能进入 
age = int(input("请问您今年多大了?")) 
if age >= 18: 
    print("欢迎光临~") 
else: 
    print("抱歉,您不能进入~")

12.3 if嵌套

if 条件: 
    条件满足的时候做的事情1 
    条件满足的时候做的事情2 
    if 条件: 
        条件满足的时候做的事情 
    else: 
        条件不满足的时候做的事情 
else: 
    条件不满足的时候做的事情1 
    条件不满足的时候做的事情2 
    ...
    
    
age = int(input("请问您今年多大了?")) 
if 18 <= age <= 50: 
    print("欢迎光临~") 
    beer = input("请问您带了酒水吗?") # True False 
    if beer == "True": 
        print("请先将酒水交给我保管") 
        print("请跟我来") 
    else:
        print("请跟我来") 
else:
    print("抱歉,您不能进入~")

12.4 if elif

if 条件1: 
    条件1满足的时候做的事情 
elif 条件2: 
    条件2满足的时候做的事情
elif 条件3: 
    条件3满足的时候做的事情
... 
else: 
    以上条件都不满足时做的事情
    
    
    
print("欢迎使用它石牌BMI计算器~") 
weight = float(input("请输入您的体重(kg):")) 
height = float(input("请输入您的身高(m):")) 
bmi = round(weight / height ** 2, 1) 
if bmi <= 18.4: 
    print("您的体型偏瘦,多吃点~") 
elif 18.5 <= bmi <= 23.9:
    print("您的体型正常,继续保持~") 
elif 24.0 <= bmi <= 27.9: 
    print("您的体型过重,多运动~") 
elif bmi >= 28.0: 
    print("您的体型肥胖,不要再吃了~") 
else:
    print("您输入的信息有误~")
    
    
# 季节判断:输入任意月份,提示对应的季节 
print("欢迎使用季节查询器~") 
month = int(input("请输入需要查询的月份:")) 
if 3 <= month <= 5: 
    print("春季") 
elif 6 <= month <= 8: 
    print("夏季") 
elif 9 <= month <= 11: 
    print("秋季") 
# elif month == 12 or 1 <= month <= 2: 
elif month in (1, 2, 12): 
    print("冬季") 
else:
    print("您的输入有误~")

12.5猜拳游戏

import random # 导入随机数模块 
print("欢迎进入猜拳游戏~") 
player = int(input("请输入石头(0)剪刀(1)布(2):")) 
computer = random.randint(0, 2) # 生成0-2之间的随机整数 
if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player == 2 and computer == 0): 
    print("恭喜您赢了") 
elif player == computer: 
    print("平局了~") 
else: 
    print("抱歉,您输了~")

第十三章 循环语句

13.1 while

while 条件: 
    条件满足时重复做的事情 
# 打印1-10之间的所有的整数 
num = 1 # 初始值
while num <= 10: 
    print(num) 
    num += 1 

# 打印1-10之间的所有的奇数 
# 类似步长写法 
i = 1 
while i <= 10: 
    print(i) 
    i += 2 
    
# 循环+判断写法 
i = 1 
while i <= 10: 
    if i % 2 != 0: 
        print(i) 
        i += 1 
        
# 打印1-10之间的所有的偶数 
# 类似步长写法 
i = 2 
while i <= 10: 
    print(i) 
    i += 2
    
# 循环+判断写法 
i = 1 
while i <= 10: 
    if i % 2 == 0: 
        print(i)
        i += 1 
        
# 输入任意5个整数,将它们按照从大到小的顺序排序并输出 
i = 1 
nums = [] 
while i <= 5: 
    num = int(input("请输入一个整数:")) 
    nums.append(num) 
    i += 1 
    nums.sort(reverse=True) 
print(nums) 
    
# 模拟一个登录系统,当用户为admin,密码为tashi123时登录成功,否则登录失败,最多只有三次机会 
print("欢迎来到它石管理系统~") 
i = 1 
while i <= 3: 
    username = input("请输入您的用户名:") 
    password = input("请输入您的密码:") 
    if username == "admin" and password == "tashi123": 
        print("登录成功") 
        break # 跳出循环 
    else: 
        print("登录失败") 
        i += 1 
        
# 猜数字:电脑随机给一个随机整数(0-5),用户输入数字进行猜测,机会无限制,猜对截止 
import random 
num = random.randint(0, 5) 
print(num) 
while True: 
    player = int(input("请输入您猜的数字:")) 
    if player == num: 
        print("恭喜您,猜对了~") 
        break 
    else: 
        print("抱歉,您猜错了") 
        
# 打印1-10(包含1 10)之间的所有数字,排除5 
i=0 
while i<10: 
    i+=1 
    if i%5==0: 
        continue 
    print(i)
13.1.1 双层循环
# 打印矩形 
i = 1 
while i <= 9: 
    print("*********") 
    i += 1 
    
# 打印矩形 (双层循环)
i = 1 
while i <= 9: 
    j = 1 
    while j <= 9: 
        print("*", end="") 
        j += 1 
    print() 
    i += 1 
    
# 打印三角形 (双层循环) 
i = 1 
while i <= 9: 
    j = 1 
    while j <= i: 
        print("*", end="") 
        j += 1 
    print() 
    i += 1 
    
# 打印九九乘法表 
i = 1 
while i <= 9: 
    j = 1 
    while j <= i: 
        print(f"{j}*{i}={j * i}", end="\t") 
        j += 1 
    print() 
    i += 1

13.2 for

格式

for 临时变量 in 序列/对象:

​ 重复做的事情

作用

一般用来 遍历 序列/对象

for循环次数与序列/对象的长度值一致

案例

# =======================遍历========================== 
# 字符串 
for i in "abc": 
    print(i) 
    
# 列表 
for i in [1, 2]: 
    print(i) 
    
# 元组 
for i in ("A", "B"): 
	print(i) 
    
# range
# 打印1-10之间的所有数字 
for i in range(1, 11): 
    print(i)
    
# 打印15次tashi 
for i in range(15):
    print("tashi") 
    
# 遍历所有键 
student = {"name":"zs", "age":19, "sex":"boy"}
for i in student.keys():
    print(i)     
# 遍历所有值 
for i in student.values(): 
    print(i) 
# 遍历所有键,值 
for x,y in student.items(): 
    print(x,y) 
    
#练习题     
# 现有student = {"name":"zs", "age":19, "sex":"boy"...},请将该数 据输出成name=zs,age=19... 
for k,v in student.items(): 
    print(f"{k}={v}")

练习题

# 输入任意5个整数,将它们按照从大到小的顺序排序并输出 
nums = [] 
for i in range(1, 6): 
    num = int(input(f"请输入第{i}个整数:")) 
    nums.append(num) 
    nums.sort(reverse=True) 
print(nums) 

# 模拟一个登录系统,当用户为admin,密码为tashi123时登录成功,否则登录失败 
# 最多只有三次机会 
print("欢迎来到它石管理系统~") 
for i in range(3): 
    username = input("请输入您的用户名:") 
    password = input("请输入您的密码:") 
    if username == "admin" and password == "tashi123": 
        print("登录成功") 
        break 
    else:print("登录失败") 
        
# 统计任意字符串的长度值,不能使用len() 
string = input("请输入需要统计长度的字符串:") 
num = 0 
for i in string: 
    num += 1 
print(f"该字符串的长度值是:{num}") 

# 统计任意字符串中的数字与字母的个数 
# abc123 
string = input("请输入需要统计长度的字符串:") 
num = 0 
letter = 0 
for i in string:
    # if i in "1234567890": 
    if i.isdigit(): 
        num += 1 
    # elif i in "abcdefghijklmnopqrstuvwxyzABCD...": 
    elif i.isalpha(): 
        letter += 1 
print("该字符串中,数字有{}个,字母有{}个".format(num,letter)) 

# 数7游戏:打印1-100之间的所有整数,不包含7的倍数以及数字中带有7的数字 
for i in range(1, 101): 
    # if i % 7 != 0 and "7" not in str(i): 
    if i % 7 != 0 and str(i).find("7") == -1: 
print(i) 
        
# 求1-100之间的偶数和 
res = 0 
for i in range(2, 101, 2): 
    res += i 
 print(res) 

# 现有a = 1, b = 2, 请将这两个变量的值交换 
a, b = 3, 5 
a, b = b, a 
print(a, b) 

# 斐波那契数列(兔子数列) 1 1 2 3 5 8 13 
# 生成24个斐波那契数列
nums = [] 
a, b = 0, 1 
for i in range(24): 
    nums.append(b) 
    a, b = b, a + b 
print(nums) 

# 0 1 1 2 3 5 8 13 
a = 0 
b = 1 
for i in range(10): 
    c = b + a 
    a = b 
    b = c 
    print(c) 
    
# 打印字符串 ,跳过l 
for i in 'Hello': 
    if i=='l': 
        continue 
    print(i)

双层循环

# 打印矩形 
for i in range(1, 10): 
    print("*********") 
    
# 打印矩形(双层循环) 
for i in range(1, 10): 
    for j in range(1, 10): 
        print("*", end="\t")
print() 

# 打印三角形 
for i in range(1, 10): 
    for j in range(1, i + 1): 
        print("*", end="\t") 
    print() 
    
# 打印九九表 
for i in range(1, 10): 
    for j in range(1, i + 1): 
        print(f"{j}*{i}={j * i}", end="\t") 
    print()

第十四章 函数

14.1 定义

函数本质上就是一段具有一定功能的并且可以重复使用的代码

通过 函数名() 调用函数

14.2 格式

def 函数名(): 
    代码块
    
案例
# 定义一个打印古诗的函数 
def print_gushi(): 
    print("白日依山尽") 
    print("黄河入海流") 
    print("欲穷千里目") 
    print("更上一层楼") 
print_gushi() # 调用函数

在这里插入图片描述

14.3 文档注释

文档注释一般情况用 一对三双引号/三单引号 表示

文档注释用来解释说明函数的作用

通过 help() 可以查看函数的文档注释

def print_poetry(): 
    """打印古诗:《登鹳雀楼》""" 
    print("白日依山尽") 
    print("黄河入海流") 
    print("欲穷千例目") 
    print("更上一层楼") 
help(print_poetry) # 查看函数的文档注释

14.4 函数的参数

形式参数: 函数定义时的参数

实际参数: 函数调用时传入的参数

# 定义一个函数,可以计算两数之和 
def func(a, b): # 形式参数 
    # a, b = 1, 2 
    print(a + b) 
func(12, 11) # 实际参数 
func(2, 11) # 实际参数
def feibo(n): 
    nums = [] 
    a, b = 0, 1 
    for i in range(n): 
        nums.append(b) 
        a, b = b, a + b 
        print(nums) 
feibo(15)

14.5 参数的传递方式

位置传递:形参与实参按照位置关系一一对应

参数的默认值:形参可以拥有默认值,有默认值的形参如果不传入实参则使

用默认值,有默认值的形参必须要放到没有默认值的形参的后面,否则会报错

关键字传递:通过指定形参名来传入值,可以不受位置关系的影响

def func(a, b=10): # 形式参数 
    print(a - b) 
func(12, 11) # 位置传递 
func(b=12, a=3) # 关键字传递,乱序传入 
func(9) # 默认值

14.6 返回值

函数使用 return 将执行结果返回给调用者,这就是返回值 ,

函数中如果没有 return ,那么返回值就为 None

函数一旦执行到 return ,就不会再继续往下执行

可以返回多个值 return a,b 默认是

def func(a, b): 
    return a + b # 返回值 

注意:一旦函数能够得到结果,都建议写返回值,将结果返回给调用者

# 猜一猜 为什么? 
def hi(name="xiaoming"): 
    def greet(): 
        return "now you are in the greet() function" 
    
    def welcome(): 
        return "now you are in the welcome() function" 
    
    if name == "xiaoming": 
        return greet 
    else:
        return welcome 
a = hi() 
print(a) # 打印的什么?? 
print(a()) # 为什么和上面的不一样

14.7 函数递归

#求一个数的阶乘 
def get_num(n): 
    if n>=2: 
        return n * get_num(n-1) 
    else:
        return n

14.8 全局&局部变量

局部变量: 定义在函数内部的变量,只在函数内部生效

全局变量: 定义在函数外部的变量,在整个代码文件中生效

可以使用 global 将局部变量声明成全局变量

num = 99 # 全局变量 
def func(a, b): 
    print(num) 
    global num2 # 将局部声明成全局变量 
    num2 = 80 # 局部变量 
    print(num2) 
    return a + b # 返回值 

func(1, 2) 
print(num) 
print(num2)

第十五章 异常处理

15.1 捕获异常

定义:当程序出现异常后,程序会终止运行。如果希望暂时先跳过这个异常,继续往后面执行,那么需要捕获异常。

格式 :

try:
    可能会出现异常的代码 
except Exception as e: 
    出现异常后执行的代码 
else:
    没有异常时执行的代码 
finally: 
    无论如何都要执行的代码

案例 :

print("开始了") 
# a = "a计划" 
b = "b计划" 
try:
    print(a) 
except Exception as e: 
    print("程序报错了,错误信息是:{}".format()) 
    print(b) 
else:
    print("没有任何异常") 
finally: 
    print("我始终都会执行") 
print("结束了")

15.2 抛出异常

定义:如果希望程序在指定情况下终止运行,那么则需要抛出异常。

格式: raise Exception(异常提示)

案例

print("程序开始了") 
num = int(input("请输入一个大于100的整数:")) 
if num > 100: 
    print("输入成功") 
else:
    try:
        raise Exception("输入有误,请输入一个大于100的整数!") 
    except Exception as e: 
        print("程序出现问题了,原因是:{}".format(e)) 
# 将错误日志写入到日志文件中 持久化保存日志 
print("程序结束了")

第十六章 文件操作

16.1 打开/创建文件

打开/创建文件使用 open(fifile,mode)

函数,该函数参数定义如下:

fifile :文件名,可以是包含路径的文件名

mode :文件打开模式

r :只读模式,文件不存在则报错, 默认模式

w :写入模式,文件不存在可以自动创建,会覆盖原内容

a :追加模式,文件不存在可以自动创建

# 打开/创建文件 
file = open("test1.txt", "a") 
# 写入 
file.write("ABC") 
# 关闭文件 
file.close()

16.2 写入

# 写入 
file.write("ABC")

16.3 关闭文件

关闭文件使用 close()

检测文件是否关闭,可以使用 closed (已关闭返回True,未关闭返回False)

16.4 自动关闭文件

with open("gushi.txt", "w") as f: 
    f.write("白日依山尽\n黄河入海流") 
print(f.closed)

16.5 中文乱码处理

with open("gushi.txt", "w", encoding="utf-8") as f: 
    f.write("白日依山尽\n黄河入海流") 
print(f.closed)

16.6 读取

with open("gushi.txt", encoding='utf-8') as f: 
    # print(f.read()) # 读取所有内容 
    # print(f.read(3)) # 读取前三个字符 
    # print(f.read(3)) # 读取前三个字符,多次使用,会从上次读取位置继续往后读取 
    # print(f.readline()) # 按行读取,每次读一行 
    # print(f.readline()) # 按行读取,多次使用,会从上次读取位置继续往后读取
    print(f.readlines())

16.7 应用:文件备份

# 输入任意一个文件名,将其进行备份 
# 如:abc.txt abc-副本.txt 
# 1. 拿到需要备份的文件名(input) 
# 2. 组装新文件名 
# 3. 读取源文件 
# 4. 将读取内容写入到新文件 
file_name = input("请输入需要备份的文件名:") 
new_file = file_name.replace(".", "-副本.") 
# suoyin = file_name.find('.') 
# new_file = file_name[:suoyin] + "-副本" + file_name[suoyin:] 
# temp = file_name.split(".") 
# new_file = temp[0] + "-副本." + temp[1] 
with open(file_name, encoding='utf-8') as f: 
    res = f.read() 
with open(new_file, "w", encoding="utf-8") as f: 
    f.write(res) 
print("备份完成!")

16.8 大文件的读写

当文件比较大的时候,如果一次性 read,会造成内存负载过大,程序崩掉 
#打开文件 
file_name = input('请输入你要备份的文件名(text.txt):') 
index_a = file_name.find('.') 
file_name_new = file_name[0:index_a]+'.text_bak' 
file_old = open(r'C:\Users\Administrator\Desktop\text.txt','r') 
file_new = open(r'C:\Users\Administrator\Desktop\{}'.format(file_name_new),'w')



在线安装
在命令行中,输入 pip install 模块名 安装即可(若要指定版本号,模块名后加两个等号,再加版本号)
安装完成后,可以通过 pip list 去验证是否安装成功
如果因为下载超时导致安装失败,则指定国内下载源,如下:
手动安装
while True: content = file_old.read(1024) if len(content)==0: break file_new.write(content) file_old.close() file_new.close()

第十七章 模块

17.1 导入模块

import 模块 
from 文件/模块 import 函数/方法 
from 文件/模块 imp 
# import random # 导入整个模块 
# from random import randint # 从模块中导入某个函数 
from random import * # 导入模块中的所有方法 
# print(random.randint(0, 10)) 
print(randint(0, 10)) # 生成随机整数 
print(uniform(0, 10)) # 生成随机浮点数

17.2 安装模块

在线安装
在命令行中,输入 pip install 模块名 安装即可(若要指定版本号,模块名后加两个等号,再加版本号)
安装完成后,可以通过 pip list 去验证是否安装成功

在这里插入图片描述

如果因为下载超时导致安装失败,则指定国内下载源,如下:

pip install requests==2.24.0 -i https://mirrors.aliyun.com/pypi/simple/

手动安装

进入官网: https://pypi.org/ ,搜索并下载需要安装模块的压缩包 
解压下载好的压缩包,进入到解压好的目录中,确认有 setup.py 文件 
在当前位置打开命令行窗口,输入 python setup.py install 进行安装 
安装完成后,可以通过 pip list 去验证是否安装成功

在这里插入图片描述

17.3 常用模块

time
import time 
# 获取当前时间 
print(time.ctime()) # current time 
# 暂停/休眠 
time.sleep(0.5) 
# 获取当前时间,指定格式 2021-01-14 17:22:01 year month day hour minute second 
print(time.strftime("%Y-%m-%d %H:%M:%S"))
OS
import os 
# import shutil 
# 获取当前文件的路径 
print(os.getcwd()) # get current working directoryjson 
# 创建目录 
os.mkdir("tashi") 
# 删除目录 
os.rmdir("tashi") 
# remove 
# 删除文件 
os.remove(r"D:\202018\tashi\demo.txt") 
# shutil.rmtree("tashi") 

#执行其他程序文件 胶水语言的最好体现 (了解!!!) 
import os 
print('hello world') 
os.system("sh 1.sh")
json
res = '{"name":"zs", "age":19}' # json 
res = json.loads(res) # 将json-->dict 
print(type(res)) 
print(res["age"]) 
res["age"] += 1 
print(res) 
res = json.dumps(res) # 将dict-->json 
print(res) 
print(type(res))

第十八章 面向对象 == 封装 继承 多态

18.1 面向过程&面向对象

面向过程:按照业务逻辑从上往下编写代码,所有步骤都要亲力亲为(买鸭蛋… 吃烤鸭)

面向对象:将数据与函数绑定到一起,定义成 类, 通过类生成对象,减少代码编写,提高开发效率(买烤鸭)

18.2 类与对象

类:泛指一类事物

对象:单指某一个具体事物

18.3 类的组成部分

类名:这一类事物共同的名字

属性:这一类事物共同具有的特征 , 其实就是变量,只是放在了 类里面

方法:这一类事物具有的功能 , 其实就是函数,只是放在了 类里面

18.4 定义类

class Dog: # 类名大驼峰 
    # pass # 占位符 
    # 属性值 
    def eat(self): # 方法 
        print("狗正在吃东西") 
xiaohuang = Dog() # 创建对象,实例化 
xiaohuang.eat() # 对象调用类中的方法 
xiaohei = Dog() # 可以创建第二个对象 
xiaohei.eat()

18.5 初始化

class Dog: # 类名大驼峰, 经典类 新式类 
    # pass # 占位符 
    # 属性值 
    def __init__(self, color, weight): # 初始化方法, 初始化会在实例化时自动运行 
        self.color = color 
        self.weight = weight 
    def eat(self): # 方法 
        print(f"{self.color}的狗正在吃东西") 
    def run(self): 
        print(f"{self.weight}kg的狗正在跑") 
xiaohuang = Dog("黄色", 10) # 创建对象,实例化 
xiaohuang.eat() # 对象调用类中的方法 
xiaohuang.run()

18.6 继承

定义:

当一个类属于一个大类中的一小类,那么这个小类就可以继承大类。

小类被称作子类,大类即父类。

在这里插入图片描述

特点

子类可以使用父类中的所有方法

子类可以新增自己的方法

子类可以修改父类中的方法

class HaShiQi(Dog): 
    def chaijia(self): # 子类可以新增自己独有功能 
        print("哈士奇正在拆家") 
    def eat(self): # 子类可以修改父类中的方法 
        print("哈士奇正在咬骨头") 
xiaoha = HaShiQi("黑白相间", 15) 
xiaoha.eat() # 子类可以使用父类中的所有方法 
xiaoha.chaijia()

以面向对象编思想写计算器案例

class Calc: 
    def __init__(self, num1, num2): 
        self.num1 = num1 
        self.num2 = num2 
    def jiafa(self): 
        return self.num1 + self.num2 
    def jianfa(self): 
        return self.num1 - self.num2 
    def chufa(self): 
        return self.num1 / self.num2 
    def chengfa(self): 
        return self.num1 * self.num2

写代码,所有步骤都要亲力亲为(买鸭蛋… 吃烤鸭)

面向对象:将数据与函数绑定到一起,定义成 类, 通过类生成对象,减少代码编写,提高开发效率(买烤鸭)

18.2 类与对象

类:泛指一类事物

对象:单指某一个具体事物

18.3 类的组成部分

类名:这一类事物共同的名字

属性:这一类事物共同具有的特征 , 其实就是变量,只是放在了 类里面

方法:这一类事物具有的功能 , 其实就是函数,只是放在了 类里面

18.4 定义类

class Dog: # 类名大驼峰 
    # pass # 占位符 
    # 属性值 
    def eat(self): # 方法 
        print("狗正在吃东西") 
xiaohuang = Dog() # 创建对象,实例化 
xiaohuang.eat() # 对象调用类中的方法 
xiaohei = Dog() # 可以创建第二个对象 
xiaohei.eat()

18.5 初始化

class Dog: # 类名大驼峰, 经典类 新式类 
    # pass # 占位符 
    # 属性值 
    def __init__(self, color, weight): # 初始化方法, 初始化会在实例化时自动运行 
        self.color = color 
        self.weight = weight 
    def eat(self): # 方法 
        print(f"{self.color}的狗正在吃东西") 
    def run(self): 
        print(f"{self.weight}kg的狗正在跑") 
xiaohuang = Dog("黄色", 10) # 创建对象,实例化 
xiaohuang.eat() # 对象调用类中的方法 
xiaohuang.run()

18.6 继承

定义:

当一个类属于一个大类中的一小类,那么这个小类就可以继承大类。

小类被称作子类,大类即父类。

[外链图片转存中…(img-hWk3ixhc-1652326474991)]

特点

子类可以使用父类中的所有方法

子类可以新增自己的方法

子类可以修改父类中的方法

class HaShiQi(Dog): 
    def chaijia(self): # 子类可以新增自己独有功能 
        print("哈士奇正在拆家") 
    def eat(self): # 子类可以修改父类中的方法 
        print("哈士奇正在咬骨头") 
xiaoha = HaShiQi("黑白相间", 15) 
xiaoha.eat() # 子类可以使用父类中的所有方法 
xiaoha.chaijia()

以面向对象编思想写计算器案例

class Calc: 
    def __init__(self, num1, num2): 
        self.num1 = num1 
        self.num2 = num2 
    def jiafa(self): 
        return self.num1 + self.num2 
    def jianfa(self): 
        return self.num1 - self.num2 
    def chufa(self): 
        return self.num1 / self.num2 
    def chengfa(self): 
        return self.num1 * self.num2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值