Python基础(适合初学-完整教程-学习时间一周左右-节约您的时间)
Posted 红目香薰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础(适合初学-完整教程-学习时间一周左右-节约您的时间)相关的知识,希望对你有一定的参考价值。
前言
本系列博客所有内容都是【实际操作】为主,部分内容一定要解释说明的会伴随少量的理论说明,在【最短时间内】让大家【掌握】真正的【实操技能】才是实打实的【为您创造价值】。
学习环境
系统版本:win10、win11
开发工具:PyCharm Community社区版本(我这里只做数据,不做Web)
知识点
章节号 章节名 章节内容 第一章 Python环境与语法基础 PyCharm Community开发环境。
Python的数据类型、变量、运算符等内容。第二章 Python逻辑控制语句 if判断、while循环、for循环、break、continue 第三章 Python函数 内置函数、随机函数、数学函数、日期函数、自定义函数 第四章 Python集合列表 list(列表)、set(集合)、Dictionary(字典)、tuple(元组) 第五章 Python字符串操作 字符串编码、字符串内置函数 第六章 Python文件IO操作 异常、系统操作、File操作 第七章 Python面向对象 OOP概述、类和实例、封装、继承和多态
目录
返回多个值的自定义函数(超好用,超方便,后期谁用谁知道,虽然是假的。。。)
字符串查找String.find("")或String.index("")两种·可以用【re】正则替换,更好用
第一章 Python环境与语法基础
知识点一、PyCharm Community开发环境
官方下载地址:【PyCharm:JetBrains为专业开发者提供的Python IDE】
点击下载后,选择【Community】社区版本
有的时候比较慢,需要等待一会会出现下载栏。
这里还有一个温馨提示,没必要。
下载成功
安装步骤
都是点击【下一步/Next】
为了后续操作方便,需要勾选几个内容
安装过程时间较长
可以稍后重启。安装完毕
创建【python】项目
修改文字大小
点击【File】->【Settings】,搜索【font】修改一下文字显示:
创建【HelloWorld.py】文件
输入以下编码:
print("HelloWorld")
调试模式
进入调试模式可以看到整个执行过程。
以上我们就拥有了【Python】开发的环境了,后面开始正式课程内容。
知识点二、Python数据类型
2.x与3.x中文编码的区别
如果是2.x的python版本在编码中有中文则需要添加以下声明:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
Python3.x源码默认使用utf-8,可以正常解析中文,无需指定 UTF-8 编码。
Python关键字(也叫保留字·不能用作变量名)
import keyword
# 遍历python关键字列表
print(keyword.kwlist)
其实python的关键字不多,以下是遍历结果:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
打包语法
pyinstaller -F -p D:\\save\\Exe\\studys\\Python\\exe\\Lib -i D:\\save\\myclass\\Python\\core\\pythonProject\\python.ico demo1.py –noconsole
Python变量名
- 变量名可以包括字母、数字、下划线,但是【数字不能做为开头】。
- 系统关键字不能做变量名使用,我们上面有遍历关键字。
- 除了下划线【 _ 】这个,其它符号不能做为变量名使用。
- Python的变量名是区分大小写的
Python注释
Python注释有三种方法分别是三种符号:
1、# 单个
2、''' ''' 三个,两对作为声明作用域,用于做变量、函数或者类的注释说明
3、""" """三个,两对作为声明作用域,用于做变量、函数或者类的注释说明
代码示例
# 我是单行注释
print("Hello World")
aa = 777
'''
变量、函数或者类的注释说明·鼠标放在变量aa上查看效果
'''
bb = 89757
"""
变量、函数或者类的注释说明·鼠标放在变量aa上查看效果
"""
注释效果:
基本数据类型
在Python3中有六种基本数据类型,分别是:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
在这里我们先讲解前两种,在后面的章节中我们在对另外四种进行深入讲解。下面我们逐一去了解Number数字类型与String字符串类型。
数字类型(Number)
Python里有【整数】、【浮点数】和【复数】四种数据类型,咱们逐一说明。
【整数】
int在Python3中是没有限制大小的,只要内存够,理论上无限大小。
int_len = 777777777777777777777777777777777777777777777777777777777777777
'''
理论上只要内存够,可以无现长
'''
print(int_len)
print(type(int_len))
【浮点数】
也就是小数,例如:【3.14】就是一个浮点数。也肯能是科学计数法。
浮点数基础使用:
float_type = 3.14159265358E5
'''
科学计数法的【E+数字】代表10*N次方·以上【E5】是代表10的五次方。
注:次幂=次方。用词不一样,数学含义一样。
'''
print("科学计数法:", float_type)
print("科学计数法:", type(float_type))
以下是浮点数的浮点数【15/16】尾数处理的情况1:
float_type_15 = 3.000000000000001
float_type_16 = 3.0000000000000001
'''
小数点后15位,当有16位的时候会出现自动舍去
'''
print("15位:", float_type_15)
print("15位:", type(float_type_15))
print("16位:", float_type_16)
print("16位:", type(float_type_16))
以下是浮点数的浮点数【15/16】尾数处理的情况2:
float_type_15 = 3.999999999999999
float_type_16 = 3.9999999999999999
'''
小数点后15位,当有16位的时候会出现自动舍去
'''
print("15位:", float_type_15)
print("15位:", type(float_type_15))
print("16位:", float_type_16)
print("16位:", type(float_type_16))
【复数】
复数由实部与虚部构成,Python中使用【j】/【J】作为后缀。
complex_num = 2j
'''
复数由实部与虚部构成,Python中使用【j】/【J】作为后缀
'''
print("复数:", complex_num)
print("复数:", type(complex_num))
根据i的平方等于-1,故而结果应该是-1j
i = 1j
complex_num = i ** 2
'''
根据i的平方等于-1,故而结果应该是-1j
'''
print("i²=-1:", complex_num)
print("复数:", type(complex_num))
布尔类型
True与False,布尔类型只有对错两个值。
bool_type = True
'''
只有True与False两个值
'''
print(type(bool_type))
字符串类型
- Python 中单引号【'】和双引号【"】使用完全相同
- 使用三引号【'''】或【"""】可以指定一个多行字符串
- 转义【\\】
单行与都行字符串定义
当没有被赋值变量的时候,无论是三个单引号,还是三个双引号都是注释。
str_info = '四季之·春'
'''
字符串定义
'''
str_three_char = '''
字符串里面的所有东西都会被赋值到变量中。
当没有被赋值变量的时候,无论是三个单引号,还是三个双引号都是注释。
'''
print("单行字符串:", str_info)
print("多行字符串:", str_three_char)
Python字符串拼接
符号 描述 %c 格式化字符及其ASCII码 %s 格式化字符串 %d 格式化整数 %f 格式化浮点数字,可指定小数点后的精度
我们主要也就使用%s、%d、%f,其实还有一些符号,但是用的非常少。接下来我们拼接一个字符串:
str_info = str.format("春江%s秋月夜,会须一饮%d杯。" % ('\\t花朝\\t', 300))
print(str_info)
保留2位小数
王姑娘的成绩从去年的72分提升到了今年的85分,请计算王姑娘成绩提升的百分点,并用字符串格式化显示出'xx.x%'
,只保留小数点后2位:
s1 = 72
s2 = 85
r = (1 - (s1 / s2))
print(f"王姑娘是成绩提升的百分比是:%.2f " % r)
Python数据类型匹配
在后面面向对象的操作过程中有的时候需要根据传递的参数对象进行判断是否进行下一步操作,我们在这里用到了【isinstance】函数,这个函数可以判断变量是否属于某类型数据。
x = 666
# x是int类型数据,我们使用isinstance来判断是否属于int这个类型即可。
isf = isinstance(x, int)
print(isf)
isf = isinstance(x, str)
print(isf)
转义符号
str_char = '字符串\\n中\\r可以穿插\\t转义字符,\\b'
'''
转义符号是对应ascii码表的
\\n 全拼newline的首字母表示换行
\\t -->tab的首字母表示制表符
\\r -->return的首字母表示返回
\\b -->backspace的首字母表示退一个格
'字符串\\n【换行】中\\r【回车】可以穿插\\t【制表符,大空格】转义字符,\\b【退格,不显示,】'
'''
print(str_char)
可以看到实际效果:
取消转义符号
str_char = r'字符串\\n中\\r可以穿插\\t转义字符,\\b'
字符串索引
字符串的【索引】下标是从左侧【0】开始,如果是右侧就是【-1】。字符串的知识点很多,我们会在后面的章节详细述说。
str_char = "最靓、最厉害的仔"
'''
字符串的【索引】下标是从左侧【0】开始,如果是右侧就是【-1】。
'''
print(str_char[0])
print(str_char[3:6])
print(str_char[-1])
取消print()换行
x = "幸福安康"
'''
去掉了换行,那么输出的时候就会横向输出。
'''
print(x, end=" ")
print(x, end=" ")
Python中分号【;】的作用
Python中的【;】用于区分前后语句,如果每行一句则不需要,如果一行内写多条语句,那么就需要使用【;】作为分隔符来明确对应的语句含义了。但是不建议这么使用,使语句理解起来麻烦的多。
字符与整数类型数据转换
# 数字类型转换字符类型·可以理解成ascii码转字符
print(chr(22909))
# 字符转ascii码
print(ord('好'))
知识点三、运算符
这里为了让大家先入门,我就不对一些有难度的符号进行讲解了,再后面的文章有会有精讲,这里先让大家入门。
符号备注:
运算符支持的符号有:+、-、*、/、%(取模|求余)、//(整除)、**(次幂),与我们学习中常用的符号类型有点区别,我们常用的【x】乘号、【×】乘号、【÷】除号在程序运算中是无法使用的,这点我们要切忌。
四则运算
【//】相当于java中的整数除法,在明确自身是int的类型的时候不会进行浮点数处理。
x = 7
y = 5
print("加法计算:", x + y)
print("减法计算:", x - y)
print("乘法计算:", x * y)
print("除法计算:", x / y, "整数运算,无浮点数")
print("整除计算:", x // y, "会出现浮点数计算")
print("取模计算:", x % y)
print("幂运算:", x ** y, "次幂运算、x的y次幂(次方)")
取模(取余)运算
num = 12345
print("万位:", num // 10000)
print("千位:", num // 1000 % 10)
print("百位:", num // 100 % 10)
print("十位:", num // 10 % 10)
print("个位:", num % 10)
可以在结果中看到是没有浮点数运算的,说明是正确的操作,但是如果使用的是【/】就会出现浮点数的问题。
eval函数
# 计算字符串运算结果
print(eval("5+1+6*5+2+6/2+25-2"))
这种运算非常方便,我们使用这个函数就能写出一个小应用,例如输入字符串的运算直接出结果:
# 输入运算字符串
calc = str(input("请输入运算公式:"))
calc = calc.replace("×", "*").replace("÷", "/")
# (873×477-198)÷(476×874+661169)
# 需要将以上的特殊符号【×】与【÷】替换成【*】与【/】
# (873*477-198)/(476*874+661169)
# eval计算
print("eval函数计算结果:", eval(calc))
# 直接计算
print("直接计算", (873*477-198)/(476*874+661169))
我做了对照实验,说明eval函数计算的没有任何问题,所以我们接下来导出我们的程序。
程序源码:
import re
import os
while True:
try:
os.system("title python计算器【计算基础的四则运算】")
# 输入运算字符串
calc = str(input("请输入运算公式:"))
info = r"[+]|[-]|[*]|[/]|[×]|[÷]|[x]|[X]"
te = re.search(info, calc)
if te == None:
print("请输入正确的运算公式")
os.system("cls")
calc = calc.replace("×", "*").replace("x", "*").replace("X", "*").replace("÷", "/")
# eval计算:(873×477-198)÷(476×874+661169)
print(calc, "=", eval(calc))
print("-----------------------------------" * 2)
except :
print("*******请输入正确的表达式*******")
程序已经打包好,回头我会统一发对照组应用列表。
这里正则如果自己编写可能会出现【nothing to repeat at position 0(解决方案)_红目香薰的博客-CSDN博客】这个异常,我在文章有具体的说明,可以参考并解决。
Python比较运算符
比较运算符就是我们常说的:大于号、小于号啥的,符号有:
>、>=、<、<=、==、!=六个符号。
示例:
Python赋值运算符
x = 7
x += 1 # +=加法赋值运算符
print(x)
x -= 1 # -=减法赋值运算符
print(x)
x *= 2 # *=乘法赋值运算符
print(x)
x /= 2 # /=除法赋值运算符
print(x)
x **= 2 # %=取模赋值运算符
print(x)
x //= 2 # **=幂赋值运算符
print(x)
x %= 2 # //=取整除赋值运算符
print(x)
由于我用的是一个变量【x】,我们需要一层一层的分析
Python逻辑运算符
Python有三个逻辑运算符,这里用的是英文【and】与、【or】或、【not】非,优先级顺序为 NOT、AND、OR,我们用的非常多,多用用也就熟悉了。我们有一个经典练习题【判断闰年】,接下来我们看看具体的编写方法,同时我也准备了示例exe:
基础判断闰年
year = 2100
isf = year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
if isf:
print(year, "是闰年")
else:
print(year, "是平年")
我们精致化处理一下:
import os
os.system("title 判断闰年小工具")
while True:
try:
year = int(input("请输入整数年份:"))
isf = year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
if isf:
print(year, "是闰年")
else:
print(year, "是平年")
except:
print("请正确输入年份,例如:2100")
print("-------------------" * 2)
Python位运算符
这个稍微难度大一些,基础的有【&与、|或、^异或、<<左位移、>>右位移】
x = 5 # 二进制:101
y = 7 # 二进制:111
print(x & y) # 101 & 111 = 101 = 5(十进制)
print(x | y) # 101 | 111 = 111 = 7(十进制)
print(x ^ y) # 101 ^ 111 = 010 = 2(十进制)
print(x << 1) # 101 << 1 = 1010 = 10(十进制)
print(x >> 1) # 101 >> 1 = 010 = 2(十进制)
下面的对应的结果,这个理解起来比较难,后面我会有对应的文章进行详细说明。
Python成员运算符
有两个【in包含】、【not in不包含】,我们通过一个字符串做一个示例:
str_info = "I Have A Dream !"
isf = 'A' in str_info
if isf:
print(r"'A'包含在字符串内")
else:
print(r"'A'不包含在字符串内")
多表达式赋值
x = 7
y = 5
x, y = 666, x + y
'''
x, y = 666, x+y 的计算方式为先计算右边表达式,然后同时赋值给左边
'''
print(x)
print(y)
在下图中可以清晰的看出等号左右的赋值内容。
第一章就到这里,在第一章您已经可以基本掌握Python的基础语法了,我会在第二章进行逻辑控制语句的讲解。
第二章 Python逻辑控制语句
if判断
其实在上面的实例中我有几次的展示了这种用法,会执行一次【True】的语句,后面的自动关闭。按照中文的翻译说法就是:
如果 对:
执行某语句后结束。
其它如果 对:
执行某语句后结束。
其它如果 对:
执行某语句后结束。
其它:
执行某语句,直接结束。
if语法:
if True:
print("正确执行后直接结束")
elif True:
print("正确执行后直接结束")
elif True:
print("正确执行后直接结束")
else :
print("直接后结束")
这就像我们在大学的数学书上列的那些图一样,其实没什么复杂度,无论是单分支,双分支,多分支,就是与平时说话自己进行大脑判断一样。反正只有一个结果,虽然中间判断表达式比较多,但是【结果是唯一】的。
代码示例:
x = "秋"
if x == "春":
print("春姑娘")
elif x == "夏":
print("夏女士")
elif x == "秋":
print("秋香儿")
elif x == "冬":
print("冬梅啊")
else:
print("不是地球公转四季")
在Python中是没有switch语句的,如果有,那就是通过第三方的方式插入进来的,本身不属于Python自带啊,而且在Python中if判断的效率还是非常高的,没有上亿次运算if和switch没啥区别,所以不用强行的搞Python的switch,反而不美丽了。
while循环
循环四要素:1、初始值(i = 0) 2、表达式(i < 10) 3、循环体(print(i)) 4、迭代器(i += 1)
循环四要素的意义很重大,后面有很多算法都是巧妙的利用循环四要素进行变化式的处理,千万别太自信自己能举一反三,没有一定量的练习,可能别人的写法根本看不懂。多练,才是王道。
i = 0
while i < 10:
print(i)
i += 1
# 循环四要素:1、初始值(i = 0) 2、表达式(i < 10) 3、循环体(print(i)) 4、迭代器(i += 1)
插入GIF太大,我们用图片和视频了解一下具体的执行步骤吧。
while循环的Debug完整过程
视频演示了动态的过程。
for循环
for循环也是依赖于循环四要素进行每一步操作。但是在Python中将这些步骤封装了一下,咱们在外部可以看到的语法中并未体现出迭代器,是通过【寻址器PC】自动查找下一个。
讲循环遍历前我们需要了解一个函数【range(start int,end int)】函数,我们来看看它是做什么的。
nums = range(0, 10)
print(nums[0]);print(nums[1]);print(nums[2]);
print(nums[3]);print(nums[4]);print(nums[5]);
print(nums[6]);print(nums[7]);print(nums[8]);
print(nums[9])
可以看到,我们在读取这个数据的时候好麻烦,我才写了0~10,共计10个数字。
我们通过for循环来遍历就很方便了,看看我们循环的使用方法:
for item in range(0, 10):
print(item)
循环四要素:1、2:初始值与表达式range(0,10) 3、循环体(print(i)) 4、寻址器(PC)
依然依赖于循环四要素,但是有一部分不需要咱们来理解,系统会自动查找下一个,直到结束。
for循环的Debug过程:
for循环Debug全过程
循环计算示例:
这个示例是计算从1累计到100的总值。我们在不使用公式推导的情况下就由以下的方式实现:
sum_int = 0
for x in range(101):
sum_int = sum_int + x
print(sum)
计算结果是:5050,说明计算正确。
数组遍历:
nums = ['one', 'two', 'three']
for num in nums:
print(num)
循环嵌套:
for i in range(1, 10): # 1-9不包含10
for j in range(1, i+1):
'''每次根据外层循环i进行遍历,由于range中第二参数执行的数量-1不包括自身,故而需要+1'''
print(f'jxi=i*j\\t', end='')
'''f代表format格式化的意思,使用直接插入变量进行字符串拼接。'''
print()
九九乘法表是一个非常经典的练习题,还有斐波那契额数列,水仙花数,我们在这里值对循环结构以及基本使用进行掌握,后面我会有算法课程,如果对算法感兴趣可以看看我2022蓝桥的专栏文章,
break与continue
break是结束循环指令,continue是跳过本次循环进入下次循环的指令。为了更加直接的展示我们的操作,我们使用while循环来测试一下:
n = 1
while n <= 100: # 理论上会循环100次
if n > 10: # 当n = 11时,条件满足,执行break语句
break # break语句会结束当前循环,输出到11的时候由于大雨10就会执行这里,关闭循环
print(n, end=",")
n = n + 1
print('结束')
同理, continue也是一样的,但是它只是跳过当前的循环,继续后面的循环,例如我们跳过1-100中的5-95的所有数字:
n = 0
while n < 100: # 理论上会循环100次
n = n + 1
if n >= 5 and n <= 95: # 满足大于等于5小于等于95的时候执行continue语句
continue
else:
print(n, end=",") # 由于仅仅有
print('结束')
执行的结果中可以看到,跳过了我们单独判断的这些的数字的范围。
逻辑语句其实不太难理解,这里相对应的理论少一些,我就直接使用了几个案例来表示,这样看着更直接。
第三章 Python函数
python函数结构
从下图可以看出来,函数声明需要使用【def】关键字,返回数据需要使用【return】,其余的都是自定义编写的函数名以及编码过程,python的函数无需单独设置返回值,会直接返回return返回的数据类型。
def 函数名(参数列表):
函数体
return 值
Python学习基础篇第一篇——快速入门(适合初学者)