python基础 day01
1.温馨建议
github开源社区
CSDN博客
2.为什么要学习Python
1、代码量少
2、开发速度快
近两年的网络爬虫,大数据
简单,功能强大,*开放的社区环境,丰富的第三方库
人生苦短,我用python
3 .什么是Python
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言
解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。可移植性好
面向对象:面向对象是一种以你办事我放心为理想构造出来的东西
动态数据类型:变量不需要指定类型
Python的特点
1>Python是一种解释性语言【开发过程中没有了编译这个环节,类似于PHP或者Perl语言】
2>Python是交互式语言【可以在一个Python提示符,直接互动执行程序】
3>Python是面向对象语言【Python支持面向对象的风格或代码封装在对象的编程技术】
4>Python是初学者的语言【Python对于初级程序员而言,是一种伟大的语言,他支持广泛的应用程序开发,从简单的文字处理到浏览器再到游戏】
4.Python的发展史
python的起源
python的创始人为吉多.范罗苏姆
1.1989年的圣诞节,为了打发时间,决心开发一个新的解释程序。
2.1991年第一个python解释器诞生,并且能够调用c语言的库文件。
Python是Guido van Rossum1989年的圣诞节开发的一门语言,这个名字来自于他最钟爱的电视剧Monty Python’s Flying Circus,在荷兰国家数学和计算机科学研究所设计出来的
Python本身也是由诸多其他语言发展而来的,这包括C、C++、Unix shell和其他的脚本语言等 现在Python是由一个核心开发团队在维护,吉多·范罗苏姆[Guido van Rossum]仍然占据这至关重要的作用,指导其进展.
Python2还是Python3?
py2.7是2.x系列的最后一个版本,已经停止开发,不再增加新功能。2020年终止支持。所有的最新的标准库的更新改进,只会在3.x的版本里出现。Guido决定清理Python2.x ,并且不再兼容旧版本。
Python优缺点
python的优点
1>易于学习【Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单】
2>易于阅读【Python代码定义的更清晰】
3>易于维护【Python的成功在于它的源代码是相当容易维护的】
4>一个广泛的标准库【Python的最大优势之一是丰富的库,跨平台的,在nuix、weindows和mac os上的兼容性很好】
5>互动模式【互动模式的支持,可以终端输入执行代码并获得结果的语言,互动的测试和调试代码片段】
6>可移植性【基于其开发源代码的特性,Python已经被移植到许多平台】
7>可扩展性【如果需要一段运行很快的关键代码,或者想要编写一些不愿开发的算法,可以使用C或者C++完成那部分程序,然后从你的Python程序中调用】
8>数据库【Python提供所有主要的商业数据库的接口】
9>GUI编程(图形化界面)【Python支持GUI可以创建和移植到许多系统调用】
10>可嵌入性【可以将Python嵌入到C或者C++程序,让你程序的用户获得“脚本化”的能力】
python的缺点
1>运行速度慢【和C程序相比非常慢,因为Python是解释型语言,代码在执行时会一行一行的翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢,而C程序是运行前直接编译成CPU能执行的机器码,所以非常快】,运算密集型,I/O密集型
2>代码不能加密【如果要发布Python程序,实际上就是发布源代码,这一点跟C语言不通,C语言不用发布源代码,只需要把编译后的机器码(就是windows上常见的xxx.exe)发布出去,要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去】
程序
运算密集型:运算程序比较多,【强烈不建议使用python】
I/O密集型:网络请求居多【python】
5.Python能做什么
web后端
网络爬虫
自动化运维
自动化测试
数据分析
人工智能
科普解释器
计算机不能理解任何除机器语言之外的语言,因此,当我们开发出的程序,必须通过中间翻译的过程的来让我们的计算机识别。
我们的语言这时候可以划分为两种,第一种是编译型语言,第二种是解释型语言(python属于第二种)。
编译型语言:统一编译,一次性执行
解释型语言:翻译一行执行一行(执行速度慢)
6.电脑的存储机制
思考:电脑是用来做什么的?
1.存储数据
2.处理数据
电脑存储数据有两个地方,内存以及磁盘
内存:临时数据,正在运行的程序[运存]
磁盘:永久数据,软件以及文件图片
那么,数据以什么样的方式进行存储的呢?电脑如何记录数据呢?
数据是以二进制的方式存储在内存中的。
导通三极管:0:导通态 1:截至态 击穿状态【非正常态】
抽象理解
一个开关,有两种状态,开关和关闭,一种对应0,一种对应1,如果将8个开关放到一个房间中,则这间房间被称为一个“字节”,而其中的任意一个开关则代表“一位”,每个房间都有门牌号,看做“地址”,把具有这种特征的无数个房间组成摩天大厦,则摩天大厦就相当于计算机的内存【采用开关原理,计算机运行起来速率高】
单位
计算机中表示数据的最小单位是比特(bit—b)、又叫做位
计算机中处理数据的单位:字节(Byte — B) 1B = 8b 【1字节=8位】 1KB = 1024B 1M = 2^10KB 1G = 1024M 1T = 1024G
1k=1024
1>每年的10.24为中国的程序员节
2>程序员的工资都说多少K
结论
计算机在内存中以二进制的形式存储数据【举例:生活中为什么采用的是十进制?】
7.进制以及进制的换算
什么是进制
进制就是进位制,是人们规定的一种进位方法.
二进制:0b 标识
0 1
逢二进一
0 + 1 = 1
1 + 1 = 10
101 + 110= 1011
1100 + 0101 = 10001
1010 + 0110 = 10000
八进制:0o
0 1 2 3 4 5 6 7
逢八进一
1 + 7 = 10
12 + 16 = 30
234 + 123 = 357
245 +745 = 1212
十进制:0d
0 1 2 3 4 5 6 7 8 9
逢十进一
十六进制:0x
0 1 2 3 4 5 6 7 8 9 a b c d e f
逢十六进一
1 + f = 10
5 + d = 12
1f + 23 = 42
2f4 + 32d = 621
235 + 3ed = 622
十进制换算成二进制
倒除法,余数逆序
5 -->0101
11 --> 1011
14 --> 1110
15 --> 1111
二进制换算成十进制
当前的数字乘以2的位数次方,最后相加。
位数从右往左数,从0开始
1 0 1 1
1x2^3 + 0x2^2 + 1x2^1 + 1x2^0 =11
10110-->22
11011-->27
110110-->54
八进制转换二进制
一位转三位,高位不够补0
12 --> 001010
345--> 011100101
457--> 100101111
105 --> 001000101
二进制转换为八进制
三位一取:低位开始取,高位不够补0
001011101 --> 135
1001101--> 115
01011011 --> 133
110011-->63
十六进制转换二进制
一位转四位,位数不够高位补0
f --> 1111
3d --> 00111101
34a -->001101001010
fd3--> 111111010011
二进制转换十六进制
四位一取,从低位开始取,高位不够补0
101 0111 --> 57
101 0101 -->55
1110 1101-->ed
1011 1011 -->bb
8.原码、反码、补码
计算机存储数据,先开辟空间再存储数据,开辟的最小单元是字节
为什么会有原码、反码与补码?
计算机只能识别0和1,而我们的数值是具有正负数之分的。于是在计算机存储数据时,最高位表示符号位,0正数 1负数。这就是机器数的原码了。
1 --> 二进制
0000 0000 0000 0000 0000 0000 0000 0001
0000 0000 0000 0000 0000 0000 0000 0001
------------------------------------------
0000 0000 0000 0000 0000 0000 0000 00010
1+1 ==》10
0000 0001
0000 0001
------------
0000 0010
1+(-1)==》?-2?
0000 0001
1000 0001
----------
1000 0010
结论:计算机处理数据的时候,并不是以原码的方式来进行处理的。
-1 --> 二进制
1000 0000 0000 0000 0000 0000 0000 0001
----------------------------------------
1 10
既然有了数值的表示方法就可以对数进行算术运算,但是带有符号位的原码在对进行负数操作时出现了问题。发现问题在带符号位的负数身上,对除符号位以外的各位逐位求反,于是就产生了反码。
1 --> 二进制
原码:0000 0000 0000 0000 0000 0000 0000 0001
-1 --> 二进制
原码:1000 0000 0000 0000 0000 0000 0000 0001
反码:1111 1111 1111 1111 1111 1111 1111 1110
----------------------------------------------
1111 1111 1111 1111 1111 1111 1111 1111
整数的反码等于自己本身【原码】
0000 0001 (+1)
符数的反码,符号位不变,除符号位以外对其他位逐位求反。
1000 0001 (-1原码)
1111 1110 (-1反码)
反码进行计算:
0000 0001
1111 1110
----------
1111 1111
问题出现在(+0)和(-0)上,在人的概念中零是没有正负之分的,于是就引出了补码的概念,负数的补码就是对反码加一。
-1补码:
反码:1111 1111 1111 1111 1111 1111 1111 1110
补码:1111 1111 1111 1111 1111 1111 1111 1111
1:
反码:0000 0000 0000 0000 0000 0000 0000 0001
补码:0000 0000 0000 0000 0000 0000 0000 0001
-------------------------------------------
1 0000 0000 0000 0000 0000 0000 0000 0000
0 0000 0000 0000 0000 0000 0000 0000 0000
-0 1111 1111 1111 1111 1111 1111 1111 1111
--------------------------------------------
补码进行计算:
0000 0001
1111 1110
=》-1的补码
1111 1111
0000 0001
---------
10000 0000
正数:原码,反码,补码三码合一
负数:
原码:最高位【符号位】为1,与他位与正数的表示相同
反码:符号位不动,其他按位取反
补码:负数的反码加1
结论:计算机以补码的形式存储数据
9.Python 环境搭建
window 下搭建python环境
1.打开WEB浏览器访问http://www.python.org/download/
2.在下载列表中选择Window平台安装包,包格式为:python-XYZ.msi 文件 , XYZ 为你要安装的版本号。
一般使用3.6.0
3.下载后,双击下载包,进入Python安装向导,安装非常简单,你只需要使用默认的设置一直点击"下一步"直到安装完成即可。
4.在 Windows 设置环境变量
- 右键点击"计算机",然后点击"属性"
- 然后点击"高级系统设置"
- 选择"系统变量"窗口下面的"Path",双击即可!
- 然后在"Path"行,添加python安装路径即可(我的D:\Python32),所以在后面,添加该路径即可。 ps:记住,路径直接用分号";"隔开!
- 最后设置成功以后,在cmd命令行,输入命令"python",就可以有相关显示。
MAC下安装Python
Mac系统都自带有Python环境,你也可以在链接 http://www.python.org/download/ 上下载最新版安装。
win + r ===> cmd ==>显示终端
在终端中输入python—》显示python信息
进入:python
退出:exit()
10.第一个Python程序
运行python有三种方式
1.交互式解释器模式:
dos —》cmd
python/python3 进入编辑模式
exit() #退出编辑
测试
print(“hello world”)
######2.命令行脚本模式:
使用记事本新建一个hello.py结尾的文件
在文件中写入要执行的代码,最后在控制台输入以下的命令进行执行 python/python3 hello.py
先进入文件所在的目录[文件夹] --》python hello.py
【自动化测试的时候使用居多】
3.集成开发环境(IDE):PyCharm
PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。
PyCharm 功能 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……
PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/
注常用的dos命令:
dir 查看当前目录下所有文件
cd 路径 跳转到指定路径
cd … …代表的是上一级目录
切换盘符: 盘符名:,例如c:
在python使用标点符号都是英文下的。
“#”单行注释
‘’’’’’:多行注释
print “hello world!” 输出
注意:Mac安装俩个python版本,2和3,python2系列可以支持 print “xxxx” ,python3系列需要使用print(“xxx”)
11.Pyhton中文编码
pyhton中未指定编码格式,遇到中文的时候,执行可能会报错:
#!/usr/bin/python
print "你好,世界!"
python2中会报以下错误
MacBook-Pro:python练习 zhangjiao$ python test.py
File "test.py", line 2
SyntaxError: Non-ASCII character '\xe2' in file test.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Python2.x中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。
**注意:**解决方法为只要在文件开头加入 # -- coding: UTF-8 -- 或者 #coding=utf-8 就行了
#!/user/bin/python
#-*- coding:utf-8 -*-
# print语句
print "你好,世界!"
Pycharm 设置步骤:
- 进入 file > Settings,在输入框搜索 encoding。
- 找到 Editor > File encodings,将 IDE Encoding 和 Project Encoding 设置为utf-8。
拓展
直接像.exe文件那样运行.py 文件,在windows上是不行的,但是,在Mac和Linux上是可以的,方法是在.py文件的第一行加上一个特殊的注释:
#!/usr/bin/env python3
print('hello world')
然后通过命令给hello.py以执行权限
$ chmod a+x hello.py
就可以直接运行hello.py了。
12.输入与输出
输出
使用print()在括号中加上字符串,就可以向屏幕中输出指定的文字,比如输出“hello world”,用以下代码实现
print("hello world")
print()函数也可以同时输出多个字符串,用使用逗号“,”隔开
print("hello", "how", "are", "you")
print()会依次打印每个字符串,遇到逗号“,”会输出空格。输出的内容是这样的:
hello how are you
print()可以打印整数,或者计算结果
>>>print(300)
300
>>>print(100 + 200)
300
我们也可以把打印的结果显示的再漂亮一些
>>>print("100 + 200 =", 100 + 200)
100 + 200 = 300
注意:对于字符串"100 + 200 ="它会原样输出,但是对于100+200,python解释器自动计算出结果为300,因此会打印出上述的结果。
输入:
Python提供了一个input()函数,可以让用户输入字符串,并且存放在变量中,比如输入用户名
>>> name = input()
jean
如何查看输入的内容:
>>> name
'jean'
或者使用:
>>> print(name)
jean
当然,有时候需要友好的提示一下,我们也可以这样做:
>>> name = input("place enter your name")
place input your name jean
>>> print("hello,", name)
hello, jean
【面试题】
问题:计算机底层处理数据的时候采用的是原码,反码还是补码?
拓展:
使用bin(),oct(),hex()进行转换的时候的返回值均为字符串,且带有0b, 0o, 0x前缀.
十进制转换为二进制
>>> bin(10)
'0b1010'
>>>'{0:b}'.format(10)
'1010'
十进制转为八进制
>>> oct(12)
'014'
>>> '{0:o}'.format(12)
'14'
十进制转为十六进制
>>> hex(12)
'0xc'
>>> '{0:x}'.format(12)
'c'
二进制转为十进制
>>> int('1010',2)
10
>>> eval('0b10')
2
>>> '{0:d}'.format(0b1010)
'10'
八进制转为十进制
>>> int('014', 8)
12
>>> '{0:d}'.format(0o14)
'12'
>>> eval('0o10')
8
十六进制转十进制
>>> int('0xc',16)
12
>>> '{0:d}'.format(0xc)
'12'
>>> eval('0x10')
16
注意:
hex函数比格式化字符串函数format慢,不推荐使用.
eval函数比int函数慢,不推荐使用
二进制, 十六进制以及八进制之间的转换,可以借助十进制这个中间值,即先转十进制再转其他的进制,也可以直接使用函数进制转换.
#借助十进制
>>> bin(int('fc',16))
'0b11111100'
#利用函数直接转
>>> bin(0xa)
'0b1010'
>>> oct(0xa)
'012'
>>> hex(10)
'0xa'