IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 寒假Python之旅part2 -> 正文阅读

[Python知识库]寒假Python之旅part2

寒假Python之旅part 2

?

? 我觉着五章一篇文章应该挺合理,总共二十章,完美)

话不多说开始⑧

2.9~2.13

? 痛改前非的第四天,让我们来康康今天学啥

第 6 章 字典

? 编程语言里出现这两个字还真挺奇怪,不过我的第一反应是:我超!法典!

  • 在Python中,字典是一系列键——值对 。每个 都与一个值相关联,你可以使用来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将 任何Python对象用作字典中的值。

  • 在Python中,字典用放在花括号{} 中的一系列键—值对表示,就像这样

    alien_0 = {'color': 'green', 'points': 5}
    

    冒号前是键,后是值,键——值对用冒号隔开,键——值对之间用逗号隔开

  • 想要访问字典中的值,可依次指定字典名和放在方括号内的键,用中括号

    print(alien_0['color']) 
    green
    
  • 字典是一种动态结构,可随时在其中添加键—值对。(这话说的,列表不也这样吗(

    alien_0['x_position'] = 0
    alien_0['y_position'] = 25
    

    像这样输一个原来没有的键再赋上值即可

    值得一提的是,我手里的教材告诉我添加是不按顺序来的,然鹅我手里的python3.10告诉我其实字典是按顺序添加的(

  • 看得出来字典和列表是有相似之处的,比如空字典就是赋{},修改字典还是赋值,删键——值对也是,不过改和删都得指定好

  • 如果你为了美观想在字典里整回车,注意一下格式

    favorite_languages = {
    	'jen': 'python',  #缩进4格
    	'sarah': 'c', 
    	'edward': 'ruby', 
    	'phil': 'python', #最后的逗号可有可无
    	}
    

    print后面也可以有

    print("Sarah's favorite language is " + 	#加号后回车  
    	favorite_languages['sarah'].title() +   #缩进4格
    	".")
    
  • 遍历字典同样使用for循环,但是有多种情况

    • 遍历所有的键——值对:使用方法item()

      for key, value in user_0.items():  
      	print("Key: " + key)			#key和value都是变量
          print("Value: " + value)
      	
      Key: last 
      Value: fermi
      

      当然,你也不一定键值两个都要打出来…

    • 遍历字典中的所有键:使用方法keys(),但其实遍历字典时,会默认遍历所有的键,所以这个".keys()"可有可无。

      for name in favorite_languages.keys():
      

      不过keys()不止遍历,它会返回一个包含所有键的列表,因此可以对其进行只有再列表里才能做的判断

      if 'erin' not in favorite_languages.keys():
      

      如果想要按某种顺序遍历键,可以用sorted()函数对返回的列表处理

      for name in sorted(favorite_languages.keys()):
      
    • 遍历字典中的所有值:使用方法values(),它会返回一个值列表

      如果想要剔除重复项可使用函数set(),它把列表变成没有重复项,和列表类似的集合)

  • 套娃嵌套:在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。

    看完了,难以言表,连夜去蚌埠安家罢

7 章 用户输入和 while 循环

? 您瞧瞧,这不是老熟人吗)

  • 函数input():函数input() 让程序暂停运行,等待用户输入一些文本。 获取用户输入后,Python将其存储在一个变量中,以方便你使用。其中括号内的是参数,即输入的提示

  • 运算符**+=** 在存储在prompt 中的字符串末尾附加一个字符串

    prompt = "If you tell us who you are, we can personalize the messages you see." 
    prompt += "\nWhat is your first name? "
    print(prompt)
    
    If you tell us who you are, we can personalize the messages you see.  
    What is your first name?
    
  • 使用函数int()来获取数值输入

  • 在python2.7中…

  • while循环:

    while XXXXXX:
    	XXXX
    

    再次说明一下,a += 1a = a + 1的缩写

  • 标志:定义一个变量,用于判断整个程序是否处于活动状态。如果True就好说,要是False就不干了,多说无益,上🐎

    active = True     #注意这!
    while active: 		 #注意这!
    	message = input(prompt)  
    	if message == 'quit': 
    		active = False  #注意这!
    	else:
    		print(message)
    
  • break:简简单单5个字母,轻松退出循环

  • continue:断掉后面的直接从判断条件那开始

  • 但在for 循环中不应修改列表,否则将导致Python难以跟踪其中的元素。(我不懂,听他的就对了)

简简单单做个作业

sandwich_orders=['superhot','pastrami','pastrami','veryhot','pastrami','hhh']
finished_sandwiches=[]
print('五香味没了')
while 'pastrami'in sandwich_orders:
    sandwich_orders.remove('pastrami')
while sandwich_orders:
    print("finished")
    finished_sandwiches.append(sandwich_orders.pop())
print(*finished_sandwiches)

没了
finished
finished
finished
hhh veryhot superhot

还挺少

第 8 章 函数

鸡冻任鑫的函数环节,可以diy函数力!

  • 定义函数:上🐎

    def greet_user():		 #定义
    	"""显示简单的问候语"""	#文档字符串,注释用
    	print("Hello!")
    
  • 像函数传递信息:在上述greet_user(XXX)括号内添加一个变量名,执行函数时提供一个变量值给这个变量XXX即可,像这样greet_user('jesse')

  • 形参实参:上段中,XXX这个变量名是形参,而’jesse’是实参

  • 传递实参:函数调用时会有不同参数

    • 位置实参def describe_pet(animal_type, pet_name):,基于顺序的参数

    • 关键字实参:在调用函数时直接赋值describe_pet(animal_type='hamster', pet_name='harry'),这样就不用管什么顺序了(但是感觉好麻烦)

  • 给形参设定默认值:在定义函数时动手脚,像这样:def describe_pet(pet_name, animal_type='dog'):,此时如果只给一个参数则会被解读为位置实参

  • 返回值:顾名思义,可使用return 语句将值*[HTML]:可以是任何类型。返回到调用函数的代码行

  • Python将非空字符串解读为True,和列表和字典同理

  • 传递任意数量的形参:形参名*toppings 中的星号让Python创建一个名为toppings 的空元组,并将收到的所有值都封装到这个元组中。(toppings没别的意思)

    ? 那么怎么输入任意数量的关键字实参呢?形参**user_info 中的两个星号让Python创建一个名为user_info 的 空字典,并将收到的所有键—值对都封装到这个字典中。不过键值对的输入方式和我们想的不一样:location='princeton'键没有单引号,中间用的也是等号而不是冒号(我完全无法理解,照做就是了)

  • 模块:函数的优点之一是,使用它们可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解得多。你还可以更进一步,将函数存储在被称为模块的独立文件中, 再将模块导入到主程序中。import 语句允许在当前运行的程序文件中使用模块中的代码。 在调用函数之前import 模块名,调用时会有模块名.函数() (也就是说模块就是一个.py后缀的函数库?)

    ? Python读取这个文件时,代码行import pizza 让Python打开文pizza.py,并将其中的所有函数都复制到这个程序中。你看不到复制的代码,因为这个程序运行时,Python在幕后复制这些代码。你只需知道,在making_pizzas.py中,可以使用pizza.py中定义的所有函数。那你tm要那一个小点点干嘛

    ? 如果想要导入特定的函数,from 模块名 import 函数名, function_0, function_1, function_2。若使用这种语法,调用函数时就无需使用句点。由于我们在import 语句中显式地导入了函数make_pizza() ,因此调用它时只需指定其名称。

    ? 使用星号(* )运算符可让Python导入模块中的所有函数:from pizza import *

    注:import 语句中的星号让Python将模块pizza 中的每个函数都复制到这个程序文件中。由于导入了每个函数,可通过名称来调用每个函数,而无需使用句点表示法。然而,使用并非自己编写的大型模块时,最好不要采用这种导入方法:如果模块中有函数的名称与你的项目中使用的名称相同,可能导致意想不到的结果:Python可能遇到多个名称相同的函 数或变量,进而覆盖函数,而不是分别导入所有的函数。 最佳的做法是,要么只导入你需要使用的函数,要么导入整个模块并使用句点表示法。这能让代码更清晰,更容易阅读和理解。这里之所以介绍这种导入方法,只是想让你在阅读别人编写的代码时,如果遇到类似于下面的import 语句,能够理解它们。

  • 使用as给函数指定别名:例:在import 语句中使用from 模块名 import make_pizza as mp ,关键字as 将函数重命名为你提供的别名。

  • 还可以给模块指定别名:import pizza as p

  • 作者的建议:

    ? 如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开

    ? 所有的import 语句都应放在文件开头,唯一例外的情形是,在文件开头使用了注释来描述整个程序。

    ? 应给函数指定描述性名称,且只在其中使用小写字母和下划线。描述性名称可帮助你和别人明白代码想要做什么。给模块命名时也应遵循上述约定。

    ? 每个函数都应包含简要地阐述其功能的注释,该注释应紧跟在函数定义后面,并采用文档字符串格式。

    ? 给形参指定默认值时,等号两边不要有空格:

    ?

第 9 章 类

? 又是看上去非常高级的东西~似乎是模拟用的

  • 创建和使用类:比如创建Dog类,模拟所有狗。类名应采用驼峰命名法 ,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。

class Dog(): 					#从空白创建一个类
	"""一次模拟小狗的简单尝试"""

	def __init__(self, name, age):	#定义方法/函数
		"""初始化属性name和age"""
		self.name = name#获取存在形参name 中的值,并将其存到变量name 中,然后该变量被关联到当前创建的实例。
		self.age = age

	def sit(self):
		"""模拟小狗被命令时蹲下"""
		print(self.name.title() + " is now sitting.")

	def roll_over(self):
		"""模拟小狗被命令时打滚"""
		print(self.name.title() + " rolled over!")

看不懂吗?我也看不懂!

  • 方法__init__():类中的函数称为方法;你前面学到的有关函数的一切都适用于方法。方法__init__()是一个特殊的方法,每当你根据Dog 类创建新实例时,Python都会自动运行它。而两个下划线是为了防止与普通方法产生冲突。

    ? 此方法包括三个形参,其中形参self 必不可少,还必须位于其他形参的前面。创建Dog实例时会自动传入实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。我们创建Dog 实例时,Python将调用Dog 类的方法__init__()。我们将通过实参向Dog() 传递名字和年龄;self 会自动传递,因此我们不需要传递它。每当我们根据Dog 类创建实例时,都只需给最后两个形参(name 和age )提供值。<原谅看不懂的我只能复制粘贴>

  • 以self 为前缀的变量都可供类中的所有方法使用~~(即公交车)~~,我们还可以通过类的任何实例来访问这些变量。self.name = name 获取存储在形参name 中的值,并将其存储到变量name 中,然后该变量被关联到当前创建的实例。self.age = age 的作用与此类似。像这样可通过实例访问的变量称为属性

  • 根据类创建实例:

    class Dog():
    	--snip--   	#省略的在上面
    
    my_dog = Dog('willie', 6) 	#创建实例并传递参数name和age
    
    print("My dog's name is " + my_dog.name.title() + ".")
    print("My dog is " + str(my_dog.age) + " years old.")
    
    • 访问属性:my_dog.name。句点表示法在Python中很常用,这种语法演示了Python如何获悉属性的值。在Dog 类中引用这个属性时,使用的是self.nameself.name是“名字”而不是特定的名字。

    • 调用方法:使用句点表示法来调用Dog 类中定义的任何方法。

  • 给属性(不是形参)指定默认值:很简单,在初始化时加入self.属性名 = 初始值。(不过从形参那直接动手效果应该一样)

  • 修改属性的值:

    • 通过实例直接改:实例名.属性 = XX
    • 通过方法改:把上面那个修改式搬到一个新的方法里
    • 通过方法对属性里的值递增:简单的 += 。加的值是方法的参数。
  • 如果你要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法。

    ? 创建子类时,父类必须包含在当前文件中,且位于子类前面。定义子类时,必须在括号内指定父类的 名称。方法__init__() 接受创建Car 实例所需的信息。继承是这样的:

    class ElectricCar(Car):
    	"""电动汽车的独特之处"""
    
    	def __init__(self, make, model, year):
    		"""初始化父类的属性"""
    		super().__init__(make, model, year)
    

    ? super() 是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用ElectricCar 的父类的方法__init__() ,让ElectricCar 实例包含父类的所 有属性。父类也称为超类(superclass),名称super因此而得名。

  • 给子类添加属性:直接加个属性添上初始值:self.battery_size = 70

  • 重写父类的方法:def fill_gas_tank():像这样直接删掉self

  • 可以将大型类拆分成多个协同工作的小类:self.属性名 = 类名()加上类1名.属性.类的方法名()

  • 导入类:可以将类存至模块里。导入方法和函数一致,不多赘述

    你甚至可以在一个模块导入另一个模块,玩上多米诺骨牌

  • 学会借助外力,白嫖使用别人的库

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 21:05:39  更:2022-02-14 21:07:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:54:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码