相关文章:

全网最详细超长python学习笔记、14章节知识点很全面十分详细,快速入门,只用看这一篇你就学会了!

【1】windows系统如何安装后缀是whl的python库

【2】超级详细Python-matplotlib画图,手把手教你画图!(线条颜色、大小、线形、标签)

【3】超级详细matplotlib使用教程,手把手教你画图!(多个图、刻度、标签、图例等)

【4】python读写文件操作---详细讲解!

python入门合集:

python快速入门【一】-----基础语法

python快速入门【二】----常见的数据结构

python快速入门【三】-----For 循环、While 循环

python快速入门【四】-----各类函数创建

python快速入门【五】---- 面向对象编程

python快速入门【六】----真题测试

python学习笔记 jupyter notebook教学,14章节知识点很全面十分详细。

注意事项:本博客是我早起自己写的python笔记word版本,现在转成博客形式,由于ipython文件找不到了,很多代码都会以图片形式出现,不过放心不影响学习,对于比较长的程序例子我回重新贴好代码放入。

python笔记+代码下载地址https://download.csdn.net/download/sinat_39620217/16658064

DLE (Integrated Development and Learning Environment)集成开发与学习环境

编辑器 交互模式---指令直接反馈

编辑器—new file

修改编辑器字体:Options ---  configure  IDLE 

Alt+p 重复上面输入  Alt+n,获取下一部分代码    ctrl+c 终止,整体缩进:tab    整体取消缩进:tab+shift,整体缩进 Ctrl+【 整体取消缩进 Ctrl+】。

1.变量名

py3.7中文可以当作变量名

  1. #引入第三变量
  2. #引用第三变量
  3. X=3
  4. Y=5
  5. x,y=y,x
  6. Print(x,y)

2.字符串

①单引号和双引号----基本差别

.单引号(双引号)用于引用; 转义字符

  1. print("\"let\'s,go\"")
  2. #"let's,go"---------------------转义字符保证引号无别的含义
  3. #显示路径:
  4. Printd:\\das\\dasd\\das\\now)#---反斜杠转义反斜杠

②原始字符串:

  1. print(r"d:dasd\dasda\gdf")     #加r 为原始字符串,及后面字符无含义
  2. #d:dasd\dasda\gdf

字符串相加===字符串拼接:

  1. >>> first_name=("abc")
  2. >>> last_name=("efg")
  3. >>> full_name=first_name+" "+last_name
  4. >>> print(full_name)
  5. abc efg

乘法----代表复制

3.修改字符串大小写等

  1. >>> name=('asd love')
  2. >>> print(name)
  3. asd love
  4. >>> print(name.title()) #只把首字母变大写
  5. Asd Love
  6. >>> print(name.upper()) #全部变大写
  7. ASD LOVE

  1. 删除空白:
  2. >>> massge=("python ")
  3. >>> massge.rstrip() #删除末尾空白
  4. 'python'
  5. >>> massge=(" python ")
  6. >>> massge.lstrip() #删除前面的空白
  7. 'python

其中:函数:Str() 转为字符串

3.Game:基础语法测试程序:

  1. """python game"""
  2. import random
  3. count=10 #猜三次
  4. answer=random.randint(1,10) #生成随机数
  5. while count > 0:
  6. temp = input("猜猜数字")
  7. guess =int(temp)
  8. if guess == answer:
  9. print("right")
  10. break
  11. else:
  12. if guess < answer:
  13. print("小了")
  14. else:
  15. print("大了")
  16. count-=1 #py没有自增自减
  17. print("end")

随机数状态:Random.getstate()  random.setstate()获得原来的数字

 

4.数字类型

浮点数精度有误差0.1+0.2=0.30000004 ;

  • Decimal 十进制模块
  1. decimal.Dicimal(‘’)

保证计算正确性。

  • 运算

//[向下去整]     3/2=1;     -3/2=-2地板除

取余%

  1. divmod() 直接求得 取余和取商(//)
  2. divmod(32)得(11
  3. dicmod(-3,2)得(-2,1
  4. int(3.14)=3 不是四舍五入
  5. complex(“1+2j”)复数;
  6. 1e6 十的六次方 2e6:2十的六次方
  7. Pow(x,y)计算xy次方
  8. X**y 计算xy次方
  9. 其中:powx,y,z)==x**y%z
  • 布尔类型
  1. Bool()false true
  2. 定义为false对象:nonefalse
  3.          值为零的数字类型:00.00J,decimal(0),fraction(0,1)
  4.          空的序列和集合:’’.[],{},set(),range(0)
  5. True==1,false==0;
  1. >>>3and4
  2. 4
  3. >>>4or3
  4. 4
  5. >>> "123" and "456 '
  6. 456
  7. >>> " 123 and 345
  8. 345
  9. >>>

除了逻辑运算,数值也可以

  1. >>>(not1)or(0and1)or(3and4)or(5and6)or(7and8and9)
  2. 4
  1. 短路逻辑:从左往右,只有当第一个操作数的值无法确定逻辑运算的时候,才对第二个数进行求值
  2. And 右边结果最终影响逻辑结果,3true 4也为true 4 or 第一个为4时就已经判断;
  3. O or 3 ==3 o and 3==0and两个都为真为trueor两个都为假为假
  4. not 1 or 0 and 1 or 3 and 4 and 5 and 6
  5. 6
  6. 优先级 not > and >or
  7. not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 ---------------4
  8. 小括号内容:False 0 4 6 9
  9. 因为是or 4
  10. 4

5.列表

①列表normal:

  1. ①列表normal
  2. >>> list = ["a","b","c","d"] #构建列表
  3. >>> print(list)
  4. ['a', 'b', 'c', 'd']
  5. >>> print(list[0]) #找到列表中第一个元素
  6. a
  7. >>> print(list[0].title()) #首字母变大写
  8. A
  9. 修改列表值:直接赋值
  10. >>> list[0]="A"
  11. >>> print(list) massage=[]
  12. ['A', 'b', 'c', 'd'] massage.append("a")
  13. 在列表末尾添加元素:①list.append("e") massage.append("b")
  14. >>> print(list) massage.append("c")
  15. ['A', 'b', 'c', 'd', 'e'] print---['a', 'b', 'c'] #不断为空列表添加内容
  16. 在列表中插入元素:
  17. massage.insert(0,"a") ['a', 'a', 'b', 'c'] 位置+内容化 insert
  18. 在列表中删除元素:>>> del massage[0] #删除位置下标
  19. >>> print(massage)
  20. ['a', 'b', 'c']
  21. Pop()删除末尾元素 ②>>> massage=["a","b","c"]
  22. >>> poped_massage=massage.pop()
  23. >>> print(massage) #pop删除的元素,可以调用
  24. ['a', 'b']
  25. >>> print(poped_massage)
  26. C #并且每使用一次pop,都会删除最后一个。如下:
  27. >>> print(massage.pop())
  28. b
  29. >>> print(massage)
  30. ['a']

弹出列表任意位置元素:

根据值删除元素:

②组织列表

  1. Sort()对列表进行永久性排序
  2. >>> list=["aa","cc","bb"]
  3. >>> list.sort() #按字母排序,不能恢复
  4. >>> print(list)
  5. ['aa', 'bb', 'cc']
  6. >>> list=["aa","cc","bb"]
  7. >>> list.sort(reverse=True) 相反打印排序;
  8. >>> print(list)
  9. ['cc', 'bb', 'aa']
  10. Sorted()临时排序
  11. >>> list=["aa","cc","bb"]
  12. >>> print(sorted(list)) 对原序列不产生影响
  13. ['aa', 'bb', 'cc']
  14. Reverse()倒着打印

③操作列表

①遍历整个列表:

在for循环内可以进行别的·操作

  1. ②数值列表:
  2. ⑴>>> for value in range(1,5):
  3. print(value) #打印1—n-1
  4. ⑵>>> num =list(range(1,6))
  5. >>> print(num)
  6. [1, 2, 3, 4, 5]
  7. >>> num =list(range(1,8,2)) #步进为二
  8. >>> print(num)
  9. [1, 3, 5, 7]
  10. squars = []
  11. for value in range(1,11):
  12. squar = value**2
  13. squars.append(squar) #添加到末尾 squars.append(value**2)
  14. print(squars)
  15. max(),sum(),min()等进行计算
  16. 列表解析
  17. >>> nun=[value**2 for value in range(1,11)]
  18. >>> print(nun)
  19. [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

④部分元素——切片等

  • 切片

0---n-1个

  1. 索引数组,【:,4】则把前面四个打印出来
  2. 2:】则打印第二个开始的所有后面
  3. players =["aa","bb","cc","dd"]
  4. print(players[-2:]) ['cc', 'dd'] -2也可以打印出后面两个
  5. 遍历切片
  6. players =["aa","bb","cc","dd"]
  7. for player in players[:2]: #遍历切片打印出前两个 没有切片则遍历全部全部列表。
  8. print(player)
  9. 复制列表
  10. players =["aa","bb","cc","dd"]
  11. num=players[:] #即复制列表
  12. print(num)
  13. players.append("ee") #后面添加新元素
  14. num.append("ff")
  15. 定义元组
  • 定义元组

元组小括号采用复制的方法修改;遍历所有值

6.If条件

  1. cars=["audi","bmw","aubaru","toyota"]
  2. for car in cars:
  3. if car=="bmw":
  4. print(car.upper())
  5. else :
  6. print(car.title())
  7. 大小写不相等,也会不相等
  8. 条件判断不相等!=,and or的使用;
  9. 检查特定值是否在列表中:

 in  

If elif else ;

可以多个elif,  数值转换str;

都加冒号:·, else可以等价为elif中条件最后一个的填入即可

7.字典

  1. alien={'color':'green','point':'5'}#键color green
  2. print(alien['color'])

也可以在空白alien{}添加

修改字典中的值---直接赋值覆盖

   

  1. alien={'color':'green','point':'5'}#键color green
  2. del alien['point']
  3. print(alien) 删除的键值永远消失
  • 遍历字典键值(一对)

 声明两个变量  items返回一个键值对

遍历所有键  遍历所有值

找出列表中独一无二的元素,并使用这些元素创建一个新的列表等

  • 嵌套,字典列表

切片显示

前三个参数修改字典中存储列表

字典嵌套字典

8.input&while

message=input("输入")

print(message)

输入打印前缀处理

  • 让用户选择合适退出:

 

  • 标志 true来标志程序运行状态
  1. 标志 true来标志程序运行状态
  2. prompt="\n输入信息"
  3. prompt+="\n信息为:"
  4. active=True #使用标志
  5. while active:
  6. message=input(prompt)
  7. if message=="quit":
  8. active=False
  9. else:
  10. print(message) break

 打印奇数

删除列表中特定值:

用户输入填充字典

9.函数定义

  1. ①简单的定义:
  2. def guess():
  3. print("name")
  4. guess() 输出name

  • 关键字实参(顺序注意)
  1. def describ_name(fist,last):
  2. print('name is '+last)
  3. print('baibia is '+fist)
  4. #因为是字符串,输出写上字符串
  5. describ_name('asd','fsd')
  6. #为了保证参数顺序,
  7. describ_name(fist="asd",last="fsd") 默认值
  8. 等效的函数调用:

   

  1. def get_name(first,last,middle_name=''):
  2. if middle_name:
  3. full_name=first+' '+middle_name+' '+last
  4. else:
  5. full_name=first+' '+last
  6. return full_name.title()
  7. message=get_name('ab','cd')
  8. print(message) #返回值
  9. message=get_name('ab','cd','bb')
  10. print(message) #可选实参
  1. ②返回值
  2. def get_name(first,last,middle_name=''):
  3. if middle_name:
  4. full_name=first+' '+middle_name+' '+last
  5. else:
  6. full_name=first+' '+last
  7. return full_name.title()
  8. message=get_name('ab','cd')
  9. print(message) #返回值
  10. message=get_name('ab','cd','bb')
  11. print(message) #可选实参
  12. 返回字典:
  13. def get_name(first_name,last_name):
  14. """构建一个返回字典,包含个人信息"""
  15. person={'first':first_name,'last':last_name}
  16. return person
  17. message=get_name('ab','cd')
  18. print(message) #返回值
  19. 循环+函数,用户输入:→→→→(2192

10.传递列表:

①函数中修改列表,

  1. """信息存储在一个列表中,打印后移到另一个列表中"""
  2. """不使用函数模拟过程"""
  3. un_desigins=["iphone","robot","unkonow"]
  4. completed_models=[]
  5. #模拟打印每个列表内容,全部打印完结束;
  6. #打印原列表内容后转移到列表complete_models中
  7. while un_desigins:
  8. cunrrent_design=un_desigins.pop()
  9. print("model"+":"+cunrrent_design)
  10. completed_models.append(cunrrent_design)
  11. #显示所有信息
  12. print("\nthe following models")
  13. for completed_model in completed_models:
  14. print(completed_model)
  15. model:unkonow
  16. model:robot
  17. model:iphone
  18. the following models
  19. unkonow
  20. robot
  21. iphone
  1. def print_models(un_designs,complete_design):
  2. """打印并复制列表到下一个列表中"""
  3. while un_desigins:
  4. cunrrent_design=un_desigins.pop()
  5. print("model"+":"+cunrrent_design)
  6. completed_models.append(cunrrent_design)
  7. def show_models(completed_models):
  8. print("\nthe following models")
  9. for completed_model in completed_models:
  10. print(completed_model)
  11. un_desigins=["iphone","robot","unkonow"]
  12. completed_models=[]
  13. print_models(un_desigins,completed_models)
  14. show_models(completed_models)
  15. model:unkonow
  16. model:robot
  17. model:iphone
  18. the following models
  19. unkonow
  20. robot
  21. iphone

②传递任意数量实参

  1. def make_pizza(price,*toppings): #*创建一个topping的空元组
  2. """打印顾客菜单配料"""
  3. i=0
  4. for topping in toppings:
  5. i+=1
  6. print('价格'+str(price)+","+"配料"+" "+str(i)+" "+topping)
  7. make_pizza(16,"meat","beaf","sala")
  8. ('meat',)
  9. ('sala',)
  1. def make_pizza(*toppings): #*创建一个topping的空元组
  2. """打印顾客菜单配料"""
  3. i=0
  4. for topping in toppings:
  5. i+=1
  6. print("配料"+" "+str(i)+" "+topping)
  7. make_pizza("meat","beaf","sala")
  8. 配料 1 meat
  9. 配料 2 beaf
  10. 配料 3 sala
  1. def make_pizza(price,*toppings): #*创建一个topping的空元组
  2. """打印顾客菜单配料"""
  3. i=0
  4. for topping in toppings:
  5. i+=1
  6. print('价格'+str(price)+","+"配料"+" "+str(i)+" "+topping)
  7. make_pizza(16,"meat","beaf","sala")
  8. 价格16,配料 1 meat
  9. 价格16,配料 2 beaf
  10. 价格16,配料 3 sala

③使用任意数量的关键字实参

  1. def build_profile(first,last,**user_info):
  2. """创建字典,包含用户所有信息"""
  3. profile={}
  4. profile["first_name"]=first
  5. profile["last_name"]=last
  6. for key,value in user_info.items():
  7. profile[key]=value
  8. return profile
  9. user_profile=build_profile("asd","qwe",
  10. location="beijing",
  11. field="pysicis")
  12. print(user_profile)
  13. {'first_name': 'asd', 'last_name': 'qwe', 'location': 'beijing', 'field': 'pysicis'}
  1. ④导入文件
  2. Import xxx #文件 可以再Python vs都行
  3. Demo
  4. Import pizza #可以调用def 的文件里所有函数
  5. Pizza.make_pizaa(xxxxxx) 需要模块模块名
  6. ②导入特定的函数
  7. Form pizza import make_pizza
  8. make_pizaa(xxxxxx) 不需要指定模块名了
  9. ③把指定调用函数函数名-----自己命名调用
  10. Form pizza import make_pizza as mp
  11. mp(xxxx)
  12. 给模块命名
  13. Import pizza as p

11.类 面相对象编程

①类创建以及属性值等

  1. #创建小狗类别 dog
  2. #包括名字+年龄 行为:蹲下+打滚
  3. #创建类
  4. class Dog(): #首字母大写就是类
  5. def __init__(self,name,age): #两个下划线 __init__方法,初始化变量 self在其他形参前面
  6. """初始化"""
  7. self.name=name #通过传递姓名+年龄,self会自动传递
  8. self.age=age
  9. #以SELF为前缀的昂量可以供类中变量所有方法使用
  10. #获取存贮在形参name中的值,并将其存储到变量name中,变量会被关联到当前创建实例
  11. def sit(self):
  12. """模拟小狗蹲下"""
  13. print(self.name.title()+"小狗下蹲")
  14. def roll_over(self):
  15. """模拟小狗蹲下"""
  16. print(self.name.title()+"小狗打滚")
  17. my_dog=Dog("blue",4)
  18. print("my dog is"+" "+my_dog.name.title())
  19. print("my dog is"+" "+str(my_dog.age)+" "+"years old")
  20. my_dog.sit()
  21. my_dog.roll_over()
  1. my dog is Blue
  2. my dog is 4 years old
  3. Blue小狗下蹲
  4. Blue小狗打滚

汽车例子

  1. #创建一个表示汽车的类,存储汽车的信息,还有一个汇总这些信息的方法 get_descriptive_name
  2. class Car():
  3. def __init__(self,make,model,year):
  4. """初始化汽车属性"""
  5. self.make=make
  6. self.model=model
  7. self.year=year
  8. self.odometer=0
  9. def get_descriptive_name(self):
  10. """返回信息描述"""
  11. long_name=str(self.year)+" "+self.model+" "+self.make
  12. return long_name.title()
  13. def read_odometer(self):
  14. """打印里程数"""
  15. print("this car is "+str(self.odometer)+" km")
  16. def update_odometer(self,odo):
  17. """修改里程数值""" #2通过方法修改里程值,
  18. if odo>=self.odometer:
  19. self.odometer=odo
  20. else:
  21. print("你不可以更改")
  22. my_newcar=Car("audi","a4",2018)
  23. print(my_newcar.get_descriptive_name())
  24. #1.直接修改属性值
  25. my_newcar.odometer=23
  26. my_newcar.update_odometer(24)
  27. my_newcar.read_odometer()
  1. 2018 A4 Audi
  2. this car is 24 km
  1. #创建一个表示汽车的类,存储汽车的信息,还有一个汇总这些信息的方法 get_descriptive_name
  2. class Car():
  3. def __init__(self,make,model,year):
  4. """初始化汽车属性"""
  5. self.make=make
  6. self.model=model
  7. self.year=year
  8. self.odometer=0
  9. def get_descriptive_name(self):
  10. """返回信息描述"""
  11. long_name=str(self.year)+" "+self.model+" "+self.make
  12. return long_name.title()
  13. def read_odometer(self):
  14. """打印里程数"""
  15. print("this car is "+str(self.odometer)+" km")
  16. def update_odometer(self,odo):
  17. """修改里程数值""" #2通过方法修改里程值,
  18. if odo>=self.odometer:
  19. self.odometer=odo
  20. else:
  21. print("你不可以更改")
  22. def increase_odometer(self,miles):
  23. """增加制定里程读数""" #3.通过方法对属性的值进行递增
  24. self.odometer+=miles
  25. my_newcar=Car("audi","a4",2018)
  26. print(my_newcar.get_descriptive_name())
  27. #1.直接修改属性值
  28. my_newcar.odometer=10
  29. my_newcar.read_odometer()
  30. my_newcar.update_odometer(20)
  31. my_newcar.read_odometer()
  32. my_newcar.increase_odometer(30)
  33. my_newcar.read_odometer()
  1. 2018 A4 Audi
  2. this car is 10 km
  3. this car is 20 km
  4. this car is 50 km

修改属性的值三种方法

  1. 直接修改属性
  2. 通过方法修改属性值
  3. 通过方法对属性的值进行递增

②继承

1.原有类为父类,新类为子类

  1. #创建一个表示汽车的类,存储汽车的信息,还有一个汇总这些信息的方法 get_descriptive_name
  2. class Car():
  3. def __init__(self,make,model,year):
  4. """初始化汽车属性"""
  5. self.make=make
  6. self.model=model
  7. self.year=year
  8. self.odometer=0
  9. def get_descriptive_name(self):
  10. """返回信息描述"""
  11. long_name=str(self.year)+" "+self.model+" "+self.make
  12. return long_name.title()
  13. def read_odometer(self):
  14. """打印里程数"""
  15. print("this car is "+str(self.odometer)+" km")
  16. def update_odometer(self,odo):
  17. """修改里程数值""" #2通过方法修改里程值,
  18. if odo>=self.odometer:
  19. self.odometer=odo
  20. else:
  21. print("你不可以更改")
  22. def increase_odometer(self,miles):
  23. """增加制定里程读数""" #3.通过方法对属性的值进行递增
  24. self.odometer+=miles
  25. class EletricCar(Car): #继承父类 Car
  26. def __init__(self,make,model,year):
  27. """初始化父类属性"""
  28. super().__init__(make,model,year) #super使父类子类关联起来
  29. my_car=EletricCar("bmw","model2",2020)
  30. my_car.get_descriptive_name()
  1. '2020 Model2 Bmw'

2.给子类定义属性和方法

3.重写父类(在子类写相同的类)

!子类和父类def 相同则只会运行子类的定义函数函数

4.将实例用作属性----把属性放到另外一个类中---重新定类

电瓶续航补充

注意实例作为属性的调用

完整代码:

  1. #创建一个表示汽车的类,存储汽车的信息,还有一个汇总这些信息的方法 get_descriptive_name
  2. class Car():
  3. def __init__(self,make,model,year):
  4. """初始化汽车属性"""
  5. self.make=make
  6. self.model=model
  7. self.year=year
  8. self.odometer=0
  9. def get_descriptive_name(self):
  10. """返回信息描述"""
  11. long_name=str(self.year)+" "+self.model+" "+self.make
  12. return long_name.title()
  13. def read_odometer(self):
  14. """打印里程数"""
  15. print("this car is "+str(self.odometer)+" km")
  16. def update_odometer(self,odo):
  17. """修改里程数值""" #2通过方法修改里程值,
  18. if odo>=self.odometer:
  19. self.odometer=odo
  20. else:
  21. print("你不可以更改")
  22. def increase_odometer(self,miles):
  23. """增加制定里程读数""" #3.通过方法对属性的值进行递增
  24. self.odometer+=miles
  25. class Battery(): #无继承
  26. def __init__(self,battery_size=70):
  27. self.battery_size=battery_size
  28. """初始化属性"""
  29. def describe_battery(self):
  30. """打印描述电瓶容量信息""" #将实例放到新的
  31. print("电池 "+str(self.battery_size)+" kwh")
  32. def get_range(self):
  33. """打印电瓶续航里程"""
  34. if self.battery_size==70:
  35. range=240
  36. elif self.battery_size==85:
  37. range=270
  38. message="this car can go approximately "+str(range)
  39. message+="miles on a full charge" #不上语句
  40. print(message)
  41. class EletricCar(Car): #继承父类 Car
  42. def __init__(self,make,model,year):
  43. """初始化父类,在初始化子类"""
  44. super().__init__(make,model,year)
  45. self.battery=Battery() #电池,子类属性
  46. def increase_odometer(self,miles):
  47. """增加制定里程读数""" #3.通过方法对属性的值进行递增
  48. self.odometer+=miles*10
  49. my_car=EletricCar("bmw","model2",2020)
  50. print(my_car.get_descriptive_name())
  51. my_car.battery.describe_battery()
  52. my_car.battery.get_range()
  1. 2020 Model2 Bmw
  2. 电池 70 kwh
  3. this car can go approximately 240miles on a full charge

12.Vs code文件导入以及异常处理

基础配置完成后:

绝对路径时:

会报错,

斜杠反方向   rstrip删除末尾空白

读取每一行:

Or

判断内容有无在文件text中:

写入文本中:

  1. file_path='C:/Users/Administrator/Desktop/py_demo/test_files/kong.txt'
  2. with open(file_path,'w') as file_object:
  3. file_object.write("i love you \n")
  4. file_object.write("you \n")
  5. with open(file_path,'a') as file_object: #附加到文本里 add
  6. file_object.write("i love you \n")
  7. file_object.write("you \n")

检验代码:

文件不存在提示:

一个字符串分割成字符串数组

json

文件加载:

加载不存在信息

  1. import json
  2. file="numbers.json"
  3. try:
  4. with open(file) as file_json:
  5. username=json.load(file_json)
  6. except FileNotFoundError:
  7. username=input("you name\n")
  8. with open(file,"w") as file_json:
  9. json.dump(username,file_json)
  10. print("加载成功")
  11. else:
  12. print("see you"+str(username))
  13. #json.load加载储存在numbers.json文件内容

13文件测试

测试函数

①测试文件是否能通过:

显示ok则测试通过,

assertEqual   核实a==b    unittest测试,创建类

②demo

结果

测试多个答案的,确保每个答案都在my_survey.reponses

Srtup创建例子供测试调用

14.项目实战

①生成折线图:

x.ylabel 在下面散点图中绘制修复了

原因:可能之前运行,变量或者参数erro导致的,重新构建即可

②散点图—渐变色

生成多个点数据

颜色设置

plt.scatter(x_values,y_values,c='red',s=40)  RGB模式:c=(0,0,0.8)  蓝的,RGB 色彩模式默认采用小数值

颜色映射,Plt.cm

保存在文件图片指令。

项目三-随机漫步

  1. #模拟随机漫步
  2. from random import choice
  3. #choice 返回非空序列里的随机元素
  4. class RandomWalk():
  5. """生成随机漫步数的类"""
  6. def __init__(self,num_points=5000):
  7. self.num_points=num_points
  8. #所有随机漫步都始于(0,0)
  9. self.x_value=[0] #FIXME: 标识处代码需要修正,甚至代码是错误的
  10. self.y_value=[0] #TODO:标识处有功能代码待编写
  11. def fill_walk(self):
  12. #不断漫步,直到达到表达指定长度
  13. while len(self.x_value)<self.num_points:
  14. #决定前进方向以及沿着这个方向前进的距离
  15. x_direction=choice([-1,1])
  16. x_distance=choice([0,1,2,3,4])
  17. x_step=x_direction*x_distance
  18. #choice([0, 1, 2, 3, 4]) 随机地选择一个0~4之间的整数
  19. y_direction=choice([-1,1])
  20. y_distance=choice([0,1,2,3,4])
  21. y_step=y_direction*y_distance
  22. #拒绝原地踏步
  23. if x_step==0 and y_step==0:
  24. continue
  25. #计算下一个点的x和y值
  26. next_x=self.x_value[-1]+x_step #将x_step x_value最后值相加
  27. next_y=self.y_value[-1]+y_step
  28. self.x_value.append(next_x)
  29. self.y_value.append(next_y)

进阶版:

效果:

  1. import matplotlib.pyplot as plt
  2. #import matplotlib as mpl
  3. import numpy as np
  4. from submanbu import RandomWalk
  5. while True:
  6. rw=RandomWalk(50000) #自己设置点数5w.原来为5k
  7. rw.fill_walk()
  8. #设置绘图窗口的尺寸n
  9. #分辨率128,dpi 确定了图形每英寸包含的像素数,图形尺寸相同的情况下, dpi 越高,则图像的清晰度越高
  10. plt.figure(dpi=128,figsize=(10,6))
  11. #给数据点着色,渐变色无轮廓-----------cmap=plt.cm.Blues 大写颜色,这个erro不用管
  12. point_number=list(range(rw.num_points))
  13. plt.scatter(rw.x_value,rw.y_value,c=point_number,cmap=plt.cm.Blues,edgecolors="none",s=1)
  14. #突出起点和终点
  15. plt.scatter(0,0,c="green",edgecolors="none",s=50)
  16. plt.scatter(rw.x_value[-1],rw.y_value[-1],c="red",edgecolors="none",s=50)
  17. #隐藏坐标轴
  18. plt.axes().get_xaxis().set_visible(False)
  19. plt.axes().get_yaxis().set_visible(False)
  20. plt.show()
  21. keep_running=input("make another walk?(y/n): ")
  22. if keep_running=='n':
  23. break
  24. #(看终端处,当图片被关闭,就会询问是否再次模拟漫步,需要保存)
  25. #无法在编辑中操作,去setting中设置run code config,保存即可

四掷骰子可视化

  • 一个骰子:基础版
  1. from random import randint
  2. #导入函数randint可以返回(a,b)范围内的数
  3. class Shaizi():
  4. """一类骰子"""
  5. def __init__(self,num_sudes=6):
  6. #骰子有6面
  7. self.num_sudes=num_sudes
  8. def roll(self):
  9. #返回一个位于1和骰子面熟之间的随机值
  10. return randint(1,self.num_sudes)

Svg文件浏览器可以打开

  • 两个骰子

  1. import pygal
  2. from shaizi import Shaizi
  3. #创建一个D6 6面骰子
  4. shaizi_1=Shaizi()
  5. shaizi_2=Shaizi(10)
  6. #投几次并将结果存储在一个列表中
  7. results=[]
  8. for roll_num in range(1000):
  9. result=shaizi_1.roll()+shaizi_2.roll()
  10. results.append(result)
  11. #分析结果频率
  12. frequencies=[]
  13. max_result=shaizi_1.num_sudes+shaizi_2.num_sudes
  14. for value in range(2,max_result+1):
  15. frequency=results.count(value) #计算每种点数在结果中出现次数
  16. frequencies.append(frequency)
  17. #可视化列表,直方图
  18. hist=pygal.Bar()
  19. hist.title=("Biao ti")
  20. hist.x_labels=["2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"]
  21. hist.x_title=("reslt")
  22. hist.y_title=("numbers")
  23. hist.add("shuaizi:6+10",frequencies) #add传递图表值,将图表渲染为svg文件
  24. hist.render_to_file("shuaizi_visual.svg")
  25. """
  26. range(start, stop[, step])
  27. start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  28. stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  29. step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

Svg文件浏览器可以打开

至此教程全部结束,辛苦学习了!

全网最详细超长python学习笔记、14章节知识点很全面十分详细,快速入门,只用看这一篇你就学会了!的更多相关文章

  1. python学习笔记14(多态、封装、继承)

    创建自已的对象(尤其是类型或者被称为类的对象)是python非常核心的概念. 多态: 可对不同类的对象使用同样的操作. 封装:对外部世界隐藏对象的工作细节. 继承:以普通的类为基础建立专门的类对象. ...

  2. Python学习笔记14—模块

    在python中所有的模块都被加入到了sys.path中,用下面的方法可以看见模块的位置. >>> import sys >>> import pprint > ...

  3. Python学习笔记14:标准库之信号量(signal包)

    signal包负责在Python程序内部处理信号.典型的操作包含预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等. 要注意,signal包主要是针对UNIX平台(比方Linux, MAC ...

  4. python学习笔记(14):可视化分析

    一.Matplotlib 1.用于创建出版质量图表的绘图工具库 2.目的的为Python构建一个Matlab式的绘图接口 3.import matplotlib.pyplot as plt:pyplo ...

  5. Python 学习笔记14 类 - 使用类和实例

    当我们熟悉和掌握了怎么样创建类和实例以后,我们编程中的大多数工作都讲关注在类的简历和实例对象使用,修改和维护上. 结合实例我们来进一步的学习类和实例的使用: 我们新建一个汽车的类: #-*- codi ...

  6. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  7. python学习笔记(二)、字符串操作

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...

  8. 大学四年的Python学习笔记分享之一,内容整理的比较多与仔细

    翻到以前在大学坚持记录的Python学习笔记,花了一天的时间整理出来,整理时不经回忆起大学的时光,一眨眼几年就过去了,现在还在上学的你们,一定要珍惜现在,有个充实的校园生活.希望这次的分享对于你们有学 ...

  9. Python学习笔记总结

    目录 Python学习笔记总结 前言 安装 数据类型 Hello,World 变量 字符串 首字母大写 全部小写 全部大写 Tab和换行符 格式化 去除空格 List列表 列表增删改查排序 遍历列表 ...

  10. Python学习笔记(十)

    Python学习笔记(十): 装饰器的应用 列表生成式 生成器 迭代器 模块:time,random 1. 装饰器的应用-登陆练习 login_status = False # 定义登陆状态 def ...

随机推荐

  1. 查看公网出口ip

    curl cip.cc curl http://members.3322.org/dyndns/getip curl icanhazip.com curl ident.me curl ifconfig ...

  2. SpringBoot 项目实战 | 瑞吉外卖 Day05

    该系列将记录一份完整的实战项目的完成过程,该篇属于第五天 案例来自B站黑马程序员Java项目实战<瑞吉外卖>,请结合课程资料阅读以下内容 该篇我们将完成以下内容: 新增套餐 套餐信息分页查 ...

  3. 编译busybox错误汇总

     提示错误: arm-linux-gcc:Command not found PATH里有/usr/oca/arm/bin,但是make的时候,就是找不到 arm-linux-gcc   原因: ex ...

  4. Vue中使用el-menu高亮显示问题

    https://blog.csdn.net/weixin_43336525/article/details/132541500 <template> <el-menu :defaul ...

  5. vue2+高德地图web端开发

    https://blog.csdn.net/qq_51553982/article/details/123014412

  6. uni-app图片上传接口联调

    https://www.bilibili.com/video/BV1jy4y1B7pw?p=159&spm_id_from=pageDriver

  7. zzuli 1908

    ***做的时候判断当前位置为.的上下左右是否为*,如果全是改位置就改为*,如果四周中有为.,再DFS一下,其实就相当于把判断化为更小的子问题*** #include<iostream> # ...

  8. java基础-java面向对象-02-day09

    目录 1. 封装 2. 继承 2.1 什么是方法的重写 2.2 super 2.3 object详解 2.4 equals方法 3. 多态 4. final修饰符 5.抽象类 6. 接口 7. 内部类 ...

  9. Mongo库表占用空间统计

    1. 背景 DBA同事反馈说Mongp集群磁盘占用空间过大,超过监控告警95%阈值,因此建议删除部分资源或者申请扩容,本着开源节流的理念,还是乖乖看哪些老数据应该删除.但Mongo中的库和表过多,因此 ...

  10. CSS : object-fit 和 object-position实现 图片或视频自适应

              img {             width: 100%;             height: 300px;             object-fit: cover;   ...