python 基础 day01

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 EncodingProject 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'
上一篇:python每日一练:0001题


下一篇:原码、反码、补码知识详细讲解