两天零基础入门Python

声明:本文为CSDN视频课“趣学Python,2天零基础入门”的课程内容。
课程视频链接https://download.csdn.net/course/detail/35408
实战部分代码,可在上述课程网址中下载。

0.Python入门导学

0.1语言介绍

  • Python
    • 是一门解释型脚本语言。
    • 跨平台、脚本和快速开发应用的热门编程语言。
    • 主要应用于文本处理、数据处理、爬虫、科学计算和统计。
  • 编译型语言VS解释性语言
    • 计算机不能直接理解高级语言,只能直接理解机器语言。
    • 编译型语言:在程序执行之前,需要一个专门的编译过程,把代码编译成机器语言文件。
      • 如Java,需要把代码编译成.class文件,然后运行时使用编译的结果。
    • 解释性脚本语言:程序不需要编译,程序在运行时才翻译成机器语言。

0.2环境搭建

  • Python可用于多平台包括:Linux, Mac OS X, Windows
  • Python官网:https://www.python.org/
  • Python文档下载地址:https://www.python.org/doc/

0.3第一个Python程序

  • 编辑器sublime:http://www.sublimetext.com/
  • 使用 IDE PyCharm:http://www.jetbrains.com/pycharm/
  • 运行:Python/Python3 文件名.py
print('Hello World')

1.语言基础

1.1数据类型

Number数字

  • int(有符号整数)
  • bool(布尔型:Ture-1,False-0)
  • float(浮点型)
  • complex(复数:实数部分和虚数部分,a+bj)
#Number 数字

#(1) int     有符号整数
from turtle import Turtle


a = 10

#(2) boolean 布尔型,Ture=1,False=0
b = True

#(3) float   浮点型
c = 1.5

#(4) complex 复数
d = 4 + 3j

#打印abcd的number类型
print(type(a), type(b), type(c), type(d))

#计算
print('a+b: {0}' .format(a + b))
print('a-b: {0}' .format(a - b))
print('a/c: {0}' .format(a / c))     #除法,得到一个浮点数
print('a//b: {0}' .format(a // c))   #除法,得到一个整数
print('a%4: {0}' .format(a % b))     #取余
print('2^3: {0}' .format(2 ** 3))    #立方运算

String“字符串”

  • 用双引号’'或单引号""定义。
  • 用反斜线\对特殊字符进行转义。
  • 用加号+进行字符串的拼接。
  • 用星号*表示进行复制。
  • 字符串有两种索引方式:从左往右以0开始,从右往左以-1开始。
  • 截取:[0:4]——表示截取从第0位到第3位的数据,并不包含第4位;[4:]——后边的位数可以省略不写,表示截取从第4位到最后1位的数据,此时包含最后1位的数据。
#String 字符串
name = 'hsykl'
location = 'shanghai'

#加号+进行拼接
result1 = name + ' live in ' + location
print(result1)

#复制
very = 'very '
result2 = name + ' is ' + (very * 3) + 'happy in ' + location
print(result2)

#截取
data = '20220814'
year = data[0:4]
print(year)

noyear = data[4:]
print(noyear)

List[列表]

  • 元素定义在方括号**[]**之间、用逗号,分割,元素可以是Number和String类型。
  • 索引值以0为开始值,-1为从末尾的开始位置。
  • List常用方法:
    • append()——添加元素,默认添加在该List末尾,()内的参数即添加进去的数据。
    • pop()——删除元素,默认删末尾最后一个元素,也可传入参数(索引值),来删除索引值对应的某个元素。
  • 可以直接对某个索引值位置上的元素,进行修改
#List 列表
a = [1, 2, 3, 4, 'a', 'b', True]

#截取元素
print(a[2:6])  #截取的索引值为2,3,4,5的这四个元素

#添加元素,默认放List末尾
a.append(6)
print(a)

#删除元素,默认删List末尾元素
a.pop()
print(a)
#也可以指定参数,按照索引值删除
a.pop(0)
print(a)

#修改元素
a[0] = 'hsy'
print(a)
print('=============================================')

Tuple(元组)

  • 元素元素定义在小括号**()**中,用逗号,分割。

  • 与列表类似,不同之处在于元组的元素一旦创建,便不能修改,修改的话会报错

  • Tuple常用方法:

    • count()——返回调用该函数的元组中,某个元素出现的次数,例如a=(1,2,2,1,2,3) print(a.count(2))会打印3,即元素2在元组a中出现了3次。
    • index()——返回调用该函数的元组中,某个元素的索引值(第几位)。
    #Tuple 元组
    b = (1, 2, 1, 4, 'h', 's', 'y')
    
    #元组一旦创建,便不可修改,否则会报错
    #b[0] = 0
    print(b)
    
    #返回元素出现次数
    print(b.count(1))
    
    #返回元素的索引值
    print(b.index('s'))
    

Set{集合}

  • 使用大括号**{}定义,元素具有无序性、确定性、不重复性**;
    • 对元素为String类型的集合重复打印,会发现每次元素的打印顺序都是无序的,这是因为:Set保存数据是通过hash值来将对象放入hash表中,从而达到了无序的操作。
    • 但元素类型为int时,其hash为int类型值本身,所以每次打印,int类型的元素顺序是不变的。但是向含int类型元素的集合中添加不管什么类型元素,该集合的打印次序就会乱掉。
  • 无重复元素,会自动删除重复元素(定义Set,向其中添加重复元素时,并不会报错,但重复元素并不会保存到Set中,会自动被剔除)。
    • 例如:网站记录同一个用户的IP地址,该用户多次登录时,不必多次保存同样的IP,多以利用Set将重复的数据自动剔除。
  • 可以做集合运算:
    • 交集:a&b
    • 并集:a|b
    • 差集:a-b——在a集合中去掉属于b集合中的元素。
  • Set常用方法:
    • add()——添加元素。
#Set 集合
a = {1, 2, 3, 4, 1, 'h', 's'}     #添加重复元素时,并不会报错,重复元素并不会保存到Set中,会被剔除
print(a)

b = {1, 5, 8}
print(b)
b.add('!')
print(b)

#集合运算
print(a & b)
print(a | b)
print(b - a)

Dictionary{字典}

  • 使用大括号**{}**定义。
  • 是一个无序的“键(key):值(value)”的集合。
  • key只能使用不可变的数据类型,但键值对中的value可以是任意类型。
    • 只要有__hash__方法,就能作为python字典的key使用。python自带的数据类型中,只有dict、set、list和含有之前3种数据结构的tuple没有定义__hash__方法,如果使用的话会抛出TypeError: unhashable type。自定义的类中只要含有__hash__方法,就能当作dict的key来用,甚至可以把unhashable的几个类自定义一个__hash__方法,就也能作为key来使用了。
  • key值不同时,value值可以相同;如果两个key值相同,那么后边的key-value对,会覆盖掉前边所有与之key值重名的key-value对。
  • Dictionary常用方法:
    • keys()——获得调用该方法的字典中的所有key。
    • values()——获得调用该方法的字典中的所有value。
    • d[键名]或get(键名)——获取某个key对应的value。
    • d[键名] = 新value值——覆盖(替换)某个key对应的value。
    • pop(键名)——删除某个key所在的键值对。
    • clear()——清空调用该方法的字典中的所有键值对。
#Dirctionary 字典
d = {1:'name', 2:'sex', 3:'high'}
print(d)

#获得所有key
print(d.keys()) 

#获得所有的value
print(d.values())

#获取某个key对应的value
print(d[1])
print(d.get(1))

#覆盖某个key对应的value
d[1] = 'names'
print(d[1])
print(d)

#删除某个key所在的键值对
d.pop(2)
print(d)

#清空字典中所有键值对
d.clear()
print(d)

1.2if_else条件判断

有if_else和if_elif_else,if中也可以嵌套if。

  • 最简单的if_else判断语句
#最简单的if_else判断语句
a = 10
if a>= 5:
    print('a大于等于5')
else:
    print('a小于5')
  • 多条件的if_else判断语句
#多条件的if_else判断语句
a = 10
if a <= 5:
    print('a小于等于5')
elif 5 < a <= 20:
    print('a大于5,小于等于20')
else:
    print('a大于20')
  • if判断实例:判断小狗的年龄
    • input()——该函数会等待并监视,你在终端指令器中输入的数据。
    • {0} 和.format(human_age)——会将.format()中变量的值,传入{0}的位置。
#if判断实例:判断小狗的年龄
age = int(input("请输入你家小狗的年龄:"))#等待并监视你在终端输入的数据,并赋给int类型的变量age
if age <= 0:
    print("你在逗我吧!")
elif age == 1:
    print("相当于人类的 14 岁!")
elif age == 2:
    print("相当于人类的 22 岁!")
elif age > 2:
    human_age = 22 + (age - 2) * 5
    print("相当于人类的 {0} 岁!".format(human_age))
input('点击 enter 键退出')
  • if也可以嵌套if
#if也可以嵌套
b = int(input("请输入任意正整数:"))
if b < 20:
    if b > 5:
        print('b大于5,小于20')
    else:
        print('b小于等于5')
else:
    print('b大于等于20')

1.3for循环

  • 对序列中的所有元素遍历一边,然后结束。
    两天零基础入门Python_第1张图片
#该序列可以是List列表或者Set集合,将sequence的每个元素,依次赋值给variable
for <variable> in <sequence>: 
		<statements>
else
		<statements>
  • 最简单的for循环
#简单的for循环
country = ["China", "Japen", "Korea", "USA"]
for i in country:
    print(i)
else:
    print("第一次简单的遍历结束")
  • 带有if条件判断语句的for循环
#带有if条件判断的for循环
country = ["Japen", "China", "Korea", "USA"]
a = 1																		#这里定义个int型变量a
for i in country:
    if i == 'China':
        print(i + " NO.1!")							#不管"China"在列表中的第几位,打印出来都是NO.1
    else:
        a = a + 1
        print(i + " NO.{0}!".format(a)) #但其他国家的NO.,是按他们在列表中的顺序,从2开始递增
else:																		#Japen NO.2! Korea NO.3! USA NO.4!
    print("第二次带if条件判断的遍历结束")
  • 遍历一个字典
#遍历一个字典
d = {'name':'hsykl', 'age':'25', 'sex':'male'}
print(d)                                        #1、这是将整个字典平铺打印出来,包括{}

for key in d:
    print(key + ':' + d[key])                   #2、这是遍历的单个打印出key或key对应的键值对

1.4while循环

  • 情况满足判断条件(判断为Ture),便一直执行处理逻辑,直到不满足判断条件(判断为False),便退出循环,执行下一个处理逻辑。
    两天零基础入门Python_第2张图片

  • 没有else语句的while循环:退出循环后不执行任何处理逻辑

#没有else语句的while循环
a = 10
while a < 100:
    print(a)
    a = a + 10
  • 带有else语句的while循环:退出循环后执行之后的处理逻辑
#带有else语句的while循环
b = 10
while b < 200:
    print(b)
    b = b + 10
else:
    print("b大于200, 退出循环")

1.5break、continue语句

  • break语句用来跳出for和while循环体,从for和while循环体中终止,后续循环中所有语句将不再执行。
  • continue语句用来告诉python跳过当前循环块中的剩余语句,然后继续进行下面的循环。
  • for循环中break
    • 打印结果为:
      Beijing
      Zhengzhou NO.1!
#for循环中break
city = ["Beijing", "Zhengzhou", "Kaifeng", "Shanghai"]
for j in city:
    if j == "Zhengzhou":
        print(j + " NO.1!")
        break
        print("welcome to " + j) 
    else:
        print(j)
else:
    print("城市的列表,遍历结束")
  • for循环中continue

    • 打印结果为:

      Beijing
      Zhengzhou NO.1!
      Kaifeng
      Shanghai
      城市的列表,遍历结束

#for循环中continue
city = ["Beijing", "Zhengzhou", "Kaifeng", "Shanghai"]
for j in city:
    if j == "Zhengzhou":
        print(j + " NO.1!")
        continue
        print("welcome to " + j) 	#该次循环中,continue之后的语句不会执行,跳转进行下面的循环
    else:
        print(j)
else:
    print("城市的列表,遍历结束")

2.模块

2.1模块简介和使用

  • 模块是一个包含所有你定义的函数和变量的文件,其后缀名为.py。

  • 模块可以被别的程序引入,以使用该模块中的函数等功能。

    • ①import模块名:导入模块名对应模块。然后使用被导入模块中方法时,要“模块名.方法名“。
    • ②from模块名import*:把一个模块的所有内容全部导入。使用被导入模块中方法时,可以直接写”方法名“。
    • 无论执行多少次import,一个模块只会被导入一次。
    #定义一个util模块,提供简单的运算方法,供其他模块调用
    def getSum(a, b):
        return a + b
    
    def getProduct(a, b):
        return a * b
    
    #导入util模块下的指定内容
    #import util
    #print(util.getSum(1, 2))
    #print(util.getProduct(3, 4))
    
    #导入util模块下的所有内容
    from util import *
    print(getSum(3, 4))
    print(getProduct(1, 2))
    

2.2Python标准库

  • Python自带一些标准模块库。

  • 有些模块直接被构建在解析器中,这些虽然不是语言内置的功能,但是可以高效的使用,甚至是系统级调用也没问题。

  • Python标准库网站:https://docs.python.org/zh-cn/3/library/,常用模块如下:

    • os模块:提供不少于操作系统相关联的函数。
      • 例如:返回当前文件所在的系统路径。
    • re模块:为高级字符串处理提供正则表达式工具,对于复杂的匹配和处理,正则表达式提供了简介、优化的解决方案。
      • 例如:网站登录时,检查用户登录填写的邮箱格式是否正确;查找某个字符串中,所有以字母‘f’开头的单词等等。
    • math模块:为浮点运算提供了对底层C函数库的访问。
    • datetime模块:为日期和时间处理同时提供了简单和复杂的方法。
      • 例如:获取当前计算机IP所在时区的日期和时间。
    #os模块
    import imp
    import os
    print(os.getcwd())				 #getcwd():返回当前文件所在的系统路径
    		
    #re模块
    import re
    print(re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest!'))
    														#findall()函数:查找后边字符串中,所有以字母‘f’开头的单词
    #math模块
    import math
    print(math.pi)							#pi函数:调用π
    
    #datetime模块
    import datetime
    print(datetime.date.today())#date.today()函数:获取当天该计算机IP所在时区的日期
    

2.3第三方模块

  • Python的一大优势就是有丰富且易用的第三方模块,省去了大量重复造轮子的时间。
  • 包管理器:
    • 很多系统和语言都提供了包管理器,可以把”包管理器“想象成一个类似应用商店的工具。
    • Python的包管理器就是各种第三方模块。它可以自动帮你下载并安装。
    • 终端输入:pip3 install 模块名
  • ⭐️requests:处理URL资源特别方便。最常用!(Python最常用的就是爬虫,爬取一些网页上的数据,并进行分析)
  • chardet:检测编码,简单易用。
  • psutil:获取系统信息。
import requests                             #导入第三方模块:requests
r = requests.get("https://www.baidu.com/")  #采用requests的get方法获取指定网址的html内容
print(r.text)                               #将获取的html内容以文本的形式打印

3.函数和对象

3.1内置函数

  • 函数:

    • 函数是组织好的,可重复使用,用来实现单一、相关联功能的代码段。
    • 函数提高了应用的模块性、和代码的重复利用率。
    • 基础部分:函数名、传入的参数、处理逻辑、返回值。
  • 内置函数:

    • Python将常见的的功能写成内置函数,需要时直接调用即可。
    • 一共70余个,常用的几个:
    #abs 获取绝对值
    a = abs(-2)
    print(a)
    print(abs(-3))
    
    #max/min 返回列表元素中的最大小值
    b = [1, 2, 3, 4]
    print(max(b))
    print(min(b))
    
    #sorted 对列表元素进行排序,默认升序
    c = [4, 2, 1, 5, 8]
    print(sorted(c))
    
    #set 对列表变成集合,来去重
    d = [1, 1, 3, 4, 2]
    print(set(d))
    
    #hash 获取一个对象(数字或者字符串)的哈希值
    e = 10
    f = 'abc'
    print(hash(e))
    print(hash(f))
    
    #len 返回对象(字符、列表、元组等)长度或元素个数
    g = (a, 43, b, 13)
    print(len(g))
    
    #round 对浮点数四舍五入
    h = 3.14
    print(round(h))
    
    #format 格式化字符串的函数
    #用{}代表占位符,内部是参数的索引值
    #format函数可以接收无限个参数
    print('name is {0}, I live in {1}'.format('hsykl','shanghai'))
    

3.2自定义函数

  • 函数代码块以def关键词开头,后接函数名和圆括号()用于传入参数。

  • 函数内用return关键字返回值,无return代表没有返回值。

    • def printName( str )

      ​ print ‘my name is:’ + str

  • 参数:必备参数、关键字参数、默认参数、不定长参数。

    #(1)必备参数
    #必备参数须以正确的顺序传入函数,调用时的数量必须和声明时一样
    #且不能不传参数,不然会语法报错
    def printName(name, location):
        print('my name is: ' + name, '\nI live in: ' + location)
    
    printName('hsykl', 'shanghai')
    
    #(2)关键字参数
    #关键字参数允许调用参数时参数的顺序与声明时不一致,Python可根据参数名匹配参数值
    def printInfo(name, city):
        print('my name is: ' + name, '\nI live in: ' + city)
    
    printInfo(city='beijing', name='hsykl')
    
    
    #(3)默认参数
    #调用函数时,默认参数的值若没有传入,会用默认值
    #注意!有默认值的参数必须放在最后,否则会产生语法错误
    def printDefault(name, city='kaifeng'):
        print('my name is: ' + name, '\nI live in: ' + city)
    
    printDefault('HSYKL')
    printDefault('HSYKL', 'henan-kaifeng')
    
    #(4)不定长参数
    #可以传入不定长度的参数,声明时可以不用声明
    #加了*的变量名会代表所有未命名的变量参数
    def printFix(*numbers):
        for i in numbers:
            print(i)
    
    printFix('h', 's', 'y', 'k', 'l')
    printFix(1,2,3,4,5)
    

3.3定义类和构造方法

  • 面向对象编程:

    • 类(class):抽象的概念,用于描述具有相同的属性和方法的对象的集合。
    • 对象(object):是类的一个实例。
    • “学生”相当于一个抽象类,“李雷”、“韩梅梅”是该类的两个具体实例。
      两天零基础入门Python_第3张图片
    #class and object
    
    class Student:  
    #构造方法 constructor -》如何创建一个对象,相当于verilog中的new函数
    #self相当于java/verilog中的this关键字
        def __init__(self, name, age, sex):
            self.name = name
            self.age = age
            self.sex = sex
        
        def displayInfo(self):
            print('name : ' + self.name + '\nage : ' + str(self.age) + '\nsex : ' + self.sex)
    
    #实例化对象
    a = Student('Lilei', 12, 'boy')
    b = Student('Hanmeimei', 13, 'girl')
    
    #使用对象调用类中函数
    a.displayInfo()
    print()
    b.displayInfo()
    

3.4封装和继承

  • 封装:

    • 将属性和方法抽象出来,封装到一个类中。
      两天零基础入门Python_第4张图片
  • 继承:

    • 它可以使用现有类的所有功能,并无需重新编写原来的类的情况下对这些功能进行扩展。
    • 比如Employee是父类,Manager是子类,Manager继承了Employee。
    #class and object
    
    class Student:
        
    #(1)构造方法 constructor -》如何创建一个对象,相当于verilog中的new函数
    #self相当于java/verilog中的this关键字
        def __init__(self, name, age, sex):
            self.name = name
            self.age = age
            self.sex = sex
        
        def displayInfo(self):
            print('name : ' + self.name + '\nage : ' + str(self.age) + '\nsex : ' + self.sex)
    
    #(2)实例化对象
    a = Student('Lilei', 12, 'boy')
    b = Student('Hanmeimei', 13, 'girl')
    
    #(3)使用对象调用类中函数
    a.displayInfo()
    print()
    b.displayInfo()
    

4.聊天机器人开发实战

4.1项目介绍

  • 聊天机器人

    • 前后端分离架构:客户端 + 服务端。

    • 功能:针对用户发送的内容,实现自动智能回复。
      两天零基础入门Python_第5张图片

    • 架构示意图:

      • API 是用于构建应用程序软件的一组子程序定义,协议和工具。一般来说,这是一套明确定义的各种软件组件之间的通信方法。
        两天零基础入门Python_第6张图片

4.2界面搭建

  • 通过html(网页源文件)+ css(定义网页字体、图片等样式)构造页面样式。

  • 通过WebSocket建立客户端与服务端的连接,实现双工通信。
    两天零基础入门Python_第7张图片

  • 将用户的消息发送给服务端。

  • 客户端接收服务端返回的消息,进行展示。

4.3服务端搭建

  • 接收客服端发送的数据。
  • 发送数据(如:周杰伦)到腾讯云智能API,接收返回值(如:昆凌)。
  • 将腾讯云智能API接收到的数据,再发送到客户端。

4.4实现自动回复

  • 基于腾讯云智能API:https://cloud.tencent.com/document/api/1060/37438

  • 申请API使用权限。

  • 安装腾讯云类库:pip3 install tencentcloud-sdk-python

你可能感兴趣的:(Python,python,开发语言)