python:基础知识—流程控制—函数与模块—数据结构—类与GUI和Turtle—异常处理与文件,概括全书(上万字最详细版)

这里是一张夜景,给大家放松一下。
!!无锡南长街

文章目录

  • 模块一:基础知识
    • 1、python语言
    • 2、常见数字类型
    • 3、字符串
    • 4、数字类型转换
    • 5、标识符命名
    • 6、常见关键字
    • 7、运算符与表达式
      • (1)算术运算符
      • (2)关系运算符
      • (3)逻辑运算符
    • 8、输入与输出
  • 模块二:流程控制
    • 1、顺序结构
    • 2、选择结构
    • 3、循环结构
  • 模块三:函数与模块
    • 1、函数定义
    • 2、函数调用
    • 3、匿名函数
    • 4、输入函数
    • 5、作用域
    • 6、模块
  • 模块四:数据结构
    • 1、元组
    • 2、列表
    • 3、字符串
      • (1)定义
      • (2)格式化字符串
      • (3)find、split、join、strip方法
      • (4)大小写的转换
    • 4、字典
    • 5、集合
      • (1)添加元素
      • (2)删除元素
  • 模块五:类、GUI与Turtle
    • 1、类与对象的定义
      • (1)类的定义
      • (2)类的继承:
    • 2、Tkiner——GUI
    • 3、turtle的使用
  • 模块六:异常处理与文件
    • 1、异常处理的方法
    • 2、文件操作

模块一:基础知识

1、python语言

python是一门同时支持面向过程面向对象的高级语言,由于开放源码的特性,具有移植性好,可跨平台,具有丰富的第三方库。扩展名名为.py

2、常见数字类型

python中常见的数字有三种类型·:整数(integer),浮点数(float),与复数(complex)。
这里我来演示一下复数定义:

a=10.0+20.0J   # a=10.0+20.0j 这里的j可大写也可小写,需要注意一下,
print (a.real) #虚数是由实部与虚部组成,10.0是实部,20.0是虚部,可以是整数或者其他数值
print(a.imag)

在这里插入图片描述

3、字符串

字符串:在其他编译语言里面,字符串一般由双引号组成,而python可以用单引号、双引号、三引号表示。这个是区别于其他的编程语言的。

a="sz"
b='sz'
c='''sz'''
print (a)
print (b)
print (c)

在这里插入图片描述
这里需要注意:三引号除了定义单行字符串,也可以定义多行字符串,大家可以去测试一下。在python里面除了是用来定义数值,他还是作为多行注释

4、数字类型转换

数据类型转换:格式 数据类型(数值)

a=int(10.0)
b=float(10)
c=int('123')

print (a)
print (b)
print (c)

在这里插入图片描述
这里需要注意,如果要转换字符串,那么被转换的字符串里面,一定要是数值,不能是字母

5、标识符命名

定义标识符命名规则
(1)用户标识符由数字、字母(区分大小写)、下划线,汉字组成。
(2)以字母或下划线开头。
(3)不可选用关键字,关键字不可以做为用户标识符。
(4)区分大小写。
练习:下列哪一个是合法的用户自定义标识符______。答案:C
A、while (不可以选择关键字)
B、begin?end (?不可以出现在自定义标识符中)
C、__for
D、2nd_run (数字不可以开头)

6、常见关键字

and as
assert break
continue class
def del
elif else
expect for
finally from
False global
if import
in is
lambda not
nonlocal None
or pass
return try
True while
with yield

7、运算符与表达式

运算符与表达式:

(1)算术运算符

  `*` :  **例**: 2*8结果为16,“hello”*2结果为“hellohello”
  `+` :  **例**: 2+8结果为10,”hi“+”你好“结果为”hi你好“
  `/` :   实数(浮点)除法,最后结果一定为小数 **例**:2/8结果为0.25
  `//` :    整数除法(向下取值),  **例**:2//8结果为0, -13//3结果为-5
  `%` :    取余数,     **例**:2%8结果为2

**: 乘方(次方),:2**3结果为8
练习:可利用//(整除)和%(求余也称为模运算)对一个整数进行各位数字的分离,对于一个变量num = 12345来说,以下能取到其百位数3的表达式________
结果:12345//100%10

(2)关系运算符

< 、 > 、 >=、 <= 、 == 、!=(注意 === 的区别)

(3)逻辑运算符

not 、or、and
表达式
①正确书写编程语言中的表达式,注意与数学表达式的区别
②条件表达式: y = True if a>b else False
这里的条件表达式,运算规则,如果if后面的条件成立,则输出if前面的表达式,否则输出else后面的表达式。

8、输入与输出

input:输入;默认为字符串类型
print:输出;默认分隔符为空格,结束标识符为换行。

print('{:.4e}'.format(234.56789))
# 用科学计数法,表示数字,并且保留四位小数
#结果为2.3457e+02  ,

模块二:流程控制

程序流程的三种基本结构是顺序结构,选择结构、循环结构。

1、顺序结构

赋值语句和函数调用语句是控制该结构的主要语句。函数调用语句中最常用的是:input()和print()

2、选择结构

用if…else、elif实现。
if语句有三种形式:单分支if、双分支if…else、嵌套if…elif…,if后的条件通常是关系或逻辑表达式,但是实际语法上可以是任何表达式,仅以该表达式是0或非0来判断条件的假或真。
if (x==y) : x与y相等结果为True,不相等则结果为False

3、循环结构

(1)Python 用whilefor…in…来构造两种不同的循环结构。
注意while属于当型循环,若while后的条件为True则继续循环,若为False则结束。
(2)for…in… 是遍历序列中的每一个项目。
(3)辅助流程控制语句:breakcontinue
循环体内满足某条件执行break语句则提前结束循环。
在循环体中可以用continue表示忽略本次循环体中的后续语句,重新开始下一次循环条件的判断,以便决定是否要继续循环。

注意:在循环时候要注意循环条件
比如: for in range (0,4):
这里一共循环四次,因为循环条件里面是“包前不包后”的。

我们一起来看两道题目:
练习题:(代码答案在照片下面
1、编写程序,以每行五个形式输出100以内的所有素数(质数)。
2、编写程序,输出100到1000之间的所有水仙花数,输出格式不限,(水仙花数是指一共三位数,每一位的立方和为该数本身)。
在这里插入图片描述
1、

count=0
for i in range(3,100):
    for j in range(2,i):
        if(i%j==0):
            break
    else:  #else放在这个位置,是为了将内部整个循环都遍历完了,再将符合条件的数输出,而不是每遍历一个,就输出一次该数
        print(i,end=" ")
        count+=1
        if count%5==0:
            print("\n")

2、

for i in range(100,1000):
    a=i%10
    b=i//10%10
    c=i//100
    if a**3+b**3+c**3==i:
        print(i)

如果上面两题都做了的话,意犹未尽,可以尝试做下面这题:
利用递归/非递归方法来对斐波那契数列问题的求解。

#递归
def fib2(n):
    def fib3(i):
        if i<2:
            return 1
        else:
            return fib3(i- 1) + fib3(i - 2)
    for i in range (0,n): #输出所有数值
        print(fib3(i))
 
#非递归
list=[]
def fac(n):
    for i in range (0,n):
        if i==0 or i==1:
            list.append(1)
        else:
            list.append(list[i-2]+list[i-1])
    print(list)  
fib2(3)

这里我想再和大家分享一些教训:

#输入的是第n个数
def fib2(n):
    if n == 1 or n == 2:
        return 1
    else:
       return fib2(n - 1) + fib2(n - 2)
  
        
print(fib2(3))

模块三:函数与模块

1、函数定义

其实我们前面的一些算法里面已经使用过函数了,可以看出,有一个固定的格式:

def 函数名(参数)#定义
     ....
    函数体
     ....
    
函数名(实参) #调用

函数若有返回值,可以用return 表达式将值返回给调用方。return可以是一个,也可以返回多个信息

2、函数调用

在函数调用时候需要注意,有一个规则,“定义是从右向左依次定义,赋值是从左到右”。

#注意,这里是形参的定义,不是调用
def gac(a=1,b=1,c=1):
def gac(a=1,b=1,c):
#这里就不行,因为它跳过了最右边的c赋值,应该从c开始,赋值顺序是cba,
#当然也可以是下面这种情况;
def gac(a,b,c=1):

#调用
def gac(x,y=2,z=2):
#我们现在调用这个函数,赋值顺序应该是从最左边开始,第一个x并未给值,
#那么此时的形参的默认值就会给到x,即为x=1(这里的1是a给的)

3、匿名函数

这里我在第一篇有讲过,大家可以点下面链接:匿名函数相关函数的定义与使用

4、输入函数

这里我想为大家在拓展一个输入函数,就是input()的使用,如果我们想要同时输入多个值得话,可以通过下面函数实现:

a,b=map(int,input().split())
#map(类型,input.split()),split(),括号里面是我们输入多个值时候得分隔符。
#比如我们输入1,2 那么split()可以写成split(",")。

5、作用域

(1)全局变量——在所有函数之外定义的变量,可以被整个程序中的其他语句访问。
(2)局部自动变量——在某函数内部定义的变量,只能被定义它的函数中的语句访问。
注意:在函数中可以使用global声明变量,表示该变量是在函数外定义的全局变量。

6、模块

模块是以.py结尾得文件,只要在其他函数或文件中引用该模块就可以调用其中函数。
有以下几种引用方法:

import 模块 
from 模块名 import 函数名
from 模块名 import*

模块四:数据结构

我在之前一篇也详细讲了各种函数的用法,可以从点击这里跳转
列表、元组、字符串详细解说
下面的讲解是对前面一篇的补充,可以先看前面的一篇,再回来看看就会简单许多。

1、元组

元组是不可改变元素值的序列

tup1 = (1,2,3,4,5)
tup1[1:4] #使用分片访问元组的一段元素
(2,3,4)
tup2 = (‘a’,’b’,’c’)
tup3 = tup1 + tup2
(1,2,3,4,5,’a’,’b’,’c’)

定义元组时候,需要注意一种特殊的列子:
(12,)(12)这两个是不同的意思,
第一个是定义元组,我们在元组里面只定义一个数值,那么一定要在数值后面加上逗号否则的话,仅仅表示数值

2、列表

列表是Python中最常用的数据结构之一,一个列表中可以存放多个数据。
可以创建列表、访问列表(可以用索引或分片访问列表中的元素)、修改列表元素的值、删除列表元素。
常用的操作方法:

append,clear,copy,extend,insert,index,count,remove,reserve,sort

内置函数:

lenmaxminsorted

3、字符串

(1)定义

定义:字符串是由字母、数字、下划线组成的一组字符,用一对引号包含。

(2)格式化字符串

’ My name is %s ’ % ( ’ Tom ’ )
My name is Tom

%的左侧放入需要格式化的字符串,右侧放入希望格式化的值。这个值可以是字符串或数字,或和元组、字典。其中的%s是格式化符,它们标记了需要插入值得位置,并且该值转为字符串类型。

print('my name is %s'%('sz'))
print('my name is %f'%(20))
print('my name is %c'%('a'))

在这里插入图片描述
可以看到第二个对于原来应该是十进制整数,进行了强制转换

(3)find、split、join、strip方法

find()方法:

val=‘I love hmz’
val.find(‘love’)
2 //若有该内容则返回其下标
val.find(‘name’)
-1 //表示没有该字符

join()方法:
使用字符串中得该方法,可以在队列中添加元素,需要注意的是,需要添加得队列元素必须都是字符串类型的数据。
作用:将队列中的字符串通过val1连接在一起

val=[ ’ 1 ’ , ’ 2 ’ , ’ 3 ’ , ’ 4 ’ , ’ 5 ‘]
val1=’ * ’
val1.join(val)
’ 1* 2 * 3 * 4 * 5 ’ //输出

split()方法:
该方法是join的逆方法,可以将连接的字符串分开

str=’ 1* 2 * 3 * 4 * 5 ’
str.split(’ * ')
[ ’ 1 ’ , ’ 2 ’ , ’ 3 ’ , ’ 4 ’ , ’ 5 '] //输出

strip()方法:
该方法时为了去除字符串两端的空格。

val='  I love hmz'
val.strip()
print(val)
# 输出:'I love hmz'

(4)大小写的转换

lower()upper()两个方法

val='I love hmz'
print(val.upper())
print(val.lower())

在这里插入图片描述
这里给大家出一道题目,编写程序,输入一段英文,输出该句子中字母为3的单词
答案在图片下面:
在这里插入图片描述

str1=input().split(' ')
for i in str1:
    if(len(i)==3):
        print(i)

4、字典

字典是Python中唯一内建的映射类型,字典中的值没有特殊的顺序,但存储在特定的键下。字典有多个键值对组成,键和值之间通过冒号分隔元组可以作为键,列表不可以作为键。
来看一段代码:

name = ['lin','wang','zhang']
dictionary = {i:0 for i in name}
print(dictionary)
while True:
    vote = int(input())
    if vote == 1:
        dictionary['lin']+=1
    elif vote == 2:
        dictionary['wang']+=1
    elif vote == 3:
        dictionary['zhang']+=1
    else: break
print(dictionary)

这里先建立name为名的列表。之后建立字典,而键(key)时name中相对应得字符串。

在这里插入图片描述

5、集合

集合有几个特点:

  • 唯一性(即为集合元素不重复)
  • 元素类型统一

看代码理解:如下

a=set('123456') #创建一个集合 固定格式set()
a=set('aabbcdee')
print(a)

在这里插入图片描述

(1)添加元素

add()`方法:

#创建一个集合 固定格式set()
a=set('i love')
a.add('hmz')
print(a)

在这里插入图片描述
这里后加入得hmz时作为一个整体加入集合中,因而最后输出不需要拆分。
update()方法:

#创建一个集合 固定格式set()
a=set('i love')
a.update('hmz')
print(a)

在这里插入图片描述
而采用update,就是将所要添加得元素以拆分,最后形成单个字符加入集合里面。

(2)删除元素

只能删除已有元素,这里需要记住

a=set('123456')
a.remove('2')
print(a)

在这里插入图片描述

模块五:类、GUI与Turtle

我在之前文章也提到过该模块:(可点击下面链接跳转)

  • 类与对象编程

1、类与对象的定义

类与对象的定义:定义类的格式,对象实例化,对象属性与类属性,初始化方法

来看一段代码:

(1)类的定义

#定义类的格式,对象实例化,对象属性与类属性,初始化方法
class Stu: #创建类(学生类)
    def __init__(self,name,age,sex):   #初始化方法,也就是其他编程语言里面的构造方法
        self.name=name  
        self.age=age
        self.sex=sex
    def get_name(self):
        print(self.name)
    def get_age(self):
        print(self.age)
    def get_sex(self):
        print(self.sex)
    def get_allinfor(self):
        print("姓名:{},年龄:{},性别:{}".format(self.name,self.age,self.sex))

stu=Stu("sz",21,"men")  #对象实例化
stu.get_age()  #用对象访问方法
stu.get_name()
stu.get_sex()

#也可以通过直接访问类属性来进行输出
print(stu.name)
print(stu.age)
print(stu.sex)

#也可以定义方法直接输出所有
stu.get_allinfor()

注意:__init__()创建对象时由系统自动调用,访问类的数据成员,类的继承。

(2)类的继承:

#定义类的格式,对象实例化,对象属性与类属性,初始化方法
class Stu: #创建类(学生类)
    def __init__(self,name,age,sex):   #初始化方法,也就是其他编程语言里面的构造方法
        self.name=name  
        self.age=age
        self.sex=sex
    def get_name(self):
        print(self.name)
    def get_age(self):
        print(self.age)
    def get_sex(self):
        print(self.sex)
    def get_allinfor(self):
        print("姓名:{},年龄:{},性别:{}".format(self.name,self.age,self.sex))
class Son(Stu): #括号里面写父类名
    def __init__(self,name,age,sex,mark):
        Stu.__init__(self,name,age,sex)
        self.mark=mark
    def get_allinfor(self):
        print("姓名:{},年龄:{},性别:{},成绩:{}".format(self.name,self.age,self.sex,self.mark))

son=Son("sz",21,"men","good")  #对象实例化
son.get_allinfor()

2、Tkiner——GUI

我在之前文章也提到过该模块:(可点击下面链接跳转)

  • 图形用户界面

我们来看一段代码加以理解,基础部分可以看上面链接:

#常用组件Button,Label,Entry,Listbox的作用。
import tkinter as tk
top=tk.Tk() #创建顶层窗口对象
top.title("hello") #创建窗口标题
lab1=tk.Label(top,text="yours name:") #创立标签,放入top的窗口
lab2=tk.Label(top,text="copy your name:")
entry1=tk.Entry(top) #创立文本框,放入top的窗口
entry2=tk.Entry(top)
lab1.pack() #与调用pack()顺序有关
entry1.pack()
lab2.pack()
entry2.pack()
def button_click( ): #动作事件:将文1内容复制给文2
    entry2.delete(0,tk.END) #清空文2内容
    text=entry1.get() #提取文1
    entry2.insert(0,text) #复制
btn=tk.Button(top,text="copy",command=button_click)
btn.pack()
top.mainloop()

在这里插入图片描述
在这里插入图片描述

3、turtle的使用

学习目标:设置画笔的颜色、调整画笔角度、向前移动、向后移动、提笔、落笔、绘画速度、RGB色彩格式、Turtle坐标系

import turtle  #导入库
turtle.color("red") #为画笔上色
for i in range(5):
    turtle.forward(100)  #前进100 
    turtle.right(144) #右转144度 这里需要注意,是在原地转
    turtle.forward(100)
    turtle.left(72) 
turtle.done() #结束当前绘图工作

为大家在下面列举常用的函数:都是通过turtle.来访问

操作符 功能
forward (distance)/ fd(distance) 沿着海龟当前方向前进一段距离
back(distance) / bk(distance) / backword(distance) 沿着海龟当前方向后退一段距离
right(angle) / rt(angle) 右转角度
left(angle) / lt(rangle) 左转角度
goto(x,y=None) 将海龟移动到指定位置
setheading(to_angel) / seth(to_angle) 将海龟的朝向调整到某个角度 ,0°朝右,180°朝左
circle(radius,extent=None,steps=None) radius是圆弧的半径,extent是有关角度,用来画圆弧
begin_fill() 从海龟当前位置开始设置填充颜色
end_fill() 从海龟当前位置开始结束填充颜色,完成填色

注意:(考点)
-海龟的位置,是一个箭头标志,并不是海龟

  • speed(),要想直接得到图形,在参数里面设置速度为0即可。

模块六:异常处理与文件

我在之前文章也提到过该模块:(可点击下面链接跳转)

  • 异常处理与文件操作

1、异常处理的方法

异常处理方法:
有以下常见的异常

  • NameError尝试访问一个没有声明的变量引发的错误
  • IndexError索引超出序列范围引发的错误
  • IndentationError缩进错误
  • ZeroDivisionError除数为0引发的错误
  • SyntaxError语法错误

看个代码:

for i in range (0,4):
    try:
        a=12
        c=a/i
        print(c)
    except ZeroDivisionError: #此处可写异常,可不写
        print("{}处出错了".format(i))

2、文件操作

文件操作的步骤
打开文件: f = open(“book.txt”,’w’)
或者 with open(“book.txt”,’w’) as f
打开文件方式: r,w,a,b,+进行组合
读文件 str = f.read() str = f.readlines()

使用readlines函数可以读取文件中所有的行

   with open("student.txt","r") as file:      #或者file = open("D:/li07-1.txt", 'r'):
        for line in file.readlines():
            l = line.rstrip('\n').split("\t")
            for x in l:
               print(x,end=',')
            print()         

第一篇万字文章,大概花了一个星期为大家整理了python知识点,可用于初学者,复习的等等
快快分享给你的伙伴吧!

你可能感兴趣的:(python学习系列,python,数据结构,开发语言)