搭建环境

要确保自己的电脑上面已经安装了python,目前有两个版本,个人强烈建议安装python3。
步骤一:需要去 http://python.org/downloads/网站找到合适的版本,下载python3即可。
步骤二:安装过程中最好选择Add Python to PATH这样系统就帮助我们自动创建了环境变量,不需要自己手动配置了(自己也可一手动配置环境变量)
步骤三:win+R,cmd命令进入终端,输入python命令显示>>>即表示安装成功
安装python编辑器Pycharm或者Geany都可以,方便我们编写程序,可以去官网下载安装即可。
测试:编写Hello_World.py文件,以.py结尾表示是python文件,在里面编写

print("Hello world")

输出Hello world表示编译器正确。也可以在终端输入python Hello_World.py命令也可以正确运行,结果如下

Python语言自学计划 python 自学教程_Python语言自学计划

Python 数据类型

我们编写的内容需要用一个变量存储起来,当我们本次访问结束,下次还可以接着使用,编译器会帮助我们将字符串内容存储到内容中,为自己所编写的变量开辟一块内存空间。
变量命名空间注意事项:

  1. 变量只能包含数字,字母,下划线。变量开头不能使用字母
  2. 变量名中不能使用空格,可以使用下划线
  3. 不能使用关键字作为自己的变量名,Python全部关键字如下图
    当程序出现错误时,一般会出现traceback,这表示你的程序出现了错误,它是一条记录,表示解释器在运行程序时,在什么地方陷入了困境。

字符串:字符串使用单引号’ ',或者双引号" "括起来的内容.

字符串的方法简单介绍:

title():会将字符串的每一个单词首字母大写,其余是全部小写。

upper():会将所有的单词字母大写,但是不会改变原始数据,除非再将结果返回给原始数据

lower():会将所有的单词字母小写,但是不会改变原始数据,除非再将结果返回给原始数据。示例如下

Python语言自学计划 python 自学教程_python_02

字符串的拼接可以使用+

Python语言自学计划 python 自学教程_开发语言_03

制表符\t 换行符\n

删除多余的空白:

lstripe():开头的空白删除

rstripe():结尾的空白删除

stripe():开头和结尾两端的空白删除

Python语言自学计划 python 自学教程_pycharm_04


注意:删除空白之后需要变量接受之后才能保存,否则还是原来没有删除的内容

使用str()将其他类型的数据转换成字符串
Python中的注释:使用#号可以将代码的某一行进行注释,编译器遇见#会自动跳过这一行的代码。使用’‘’ ‘’’ 将多行代码进行注释,好的程序员需要多写注释,将自己的程序变得更加的易读

列表

列表由一系列特定顺序排列的元素组成,用[ ]来表示,并用,进行分割,并且列表是一个有序的集合,按照输入的顺序进行访问。

访问列表元素,可以直接使用下标,但是要注意下标是从0开始的,而不是从1开始的,访问最后一个元素可以使用-1,这对于不清楚列表长度而访问最后一个元素非常有用(前提是列表不能为空)

Python语言自学计划 python 自学教程_pycharm_05

  • 修改元素:可以直接进行修改,先获取元素,然后修改即可
  • 添加元素:使用append()进行添加元素,一般是在列表尾部添加元素,应用一般是先创建空列表,然后按照用户的输入顺序进行添加元素
  • 插入元素:insert()方法进行插入元素,可以在列表的任何位置进行插入元素
  • 删除元素:del list[下标],使用关键字del进行删除元素,前提是必须要知道删除元素的下标,删除之后列表内容进行改变
  • pop()删除元素,可以返回删除列表末尾的内容,用户可以接着使用
  • remove()移除元素,可以直接移除元素内容
  • sort()对列表进行排序,排序之后本列表将永久性改变。如果方法里面添加reverse=True参数则会进行逆向排序
  • sorted():该方法会对列表进行排序,和sort()的区别就是排序之后还保留原来的数据。如果不想保留原来的数据可以将排序之后的内容进行赋值给其他变量,示例如下:参数reverse=True同上面一样
  • reverse()该方法是将列表元素进行翻转,按照相反的方向将元素进行反转。
  • len():可以计算元素的长度。

    使用range()函数创建某个范围的内容
    range(1,5):
    可以使用range()创建列表,list(range(1,10))
    max()计算列表最大值
    min()计算列表最小值
    sum()计算函数和
    列表解析:[表达式 for循环给表达式提供值]示例[i**2 for i in range(1,11) ],计算1到10之间的平方和

    切片:[start🔚step],包含start开始值,stop:结束值,step;步长值,该切片内容不包含stop值,

复制内容一般是使用[:]即可以将全部内容赋值给另一个变量内容,如果是简单的变量复制则仅仅是引用改变,另一个值的改变,复制之后的内容也会改变。

Python语言自学计划 python 自学教程_pycharm_06


Python语言自学计划 python 自学教程_pycharm_07


元组:元组内容使用小括号()进行定义,且元组内容不可以改变,一般是在数据在整个生命周期内不可以改变的情况下使用元组。

Python语言自学计划 python 自学教程_python_08


条件测试:每条if语句的核心都是返回一个True或者False的表达式,这种表达式成为条件测试,Python根据表达式的结果来决定是否要执行表达式之后的内容,但是有时候比较两个值不相等效率可能比相等效率更高

Python语言自学计划 python 自学教程_pycharm_09


and:如果所有的条件表达式都是正确的才会接着执行if后面的内容,否则会跳过if后面的内容。

Python语言自学计划 python 自学教程_pycharm_10

or:只要一个是正确的后面的就不会再接着判断,就会执行if后面的语句,之后所有的条件都不成立才会跳过if后面的语句。

Python语言自学计划 python 自学教程_Python_11


in:判断某个值是否在某个元组或者列表里面使用in关键字

Python语言自学计划 python 自学教程_pycharm_12


not in :判断某个值是否不在某个列表或者元组里面,与上一个in相反

Python语言自学计划 python 自学教程_python_13

字典:字典是一系列键值对,可以使用键来访问相对应的值,字典使用{ }来进行表示

Python语言自学计划 python 自学教程_python_14


添加键值对:字典是一个动态结构,可以随时添加键值对,字典不关心里内容的顺序结构,只关心字典内容的键值对之间的对应关系。。有时候先创建一个空的键值对是比较方便的

Python语言自学计划 python 自学教程_开发语言_15


修改键值对:修改键值对需要先找到键对应的值,然后再根据需要进行修改

Python语言自学计划 python 自学教程_pycharm_16


删除键值对:删除键值对应用del关键字,即可以将键值对彻底从字典里面删除

Python语言自学计划 python 自学教程_开发语言_17


遍历字典内容:可以使用for循环来遍历字典内容,可以有多种遍历方式,可以只遍历key,也可以只遍历value,还可以key,value都遍历。

Python语言自学计划 python 自学教程_Python_18


可以自己设置按照字母顺序进行排序使用sorted()方法

Python语言自学计划 python 自学教程_pycharm_19


input():函数input()会让程序暂停运行,等待用户输入一些文本,获取用户的输入之后接着运行下面的程序,可以使用一个变量来接收以便你再次使用用户输入的变量。注意输入的内容是字符串类型,可以强制转换成其他的数据类型。

Python语言自学计划 python 自学教程_Python_20


Python语言自学计划 python 自学教程_Python_21


break:该关键字的功能是结束while或者for循环的内容,接着往下运行,在循环中都可以使用break,可以使用break语句来退出遍历列表或者字典的for循环

i = 0
while i < 100:
    print("此时i的值是:",i)
    i += 1
    if i == 6:
        break

Python语言自学计划 python 自学教程_Python语言自学计划_22


**continue:**返回到循环开头,根据条件测试结果决定是否要继续执行循环,执行到continue语句的时候会跳过当前循环,接着执行接下来的循环。

i = 0
while i < 10:
    i += 1
    if i % 2 == 0:
        print("此时i的值是:", i)
        continue

Python语言自学计划 python 自学教程_pycharm_23


pop():使用此函数会将每一个元组或者列表的末尾的内容进行删除

Python语言自学计划 python 自学教程_开发语言_24


函数函数是执行某种特定功能的代码块,按照程序员编写的代码来执行,将结果返回给用户。语法格式如下:

def  function_name(args):
	方法体
def print_hello():
   print("Hello")

print_hello()

Python语言自学计划 python 自学教程_开发语言_25


可以向函数里面传递参数,即在方法名里面加上形式参数简称形参

def print_hello(username):
   print("Hello"+' '+ username)

print_hello('Demo')

结果:Hello Demo

实参:实参是用户调用函数时,传递给用户的实际内容,类型包括:位置实参,关键字实参,还可以使用列表和字典
位置实参:传入的参数和调用函数时传入的顺序相对应

def describe_pet(animal_type, pet_name): 
 """显示宠物的信息""" 
 print("\nI have a " + animal_type + ".") 
 print("My " + animal_type + "'s name is " + pet_name.title() + ".") 

describe_pet('hamster', 'harry')

结果是:I have a hamster. 
		My hamster's name is Harry.

关键字实参:就是传入的参数名称-值对,直接将实参中名称和值对应起来了,不用考虑实参的位置顺序

def describe_pet(animal_type, pet_name): 
 """显示宠物的信息""" 
 print("\nI have a " + animal_type + ".") 
 print("My " + animal_type + "'s name is " + pet_name.title() + ".") 
 
describe_pet(animal_type='hamster', pet_name='harry')

默认值实参:在传入参数时给参数传递一个默认值,当用户调用函数时,用户如果没有给形参传递值,则会直接使用默认值参数,否则会使用用户传入的参数内容

def describe_pet(pet_name, animal_type='dog'): 
 """显示宠物的信息""" 
 print("\nI have a " + animal_type + ".") 
 print("My " + animal_type + "'s name is " + pet_name.title() + ".")

返回值:使用返回值可以使用return关键字给用户返回需要的内容
注意:如果给形参传递列表内容实际上返回给用户之后列表内容已经发上改变,即在函数内列表内容改变之后,函数外面的内容也已经发生改变。

def print_hello(data):
    for i in range(len(data)):
        data[i] = data[i] + 10

data = [1,2,3,4,5,6]
print("原始的数据内容",data)
print_hello(data)
print("调用函数之后的数据内容",data)

Python语言自学计划 python 自学教程_python_26


传递任意的参数,使用*args,这个参数是可以包含任意个参数值,空元组

def make_pizza(*toppings): 
 """打印顾客点的所有配料""" 
 print(toppings) 
 
make_pizza('pepperoni') 
make_pizza('mushrooms', 'green peppers', 'extra cheese')

结果是:('pepperoni',) 
		('mushrooms', 'green peppers', 'extra cheese')

使用**args:可以接收任意数量的键值对内容

模块:可以将函数写入某个.py文件中,然后将这个模块导入需要这个函数的程序中,将程序和函数进行分离,更好的理解程序,代码可读性更加符合现代编写代码的习惯。
使用import关键字导入
可以使用关键字form导入特定的模块
可以使用as给模块起个别名

:根据约定,在Python中首字母大写的名称指的是类。

  • 1.init()类中的函数称为方法,init()这是一个特殊的方法,每当你根据类创建新实例的时候都会调用这个方法,Python会自动调用它,开头和结尾都有一个下划线,里面会有一个形参self这个是必须有的,代表这个类本身。指向实例本身的引用,让实例可以访问本身的属性和方法
class Pet():
    def __init__(self,name,age):
        self.name  = name
        self.age = age
    def print_info(self):
        print("My pet name is "+self.name+',age is '+ str(self.age))

dog = Pet("dog",2)
dog.print_info()

结果是:My pet name is dog,age is 2

修改属性的三种方式

  • 直接修改属性的值
    直接新建实例属性的时候可以修改,例如
#将年龄改为3岁
dog = Pet("dog",3)
  • 通过方法属性修改
def update_age(self,age):
    self.age = age

在类里面新加一个方法即可以,然后使用类的实例修改即可
继承:一个类继承另一个类时,它将自动获取另一个类的所有属性和方法,原有的类称为父类,而新类称为子类,子类会继承父类的所有的方法和属性

class Dog(Pet):
    def __init__(self,name,age):
       super.__init__(name,age)

只需要在类名的小括号里面加上需要继承的类即可继承父类的所有属性和方法,在__init__方法中使用关键字supper即可以实现继承父类的内容。super()是一个特殊的函数,帮助Python将父类和子类关联起来。
重写父类的方法:有时候继承父类的方法可能不是我们所真实需要的,这个时候我们可以在此基础上面重写父类的方法。需要和父类的方法同名

class Dog(Pet):
    def __init__(self,name,age):
       super.__init__(name,age)

    def print_info(self):
       print("This is myself function")

实例化的时候调用print_info(),方法即可以实现自己的所需要的内容
导入类和上一个知识点内容一样(导入模块)
文件操作:读取文件内容是程序中经常用到的,文件中的数据是提前写好的存储在文件中的

  • 读取整个文件
with open('Test.txt') as data:
    content = data.read()
    print(content)

以上程序解读:
with:该关键字会帮助程序员忘记使用close关键字关闭程序时使用,防止程序一直读文件,导致文件数据丢失操作。
open:该关键字指定一个文件名称,试图操作该文件,返回一个操作文件的对象
文件路径

  1. 相对路径:相对于当前项目的路径,使用\或者/注意windows和Linux系统的区别
  2. 绝对路径:使用完整的路径名称

创建一个包含文件各行的内容: 使用关键字open的时候,操作文件只能在with关键字中使用,可以创建一些列表或者其他数据来接受读取的文件内容。
reanlines():该方法会一行一行的读取数据。会将数据存储在一个列表里面来接受。
注意:Python会将文件里面的所有的文本都解读为字符串,如果读取的其他数字,可以先将字符串转换成数字来使用
写入文件数据

with open('Test.txt','w') as data:
    data.write("I love Python language")

open关键字中加入类型w,表示要向文件中写入数据,使用write方法会将内容写入文件,注意,写入内容会将所有的数据覆盖,重新写入而不是追加数据。追加的方式为a,如果文件已经存在则会按照上述操作,否则会新创建一个文件。
异常操作:异常是指程序在运行过程中出现不可预知的错误,如果处理不好会导致程序的崩溃从而引发不可想象的崩溃。
使用try - except代码块,可以将可能出现的异常包含在该代码块中

try:
    a = 5/0
except ZeroDivisionError:
    print("你这是一个错误的程序,除0错误")

运行以上程序时,会出现除0错误,如果不使用try代码块,程序会出现如下异常

Traceback (most recent call last):
File “division.py”, line 1, in
print(5/0)
ZeroDivisionError: division by zero

当我们使用try-except代码块的时候程序可以正常运行,还可以使用try - except - else代码块来处理正常的数据

try:
    a = 5/2
except ZeroDivisionError:
    print("你这是一个错误的程序,除0错误")
else:
    print("处罚结果是:"+str(a))

except :这个里面是出现错误的内容,else是出现正确的内容
try-except-else代码块的工作原理大致如下:Python尝试执行try代码块中的代码;只有可
能引发异常的代码才需要放在try语句中。有时候,有一些仅在try代码块成功执行时才需要运行
的代码;这些代码应放在else代码块中。except代码块告诉Python,如果它尝试运行try代码块中
的代码时引发了指定的异常,该怎么办。

pass:该关键字是表示什么也不操作
测试代码:unittest模块:这是进行单元测试工具模块。单元测试用于核实某个方面没有问题。测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。

  1. 首先需要导入模块unittest,以及测试函数
  2. 再创建一个继承unittest.TestCase的类
  3. 编写一系列方法对函数行为的不同方面进行测试
import unittest 
from name_function import get_formatted_name 
 class NamesTestCase(unittest.TestCase): 
 """测试name_function.py""" 
 
 def test_first_last_name(self): 
 """能够正确地处理像Janis Joplin这样的姓名吗?""" 
 formatted_name = get_formatted_name('jean', 'jop') 
 self.assertEqual(formatted_name, 'Jean Jop)


运行结果:
. 
---------------------------------------------------------------------- 
Ran 1 test in 0.000s 
OK

注意:测试方法必须以test开头,这样程序才可以自动执行。
assertEqual(),这个方法是将函数的返回结果与测试的内容结果进行对比,判断测试代码是否正确。代码行unittest.main()让Python运行这个文件中的测试。

运行结果显示:
第1行的句点表明有一个测试通过了。接下来的一行指出Python运行了一个测试,消耗的时
间不到0.001秒。最后的OK表明该测试用例中的所有单元测试都通过了。
注意一下方法的使用:

assertEqual(a, b) 核实a == b
assertNotEqual(a, b) 核实a != b
assertTrue(x) 核实x为True
assertFalse(x) 核实x为False
assertIn(item, list) 核实item在list中
assertNotIn(item, list) 核实item不在list中

unittest.TestCase类包含方法setUp(),让我们只需创建这些对象一
次,并在每个测试方法中使用它们。如果你在TestCase类中包含了方法setUp(),Python将先运行
它,再运行各个以test_打头的方法。这样,在你编写的每个测试方法中都可使用在方法setUp()
中创建的对象了。