# 一、python介绍

1.python简介

Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。

主要特点:

      1.面向过程,面向对象

      2.语法简单,易学易用

      3.模块丰富,功能强大

      4.跨平台,具有可移植性

      5.具有很好的扩展性

简单、易学、免费开源、高层语言、可移植性、解释性、面向对象、可扩展性、可嵌入型、丰富的库

2.编译器与解释器

 

编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的. 
这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的控制权在用户程序。
解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。

 

解释器种类



cpython解释器(*)
jpython解释器
ironPython解释器
rubyPyhton解释器
.....
pypy解释器



  

3.python版本

 python的版本分为2系列和3系列,目前使用最多的是3系列。

核心区别

1.Python3对Unicode字符的原生支持

  Python2中使用 ASCII 码作为默认编码方式导致string有两种类型str和unicode,Python3只支持unicode的string。python2和python3字节和字符对应关系为:

  Python2中编码需要在脚本中说明是utf-8,而Python3中默认使用utf-8

  print语句被python3废弃,统一使用print函数

2.Python3采用的是绝对路径的方式进行import。

Python2中相对路径的import会导致标准库导入变得困难(想象一下,同一目录下有file.py,如何同时导入这个文件和标准库file)。Python3中这一点将被修改,如果还需要导入同一目录的文件必须使用绝对路径,否则只能使用相关导入的方式来进行导入。

3.Python2中存在老式类和新式类的区别,Python3统一采用新式类。新式类声明要求继承object,必须用新式类应用多重继承。

4.Python3使用更加严格的缩进。Python2的缩进机制中,1个tab和8个space是等价的,所以在缩进中可以同时允许tab和space在代码中共存。这种等价机制会导致部分IDE使用存在问题。Python3中1个tab只能找另外一个tab替代,因此tab和space共存会导致报错:TabError: inconsistent use of tabs and spaces in indentation.

4.字节码 vs. 机器码

了解字节码和机器码(或者native code)的区别是很重要的,最好的办法或许是看看例子:

  • C代码被编译成机器码,将在处理器上直接执行。每一条指令控制CPU工作。
  • Java代码被编译成字节码,将在Java虚拟机(JVM)这个抽象的计算机上执行。每一条指令由JVM处理,JVM同计算机本身之间交互。

简而言之:机器码快的多,但字节码更易迁移,也更安全。

机器码随机器的变化而变化,但字节码在所有的机器上都是一样的。有人可能会认为机器码是对特定环境优化了的。

回到CPython,工具链的执行过程如下:

  • CPython编译你的Python源代码,生成字节码。
  • 字节码随后在CPython虚拟机上执行。

 

二、python安装

1.官网下载安装包



https://www.python.org/ftp/python/3.6.5/python-3.6.5.exe



 

三、输入输出

输入:



1 print("欢迎访问我的博客")
2 结果:
3 欢迎访问我的博客



输出:



1 input("请输入你最爱的博主:")
2 结果:
3 请输入你最爱的博主:生哥



完整代码:



1 print("欢迎访问我的博客!")
2 bozhu = input("请输入你最爱的博主:")
3 print(bozhu)
4 结果显示:
5 欢迎访问我的博客!
6 请输入你最爱的博主:生哥
7 生哥



四、变量

变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。

基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。

因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

变量赋值

Python 中的变量赋值不需要类型声明。

每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

等号(=)用来给变量赋值。

等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

例如



1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 name = "生哥"
 4 age = 22
 5 job = "python"
 6 print(name)
 7 print(age)
 8 print(job)
 9 print(type(name))
10 print(type(job))
11 print(type(age))



结果



1 生哥
2 22
3 python
4 <class 'str'>
5 <class 'str'>
6 <class 'int'>



变量命名规则

1. 变量名的长度不受限制,但其中的字符必须是字母、数字、或者下划线(_),而不能使用空格、连字符、标点符号、引号或其他字符。 
2. 变量名的第一个字符不能是数字,而必须是字母或下划线。 
3. Python区分大小写。 
4. 不能将Python关键字用作变量名

例如:



1 name = "生哥"
2 age = 22
3 job = "python"
4 print(name)
5 print(age)
6 print(job)



 

五、数据类型

 

字符串(String)

Python中的字符串用单引号(')或双引号(")括起来,同时使用反斜杠(\)转义特殊字符。



1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 name = "shengge"
4 print(name)
5 print(name[0])
6 print(name[0:2])
7 print(name[6])
8 print(name + name)



执行结果



1 shengge
2 s
3 sh
4 e
5 shenggeshengge



整数(int)

整数类型定义的时候变量名后面直接跟数字,数字类型是不可变数据类型



>>> age = 20
>>> type(age)
<class 'int'>
>>>



列表(list)

 列表是常见的数据类型,用中括号[]定义,可以存多个任意类似的值,列表和字符串一样都是有序排列的,可以用切片和索引的方式访问数据,并且列表是可变数据类型。



1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 lis = ["user","name","root","admin"]
4 print(lis)
5 name = "adminroot"
6 li =  list(name)
7 print(li)



执行结果



1 ['user', 'name', 'root', 'admin']
2 ['a', 'd', 'm', 'i', 'n', 'r', 'o', 'o', 't']



根据索引和切片切片输出



1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 lis = ["user","name","root","admin"]
4 print(lis)
5 print(lis[0])
6 print(lis[1:3])
7 print(lis[3:])
8 print(lis[0:3:2])



执行结果



1 ['user', 'name', 'root', 'admin']
2 user
3 ['name', 'root']
4 ['admin']
5 ['user', 'root']



字典

字典是一种映射型的数据类型,每个元素成对出现,即key- value,每对元素key 和  value“:”冒号分开,元素之间用逗号隔开,整个字典包括子在{}中。

字典中的“key”必须是不可变类型,“value”则可以是任意类型,如果出现一个“key”被多个“value”赋值,那么值为最后个被赋的值,字典是可变数据类型,并且是无序的。所有不可变的数据类型都可以作为字典中的key,例如数字,字符串,元祖。字典的基本操作包括 创建,增加,删除,修改,查找,遍历,更新,in  or  not in 等。



1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 user = {'name': '123', 'age': '123', 'sex': '123'}
4 print(user)
5 print(user['name'])
6 print(user['age'])
7 print(user['sex'])



执行结果



{'name': '123', 'age': '123', 'sex': '123'}
123
123
123



 

六、条件控制

 

if语句 

  • 1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  • 2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。

列表是常见的数据类型,用中括号[]定义,可以存多个任意类似的值,列表和字符串一样都是有序排列的,可以用切片和索引的方式访问数据,并且列表是可变数据类型。



1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 print("欢迎进入猜狗狗年龄程序!")
 4 age = int(input("请输入你家狗狗的年龄: "))
 5 print("")
 6 if age < 0:
 7     print("你是在逗我吧!")
 8 elif age == 1:
 9     print("相当于 14 岁的人。")
10 elif age == 2:
11     print("相当于 22 岁的人。")
12 elif age > 2:
13     human = 22 + (age -2)*5
14     print("对应人类年龄: ", human)
15 ### 退出提示
16 input("点击 Enter 键退出")



 

执行结果



1 欢迎进入猜狗狗年龄程序!
2 请输入你家狗狗的年龄: 22
3 对应人类年龄:  122
4 点击 Enter 键退出



if嵌套



if 表达式1:
    语句
    if 表达式2:
        语句
    elif 表达式3:
        语句
    else:
        语句
elif 表达式4:
    语句
else:
    语句



实例

 



1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #10086提醒
 4 print("欢迎使用10086服务")
 5 msg = """
 6 1.查询话费
 7 2.查询流量
 8 3.人工服务
 9 """
10 print(msg)
11 choice = input("请选择需要的服务:")
12 if choice == "1":
13     print("1.查询本机:2.查询消费:3.查询账本:")
14     se_type = input("请输入查询类型:")
15     if se_type == "1":
16         print("查询本机")
17     elif se_type == "2":
18         print("查询消费")
19     elif se_type == "3":
20         print("查询账本")
21     else:
22         print("查询类型无效")
23 elif choice == "2":
24     print("1.查询总流量:2.查询剩余流量:3.查询使用流量:")
25     se_type = input("请输入查询类型:")
26     if se_type == "1":
27         print("查询总流量")
28     elif se_type == "2":
29         print("查询剩余流量")
30     elif se_type == "3":
31         print("查询使用流量")
32     else:
33         print("查询类型无效")
34 elif choice == "3":
35     print("人工服务")
36 else:
37     print("输入无效")



 

 

 

七、循环

Python中有两种循环,分别为:for循环和while循环。

for循环

for循环语句是python中的一个循环控制语句,任何有序的序列对象内的元素都可以遍历,比如字符串、列表List、元组等可迭代对像。

 语法格式:



for <val> in <序列>:
    <循环体>



val 是一个变量,在每次迭代中,用于接收将序列中元素的值。

循环会一直继续,直到到达序列的最后一项。循环体与其余的代码使用缩进分隔。

流程图:

 

Python 本质 python具有什么的本质_java

实例



#!/usr/bin/env python
# -*- coding:utf-8 -*-
for letter in 'Jay':
    print('当前字母:', letter)

songs = ['安静', '蜗牛', '稻香']
for song in songs:
    print('正在播放:', song)



执行结果:



1 当前字母: J
2 当前字母: a
3 当前字母: y
4 正在播放: 安静
5 正在播放: 蜗牛
6 正在播放: 稻香



while循环

 语法格式:



1 while <判断条件>:
2     <循环体>



进入 while 循环,首先检测判断条件,只有当其为 True 时,才会进入循环体。一次迭代后,再次检测判断条件,此过程一直持续到判断条件为 False。

和 for 循环一样,while 的循环体也通过缩进来确定。

 流程图:

Python 本质 python具有什么的本质_java_02

 

实例



1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 i = 0
4 while i < 5:
5     print('正在播放:牧马城市')
6     i += 1



执行结果



正在播放:牧马城市
正在播放:牧马城市
正在播放:牧马城市
正在播放:牧马城市
正在播放:牧马城市



  

break语句



break语句可以结束当前循环然后跳转到下条语句



continue语句



当遇到continue语句时,程序会终止当前循环,并忽略剩余的语句.然后回到循环的顶端



如果仍然满足循环条件,循环体内语句继续执行,否则退出循环



实例



#!/usr/bin/env python
# -*- coding:utf-8 -*-
user_list = [
    {"username":"kk","passwd":"123","num":0},
    {"username":"ks","passwd":"123","num":0},
    {"username":"kw","passwd":"123","num":0},
    {"username":"pp","passwd":"123","num":0}
]
user_nam = input("请输入用户名:")
user_pwd = input("请输入密码:")
flag = False
for i in user_list:
    if i["username"] == user_nam and i["passwd"] == user_pwd :
        # print("登录成功")
        flag = True
        break
    else:
        pass
if flag:
    print("登录成功")
else:
    print("登录失败")



  



 

八、练习题

 

1、求1-100的所有数的和




Python 本质 python具有什么的本质_Python 本质_03

Python 本质 python具有什么的本质_数据结构与算法_04

1 num = 1
2 sum_num = 0
3 while num < 101:
4     sum_num = sum_num + num
5     num += 1
6 print(sum_num)


View Code


2、输出 1-100 内的所有奇数




Python 本质 python具有什么的本质_Python 本质_03

Python 本质 python具有什么的本质_数据结构与算法_04

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 num = 1
4 while num <100:
5     if num%2 == 1:
6         print(num)
7     num += 1


View Code


3、输出 1-100 内的所有偶数




Python 本质 python具有什么的本质_Python 本质_03

Python 本质 python具有什么的本质_数据结构与算法_04

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 num = 1
4 while num <101:
5     if num%2 == 0:
6         print(num)
7     num += 1


View Code


4、求1-2+3-4+5 ... 99的所有数的和




Python 本质 python具有什么的本质_Python 本质_03

Python 本质 python具有什么的本质_数据结构与算法_04

1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 sum = 0
 4 for num in range(100): #range函数,默认从0开始跳跃间隔默认为1
 5     if num%2 == 0:
 6         sum = sum - num
 7     else:
 8         sum = sum + num
 9 print(sum)
10 
11 sum = 0
12 num = 1
13 while num < 100:
14     if num%2 == 0: #如果取余=0说明是奇数,那么进行减法动作,
15         sum = sum - num
16     else:         #取余!=0说明是偶数,那么进行加法动作
17         sum = sum + num
18     num += 1
19 print(sum)


View Code


5、用户登录(三次错误机会)




Python 本质 python具有什么的本质_Python 本质_03

Python 本质 python具有什么的本质_数据结构与算法_04

#!/usr/bin/env python
# -*- coding:utf-8 -*-
print("欢迎使用用户登录程序,你可以尝试登录三次哦!")
user = "ljs"
pwd = "ljs"
num = 1
while num < 4:
    user_name = input("请输入用户名:")
    user_pwd = input("请输入密码:")
    if user_name == user and user_pwd == pwd:
        print("登录成功!")
        break
    else:
        print("请重新输入!")
        continue


View Code