(1条消息) 理想国Python入门教程
01.计算机基础
计算机组成
- 硬件系统
- CPU:
- 计算机的运算和计算中心
- 相当于人类大脑
- 内存:
- 暂时存储数据,临时加载数据应用程序
- 4G,8G,16G,32G
- 速度快,高铁,断电即消失。造价很高
- 硬盘:
- 磁盘,长期存储数据。
- D盘,E盘
- 存储文件,视频,音频等等
- 500G,1T
- 造价相对低。
- CPU:
- 软件系统
- 操作系统:一个软件,连接计算机的硬件与所有软件之间的一个软件。
- 应用软件:QQ,微信,迅雷等
02.python简介
python是什么
- 一门当前(2020年)非常流行的高级编程语言
- 20世纪90年代初Python语言诞生
- 作者是吉多·范罗苏姆(Guido van Rossum)
- 之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提·派森的飞行马戏团》(Monty Python’s Flying Circus)。
python能做什么
- web后端开发
- 自动化运维
- 自动化测试
- 爬虫
- 数据分析
- 人工智能
03.环境搭建
安装python编译器
- python:https://www.python.org/downloads/windows/
- anaconda:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
安装python编辑器
- vscode:https://code.visualstudio.com/Download
安装vscode常用插件
- python
- python开发插件
- chinese
- 中文汉化
- vscode-icons
- 图标主题
- Bracket Pair Colorizer
- 代码颜色高亮一般只会帮你区分不同的变量
- 这款插件给不同的括号换上了不同的颜色
- 括号的多的时候非常实用
- Settings Sync
- 这个插件可以实现同步你的vscode设置,包括setting文件,插件设置等
- 不过你要先有github的账户,因为它利用了github的token功能
- 相当于把这样文件上传到了你的github账户中
- Path Autocomplete
- 有时候程序需要读取文件,自己手动去复制文件路径还是比较麻烦的
- 有了这个插件就方便多了,它能自动感知当前目录下所有的文件,只需要你自己选择就好了
- Remote Development
- vscode 的远程开发支持,可以通过 ssh 连接远程服务器,进行远程开发。
- 同时集成了xshell 远程终端 和 xftp 远程文件管理的功能。
- Code Spell Checker
- 单词拼写检查,非常推荐
- 有时候会拼错单词,这个不仅可以指出错误,还能提供正确单词的拼写方式
- 安装好之后,选中拼写错误的单词,旁边出现黄色小灯泡
- 点击选择单词,直接替换。
- Guides
- 提供缩进检查,有时候for, if 写多了,就分不清对应的列数
- VScode虽然自带的有缩进检查,但是不明显
- 这个将缩进线显示为红色,非常醒目。
- SynthWave‘84
- 字体颜色主题
- koroFileHeader
- 文件头注释(ctrl+alt+i)
- 和函数头注释(ctrl+alt+t)
- 一键生成头注释
- Better Comments
- 这个插件通过不同的彩色把不同功能的注释信息区分开来
- 能区分的功能有:Alerts、Queries、TODOs、Highlights和用户自定义
- YAPF
- 输入命令:pip install yapf,安装yapf
- 然后在File->Preferences->Settings,输入python.formatting.provider
- 然后选择yapf,完成配置
- 在需要整理的Python代码文件中,使用快捷键:Alt+Shift+F,即可完成代码整理工作
- Python Preview
- 能够实时可视化你的代码结果。
- Git Graph
- Git神器,堪比Pycharm内的Git管理器
- 通过这个扩展,可以清楚地看见当前分支的commit记录和变化
- 可以通过按钮的方式轻易地创建、切换分支、cherry pick、merge等操作
- 对比分支、查看未提交的修改…
- 还有许多可定制的扩展设置
- Python Snippets
- 很多时候,我们用到的代码片段都是类似的,比如for循环、try/catch等等
- 现在有了这个工具,我们只需要输入命令生成代码片段,然后再进行微调,就能完成功能的开发
- 此外,有些时候我们可能会忘记某些内置函数的用法,这个工具也能给你提供示例代码做参考,而不用你再去搜索引擎搜索示例
- Django
- flask-snippets
- Visual Studio IntelliCode
- Bookmarks
- Error Lens
- File Utils
- GitLens
- indent-rainbow
- jumpy
- MetaGo
- Project Manager
- Quick and Simple Text Selection
04.配置pip国内源
常用国内源
http://pypi.douban.com/simple/ 豆瓣http://mirrors.aliyun.com/pypi/simple/ 阿里http://pypi.hustunique.com/simple/ 华中理工大学http://pypi.sdutlinux.org/simple/ 山东理工大学http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学https://pypi.tuna.tsinghua.edu.cn/simple 清华
基本使用
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
Linux配置pip源
# 进入根目录cd ~# 创建文件夹mkdir .pip# 进入目录cd .pip# 编辑文件pip.conf(会自动创建)vim pip.conf# 把下边的复制进去(我用的清华的源,如果想配置其他源只需要改下边的内容即可)[global]index-url=https://pypi.tuna.tsinghua.edu.cn/simpletrusted-host = pypi.tuna.tsinghua.edu.cn
windows配置pip源
# 在windows文件管理器中,输入 %APPDATA%,然后回车,接下来会进入一个新的路径# 在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件# 把下边的复制进去(我用的清华的源,如果想配置其他源只需要改下边的内容即可)[global]index-url=https://pypi.tuna.tsinghua.edu.cn/simpletrusted-host = pypi.tuna.tsinghua.edu.cn
05.变量和常量
what:概念
- 变量:
- 程序运行过程中,需要加载到内存中使用,可能会发生改变的数据的标识符
- 程序运行过程中会发生改变的数据
- 常量:
- 程序运行过程中,不会发生改变的,需要加载到内存中使用的数据的标识符
- 程序运行过程中不会发生改变的数据
- python中没有自己的常量,实际上是全部大写的变量
why:为什么使用
- 能够记录变化的值,帮助我们写出优美的代码
- 一个良好的程序离不开各种各样的变量
where:在哪里使用
- 程序中充斥着各种各样的变量和常量
- 只要编写代码,一般都会用到变量
- 任何一个Python程序中都可以使用变量
when:什么时候使用
- 如果程序运行中某个值需要记录,以便下次继续使用,则使用变量保存
- 比如,记录商品的价格,记录人的姓名,年龄等
how:如何使用
- 变量的命名需要遵循标识符的命令规则和规范
- 不能以数字开头
- 不能是系统关键字
- 需要由有意义的英文单词组成,不要包含一些没有意义的特殊字符
- 下划线命名法:
- 每个英文单词都全小写,由下划线分割
- 一般用于命名变量
- 大驼峰命名法:
- 每个单词的首字母都大写
- 一般用于命名类名
- 全大写命名法:
- 每个单词全大写,单词之间用下划线分割
- 一般用于命名常量
- 变量的命名方式:
变量名 = 值
- 举例:
- 变量
name = '张大鹏'
age = 22
gender = '男'
- 常量
PI = 3.14159
PERSON_ID = 100008199208293837
- 变量
06.注释
what:是什么
- 程序中用来解释说明代码的文本描述
- 注释不会被执行,只起到解释说明代码的作用
why:为什么使用
- 为了防止过一段时间后遗忘代码的逻辑
- 为了方便别的程序员阅读我们的代码
where:在哪里使用
- 代码逻辑比较复杂的时候使用
- 一个完整的代码块一般要配上一个注释
when:什么时候使用
- 当你怕一段时间后遗忘代码的逻辑的时候
- 当你想要别人能够一眼就看出你的代码做了什么的时候
how:怎么使用
- 单行注释:
# 注释内容
- 多行注释:
""" 注释内容 """
07.基本数据类型
what:是什么
- 数字类型:int,float
- 字符串类型:str
- 布尔值类型:bool
- 容器类型:list,tuple,dict,set
why:为什么使用
- 为了便于计算机理解我们的代码内容
- 为了提高计算机的执行效率
where:在哪里使用
- 数字类型:通常用于涉及到数值类型数据传输和计算的时候
- 字符串类型:通常用于输入输出的时候
- 布尔值类型:通常用于需要判断是否满足条件的时候
- 容器类型:通常用于需要记录多个相同或者相关类型数据的时候
when:什么时候使用
- 按需使用
- 如果是数值类型数据,就使用int或者float
- 如果是字符串类型数据,就使用str
- 如果需要记录真假情况,就使用bool
how:怎么使用
- 使用整数:
age = 22
- 使用浮点数:
price = 33.33
- 使用字符串:
name = '张大鹏'
- 使用布尔值:
flag = True
示例代码:从控制台输入你的姓名,年龄,身高,然后打印成一句话输出在控制台
'''Author: 张大鹏Date: 2020-12-19 18:21:01LastEditTime: 2020-12-19 18:22:55LastEditors: Please set LastEditorsDescription: 基本数据类型的使用FilePath: \python_basic_20201219\hw01_basic_data_type.py'''# 需求:从控制台输入你的姓名,年龄,身高,然后打印成一句话输出在控制台name = input('请输入姓名:')age = int(input('请输入年龄: '))height = float(input('请输入身高:'))print(f'您的姓名是{name},年龄是{age},身高是{height}')
输出内容
请输入姓名:张大鹏请输入年龄: 22请输入身高:165您的姓名是张大鹏,年龄是22,身高是165.0
08.数据类型的基本运算
what:是什么
- 基本运算指的是加减乘除运算
why:为什么使用
- 基本运算是最常用最基础的操作,必须掌握
where:在哪里使用
- 当程序中需要做一些基本运算的时候使用
when:什么时候使用
- 当数值类型需要做基本运算的时候
- 当字符串需要做拼接或者重复的时候
- 布尔值不建议做基本运算
how:怎么使用
- 数值类型做基本运算:
a = 10, b = 20
- 加法:
result = a + b
- 减法:
result = a - b
- 乘法:
result = a * b
- 除法:
result = a * b
- 加法:
- 字符串做基本运算:
name1 = '张大鹏', name2 = '理想国真恵玩'
- 拼接:
result = name2 + '-' + name1
- 重复:
result = '-' * 33
- 拼接:
练习1:假设你是超市收银员,现在需要结账。从控制台录入商品的单价,数量,折扣,计算应付金额
'''Author: 张大鹏Date: 2020-12-19 18:40:01LastEditTime: 2020-12-19 18:42:24LastEditors: Please set LastEditorsDescription: 练习题1FilePath: \python_basic_20201219\hw01_practice01.py'''# 假设你是超市收银员,现在需要结账。# 从控制台录入商品的单价,数量,折扣,计算应付金额price = float(input("请输入商品单价: "))good_num = int(input("请输入购买数量: "))good_discount = float(input("请输入折扣:"))result = price * good_num * good_discountprint(f"应付金额:{result}")
输出结果
请输入商品单价: 20请输入购买数量: 3请输入折扣:0.9应付金额:54.0
练习2:模拟登陆。假设数据库中存在用户名’lxgzhw’和密码’lxgzhw123456’,从控制台录入账号和密码,判断是否正确,并打印两条33个’-'组成的分割线,在分割线之间打印登录是成功还是失败
'''Author: 张大鹏Date: 2020-12-19 18:43:30LastEditTime: 2020-12-19 18:46:23LastEditors: Please set LastEditorsDescription: 基本数据类型练习题2FilePath: \python_basic_20201219\hw01_practice02.py'''# 模拟登陆。# 假设数据库中存在用户名'lxgzhw'和密码'lxgzhw123456'database_username = 'lxgzhw'database_password = 'lxgzhw123456'# 从控制台录入账号和密码,判断是否正确username = input("请输入用户名:")password = input("请输入密码:")result = False # 默认不正确if username == database_username and password == database_password: result=True# 并打印两条33个'-'组成的分割线# 在分割线之间打印登录是成功还是失败print('-' * 33)if result: print("登录成功")else: print("登录失败")print('-' * 33)
输出结果
请输入用户名:lxgzhw请输入密码:lxgzhw123456---------------------------------登录成功---------------------------------
练习3:简单加法计算器:让用户输入第一个数和第二个数,计算两个数的和然后输出到控制台
'''Author: 张大鹏Date: 2020-12-19 18:47:35LastEditTime: 2020-12-19 18:49:04LastEditors: Please set LastEditorsDescription: 基本数据类型练习题3FilePath: \python_basic_20201219\hw01_practice03.py'''# 简单加法计算器# 让用户输入第一个数和第二个数num1 = int(input("请输入第一个数: "))num2 = int(input("请输入第二个数: "))# 计算两个数的和result = num1 + num2# 然后输出到控制台print(f"{num1} + {num2} = {result}")
输出结果
请输入第一个数: 111请输入第二个数: 222111 + 222 = 333
09.常用运算符
what:是什么
- 算术运算符:用于做数学运算的特殊标识符
- 加法:
+ +=
- 减法:
- -=
- 乘法:
* *=
- 除法:
/ /=
- 次幂:
** **=
- 求余:
% %=
- 整除:
// //=
- 加法:
- 条件运算符:用于做大小判断的特殊标识符
- 大于:
>
- 小于:
<
- 大于等于:
>=
- 小于等于:
<=
- 等于:
==
- 不等于:
!=
- 大于:
- 逻辑运算符:用于连接多个条件表达式的特殊标识符
- 与:
and
- 或:
or
- 非:
not
- 与:
why:为什么使用
- 运算符是最基本的,最常用的编程标识符,必须熟练掌握
- 运算符遍布于每一个程序,学懂才能看懂别人的代码
where:在哪里使用
- 在任何需要调用的地方都可以使用
when:什么时候使用
- 按需使用
- 算术运算符:用于计算,得到新的计算结果
- 条件运算符:用于判断,得到布尔值
- 逻辑运算符:连接多个判断,得到的还是布尔值
how:怎么使用
- 在实战中使用
- 边学边练,边练边学
10.流程控制语句if
what:是什么
- 程序分支结构
- 根据不同的条件执行不同的代码
why:为什么要使用
- 一般程序中都会频繁的使用分支结构
- Python中就提供了if语句一种条件分支结构
- if语句是Python基础中必须要掌握的一个知识点
where:在哪里使用
- if语句可以在程序的任何需要它的地方使用
- if语句可以嵌套,if语句的内部还可以使用if语句
- if语句可以在程序的顶层使用
- if语句可以在其他语句的内部使用,比如for,while,函数内部,类的内部
when:什么时候使用
- 当代码需要根据某个条件执行结果的不同而执行不同代码块的时候使用
- 比如用户名和密码正确则执行登录成功的代码,否则执行登录失败的代码
how:如何使用
- 单独if
if 条件: 条件满足执行的代码
- if-else语句
if 条件: 条件满足执行的代码else: 条件不满足执行的代码
- if-elif-else语句
if 条件1: 条件1满足执行的代码elif 条件2: 条件2满足执行的代码elif 条件3: 条件3满足执行的代码...else: 所有条件都不满足执行的代码
练习1:进网吧案例。让用户输入年龄,如果年龄大于等于18岁,则打印"已成年,可以进网吧"
'''Author: 张大鹏Date: 2020-12-19 19:12:36LastEditTime: 2020-12-19 19:13:29LastEditors: Please set LastEditorsDescription: if练习1FilePath: \python_basic_20201219\hw02_practice01.py'''# 进网吧案例。让用户输入年龄age = int(input("请输入年龄: "))# 如果年龄大于等于18岁# 则打印"已成年,可以进网吧"if age >= 18: print("已成年,可以进网吧")
输出结果
请输入年龄: 22已成年,可以进网吧
练习2:页面跳转案例。让用户输入自己的身份(1管理员,2普通用户),如果是管理员则跳转到后台管理页面,否则跳转到普通用户后台页面
'''Author: 张大鹏Date: 2020-12-19 19:14:24LastEditTime: 2020-12-19 19:16:28LastEditors: Please set LastEditorsDescription: if练习2FilePath: \python_basic_20201219\hw02_practice02.py'''# 页面跳转案例。# 让用户输入自己的身份(1管理员,2普通用户)profile = input("请输入您的身份(1管理员,2普通用户):")is_admin = profile == '1'# 如果是管理员则跳转到后台管理页面# 否则跳转到普通用户后台页面if is_admin: print("管理员:跳转到后台管理页面")else: print("普通用户:调整到普通用户后台页面")
输出结果
请输入您的身份(1管理员,2普通用户):1管理员:跳转到后台管理页面
练习3:判断星期几案例。让用户输入一个数字,如果是1则打印星期一,2则打印星期二以此类推。如果大于7或者小于0则打印日期错误
'''Author: 张大鹏Date: 2020-12-19 19:17:31LastEditTime: 2020-12-19 19:19:37LastEditors: Please set LastEditorsDescription: if练习3FilePath: \python_basic_20201219\hw02_practice03.py'''# 判断星期几案例。# 让用户输入一个数字week_day = int(input("请输入今天是一周的第几天:"))# 如果是1则打印星期一,2则打印星期二以此类推。if week_day == 1: print("星期一")elif week_day == 2: print("星期二")elif week_day == 3: print("星期三")elif week_day == 4: print("星期四")elif week_day == 5: print("星期五")elif week_day == 6: print("星期六")elif week_day == 7: print("星期天")# 如果大于7或者小于0则打印日期错误else: print("日期错误")
输出结果
请输入今天是一周的第几天:3星期三
练习4:判断分数等级。某次考试总分100分,现在需要判断成绩所属等级,小于60分为D,大于等于60小于80分为C,大于等于80分小于90分为C,大于等于90分小于等于100分为A。如果小于0或者大于100分则为错误的分数。写程序,录入一个分数,判断对应的等级。
'''Author: 张大鹏Date: 2020-12-19 20:44:11LastEditTime: 2020-12-19 20:46:49LastEditors: Please set LastEditorsDescription: if练习4FilePath: \python_basic_20201219\hw03_practice04.py'''# 判断分数等级。# 某次考试总分100分,现在需要判断成绩所属等级# 小于60分为D,大于等于60小于80分为C# 大于等于80分小于90分为C,大于等于90分小于等于100分为A# 如果小于0或者大于100分则为错误的分数。# 写程序,录入一个分数,判断对应的等级。score = int(input("请输入分数:"))if 90<=score<=100: print("A")elif 80<=score<90: print("B")elif 60<=score<80: print("C")elif 0<=score<60: print("D")else: print("分数错误")
输出结果
请输入分数:55D
11.嵌套的if
what:是什么
- if语句中嵌套使用if,叫做if嵌套
why:为什么使用
- 有时候我们需要做多重判断
- 比如登录:
- 我们先判断验证码是否正确
- 如果验证码正确再接着判断账号密码是否正确
where:在哪里使用
- 可以在程序任何需要嵌套if的地方使用
when:什么时候使用
- 当需要做多重判断的时候使用
how:怎么使用
if 外部条件: if 内部条件: 语句
练习1:模拟登陆。假设用户名为’lxgzhw’,密码为’lxgzhw123456’,验证码为’q5u7’。让用户输入账号密码及验证码,校验是否登录成功
'''Author: 张大鹏Date: 2020-12-19 20:23:47LastEditTime: 2020-12-19 20:29:30LastEditors: Please set LastEditorsDescription: if嵌套练习1FilePath: \python_basic_20201219\hw03_practice01.py'''# 模拟登陆。# 假设用户名为'lxgzhw',密码为'lxgzhw123456'# 验证码为'q5u7'data_username = 'lxgzhw'data_password = 'lxgzhw123456'session_captcha = 'q5u7'# 让用户输入账号密码及验证码# 校验是否登录成功username = input("请输入用户名:")password = input("请输入密码:")captcha = input(f"请输入验证码({session_captcha}):")if captcha == session_captcha: if username==data_username and password == data_password: print(f"登录成功,欢迎您:{username}") else: print("登录失败,用户名或密码错误")else: print("验证码错误,请检查后重新输入")
输出结果
请输入用户名:lxgzhw请输入密码:lxgzhw123456请输入验证码(q5u7):q5u7登录成功,欢迎您:lxgzhw
练习2:淘宝购物案例。假设某品牌衣服230元一件,某用户一下子购买了100件。先判断支付密码是否正确(假设支付密码为123456),再判断余额是否充足(假设余额为13000元),向控制台输出购买成功还是失败,如果失败,请说明失败原因。
'''Author: 张大鹏Date: 2020-12-19 20:30:56LastEditTime: 2020-12-19 20:35:04LastEditors: Please set LastEditorsDescription: if嵌套练习2FilePath: \python_basic_20201219\hw03_practice02.py'''# 淘宝购物案例。# 假设某品牌衣服230元一件cloth_price = 230# 某用户一下子购买了100件shop_num = 100# 先判断支付密码是否正确(假设支付密码为123456)# 再判断余额是否充足(假设余额为13000元)# 向控制台输出购买成功还是失败# 如果失败,请说明失败原因need_pay = cloth_price * shop_numprint(f"下单成功,应付金额{need_pay}元")if input("请输入支付密码:") == '123456': if need_pay < 13000: print("支付成功") else: print("余额不足,交易失败")else: print("支付密码错误,请重新输入")
输出结果
下单成功,应付金额23000元请输入支付密码:123456余额不足,交易失败
练习3:网站爬虫案例。爬虫一般都是需要一个固定网址,该网址可以访问才能够正常爬取。需要访问该网址,则需要联网。假设某网址为"http://lxgzhwtest.com",能够正常访问,但是现在电脑没有联网。写一段代码,模拟爬虫程序,判断能否正常运行,如果不能正常运行,请说明原因。
'''Author: 张大鹏Date: 2020-12-19 20:36:05LastEditTime: 2020-12-19 20:38:56LastEditors: Please set LastEditorsDescription: if嵌套练习3FilePath: \python_basic_20201219\hw03_practice03.py'''# 网站爬虫案例。# 爬虫一般都是需要一个固定网址# 该网址可以访问才能够正常爬取# 需要访问该网址,则需要联网# 假设某网址为"http://lxgzhwtest.com",能够正常访问url = "http://lxgzhwtest.com"is_exists = True# 但是现在电脑没有联网is_connect = False# 写一段代码,模拟爬虫程序,判断能否正常运行# 如果不能正常运行,请说明原因print("开始运行爬虫。。。")if is_exists: print("网址存在,可以正常访问") if is_connect: print("能过正常联网,爬虫正常运行") else: print("访问失败,请检查网络连接")else: print("网页不存在,404错误")
输出结果
开始运行爬虫。。。网址存在,可以正常访问访问失败,请检查网络连接