蒟蒻的python 学习笔记 ——北京理工大学嵩天mooc(有时间就看就更新,尽量让笔记容易懂,蟹蟹各位大神不吝赐教)
蒟蒻的python 学习笔记
- 前言
- 课一:python语言程序设计
- 第一周:python 基本语法元素
- 1.1 程序设计基本方法
- 1.2 python 环境配置
- 1.3 实例1:温度转换
- 1.4 python程序语法元素分析
- 1.5 练习与测验注意点
- 1.温度转换
- 2.数字形式转换
- 3.温度转换2
- 4.货币转换
- 5.Hello World的条件输出
- 6.M OP N
- 第二周:python基本图形绘制
- 2.1 深入理解python语言
- 2.2 实例2:python 蟒蛇绘制
- 2.3 模块1:turtle库的使用
- 1. 概述
- 2. 库
- 3 .turtle的绘图窗体
- 4 . turtle的空间坐标体系
- 5. turtle角度坐标体系
- 6. RGB色彩体系
- 2.4 turtle程序语法元素分析
- 1. 库引用和import
- 2. turtle 画笔控制函数
- 3. turtle的运动控制函数
- 4. turtle的方向控制函数
- 5. 循环语句与range()函数
- 6. 分析绘制
- 2.5 由于往期课程没有公布练习,一段时间放题后再补全
- 第三周:
- 3.1数字类型及操作
- 1. 整数类型
- 2. 浮点数类型
- 3. 复数类型
- 4. 数值运算操作符
- 5. 数值运算函数
- 3.2 实例3:天天向上的力量
- 3.3 字符串类型及操作
- 暂时搞acm,先记录老师的笔记
- 关于if else
- 关于交换ab
- 关于字符串
- 关于函数
- 关于循环
前言
版权声明:
本文受CC BY-NC-SA 4.0知识产权协议保护(署名 — 非商业性使用 — 相同方式共享)
除此以外,将本文任何内容用于其他用途时,须征得本文作者许可。
(可csdn私信)
笔记介绍:
学习记录,蒟蒻一枚的,预计2个月内更完。
作者特点:
1.喜欢研究语法问题,可能有各种奇怪的想法,有的地方会尝试地很透彻(或者最后说我也不知道为什么qwq,向大神求教)
2.真的蒟蒻非常非常非常蒟蒻,能从萌新的角度,说萌新容易懂的话。个人喜欢讲大白话啦~~~
3.作者很萌新,发现错误,请访问的您不吝赐教,帮忙指出,蟹蟹!
4.作者喜欢人,很外向,喜欢温暖,喜欢朋友~
加油冲冲冲,让我们一起努力,共同进步叭!!! ** ^ _ ^ **
课一:python语言程序设计
课程链接:link
第一周:python 基本语法元素
1.1 程序设计基本方法
- 和以前的c不一样,python 是脚本语言,使用解释器,逐条翻译
静态语言 | 脚本语言 | |
---|---|---|
翻译工具 | 编译器 ,先编译再运行 | 解释器,逐条翻译 |
举例 | C | python |
1.2 python 环境配置
测试代码:
print("hello")
r=25
area=3.1415*r*r
print(area)
print("{:.2f}".format(area))
import turtle
turtle.pensize(2)
turtle.circle(10)
turtle.circle(40)
turtle.circle(80)
turtle.circle(160)
from turtle import *
color('red','red')
begin_fill()
for i in range(5):fd(200)rt(144)end_fill()
1.3 实例1:温度转换
'''hahaha'''
t=input("请输入带符号的温度")#注意用英文符号
#因为下面有格式错误,所以这里不print("转换后的温度是")
if t[-1] in ['f','F']:#如果最后一个(好像是)在这(f,F)之间C=(eval(t[0:-1])-32)/1.8#[0:-1]:除了最后一个以外eval:执行一个字符串表达式,并返回表达式的值。print("转换后的温度是{:.2f}C".format(C))#这个C就是前面定义的变量C,格式化输出
elif t[-1] in ['c','C']:F=1.8*eval(t[0:-1])+32print("转换后的温度是{:.2f}F".format(F))
else:print("格式错误")
1.用:分支
2.用elif不是else if
3.#用于注释
4.似乎直接处理字符串
1.4 python程序语法元素分析
缩进
python的缩进是严格明确的,表达层次关系。
(缩进多或少一条真的会运行不了)
程序内缩进长度一致。注释
单行注释:
#。。。。。
多行注释:
'''。。。。。。。。。。。 。。。。。。注意英文单引号'''
注释,自己写,便于人阅读(c里面编译时视为空白)
- 变量
表示的称为:标识符
命名:关联标识符的过程
命名规则:
字母、数字、下划线、汉字等组成(比c广)
tip:区分大小写,不能数字开头,不能是保留字(如if,又叫关键字,防止冲突(c也是)) - 保留字
python自带的33个保留字,有固定的含义。
不能做变量名
(用IDLE的字体颜色可以区分,不用刻意记忆) - 数据类型
即数据的类型
用不同的数据形式,告诉计算机这是不同类型的数据
1.字符串
从0开始排序。
索引:不仅可以正向递增,0,1,2…
还可以反向递减,…-3,-2,-1
取法:不仅有t[0],t[-1]索引
还有t[0:-1]切片,
t[a:b]表示从a开始到b之前,a<=范围<b,a,b不需要同号,但是实际位置一定要a在b前(否则运行时越界)。
表示方法:字符串类型可以" "或’ ‘,没有区别,和c不一样(但是’ "不行)
2.数字类型
包括整数,浮点数
3.列表
由若干数据组成的有序数列
表示方法:[ ]表示,中间 , 分隔
*使用 in 判断一个元素是否在列表中 - 语句
赋值语句就那样
分支语句中,
提醒一下if,elif,else 判断后的:不能省 - 函数
1.输入函数
<变量>= input(<提示字符串>)
2.输出函数
print(<输出字符串>)
*可以格式化如:{:.2f}对应.format( C ),把C转为.2f格式,两位有效小数,输出
{}是一个插槽,会把format里面的打进去
{}可以有格式,{:.2f}这样的(整数也会多了两个0)
注意:插槽要和format里提供的变量个数一样
*其中,变成‘ ’:分隔符sep,可以最后sep=’…‘改
最后\n:结束符end,可以最后end=’…‘改
(不必先sep后end)
3.评估函数
eval(<字符串>)
去引号,字符串变为语句,之后用python语句的方式执行
*纠错:unexpected indent :行首不能多空格
invalid syntax:错在一对的符号没有用好,除了缺了一个,"…"…"…“是不行的,要用”…’…’…"区分
1.5 练习与测验注意点
1.温度转换
- : 容易掉,if / elif / else 后的 : ,{:.2f}的:都掉了。。
- if / elif / else : 后可直接写话,不用换行也可以
2.数字形式转换
template = "零一二三四五六七八九"s = input()
for c in s:print(template[eval(c)], end="")
- python中循环,for c in s:
不用设后才用,直接可以凭空弄出一个c,意思是从头到尾充当每一个s中的字符 - print(… , end="~") 的意思是,每次输出的最后输出~
3.温度转换2
- t[1:],可以表示字符串除首字符外的所有字符。
t[a:],可以表示字符串a号之后(包括)的所有字符
t[:a],可以表示字符串a号之前的(不包括)的所有字符 - 这样的表达形式也是成立的
if t[0] == 'F':
- 错误记录:EOL while scanning string literal——字符串以 \ 结尾 或者字符串缺少引号
print("F{:.2f}".format(eval(t[1:])*1.8+32)")
(实际上是最后多打了个 " )
4.货币转换
- CurStr[:3] == “RMB” 也可以,python可以直接比较字符串
- {:.2f}这次又写错了,这次写成2.f了,报Format specifier missing precision
- 发现:不能两句话同一行只留空格
- 发现:十进制非0整数不能以0开头。否则出现错误:invalid token
5.Hello World的条件输出
- int(~)能把 ~转化为int 型
- for 语言不通,不会用。。。
6.M OP N
- input() (别掉了())只会在回车换行时停止,而不会在空格停止(和c不一样)这里一次即可
- python只是要求缩进 , 对于 1 + 1 这样的不要求靠在一起
除了{:.2f},别的都可以加空格
{:_.2f}这样加空格,输出前会多一个空格,且只能多一个空格
这个地方加数字无显示,加符号错误
其他地方加空格也错误
最开头加0,通过,无效果
.af表示保留a位有效数字
print ("{: .2f}" . format ( eval ( input ( ) ) ) )
第二周:python基本图形绘制
2.1 深入理解python语言
计算机语言 | 关注内容 |
---|---|
c | 指针,内存,数据类型 |
Java | 对象,跨平台,运行时 |
c++ | 对象,多态,继承 |
python | 编程逻辑,第三方库 |
*确实比c短多了,还有共享的计算生态
“人生苦短,我用python”
2.2 实例2:python 蟒蛇绘制
实例代码:
import turtle#海龟库
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
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,180)
turtle.fd(40*2/3)
turtle.done()
*非常惊艳,在c的ACLLib图形绘制时,准备工作还那么麻烦,操作的也只是基本几何图形。而这里已经栩栩如生画出了蟒蛇!
2.3 模块1:turtle库的使用
1. 概述
- turtle库:是turtle绘图体系的python实现
- turtle绘图体系:1969年(就?)诞生了,主要用于程序设计入门
- python语言的标准库之一
*可以理解为真的有一个turtle在爬
2. 库
- 标准库:随解释器直接安装到操作系统的功能模块
- 第三方库:需要安装才能使用的功能模块
- 库,包,模块,统称模块
3 .turtle的绘图窗体
- 原点:左上角
- 单位:像素
(和acllib一样) - 安放窗口的函数:
turtle.setup(窗口长度,窗口宽度,与左侧距离,与上侧距离)
*这个数值都要合理,不然界面就会消失,在状态栏里看也是一片空白没有蟒蛇
如下图所示,可看出窗口的左上角是边框的左上角
可省略后两个定位的,省去的,则居中
也可不使用setup函数,控制窗口大小、位置时才用
*这个的意思不是随机大小,而是默认大小(一个正方形),当然,居中
4 . turtle的空间坐标体系
- 绝对坐标
介绍:以窗口中心为原点的,平面直角坐标系
相关函数:turtle.goto(x,y)
——无论turtle在哪里,都去到( x , y )处 - 海龟坐标
介绍:以海龟为原点,前后左右的坐标系
相关函数:
turtle.fd(d)
——向前走d
turtle.bk(d)
——向后走d
turtle.circle(r,angle)
——以海龟左侧的某一个点为圆心(半径r),走曲线(角度angle)
*r为负数则为右侧了哈哈哈
5. turtle角度坐标体系
- 绝对角度
介绍:如下表示各角度的数值,正为逆时针转动得出,负数为顺时针转动得出
相关函数:
turtle.seth(angle)
——改变海龟方向到以上的angle(但不行进) - 相对角度
turtle.left(angle)
——海龟向左侧转angle度
turtle.right(angle)
——海龟向右侧转angle度
6. RGB色彩体系
red,green,blue三通道
每色取值范围为0~255整数或0 ~ 1 小数,调色
相关函数:
turtle.colormode(mode)
——切换color的模式,
mode=1.0为小数模式,255为整数模式,默认为小数模式
举例:
turtle.colormode(255)
turtle.color(211,22,11)
如此用法
当然也可以用默认的
turtle.color("blue")
这里面是个字符串
发现:color()和pencolor()一模一样,运行没有区别
2.4 turtle程序语法元素分析
1. 库引用和import
- 库引用:扩充python功能的方式
*如同c的头文件 - 三种方法:
- import <库名>
+<库名>.<函数名>(<函数参数>)
——繁琐,不重名 - from <库名> import *——引用整个库/
from <库名> import <函数名>——引用一个函数
+<函数名>(<函数参数>)
——不繁琐,可能重名 - import <库名> as <库别名>
+<库别名>.<函数名>(<函数参数>)
——不繁琐,不重名,好
*三种情况不能混用,不然说如“turtle未知什么的”
2. turtle 画笔控制函数
画笔操作后一直有效(直到下一次修改),一般成对出现
1.turtle.penup()
别名:turtle.pu()
——抬起画笔,海龟在飞行
*别名相当于c的 #define penup pu ,只是替换名字而已
2. turtle.pendown()
别名:turtle.pd()
——落下画笔,海龟在爬行
3.turtle.pensize(width)
别名:turtle.width(width)
——画笔宽度,海龟的腰围
4. turtle.pencolor(color)
——画笔颜色,海龟在涂装
其中(color)有三种形式:
形式 | 实例 |
---|---|
颜色字符串,小写字母的 | (“purple”) |
RGB的小数值 | (0.63,0.13,0.94) |
RGB的元组值 | ((0.63,0.13,0.94)) |
——切换了colormode后也可以用0~255如此调色,不止小数才可以
3. turtle的运动控制函数
(讲过了,注意一点负数)
turtle.fd(d)
——向前走d,负为向后
turtle.circle(r,angle)
——以海龟左侧的(负为右)某一个点为圆心(半径r),走曲线(角度angle)
4. turtle的方向控制函数
(也讲过了,,,,,,)
turtle.setheading(angle)
别名:turtle.seth(angle)
——改变海龟方向到绝对角度的angle位置
turtle.left(angle)
——海龟向左侧转angle度
turtle.right(angle)
——海龟向右侧转angle度
注意方向控制函数都是不行进,运动控制函数才是。
并且一句一句执行下,也不可能让运动控制函数中途改变既定方向。(可以循环什么的)
5. 循环语句与range()函数
- 关于for i in range(N): (小心掉了 : )
相当于for i in [1,2,3,4]
for <变量> in range(<参数>):#变量会从 0 到 参数-1 共 参数 次<被循环执行的语句>#这段缩进的代码将被循环执行
- 关于range()
用于产生循环计数序列
range(N)相当于[0,1,2,…,N-1]
range(M,N)相当于[M,M+1,M+2,…,N-1]
左包括右不包括
6. 分析绘制
多了一个
turtle.done()
——如果描写方法是文件式的,
绘制程序完成后不自动退出,而是手动关闭退出
能留住窗口
*如同system(“pause”)
2.5 由于往期课程没有公布练习,一段时间放题后再补全
默写的实例代码:
import turtle as t
t.setup(650,350,200,200)
t.pu()
t.fd(-250)
t.pensize(25)
t.pencolor("blue")
t.pd()
t.seth(-40)
for i in range(4):t.circle(40,80)t.circle(-40,80)
t.circle(40,80/2)
t.fd(40)
t.circle(15,180)
t.fd(30)
第三周:
3.1数字类型及操作
1. 整数类型
优点:可正可负,无范围限制
进制 | 前缀表示 |
---|---|
十进制 | 无前缀 |
二进制 | 0b,0B |
八进制 | 0o,0O |
十六进制 | 0x,0X |
2. 浮点数类型
- 取值范围:-10e308 ~ 10e308
- 精度数量级:10e(-16)
注意:存在不确定位数(因为二进制存储与十进制实际值的差别) - 解决不确定位数的round函数:比较时,保留小数点后若干位四舍五入
如:
(也说明判断句的输出是True和False)
>>> round(0.1+0.2,2)==0.3
True
>>> 0.1+0.2==0.3
False
- 科学计数法x*10y写为 xey ,属于浮点数,注意y只能是整数
3. 复数类型
- 只有py有复数类型
- 表示:a+bj (J也可以)或者 complex(a,b),效果一样
注意:b必须要有,为1也不能省 - 对于复数z:
实部:z.real
虚部:z.imag
4. 数值运算操作符
操作符及使用 | 描述 |
---|---|
x+y | 加 |
x-y | 减 |
x*y | 乘 |
x/y | 除(小数结果) |
x//y | 除(结果取整数丢小数) |
+x | x本身 |
-y | y的负值 |
x%y | 取余 |
x**y | x^y |
x+=y | x=x+y |
x-=y | x=x-y |
x*=y | x=x*y |
x/=y | x=x/y |
x//=y | x=x//y |
x%=y | x=x%y |
x**=y | x=x^y |
- 类型之间可混合运算,生成结果是最“宽”类型:
整数 -> 浮点数 -> 复数
(.0也算小数)
5. 数值运算函数
函数及使用 | 描述 |
---|---|
abs(x) | x的绝对值 |
divmod(x,y) | 商余:输出 ( x//y , x%y ) |
pow(x,y[,z]) | 幂余:没有z,不取余,x** y;有z,结果对z取余,(x**y)%z |
round(x[,d]) | x的约等于(四舍五入),d为保留d位小数(可负,-1为保留至10位)(结果无法增加原本小数位数),默认保留整数即d=0 |
max(x1,x2,…,xn) | 最大值,这n个数中的(至少2个,不可比较复数,下同) |
min(x1,x2,…,xn) | 最小值,这n个数中的 |
int(x) | 若x为字符串,要求eval(x)为整数(否则错),先进行eval()再操作;若x为小数,转换为整数;若x为整数,保留原样 |
float(x) | 若x为字符串,先进行eval()再操作;若x为整数,转换为小数;若x为小数,保留原样 |
complex(x[,y]) | 没y:将x变为复数,增加虚数部分,为x+0j;有y:表示x+yj |
- […]表示其中参数可省略
3.2 实例3:天天向上的力量
第一次用函数
def Day(df):#定义函数的方法,注意:
#注意缩进一格s=1for i in range(365):if i%7 in [6,0]:s*=0.99else:s*=(1+df)return s#返回值
df =0.01#无需main()这样的。注意初始值不能太大了
while Day(df)<37.78:#while的使用df+=0.001#print("{:3f}".format(df))(调试用)
print("{:3f}".format(df))
同时这个问题非常有哲理启发:
GRIT,坚毅,对长期目标的持续激情及持久耐力
GRIT,是获得成功的最重要的因素之一,牢记天天向上的力量
3.3 字符串类型及操作
暂时搞acm,先记录老师的笔记
关于if else
- 紧凑:a=(若对了)if(判断)else(若错了)
- pass:
等于跳过,有一点像continue,但是continue只用于循环,pass用于分支结构。
c语言没有pass,continue也不能用于分支,python有continue。
python中什么都不干必须要pass,和continue不同
关于交换ab
只要
a,b=b,a
不需要弄一个新的变量,不用考虑顺序
关于字符串
关于函数
go=0.011
def f(go):b=1for i in range(365):if i%7 in [0,6]:b-=0.01*belse:b+=b*goreturn b
a=1
for i in range(365):a+=0.01*a
while(f(go)<a):go+=0.001
print("工作日的努力参数是: {:.3f}".format(go))
1.有return
2.有参数,也可全局,但是全局的话不能变值
关于循环
1.range(begin,end,sep):从begin(省略为0)到end,每次走sep步(省略为1)
2.break和continue
和c语言一样
3.循环的else:
若循环没有break,正常结束循环,就进入else
如
for x in range(1,10):if x==11:breakprint(x,end=' ')
else :print(2)#输出1 2 3 4 5 6 7 8 9 2
但是elif无效
蒟蒻的python 学习笔记 ——北京理工大学嵩天mooc(有时间就看就更新,尽量让笔记容易懂,蟹蟹各位大神不吝赐教)相关推荐
- python字符串去头尾_悉尼大学某蒟蒻的Python学习笔记
About me 本蒟蒻是悉尼大学计算机科学大一的学生,这篇博客记录了学习INFO1110这门课的一些心得,希望能对大家有帮助. To start with 因为计算机只能识别机器语言,所以我们需要编 ...
- 一只蒟蒻的A*学习笔记
更多请见DUMBLOG 一只蒟蒻的A* 学习笔记 A* 是啥?? A* 用来干啥?? 首先,A-Star 算法只能用在数据规模很大的搜索题中,这时直接用 BFS 会超时,而利用 启发函数(估价函数) ...
- 北京理工大学大学计算机mooc答案,C语言程序设计—北京理工大学MOOC提交作业
北京理工大学MOOC在线提交的编程作业 第一周作业 [练习1]HelloWorld "Hello World"示例程序最早出现于1972年,由贝尔实验室成员Brian Kernig ...
- 北京理工大学计算机学院张教授,北京理工大学嵩天教授做客信息学院
2020年11月8日上午,应湖南师范大学信息科学与工程学院邀请,北京理工大学计算机学院博士生导师嵩天教授在中和楼信息学院523会议室做了题为"坚持问题导向--建设新时代一流计算机基础系列课程 ...
- 凤凰网股票数据定向爬虫——改编自北京理工大学嵩天老师的课程实例
本文导航 前言 功能描述 技术路线 数据网站 程序结构设计 实现过程 实现结果 代码展示 可能遇到的问题 写在后面 前言 最近看到嵩天老师**<python网络爬虫与信息提取>的股票数据定 ...
- Python数据分析与展示第3周学习笔记(北京理工大学 嵩天等)
入门学习马上结束辽. 1.Pandas库 import pandas as pd 两个数据类型:Series,DataFrame Series类型:数据+索引 自定义索引 b = pd.Series( ...
- 北京理工大学-嵩天python语言程序设计-9-Python计算生态概览
第九章 Python计算生态概览 9.1从数据处理到人工智能 9.2实例15霍兰德人格分析雷达图 9.3从web分析到网络空间 9.4从人机交互到艺术设计 9.5实例16:玫瑰花绘制 方法论 -概览P ...
- 淘宝商品比价定向爬虫-Python网络爬虫与信息提取-北京理工大学嵩天教授
功能描述 目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格: 理解:淘宝的搜索接口.翻页的处理: 以课程中的搜索书包为例,对应的url如下: (1)起始页: (2)第二页:最后的s=44: (3 ...
- 北京理工大学-嵩天python语言程序设计-8-程序设计方法学
本节的主要内容包括: 8.1体育竞技分析 8.2Python程序设计思维 8.3Python第三方库安装 8.4 os库的基本使用 8.5第三方库自动安装脚本 本节的主要目标 -方法论 理解并掌握一批 ...
最新文章
- 题解 UVA10298 【Power Strings】
- cambridge ccaf potential supervisors!
- WCF添加服务失败。服务元数据可能无法访问。请确保服务正在运行并且正在公开元数据。...
- 关于python中带下划线的变量和函数 的意义
- 如何手工配置DBControl
- 为了更准确的验证码而奋斗-云大urp教务系统大作战(1.5)
- mysql:mysql安装及一些配置和图形界面介绍
- 无人驾驶汽车系统入门(十四)——ROS入门与实践(1)
- python读取lmdb文件_LMDB文件读取器
- 【LaTeX入门】15 在文章中添加脚注
- 利用CVE-2017-8464漏洞制作病毒U盘攻击
- 腾讯开放平台 集成qq登录
- igraph study
- 第六章、面向对象基础--中(续)构造器、this、包、eclipse的使用
- 第2章:几何方面:六边形面积
- 线性代数导论23——微分方程和exp(At)
- 线阵相机的优势是什么?如何选择线阵相机?
- elasticsearch两个启动报错的解决
- 算法题/青蛙跳台阶问题
- win11 中Windows安全中心消失等引出的问题合集解决