Python菜鸟笔记

廉价感情. 提交于 2020-02-25 12:16:29

+号两端为相同类型,只能+加两个整数,或者两个字符串,不能让一个整数和一个字符串相加,不符合python的语法。
布尔值:只有两个,Ture,False。布尔值也可保存在变量中
比较操作符:求值为Ture或False在这里插入图片描述

布尔操作符:and、or和not,求值顺序为先not,后and,最后or
循环:while条件为真时,内部循环,continue条件为真时,内部循环,break条件为假时,内部循环
局部和全局作用域:在所有函数之外赋值的变量,属于‘全局作用域’。处于局部作用域的变量,被称为‘局部变量。’在一个函数中,要么总是全局变量,要么总是局部变量在这里插入图片描述

列表、字典、元组、集合特征:
列表特征:用中括号[ ]括起来
字典特征:用大括号{ }括起来
元组特征:用括号( )括起来
集合特征:用大括号{ }括起来,内无重复元素

面向对象编程:其本质是以建立模型体现出来的抽象思维过程和面向对象的方法,模型用来反映现实世界中事物特征的。

方法后加(‘字符串’),函数后加(参数),
(1)函数:通过“函数名()”的方式进行调用。
(2)方法:通过“对象.方法名”的方式进行调用。

对于字符串,可执行的最简单的操作之一是修改其中的单词的大小写。请看下面的代码,并
尝试判断其作用:
name.py
name = “ada lovelace”
print(name.title())
将这个文件保存为name.py,再运行它。你将看到如下输出:
Ada Lovelace
在这个示例中,小写的字符串"ada lovelace"存储到了变量name中。在print()语句中,方法
title()出现在这个变量的后面。方法是Python可对数据执行的操作。在name.title()中,name后
面的句点(.)让Python对变量name执行方法title()指定的操作。每个方法后面都跟着一对括号,这是因为方法通常需要额外的信息来完成其工作。这种信息是在括号内提供的。函数title()不需要额外的信息,因此它后面的括号是空的。

Python使用加号(+)来合并字符串。在这个示例中,我们使用+来合并first_name、空格和
last_name,{使用+号时,变量名不用加引号,字符串和空格等需加引号}

要在字符串中添加制表符,可使用字符组合\t, 要在字符串中添加换行符,可使用字符组合\n, 还可在同一个字符串中同时包含制表符和换行符。字符串"\n\t"让Python换到下一行,并在
下一行开头添加一个制表符。

使用函数Str()避免类型错误{str(23)}
列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
2.7 小结
在本章中,你学习了:如何使用变量;如何创建描述性变量名以及如何消除名称错误和语法
错误;字符串是什么,以及如何使用小写、大写和首字母大写方式显示字符串;使用空白来显示整洁的输出,以及如何剔除字符串中多余的空白;如何使用整数和浮点数;使用数值数据时需要注意的意外行为。你还学习了如何编写说明性注释,让代码对你和其他人来说更容易理解。最后,你了解了让代码尽可能简单的理念。

3.1列表增删改(0代表位置,‘abc’代表列表中元素)
列表是有序集合(标志为[]),其索引从0开始而不是从1开始。
集合添加元素list.append(‘abc’)或list.insert(0,’bcd’)
方法append默认添加到末尾;方法insert可以在任何位置添加新元素为此,你要指定新元素的索引和值
集合删除元素,如果知道元素位置,使用deldel list[0],
方法pop()默认删除列表末尾的元素,并让你可以接着使用它,list.pop(0)
motorcycles=[‘honda’,‘yamaha’,‘suzuki’]
last_owned=motorcycles.pop()
print(“The last motorcycle I owned was a " + last_owned.title() + “.”)
如果你不确定该用del语句还是pop()方法,可以参考以下标准:如果你要从列表中删除一个元素,且不再以任何方式使用,就使用del语句;如果你要在删除元素后还能继续使用它,就使用方法pop()。
根据值删除元素:list.remove(‘abc’),方法remove只删除第一个指定的值,删除后可以继续使用它的值,如下将remove删除的值存储在too_expensive中:
motorcycles=[‘honda’,‘yamaha’,‘suzuki’,‘ducati’]
print(motorcycles)
too_expensive=‘ducati’
motorcycles.remove(too_expensive)
print(motorcycles)
print(”\nA " + too_expensive.title() + " is too expensive for me.")
3.3使用方法sort()对列表进行永久性排序,sorted进行临时排序
使用方法reverse()永久性修改列表元素的排列顺序
cars=[‘bmw’,‘audi’,‘toyota’,‘subaru’]
cars.sort()
print(cars)
使汽车品牌按照字母顺序排列
cars=[‘bmw’,‘audi’,‘toyota’,‘subaru’]
print(“here is the original list:”)
print(cars)
print("\nhere is the sorted list:")
print(sorted(cars))
print("\nhere is the original list:")
print(cars)
3.4统计列表长度,使用函数len()
在本章中,你学习了:列表是什么以及如何使用其中的元素;如何定义列表以及如何增删元
素;如何对列表进行永久性排序,以及如何为展示列表而进行临时排序;如何确定列表的长度,以及在使用列表时如何避免索引错误。在第4章,你将学习如何以更高效的方式处理列表元素。通过使用为数不多的几行代码来遍历列表元素,你就能高效地处理它们,即便列表包含数千乃至数百万个元素。

4.1for循环
magicians=[‘alice’,‘david’,‘carolina’]
for name in magicians:
print(name)
在for循环后面,没有缩进的代码都只执行一次,不会重复执行
4.2使用函数range()
函数range()让你能够轻松的生成一系列的数字。
for value in range(1,5):
print(value)
该函数结果为1-4,因为Python的差1行为
list函数()可以将range的结果直接转换为列表
numbers=list(range(1,6))
print(numbers)
结果为[1,2,3,4,5]

even_numbers=list(range(2,11,2))
print(even_numbers)
该函数表示从2开始,直到11,每次加2

squares=[]
for value in range(1,11):
square=value**2
squares.append(square)
print(squares)
首先,我们创建了一个空列表,接下来,使用函数range()让Python遍历一遍1~10的值,在循环中,计算当前值得平方,并将结果存储到变量square中,然后,将计算得到的平方值附加到squares末尾,最后,打印列表squares在这里插入图片描述

4.3切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。要输出前三个元素,需要指定索引0~3,这样将输出012三个元素。
players=[‘charles’,‘martina’,‘michael’,‘florence’,‘eli’]
print(“here are my players:”)
for mingdan in players[:3]:
print(mingdan)
4.3复制列表(加上切片,不然副本会和主本同步)
my_foods=(‘pizza’,‘falafel’,‘carrot cake’)
friends_foods=my_foods[:]
print(“my favorite foods are:”)
print(my_foods)
4.4元组
Python将不能修改的值称为不可变的,而不可变得列表被称为元组。元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。
yuanzu=(10,100)
print(yuanzu)
5.1if语句
cars=[‘bmw’,‘audi’,‘toyota’,‘subaru’]

for car in cars:
if car==‘bmw’:
print(car.upper())
else:
print(car.title())
5.2检查,比较
And,or,.in
布尔表达式,不过是条件测试的别名,其结果要么为true,要么为false
5.3if 语句
在if语句中,缩进的作用与for循环中相同。如果符合条件,执行缩进语句的代码,否则忽略
avl_toppings=[‘mushrooms’,‘olives’,‘greenbeans’,‘extra cheese’]
requested_toppings=[‘mushrooms’,‘olives’,‘french fries’]
for requested_topping in requested_toppings:
if requested_topping in avl_toppings:
print(“adding” + requested_topping)
else :
print("sorry,wo don’t have " + requested_topping)
以上简码提供了可用的配料,将顾客所选以单独元素列出称为新数组(以便后来可以进行相加),将新数组与可用配料表相比,得出没有的配料

小结:在本章中,你学习了如何编写结果要么为Ture要么为False的条件测试。你学习了如何编写简单的if语句、if-else语句和if-elif-else结构。在程序中,你使用了这些结构来测试特定的条件,以确定这些条件是否满足。你学习了如何在利用高效的for循环的同时,以不同于其他元素的方式对特定的列表元素进行处理。你还再次学习了Python就代码格式方面提出的建议,这可确保即便你编写的程序越来越复杂,其代码依然易于阅读和理解。
6字典
在Python中,字典是一系列键-值对。每个键都与一个值相关联,你可以使用键来访问预支相关联的值。与键相关联的可以是数字、字符串、列表甚至字典。最简单的字典只有一个键值对:alien_0={‘color’:’green’} color为键,green为值
print(alien_0[‘color’]) 输出字典alien_0中color键的值green
修改键值对,alien_o[‘color’]=’blue’
删除键对值:
使用del语句彻底删除,必须指定字典名和要删除的键,如:del alien_0[‘color’]
遍历字典中的所有键:在不使用字典中的值时,使用方法key()
遍历字典中的所有值:使用方法values(),返回一个值列表
通过对包含重复元素的列表调用set(),可以找吃列表中独一无二的元素
6.1嵌套
有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,称为嵌套。
aliens=[] #列表嵌套字典
for alien_number in range(30):
new_alien={‘color’:‘green’,‘points’:5,‘speed’:‘slow’}
aliens.append(new_alien)
for alien in aliens[:5]:
print(alien)
print("…")

pizza={ #字典嵌套列表
‘crust’:‘thick’,
‘toppings’:[‘mushrooms’,‘extra cheese’],
}
在本章中,你学习了:如何定义字典,以及如何使用存储在字典中的信息;如何访问和修改
字典中的元素,以及如何遍历字典中的所有信息;如何遍历字典中所有的键值对、所有的键和所有的值;如何在列表中嵌套字典、在字典中嵌套列表以及在字典中嵌套字典。

7 input
函数input()让程序暂停运行。等待用户输入一些文本。

message=input(“tell me something ,and i will repeat it back to you:”)
print(message)在这里插入图片描述

运算符+=使两行提示连贯,
pro=“if you tell us your name,”
pro+="\nwe will give a message."在这里插入图片描述

7.1求模运算符
%,表示,它将两个数相除并返回余数
7.2while循环
current_number=1
while current_number<=5:
print(current_number)
current_number+=1

for value in range(1,5):
print(value)
7.2.1使用标志
定义一个变量,用于判断整个程序是否处于活动状态,这个变量称为标志。其充当了程序的交通灯,可以让程序在标志为ture时继续运行,并在任何事件导致标志的值为false时让程序停止运行,这样,在while语句中就只需要检查一个条件—标志的当前值
prompt = “\nTell me something, and I will repeat it back to you:”
prompt += "\nEnter ‘quit’ to end the program. "
 active = True
 while active:
message = input(prompt)
 if message == ‘quit’:
active = False
 else:
print(message)
7.2.2使用break退出循环
prompt = “\nPlease enter the name of a city you have visited:”
prompt += "\n(Enter ‘quit’ when you are finished.) "
 while True:
city = input(prompt)
if city == ‘quit’:
break
else:
print("I’d love to go to " + city.title() + “!”)
7.2.3在循环中使用continue
current_number = 0
while current_number < 10:
 current_number += 1
if current_number % 2 != 0:
continue
print(current_number)
在本章中,你学习了:如何在程序中使用input()来让用户提供信息;如何处理文本和数字
输入,以及如何使用while循环让程序按用户的要求不断地运行;多种控制while循环流程的方式:设置活动标志、使用break语句以及使用continue语句;如何使用while循环在列表之间移动元素,以及如何从列表中删除所有包含特定值的元素;如何结合使用while循环和字典。

8函数
函数是带名字的代码块。
def greet_user(): #定义一个函数
print(“hello!”) #唯一的一行代码
greet_user() #只做一项工作,打印hello

def greet_user(username): #与上述代码类似,向函数传递信息
print(“hello, " + username.title() + “!”)
greet_user(‘jesse’)
8.1实参和形参
在上述函数中,变量username是一个形参(函数完成其工作所需的一项信息),在上述代码greet_user(‘jesse’)中,值’jesse’是一个实参(实参是调用函数时传递给函数的信息)。在greet_user(‘jesse’)中,将实参’jesse’传递给了函数greet_user(),这个值被存储在形参username中。
8.1传递实参
向函数传递实参的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。
位置实参:基于实参顺序;一种动物类型和一个名字,与形参顺序相同
def describe_pet(animal_type,pet_name):
print(”\ni have a " + animal_type + “.”)
print("my " + animal_type + “'s name is " + pet_name.title() + “.”)
describe_pet(‘hamster’,‘harry’)
关键字实参:关键字实参是传递给函数的名称-值对。
def describe_pet(animal_type,pet_name):
print(”\ni have a " + animal_type + “.”)
print("my " + animal_type + “'s name is " + pet_name.title() + “.”)
describe_pet(pet_name=‘harry’,animal_type=‘hamster’)
默认值:编写函数时,可给每个形参指定默认值,在调用函数中给形参提供实参时,Python将使用指定实参值;若没有,则使用默认值。(注:指定实参要放在第二位)
def describe_pet(pet_name,animal_type=“dog”):
print(”\ni have a " + animal_type + “.”)
print("my " + animal_type + "'s name is " + pet_name.title() + “.”)
describe_pet(pet_name=‘willie’)
等效函数调用:位置实参、关键字实参和默认值可混合使用,
8.1返回值(字典)
函数可以处理一些数据,并返回一个或一组值,其返回的值被称为返回值,在函数中,可使用return语句将值返回到调用函数的代码行,返回值让你能够将程序的大部分工作移到函数中完成。也可返回复杂的数据结构,如字典,列表等
def get_formatted_name(first_name, last_name):
full_name={‘first’:first_name,‘last’:last_name}
return full_name
musician=get_formatted_name(‘jimi’, ‘hendrix’)
print(musician)在这里插入图片描述

传递列表:
def greet_users(names):
for name in names:
msg=“hello” + name.title() + “!”
print(msg)
usernames=[‘hannah’,‘ty’,‘margot’]
greet_users(usernames)
在本章中,你学习了:如何编写函数,以及如何传递实参,让函数能够访问完成其工作所需
的信息;如何使用位置实参和关键字实参,以及如何接受任意数量的实参;显示输出的函数和返回值的函数;如何将函数同列表、字典、if语句和while循环结合起来使用。你还知道了如何将函数存储在被称为模块的独立文件中,让程序文件更简单、更易于理解。最后,你学习了函数编写指南,遵循这些指南可让程序始终结构良好,并对你和其他人来说易于阅读。
9类
9.1创建使用类
class Dog(): #定义Dog的类,根据约定,首字母大写的名称指的是类
def init(self,name,age): #类中的函数称为方法,函数的一切都适用于方法
self.name=named #init()是一个特殊的方法,形参比不可少,且位于其它
形参之前,因为Python调用这个__init__()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,指向实例本身的应用,让实例能够访问类中的属性和方法。
self.age=age
def sit(self):
print(self.name.title() + " is sitting.")
def roll_over(self):
print(self.name.title() + " rolled over!")
9.1.1访问属性 (属性包括动作和名称)
my_dog.name,句点表示法在Python中很常用,该语法演示了Python如何获悉属性的值。在这里,Python先找到实例my_dog,再查找与这个实例相关联的属性name。
9.2修改属性的值
直接通过实例进行修改;通过方法进行设置;通过方法进行递增(增加特定的值)。
9.3继承
一个类继承另一个类时,将自动获得另一个类的所有属性和方法,原有的类称为父类,新的称为子类,可以定义自己的属性和方法。
创建子类时,父类必须包含在当前文件中,且位于子类前面。定义子类时,必须在括号内指定父类的名称。
10 文件
with open(‘pi_digits.txt’) as file_object:
contents=file_object.read()
print(contents)
函数open()返回一个表示文件的对象。在这里open(‘pi_digits.txt’)返回一个表示文件pi_digits.txt的对象;Python将这个对象存储在我们将在后面使用的变量中。
方法read()读取这个文件的全部内容,并将其作为一个长长的字符串存储在变量contents中。这样,通过打印contents的值,可将文本内容显示。
关键字with负责打开和关闭文件,在代码块内使用
lines=file_object.readlines():方法readlines()表示从文件中读取每一行,并将其存储在每一个列表中;其结果可以在代码块外使用。
with open(filename,‘w’) as file_object:实参w告诉Python,我们要以写入模式打开这个文件,(r,读取模式;a,附加模式;r+读取和写入模式)
10.1异常
利用try-except寻找错误地方
处理filenotfounderror异常
10.2分析文本
title=“alice in wonderland”
tit=title.split()
print(tit)
方法split()以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到以个列表。
http://gutenberg.org/
10.3存储数据
模块json让你能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。
import json
numbers=[1,2,3,4,5,6]
filename=‘numbers.json’
with open(filename,‘w’) as f_obj:
json.dump(numbers,f_obj)
在本章中,你学习了:如何使用文件;如何一次性读取整个文件,以及如何以每次一行的方
式读取文件的内容;如何写入文件,以及如何将文本附加到文件末尾;什么是异常以及如何处理程序可能引发的异常;如何存储Python数据结构,以保存用户提供的信息,避免用户每次运行程序时都需要重新提供。
11 测试代码
本章中,学习如何使用Python模块unittest中的工具来测试代码,

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!