2020-02-03python学习+case分析
2020-02-03 本文已影响0人
锅炉工的自我修养
python学习
-
- 课程可以学到的内容
- python
- SQL
- 网站开发基础flask
- 网页开发基础
- 两套开发工具:pycharm+jupter
- github
-
- 成果——搜索引擎
- DALSEARCH
- 输入信息
- 不停的问问题
- 搜索引擎
- 获取数据:网络爬虫
- 数据索引:数据结构、数据库
- 显示页面:网站开发、排名算法
- 根据自己的需求做一些,小程序
编译环境的搭建
-
- 猿之路
- 学习基本语法
- 读别人的代码
- 修改别人的代码
- 开始写自己的程序
- 参与一个开源项目
-
- 工具安装和环境配置
- python and Anaconda
- MySQL and workbench
- pycharm
- Github桌面
功能:学英文+戒网瘾+买Mac
- anconda下载
- 版本号:0.9.1 1.***(稳定)
安装环境
- 基本指令
- input: get data from the keyboard, a file, or some ther device
- output: display data on the screen or send data to a file or other device
- math: perfrom basic mathematical operations like addition and multiplication
- conditional execution:条件执行,check for certain conditions and execute the appropriate code
- repetition:重复,perform some action repeatedly, usually with some variation
工具安装及环境配置
- SQL
# SQL出问题:下载 visual studio redistribution
# 选择64位,稳定
activate py36 # 激活python
python -m ipykernel install -user # 激活ipython
# 打开 anocada prompt
conda create --name newpy37 python=3.7
# 显示当前环境变量
conda env list
conda info --envs
conda create -n newpy python #创建环境
activate newpy # 进入环境
conda list # 查看环境从存在的包
pip install ...... # 安装包
deactivate # 退出当前环境
MySQL
# 下载MySQL
dev.mysql.com
# 一路默认即可
image.png
anconda 是一个代码库
问题如何解决第三方库无法安装的问题
pycharm设置
下载 sublime text (文本编辑器)
windows 命令行
# 打开anaconda prompt
e: # 进入e盘
dir # 显示目录列表
cd /d 路径 # 强制切换
jupyter notebook # 进入jupyter notebook
# 不要关anaconda prompt
# mac,使用terminal
# jupyter 执行:shift+enter
# 打开多个 notebook,如何区分?
# 不要同时打开多个notebook
image.png
image.png
jupyter notebook
- 以文件的形式阻止程序
- 分块写代码
-
- 实时文本,支持markdown语法
-
<p style="color:read"></p>
-
$$ x \times y$$
- 可以分段运行程序
- 做实验用jupyter,做工程时用sublime
- jupyter notebook无法显示隐藏目录
计算机语言与程序
- 目录
- 程序可以用来干什么?
- 重新认识计算机
- 什么是程序?
- 什么是编程语言?
- hello,world
- 重要的是想温和解决问题
-
- 程序用来干什么?
- 软件开发
- 数据分析/科学计算
-
- 计算机
- 程序运行的平台。
- 根据计算机性能,写程序
- 不同的设备,代码可能不同
- python 网站 app开发
- 计算机的组成:
- cpu:计算
- 硬盘:存储——脂肪
- 内存:脑容量——血糖
- 冯.诺依曼结构
冯.诺依曼结构- 把程序调用到内存空间,给计算机指令,逐条运行
-
- 程序是写给计算机的菜谱
- a program is a squence of intruction that specifies how to perfrom a computation
- 算法、流程;提供原材料——设置步骤——得到想要的
- 享有蓝图,计划。一步一步来。
-
- 程序思维
- 陈述性知识:declearative knowledge
- 告诉我具体的方法,才能实现
- 程序性知识: imperative knowledge
image.png
1.9 为什需要编程语言?
- 人类的自然语言太复杂,语言的准确性
- 特定指令,完成特定的事情
-
- 如何写程序
- problem formulation: 有什么,要完成什么(输入&输出)
- design the plan:如何实现,需要设么(算法,和支撑函数)
- coding & debugging:编码,错误验证(翻译,纠错)
- evalution:评估是不是合理(输出对了,不一定就对了,how?)
- 问题中有多少个坑,你没想到。
- 达到什么条件,是对的?
- improving:优化重新写
-
- pytho你能做什么?
- concise & beautiful
- packages
- 编程的英语
- support most modern cloud platform
- latest ML framework
- 数据分析+软件开发
2.1 python基础
- conda #包管理
conda install sdfas # 现在并安装包,**编译好的**
pip install ** #从 pypi.python.org/pipy/pip,下载并安装包,**源代码**
- 基本指令
- 输入,输出;文件+键盘/screen+其他设备
- 计算
- 条件执行
- 重复,循环
-
- 数据类型
- jupyter简介
- file:文件夹中的文件
- running:已经打开的文件
- 可以同时运行几个程序
- clusters:并行计算的
- 可以脱机运行,集运浏览器的小程序
- 不要关闭CMD和layout
界面 - +号,添加代码块,选中代码块,按“a”,在上添加代码块
- 剪刀,删除代码块
- help | keyboard shortcuts
基本语法
-
- print的作用
- 标准输出
- 提示程序运行到哪里
image.png - 程序帮助修改错误,主要是语法错误
- 控制输出
语法错误
无效的分隔符
引号之内都是字符串,换行必须用转义字符
必须单一,不能有歧义
type() 返回数据类型
jupyter notebook 功能
?print # 调用帮助文档
image.png
2.4 语法基变量
- 反馈函数:print和type
- 变量和运算符
- 运算符要配合上表达式
- tab 自动补全功能
相同位置做到最好
- 使用缩进进行分块
- 只能提示语法错误,逻辑错误不能提示
- if 函数后加“:”
变量
- 变量存在覆盖,代码块运行顺序可以自己选择
-
jupyter的有事可以选在代码块的执行顺序
image.png
-
- 变量命名要有意义 speed_of_lx
- 规范,可读性
-
In [ ] 没有数字,说明没有执行。
未执行,导致变量未定义
-
- pycharm主要是做开发,分析notebook。实时编译器
- 数据分析用notebook,有图+说明
-
(123,456,789)
:元组
-
-
a=+2 和a+=2
a =正2
-
5//2 # 取整
5**2 # 幂
5%2 # 取余
- 两个整数相除,结果是浮点数
数据类型二
- python3 int 不存在溢出问题
- 进制表示
0b10
0o10
0x10
-
- python 提供数学运算的包,math
- import math
- math.pi,math.e
# 四舍五入,由于银行家舍入法限制
from _pydecimal import Decimal, Context, ROUND_HALF_UP
print(Context(prec=3, rounding=ROUND_HALF_UP).create_decimal('1.325'))
py_desc.upper() # 全大写
py_desc.lower()
# useful
py_desc.title() # 变成所有单词首字母大写。
- import: 导入包
-
math.pow / sqrt 返回值为float
image.png
-
- 语言存在,存在的意义。做选择。
# Ture or False
type(1<2)
(2<1)or(1<2)
not (1<2)
a=(2<1) and (1<2)
a=(a!=1)
a=(1==2)
数据类型——string
- 转义字符
''' ''' 多行注释
- 数据类型装换
int("10"+10) # 类型装换
True+3 # 可行
# duplicate and conbine
template ="My name is"
name="Joshua"
greeting=template+" "+name+"."
print(greeting)
laugh=3*"Ha "
print(laugh) # 重复操作
# extract and slice
# 字符串可以进行位操作
letters="asdfsdfsdf"
letters[0] # index从0开始
letters="我爱北京天安门"
letters[25]
letters[25] # string index out of range
letters[-2] # 倒数第二个字符
- 倒数第一个,倒数第零个还是零,即第一个
slice
letters="asdfsdfsdsdfsdfsdfsdfsdfsdf"
letters[2:] # 从第三个字符d开始取
letters[-3:]# 从倒数第三个字符s开始取
letters[:5] # 取前五个,5代表的第六个字符不取
letters[:100] # 取到100之前
letters[-6:-2] # 取前不取后
letters[0:3:2] #前三个字符,间隔为2
letters[::-1] #倒序
len(letters) # 获取字符串长度
# split and join
lan="python ruby c c++ swift"
lan.split() # 默认分隔符分割为“ ”
'+'.join(['download', 'python,', 'install,', 'download', 'ide.', 'learn']) # 指定分隔符进行连接
s='I like C. I like C++. I like python'
s.replace('like','hate') # substitute,字符替换
s.replace('like','hate',1) # 指定替换次数
# layout 布局
align='Learn how to align'
align.center(60) # 选择对齐方式,指定对其够总文本长度
al_len=align.ljust(30)
print(len(al_len))
print(al_len)
align.rjust(30) # rjust,右对齐
py_desc="Python description: Python is prgramming language that lets you work quickly and integrate system more effectively."
py_desc.startswith('Python') # 这句话是不是以python开头的
py_desc.endswith('effectively.') # 以谁结尾的
# 最重要
py_desc.find('language') # 找到某一字符所在的位置
len("Python description: Python is a programming ") # 验证是否正确
py_desc.isalnum() # 不熟悉,可以调用帮助文档
?py_desc.isalnum() # string是否全为文本-数字,至少一个字符
test="12562336s/"
test.isalnum() #False
py_desc.count('Python') # 查找某字符出现的次数
py_desc.strip('.') # 默认删除前后空格,指定删除确定的字符
# 遇到问题,查python官方手册
> [https://docs.python.org/3/](https://docs.python.org/3/)
# document | doc | 3.x python document | general index or search
# 指定分割符
re.split # 涉及正则表达式,之后会讲
"aaa".isalpha() # 要带括号
### user input ###
age=input("How old are you\n?")
height=input("How tall are you in meter?\(\)\n ")
weight=input("How much do you weigh in kilogram?\n")
print("So. You're %s years old. %s meter tall and %s kg heavy."%(age,height,weight)) # 多个引用加(),字符串中出现()要转义
存在可变类型和不可变类型
为什么python用“.”作为函数的连接符
因为python家里人比较多,需要用看长辈,才能确认动作是什么