【笔记】Python编程:从入门到实践(第2版) - 埃里克·马瑟斯

第一部分 基础知识

第1章 安装Python

第2章 变量中存储信息

name = "ada lovelace"
name.title() # 首字母大写的方式显示每个单词# Ada Lovelace
print(name.upper()) # 全部大写 ADA LOVELACE
print(name.lower()) # 全部小写 ada lovelace# 在字符串中插入变量的值,前引号前加上字母f
# f字符串是Python 3.6引入的**
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(full_name)
# ada lovelace# Python 3.5或更早的版本,需要使用format()方法
full_name = "{} {}".format(first_name, last_name)print("\tPython") # 制表符\t
# Python
print("Languages:\nPython\nC") # 换行符\n
# Languages:
# Python
# Cfavorite_language = ' python '>>> favorite_language.rstrip() # 删除末尾空白
' python'>>> favorite_language.lstrip() # 删除开头空白
'python '>>> favorite_language.strip() # 删除两边空白
'python'

>>> 2 + 3
5
>>> 3 - 2
1
>>> 2 * 3
6
>>> 3 / 2
1.5
# ========================
>>> 3 ** 2
9
>>> 3 ** 3
27
# ========================
>>> 2 + 3*4
14
>>> (2 + 3) * 4    # 使用圆括号来修改运算次序,
20
# ========================
>>> 0.2 + 0.1      # 结果包含的小数位数可能是不确定
0.30000000000000004
# ========================
>>> 4/2            # 任意两个数相除时,结果总是浮点数,
2.0
# ========================下述,只有Python 3.6和更高的版本支持。
# 书写很大的数时,可使用下划线将其中的数字分组,使其更清晰易读:
>>> universe_age = 14_000_000_000
>>> print(universe_age)  # 打印这种使用下划线定义的数时,Python不会打印其中的下划线:
14000000000
# 这是因为存储这种数时,Python会忽略其中的下划线。
# 在Python看来,1000与1_000没什么不同,1_000与10_00也没什么不同。
# ========================
>>> x, y, z = 0, 0, 0   # 同时给多个变量赋值
# ========================
# Python程序员会使用全大写来指出应将某个变量视为常量,其值应始终不变:
MAX_CONNECTIONS = 5000

第3章和第4章 列表、元组

在Python中,用方括号 [ ] 表示列表,并用逗号分隔其中的元素。
索引从0开始
Python通过将索引指定为-1,可让Python返回最后一个列表元素

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
# ['trek', 'cannondale', 'redline', 'specialized']print(bicycles[0]) # 访问列表元素
# trekprint(bicycles[-1])
# specialized
# ========================【1】修改列表元素
❶ motorcycles = ['honda', 'yamaha', 'suzuki'] # 例子1
print(motorcycles)
# ['honda', 'yamaha', 'suzuki']
❷ motorcycles[0] = 'ducati' # 【1】修改列表元素
print(motorcycles)
# ['ducati', 'yamaha', 'suzuki']
# ========================【2】列表中添加元素
motorcycles = ['honda', 'yamaha', 'suzuki'] # 例子2
print(motorcycles)
# ['honda', 'yamaha', 'suzuki']
❶ motorcycles.append('ducati') # 【2.1】列表末尾添加元素
print(motorcycles)
# ['honda', 'yamaha', 'suzuki', 'ducati']
# ========================
motorcycles = ['honda', 'yamaha', 'suzuki']# 例子3
❶ motorcycles.insert(0, 'ducati') #【2.2】列表中插入元素 insert()
print(motorcycles)
# ['ducati', 'honda', 'yamaha', 'suzuki']
# ========================【3】列表中删除元素
motorcycles = ['honda', 'yamaha', 'suzuki']# 例子4
print(motorcycles)
# ['honda', 'yamaha', 'suzuki']del motorcycles[0] # 【3.1】列表中删除(指定元素)用 del
print(motorcycles)
# ['yamaha', 'suzuki']
# ========================
motorcycles.pop() # 删除列表末尾的元素 pop()
motorcycles.pop(0) # 指定要删除元素的索引
motorcycles.remove('ducati')  # 根据值删除元素
# ========================# ========================
cars.sort() # 对列表进行排序(正序)
cars.sort(reverse=True) # 列表按与字母顺序(反序)
sorted(cars) # 按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
cars.reverse() # 倒着打印列表
len(cars) # 确定列表的长度
# ========================# ========================
❶ magicians = ['alice', 'david', 'carolina']for magician in magicians: # 遍历整个列表print(magician)
# ========================# ========================
for value in range(1, 5):
print(value)
# 1
# 2
# 3
# 4
numbers = list(range(1, 6)) # 使用range()创建数字列表
print(numbers)
# [1, 2, 3, 4, 5]

range(2, 11, 2)
从2开始数,然后不断加2,直到达到或超过终值(11)
[2, 4, 6, 8, 10]

>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits) # 最大值
0
>>> max(digits) # 最小值
9
>>> sum(digits)  # 总和
45

输出名单上的最后三名队员,可使用切片players[-3:]

元组

创建一系列不可修改的元素,元组可以满足这种需求。
Python将不能修改的值称为不可变的,而不可变的列表被称为元组
使用( ),而非 [ ] 来标识。

第5章 使用if语句。

cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:if car == 'bmw':print(car.upper())else:print(car.title())>>> car == 'bmw'
True

检查多个条件

>>> age_0 >= 21 and age_1 >= 21
False>>> age_0 >= 21 or age_1 >= 21
True

检查特定值是否包含在列表中

>>> 'mushrooms' in requested_toppings
Trueif user not in banned_users:print(f"{user.title()}, you can post a response if you wish.")

if

if-else语句

if age >= 18:print("You are old enough to vote!")print("Have you registered to vote yet?")
else:print("Sorry, you are too young to vote.")print("Please register to vote as soon as you turn 18!")

if-elif-else结构

if age < 4:print("Your admission cost is $0.")
elif age < 18:print("Your admission cost is $25.")
.............
else:print("Your admission cost is $40.")

if-elif结构

else是一条包罗万象的语句,只要不满足任何if或elif中的条件测试,其中的代码就会执行。
这可能引入无效甚至恶意的数据。
如果知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块。

第6章 字典

alien_0 = {'color': 'green', 'points': 5} # 字典
print(alien_0['color']) # 访问字典中的值
print(alien_0['points'])❶ alien_0['x_position'] = 0 # 添加键值对/修改字典中的值
alien_0 = {} # 创建一个空字典del alien_0['points'] # 删除键值对# 使用 get() 来访问值
'''第一个参数用于指定键,是必不可少的;
第二个参数为指定的键不存在时要返回的值,'''
point_value = alien_0.get('points', 'No point value assigned.')
print(point_value)# 遍历所有键值对
user_0 = {'username': 'efermi','first': 'enrico','last': 'fermi',
}
for key, value in user_0.items():print(f"\nKey: {key}")print(f"Value: {value}")for name, language in favorite_languages.items():print(f"{name.title()}'s favorite language is {language.title()}.")for name in favorite_languages.keys(): # 遍历字典中的所有键print(name.title())
for language in favorite_languages.values(): # 遍历字典中的所有值print(language.title())pizza = {'crust': 'thick','toppings': ['mushrooms', 'extra cheese'], # 在字典中存储列表
}users = {'aeinstein': {                             # 在字典中存储字典'first': 'albert','last': 'einstein','location': 'princeton',},'mcurie': {'first': 'marie','last': 'curie','location': 'paris',},
}

第7章 获取输入、while循环

name = input("Please enter your name: ")
print(f"\nHello, {name}!")height = input("How tall are you, in inches? ")
height = int(height)

求模运算符 %

>>> 4 % 3
1
>>> 5 % 3
2
>>> 6 % 3
0
>>> 7 % 3
1

while循环

使用break退出循环
使用continue…

current_number = 1
while current_number <= 5:print(current_number)current_number += 1while True:city = input(prompt)if city == 'quit':breakelse:print(f"I'd love to go to {city.title()}!")

第8章 函数

def greet_user(username):"""显示简单的问候语。"""print(f"Hello, {username.title()}!")greet_user('jesse')def get_formatted_name(first_name, last_name):"""返回整洁的姓名。"""full_name = f"{first_name} {last_name}"return full_name.title()  #返回

传递任意数量的实参

形参名*toppings中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中。函数体内的函数调用print()通过生成输出,证明Python能够处理使用一个值来调用函数的情形,也能处理使用三个值来调用函数的情形。它以类似的方式处理不同的调用。
注意,Python将实参封装到一个元组中,即便函数只收到一个值:

def make_pizza(*toppings):"""打印顾客点的所有配料。"""print(toppings)make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
# ('pepperoni',)
# ('mushrooms', 'green peppers', 'extra cheese')

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

形参**user_info中的两个星号让Python创建一个名为user_info的空字典,并将收到的所有名称值对都放到这个字典中。
在这个函数中,可以像访问其他字典那样访问user_info中的名称值对。

def build_profile(first, last, **user_info):"""创建一个字典,其中包含我们知道的有关用户的一切。"""user_info['first_name'] = firstuser_info['last_name'] = lastreturn user_infouser_profile = build_profile('albert', 'einstein',location='princeton',field='physics')
print(user_profile)

导入整个模块

# pizza.py
def make_pizza(size, *toppings):"""概述要制作的比萨。"""print(f"\nMaking a {size}-inch pizza with the following toppings:")for topping in toppings:print(f"- {topping}")# making_pizzas.py
import pizza
pizza.make_pizza(16, 'pepperoni')

导入特定的函数

使用 as 给函数指定别名

from module_name import function_name
from module_name import function_name as mp # 使用 as 给函数指定别名
from pizza import * # 导入模块中的所有函数

第9章 类

init() 是一个特殊方法,每当你根据Dog类创建新实例时,Python
都会自动运行它。
包含三个形参:self、name和age。
形参self必不可少,而且必须位于其他形参的前面。

class Dog:"""一次模拟小狗的简单尝试。"""def __init__(self, name, age):"""初始化属性name和age。"""self.name = nameself.age = agedef sit(self):"""模拟小狗收到命令时蹲下。"""print(f"{self.name} is now sitting.")def roll_over(self):"""模拟小狗收到命令时打滚。"""print(f"{self.name} rolled over!")# 根据类创建实例
my_dog = Dog('Willie', 6) my_dog.name #访问属性
my_dog.sit() #调用方法

继承

class Car:"""一次模拟汽车的简单尝试。"""def __init__(self, make, model, year):self.make = makeself.model = modelself.year = yearself.odometer_reading = 0def get_descriptive_name(self):long_name = f"{self.year} {self.make} {self.model}"return long_name.title()def read_odometer(self):print(f"This car has {self.odometer_reading} miles on it.")def update_odometer(self, mileage):if mileage >= self.odometer_reading:self.odometer_reading = mileageelse:print("You can't roll back an odometer!")def increment_odometer(self, miles):self.odometer_reading += milesclass ElectricCar(Car):"""电动汽车的独特之处。"""def __init__(self, make, model, year):"""初始化父类的属性。"""super().__init__(make, model, year) # super() 让能够调用父类的方法。my_tesla = ElectricCar('tesla', 'model s', 2019)print(my_tesla.get_descriptive_name())
>>> from random import randint
>>> randint(1, 6) # 生成一个位于1和6之间的随机整数
3

第10章 文件、如何处理错误(Python异常)

读取整个文件

with open('pi_digits.txt') as file_object:contents = file_object.read()print(contents)

文件路径

Windows系统使用反斜杠(\)

with open('text_files/filename.txt') as file_object:

逐行读取

filename = 'pi_digits.txt'
with open(filename) as file_object:for line in file_object:print(line)3.1415926535
8979323846
2643383279

要消除这些多余的空白行,可在函数调用print()中使用rstrip()

filename = 'pi_digits.txt'
with open(filename) as file_object:for line in file_object:print(line.rstrip())3.1415926535
8979323846
2643383279

使用文件的内容

filename = 'pi_digits.txt'
with open(filename) as file_object:lines = file_object.readlines()pi_string = ''
for line in lines:pi_string += line.rstrip()print(pi_string)
print(len(pi_string))

第11章 测试

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

王学岗鸿蒙开发(北向)——————(四、五)ArkUi声明式组件

1,注意&#xff0c;如上图&#xff0c;build只能有一个根节点 2,Entry表示程序的入口 Component表示自定义的组件 Preview表示可以预览 3&#xff0c;图片存放的地方 4&#xff0c; build() {Row() {//图片不需要写后缀Image($r(app.media.icon)).width(300) //宽有两种写法&…

监控摄像机接入GB28181平台如何获取监控视频

各种型号监控摄像头或硬盘录像机接入 GB28181平台配置过程非常简单明了&#xff0c;但有些细节需要注意&#xff0c;避免走弯路。 1、基本要求 &#xff08;1&#xff09;网络要求 总的来说&#xff0c;只要监控设备和GB28181平台的网络是连通的&#xff0c;设备可以主动访问…

问题:学生品德不良的矫正与教育可以采取以下措施()。 #其他#学习方法#微信

问题&#xff1a;学生品德不良的矫正与教育可以采取以下措施()。 A、创设良好的交流环境,消除情绪障碍 B、提高道德认识,消除意义障碍 C、锻炼学生与诱因作斗争的意志力 D、消除习惯惰性障碍 E、发现积极因素,多方法协同进行,促进转化 参考答案如图所示

springboot接收byte[]字节

在Spring Boot中&#xff0c;可以使用RequestBody注解来接收字节流。以下是一个简单的示例&#xff1a; 1. 首先&#xff0c;创建一个控制器类&#xff0c;如ByteController&#xff1a; java import org.springframework.web.bind.annotation.PostMapping; import org.sprin…

TypeScript学习(四):面向对象之类,接口,泛型,命名空间,模块

javascript其实也可以定义类&#xff0c;只是typescript封装以后&#xff0c;变得更像面向对象语言了&#xff0c;几乎和c#,java语法一致。 //一切皆对象&#xff0c;类是对象的抽象描述&#xff0c;对象是类的实例 //类&#xff0c;接口&#xff0c;继承&#xff0c;泛型 /…

【Java笔记】第10章:接口

前言1. 接口的概念与定义2. 接口的声明与语法3. 接口的实现4. 接口的继承5. 接口的默认方法6. 接口的静态方法7. 接口的私有方法8. 接口的作用9. 接口与抽象类的区别10. 接口在Java集合中的应用结语 上期回顾:【Java笔记】第9章&#xff1a;三个修饰符 个人主页&#xff1a;C_G…

contenteditable实现插入标签的输入框功能(Vue3版)

需求&#xff1a;实现一个简易的函数编辑器 点击参数能够往输入框插入标签点击函数能够往输入框插入文本删除能够把标签整体删除输入的参数能够获取到其携带的信息 插入文本 /*** description 点击函数展示到输入框*/ const getValue ({ item, type }: any) > {// 创建…

Apache Doris 基础 -- 数据表设计(使用AUTO_INCREMENT)

导入数据时&#xff0c;Doris将表唯一值分配给自动递增列中没有指定值的行。 1、功能 对于包含自动递增列的表&#xff0c;在数据导入期间: 如果目标列不包括自动递增列&#xff0c;Doris将用生成的值填充自动递增列。如果目标列包括自动递增列&#xff0c;则为该列导入的数…

【echarts】如何制作,横坐标每个日期点如何对应一条竖线的图,以及 markline设置后不生效问题

图的样式如下&#xff1a; 在线演示 每一个日期&#xff0c;对应一条竖线展示。 echarts配置内容&#xff1a; 在线演示 option {xAxis: {type: category,data: [20240601, 20240602, 20240603, 20240604, 20240605, 20240606, 20240607] // X轴数据},yAxis: {type: valu…

HTML label 标签的作用和应用场景

label 标签 作用和语法 label 标签来定义表单控制间的关系&#xff0c;当用户点击该标签时&#xff0c;浏览器会自动将焦点转到和标签相关的表单控件上。 <label for"Name">Number:</label> <input type“text“ name"Name" id"Name…

【leetcode--判断子序列】

写了一版&#xff0c;发现这个记录的顺序不对&#xff0c;又去调试才看出来的&#xff0c;逻辑写错了&#xff0c;最近脑子真的不转。。。 class Solution:def isSubsequence(self, s: str, t: str) -> bool:r []for i in range(len(s)):if s[i] not in t:return Falseels…

Linux学习—Linux安全与防火墙

Linux安全基础 用户账户安全 强密码策略&#xff1a;确保所有用户使用强密码。最小权限原则&#xff1a;仅授予用户完成任务所需的最小权限。 定期更新系统 软件包更新&#xff1a;定期使用包管理器更新系统软件包&#xff0c;以修复安全漏洞。 sudo apt update &&…

MTK联发科MT6897(天玑8300)5G智能移动处理器规格参数

天玑 8300 采用台积电第二代 4nm 制程&#xff0c;基于 Armv9 CPU 架构&#xff0c;八核 CPU 包含 4 个 Cortex-A715 性能核心和 4 个 Cortex-A510 能效核心&#xff0c;CPU 峰值性能较上一代提升 20%&#xff0c;功耗节省 30%。 此外&#xff0c;天玑 8300 搭载 6 核 GPU Mal…

从零开始手把手Vue3+TypeScript+ElementPlus管理后台项目实战七(axios请求头带上token)

本系列项目教程最终演示效果如下&#xff1a; 管理后台在线演示 上节遗留问题 上一节我们看到&#xff0c;页面刷新时&#xff0c;store中的数据丢失。表现在页面上是只要我们刷新页面&#xff0c;当前登录的用户名就丢失。这对使用系统的用户不是十分友好。另外&#xff0c…

uniapp原生插件开发实战——集成Android端的Twitter登陆

Android集成Twitter登陆的官方教程:https://github.com/twitter-archive/twitter-kit-android/wiki 项目创建 首先可以先看下uniapp原生插件开发教程 uniapp原生插件类型分为两种: Module模式:能力扩展,无嵌入窗体的UI控件,类似于功能插件。Component模式:在窗体中内嵌…

自然语言处理:第三十三章FILCO:过滤内容的RAG

文章链接: [2311.08377] Learning to Filter Context for Retrieval-Augmented Generation (arxiv.org) 项目地址: zorazrw/filco: [Preprint] Learning to Filter Context for Retrieval-Augmented Generaton (github.com) 在人工智能领域&#xff0c;尤其是在开放域问答和事…

Go微服务: 关于TCC分布式事务

TCC 分布式事务 T: Try 预处理, 尝试执行&#xff0c;完成所有的业务检查&#xff0c;做好一致性&#xff0c;预留必要的业务资源&#xff0c;做好准隔离性C: Confirm 确认&#xff0c;如果所有的分支Try都成功了, 就到了这个阶段, Confirm 是真正执行业务的过程, 不做任何业务…

【多模态】37、TextSquare | 借助 Gemini-Pro 通过四个步骤来生成高质量的文本问答数据

文章目录 一、背景二、方法2.1 Square-10M2.2 模型结构2.3 使用 Square-10M 进行有监督微调 三、效果3.1 实验设置3.2 Benchmark 测评 论文&#xff1a;TextSquare: Scaling up Text-Centric Visual Instruction Tuning 代码&#xff1a;暂无 出处&#xff1a;字节 | 华中科技…

linux 服务器上离线安装 node nvm

因为是离线环境 如果你是可以访问外网的 下面内容仅供参考 也可以继续按步骤来 node 安装路径 Node.js — Download Node.js nvm 安装路径 Tags nvm-sh/nvm GitHub 后来发现 nvm安装后 nvm use 版本号 报错 让我去nvm install 版本 我是内网环境 install不了 下面 你要 把安…

玄机平台应急响应—apache日志分析

1、前言 apache的日志一共有两个&#xff0c;一个是access.log&#xff0c;这个日志记录了所有对Web服务器的访问&#xff0c;被入侵时重点排查这个。另一个是error.log&#xff0c;错误日志记录了服务器运行期间遇到的各种错误&#xff0c;以及一些普通的诊断信息&#xff0c…