08-10章

2023-11-19

第8章:函数
1、def 定义函数
2、形参、实参
3、位置实参、关键字实参、可给形参指定默认值
4、返回值,使用reture语句将值返回到调用函数的代码行
5、让实参变成可选的 将某个形参设置为空值
6、返回字典
7、向函数传递列表、在函数中修改列表、禁函数修改列表
8、传递任意数量的实参(在形参前加*)、
9、将函数存储在被称为模块的独立文件中,再将模块导入(import)到主程序中
导入特定的函数 form 模块 import 函数名
给函数指定别名 form 模块 import 函数名 as 别名
给模块指定别名 form 模块 as 别名
导入模块中的所有函数 form 模块 import *

第9章:类
1、创建类
class 类名(): 类名首字母大写
__init__方法 开头和末尾各有两个下划线
self 每个与类相关的方法调用都自动传递实参self,
它是指向实例本身的引用,让实例能够访问类中的属性和方法
2、根据类创建实例 实例名=类名(属性) 首字母大写为类,小写的名称为实例
访问属性 使用句点表示法
调用方法 使用句点表示法
创建多个实例
3、继承 如果要编写的类是另一个现成类的特殊版本,可使用继承。
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法。
原有的类称为父类,新类称为子类。
定义子类时,必须在括号内指定父类的名称。
super()是一个特殊函数,将父类和子类关联起来。
给子类定义属性和方法
重写父类的方法
模拟类
4、导入类 导入单个类 form 模块 import 类名
在一个模块中存储多个类
从一个模块中导入多个类 form 模块 import 类名1,类名2
导入整个模块 import 模块
导入模块中的所有类 form 模块 import *
在一个模块中导入另一个模块

5、python标准库
6、驼峰命名法:类名中的每个单词的首字母都大写,而不使用下划线。
实例名和模块名都采用小写格式,并在单词之间加上下划线。

第10章:文件和异常
1、打开文件
with open(“文件路径\文件名”) as 对象名
变量=对象.read()
print(变量)
2、使用绝对路径,可以读取系统任何地方的文件。
如果不正常,需要在开头的单引号前加上r。
3、逐行读取:打开文件之后用for循环
4、创建一个包含文件各行内容的列表 变量=对象.readlines()
5、可以用方法replace()将字符串中的特定单词替换为另一个单词
6、写入文件:open()提供另一个实参:
读取模式(‘r’) 写入模式(‘w’) 附加模式(‘a’)——在原有文本的基础上添加。
将字符串写入文件: 对象名.write(“写入内容”)
只能将字符串写入到文件,要将数值存储在文本文件中,需要用函数str()转换。
7、异常:try-except
ZeroDivisionError 异常

try:
	print(5/0)
except ZeroDivisionError:
	print("You can't divide by zero!")

依赖于try 代码块成功执行的代码都应放到else 代码块中,如:

while True:
		first_number = input("\nFirst number: ")
		if first_number == 'q':
			break
		second_number = input("Second number: ")
		 try:
			answer = int(first_number) / int(second_number)
		except ZeroDivisionError:
			print("You can't divide by 0!")
		 else:
			print(answer)

FileNotFoundError 异常

filename = 'alice.txt'
try:
	with open(filename) as f_obj:
	contents = f_obj.read()
except FileNotFoundError:
	msg = "Sorry, the file " + filename + " does not exist."
	print(msg)

分析多个文件单词数:

def count_words(filename):
❶ """计算一个文件大致包含多少个单词"""
	try:
		with open(filename) as f_obj:
		contents = f_obj.read()
	except FileNotFoundError:
		msg = "Sorry, the file " + filename + " does not exist."
		print(msg)
	else:
	# 计算文件大致包含多少个单词
		words = contents.split()
		num_words = len(words)
		print("The file " + filename + " has about " + str(num_words) +	" words.")
		filename = 'alice.txt'
		
	count_words(filename)
	

失败时一声不吭:在except后不输出内容,用pass代替
8、存储数据
使用模块json 来存储数据
使用json.dump() 来存储
函数json.dump() 接受两个实参: 要存储的数据以及可用于存储数据的文件对象。

import json
numbers = [2, 3, 5, 7, 11, 13]
 filename = 'numbers.json'
 with open(filename, 'w') as f_obj:
	 json.dump(numbers, f_obj

使用json.load()来读取

import json
 filename = 'numbers.json'
 with open(filename) as f_obj:
	 numbers = json.load(f_obj)
print(numbers)

尝试从文件username.json中获取用户名, 因此我们首先编写一个尝试恢复用户名的try 代
码块。 如果这个文件不存在, 我们就在except 代码块中提示用户输入用户名, 并将其存储在username.json中, 以便程序再次运行时能够获取它

import json
# 如果以前存储了用户名, 就加载它
# 否则, 就提示用户输入用户名并存储它
filename = 'username.json'
try:
 with open(filename) as f_obj:
	 username = json.load(f_obj)
 except FileNotFoundError:
 	username = input("What is your name? ")
 	with open(filename, 'w') as f_obj:
		json.dump(username, f_obj)
		print("We'll remember you when you come back, " + username + "!")
else:
	print("Welcome back, " + username + "!")

代码能够正确地运行, 但可做进一步的改进——将代码划分为一系列完成具体工作的函数。 这样的过程被称为重构
重构前:

import json
def greet_user():
 """问候用户, 并指出其名字"""
	filename = 'username.json'
	try:
		with open(filename) as f_obj:
		username = json.load(f_obj)
	except FileNotFoundError:
		username = input("What is your name? ")
		with open(filename, 'w') as f_obj:
		json.dump(username, f_obj)
		print("We'll remember you when you come back, " + username + "!")
	else:
			print("Welcome back, " + username + "!")
greet_user()

重构后:

import json
def get_stored_username():
	"""如果存储了用户名, 就获取它"""
--snip--
def get_new_username():
	"""提示用户输入用户名"""
	username = input("What is your name? ")
	filename = 'username.json'
	with open(filename, 'w') as f_obj:
		json.dump(username, f_obj)
	return username
def greet_user():
	"""问候用户, 并指出其名字"""
	username = get_stored_username()
	if username:
		print("Welcome back, " + username + "!")
	else:
		username = get_new_username()
		print("We'll remember you when you come back, " + username + "!")
greet_user()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

08-10章 的相关文章

随机推荐

  • 【手撕代码系列】JS手写实现Promise.all

    公众号 Code程序人生 分享前端所见所闻 Promise all 方法接收一个 Promise 对象数组作为参数 返回一个新的 Promise 对象 该 Promise 对象在所有的 Promise 对象都成功时才会成功 其中一个 Pro
  • mysql数据库中 控制流程函数 case

    1 CASE CASE value WHEN compare value1 THEN result1 WHEN compare value2 THEN result2 ELSE result3 END 解释 用value值来匹配 如果val
  • pcl入门笔记1:pcl的安装

    前言 最近刚入坑pcl 打算记录一下自己的学习历程 安装pcl前的准备 本教程使用的是windows下的预编译包安装 要想顺利编译程序 需要安装好微软的Visual Studio IDE和cmake 这两者安装过程笔者不详细介绍 读者可以自
  • 华为云计算之rainbow迁移原理

    华为云计算之rainbow迁移原理 一 华为rainbow迁移工具适用场景 1 rainbow介绍 2 业务迁移的应用场景 3 业务迁移顺序设计 二 迁移流程图 1 Windows块级迁移原理 2 Linux文件级迁移原理 三 rainbo
  • Dynamics 365应用程序开发 - 6. 使用Microsoft Flow自动化业务流程

    在上一章中 我们了解了如何使用Microsoft PowerApps轻松创建自定义商业应用程序 在本章中 我们将了解Microsoft Flow 它可以定义为一种基于云的服务 使用户能够构建跨多个应用程序和服务自动化不同任务和流程的工作流
  • 常见的Restrictions用法

    Restrictions eq Restrictions ne Restrictions allEq 利用Map来进行多个等于的限制 Restrictions gt Restrictions ge Restrictions lt Restr
  • v-show控制隐藏与显示--案例

    v show简介 1 v show指令的作用是 根据切换元素的显示状态 2 原理是修改元素 的display 实现显示隐藏 3 指令后面的内容 最终都会解析为布尔值 4 值为true元素显示 值为false元素隐藏 除了 v if v sh
  • selenium 获取某元素的 某属性 的值

    selenium 获取某元素的 某属性的值 1 先通过元素定位 获得此元素的 WebElement WebElement yuansu driver findElement By className buttonInput1 text 2
  • 显式的实例化与外部模板的声明

    2 12 2 显式的实例化与外部模板的声明 深入理解C 11 C 11新特性解析与应用 第2章保证稳定性和兼容性 本章中的新特性基本上都遵循了该设计思想 本节为大家介绍显式的实例化与外部模板的声明 作者 Michael Wong IBM X
  • Zookeeper之ZAB协议

    1 概念 Zookeeper使用 种称为Zookeeper Atomic Broadcast ZAB Zookeeper原 消息 播协议 的协议作为其数据 致性的核 算法 ZAB协议并不像Paxos算法那样 是 种通 的分布式 致性算法 它
  • 电脑修改用户(User)文件夹名称

    情景 Windows 11 的用户名与 C 盘 系统盘 中的文件夹名称不对应 可能是由于重装系统导致的 例如我笔记本中系统用户名是 fly 但文件夹名称却是 16490 Step 1 打开Administrator账户 搜索 cmd 右键
  • 二、字符串(36)392. 判断子序列

    392 判断子序列 给定字符串 s 和 t 判断 s 是否为 t 的子序列 字符串的一个子序列是原始字符串删除一些 也可以不删除 字符而不改变剩余字符相对位置形成的新字符串 例如 ace 是 abcde 的一个子序列 而 aec 不是 进阶
  • 关于游戏设计状态

    状态转移在数学里究竟是干嘛的我也不多说了 毕竟大家都是做游戏的 也不需要这么高深的数学知识 我就从一个实例开始讲一下吧 看不懂那我也没办法了 死套公式也行 只要调整下系数问题也不大 以武器强化为例 武器强化等级假如总共有十个等级 从一级开始
  • 数据结构----对称矩阵压缩存储中下标的计算

    一 压缩存储的概念 首先看一个对称矩阵 以深灰色为对称轴 由于矩阵内数据对称 因此只需将任意一边的数据存储起来即可 考虑到存储单元的线性结构 我们可以以一维数组的形式将其存储起来 需要存储的元素为 各个元素对应在一维数组中的位置示意图 按行
  • vue3+element+sortablejs实现table表格 行列动态拖拽

    vue3 element sortablejs实现table动态拖拽 1 第一步我们要安装sortablejs依赖 2 在我们需要的组件中引入 3 完整代码 4 效果 5 扩展 判断要拖动的行能不能拖动并放置到新位置 1 第一步我们要安装s
  • Promise {}

    Promise
  • 二叉树的链式结构实现

    文章目录 前言 链式结构实现 创建结点结构体 构建树逻辑结构 遍历二叉树 计算二叉树高度 结点数 叶子数 前言 对于一般的二叉树 非完全二叉树 满二叉树 而言 用顺序表去存储 会造成空间的浪费 所以一般采用链式结构实现 对于非完全非满二叉树
  • 前端Tabs表单的使用

  • 【codeforces #290(div 1)】ABC题解

    A Fox And Names time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard o
  • 08-10章

    第8章 函数 1 def 定义函数 2 形参 实参 3 位置实参 关键字实参 可给形参指定默认值 4 返回值 使用reture语句将值返回到调用函数的代码行 5 让实参变成可选的 将某个形参设置为空值 6 返回字典 7 向函数传递列表 在函