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

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

模块一:基础知识

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、常见关键字

andas
assertbreak
continueclass
defdel
elifelse
expectfor
finallyfrom
Falseglobal
ifimport
inis
lambdanot
nonlocalNone
orpass
returntry
Truewhile
withyield

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知识点,可用于初学者,复习的等等
快快分享给你的伙伴吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

silence_sz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值