蒟蒻的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的头文件
  • 三种方法:
  1. import <库名>
    +<库名>.<函数名>(<函数参数>)
    ——繁琐,不重名
  2. from <库名> import *——引用整个库/
    from <库名> import <函数名>——引用一个函数
    +<函数名>(<函数参数>)
    ——不繁琐,可能重名
  3. 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()函数

  1. 关于for i in range(N): (小心掉了 : )
    相当于for i in [1,2,3,4]
for <变量> in range(<参数>):#变量会从 0 到 参数-1 共 参数 次<被循环执行的语句>#这段缩进的代码将被循环执行
  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(有时间就看就更新,尽量让笔记容易懂,蟹蟹各位大神不吝赐教)相关推荐

  1. python字符串去头尾_悉尼大学某蒟蒻的Python学习笔记

    About me 本蒟蒻是悉尼大学计算机科学大一的学生,这篇博客记录了学习INFO1110这门课的一些心得,希望能对大家有帮助. To start with 因为计算机只能识别机器语言,所以我们需要编 ...

  2. 一只蒟蒻的A*学习笔记

    更多请见DUMBLOG 一只蒟蒻的A* 学习笔记 A* 是啥?? A* 用来干啥?? 首先,A-Star 算法只能用在数据规模很大的搜索题中,这时直接用 BFS 会超时,而利用 启发函数(估价函数) ...

  3. 北京理工大学大学计算机mooc答案,C语言程序设计—北京理工大学MOOC提交作业

    北京理工大学MOOC在线提交的编程作业 第一周作业 [练习1]HelloWorld "Hello World"示例程序最早出现于1972年,由贝尔实验室成员Brian Kernig ...

  4. 北京理工大学计算机学院张教授,北京理工大学嵩天教授做客信息学院

    2020年11月8日上午,应湖南师范大学信息科学与工程学院邀请,北京理工大学计算机学院博士生导师嵩天教授在中和楼信息学院523会议室做了题为"坚持问题导向--建设新时代一流计算机基础系列课程 ...

  5. 凤凰网股票数据定向爬虫——改编自北京理工大学嵩天老师的课程实例

    本文导航 前言 功能描述 技术路线 数据网站 程序结构设计 实现过程 实现结果 代码展示 可能遇到的问题 写在后面 前言 最近看到嵩天老师**<python网络爬虫与信息提取>的股票数据定 ...

  6. Python数据分析与展示第3周学习笔记(北京理工大学 嵩天等)

    入门学习马上结束辽. 1.Pandas库 import pandas as pd 两个数据类型:Series,DataFrame Series类型:数据+索引 自定义索引 b = pd.Series( ...

  7. 北京理工大学-嵩天python语言程序设计-9-Python计算生态概览

    第九章 Python计算生态概览 9.1从数据处理到人工智能 9.2实例15霍兰德人格分析雷达图 9.3从web分析到网络空间 9.4从人机交互到艺术设计 9.5实例16:玫瑰花绘制 方法论 -概览P ...

  8. 淘宝商品比价定向爬虫-Python网络爬虫与信息提取-北京理工大学嵩天教授

    功能描述 目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格: 理解:淘宝的搜索接口.翻页的处理: 以课程中的搜索书包为例,对应的url如下: (1)起始页: (2)第二页:最后的s=44: (3 ...

  9. 北京理工大学-嵩天python语言程序设计-8-程序设计方法学

    本节的主要内容包括: 8.1体育竞技分析 8.2Python程序设计思维 8.3Python第三方库安装 8.4 os库的基本使用 8.5第三方库自动安装脚本 本节的主要目标 -方法论 理解并掌握一批 ...

最新文章

  1. 题解 UVA10298 【Power Strings】
  2. cambridge ccaf potential supervisors!
  3. WCF添加服务失败。服务元数据可能无法访问。请确保服务正在运行并且正在公开元数据。...
  4. 关于python中带下划线的变量和函数 的意义
  5. 如何手工配置DBControl
  6. 为了更准确的验证码而奋斗-云大urp教务系统大作战(1.5)
  7. mysql:mysql安装及一些配置和图形界面介绍
  8. 无人驾驶汽车系统入门(十四)——ROS入门与实践(1)
  9. python读取lmdb文件_LMDB文件读取器
  10. 【LaTeX入门】15 在文章中添加脚注
  11. 利用CVE-2017-8464漏洞制作病毒U盘攻击
  12. 腾讯开放平台 集成qq登录
  13. igraph study
  14. 第六章、面向对象基础--中(续)构造器、this、包、eclipse的使用
  15. 第2章:几何方面:六边形面积
  16. 线性代数导论23——微分方程和exp(At)
  17. 线阵相机的优势是什么?如何选择线阵相机?
  18. elasticsearch两个启动报错的解决
  19. 算法题/青蛙跳台阶问题
  20. win11 中Windows安全中心消失等引出的问题合集解决

热门文章

  1. Nubia Z9 mini使用体验
  2. 使用java开发MQTT客户端接收消息
  3. 弘辽科技:拼多多推广被限制有什么办法解除吗?有何原因?
  4. Drools6.4动态加加载规则之(三)kie-wb与kie-server的集群应用
  5. zznuoj 1075 聚餐人数统计
  6. js中‘0’到底是 true 还是 false
  7. 解决mysql affected rows error: 2
  8. qq邮箱smtp服务地址
  9. 树莓派无法开启,ACT灯不亮,PWR(红灯)亮
  10. 使用飞桨7行完成核酸照片检测统计