新手学习Python第八天——学习笔记

今天08:10才到实验室,昨天晚上感冒了又没睡好所以就来晚了。

师弟送了我一袋感冒灵,希望尽快好。

开始复习昨天的内容  08:29  

刚刚弄完建模大赛的报名和校内举办的游园会 一看10:00

1. 递归函数:

1.1 这里举个使用递归函数计算阶乘的例子:

def fac(n):if n==1:return 1else:return n*fac(n-1)          n项*n-1那项s=fac(6)
print(s)

1.2使用递归函数计算斐波那契数列

def fac(n):if n==1:return 1      1 1 2 3 5 8elif n==2:return 1  else:return fac(n-1)+fac(n-2)   前一项和前两项的和print(fac(6))

输出这个数列的前6位上的数字

def fac(n):if n==1:return 1elif n==2:return 1else:return fac(n-1)+fac(n-2)print(fac(6))
for i in range(1,7):d=fac(i)print(d)

 标红色的是 显示前6位 使用for .. in ...循环来做  

总结:递归函数的核心思想就是 if ...else... 终止和调用

2.BUG                            

BUG常见的类型

2.1 粗心大意类型

2.1.1 在if 中要做比较运算符。==

2.1.2 中文括号 

2.1.3数据类型

2.1.4whlie无限循环

2.1.5 冒号  If语句 循环语句 else语句

2.1.6 缩进错误

2.1.7 字符串和数字拼接在一起

2.2  逻辑清晰问题:

lst=[{'rating':[9.7,2062397],'id':'1292052','type':['犯罪','剧情'],'title':'救赎','actor':['钢铁侠','美国队长']},
{'rating':[9.7,20627897],'id':'1230052','type':['爱情','剧情'],'title':'我会用智能手机','actor':['馒头','豆包']},
{'rating':[9.7,2069997],'id':'1299052','type':['乡村','剧情'],'title':'好玩','actor':['花卷','油条']}]
name = input('请输入您要查找的演员')        输入字符串
for item in lst:                           遍历列表给自定义量itema=item['actor']                        item中的actor给了afor s in a:                            再遍历给sif name == s:                     如果输入的name和s的Value值相同print(name,'出演了',item['title'])    那就打印出来这个演员的名字和他出演的节目

对于for...in...那一块就是我把权力给了你,你可以代替我。

2.3 被动掉坑:

举个例子:

a= int(input('请输入第一个整数'))
b = int(input('请输入第二个整数'))
result = a/b
print(result)

但是我要是输入0,那不就是错误了吗。所以这里程序介绍一个类似于if...else..这样的程序

为try...except...

可能会出现的问题放在try里面,异常代码交给except..

try:a= int(input('请输入第一个整数'))b = int(input('请输入第二个整数'))result = a/bprint(result)
except ZeroDivisionError:print('对不起,程序有误')
print('程序结束')

但是我不输入数的时候,就会出现错误,也异常但没有异常代码来解释

所以就有多个except结构,try...except Exception1....except Exception2..except BaseException..  先子类后父类

所以我来举个例子:

try:a= int(input('请输入第一个整数'))b = int(input('请输入第二个整数'))result = a/bprint(result)
except ZeroDivisionError:print('对不起,程序有误')
except ValueError:print('只能输入数字串')

不输入 或者把数字输入成字符串这些异常代码程序都全了。

3.Python的异常处理机制:

3.1 try...except...else结构

意思是:如果try块中没有抛出异常,则执行else块,如果抛出异常,则执行except块

try:a=int(input('请输入第一个整数'))b=int(input('请输入第二个整数'))result= a/ b
except BaseException as e:print('出错了',e)
else:print(result)

try...except...else..finally..

finally无论是否发生异常,都会被执行,用来释放try块中申请的资源

try→else→finally

try→except→finally

这些块都需要+:

try:a=int(input('请输入第一个整数'))b=int(input('请输入第二个整数'))result= a/ b
except BaseException as e:print('出错了',e)
else:print(result)
finally:print('谢谢您的使用')   

总结:try...except..  try...except..except...  try..except...else... 

try...except..else..finally...  traceback模块  

 3.2 常见的异常类型:

1.ZeroDivisionError:除(或取模)0(所有数据类型)、

print(10/0)

2.IndexError:序列中没有此索引(index)

lst=[1,2,3,4]
print(lst[4])

3.KeyError:映射中没有这个键

dict= {'name':50,'age':60}  
print(dict['name'])        #取得该键的值
print(dict['gender'])       #没有这个键

4.NameError:未声明/初始化对象(没有属性)

print(num)     #未定义变量

5.SyntaxError:Python语法错误  

int a =20    #变量是没有类型的就会出现错误

6.ValueError:传入无效的参数

a=int('hello')   这个字符串是不能转换十进制整数的。

3.3.traceback模块的使用

import traceback
try:print(10/0)
except:traceback.print_exc()  

traceback.print_exc() 是 Python 中 traceback 模块提供的一个函数,用于打印最近一次异常的堆栈跟踪信息

这个异常会被存放在日后的日志文件当中  log日志

4.Pycharm开发环境的调试

5.两大编程思想

面向过程和面向对象  

面向过程:事情比较简单,可用线性思维去解决

面向对象:事情比较复杂,使用简单的线性思维无法解决。

二者相辅相成,并不是对立的关系

5.1 类与对象:

类:多个类似的事物,组成的群体的统称

100 200  520 都是int类之下包含的相似的不同个例,这个个例专业术语称为实例或对象 

这些类下的具体内容就叫做对象

5.1.1创建类的语法:

class Student:    Student为类的名称由一个或多个单词组成,每个单词的首字母要大写,其余小写。native_pace='吉林'    直接写在类里的变量,成为类属性def eat(self):         实例方法 self写不写都会存在print('学生在吃饭')
def _init_(self,name,age):  初始化方法 self.name=name      self.name称为实体属性,进行了一个赋值操作,将局部变量的name的值赋给实体属性self.age=age
@staticmethod
def method():     这method括号里面不允许有self 规定
    print('我使用了statticmethod进行修饰,所以我是静态方法')
@classmethod
def cm(cls):print('我是类方法,因为我使用了classmethod进行修饰')
def drink():               类之外定义是函数,类之内定义是方法print('喝水')

5.2 对象的创建:

对象的创建又称为类的实例化

语法结构:实例名=类名()

# 创建 Student 类的一个实例
stu1 = Student('张三', 20)      

# 打印实例的字符串表示,需要定义 __str__ 方法
print(stu1)# 打印实例的内存地址
print(id(stu1))# 打印实例的类型
print(type(stu1))

其中id与输出对象的值是十进制与十六进制之间的转换

意义是什么?  stu1=Student()      

意义是有了实例,就可以调用类中的内容了

# 打印实例的类型
print(type(stu1))
stu1.eat()            实例名+。+方法名()
print(stu1.name)     #可以调用实例对象里的对象
print(stu1.age)
Student.eat(stu1)    这个结果与stu1.eat(),代码功能相同,都是调用Student中的方法

#类名.方法名(类的对象)→实际上就是方法定义处的self

stu1.eat() →对象名.方法名()      

class Student: native_place = '吉林'  # 类属性,所有实例共享def __init__(self, age):  # 构造函数的正确名称# 实例属性,每个实例都有自己的值self.age = agedef eat(self):print('学生在吃饭')@staticmethoddef method():print('我使用了staticmethod进行修饰,所以我是静态方法')@classmethoddef cm(cls):print('我是类方法,因为我使用了classmethod进行修饰')# 创建 Student 类的一个实例
stu1 = Student( 66)# 打印实例的字符串表示,需要定义 __str__ 方法
print(stu1)# 打印实例的内存地址
print(id(stu1))# 打印实例的类型
print(type(stu1))
stu1.eat()print(stu1.age)
Student.eat(stu1)

5.2静态方法的使用方式

晚上感觉感冒又严重了,所以刚才的课程听得效果不是很好,一转头发现背后的师哥正在用Class这个类对象呢,所以重要性可想而知。再重来一遍 

20:53

class Student :   class +对象名:   类的名称简称类名,由一个或多个单词组成,开头必须大写,其余小写

python中一切皆对象

类的组成   类属性、实例方法、静态方法、类方法

class Student:native_place='吉林'  #写在类里面得变量叫做类属性
def eat(self):print('学生在吃饭')     这里的self可以替换,但最好别换   #实例方法

在类之外定义的称之为函数,在类内定义的称为方法

@staticmethod
def method():       #不允许写self的 在静态的这里print('我使用了statticmethod进行修饰,所以我是静态方法')

类方法:

def cm(cls):      print('我是类方法,因为我使用了classmethod进行修饰')  需要传一个cls

还有一个初始化方法:

def __init__(self,name,age):self.name=name     self.name称为实体属性,进行了一个赋值操作,将局部变量name 的值赋给实体属性self.age=age    

创建Student类的对象之后,就可以调用类对象中的内容了

比如:

stu1.eat()

print(stu1.name)  print(stu1.age)

stu1=Student('张三',20)
stu1.eat()
print(stu1.name)
print(stu1.age)

这两个代码的功能相同,都是在调用类Student的eat方法

为什么这个self里面写了参数,因为eat有self要求传入student的对象 所以stu1是要求传入的对象,当然就可以传进来了。

        print('我是类方法,因为我使用了classmethod进行修饰')
stu1=Student('张三',20)
stu1.eat()
print(stu1.name)
print(stu1.age)
Student.eat(stu1)
stu1=Student('张三',20)
stu2=Student('李四',30)
print(stu1.native_place)
print(stu2.native_place)
Student.native_place='天津'
print(stu1.native_place)
print(stu2.native_place)

本来今天都可以学完的,奈何事情有点多,主要自己感冒吃的药让我好困效率大打折扣,先回去了,周末加油努力,哦!对了老师明天要请我们课题组聚餐吃饭。

————21:41————回寝室好好休息,明天早点过来学习!!!

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144671.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【GESP】C++一级练习BCQM3008,审题更重要,printf的格式化输出

跟BCQM3005一样,都是printf的格式化输出练习题。不过从题目描述过程来看,审题过程比题目本身更重要。 BCQM3008 题目要求 描述 雪花 一片两片三四片, 五片六片七八片, 九片十片无数片, 飞入梅花看不见。 试编一程序…

【C++】C++11-包装器

目录 1、function包装器 2、function包装器包装成员函数指针 2.1 静态成员函数 2.2 非静态成员函数 3、bind包装器 3.1 调整参数顺序 3.2 调整参数个数 1、function包装器 包装器是用来包装可调用对象的,这里的可调用对象主要有函数指针、仿函数、lambda表达…

基于Delphi的题库生成系统

基于Delphi的题库生成系统是一个复杂的项目,涉及到多个模块的设计和实现。以下是一个简化的代码案例,展示了如何使用Delphi构建一个基本的题库生成系统。 1. 数据库设计 首先,你需要设计一个数据库来存储试题信息。一个简单的数据库设计可…

缓存穿透 问题(缓存空对象)

文章目录 1、缓存穿透2、缓存空对象3、AlbumInfoApiController --》getAlbumInfo()4、AlbumInfoServiceImpl --》getAlbumInfo()5、RedisConstant6、请求缓存不存在的数据 1、缓存穿透 2、缓存空对象 3、AlbumInfoApiController --》getAlbumInfo() GetMapping("getAlbumI…

经济基础决定上层建筑,好芯片构建好音质——模拟芯片龙头德州仪器的D类音频放大器TAS6424-Q1

在文娱生活愈加丰富的现时今日,在行驶途中,打开车载音响听听喜爱的音乐,或是直接打开收音机收听不同频段的电台节目,都是行车途中不可或缺的部分。如此看来,汽车是否搭载优秀的音响系统,成为了消费者选购车辆时的重要指标。 而如何让汽车拥有出色的音响主机呢?那就得请出…

Web后端服务平台解析漏洞与修复、文件包含漏洞详解

免责申明 本文仅是用于学习检测自己搭建的Web后端服务平台解析漏洞、文件包含漏洞的相关原理,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国…

将有序数组——>二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵平衡二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案…

PyRFC 适用于 Python 的异步、非阻塞 SAP NetWeaver RFC SDK 绑定

Asynchronous, non-blocking SAP NetWeaver RFC SDK bindings for Python. 适用于 Python 的异步、非阻塞 SAP NetWeaver RFC SDK 绑定 Call for Maintainers This project is currently looking for new maintainers. Please see this issue for details. Features Client …

A review on rumour prediction and veracity assessment in online social network

ABSTRACT 在当今时代,社交网络被用作分享个人思想和观点的重要媒介。其背后的主要原因是,它可以轻松地在公众中快速传播信息,并且访问成本非常低。这导致在线社交媒体成为鼓励虚假内容并影响公众舆论及其决策的垫脚石之一。谣言是社交媒体上误…

论文速递!时序预测!DCSDNet:双卷积季节性分解网络,应用于天然气消费预测过程

本期推文将介绍一种新的时序预测方法:双卷积季节性分解网络(Dual Convolution withSeasonal Decomposition Network, DCSDNet)在天然气消费预测的应用,这项研究发表于《Applied Energy》期刊。 针对天然气消费的多重季节性和非规律性&#x…

木牛科技PMO总监关沨受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 北京木牛领航科技有限公司PMO总监关沨女士受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾,演讲议题为“如何培养能打胜仗的项目经理”。大会将于10月26-27日在北京举办,主题为&a…

Android插件化(三)基础之Android应用程序资源的编译和打包过程分析

Android插件化(三)基础之Android应用程序资源的编译和打包过程分析 Android资源加载常规思路 getResourcesForApplication //首先,通过包名获取该包名的Resources对象 Resources res pm.getResourcesForApplication(packageName); //根据约定好的名字&#xff0c…

C++日期类,详细!!!

日期类的练习可以巩固提高之前所学习的知识&#xff0c;还可以完成关于的日期练习 下面是关于日期的对应oj题 KY111 日期差值 计算一年的第几天 累加天数 1.Date.h 头文件部分 看看我们要实现那些接口 1.获取对应月份的天数:GetMonthDay 2. < > …

leetcode41. 缺失的第一个正数,原地哈希表

leetcode41. 缺失的第一个正数 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xf…

计算机三级网络技术总结(五)

HTTP端口号为80 三平台一出口&#xff1a;网络平台、业务平台、管理平台和城市宽带出口IEEE802.16最高传输速率为134Mbps链路状态数据库中保存的是全网的拓扑结构图&#xff0c;而非全网完整的路由表在无线局域网中&#xff0c;客户端设备用来访问接入点&#xff08;AP&#xf…

GUI编程17:下拉框、列表框

视频链接&#xff1a;19、下拉框、列表框_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p19&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.下拉框 代码示例 package com.yundait.lesson06;import javax.swing.*; import java.awt.*;public class Te…

计算机毕业设计 教师科研信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

利用条件编译解决vivado下verilog代码中ila与仿真的共存问题

vivado自带的仿真工具已经接近Modelsim的功能&#xff0c;且与原生开发环境的紧密结合&#xff0c;对仿真非常方便。 我的习惯是在实现工程中另外建一个仿真工程&#xff0c;保存仿真的testbench文件等&#xff0c;而实现工程中保存实际功能的源码文件。 这样仿真时会存在一个问…

目前人工智能时代,程序员如何保持核心竞争力?

随着AIGC&#xff08;如chatgpt、midjourney、claude等&#xff09;大语言模型接二连三的涌现&#xff0c;AI辅助编程工具日益普及&#xff0c;程序员的工作方式正在发生深刻变革。有人担心AI可能取代部分编程工作&#xff0c;也有人认为AI是提高效率的得力助手。面对这一趋势,…

[2025]医院健康陪诊系统(源码+定制+服务)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…