Python【第一篇】环境安装、初始Python
本章内容:
- Python介绍
- Python安装
- Python入门
- 基础语法
- 数据类型
- 综合练习
- Python常见的库翻译成中文网址 --> http://python.usyiyi.cn/
一、Python介绍
Python是一种跨平台(Windows/linux/Mac系统中安装使用)、开源的、免费的、解释型的高级编程语言。它具有丰富和强大的库,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松的联结在一起,所以Python被称为胶水语言。它具有高效的高级数据结构,并通过简单而有效的方法来进行面向对象编程。Python的优雅语法和动态类型,以及其解释性质,使其成为在大多数平台上的许多领域的脚本和快速应用程序开发的理想语言。
Python相关网站地址:
Python官网 ---> https://www.python.org/
Python文档地址 ---> https://www.python.org/doc/
Python模块仓库 ---> https://pypi.python.org/pypi
Python帮助文档 --->https://docs.python.org/zh-cn/3/
Python解释器和广泛的标准库以源代码或二进制形式免费提供,并且可以免费分发。Python官网还包含许多免费的第三方Python库。
编译和解释的区别是什么?
编译器把源程序每一条语句都编译成机器语言,并保持成二进制文件,在计算机运行时直接以机器语言来运行,特点速度很快。
解释则是只在执行程序时,一条一条的解释成机器语言给计算机来执行,所以运行速度不如编译后的程序快。
编译型VS解释型
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
Python解释器
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py
为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py
文件。
CPython
从Python官方网站下载解释器就是CPython。该解释器是用C语言开发,所以叫CPython目前使用最广泛的Python解释器。
二、Python安装
Windows下安装Python
官网 https://www.python.org/ 选择download下的windows
注意:python3.5+以上的Python版本不支持windows xp以及更低版本的操作系统,Windows7必须安装sp1包才可以。
选择Windows后按下图选择
Python3.7.2 - 2018-12-24这种文件名指的是稳定发布版本,我们选择稳定版中64位executable可执行文件进行安装。
executable是可执行文件(最好选择该种安装方式),可以保存到本地,断网时也能安装。
web-based是基于网络的安装,需要联网。
embeddable zip是嵌入式安装,针对嵌入式开发的版本。
最后一个windows help file指windows下的帮助文件,不需要关心。
下载完成后得到python3.7.2-amd64的安装文件,运行该文件
选择:Install Now 现在安装
勾选下面两个复选框
Install launcher for all users(recommentded)
Add Python3.7 to PATH -->添加环境变量,勾选后就不需要自己配置系统环境变量;
自己配置环境变量方法如下:
例如:Pyahon安装C盘:C:\Python37目录和C:\Python37\Scripts添加到环境变量中 配置环境变量: 【右键计算机】-->>【属性】-->>【高级系统设置】-->>【高级】-->>【环境变量】-->>【在第二个内容框中找到 变量名为Path 的一行,双击】 -->>【Python安装目录追加到变值值中,用;分割】
如:原来的值;C:\python3xxx,切记前面有分号;
安装成功后验证:
WIN+r键,进入cmd界面输入python -V(大写V),执行结果显示:python 3.7.1表示安装成功。
或者输入Python进入交互界面也表示安装成功。
如果弹出python不是内部或外部命令...要么是安装失败或者环境变量配置失败,请重新安装或者配置环境变量。
Linux下安装Python
Linux发行版默认安装有Python,但是基本上都是Python2.7。对于开发程序猿,更多使用Ubuntu发行版,因为软件更新、安装方便、人性化更好,比较适合开发,而Centos更适合作为生产服务器。
Ubuntu推荐 使用16.01LTS版本使用,系统自带python2.7版本。
使用sudo apt-get install python3.5就可以直接安装(下载的Python程序被安装在usr/localb/python3.5中,安装完成后终端输入python,输出信息还是会提示2.7版本,需要重新修改链接。
方法如下:
第一步:先备份原来的链接,sudo cp /usr/bin/python /usr/bin/python_bak
第二步:删除原来默认指向Python2.7版本的链接,sudo rm /usr/bin/python
第三步:重新指定新的链接给python3.5版本,sudo ln-s /usr/bin/python3.5 /usr/bin/python
至此,pytnon版本更新完成。
但是这种方式往往不能安装最新版本的Python,要安装最新版本的Python需要通过源码进行安装。
源码安装:
Python官网--->Downloads--->选择Source code
选择
下载完成后将源码包拷贝到ubuntu系统的家目录中;
pip工具
Python有海量的第三方库,这些库针对不同的应用,发挥不同的作用。在实际项目中或多或少都要使用到第三方库,那么如何将第三方库添加到自己的项目中呢?
使用pip工具,它能帮助我们自动从仓库上下载并安装第三方库,同时将该库所依赖的本地没有安装的库一并安装。Python3.4版本一下系统已经默认安装有pip。
想要为哪个Python解释器安装第三方库,就要调用它下面对应的pip工具。
如何确定pip是那个Python解释器呢?
cmd环境中,输入pip -V(大写V):
pip的基本使用
cmd中输入pip 回车后查看帮助说明
1、普通安装
已requests库为例--->输入pip install requests 安装
2、指定版本安装
pip install requests ==2.3.1
3、卸载已经安装的库
pip uninstall requests
4、列出已经安装的所有库
pip list
5、将已经安装的库列表保存到文本文件中
pip freeze > requirements.txt
被用作项目环境依赖文件。
6、根据依赖文件批量安装库
pip install -r requirements.txt
使用上面的txt文件,批量安装第三方库
7、使用wheel文件安装
除了上面的pip联网方式进行安装外,还可以将安装包也就是wheeI格式的文件,下载到本地然后使用pip进行安装。
whell格式文件地址----> https://www.lfd.uci.edu/~gohlke/pythonlibs/
将下载文件复制到Pytthon的安装目录-->Scripts目录中或者cmd中直接进入下载文件目录执行(pip install 文件名)进行安装;
例如:C:\Python34\Scripts
cmd中执行---> pip install pillow-5.4.1xxooo.whl的方式进行离线安装
8、升级pip命令
python -m pip install --upgrade pip
国内第三方源安装
使用豆瓣速度不错,当网络不给力,连接超时、防火墙等各种原因,无法从Python官方的PyPi仓库进行pip安装时使用第三方源。
使用方法:
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com 库名
例如:pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com requests
前面都是固定格式,需要下载那个库就修改后面的库名(黄色背景是库名);
PyCharm安装
下载地址 ---> http://www.jetbrains.com/pycharm/download/#section=windows
PyCharm注册码 ---> PyCharmIED注册码url:http://idea.lanyus.com/
虚拟环境
Python3中使用venv搭建轻量级虚拟环境:
虚拟环境作用:搭建独立的Python运行环境,不与其他产生冲突;
虚拟环境有助于包的管理和防止版本冲突;
删除卸载方便,直接删除对应虚拟环境的文件夹即可;
虚拟环境创建方法(Python3)
在硬盘中创建文件夹例如:
E盘新建python_ven_demo--->终端中进入该文件夹cd python_ven_demo--->搭建虚拟环境命令:python -m venv . (注意:venv后面有个空格加上有个点 ".")
生成的虚拟环境内容
启动虚拟环境(必须启动之后,才能进入该虚拟环境,否则安装包时,依然是安装在全局环境之下)
启动文件在Script文件之下,进入Scripts文件中--->启动虚拟环境:activate.bat ; 退出:deactivate.bat
启动虚拟环境后通过pip install xxoo 安装第三方库
退出虚拟环境-->deactivate.bat
Pycharm结合虚拟环境使用
在settings中--->如图:
虚拟环境配合pip快速建立开发环境:
【记录】虚拟环境配合pip的freeze功能,一次性快捷将整个环境下的第三方模块全部记录下来:
首先需要进入虚拟环境,进入虚拟环境目录-->Scripts目录输入activate.bat启动 --->pip freeze > e:\requirements.txt
【安装】将文件列出的第三方库安装起来(第三方库文件和终端在同一个目录下面),使用 pip install -r requirements.txt
三、Python入门
第一句Python代码Hello,world
print('hello.world')
Python内部执行过程如下:
pyc文件
执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。
PS:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。
四、基础语法
标识符
- 所谓标识符就是对变量、常量、函数、类等对象起的名字。
- 首先必须说明的是,Python语言在任何场景都是严格区分大小写。变量名全部小写,常量名全部大写
- 第一个字符必须是字母表中的字母或者下划线_
- 标识符对大小写敏感
- 变量名全部小写,常量名全部大写
- 函数和方法名用小写加下划线
- 类名用大写驼峰
- 模块和包的名字用小写
- 变量命名不要用关键字和内置函数的名字
注释
在写的程序里,有代码,还要有很多注释。注释的作用有说明性质、帮助性质,在代码执行过程中相当于不存在,透明的,不参与任何工作。但在代码维护、解释、测试等方面发挥着重要作用。
单行注释
Python中,以符号"#"为单行注释的开始,从它往后到本行的末尾,都是注释内容。
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2019/3/7 14:54' #这是单行注释 #这是一个函数,打印hello def func(): print("hello") #打印hell
多行注释
Python没有真正意义上的多行注释(块注释)语法。只能在每行开头都打上#号,然后假装自己是个多行注释
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2019/3/7 14:54' #第一行注释 #第二行注释 #第三行注释 def func(): print("hello") #打印hell
注释文档
在某些特定的位置,用三引号包括起来的部分,也被当成注释。但是这种注释有专门的作用,用于为__doc__提供文档内容,这些内容可用通过现成的工具,自动收集起来,形成帮助文档。
例如:函数和类的说明文档:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'tian'
__data__ = '2019/3/7 14:54'
def func(a,b):
"""
这个是函数的说明文档
:param a: 乘数
:param b: 乘数
:return: 和
"""
return a*b
class Foo:
"""
这个类初始化了一个name变量
"""
def __init__(self,name):
self.name = name
PS:这类注释必须紧跟在定义体下面,不能在任意位置。
语句与缩进
语句:在代码中,能够完整表达某个意思、操作或者逻辑的最短代码,被称为语句。语句通常不超过一行,超过一行的称为多行语句。
如下都称为语句:
a = apple
from .import test
print("你好啊")
li.append(item)
Python的标准语句不需要使用分号或逗号来表示语句结束,简简单单的换个行就表示本语句已经结束了,下一句开始。
代码块:为完成某一特定功能而联系在一起的一组语句构成一个代码块。有判断、循环、函数、类等各种代码块。
代码块的首行通常以关键字开始,以冒号(:)结束。
例如:
if expression:
pass
elif expression:
pass
else:
pass
#这是一个类代码块
class Foo:
def __init__(self,name,age):
self.name = name
self.age = age
def get_name(self):
return self.name
#这是一个函数代码块
def func(a,b):
summer = a+b
return summer*2
Python语法是使用缩进来表示表示代码块,不需要使用大括号({}})。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
如果缩进数的空格数不一致,会抛出缩进异常(IndentationError)
pass语句
pass语句是占位语句,它上面都不做,只是为了保证语法的正确性而写。下列场景中,可以使用pass语句:
- 当你不知道后面的代码怎么写的时候
- 当你不需要写代码细节的时候
- 当语法必须,有没有实际内容可写的时候
- 其它的一些需要的场景
空白字符与空白行
- PEP8对于空行留白有专门的建议。
- 函数之间或类的方法之间用空行分隔,表示一段新的代码开始。
- 类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
- 变量赋值的时候等号左右各给一个空白,逗号后面跟一个空白。
如下面代码,作为标准的代码规范,在规定的地方留有规定的空白行和空白字符。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'tian'
__data__ = '2019/3/7 9:56'
class Foo:
pass
def func(a,b):
pass
if __name__ == '__main__':
pass
变量与常量
变量:在程序运行过程中,值会发生变化的量;
为什么要有变量?
变量作用:变 --> 变化 ,量-->计量/保存状态,代指内存里某个地址中保存的内容。
程序的运行本质是一系列状态的变化,变量的目的就是用来保存状态,变量值的变化就构成了程序运行的不同结果。
言简意赅的说:变量是在内存中存储程序运行的中间结果,供后面程序调用;
常量:在程序运行过程中,值不会发生变化的量;
1、无论是变量还是常量,在创建时都会在内存中开辟一块空间,用于保存它的值;
2、Python中变量不需要声明类型,这是根据Python的动态语言特性而来,变量可以直接使用,而不需要提前声明类型;
例如:下面的a,b,c,d四个变量,在使用前没有进行任何的类型声明
a = 4
b = 'tian'
c = []
d = 9-2
用“=”号来给变量赋值:
这里的等号要理解并读作赋值,而不是“等于”,“赋值”是对变量的操作,而“等于”是对两个变量进行比较。上面的a,b,c,d四个变量,就是通过“=”号,赋予不同的值;
3、每个变量在使用前都必须赋值,变量赋值后才能被创建。
4、新的变量通过赋值的动作,创建并开辟内存空间,保存值。
5、Python中一切事物都是对象,变量引用的是对象或者说是对象在内存中的地址。
一个对象(如a='python')有:
- 一个身份(id) id(object)对象的内存地址 例如:print(id(str)) 打印str对象的id,返回值为整数;
- 一个类型(type)
- 一个值(通过变量名a来查看)
6、Python中变量本身没有数据类型的概念,通常所说的【变量类型】是变量所引用的对象类型,或者说是变量值的类型;
7、在Python中所有数据都是围绕对象这个概念来构建的,对象包含一些基本的数据类型:数字、字符串、布尔类型、列表、元组、字典等;
8、Python允许同时为多个变量赋值:
例如:a=b=c=2 ,最终大家都是2
也可以同时为多个变量赋值,用逗号分隔逐一对应:
例如:a,b,c = 1,2,3 最后a是1,b是2,c是3
9、变量在计算机内存中表示
当我们写:a ='tian',Python解释器做了两件事情
- 在内存中创建了一个'tian'的字符串对象;
- 在内存中创建了一个名为a的变量,并把它指向'tian'
- 牢记Python中一切都是对象,变量是对象的引用;
声明变量
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'tian'
__data__ = '2018/9/4 15:31'
name ="tian" #声明一个变量,变量名为:name,变量的值为:“tian”
代码头两行: 第一行用于指定运行该脚本的Python解释器,Linux专用,Windows不需要;
第二行代码的编码方式,Python3中全面支持Unicode,默认已UTF-8编码,不用在纠结中文的问题;
变量的赋值
#!/usr/bin/env python
# -*- coding: utf-8 -*-
username = "admin"
password= "123456"
#!/usr/bin/env python
# -*- coding: utf-8 -*-
username = "admin"
password = username
变量定义的规则:
变量名只能是 字母、数字或下划线的任意组合;
变量名的第一个字符不能是数字;
以下关键字不能声明为变量名:
['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']
运算符
运算符:1+5为例子,1和2被称为操作数,+称为运算符。
Python语言支持以下类型的运算符:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 成员运算符
- 身份运算符
- 三目运算符
算术运算符
以下假设变量 : a =10 ,b =20
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'tian'
__data__ = '2019/3/7 9:56'
a = 21
b = 10
c = 0
c = a + b
print ("1 - c 的值为:", c)
c = a - b
print ("2 - c 的值为:", c)
c = a * b
print ("3 - c 的值为:", c)
c = a / b
print ("4 - c 的值为:", c)
c = a % b
print ("5 - c 的值为:", c)
# 修改变量 a 、b 、c
a = 2
b = 3
c = a**b
print ("6 - c 的值为:", c)
a = 10
b = 5
c = a//b
print ("7 - c 的值为:", c)
输出:
1 - c 的值为: 31 2 - c 的值为: 11 3 - c 的值为: 210 4 - c 的值为: 2.1 5 - c 的值为: 1 6 - c 的值为: 8 7 - c 的值为: 2
比较运算符
以下假设变量a=10,变量b=20
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2019/3/7 9:56' a = 21 b = 10 c = 0 if ( a == b ): print ("1 - a 等于 b") else: print ("1 - a 不等于 b") if ( a != b ): print ("2 - a 不等于 b") else: print ("2 - a 等于 b") if ( a < b ): print ("3 - a 小于 b") else: print ("3 - a 大于等于 b") if ( a > b ): print ("4 - a 大于 b") else: print ("4 - a 小于等于 b") # 修改变量 a 和 b 的值 a = 5 b = 20 if ( a <= b ): print ("5 - a 小于等于 b") else: print ("5 - a 大于 b") if ( b >= a ): print ("6 - b 大于等于 a") else: print ("6 - b 小于 a")
1 - a 不等于 b 2 - a 不等于 b 3 - a 大于等于 b 4 - a 大于 b 5 - a 小于等于 b 6 - b 大于等于 a
赋值运算符
以下假设变量a=10,变量b=20:
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2019/3/7 9:56' a = 21 b = 10 c = 0 c = a + b print ("1 - c 的值为:", c) c += a print ("2 - c 的值为:", c) c *= a print ("3 - c 的值为:", c) c /= a print ("4 - c 的值为:", c) c = 2 c %= a print ("5 - c 的值为:", c) c **= a print ("6 - c 的值为:", c) c //= a print ("7 - c 的值为:", c)
1 - c 的值为: 31 2 - c 的值为: 52 3 - c 的值为: 1092 4 - c 的值为: 52.0 5 - c 的值为: 2 6 - c 的值为: 2097152 7 - c 的值为: 99864
逻辑运算符
Python语言支持逻辑运算符,以下假设变量 a =10, b= 20:
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2019/3/7 9:56' a = 10 b = 20 if ( a and b ): print ("1 - 变量 a 和 b 都为 true") else: print ("1 - 变量 a 和 b 有一个不为 true") if ( a or b ): print ("2 - 变量 a 和 b 都为 true,或其中一个变量为 true") else: print ("2 - 变量 a 和 b 都不为 true") # 修改变量 a 的值 a = 0 if ( a and b ): print ("3 - 变量 a 和 b 都为 true") else: print ("3 - 变量 a 和 b 有一个不为 true") if ( a or b ): print ("4 - 变量 a 和 b 都为 true,或其中一个变量为 true") else: print ("4 - 变量 a 和 b 都不为 true") if not( a and b ): print ("5 - 变量 a 和 b 都为 false,或其中一个变量为 false") else: print ("5 - 变量 a 和 b 都为 true")
1 - 变量 a 和 b 都为 true 2 - 变量 a 和 b 都为 true,或其中一个变量为 true 3 - 变量 a 和 b 有一个不为 true 4 - 变量 a 和 b 都为 true,或其中一个变量为 true 5 - 变量 a 和 b 都为 false,或其中一个变量为 false
成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2019/3/7 9:56' a = 10 b = 20 list = [1, 2, 3, 4, 5 ]; if ( a in list ): print ("1 - 变量 a 在给定的列表中 list 中") else: print ("1 - 变量 a 不在给定的列表中 list 中") if ( b not in list ): print ("2 - 变量 b 不在给定的列表中 list 中") else: print ("2 - 变量 b 在给定的列表中 list 中") # 修改变量 a 的值 a = 2 if ( a in list ): print ("3 - 变量 a 在给定的列表中 list 中") else: print ("3 - 变量 a 不在给定的列表中 list 中")
1 - 变量 a 不在给定的列表中 list 中 2 - 变量 b 不在给定的列表中 list 中 3 - 变量 a 在给定的列表中 list 中
身份运算符
身份运算符用于比较两个对象的存储单元:
a = 20 b = 20 if ( a is b ): print ("1 - a 和 b 有相同的标识") else: print ("1 - a 和 b 没有相同的标识") if ( id(a) == id(b) ): print ("2 - a 和 b 有相同的标识") else: print ("2 - a 和 b 没有相同的标识") # 修改变量 b 的值 b = 30 if ( a is b ): print ("3 - a 和 b 有相同的标识") else: print ("3 - a 和 b 没有相同的标识") if ( a is not b ): print ("4 - a 和 b 没有相同的标识") else: print ("4 - a 和 b 有相同的标识")
1 - a 和 b 有相同的标识 2 - a 和 b 有相同的标识 3 - a 和 b 没有相同的标识 4 - a 和 b 没有相同的标识
三目运算符(三元表达式)
在python中的格式为:为真时的结果 if 判定条件 else 为假时的结果:
例如:True if 5>3 else False
运算符优先等级
以下表格列出了从最高到最低优先级的所有运算符:
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2019/3/7 9:56' a = 20 b = 10 c = 15 d = 5 e = 0 e = (a + b) * c / d #( 30 * 15 ) / 5 print ("(a + b) * c / d 运算结果为:", e) e = ((a + b) * c) / d # (30 * 15 ) / 5 print ("((a + b) * c) / d 运算结果为:", e) e = (a + b) * (c / d); # (30) * (15/5) print ("(a + b) * (c / d) 运算结果为:", e) e = a + (b * c) / d; # 20 + (150/5) print ("a + (b * c) / d 运算结果为:", e)
(a + b) * c / d 运算结果为: 90.0 ((a + b) * c) / d 运算结果为: 90.0 (a + b) * (c / d) 运算结果为: 90.0 a + (b * c) / d 运算结果为: 50.0
输入输出
input输入函数
input函数作用:获取用户输入,保存成一个字符串。input函数的返回值是一个字符串类型。即使输入的是一个数字1,返回的也是字符串“1”,而不是正式1。
input函数有时可以巧妙地用于阻塞或暂停程序。
print输出函数
print函数作用:用于将内容格式化显示在输出到屏幕显示器。
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2019/3/7 9:56' a = "i am" b = "student" print(a+"a"+b) #先计算a+"a"+b的值,然后再通过print打印 c = 10 d = 2 print(sum((c,c*d))) #先求a*b,再求和,在打印
print(*args, sep=' ', end='\', None) #print()函数的原型
sep参数 --->分隔的符号,默认是一个空格;
end参数 ---> 打印后的结束方式,默认为换行符\n。如果设置end='',则可以不换 ;
五、数据类型
数据类型的学习方法
基本使用
1、用途作用
2、定义方式
3、常用操作+内置方法
该类型的总结
1、存一个值or存多个值
只能存一个值
可以存多个值,值都可以是什么类型
2、有序or无序
3、可变or不可变
可变 : 值变,id不变
不可变 : 值变,id就变
数据类型Python中数据类型分为两种:内置和自定义:内置数据类型包括:数字、字符串、布尔、列表、元组、字典、Bytes、集合等;自定义:一般以类的形式,根据需要组合以上内置类型成为独特的数据类型;
为什么编程语言要设置不同的数据类型呢?
- 更好的分配管理内存,节省不必要的开支,如果没有数据类型,所有对象都必须按体积最大的对象来分配内存空间,这样太浪费。
- 有了数据类型,计算机就可以根据类型预定义的空间需求分配大小,合理开支。内存节省精简了,还能提高读取速度和运行效率。
- 方便统一管理,提供同样的API。我们可以为同一数据类型,提供同样的操作,限制其它不允许的行为。
- 区分数据类型,更符合人类对自然事物的分类管理习惯。
- 数据类型是Python语言中非常重要的部分,尤其是不同数据类型所支持的原生操作,更是重中之重。很多时候,写大型项目时,不需要多复杂的技巧,只需要用这些数据操作方法就可以。
数字类型
在程序开发时,经常使用数字记录游戏得分、网站的销售数据和网站的访问量等信息。在Python中,提供了数字类型用于保存这些数值,并且它们是不可改变的数据类型。如果修改数字类型变量的值,那么会先把该值存放到内容中,然后修改变量让其指向新的内存地址。
Python支持三种不同的数字类型:整数、浮点数、复数
1、整数(int)
整数用来表示整数数值,即没有小数部分的值。在Pytone中,整数包括正整数、负整数和0;
作用:年纪、等级、身份证号、qq号等整型数字相关;
2、浮点数
浮点数由整数部分和小数部分组成,主要用于处理包含小数的数。例如:1.414、0.5、-1.732 ;
作用:薪资、身高、体重、体质参数等浮点数相关;
字符串类型
字符串就是连续的字符序列,可以是计算机所能表示的一切字符的集合。在Python中,字符串属于不可变序列,通常使用单引号''、双引号" "、或者三引号‘’’ 或 “ “ ” 括起来。这三种引号形式在语义上没有差别,只是在形式上有些差别。其中单引号和双引号中的字符串序列必须在一行上,而三引号内的字符序列可以分布在连续多行上;
布尔类型
布尔类型主要用来表示真或假的值。在Python中,标识符True和False被解释为布尔值。另外,Python中的布尔值可以转化为数值,其中True表示1,而False表示0;
如何对象都可以被赋予(真假),用于if或while条件中的布尔值;
以下值False(假)
- None
- False
- 任何数值类型的零,例如0、0.0、0j
- 任何空序列,例如’‘,( ),[ ]
- 任何空映射,例如,{}
- 用户定义的类的实例,如果该类定义一个__bool__()或__len__()方法,当该方法返回布尔值False或整数零的时候。
布尔值运算----and,or,not
备注:
- 短路运算符,如果第一个测试是False,就只计算第二个参数。
- 短路运算符,如果第一个测试是True,就只计算第二个参数。
- not是一个低优先级的布尔运算符,使用not a == b。如果写成:not (a==b) 和 a == not b会报语法错误
六、综合练习
输入
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'tian'
__data__ = '2018/9/4 15:31'
#将用户输入的内容赋值给name变量
name = input("请输入用户名:")
#打印输入的用户名
print(name)
#输入密码时不可见,需要导入getpass模块
import getpass
pwd = getpass.getpass("请输入密码:")
print(pwd)
流程控制和缩进
需求一、用户登录验证
# 提示输入用户名和密码 # 验证用户名和密码 # 如果错误,则输出用户名或密码错误 # 如果成功,则输出 欢迎,XXX! import getpass name = input('请输入用户名:') pwd = getpass.getpass('请输入密码:') if name == "test" and pwd == "123456": print("欢迎,test!") else: print("用户名和密码错误")
需求二、根据用户输入内容输出权限
name = input("请输入用户名:")
if name=="test":
print("普通管理员")
elif name=="admin":
print("管理员")
elif name=="root" or name=="小王":
print("老板")
else:
print("普通用户")
while循环
1、基本循环
while 条件:
#循环体
#如果条件为真,那么循环体则执行
#如果条件为假,那么循环体不执行
2、break
break用于退出所有循环
while True:
print("hello")
break
print("123")
3、continue
continue用于退出当前循环,继续下一次循环
while True:
print("hello")
continue
print("456")
#死循环一直输出hello
练习题
#1、使用while循环输入1 2 3 4 5 6 8 9 10
while True:
i = int(input("请输入1到10数字:").strip())
if i==7:
continue
elif i>10:
break
print(i)
#2、求1-100的所有数的和
number = list(range(1,101))
sum =0
for i in number:
sum+=i
print(sum)
#3、输出1-100内所有奇数
number = list(range(1,101))
for i in number:
if i%2!=0:
print(i)
#4、输出1-100内所有偶数
for i in number:
if i%2!=0:
continue
print(i)
#5、求1-2+3-4+5...的所有数的和
#思路求出所有偶数和奇数和,然后用奇数和减去偶数和
sum1 = 0
sum2 = 0
for i in number:
if i%2==0:
sum2+=i
else:
sum1+=i
sum = sum1 - sum2
print(sum)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 问题:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?
"""
5*公鸡 < 100
3*母鸡 < 100
1*小鸡 < 300
公鸡+母鸡+小鸡 = 1000
"""
for g in range(1,21):
for m in range(1,34):
for x in range(1,301):
sorge = g*5 + m*3 + x/3
if sorge == 100 and g+m+x==100:
print("公鸡{0}只,母鸡{1}只,小鸡{2}只".format(g,m,x))