【笔记】Python编程 从入门到实践 第二版(基础部分)
1 字符串相关函数
- .title() # 将字符串每个单词的首字母大写
- .upper() #不改变字符串变量的值
- .lower() #不改变字符串变量的值
- f"{var} ,字符串" # 将变量和字符串格式化
- .rstrip() # 去除字符串尾空格,暂时的,再次访问还原
- .lstrip() # 去除字符串头空格
- .strip() # 去除字符串 头和尾的空格
- .split() # 以空格 将字符串拆分成列表
2 计算符号
- 3**2 # 9 3的2次方
- 1_000_0000 # 大数可以使用_分割 不会影响
3 import this #Python之禅
4 列表
特定顺序排列元素组成;元素间可无关系(不必同类型);索引从0开始;-1表示最后一个元素;
- .append() # 列表末尾添加元素
- .insert(index,var) # 在index处插入一个值,后面依次右移
- del list[index] # 删除index索引处元素,后面依次左移
- .pop() # 删除列表尾一个元素
- .pop(index) # 删除index处元素
- .remove(var) # 删除列表中第一出现的var
- .sort() # 按照字母表顺序,大小排序;永久性;字母数字不可混合排序;
- sorted(list) # 临时排序,再次访问还原
- .reverse() # 反转列表顺序
- len(list) # 确定列表长度
- 遍历列表
# 依据冒号和缩进 for var in list: print(var)
- range 创建数值列表
# 1 2 3 4 ;range(m,n) 最后m到n-1;
- for value in range(1,5):
print(value)
- var_list=list(range(1,5))
print(var_list)
- range(2,11,2)
#从2开始,不断加2,一直达到或者超过11
- 列表解析
squares=[value**2 for value in range(1,11)] print(squares) # 输出 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
- list[0:3] # 返回索引0 1 2 元素
- list[:4] # 返回前4个元素
- list[2:] # 返回第三个到最后一个元素
- list[-2:] # 返回倒数两个元素
- list[:] #复制列表;如果是list2=list1,只是将list2指针指向list1,并没有真正复制创建一个新list
- 检查一个值在不在列表中
var_list=["nihao","nihaoa","nizhendehao"] "nihao" in var_list "nibuhao" not in var_list
5 元组
- 不可变的列表
- 定义 ,严格的说元组是由逗号标识的,定义只包含一个元素的元组,也必须在这个元素后面加上逗号,所以 dimensions=200,50 也是可以的
dimensions=(200,50) #元组使用圆括号 print(dimensions[0])
- 修改元组变量,虽然不能修改元组的元素,但是可以给存储元组的变量重新赋值
dimensions[0]=250 # 这个是错误的 dimensions=(250,50) # 这个是合法的
6 字典
- 字典是一系列键值对,与键相关联的值可以是数、字符串、列表乃至字典等任意一个Python对象。
var_dic={'color':'green','point':5} # 创建字典
print(var_dic['color'])
- 添加
var_kong_dic={} # 创建一个空的字典
var_kong_dic['nihao']="nihao" # 在字典中添加键值对
var_kong_dic['nibuhao']="nibuhao"
print(var_kong_dic)
- 修改
var_kong_dic['nihao']="How are you?" # 修改值 print(var_kong_dic)
- 删除
del var_kong_dic['nibuhao'] #删除键值对 print(var_kong_dic)
- 获取
point_value=var_kong_dic.get('point',"No point value assigned")
#直接打印字典不存在键值报错,get不存在时返回第二个参数;没有指定第二个参数返回None
print(point_value)
- 遍历
# 添加几个值做演示
var_kong_dic['cnihaos']="nihao"#在字典中添加键值对
var_kong_dic['anihaoss']="nihao"#在字典中添加键值对
for k,v in var_kong_dic.items():
print("Key:"+k)
print("Value:"+v)
- 获取字典 键的 列表 # 同样的,值 values
print(var_kong_dic.keys()) print(type(var_kong_dic.keys()))
- 排序遍历
for name in sorted(var_kong_dic.keys()): print(name)
- 删除重复遍历
for var_values in set(var_kong_dic.values()) print(var_values)
- 区别 集合
# 集合 不会以特定的顺序存储元素
var_jihe={'python','java','C#'}
print(var_jihe)
字典 列表
alien_0={'color':'green','points':5}
alien_1={'color':'red','points':10}
alien_2={'color':'yellow','points':15}
aliens=[alien_0,alien_1,alien_2]
print(aliens)
7 函数相关
- input函数
- 让程序暂停运行,等待用户输入并将用户输入赋值给一个变量,其参数是向用户显示的提示
message=input("Pleaseinputsomething:")
print(message) # input获取的都是字符串类型
- 强制类型转换
age=input("Howoldareyou?\n")
print(type(age))
print(":"+age)
age=int(age) # 强制类型转化
print(type(age))
print(":"+str(age)) # 输入字符串+数字会报错,所以还需要再来一次类型转换
- 传递任意数量的实参
形参中的 * 让Python创建一个空元组(不可变),并将收到的所有值都封装在这个元组中、
defmake_pizza(*toppings):
""""打印顾客所点的所有配料"""
print(toppings)
print(type(toppings))
make_pizza('peperoni')
make_pizza('mushrooms','greenpepers','extracheese')
- 使用任意数量的关键字实参
- 形参中的 ** 让Python创建一个空字典,将所有名称值对都放在字典中
defbuild_profile(first,last,**user_info):
"""创建一个字典,其中包含我们知道的有关用户的一切"""
user_info['first_name']=first
user_info['last_name']=last
returnuser_info
user_profile=build_profile('albert','einstein',location='princeton',field='physics')
print(user_profile)
8 读取/写入 文件
- 读取整个文件
#原文件中的换行会被读取,但是打印末尾会多一个空行,因为read() 到达文件末尾时会返回一个空字符串,而将这个空字符串显示出来就是一个空行,如果要去除空行,就在字符串末尾加一个 rstrip()
with open("pi.txt") as file_object:
contents=file_object.read()
print(contents)
- 逐行读取
#逐行读取每行末尾都会有一个换行符,所以需要加一个rstrip去除
with open("pi.txt") as file_object:
for line in file_object:
print(line.rstrip())
- 创建一个包含文件各行内容的列表
with open("pi.txt") as file_object:
lines=file_object.readlines()
print(type(lines))
print(lines)
print("\n")
for line in lines:
print(line.rstrip())
- 写入空文件
# 这样会覆盖掉原文件中的内容,打开文件时的w参数,a 附加模式(在文件末尾添加不会覆盖原内容),r+读写模式,省略参数默认r 只读模式
with open("pi.txt",'w') as file_object:
file_object.write("I love programming.")
with open("pi.txt",'a') as file_object:
file_object.write("\nI love programming,too.")
- json 存储与读取
import json
numbers=[2,3,4,5,6,9]
# 存储
filename='numbers.json'
with open(filename,'w') as f:
json.dump(numbers,f)
f.close()
# 读取
file_name2='numbers.json'
#异常处理
try:
with open(file_name2,'r') as f:
read_number=json.load(f)
except FileNotFoundError:
print("The file is not found!")
else:
print(read_number)
print(type(read_number))
9 测试
- 测试函数
- name_function.py
def get_formatted_name(first,last,middle=''):
"""形参中指定默认值得形参 middle只能放在最后"""
if middle:
full_name=f"{first}.{middle}.{last}"
else:
full_name=f"{first}.{last}"
return full_name
- test_name_function.py
import unittest
# 导入单元测试
from name_function import get_formatted_name
class NameTestCase(unittest.TestCase):
"""继承 unittest.TestCase"""
def test_first_last_name(self):
"""方法名必须test打头,这样才能自动运行"""
formaated_name=get_formatted_name("jone","json")
self.assertEqual(formaated_name,"jone.json")
"""断言方法"""
def test_test_first_last_middle_name(self):
formatteed_name=get_formatted_name("A","B","C")
self.assertEqual(formatteed_name,"A.B.C") # 形参顺序不对会报错的
if __name__=='__main__':
unittest.main()
- 测试类
- survey.py
class AnonymousSurvey:
"""构造函数"""
def __init__(self,question):
"""存储 问题和 答案的变量"""
self.question=question
self.responses=[]
"""显示调查问卷"""
def show_question(self):
print(self.question)
"""存储单份调查问卷"""
def store_response(self,new_response):
self.responses.append(new_response)
"""显示所有答案"""
def show_results(self):
print("Survey Results:")
for var_response in self.responses:
print(f"-{var_response}")
- test_survey.py
# 导入单元测试 import unittest # 导入测试的类文件 from survey import AnonymousSurvey class TestAnonymousSurvey(unittest.TestCase): """使用setUp函数 创建一个所有方法都可以使用的类和答案列表""" def setUp(self): question="What language did you first learn to speak?" self.my_survey=AnonymousSurvey(question) self.responses=['English','Chinese','Janpanese'] def test_store_single_reponse(self): self.my_survey.store_response(self.responses[0]) self.assertIn(self.responses[0],self.my_survey.responses) def test_store_three_reponses(self): for reponse in self.responses: self.my_survey.store_response(reponse) for reponse in self.responses: self.assertIn(reponse, self.my_survey.responses) if __name__=='__main__': unittest.main()
【笔记】Python编程 从入门到实践 第二版(基础部分)的更多相关文章
- #Python编程从入门到实践#第二章笔记
1.变量 (1)变量名只能包含字母.数字和下划线,不能包含空格 (2)不要将python关键字与函数名作为变量名 (3)简短有描述性,避免使用小写字母l和大写字母O (4)python 始终 ...
- Python编程从入门到实践笔记——文件
Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...
- #Python编程从入门到实践#第四章笔记
#Python编程从入门到实践#第四章笔记 操作列表 1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...
- Python编程从入门到实践笔记——异常和存储数据
Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...
- Python编程从入门到实践笔记——类
Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...
- Python编程从入门到实践笔记——函数
Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...
- Python编程从入门到实践笔记——用户输入和while循环
Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...
- Python编程从入门到实践笔记——字典
Python编程从入门到实践笔记——字典 #coding=utf-8 #字典--放在{}中的键值对:跟json很像 #键和值之间用:分隔:键值对之间用,分隔 alien_0 = {'color':'g ...
- Python编程从入门到实践笔记——if语句
Python编程从入门到实践笔记——if语句 #coding=utf-8 cars=['bwm','audi','toyota','subaru','maserati'] bicycles = [&q ...
随机推荐
- harbor搭建及使用
harbor搭建及使用 1 系统及软件版本 1.1 系统版本 # uname -a Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP ...
- 深入探索Glide图片加载框架:做了哪些优化?如何管理生命周期?怎么做大图加载?
前言 Glide可以说是最常用的图片加载框架了,Glide链式调用使用方便,性能上也可以满足大多数场景的使用,Glide源码与原理也是面试中的常客. 但是Glide的源码内容比较多,想要学习它的源码往 ...
- Pptx的形状转为WPF的Geometry
本文是将演示如何解析pptx文件的形状到WPF当中,并且绘制显示出来 安装Openxml sdk 首先,我们先安装nuget的openxml sdk,下面两种方式都可以安装: nuget包管理器控制台 ...
- CVPR2020最新论文扫描盘点(上)
CVPR2020最新论文扫描盘点(上) 最近计算机视觉三大顶会之一CVPR2020接收结果已经公布,一共有1470篇论文被接收,接收率为22%,相比去年降低3个百分点,竞争越来越激烈.这里整理来自Tw ...
- deeplearning算法优化原理
deeplearning算法优化原理目录· 量化原理介绍 · 剪裁原理介绍 · 蒸馏原理介绍 · 轻量级模型结构搜索原理介绍 1. Quantization Aware Training量化介绍1.1 ...
- 中继TensorRT集成
中继TensorRT集成 介绍 NVIDIA TensorRT是用于优化深度学习推理的库.这种集成将使尽可能多的算子从Relay转移到TensorRT,从而无需调整调度,即可在NVIDIA GPU上提 ...
- .NET平台系列22:.NET Core/.NET5/.NET6 对比 .NET Framework
系列目录 [已更新最新开发文章,点击查看详细] 在我的博客<.NET平台系列2 .NET Framework 框架详解>与 <.NET平台系列7 .NET Core 体系结构 ...
- UiPath 中 List 集合的实例化与使用
>>>跳过BB,空降正文<<< 目录 前言 正文 1. 创建 List 变量 2. 实例化 List 变量 3. 集合的使用 后记 前言 大家好呀,我是 白墨,一个 ...
- springboot2.x整合tkmapper
springboot整合tkmapper 1.导入pom依赖 1.1 导入springboot的parent依赖 <parent> <artifactId>spring-boo ...
- Java接口以及匿名内部类,静态代码块
接口 接口中只能定义public并且是final的公共静态常量,不允许定义变量. 抽象类可以定义抽象方法和非抽象方法,接口中只能定义公共的,抽象的实例方法. 接口只能由其他接口实现继承 子接口继承的目 ...