Python自学笔记

这篇博客是作者的Python自学笔记,涵盖了基本语法元素,如缩进和注释,以及基本图形绘制。文章详细讲解了字符串的使用、列表类型的操作,如切片和元素判断,并介绍了输入输出函数input()和print()。此外,还涉及到基本数据类型,如浮点数、复数和字符串,以及分支循环结构和函数的使用。博客内容还提到了Python的Turtle库和文件操作,强调了编程中的思想和方法的重要性。

Python自学笔记

从9.1~9.8 学习python基本语法

学习链接: Python语言程序设计(北理)

基本语法元素

#温度转换
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("输入格式错误")

bug:

IndentationError:expected an indented block

明此处需要缩进,你只要在出现错误的那一行,按空格或Tab(但不能混用)键缩进就行。一句话 有冒号的下一行往往要缩进,该缩进就缩进

注释
单行注释以#开头,多行注释以"""开头和结尾

缩进
缩进表达程序的格式框架

  • 严格明确缩进是语法的一部分,缩进不正确程序运行错误
  • 所属关系表达代码间包含和层次关系的唯一手段
  • 长度一致程序内一致即可,一般用4个空格或1个TAB

字符串的使用
使用[ ]获取字符串中一个或多个字符
-索引∶返回字符串中单个字符<字符串>[M]
“请输入带有符号的温度值:”[0]或者TempStr[-1]
-切片:返回字符串中一段字符子串<字符串>[M:N]
“请输入带有符号的温度值:”[1:3]或者TempStr[0:-1]
包括起点不含终点

python切片详解
字符串逆序 “字符串”[: : -1]

列表类型
由0个或多个数据组成的有序序列
-列表使用[]表示,采用逗号分隔各元素
[ ‘F’,‘f’]表示两个元素’F’和’f’
-使用保留字in判断一个元素是否在列表中
TempStr[-1] in [‘C’, ‘c’] 判断前者是否与列表中某个元素相同
也就是TempStr[-1] 是不是‘C’或‘c’

输入函数input()

<变量> = input(<提示信息字符串>) 用户输入的信息以字符串类型保存在<变量>中

输出函数print()

print()总结

-print()函数的格式化:

print(*objects, sep=' ', end='\n', file=sys.stdout)

参数的具体含义如下:

objects --表示输出的对象。输出多个对象时,需要用 , (逗号)分隔。
sep – 用来间隔多个对象。
end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符。
file – 要写入的文件对象。
如print(“转换后的温度是{:.2f}C”.format©)

{}表示槽,后续变量填充到槽中,注意分隔符是“ . ”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pKVWKWEa-1603536749174)(D:\QQdoc\Markdown\20170910165845679.png)]

print(“Hello:”,i) 输出默认在字符串之间+空格

评估函数-eval()
去掉参数最外侧引号并执行余下语句的函数,能将任何字符串形式信息变成python语句

基本图形绘制

#PythonDraw.py
import turtle      #引用turtle库
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)    #后退
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)   #设定角度为-40°
for i in range(4): #循环4次绘制关节
    turtle.circle(40, 80)
    turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)      #前进
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()      #手动退出图形界面

Turtle库详解

库引用

import<库名>from<库名> import *import<库名>as<库别名>
<库名>.<函数名>(<函数参数>)<函数名>(<函数参数>)<库别名>.<函数名>(<函数参数>)
不会重名可能重名不会重名且代码量少

界面

turtle. setup(width,height,startx,starty)
前两个参数是窗体的长宽,后两个参数是左上角在屏幕的坐标,缺省时在中央

循环语句

for<变量>in range(<参数>)
<被循环执行的语句>

基本数据类型

浮点类型

浮点数间运算存在不确定尾数使用,用round()函数辅助
round(x,d):对x四舍五入,d是小数截取位数

科学计数法

4.3e-3 :0.0043 9.6E5 :960000.0

复数类型

z= 1.23e-4 + 5.6e+89 j
z.real获得实部 z.imag获得虚部

数值运算

x/y 是自然的商 如: 10/3等于 3.333333…
x//y 是整数除法 如: 10//3等于3

操作符描述
-xx的负值
x % y余数,模运算 10%3 结果是1
x ** y幂运算 x的y次方 y为小数是为开方
函数描述
divmod(x,y)商余,(x//y,x%y),同时输出商和余数
divmod(10,3)结果为(3,1)
pow(x, y, [,z])幂余,(x**y)%z,[…]表示参数z可省略
pow(3, pow(3,99),10000)结果为4587
max(x1,x2,…)返回参数最大值
int(x)去尾变整数,支持字符串

GRIT (坚毅): perseverance and passion for long-term goals

字符串

操作符及使用描述
x +y连接两个字符串x和y
n*x 或 x *n复制n次字符串x
x in s如果x是s的子串,返回True,否则返回False

str(x) 增加引号成为字符串
eval(x) 去掉引号

len(x) 返回字符串长度

方法描述
str.lower()或str.upper()返回字符串的副本,全部字符小写/大写 “AbCdEfGh”.lower()结果为"abcdefgh"
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副本,所有old子串被替换为new python".replace(“n”,“n123.io”)结果为 “python123.io”
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”#主要用于字符串分隔等

format()方法的格式控制

槽内部对格式化的配置方式
{<参数序号> :<格式控制标记>}

<填充><对齐><宽度>< , ><.精度><类型>
引导符号填充单个字符<左对齐
<右对齐
^居中对齐
输出宽度千位分隔符小数精度or
最大数去长度
整数浮点数

time库

time.ctime() 返回当前时间,字符串
rime.gmtime() 获取当前时间,表示为计算机可处理的时间格式

perf_conter() 返回一个CPU级别的精确时间计数值,单位为秒,由于这个计数值起点不确定,连续调用差值才有意义

-刷新的本质是:用后打印的字符覆盖之前的字符 print()默认换行

#文本进度条 实例完整效果
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,'-'))

分支循环结构

紧凑二分支 <表达式1> if<条件>else<表达式2>

guess = eval(input())
print("猜{}了".format("对"if guess==99 else"错"))

条件组合

and:与 or:或 not:非 (not x)

异常处理

try:
	<1>
except<异常类型>
	<2>#<1>异常
else:
    <3>#<1>不异常
finally:
    <4>#一定执行
    #计算IBM
    #注意多个参数的输入和赋值
    height, weight = eval(input("请输入身高(米)和体重\(公斤)[逗号隔开]: "))
    bmi = weight / pow(height, 2)
    print("BMI 数值为:{:.2f}".format(bmi))
    nat = ""
    if bmi < 18.5:
        nat = "偏瘦"
    elif 18.5 <= bmi < 24:
        nat = "正常"
    elif 24 <= bmi < 28:
        nat = "偏胖"
    else:
        nat = "肥胖"
    print("BMI 指标为:国内'{0}'".format(nat))

遍历循环

for <循环变量>in <遍历结构>:
	<语句块>
else:
    <语句块>(正常退出时执行)

随机数

seed() 初始化给定的随机数种子,默认为当前系统时间 可以使得程序复现
random() 生成0~1之间的产生
randint(a, b) 生成[a, b]之间的随机整数

用 \ 可以换行书写

函数

def <函数名>(<参数(0个或多个)>):
	<函数体>
	return<返回值>

def<函数名>(<非可选参数>,<可选参数>): (可选参数可以给默认值)

传参:

def fact(n,m=1):
s = 1
for i in range(1,n+1):
s *= i
return s//m, n , m #多个返回值
#输出
>>>fact(105)
(725760,105)#元组类型
>>> a,b,c = fact(10,5)
>>>print(a,b,c)
725760 10 5

位置传递 fact(10,5)
名称传递 fact(m=5, n=10)

函数可以返回多个值

global 声明全局变量

lambua() 函数是─种匿名函数,即没有名字的函数,返回函数名作为结果,用于定义简单的、能够在一行内表示的函数
<函数名>= lambda<参数>:<表达式>

递归调用:
函数+分支结构
递归链条
递归基例

PyInstaller库概述
将.py源代码转换成无需源代码的可执行文件
简单的使用:
(cmd命令行)pyinstaller -F <文件名.py>
如: pyinstaller -i curve.ico -F SevenDigitsDrawV2.py
在dist下生成exe文件

PyInstaller库参数功能
-F, --onefile在dist文件夹中只生成独立的打包文件
-i<图标文件名.ico>指定打包程序使用的图标(icon)文件

组合数据类型

集合:

集合是多个不同元素的无序组合,不可更改
用大括号表示,元素间用逗号分隔,建立集合类型用{}或 set()(建立空集合类型)

操作符及应用描述
S|T返回一个新集合,包括在集合S和T中的所有元素
S-T返回一个新集合,包括在集合S但不在T中的元素
S&T返回一个新集合,包括同时在集合S和T中的元素
S^T返回一个新集合,包括集合S和T中的非相同元素
S<=T或S<T返回True/False,判断S和T的子集关系
S =| T更新集合S,包括在集合S和T中的所有元素

数据去重:集合类型所有元素无重复

#列表数据去重
>>>ls = ["p""p""y", "y"123]
>>>s = set(ls) #利用了集合无重复元素的特点
{f'p''y'123}
>>>lt = list(s) #将集合转换为列表
[ 'p''y'123]
序列:

序列常用函数

序列是具有先后关系的一组元素,是一维元素向量,元素类型可以不同
类似数学元素序列:Se,S1,…,Sn-1,元素间由序号引导,通过下标访问序列的特定元素

函数和方法描述
s[i]索引
len(s)返回序列s的长度
min(s)返回序列s的最小元素,s中元素需要可比较
max(s)返回序列s的最大元素,s中元素需要可比较
s.index(x)或s.index(x,i, j)返回序列s从i开始到j位置中第一次出现元素x的位置
s.count(x)返回序列s中出现x的总次数

方括号 [] 或者list() 真正创建一个列表,赋值仅传递引用

ls[i] = x 替换列表ls中的第i个元素为x
del ls[i] 删除列表ls中的第i个元素x
.index(x) 返回x的索引

字典类型:

字典类型是"映射"的体现,键值对:键是数据索引的扩展
字典是键值对的集合,键值对之间无序,采用大括 {} f和dict()创建,键值对用冒号:表示
{<键1>:<值1>,<键2>:<值2>,…,<键n>:<值n>}

空的 {} 用于生成空字典类型,空集合类型只能使用set()

函数或方法描述
d.get(k,)print键k存在,则返回相应值,不在则返回值
d.pop(k,)键k存在,则取出相应值,不在则返回值
d.popitem()随机从字典d中取出一个键值对,以元组形式返回
d.clear()删除所有的键值对

jieba库

>>>jieba.lcut("中国是一个伟大的国家")
['中国','是','一个','伟大','的','国家']

文件和数据

文件
文件的打开模式描述
‘r’只读模式,默认值,如果文件不存在,返回FileNotFoundError
‘w’覆盖写模式,文件不存在则创建,存在则完全覆盖
‘x’创建写模式,文件不存在则创建,存在则返回FileExistsError
‘a’追加写模式,文件不存在则创建,存在则在文件最后追加内容
‘b’二进制文件模式
‘t’文本文件模式,默认值
‘+’r/w/x/a一同使用,在原功能基础上增加同时读写功能

内嵌函数map():
将第一个参数的功能作用于第二个参数的每个元素

数据

列表:有序数据 集合:无序数据

#从特殊符号分隔的文件中读入数据  中国$美国$日本$德国$法国$英国$意大利
txt = open(fname).read()
ls =txt.split("$")
f.close()
#采用特殊分隔方式将数据写入文件
ls - ['中国",‘美国",'日本']
f = open(fname,'w')
f.write('$'.join(ls)) #在列表ls中每个元素之间插入$作为分隔
f.close()

程序设计方法

自顶向下:总问题-> 若干小问题 分而治之
自底向下:逐步组建复杂系统 模块化集成

计算机思维:模拟过程,计算机进行大量运算

模块化设计:
-引擎+配置:程序执行和配置分离,将可选参数配置化
-将程序开发变成配置文件编写,扩展功能而不修改程序
-关键在于接口设计,清晰明了、灵活可扩展

后记

编程不重要,思想才重要!
-认识自己∶明确自己的目标,有自己的思想(想法)
-方式方法:编程只是手段,熟练之,未雨绸缪为思想服务
中国 美 国 美国 日本 德 国 德国 法国 英 国 英国 意大利
txt = open(fname).read()
ls =txt.split("KaTeX parse error: Expected 'EOF', got '#' at position 14: ") f.close() #̲采用特殊分隔方式将数据写入文件…’.join(ls)) #在列表ls中每个元素之间插入$作为分隔
f.close()


### 程序设计方法

自顶向下:总问题-> 若干小问题  分而治之
自底向下:逐步组建复杂系统      模块化集成

计算机思维:模拟过程,计算机进行大量运算

模块化设计:
-引擎+配置:程序执行和配置分离,将可选参数配置化
-将程序开发变成配置文件编写,扩展功能而不修改程序
-关键在于接口设计,清晰明了、灵活可扩展

### 后记

编程不重要,思想才重要!
-认识自己∶明确自己的目标,有自己的思想(想法)
-方式方法:编程只是手段,熟练之,未雨绸缪为思想服务
-为谁编程:将自身发展与祖国发展相结合,创造真正价值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值