第二章 Python入门
2.1.简介
Python是著名的“龟叔”(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言
| Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容, |
2.1.1.Python适合开发哪些类型的应用呢?
- 云计算
- 机器学习
- 科学运算
- 自动化运维
- 自动化测试
- 爬虫
- 数据分析
- GUI图形化
- Web开发等
2.1.2.Python有哪些缺点呢?
- 运行速度慢,和C程序相比非常慢,因为Python是解释型语言
- 代码不能加密。如果要发布你的Python程序,实际上就是发布源代码
2.1.3.python种类
- Cpython(推荐)
Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
- Jyhton
Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
- IronPython
Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
- PyPy
Python实现的Python,将Python的字节码字节码再编译成机器码。
- RubyPython、Brython 等。
2.1.4.Python版本
目前主流的Python版本有两大分类:
- 2.x ,很多公司依然在用 2.7 版本,但Python官方在 2020 年将停止对 Python 2 的支持。
- 3.x ,功能更加强大且修复了很多2版本中不合适之处(推荐使用)
2.2 环境的安装
- 解释器:py2 / py3 (环境变量)
- 开发工具:pycharm
2.3 编码
2.2.1 编码基础
- ascii,英文,8位表示一个东西,2**8
- unicode ,万国码,32位表示一个东西,2**32
- utf-8,给unicode压缩,用尽量少的位数表示一个东西,以8个位为单位
- gbk,国标,只能中国人自己用, 一个中文用16位,两个字节表示。
- gb2312
2.2.2 python编码相关
对于Python默认解释器编码:
如果想要修改默认编码,则可以使用:
注意:对于操作文件时,要按照:以什么编写写入,就要用什么编码去打开。
2.2.3 单位转化
| 8bit = 1byte |
| 1024byte = 1KB |
| 1024KB = 1MB |
| 1024MB = 1GB |
| 1024GB = 1TB |
| 1024TB = 1PB |
| 1024TB = 1EB |
| 1024EB = 1ZB |
| 1024ZB = 1YB |
| 1024YB = 1NB |
| 1024NB = 1DB |
| 常⽤到TB就够了 |
2.4 输入输出
2.4.1.输入
python2和python3输入的语法不一样
| >>> my_input = raw_input('666') |
| 666 |
| >>> my_input = input('666') |
| 666 |
2.4.2.输出
python2和python3输出的语法不一样
2.5 变量
问:为什么要有变量?
为某个值创建一个“外号”,以后在使用时候通过此外号就可以直接调用。
变量就是一个会变化的量,加载到内存中,方便调用。不仅可以是数字,还可以是任意数据类型
2.5.1规范
- 变量名只能包含:字母/数字/下划线
- 数字不能开头
- 不能是python的关键字。 [‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
2.5.2 建议
- 见名知意
| >>> name='zzy' |
| >>> print(name) |
| zzy |
| >>> age=24 |
| >>> print(age) |
| 24 |
- 用下划线连接
| >>> gao_qizhi='zzy' |
| >>> print(gao_qizhi) |
| zzy |
| |
- 变量名建议不使用拼音和中文
- 变量的要具有意义
- 变量名不要过长
- 变量名要区分大小写
2.6 常量
所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量
2.7 注释
- 单行注释,在一行的最开头添加"#"这个符号,解释器就会忽略这行代码
| ''' |
| numb = 0 |
| count = 1 |
| while count < 100: |
| if count % 2 == 1: |
| numb -= count # total -= count |
| else: |
| numb += count # total += count |
| count += 1 |
| print(numb) |
| |
| ''' |
| |
2.8 If条件语句
if语句的完整形式就是:
| if <条件判断1>: |
| <执行1> |
| elif <条件判断2>: |
| <执行2> |
| elif <条件判断3>: |
| <执行3> |
| ······· |
| else: |
| <执行4> |
| |
if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elif和else。
2.9 while循环语句
2.9.1 while循环的格式
1.输出 1-100 内的所有数字。
| count = 0 |
| while count < 100: |
| count = count + 1 |
| print(count) |
| |
2.9.2 break关键字
作用:结束当前这个while循环
| |
| |
| |
| while True: |
| number = input('请输入一个数字:') |
| number = int(number) |
| if number > 66: |
| print('数字大了') |
| elif number == 66: |
| print('答对了') |
| break |
| else: |
| print('小了') |
| |
| |
2.9.3 continue关键字
作用:退出当前循环,继续下一次循环
| |
| |
| count = 0 |
| while count <= 9: |
| count = count + 1 |
| if count == 7: |
| continue |
| print(count) |
| |
| |
2.9.4 while else
作用:如果while 后的条件不再满足引发循环再继续,则执行else中的内容。如果是因为 break 引发的循环不再执行,则不执行else中的内容。
| count = 0 |
| while count <= 5: |
| print(count) |
| count += 1 |
| else: |
| print('窗前明月光,疑是地上霜') |
| |
2.10 for循环语句
2.11 格式化输出
"%" 运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%占位符,后面就跟几个变量或者值,顺序要对应好。
占位符 |
替换内容 |
%s |
字符串 |
%d |
整数 |
%% |
显示单独的% |
| >>> 'Age: %s. Gender: %s' % (25, True) |
| 'Age: 25. Gender: True' |
| >>> |
| |
| name = input('请输入姓名:') |
| age = input('请输入年龄:') |
| job = input('请输入职业:') |
| hobby = input('请输入爱好:') |
| msg = ''' |
| ------------ info of Alex Li ---------- |
| Name : %s |
| Age : %s |
| job : %s |
| Hobbie: %s |
| ------------- end ----------------''' |
| print(msg%(name,age,job,hobby)) |
| |
| |
| 请输入姓名:高启芝 |
| 请输入年龄:18 |
| 请输入职业:开发 |
| 请输入爱好:你懂的 |
| |
| ------------ info of Alex Li ---------- |
| Name : 高启芝 |
| Age : 18 |
| job : 开发 |
| Hobbie: 你懂的 |
| ------------- end ---------------- |
| |
| num = input('>>>>') |
| |
| s = '下载进度:%s%%'%(num) |
| |
| print(s) |
| |
2.12.运算符
2.12.1算术运算符
运算符 |
描述 |
实例 |
+ |
加 - 两个对象相加 |
a + b 输出结果 31 |
- |
减 - 得到负数或是一个数减去另一个数 |
a - b 输出结果 -11 |
* |
乘 - 两个数相乘或是返回一个被重复若干次的字符串 |
a * b 输出结果 210 |
/ |
除 - x 除以 y |
b / a 输出结果 2.1 |
% |
取模 - 返回除法的余数 |
b % a 输出结果 1 |
** |
幂 - 返回x的y次幂 |
a**b 为10的21次方 |
// |
取整除 - 向下取接近除数的整数 |
10//3 结果为3 |
2.12.2 比较运算符
运算符 |
描述 |
实例 |
== |
等于 - 比较对象是否相等 |
(a == b) 返回 False。 |
!= |
不等于 - 比较两个对象是否不相等 |
(a != b) 返回 True。 |
> |
大于 - 返回x是否大于y |
(a > b) 返回 False。 |
< |
小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 |
(a < b) 返回 True。 |
>= |
大于等于 - 返回x是否大于等于y。 |
(a >= b) 返回 False。 |
<= |
小于等于 - 返回x是否小于等于y。 |
(a <= b) 返回 True。 |
2.12.3 赋值运算符
运算符 |
描述 |
实例 |
= |
简单的赋值运算符 |
c = a + b 将 a + b 的运算结果赋值为 c |
+= |
加法赋值运算符 |
c += a 等效于 c = c + a |
-= |
减法赋值运算符 |
c -= a 等效于 c = c - a |
*= |
乘法赋值运算符 |
c *= a 等效于 c = c * a |
/= |
除法赋值运算符 |
c /= a 等效于 c = c / a |
%= |
取模赋值运算符 |
c %= a 等效于 c = c % a |
**= |
幂赋值运算符 |
c **= a 等效于 c = c ** a |
//= |
取整除赋值运算符 |
c //= a 等效于 c = c // a |
2.12.4 逻辑运算符
运算符 |
逻辑表达式 |
描述 |
实例 |
and |
x and y |
布尔"与" - 如果 x 为 False,x and y 返回x的值,否则它返回 y 的计算值。 |
(a and b) 返回 20。 |
or |
x or y |
布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 |
(a or b) 返回 10。 |
not |
not x |
布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 |
not(a and b) 返回 False |
| 1/ |
| value=0 and 9 |
| print(value) |
| |
| value=1 and 9 |
| print(value) |
| |
| 对于and: |
| 第一个值如果是转换成布尔值是假,则value=第一值,没有必要再往后计算了 |
| 第一个值如果是转换成布尔值是真,则value=第二值,在做后续计算 |
| |
| 2/ |
| value=1 or 9 数字遇到or都会转换为布尔 |
| print(value) |
| |
| value=0 or 9 |
| print(value) |
| |
| 对于or而言: |
| 第一个值如果是转换成布尔值是真,则value=第一值,在做后续计算 |
| 第一个值如果是转换成布尔值是假,则value=第二值 |
| |
2.12.5.成员运算
判断子元素是否在原字符串(字典,列表,集合)中
示例1
| >>> value = "我是中国人" |
| >>> v1 = "中国" in value |
| >>> print(v1) |
| True |
| |
| |
示例2
| while True: |
| content = input('请输入内容:') |
| if "退钱" in content: |
| print('包含敏感字符') |
| else: |
| print(content) |
| break |
| |
2.12.6 优先级
在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。
Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
运算符 |
描述 |
** |
指数 (最高优先级) |
~ + - |
按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // |
乘,除,取模和取整除 |
+ - |
加法减法 |
>> << |
右移,左移运算符 |
& |
位 'AND' |
^ | |
位运算符 |
<= < > >= |
比较运算符 |
<> == != |
等于运算符 |
= %= /= //= -= += *= **= |
赋值运算符 |
is is not |
身份运算符 |
in not in |
成员运算符 |
not and or |
逻辑运算符 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)