Python必学基础

本文是Python语言程序设计的学习笔记,涵盖了Python基本语法、开发环境配置、数据类型、程序控制结构、图形绘制、文件操作等内容。从程序设计的基本方法到Python的高级特性,详细解读了Python的使用方法,包括数据类型、流程控制、函数和代码复用,以及第三方库的使用。笔记适合初学者,强调实践应用,旨在帮助读者深入理解和掌握Python编程。

Python学习笔记

声明:
1、本文依据Mooc课程“Python语言程序设计”,北理工嵩天老师的课程。
2、推荐这门课作为一些非计算机专业学习,内容深入浅出,而且结合简单的实际应用进行讲解。
3、课程笔记,学习专用,未完,持续更新,后续学习进阶版也会更新。
4、欢迎学习交流,转载请先联系作者,盗版必究,尊重知识。

第一章 Python基本语法元素

1.1 程序设计的基本方法

1、计算机

#功能性:对数据的操作表现为数据计算、输入、输出和结果储存等

#可编程性:根据一系列指令自动地、可预测的、准确的完成操作者的意图。

2、摩尔定律Moore‘s Law

计算机史上最重要的预测法则:单位面积集成电路上可容纳晶体管的数量约每两年翻一番。

计算机发展是以指数方式的发展。

3、python

python诞生于1990年,是当今最好用的语言。

4、程序执行的两种方式

将源代码(人类可读)与目标代码(机器和某些顶尖专家可读)相互转换

#编译:将源代码一次性转换成目标代码的过程,使用编译执行的编程语言,如c、c++、Java等静态语言

静态语言 编译器一次性生成目标代码,优化充分,运行快

#解释:将源代码逐条转换为目标代码并同时逐条运行的过程,使用解释执行的编程语言称为脚本语言,如Python、js、php

脚本语言 执行程序时需要源代码,维护更灵活,可以跨多个操作系统平台

5、程序的基本编写方法

#IPO

I–input输入,程序的输入:文件、网络、控制台、交互界面、程序内部输入等

P–Process处理,程序的主要逻辑:算法

O–output输出,程序的输出:展示运算结果的方式

1.2 python开发环境配置

Python意为忙着,属于PSF,PSF是一个致力于保护Python语言开放、开源和发展的非营利组织。python的创始者是Guido。

网上方法很多,自己去学学即可。

1、python的两种编程方式

交互式和文件式

#交互式

对每个输入语句即时运行结果,适合语法练习

#文件式

批量执行一组语句并运行结果,编程的主要方式

1.3 摄氏度和华氏温度转换

输入输出格式:82F–华氏82度,28C–摄氏28度

算法设计:根据转换公式:C=(F-32)/1.8,F=C*1.8+32

#TempConvert.py

TempStr = input("请输入温度值:")
if TempStr[-1] in ['F','f']:
C = (eval(TempStr[0:-1])-32/1.8)
print("转换后温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','c']:
F = 1.8*eval(TempStr[0:-1]+32)
print("转换后温度是{:.2f}F".format(F))
else:
print("输入格式有误")

1.4 1.3代码解析

#缩进

表达程序的格式框架,表达代码间包含和层次关系的唯一手段,单一程序内锁紧长度相同即可,一般用4个空格或者1个tab

#注释

#开头,其后内容为注释,单行注释;’’'开头和结尾表示多行注释

#变量

用来保存和表示数据的占位符号

#命名

大小写字母、数字、下划线、汉字等字符的组合

注意事项:大小写敏感、首字母不能是数字,不与保留字相同

#保留字

编程语言内部定义的并保留使用的标识符,即关键词

and elif import raise global
as else in return nonlocal
assert except is try True
break finally lambda while False
class for not with None
continue from or yield
def if pass del
#数据类型

供计算机程序理解的数据形式

-整数类型 10011101

-字符串类型 “10,011,101”

-列表类型 [10,011,101]

#字符串的序号

正向增序序号:从0开始

反向递减序号:-12,-11.。。,-1,保证最后一个为-1

#分支语句

有判断条件决定程序运行方向的语句,例如if,elif,else

#语句和函数

根据输入参数不同输出结果

#python输入和输出

#输入函数input()

从控制台输入

#输出函数print()

以字符串型是向控制台输出结果

print()函数的格式化

print("转换后温度是{:.2f}C".format(C))

#eval()

评估函数,去掉参数最外侧引号并执行余下语句的函数

如eval(“1+2”)会得到3

第二章 Python基本图形绘制

2.1 深入理解Python语言

1946-1981年计算机系统结构时代:计算能力问题

1981-2008网络和视窗时代:交互问题

2008-2016安卓系统产生,复杂信息时代:数据问题

2016-?人工智能时代:计算能力问题、人类的问题

#高级语言 接近自然语言,编译器,与cpu幸好无关

#汇编语言 有助记符,汇编器,与cpu型号有关

#机器语言 代码直接执行,与cpu型号有关

#超级语言 Python是目前唯一的超级语言

2.2 Python蟒蛇绘制

#PythonDraw.py
import turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown() 
turtle.pensize(25)
turtle.pencolor("red")
turtle.seth(-40)
for i in range(4):
	turtle.circle(40,80) 		
	turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,100)
turtle.fd(40*2/3)
turtle.done()

2.3 代码解析

#turtle库概述

1969年诞生的海龟库,有一只海龟,在窗体正中心,在画布上游走,走过的轨迹形成了绘制的图形

#turtle绘图窗体

-setup()设置窗体大小及位置

-4个参数中后两个可选,分别表示长、宽、左上角x/y坐标

-setup()不是必须的

#turtle的空间坐标体系

turtle的空间坐标是绝对坐标,窗体中心为海归起始位置(0,0)

turtle.goto(x,y)表示走向

海龟是头朝右的乌龟

turtle.fd(d)朝海龟正前方

turtle.bk(d)朝海龟后方

turtle.circle(r,angle)朝海龟左侧沿距离r的原点绕行

turtle.seth(angle)改变海归方向,但不行进

turtle.colormode(mode)

#import用法

import <库名>

<库名>.<函数名>(<函数参数>)

import <库名> as <库别名>

<库别名>.<函数名>(<函数参数>)

from <库名> import <函数名>

from <库名> import *

<函数名>(<函数参数>)

turtle.penup()#表示画笔抬起,海龟在飞行,别名turtle.pu()
turtle.pendown()#画笔落下,海龟在爬行,别名turtle.pd()
turtle.pensize(25)#画笔的宽度,别名turtle.width()
turtle.pencolor("red")#设置画笔颜色

第三章 基本数据类型

3.1 数字类型及操作

#整数类型

pow(x,y) x的y次方

#4中进制表示形式

十进制:99

二进制,以0b或者0B开头:0b010,-0B101

八进制,以0o或者0O开头:0o123,-0O456

十六进制,以0x或者0X开头:0x9a,-0X89

#浮点类型

浮点数的小数部分二进制与十进制并不是一一对应,存在不确定尾数

例如输入0.1+0.2==0.3会显示false,但可以使用round解决,round(0.1+0.2)==0.3会显示true

round(x,d)对x四舍五入。d是小数截取位数

#复数类型

定义与数学相同

z.real获得实部,z.imag获得虚部,z为复数

#数值运算操作符

+、-、*、/

x//y整数除,得到整数商

%取余

x**y=pow(x,y)但前者x,y为整数,后者不需要

x op=y与x=x op y相同

#数值运算函数

abs(x) 求x的绝对值

divmod(x,y) 同时输出商和余数divmod(10,3)=(3,1)

pow(x,y[,z]) 表示(x**y)%z,例如pow(3,pow(3,9),10000)结果为4587

round(x[,d]) 四舍五入,d是保留小数数位

max/min(1,2,4,3,5)

3.2 天天向上的力量

#DayDayupandDownQ3.py

def dayUp(df):    
    day = 1
    for i in range(365):        
        if ((i + 1) % 7 == 6 or (i + 1) % 7 == 0):     
            day *= (1 - df)        
        else:            
            day *= (1 + df)    
     return day

dayfactor = 0.01
while dayUp(dayfactor) < 37.78:    
    dayfactor += 0.001
print("一年365天:{:.3f}".format(dayfactor))

3.3 字符串类型及操作

1、简介

字符串有2类共4种,表示方法

由一对单引号或双引号表示,仅表示单行字符串

"这里阿拉法凉山大火"或者'C:'

-如果希望在字符串中包含双引号或者单引号的表示方法:

'这里有个双引号(")'或者"这里有个单引号(')"

-如果希望文本中出现单引号和双引号

'''这里既有单引号(')又有双引号(")'''

2、字符串的使用

-索引:返回字符串中单个字符 <字符串>[M]

"请输入带有符号的温度值:"[0]或者TempStr[-1]

-切片返回字符串中一段字符子串 <字符串>[M:N]

"请输入带有符号的温度值:"[1:3]或者TempStr[0:-1]

#字符串切片高级用法

使用[M:N:K]根据步长对字符串切片

-<字符串>[M:N:K],根据步长K对字符串切片

"0123456789"[1:8:2]结果是"1357"

-<字符串>[M:N] M缺失表示至开头,N缺失表示至结尾

"01234567"[:3]结果是"012"

#字符串中的特殊字符
#转义符\

-表达特定字符的本意

"这里有个双引号(\")"结果为 这里有个双引号(")

-转义符形成一些组合,表达一些不可打印的含义

“\b” 回退

“\n” 换行,光标移动到下行首

“\r” 回车,光标移动到本行首

3、字符串的操作符+、*、in

x+y表示连接

n*x或者

x*n表示复制n次字符串x

x in s如果x是s的子串,返回True,否则返回False

例子

#WeekNamePrintV2.py
weekStr = "一二三四五六七"
weekId = eval(input("请输入星期数字(1-7):"))
print("星期"+weekStr[weekId-1])
4、字符串处理函数
函数及使用 描述
len(x) 长度
str(x) 任意类型转换为字符串类型,包括列表
hex(x)或者oct(x) 将十进制整数变成十六进制或八进制小写形式字符串,例如hen(425)=“0x1a9”, oct(425)=“0o651”
chr(u) u为Unicode编码,返回其对应字符,如char(10004)为"√"
ord(x) x为字符,返回其对应的Unicode编码

举例:

for i in range(9800,9812):    
	print(chr(i),end=" ")

输出星座符号:

♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓

方法及使用 描述
str.lower()或者str.upper() 返回字符串的副本,全部字符小写/大写"ahaBJOIHLADShjl".lower()结果为全部小写
str.split(sep=None) 返回一个列表,由str根据被sep分割的部分组成。“A,B,C”.split(",")结果为[‘A’,‘B’,‘C’]
str.count(sub) 返回子串sub在str中出现的次数。“an apple a day”.count(“a”)结果为4
str.replace(old,new) 旧字符串替换为新字符串
str.center(width[,fillchar]) 字符串str根据宽度width居中,fillchar可选"python".center(20,"=")结果为"=python="
str.strip(chars) 从str中去掉其左侧和右侧chars中列出的字符"= python".strip(" =np")结果为"ytho"
str.join(iter) 在iter变量除最后元素外每一个元素后增加一个str。例如",".join(“12345”)结果为"1,2,3,4,5",#主要用于字符串分隔等
5、字符串的格式化

其使用方法是.format(),具体用法如下:

<模板字符串>.format(<逗号分隔的参数>)

#槽:{},其两种不同的使用方法

"{}:计算机{}的cpu占用率为{}%".format("2018-10-10","c",10)

"{0}:计算机{1}的cpu占用率为{2}%".format("2018-10-10","c",10)

#format方法的格式控制

槽内部对格式化的配置方法:

{<参数序号>:<格式控制标记>}

<填充> <对齐> <宽度> <,> <.精度> <类型>
引导符号 用于填充的单个字符 <左 >右 ^居中对齐 槽设定的输出宽度 数字的千位分隔符 浮点数小数精度或者字符串最大输出长度 整数类型b,c,d,o,x,X浮点数类型e,E,f,%

"{0:=^20}".format("Python")

= 填充符号,空余空间填充

^ 居中对齐

20 长度/宽度20

输出 =======Python=======

print("{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425))
110101001,Ʃ,425,651,1a9,1A9

3.4 time库

time库是Python中处理时间的标准库:

-计算机时间的表达

-提供获取系统时间并格式化输出的功能

-提供系统精确计时功能,用于程序性能分析

1、time库的使用
函数 描述
time() 获取当前时间戳,即计算机内部时间值,浮点数
ctime() 获取当前时间并以易读方式表示,返回字符串
gmtime() 获取当前时间表示为计算机可以处理的时间格式
import time
print(time.time())
print(time.ctime())
print(time.gmtime())


#输出结果:1599469094.3461773
#输出结果:Mon Sep  7 17:05:08 2020
#输出结果:time.struct_time(tm_year=2020, tm_mon=9, tm_mday=7, tm_hour=9, tm_min=2, tm_sec=26, tm_wday=0, tm_yday=251, tm_isdst=0)

时间戳表示的是1970年1月1日到当前这一时刻为止以秒为单位的时间

2、时间格式化

-格式化:类似于字符串格式化,需要由展示模板

-展示模板由特定的格式化控制符组成

函数 描述
strftime(tpl,ts) tpl是格式化模板字符串,用来定义输出效果。ts是计算机内部时间类型变量
strptime(tpl,ts) str是字符串形式的时间值,tpl是格式化模板字符串,用来定义输入效果
import time
t = time.gmtime()
print(time.strftime("%Y-%m-%d-%H:%M:%S",t))
timestr = '2020-09-07 09:16:51'
print(time.strptime(timestr,"%Y-%m-%d %H:%M:%S"))


#输出结果:2020-09-07-09:15:50
#输出结果:time.struct_time(tm_year=2020, tm_mon=9, tm_mday=7, tm_hour=9, tm_min=16, tm_sec=51, tm_wday=0, tm_yday=251, tm_isdst=-1)
格式化字符串 日期/时间说明 值范围和实例
%Y 年份 0000~9999,例如2020
%m 月份 01~12
%B 月份名称 January~December
%b 月份名称缩写 Jan~Dec
%d 日期 01~31
%A 星期 Monday~Sunday
%a 星期缩写 Mon~Sun
%H 24小时制 00~23
12小时制 01~12
上/下午 AM,PM,例如:PM
%M 分钟 00~59
%S 00~59
3、程序计时

sleep() 产生时间

perf_counter() 测量时间

函数 描述
perf_counter() 返回一个CPU级别的精确时间计数值,单位为秒,其起点不确定,需连续调用差值才有意义
import  time
start = time.perf_counter()
time.sleep(2.2)
end = time.perf_counter()
print(end - start)

#输出:2.1999606000000003

3.5 文本进度条

#TextProBarV1.py
import time
scale = 10
print("{0:-^20}".format("执行开始"))
for i in range(scale+1):    
	a = '*'*i    
	b = '.'*(scale-i)    
	c = (i/scale)*100    
	print("{:3.0f}%[{}->{}]".format(c,a,b))    time.sleep(0.5)
print("{0:-^20}".format("执行结束"))


#输出结果:
--------执行开始--------
  0%[->..........]
 10%[*->.........]
 20%[**->........]
 30%[***->.......]
 40%[****->......]
 50%[*****->.....]
 60%[******->....]
 70%[*******->...]
 80%[********->..]
 90%[*********->.]
100%[**********->]
--------执行结束--------
import time
for i in range(101):   									print("\r{:3}%".format(i),end="")    
	time.sleep(0.1)
#TextProBarV2.py
import time
scale = 50
print("执行开始".center(scale//2, "-"))
start = time.perf_counter()
for i in range(scale+1):    
	a = '*'*i    
	b = '.'*(scale-i)    
	c = (i/scale)*100    
	dur = time.perf_counter()-start    					print("\r{:^3.0f}%[{}-{}]{:.2f}s".format(c, a, b, dur), end='')    
	time.sleep(0.1)
print("\n执行结束".center(scale//2, '-'))

第四章 程序控制

4.1分支结构

1、单分支结构

根据判断条件结果而选择不同的前进路径的运行方式

if <条件>:

<语句块>

2、二分支结构

根据条件判断结果而选择不同进行的方式

if <条件>:

<语句块1>

else:

<语句块2>

#紧凑形式

<表达式1> if <条件> else <表达式2>

3、多分支结构

if <条件1>:

<语句块1>

elif <条件2>:

<语句块2>

.......

else:

<语句块n>

#条件组合

and、or、not

4、程序的异常处理
#异常的简单处理

try:

<语句块1>

except:

<语句块2>

or

try:

<语句块1>

except <异常类型>:

<语句块2>

#异常的高级処理

try:

<语句块1>

except:

<语句块2>

else:

<语句块3> #此语句在不发生异常时执行

finally:

<语句块4> #此语句一定会执行

4.2 身体的BMI指数

#CalBMI_V1.py
height, weight = eval(input("请输入身高(米)和体重(kg),并使用逗号隔开:"))
bmi = weight/pow(height,2)
print("BMI数值为:{0:.2f}".format(bmi))
if bmi <18.5:
	who1 = "偏瘦"
	who2 = "偏瘦"
elif 18.5<=bmi<24:    
	who1 = "正常"    
	who2 = "正常"
elif 24<=bmi<25:    
	who1 = "正常"    
	who2 = "偏胖"
elif 25<=bmi<28:    
	who1 = "偏胖"    
	who2 = "偏胖"
elif 28<=bmi<30:    
	who1 = "偏胖"    
	who2 = "肥胖"
else:    
	who1 = "肥胖"    
	who2 = "肥胖"
print("BMI指标为:国际{},国内{}".format(who1,who2))


#输出结果:
请输入身高(米)和体重(kg),并使用逗号隔开:1.81,85
BMI数值为:25.95
BMI指标为:国际偏胖,国内偏胖

4.3 程序的循环结构

1、遍历循环

for <循环遍历> in <遍历结构>:

<语句块>

for c in s: #s是字符串,c表示一个可以装字母的容器,此句话意思是遍历字符串每一个字符

<语句块>

for item in []:

<语句块>

for line in file:

<语句块>

2、无限循环

while <条件>:

<语句块>

一直运行,直到不满足while条件

3、循环控制保留字

break 和 continue

break跳出并结束当前循环,执行循环后的语句,break只能跳出一层循环

continue跳出当次循环,继续执行后续次数循环

4、循环的高级用法else

for <> in <>:

<>

else:

<>

or

while <>:

<>

else:

<>

上述语句表示,如果没有执行break,程序正常执行,则会继续执行else,否则不会执行

4.4 random库

random库是使用随机数的Python标准库,无需安装

-其产生的随机数并不随机,而是一种伪随机数,是采用梅森旋转算大生成的(伪)随机序列中的元素

1、基本随机数函数
函数 描述
seed(a=None) 初始化给定的随机数种子,默认为当前系统时间,random.seed(10)#产生种子10的对应的序列
random() 生成一个(0.0,1.0)之间的随机小数
randint(a,b) 生成一个[a,b]之间的整数
randrange(m,n[,k]) 生成一个[m,n)之间以k为步长的随机整数
getrandbits(k) 生成一个k bit长的随机整数
uniform(a,b) 生成一个[a,b]之间的随机小数
choice(seq) 从列表seq[]中随机选择一个元素
shuffle(seq) 将列表seq[]中元素随机排列,返回打乱后的序列
import random
random.seed(10)
print(random.random())

#输出结果:0.5714025946899135

默认种子为当前系统时间,如果设定种子,则随机过程可以再现

4.5 圆周率的计算

数学家们给出了圆周率的计算公式:

公式太长,请自己百度一下,本次编程采用此公式

工程上的蒙特卡罗方法:

直径为d的圆与边长为d的正方形的1/4中撒点,那么数量足够多时可算出圆与正方形的面积比,进而计算出圆周率

#公式法
#CalPiV1.py
pi = 0
N = 100
for k in range(N):    
	pi += 1/pow(16,k)*(\        #\表示在公式过长时可以换行
	4/(8*k+1)-2/(8*k+4)-\        
	
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值