第一篇 python入门

一、编程与编程语言
 
  1、编程的目的
    编程的目的是将人类的思想流程按照某种计算机能够识别的表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果
  2、什么是编程语言
    能够被计算机所识别的表达方式即编程语言
  3、什么是编程
    即程序员按照需求把自己的思想流程按照某种编程语言的风格编写下来,产出的结果就是包含一堆字符的文件
 
二、编程语言分类
 
  编程语言的发展经历了以下3个阶段:
    1、机器语言:
      站在计算机的角度,说计算机能听懂的语言,就是直接用二进制编程,直接操作硬件。
    2、汇编语言:
      站在计算机的角度,接卸的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件
    3、高级语言:
      站在人的角度,说人话,用人类的字符去编写程序,屏蔽了硬件操作。
 
  高级语言的使用,使他必须被翻译成计算机能读懂的二进制后,才能被执行,按照翻译的方式分为以下2中:
    1、编译型(需要编译器)  eg:C,执行速度快,调试麻烦
    2、解释型(需要解释器)  eg:Python,执行速度慢,调试方便
 
   总结:
      机器语言:
         #优点:最底层,执行速度最快
         #缺点:最复杂,开发效率最低
      汇编语言:
         #优点:比较低层,执行速度较快
         #缺点:复杂,开发效率较低
      高级语言:
         #编译型语言:执行速度快,不宜依赖语言环境运行,跨平台差
         #解释型语言:跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行。
 
     PS:
        学习难度从低到高
        执行效率从高到低
        开发效率从低到高
 
     BUT:速度不是关键,开发效率高才是王道
 
#高级语言
高级语言是大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,像最简单的编程语言PASCAL语言也属于高级语言。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行(编译后生成的可执行文件,是cpu可以理解的2进制的机器码组成的),使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .obj,也就是OBJ文件)才能执行,只有目标文件而没有源代码,修改很不方便。

编译后程序运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器(想运行,必须先装上解释器,就像跟老外说话,必须有翻译在场),但这种方式比较灵活,可以动态地调整、修改应用程序。如Python、Java、PHP、Ruby等语言。

 

三、Python介绍

 

  1、Python目前的主要应用领域

应用领域
 
  2、Python有哪些种类
种类

 

  3、Python 2 or Python 3?

区别

 

 四、安装Python解释器
 
  打开官网  https://www.python.org/downloads/windows/ 下载中心,选择合适的解释器下载
  
 
#测试安装是否成功
Windows  -->运行  -->输入cmd , 回车,弹出cmd程序,输入Python ,如果能进入交互环境 ,表示安装成功。

 

#多版本共存演示
注意:在安装目录下找到python.exe,拷贝一份,命名为python2.exe或python3.exe,一定要保留原版,因为pip工具会调用它。

 

五、第一个Python程序

#进入解释器的交互式模式:调试方便,无法永久保存代码
#脚本文件的方式(使用nodpad++演示):永久保存代码

注意:python解释器执行程序是解释执行,即打开文件读内容,因此文件的后缀名没有硬性限制,但通常定义为.py结尾 

 

六、变量

  1、什么是变量?

    变量即变化的量,核心是“变”与“量”二字,变即变化,量即衡量状态

  2、为什么要有变量?

#程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态以及状态的变化。
#比如:
    英雄的等级为1,打怪升级(变)为10
    僵尸的存活状态True,被植物打死了,于是变为False
    人的名字为dream,也可以修改为Dream

  3、如何定义变量?

#变量名(相当于门牌号,指向值所在的空间),等号,变量值
name='Dream'
sex='female'
age=18
level=10

  4、变量的定义规范:

#1. 变量名只能是 字母、数字或下划线的任意组合
#2. 变量名的第一个字符不能是数字
#3. 关键字不能声明为变量名['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、定义方式:

#驼峰体
AgeOfDream = 56 
NumberOfStudents = 80
#下划线(推荐使用)
age_of_dream = 56 
number_of_students = 80

  6、定义变量名不好的方式

#变量名为中文、拼音
#变量名过长
#变量名词不达意

  7、定义变量会有:id、type、value

#1 等号比较的是value,
#2 is比较的是id

#强调:
#1. id相同,意味着type和value必定相同
#2. value相同type肯定相同,但id可能不同,如下
>>> x='Info Egon:18'
>>> y='Info Egon:18'
>>> id(x)
>>> id(y)
>>> 
>>> x == y
True
>>> x is y
False

  8、变量的修改与内存管理(引用计数与垃圾回收机制)

    # 变量的引用计数为0,就会进入P垃圾回收机制线程

  9、常量

    常量即指不变的量,如π:3.1415926.....,或者在程序运行中不会改变的量

      eg:一个人的年龄是变化的,这个是变量,但是某一些情况下他的年龄不会发生变化,那就是常量。

    在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名的全部大写代表常量。

      eg:AGE_OF_DREAM = 18

    

PS:

  在C语言中有专门的常量定义语法如下,一旦定义为常量,更改即会报错。

const int count = 60;

  

七、用户与程序交互

#在Python3中
input:用户输入任何值,都存成字符串类型

#在Python2中
input:用户输入什么类型,就存成什么尅性
raw_input:等于Python3的input

 

  注释 

为什么要加注释?

    代码注释分单行注释和多行注释,当行注释用#,多行注释可以用三对双引号""" """

    代码注释的原则:

#1.不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可
#2.注释可以用中文或英文,但不要用拼音

文件头

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

 

八、基本数据类型

  什么是数据?为何会有多种类型的数据?

#数据即变量的值,如:age = 18,18则是我们保存的数据
#变量是用来反映/保持状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的数据去标识。

  1、数字

#int    整型
定义:age = 10    #age=int(10)
用于标识:年龄、等级、身份证号、qq号、个数。。。。。。

#float    浮点型
定义:salary = 3.1    #salary = float(3.1)
用于标识:工资、身高、体重。。。。。。

 

其他数据类型

  2、字符串

#在Python中,加了引号的字符就是字符串类型,Python并没有字符类型。
定义:name = 'dream'    #name = ('dream')
用于标识:描述性的内容,如姓名、国际、种族
单引号、双引号、三引号的区别
#数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行"相加"和"相乘"运算。
>>> name='dream'
>>> age='18'
>>> name+age #相加其实就是简单拼接
'dream18'
>>> name*5 
'dreamdreamdreamdreamdream'


#注意1:字符串相加的效率不高
字符串1+字符串3,并不会在字符串1的基础上加字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,相当字符串1与字符串3的空间被复制了一次,

#注意2:只能字符串加字符串,不能字符串加其他类型

字符串拼接(只能在字符串之间进行,且只能相加或相乘)
字符串拼接(只能在字符串之间进行,且只能相加或相乘)

  3、列表

#在[]内用逗号分隔,可以存放n个任意类型的值
定义:students=['Dream','Jessie','Jones',] #students=list(['Dream','Jessie','Jones',]) 
用于标识:存储多个值的情况,比如一个人有多个爱好
#存放多个学生的信息:姓名,年龄,爱好
>>> students_info=[['Dream',18,['play',]],['Jessie',18,['play','sleep']]]
>>> students_info[0][2][0] #取出第一个学生的第一个爱好
'play'
列表嵌套、取值

  4、字典

#为何还要用字典?
存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下
>>> info=['dream','male',18]
定义列表的目的不单单是为了存,还要考虑取值,如果我想取出这个人的年龄,可以用
>>> info[2]
但这是基于我们已经知道在第3个位置存放的是年龄的前提下,我们才知道索引2对应的是年龄
即:
        #name, sex, age
info=['dream ','female',18]
而这完全只是一种假设,并没有真正意义上规定第三个位置存放的是年龄,于是我们需要寻求一种,即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value,这就用到了字典
已经有列表,为何还要字典
#在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
定义:info={'name':'egon','age':18,'sex':18} #info=dict({'name':'egon','age':18,'sex':18})
用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值
 1 info = {
 2     'name':'dream',
 3     'hobbies':['play','sleep'],
 4     'company_info':{
 5         'name':'gengmei',
 6         'type':'education',
 7         'emp_num':4
 8     }
 9 }    
10 print(info['company_info']['name'])    #取公司名
11 
12 students=[
13     {'name':'Dream','age':18,'hobbies':['play','sleep']},
14     {'name':'Jessie','age':20,'hobbies':['read','sleep']},
15     {'name':'Jones','age':58,'hobbies':['music','read','sleep']},
16 ]
17 print(students[1]['hobbies'][1]) #取第二个学生的第二个爱好
字典相关的嵌套、取值

  5、布尔  bool

#布尔值,一个True一个False
#计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识
>>> a=3
>>> b=5
>>> 
>>> a > b #不成立就是False,即假
False
>>> 
>>> a < b #成立就是True, 即真
True

接下来就可以根据条件结果来干不同的事情了:
if a > b 
   print(a is bigger than b )

else 
   print(a is smaller than b )
上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。

 

  重点:

#1、可变类型:在id不变的情况下,value可以变,则称为课表类型,如列表,字典

#2、不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)

 

 

九、格式化输出

  程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式

  比如要求用户输入用户名和年龄,然后打印如下格式:

      My name is xxx,my age is xxx.

      很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的xxx位置,而且数字也必须经过str(数字)的转换才能与字符串进行拼接。

      这就用到了占位符,如:%s、%d

#%s字符串占位符:可以接收字符串,也可接收数字
print('My name is %s,my age is %s' %('dream',18))
#%d数字占位符:只能接收数字
print('My name is %s,my age is %d' %('dream',18))
print('My name is %s,my age is %d' %('dream','18')) #报错

#接收用户输入,打印成指定格式
name=input('your name: ')
age=input('your age: ') #用户输入18,会存成字符串18,无法传给%d

print('My name is %s,my age is %s' %(name,age))

#注意:
#print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,无法传给%d,所以会报错
练习:用户输入姓名、年龄、工作、爱好 ,然后打印成以下格式
------------ info of Egon -----------
Name  : Egon
Age   : 22
Sex   : male
Job   : Teacher 
------------- end -----------------

小练习
练习1

 

十、基本运算符

  计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

  1、算术运算

    以下假设a=10,b=20

运算符 描述实例
+加-两个对象相加a+b输出结果 30
-减-得到负数或是一个数减去另一个数a-b输出结果 -10
*乘-两个数相乘或是返回一个被重复若干次的字符串a*b输出结果 200
/除-x除以ya/b输出结果 2
%取余-返回除法的余数a%b输出结果 0
**幂-返回X的Y次幂a**b输出结果 1e21
//取整除-返回商的整数部分a//b输出结果  4,  9.0//2.0结果4.0

 

  2、比较运算

  ==        等于

  !=       不等于

  <>      不等于

  >        大于

  <        小于

  >=      大于等于

  <=      小于等于

 

  3、赋值运算

  =      简单的赋值运算符

  +=      加法的赋值运算符 

  -=      减法的赋值运算符

  *=       乘法的赋值运算符

  /=       除法的赋值运算符

  %=     取余的赋值运算符

  **=     幂的赋值运算符

  //=     取整的赋值运算符

 

  4、逻辑运算

  and    与

  or      或

  not    非

>>> True or Flase and False
True
>>> (True or Flase) and False
False

 

  5、身份运算

#is比较的是id
#而==比较的是值

 

 

转载于:https://www.cnblogs.com/dream-of-wind/p/7998555.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值