目录
1、课程要求
上课时间:上午8:30-12:00;下午2:30开始。
1.1、课程介绍
Python 开发入门 15天
- 基础语法:环境搭建、语法规则、函数的编写、字符串操作、集合使用、IO流等等。
- 面向对象编程:类、对象、属性、函数、构造等。
- 经典使用场景:网络爬虫、数据分析处理-Excel、图像处理。(Python语法简洁简单、库丰富;中小型项目、插件)
1.2、课程目标
- 掌握基础的Python开发;(师傅领进门,可以进行下一阶段的独立学习)
- 提升编程能力和编程思维;
- 提升解决问题的能力。
1.3、文字记录
大家要尽量多动手操作,提升代码量;多主动思考,提升逻辑思维。
========================
自我介绍:马老师...
========================
1.3.1、环境搭建
做开发(java\c\js等)的第一步就是搭建开发环境
,请问搭建开发环境是干啥的?高级语言(java\c\python等编程语言)和机器语言(指令集 二进制序列)
打印:1.(高级)print;2.(机器)1011010111000
print ------ 翻译/编译/解释 --------> 1011010111000 -------> 才能执行
安装一个编译器/解释器,将高级语言翻译成对应的机器指令。
1.3.2、搭建环境
编译器+IDE工具:(类比java: jdk + Eclipse/IDEA )
方式1:
官网下载python解释器:https://www.python.org/ftp/python/3.10.1/python-3.10.1-amd64.exe
IDE:
---记事本开发(中小型项目、插件,使用记事本还是比较方便直接的)
---Sublime Text3 (有语法提醒的,高级记事本)
---Pycharm等
以上3种,均可【推荐第二个】
方式2:
直接安装 Anaconda软件
--集成了python解释器
--集成了丰富的IDE开发工具
十分钟时间:下载安装anaconda
注意:1、无论装c盘或d盘,路径中不要有中文;2、有一个勾选的地方,不要忽略了。
1.3.3、检测开发环境
jdk--->dos 输入java或javac来检测
python--->dos 输入python来检测
正确:进入到交互模式,按Ctrl+Z退出错误:python不是内部或外部命令,也不是可运行的程序
1.3.4、path环境变量
为什么安装python后输入python可以有结果,但是我安装Chrome浏览器后,输入Chrome没有结果?
(我如何让输入chrome,也有反应)python 有结果,说明有程序执行了。
where 指令,where python就可以查看执行的是哪一个程序。在dos中输入的指令,都对应着某个目录下的一个可执行文件。
===========================
那么,dos是如何从那么多个目录中,找到我们的python.exe呢?
Path环境变量的作用。
在dos中输入的指令,不会整个盘符去查找,而是只会查找path环境变量中所指定的那些目录,如果找到就执行;如果找不到就报错。
==========================
chrome.exe文件,不在path所指定的那些目录中。
可以通过添加path环境变量的方式,将chrome所在目录加入。这样在dos中输入chrome就可以打开浏览器。
1.3.5、python语法
python语法
python:
1、交互模式
2、执行.pyjava:
通过javac编译.java,通过java来执行.class,没有交互模式解释型的语言:
逐行翻译,逐行执行
python \js \sql编译型的语言:
整体(整个文件)编译,整体执行
java \ c编译型的语言,是没有交互模式的,不支持一行一行执行的
1.3.6、python两种执行代码的方式
1、交互模式
优点:所写即所得,立即看到结果。
缺点:写的东西不能留存;也不成整体(简短的代码的测试)。2、.py文件:功能开发,还是要写在文件中。
1.3.7、Jupyter使用
anaconda中有非常丰富的IDE环境:
1、Jupyter【上课演示使用】
是一个基于网页的比较高级的交互模式,可以有代码留存
2、Spider
2、软件Anaconda下载与安装
Anaconda详细安装及使用教程(带图文) anaconda下载地址:https://www.anaconda.com/products/individual
安装好Anaconda后,浏览器弹出如下两个网址:
2.1、python基础语法测试
3、Jupyter使用
4、python基础语法(变量、控制、循环)
4.1、截图
4.2、代码-第1天上午-基础语法.html
print("hello world")
hello world
#基础语法
变量、数据类型、运算符、流程控制
函数
java\c\js 都是这个套路
代码--》运算
有运算,就得先有数据,先有地方存数据
@1、变量:存数据
@2、哪些数据:数据的种类、数据类型
@3、数据的运算:运算符
@4、运算逻辑:流程控制(if while for等)
@5、函数:让代码结构更简单
#高级应用
集合、异常处理、IO流、网络编程、多线程
#语言特性
面向对象
#重要应用,熟练掌握
字符串操作、集合操作
#弱数据类型,变量不需要指定数据类型
a = 1;
a = True;
a = 1.0;
#一会是整数,一会是布尔,又是小数
print(a)
1.0
#对照java,不能这样写的
java是强数据类型语言,变量必须指定类型,变量的类型不能变化
#js,也是弱数据类型语言
弱数据类型优点是灵活,写法方便,但是不利于构建大型工程!
#整数 、小数、布尔、字符串、各种集合
#字符串
a = "123";
a = '123'; #一样的
print(a)
123
#三引号,支持换行
a = '''jkdajlflka
akjjdflaklj
dfjlkadjf
djalfj''';
print(a)
jkdajlflka
akjjdflaklj
dfjlkadjf
djalfj
#java中定义字符串,必须使用双引号;单引号表示单个字符char
#python不存在单个字符char的说法,统统都是字符串【类似js】
# str --- int 互相转换
a = "123";
#a = a+1; # 报错,字符串拼接时,+号的前后必须都是字符串
a = a+str(1); #str内置函数,可以将对象转换为字符串
print(a);#1231
a = "123";
a = int(a)+1; #int : 将字符串转为整数,然后整数相加
print(a);124
1231
124
124
a = True; #布尔类型首字符大写 True False
a = str(a);#将布尔转成字符串
print(a=='True')
True
#字符串的斜杠问题
#定义一个字符串,内容是单斜杠
a = '\';'
print(a); # ';
# \和后面的字符连在一起,表示特殊含义。
# \'---》单引号不再是字符串的结束了,而就表示一个单引号的内容。
a = '\\';
print(a)
#\\反斜杠和后面的反斜杠结合,表示后面的\就只表示内容,不再具有特殊含义。
';
\
特殊的转义字符:
\n 换行
\r 回车
\t tab制表符
\b \f \' \" \\ 等
a = 'C:\Users\qx\Desktop\python\a.txt';
print(a); #请问打印的结果是什么??
#java: 没有\U \q \d \p \a等这些写法,\不能与它们完成组合,所以编译报错
#python :
#python字符串可以写\u,但是\u后不能乱写
File "<ipython-input-16-6e78d88793ff>", line 1
a = 'C:\Users\qx\Desktop\python\a.txt';
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
a = 'C:\\Users\\qx\\Desktop\\python\\a.txt';
print(a)
C:\Users\qx\Desktop\python\a.txt
#python 中的\u
# \u后跟4位16进制数字,表示一个字符的Unicode码
# java中也是支持这样的写法
a = "\u4e20"
print(a); #打印出来,就是这个字符
a = '䎕'
print(a);
丠
䎕
#关于字符串的r 【推荐方式】
a = r'C:\Users\qx\Desktop\python\a.txt';#所以字符都不具有特殊含义,都是普通内容
print(a);
C:\Users\qx\Desktop\python\a.txt
a = r'1\n2\n3';
print(a)
1\n2\n3
#运算符
与java大体相同
算术、比较、逻辑、赋值、位、移位等
print(5/2);
print(5//2);#地板除 floor 向下取整
2.5
2
# 与: and
# 或: or
# 非: not
print(5>3 or 3<1)
print(not 3<1)
True
True
a = b = 3;
print(a);
3
# 赋值运算符是有结果值的!!!!【python有待商榷】
a = (b=3)+1;#报错,但是java是可以的
print(a)
File "<ipython-input-53-5ef227cb749f>", line 3
a = (b=3)+1;#正确
^
SyntaxError: invalid syntax
a = 1;
a++;#不支持自增或自减
File "<ipython-input-54-506f76a559a1>", line 2
a++;
^
SyntaxError: invalid syntax
a = 5>3? 5:3; #三元运算符,不支持这样写 【写法后面介绍】
File "<ipython-input-55-ddfa3a94055b>", line 1
a = 5>3? 5:3;
^
SyntaxError: invalid syntax
#流程控制
a = int(input("请输入一个数字")); #获取用户输入,注意类型转换
#代码块不再通过大括号{}来表示,而是通过 冒号+层级缩进indent 表示
# 没有特别限制缩进几个空格或几个tab,自身统一即可
if a%2==0:
print('偶数');
print('oushu');
print('Ou');
else:
print("奇数");
请输入一个数字122
偶数
oushu
Ou
# else if ----> elif
a = int(input("请输入一个数字"));
if a>0 :
print('正')
elif a<0:
print('负')
else:
print('零')
请输入一个数字0
零
#while
# 1+....+100的和
sum = 0;
i=1;
while i<=100:
sum = sum+i;
i=i+1;
print(sum);
5050
#for,与java或js中的for不同
#更像foreach,遍历某个集合/范围。
#for 变量 in 集合/范围
ay = [1,2,3,4,5,6,7,8,9,10];# list,相当于java中的list
sum = 0;
for a in ay:
sum = sum+a;
print(sum);
55
#1+....+100
#range 内置函数,可以得到某个范围内的数字
range(100) #[0,99]
range(101) #[0,100]
range(10,20) #[10,19]
sum=0;
for a in range(100):#取出范围(集合)中的每一个数字,累加到sum上
sum = sum+a;
print(sum) #4950
4950
下午的课程,是主要以练习和作业为主,讲解可以就一个小时左右!!
- 冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、希尔排序、桶排序、基数排序,新年帮您排忧解难。
- 有向图、无向图、有环图、无环图、完全图、稠密图、稀疏图、拓扑图,祝您新年宏图大展。
- 最长路、最短路、单源路径、所有节点对路径,祝您新年路路通畅。
- 二叉树、红黑树、Van Emde Boas树、最小生成树,祝您新年好运枝繁叶茂。
- 最大流、网络流、标准输入流、标准输出流、文件输入流、文件输出流,祝您新年顺顺流流。
- 线性动规、区间动规、坐标动规、背包动规、树型动规,为您的新年规划精彩。
- 散列表、哈希表、邻接表、双向链表、循环链表,帮您在新年表达喜悦。
- O(1)、O(logN)、O(N)、O(NlogN)、O(N^2)、O(N^3)、O(2^N)、O(N!),祝您新年渐进步步高。
- 费马、欧几里得、欧拉、哈密尔顿、图灵,各路大神新年助您一臂之力,愿您紫气东来,风调雨顺!