一、Python的简介

1、Python的由来与版本

1.1 python的由来

 python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

1.2  python版本

  目前Python的主要版本为Python2.7与Python3.6 。

  Python2版本到2020年就不再维护。

2、Python是什么样的语言

编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言,每个分类代表什么意思呢,我们一起来看一下。

2.1 编译型语言和解释型语言

  编译型语言:当用户写完一段代码需要执行的时候,由编译器先把整段代码一次性编译成计算机能看懂的二进制文件,然后再执行。这个过程中,如果用户写的代码出错了,编译器就得整段从头开始编译,只是几行或者几页代码的情况下还感觉不出来,但是如果代码由成千上万行甚至上亿行,可想而知,会浪费很多时间,导致开发速度慢。而且,他不是跨平台的,编译过后的代码在不同操作系统上就无法执行。他的优点是运行快,因为一旦编译成功,每次调用只需直接执行即可

  编译型语言的代表:C语言、C++语言

  解释型语言:当用户写完一段代码需要执行的时候,由解释器一段一段的解释成计算机能看懂的二进制文件,然后直接执行。与编译型语言不同的是,如果用户写的代码出错了,解释器不需要从头开始,这就会大大节省了开发时间。而且他是可以移植的,不同操作系统由不同的解释器可以解释他。他的缺点是执行速度慢,每次执行都需要一行一行的解释。

  解释型语言的代表:JavaScript、PHP、Python

2.2 动态语言与静态语言

  动态语言:动态语言是指在运行的时候才去检查一个变量的数据类型,写程序的时候不需要先给一个变量指定类型。当第一次给变量赋值的时候,该语言会将该变量的数据类型存到内存当中。Python和Ruby就是典型的动态语言的代表。

  静态语言:静态语言是指程序在编译的时候就要首先检查每个变量的数据类型,所以用户在写程序之前就要首先声明每个变量的数据类型。Java、C、C++都是静态语言的代表。

2.3 强类型定义语言和弱类型定义语言

  强类型定义语言:一旦一个变量被赋值为一个数据类型,那么它将永远为该数据类型,除非它被强制转换(int()、str())。比如说 a = 1 那么之后在给 a 赋值的时候也必须为整形。

  弱类型定义语言:一个变量可以在不同的时候被赋予不同数据类型的值。所以,一个变量的数据类型可以被忽略。

综上所述,Python是一种动态解释型的强类型定义语言。

3、Python的优缺点

    优点:

    ▷ 优雅、明确、简洁

    ▷ 可移植、可拓展、可潜入

    ▷ 开发效率高

    缺点:

    ▷ 运行速度慢

    ▷ 代码不能加密

    ▷ 不能多线程

4、Python的种类

   CPython

    当我们从Python官方网站下载并安装好Python 3.6后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

    CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

  IPython

    IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调                 用了IE。

    CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

   PyPy

    PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。

  Jython

    Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

  IronPython

     IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

  小结:

    Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

二、Python的环境配置   

  1. 1、下载安装包
  2. https://www.python.org/downloads/
  3. 2、安装
  4. 默认安装路径:C:\python27
  5. 3、配置环境变量
  6. 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> Python安装目录追加到变值值中,用 分割】
  7. 如:原来的值;C:\python27,切记前面要有英文输入法状态下的分号

三、Python基础

1、编写以及运行Python代码的方法

  ▷ 在E盘创建一个文件名为test.py的文件,编写代码如下:

  1. print("Hello World!")

  ▷ 按快捷键win+R打开运行窗口,然后输入cmd打开命令行窗口。

    

    ▷在命令行窗口里输入 python e:/test.py

    

    上图可以看出,以及成功运行该文件代码并且打印出“Hello World!”

2、内容编码

  解释器在执行代码的时候,需要将代码编译成机器能读懂的二进制码(由1和0组成),而python2版本在编译的时候默认以ASCII码的格式进行转换(也可以指定编码格式),而python3版本在编译的时候默认为utf-8格式进行转换。

  ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

  然而,世界上的语言以及符号远远不止256个,所以当计算机传入世界各国的时候ASCII码已经不能满足大家的使用了,于是出现了Unicode(统一码、万国码、单一码),Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

  但是问题来了,友谊Unicode至少2个字节,也就是16位,但是英文字母以及有些符号根本不需要这么多字节,所以统一用Unicode码的话会大大浪费宝贵的内存空间,于是又出现了一种新的编码:UTF-8.该编码格式是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

  所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

报错:ascii码无法表示中文

  1. print('你好,世界!')

解决方法是,在代码的首行加入以下代码,用来指定编码格式:

  1. #-*- ecoding:utf-8 -*-
    #这样,就能成功执行并打印出中文“你好,世界!”了。

3、注释

    单行注释:# 被注释内容

     多行注释:'''被注释内容''',或者"""被注释内容"""

4、变量

    变量就是把程序运行的中间结果,存到内存中,以待调用

    ▷声明变量 

  1. 1 # -*- coding: utf-8 -*-
  2. 2
  3. 3 name = "fuyong"

上述代码声明了一个变量,变量名为: name,变量name的值为:"fuyong"

变量的作用:昵称,其代指内存里某个地址中保存的内容

▷变量的命名规则

   1、由字母、下划线、数字组成

   2、首字母不能是数字

   3、不能是python中的关键字(以下为python关键字)

  1. ['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']

▷变量的赋值

变量的赋值其实是在内存中开辟一块数据,然后将该数据指向变量名,这样在调用变量名的时候就能找到该变量所对应的值。  

而如果将一个变量的值赋予给另一个变量,那么内存中还是只有一个数据值,只是将该数据指向了不同的两个变量而已

5、常量  

    常量即指不变的量,如pai 3.141592653..., 或在程序运行过程中不会改变的量

    在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量(实际上这个常量也是可以改变值的)

  1.     :Bir_of_China = 1949         

6、用户交互(input)

  1. 1 # -*- coding: utf-8 -*-
  2. 2
  3. 3 # 将用户输入的内容赋值给 name 变量
  4. 4 name = input("请输入用户名:")
  5. 5 age = input('请输入您的年龄')
  6. 6 # 打印输入的内容
  7. 7 print(name,age)
    #执行脚本就会发现,程序会等待你输入姓名后再往下继续走。

7、基础数据类型

  1.        ▷ int 整形
            32位的机器上,int的长度为32为,范围为 -2**31 -- 2**31-1
            64位的机器上,int的长度为64位,范围为 -2**63 -- 2**63-1
  2.         long 长整型 python3版本已经没有该类型了,不管多长的数,全部为int类型)
            C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
            该类型不用用户特别定义,当一个数字大到超过int数据类型的范围后将自动转化为long长整形。
            注意:python3版本没有long型了,全部为int类型
  3.         bool 布尔类型(True False
            True 1 1==1 2>1 type'a' == str 的结果均为True
            False0 1!=1 2>3 等等的结果均为False
  4.         str 字符串类型
            简单一句话,在python中,加了引号的字符都被认为是字符串,哪怕他是一个数字(‘123’)
            
  1. 1 >>> name = "Alex Li" #双引号
  2. 2 >>> age = "22" #只要加引号就是字符串
  3. 3 >>> age2 = 22 #int
  4. 4 >>>
  5. 5 >>> msg = '''My name is Alex, I am 22 years old!''' #我擦,3个引号也可以
  6. 6 >>>
  7. 7 >>> hometown = 'ShanDong' #单引号也可以

 单引号双引号以及三引号都可以表示字符串

 双引号和单引号可以搭配使用,如下:

  1. msg = "I'm a small birld"

三引号可以将一大段代码赋值给一个变量,如下:

  1. 1 msg = '''
  2. 2 今天我想写首小诗,
  3. 3 歌颂我的同桌,
  4. 4 你看他那乌黑的短发,
  5. 5 好像一只炸毛鸡。
  6. 6 '''
  7. 7 print(msg)
  1. 字符串可以用 + 拼接,但是两者必须都为字符串类型。如:
  1. 1 a = 'hello'
  2. 2 b = 'xiaomi'
  3. 3 c = a + b
  4. 4 print(c)

打印结果即为“helloxiaomi”

字符串也可以与一个数字相乘,结果是将该字符串连续输入N遍,如:

  

  1. print('xyz' * 3)
  2.  
  3. #输出结果为‘xyzxyzxyz’

8、格式化输出

现有一练习需求,问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式

  1. ------------ info of fuyong -----------
  2. Name : fuyong
  3. Age : 29
  4. job : none
  5. Hobbie: girl
  6. ------------- end -----------------

我们该怎么实现呢?你会发现,用字符拼接的方式还难实现这种格式的输出,所以一起来学一下新姿势

只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦

  1. 1 name = input("请输入您的姓名:")
  2. 2 age = input("请输入您的年龄:")
  3. 3 job = input("请输入您的工作:")
  4. 4 hobbie = input("请输入您的爱好:")
  5. 5
  6. 6 info = '''
  7. 7 ------------ info of %s ----------- #给一个占位符,等待传入name的值
  8. 8
  9. 9 Name:%s #给一个占位符,等待传入name的值
  10. 10
  11. 11 Age :%s #给一个占位符,等待传入age的值
  12. 12
  13. 13 Job :%s #给一个占位符,等待传入job的值
  14. 14
  15. 15 Hobbie:%s #给一个占位符,等待传入hobbie的值
  16. 16
  17. 17 ------------- end -----------------
  18. 18
  19. 19 ''' %(name,name,age,job,hobbie) # 符号%后的括号里的值与上面的几个占为符号一一对应,将值分别传入
  20. 20
  21. 21 print(info)

  注意:如果字符串里需要出现‘%’的时候,需要用转义符号来实现,如:

  1. msg = "我是%s,年龄%d,目前学习进度为80%%"%('金鑫',18)
  2. print(msg)

 PS :

  ▷查看数据类型的方法为type()              如type(1) 的结果为int   type('a')的结果为str

       ▷如果一个变量位阿拉伯数字,则该数据可以在int类型与str类型之间互相转换

9.基本运算符

      ▷算数运算

  1.       

      ▷比较运算

  1.       

      ▷赋值运算

  1.       

      ▷逻辑运算

  1.       

      注意:在没有()的情况下,not的优先级大于and,and的优先级大于or。即 () > not > and > or 优先级相同的情况下从左向右计算

      

10、流程控制之判断

在现实中,我们往往由很多种选择,比如说走路遇到分叉口,我们只能选择走一条路,程序也是一样,如果遇到分支,就用if语句控制流程

  1. if 条件判断: #条件判断可以是比较运算,逻辑运算,以及布尔运算
  2. 执行语句
  3. else:
  4. 执行语句
  5.  
  6. #注意:if 以及else 后都由一个分号 ':'
    #   if 以及else 下面的一段执行语句必须缩进
  1. name = input('请输入用户名:')
  2. password = input('请输入您的密码')
  3. if name == 'fuyong' and password == '123':
  4. print('恭喜您,登录成功')
  5. else:
  6. print('抱歉,用户名或者密码错误!')

if语句可以嵌套使用,如上面的代码可以改为:

  1. name = input('请输入用户名:')
  2. password = input('请输入您的密码')
  3. if name == 'fuyong' :
  4. if password == '123'
  5. print('恭喜您,登录成功')
  6. else:
  7. print('抱歉,用户名或者密码错误!')

if else也可以由多个分支判断,用elif表示,如:

  1. num = input('请输入一个数字'):
  2.  
  3. if num == 1:
  4.  
  5. print("您选择的是1号")
  6.  
  7. elif num == 2:
  8.  
  9. print("您选择的是2号")
  10.  
  11. elif num == 3:
  12.  
  13. print('您选择的是3号')
  14.  
  15. else:
  16. print('输入有误,请在1、2、3中选择')

11、流程控制之循环    

在写程序的过程中,有时候我们需要一段代码反复执行许多次,如果每次都重复写很多次,代码不但会占用很多篇幅,而且会变得非常不美观,这不符合python的‘优雅、明确、简洁’的宗旨,这个时候我们只需要用一个循环语句即可解决问题。格式为:

  1. while 判断条件: #与判断语句if一样,判断条件可以是比较运算,逻辑运算,以及布尔运算
  1.   循环体

我们通过判断条件控制循环的次数,如

  1. n = 0
  2. while n < 3
  3. print("这段话将被执行3次")
  4. n = n+1

我们可以通过关键字break 、continue来终止循环

break是跳出整个循环,直接执行循环体外面的代码

continue是跳出本次循环,重新返回循环的开头

  1. count = 0
  2.  
  3. while True:
  4. print("如果不是count,我就会一直打印下去,直到你的电脑爆炸为止")
  5.  
  6. if count == 5:
  7. break
  8.  
  9. count = count + 1

上面的例子可以看到,只要出现break,不管判断条件是否依然为True,循环都要立即终止

  1. 1 n = 0
  2. 2
  3. 3 while n < 10:
  4. 4
  5. 5 n = n+1
  6. 6
  7. 7 if n == 4 :
  8. 8
  9. 9 continue
  10. 10
  11. 11 print(n,"就是不愿意打印'4'")
  12. 12
  13. 13
  14. 14

上面的代码执行结果为

  1. 1 1 就是不愿意打印'4'
  2. 2 2 就是不愿意打印'4'
  3. 3 3 就是不愿意打印'4'
  4. 4 5 就是不愿意打印'4'
  5. 5 6 就是不愿意打印'4'
  6. 6 7 就是不愿意打印'4'
  7. 7 8 就是不愿意打印'4'
  8. 8 9 就是不愿意打印'4'
  9. 9 10 就是不愿意打印'4'
  10. 10 >>>

上面的例子可以看出,出现了continue,就会跳出本次循环,但是还会跳到循环体的第一句,来判断条件是否为True

其他的语言中的else一般只与if搭配,而python中,else还可以搭配while,格式为:

  1. 1 while 条件判断:
  2. 2
  3. 3     循环体
  4. 4 else:
  5. 5
  6. 6     如果循环正常执行完毕,没有被break终止,则会执行本段代码

四、应用练习

1、使用while循环输入 1 2 3 4 5 6     8 9 10

  1. 1 count = 0
  2. 2
  3. 3 while count < 10:
  4. 4
  5. 5 count = count + 1
  6. 6
  7. 7 if count == 7:
  8. 8 continue
  9. 9
  10. 10 print(count)

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

  1. 1 count = 0
  2. 2
  3. 3 sum = 0
  4. 4
  5. 5 while count < 100:
  6. 6
  7. 7 count = count + 1
  8. 8
  9. 9 sum = sum + count
  10. 10
  11. 11 print(sum)

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

  1. 1 count = 0
  2. 2
  3. 3
  4. 4 while count < 100:
  5. 5
  6. 6 count = count + 1
  7. 7
  8. 8 if count % 2 == 1:
  9. 9 print(count)
  10. 10

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

  1. 1 count = 0
  2. 2
  3. 3
  4. 4 while count < 100:
  5. 5
  6. 6 count = count + 1
  7. 7
  8. 8 if count % 2 == 0:
  9. 9 print(count)
  10. 10

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

  1. 1 count = 0
  2. 2 sum = 0
  3. 3
  4. 4 while count < 99:
  5. 5
  6. 6 count = count + 1
  7. 7
  8. 8 if count % 2 == 0: #如果是偶数的话,运算符号即为+
  9. 9 sum = sum-count
  10. 10
  11. 11 else:
  12. 12 sum = sum + count#如果是奇数的话,运算符号即为-
  13. 13
  14. 14 print(sum)
  15. 15

6、用户登陆(三次机会重试)

  1. 1 count = 0
  2. 2
  3. 3 while True:
  4. 4
  5. 5 name = input('请输入您的用户名:')
  6. 6 password = input('请输入您的密码:')
  7. 7
  8. 8 if name == 'fuyong' and password == '123':
  9. 9 print('恭喜您,登录成功!')
  10. 10
  11. 11 break
  12. 12
  13. 13 else:
  14. 14 print('用户名或者密码错误,请重新输入:')
  15. 15
  16. 16 count = count + 1
  17. 17
  18. 18 if count == 3:
  19. 19 print('对不起,您以及输入错误3次,登录程序终止')
  20. 20
  21. 21 break

Python笔记·第一章—— Python基础(一)的更多相关文章

  1. [Python笔记][第一章Python基础]

    2016/1/27学习内容 第一章 Python基础 Python内置函数 见Python内置函数.md del命令 显式删除操作,列表中也可以使用. 基本输入输出 input() 读入进来永远是字符 ...

  2. web前端学习python之第一章_基础语法(二)

    web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  3. web前端学习python之第一章_基础语法(一)

    web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  4. [python笔记][第二章Python序列-list]

    2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...

  5. [Python笔记][第二章Python序列-复杂的数据结构]

    2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...

  6. [Python笔记][第二章Python序列-tuple,dict,set]

    2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...

  7. 《图解HTTP》阅读笔记---第一章网络基础

    第一章.网络基础TCP/IP:----------传输控制协议Transmission Control Protocol / 网络协议Internet Protocol是一种用于Internet(因特 ...

  8. Python笔记·第二章—— Python的编码问题(一)

    一.什么是编码 可以说,计算机是一个即聪明又笨蛋的家伙.说它聪明,是因为他可以做很多事情,它的强大无需多说,大家应该都有所了解以及感受.但是为什么说它又是个笨蛋呢,因为我们在电脑上写出的每一个字,保存 ...

  9. 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识

    1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GN ...

随机推荐

  1. Flex 基础语法(二)

    1.flex -direction 属性 含义 row(默认值) 主轴为水平方向,起点在左端. row-reverse 主轴为水平方向,起点在右边. column 主轴为垂直方向,起点在上沿. col ...

  2. C#三大方法:虚方法、静态方法、实例方法

    虚方法:使用virtual关键字定义,当子类继承父类时,可以对父类中的虚方法进行重写. 如下面代码中的类B,它继承类A,类A实现了接口I(实现了接口中的foo()方法).在类A中使用virtual将f ...

  3. python 3 ---购物车练习

    # -*- coding:utf-8 -*-#Author Chen #定义商品列表List_of_commodities = [ ('Iphone',6888), ('Mac Pro',12888) ...

  4. 新增加的HTTP状态码 -- 103

    IETF公布了新的HTTP状态码-103, 总结一下就是提前预加载(css.js)文档,提升用户的访问速度. Summary: a new status code that lets the serv ...

  5. linux tar命令 压缩、打包、解压 详解

    linux tar命令 压缩.打包.解压 详解 1.常用压缩命令 tar –czvf 压缩后的文件.tar.gz 要压缩的文件 2.常用解压命令 tar –xzvf 解压后的文件.tar.gz [要解 ...

  6. day2--SecureCRT的配置

    生产中,我们是看不到虚拟机的工作界面,虚拟机的界面相当于机房显示屏的样子,实际上我们是在操作工具里面进行管理,这里使用SecureCRT远程连接虚拟机,SecureCRT的设置如下: 1.打开Secu ...

  7. Maven仓库-Nexus环境搭建及简单介绍

    1.    环境搭建 1.1  下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件——免费] NE ...

  8. C#线程调用带参数的方法

    在 .NET Framework 2.0 版中,要实现线程调用带参数的方法有两种办法.第一种:使用ParameterizedThreadStart.调用 System.Threading.Thread ...

  9. C#进阶--WebApi异常处理机制

    其实对于C#异常处理大家都不陌生,但是对于在WeiApi上的异常处理实际上也和传统异常处理区别不大,但是却经过封装可以让异常更加友好,https://docs.microsoft.com/en-us/ ...

  10. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...