java8 朗姆表达式,Python基础

本文摘自<>,为我的总结文档python

第一部分 基础知识

第一章 起步

无git

第二章 变量和简单数据类型

2.1 变量

-变量命名规则:编程

以字母、数字和下划线命名,不能以数字开头(不容许使用$符)

python建议变量以小写字母加下划线命名(非驼峰命名方式),变量命名规则应简短又具备描述性

2.2 数据类型

-字符串api

python中以引号(包括单引号或双引号)包含的一系列字符称之为字符串,如:

"Hello world"数组

'Hello world'app

这种灵活性能够在字符串中包含双引号或单引号,如:less

'Tom told lily,"Python is my favorite language"'dom

"One of Python's strength is its diverse and supportive community"    #python的强大缘由之一是它的多样性及支持社区python2.7

字符串方法:

修改字符串大小写:函数

title()    #单词首字母大写,其它部分小写

upper()  lower()

字符串拼接:+

使用制表符或换行符来添加空白:\t \n

删除空白:lstrip()  rstrip()  strip()

1 #2-3

2 name1 = "Gric"

3 print("Hello"+name1+",would you like to learn some Python today?")4 #2-4

5 name2 = "Jimmy"

6 print("Upper name:"+name2.upper())7 print("Lower name:"+name2.lower())8 print("First Character Upper name:"+name2.title())9 #2-5

10 name3="Alber Einstein"

11 print(name3+'once said,"A person who never made a mistake never tried anything new."')12 #2-6

13 famous_person=name314 message=famous_person+'once said,"A person who never made a mistake never tried anything new."'

15 print(message)16 #2-7

17 name4="Elic"

18 print("LStrip name:"+name4.lstrip()+"\tRStrip name:"+name4.rstrip()+"\nStrip name:"+name4.strip())

-数字

整数

在python中,可对整数执行加(+)、减(-)、乘(*)、除(/)运算,Python还支持运算次序

注意:在python2中,整数相除结果为整数,小数位被截断,若要保留小数位,至少将除数或被除数之一设置为浮点数

python以**表明幂运算,如2**3  #结果为8

浮点数

使用函数str()避免类型错误

在python中,字符串后面的数字不能默认为字符串,使用函数str()将其转换为字符串

注:可经过int()、long()、float()等函数将字符串转换为数字

-注释  #

-python之禅

关键字:import this

第三章 列表简介

3.1 列表是什么

列表由一系列按特定顺序排列的元素组成

列表名建议由复数组成(如letters)

列表由方括号([])组成,并用逗号隔开其中的元素,如:

bicycles=['trek','cannondale','redline','specialized']

3.2 添加、删除、修改列表

-访问列表元素

#index=0,1,2...

#index能够为负数(从-1开始),用于访问倒数第n个元素,如-2返回倒数第二个列表元素,-3返回倒数第三个列表元素

list_name[index]

1 #3-2

2 names=['huayongli','huangxiaoyan','hetao','fanhongtao','hujinlin','shixiang']3 for name innames:4 print("Hello"+name+",nice to meet you")5 #3-3

6 vehicles=['Honda motocyle','Audi car','Fenghuang bycycles']7 print("\nI would like to own a"+vehicles[0])

-修改、添加和删除元素

修改:list_name[index]=new_value

添加:

list_name.append(value)   #在列表末尾添加

list_name.insert(index,value)     #在列表中插入元素,index可为负数,表示在倒数某元素前插入新元素

删除:

del list_name[index]

list_name.pop()   #弹出栈顶元素(即删除末尾元素)

list_name.pop(index)    #弹出指定位置元素

list_name.remove(value)    #删除某值,只能删除列表中的第一个指定值   #列表长度len(list_name)

1 definvitation_message(names):2 for name innames:3 print(name.title()+",今天晚上到我家作客");4 #3-4

5 guest_names=['朱守斌','沈康','傅相存']6 invitation_message(guest_names)7 #3-5

8 print("\n")9 print(guest_names[1]+"今晚没有空")10 guest_names[1]="仁波"

11 invitation_message(guest_names)12 #3-6

13 print("\n我有一个更大的餐桌,因此我想邀请更多的客人")14 guest_names.insert(0,"崔强")15 guest_names.insert(int(len(guest_names)/2),"傅磊")16 guest_names.append("傅勇")17 invitation_message(guest_names)18 #3-7

19 print("\n个人餐桌今晚不能按时送达")20 while len(guest_names)>2:21 guest_name =guest_names.pop()22 print(guest_name+",很是抱歉,因为个人餐桌今晚不能按时送达,没办法请您来家里作客了,咱们改日再约吧。再次致歉!")23 print("\n")24 for guest_name inguest_names:25 print(guest_name+",个人餐桌不能按时送达,可是您仍在受邀之列,请按时参加!")26 while len(guest_names)>0:27 guest_names.pop()28 print("")29 if len(guest_names)==0:30 print("受邀嘉宾名单被清空")31 else:32 print("受邀嘉宾名单未清空")

3.3 组织列表

-使用sort()对列表进行永久性排序  list_name.sort([reverse=True])

-使用sorted()对列表进行临时排序  sorted(list_name,[reverse=True])

-使用reverse()倒着打印列表  list_name.reverse()  #reverse()方法永久性地修改列表元素的排列顺序

1 #3-8

2 scenics=['Himalayas','Great Wall','Fuji','Taj Mahal','Bali']3 print("Scenics:"+str(scenics))4 print("\nSorted scenics:"+str(sorted(scenics)))5 print("\nScenics:"+str(scenics))6 print("\nReverse Sorted scenics:"+str(sorted(scenics,reverse=True)))7 print("\nScenics:"+str(scenics))8 scenics.reverse()9 print("\nReverse scenics:"+str(scenics))10 scenics.reverse()11 print("\nReverse scenics:"+str(scenics))12 scenics.sort()13 print("\nScenics sort:"+str(scenics))14 scenics.sort(reverse=True)15 print("\nReverse scenics sort:"+str(scenics))

运行结果:

0f2aaf06f87f0c62323b4c680835d207.png

第四章 操做列表

4.1 遍历列表

for list_name in list_names:

loop operation   #循环内操做

out loop operation   #循环结束后的系列操做

4.2 缩进

python经过缩进来判断程序的结构

4.3 建立数值列表

-函数range()                                   #range:范围

range(start,end[,step])   #取[start,end)之间的数值,step为可选参数,用于设置步长

1 #打印1-10之间的奇数

2 for value in range(1,11,2):3 print(value,end=" ")

运行结果:

1e935012d625fc548d97ba9b6c601ebd.png

-函数list()与函数range()

函数list()与range()结合可生成数字列表

print(list(range(1,5)))   #[1,2,3,4]

1 eg.生成数字1-10的平方值2

3 squares=[]4 for i in range(1,11):5 squares.append(i**2)6 print(squares)

测试结果:

0dd050f2ba0247723da9fbd2195b10a3.png

-对数字列表进行简单的统计

max(list_name)  #统计最大值

min(list_name)  #统计最小值

sum(list_name)  #统计列表和

-列表解析

列表解析将for循环和建立新元素的代码合并成一行

# 生成数字1-10的平方值

squares=[i**2 for i in range(1,11)]print(squares)

测试结果:

786ce33f2d3dcf141337da85cb536894.png

4.4 使用列表的一部分

-切片

#注意:如下m、n的值都可觉得负值

list_name(m:n)  #输出list列表中[m,n)之间的值

list(m:)  #输出list列表中[m,end]之间的值,

list(:n)  #输出list列表中[start,n]之间的值

-复制列表

new_list=list_name[:]

-元组

不可改变的列表被称为元组,形式上用圆括号括起来而非方括号,如

(1,2,3,4,5)

第五章 if语句

-if语句模型

#elif与else都可以省略

#Python只执行if-elif-else结构中的一个代码块,它依次检查条件测试,直到遇到经过了的条件测试,执行后面的语句。执行完成后,将跳过结构中余下的测试,执行紧跟在结构后面的代码

#若是只执行一个代码块,就使用if-elif-else结构;若是要运行多个代码块,就使用一系列独立的if语句

if conditional_test_1:

do sth...

elif conditional_test_2:

do sth...

elif conditional_test_n:

do sth...

else:

do sth...

-逻辑表达式

Python中检查是否相等时区分大小写  #使用函数lower()解决该问题,函数lower()不会改变变量的大小写

检查多个条件使用and与or

检查列表中是否(不)包含某个值使用(not)in

-if语句与列表

if list_names   #列表中元素不为空时为true

-Python建议,在诸如==、>=和<=等比较运算符两边各添加一个空格

第六章 字典

6.2 使用字典

字典是一系列键-值对,与键相关联的值能够是数字、字符串、列表乃至字典。字典格式以下:

{"key1":"value1","key2":"value2",...,"keyn":"valuen"}

-字典添加键-值对

dictionary_name[key]=value

-访问字典中的值

dictionary_name[key]

-删除键-值对

del dictionary_name[key]  #删除的键-值对永久消失

6.3遍历字典

#遍历key-value值

for key,value in dictionary_name.items()  #key、value能够是任意值

#遍历key值

for key in dictionary_name.keys()  #key值的遍历顺序随机

按顺序遍历字典中的key值

for key in sorted(dictionary_name.keys())

#遍历value值

for value in dictionary_name.values()

去除重复项

for value in set(dictionary_name.values())

6.4 嵌套

字典、列表能够相互嵌套或自嵌套

1 试一试2

3 #6-1

4 friend ={5 "first_name":"shen",6 "last_name":"kang",7 "age":30,8 "city":"hangzhou"

9 }10 print("My friend's first name is:"+friend["first_name"].title())11 print("My friend's last name is:"+friend["last_name"].title())12 print("My friend's age is:"+str(friend["age"]).title())13 print("My friend's living city is:"+friend["city"].title())14

15 #6-2

16 lucky_number ={17 "zhushoubin":18,18 "fuxiangcun":23,19 "shenkang":6,20 "yangrongling":8,21 "qiyandi":1

22 }23 print("\nzhushoubin like the number:"+str(lucky_number["zhushoubin"]))24 print("fuxiangcun like the number:"+str(lucky_number["fuxiangcun"]))25 print("shenkang like the number:"+str(lucky_number["shenkang"]))26 print("yangrongling like the number:"+str(lucky_number["yangrongling"]))27 print("qiyandi like the number:"+str(lucky_number["qiyandi"]))28

29 #6-3

30 dictionary ={31 "print" : "打印",32 "and" : "逻辑与",33 "or" : "逻辑或",34 "**" : "幂运算",35 "+" : "加法运算"

36 }37 print("\nprint:\n\t"+dictionary["print"])38 print("and:\n\t"+dictionary["and"])39 print("or:\n\t"+dictionary["or"])40 print("**:\n\t"+dictionary["**"])41 print("+:\n\t"+dictionary["+"])42

43 #6-4

44 print("")45 for key,mean indictionary.items():46 print(key+":\n\t"+mean)47

48 #6-5

49 river_countries={50 "Nile":"Egypt",51 "Changjiang":"China",52 "Missouri":"America"

53 }54 print("")55 for river,country inriver_countries.items():56 print("The"+river+"runs through"+country)57

58 print("\nRiver:")59 for river inriver_countries.keys():60 print(river," ")61

62 print("\nCountry:")63 for country inriver_countries.values():64 print(country," ")65

66

67

68 #6-6

69 print("")70 members=["fuxiangcun","sunmiaomiao","zhubin","qiyanru","qiyandi"]71 for member inmembers:72 for person inlucky_number.keys():73 if member ==person:74 print(person.title()+",thank you for your participation in the survey")75 flag=False76 break

77 if member !=person:78 print(member.title()+",would you like participation in the survey")79

80 #6-7

81 friend2 ={82 "first_name":"yu",83 "last_name":"zhongmin",84 "age":27,85 "city":"xuancheng"

86 }87

88 friend3 ={89 "first_name":"xu",90 "last_name":"dan",91 "age":33,92 "city":"xiaoxian"

93 }94

95 friends =[friend1,friend2,friend3]96

97 for friend infriends:98 friend_info(friend)99

100 #6-9

101 favourite_places_dictionary={102 "yuzhongmin":["yunnan","dali","beijing"],103 "fuxiangcun":["shanghai","sanya",""],104 "zhushoubin":["japan","america"]105 }106

107 for person,favourite_places infavourite_places_dictionary.items():108 print("\n"+person.title()+"like places:",end="")109 for favourite_place infavourite_places:110 print(favourite_place.title(),end=" ")111

112 #6-11

113 cities={114 "Beijing":{115 "country":"China",116 "population":21730000,117 "fact":"the capital of China"

118 },119 "Paris":{120 "country":"France",121 "population":11000000,122 "fact":"romatic capital"

123 },124 "New York":{125 "country":"America",126 "pupulation":8510000,127 "fact":"disire city"

128 }129 }130 print("")131 for city,describes incities.items():132 print(city+":")133 for describe,value indescribes.items():134 print(" "+describe+":"+str(value))

第七章 用户输入和while循环

7.1 input函数

#python2.7中使用raw_input()输入

#python2中也有input()函数,它将用户的输入解读为代码并尝试运行它们

message=input("description")

input输入均为字符串,可用int()函数转换为数字

7.2 while循环

break continue

for循环与while循环遍历列表

for循环与while循环均可以遍历列表,可是for循环中不该修改列表,不然将致使Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while循环

while循环与列表、字典结合

while list_name:  #循环不断运行,直到列表为空

while value in list_name:   #循环不断进行过,判断value是否在list_name中

1 #7-1

2 car=input("What car would you want to lease?\n")3 print("Let me see if I can find you a"+car)4

5 #7-2

6 people_number=input("\nHow many people are here,please!\n")7 if int(people_number)>8:8 print("I'm very sorry,we have not table!")9 else:10 print("Yeah,we hava a table,welcome!")11

12 #7-3

13 number=input("\nPlease input a number\n")14 if int(number)%10 ==0:15 print(number+"是10的整数倍")16 else:17 print(number+"不是10的整数倍")18

19 #7-4

20

21 message = "\nWhat ingredients do you want to add in pizza?\22 +\nYou can input 'q' to end the program\n"

23 whileTrue:24 ingredient=input(message)25 if ingredient != 'q':26 print("Ok,we will add"+ingredient+"in your pizza")27 else:28 break

29

30 #7-5

31

32 message="\nHow old are your?"\33 +"\nYour can enter 'q' to end the progress!\n"

34 age =input(message)35 while age != "q":36 ifage.isdigit():37 if int(age) > 12:38 print("The ticket is 12 dollars")39 elif int(age) > 3 and int(age) <= 12:40 print("The ticket is 10 dollars")41 elif int(age) <= 3 and int(age) >0:42 print("Baby are free")43 else:44 print("Print wrong!")45 else:46 print("Print wrong!")47 if age != 'q':48 age =input(message)49

50 #7-8

51 sandwich_orders=["hardark","jeokea","pastrami","oswere","pastrami","opds","pastrami"]52 finished_sandwich=[]53 whilesandwich_orders:54 sandwich =sandwich_orders.pop()55 print("I made your"+sandwich+"sandwich")56 finished_sandwich.append(sandwich)57 print("\nI have made these sandwich:")58 for sandwich infinished_sandwich:59 print(sandwich,end=" ")60

61 #7-9

62 print("\n")63 while "pastrami" infinished_sandwich:64 finished_sandwich.remove("pastrami")65 for sandwich infinished_sandwich:66 print(sandwich,end=" ")

第八章 函数

8.1 函数编写指南

应给函数指定描述性名称,且只在其中使用小写字母和下划线

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

def function_name():

"""

annotation

...

"""

function_body...

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

def function_name(parameter_0,parameter_1='default value')

定义函数时,若是形参不少,长度过长,可在函数定义中输入左括号按回车键,并在下一行按2次Tab键,从而将形参列表和只缩进一层的函数体区别开来

def function_name(

parameter_0,parameter_1,parameter_2,

parameter_3,...,parameter_n):

function body...

建议在相邻的函数之间使用两个空行将其隔开

8.2 定义函数

def function_name(parameter_name1,parameter_name2,...,parameter_namen):  #参数能够为空

funciton_body

function_name(parameter_value1,parameter_value2,...,parameter_valuen)  #调用函数体

8.3 参数类型

位置实参

关键字实参  传递给函数的名称-值对,可直接在实参中将名称和值关联起来

function_name(parameter_name1=parameter_value1,parameter_name2=parameter_value2,...,parameter_namen=parameter_valuen)

默认值  编写函数时,可给每一个形参指定默认值。当显式的给指定默认值的形参提供实参时,Python将忽略这个形参的默认值

使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参

8.4 返回值

在函数中,可使用return语句将值返回到调用函数的代码行

返回简单值

可以使用默认值(空字符串)让实参变成可选的

def function_name(parameter_name1,parameter_name2,...,parameter_namen=''):

...

if parameter_namen:   #Python将非空字符串解释为True

...

else:

...

...

返回字典、列表

禁止函数修改列表  使用列表实参的副本

"""

虽然向函数传递列表的副本能够保留原始列表的内容,但除非有充足的理由这样作,不然仍是传递原始列表——避免函数花时间和内存建立副本,从而下降了效率,在处理大型列表时尤为如此

"""

function_name(function_value[:])

8.5 传递任意数量的参数

传递任意数量的实参

"""

形参名*parameter_name中的星号让Python建立一个名为parameter_name的空元祖,并将收到的全部值都封装到这个元组中

若是要让函数接受不一样类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后

"""

def function_name(*parameter_name):

...

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

def function_name(**parameter_name):

...

8.6 将函数存储在模块中

导入整个模块

import module_name [as alias]

module_name.function_name()   #添加别名后可使用 alias.function_name

导入特定的函数

from module_name import function_name [as alias]

fuction_name()    #alias()

#导入模块中的多个函数

from module_name import function_name1,function_name2,...,function_namen

#导入模块中的全部函数

from module_name import *

1 #8-1

2 defdisplay_message():3 print("I will learn Function in this lesson")4

5 display_message()6

7 #8-2

8 deffavorite_book(title):9 print("One of my favorite books is"+title)10

11 favorite_book("Alice in wonderland")12

13 #8-3

14 defmake_shirt(size,word):15 print("The T-shirt size is"+size+"and the word on the T-shirt is \""+word+"\"")16

17 make_shirt("XXL","I love my motherland!")18

19 #8-4

20 def make_shirt(size,word="I love Python"):21 print("The T-shirt size is"+size+"and the word on the T-shirt is \""+word+"\"")22

23 make_shirt("XXL")24 make_shirt("XL")25 make_shirt("M","I love Java")26

27 #8-5

28 def describe_city(city,country="China"):29 print(city+"is in"+country)30

31

32 describe_city("Beijing")33 describe_city("Shanghai")34 describe_city("New York","America")35

36 #8-6

37 defcity_country(city,country):38 return "\""+city+","+country+"\""

39

40 print(city_country("Santiago","Chile"))41 print(city_country("Tokyo","China"))42 print(city_country("Beijing","China"))43

44 #8-7

45 defmake_album(singer,album_name):46 album = {"singer":singer,"album_name":album_name}47 returnalbum48

49 print(make_album("Join","看我72变"))50 print(make_album("Jay Chou","依然范特西"))51 print(make_album("Andy","Everyone is NO.1"))52

53 #8-8

54 message = "\n请输入专辑的歌手和名称"

55 message += "\n您能够随时输入q键取消该操做"

56 whileTrue:57 print(message)58 singer = input("请输入歌手名:")59 if singer == "q":60 break

61 else:62 album_name = input("请输入专辑名:")63 if album_name == "q":64 break

65 else:66 album={"singer":singer,"albume_name":album_name}67 print(album)68

69 #8-9

70 magacians=["大卫·科波菲尔","刘谦","傅琰东","刘世杰"]71

72 defshow_magicians(names):73 for name innames:74 print(name)75

76 show_magicians(magacians)77

78 #8-10

79

80 defmake_great(names):81 i =082 while i

85

86 make_great(magacians)87 show_magicians(magacians)88

89 #8-11

90 defmake_great(names):91 i =092 great_magacians =[]93 whilenames:94 great_magacians.append("伟大的魔术师:" +names.pop())95 returngreat_magacians96

97 show_magicians(make_great(magacians[:]))98 show_magicians(magacians)99

100 #8-12

101 def make_pizza(*toppings):102 print("\nMake pizza for this toppings:")103 for topping intoppings:104 print("-"+topping)105

106 make_pizza("Dried yeast")107 make_pizza("Dried yeast","One egg","green pepper")108 make_pizza("Carrot","Onion","Sausage")109

110 #8-13

111 def build_profile(first_name,last_name,**introduction):112 person={}113 person["first_name"] =first_name114 person["last_name"] =last_name115 for key,value inintroduction.items():116 person[key] =value117 returnperson118

119 myself = build_profile("Dave","Fu",hometown = "Anhui",Colledge="Huaibei normal university",120 major = "Computer science and technology")121 print(myself)122

123 #8-14

124 def make_car(manufacturer,production_place,**introduction):125 car ={}126 car["manufacturer"] =manufacturer127 car["production_place"] =production_place128 for key,value inintroduction.items():129 car[key] =value130 returncar131

132 car1 = make_car("subaru","outback",color="blue",tow_package=True)133 print(car1)

第九章 类

9.1 类编码风格

类名采用驼峰命名法——类名中的每一个单词的首字母大写

每一个类后面均应包含一个文档字符串

可以使用空行来组织代码,但不要滥用。类中可以使用一个空行来分隔方法,模块中可以使用两个空行来分隔类

须要同时导入标准库中的模块和自定义模块时,先导入标准库中的模块,再隔一个空行导入自定义模块

9.2 类的建立和使用

1 classDog():2 def __init__(self, name, age, color=''):3 self.name =name4 self.age =age5 ifcolor:6 self.color =color7 else:8 self.color = "red"

9

10 defsit_down(self):11 print(self.name + "is sitting down now!")12

13 defroll_over(self):14 print(self.name + "is roll over now!")15

16 defdesc(self):17 print("My dog's name is"+self.name+", it's" +str(self.age)+"years old!, it's"+self.color)18

19 my_dog = Dog("Lighting",5)20 my_dog.sit_down()21 my_dog.roll_over()22 my_dog.desc()23 print(my_dog.name)

Python中的类名首字母大写,类定义中的括号是空的(Python2中,括号中为object)

类中的函数称为方法,包括Python默认方法与普通方法(或自定义方法)

__init__()为Python中的默认方法,每次建立实例时都会默认调用该方法。该方法中,开头和末尾均有2个下划线

__init__()中的形参self必不可少,且必须位于其它参数的前面。self默认指向实例自己的引用,让实例可以访问类中属性和方法。每一个与类相关联的方法调用都自动传递实参self

以self为前缀的变量可供类中的全部方法使用,还能够经过类中的任何实例来访问这些变量。可经过实例访问的变量称为属性

9.3 使用类和实例

1 classDog():2 def __init__(self, name):3 self.name =name4 self.age =05

6 defupdate_age(self, age_update):7 if age_update <8 print else:10 self.age>

13 defincrement_age(self, age_increment):14 self.age +=age_increment15 print("年龄:"+str(self.age))16

17 defdesc_age(self):18 print(self.name + "的年龄为:"+str(self.age))19

20 my_dog = Dog("lighting")21 my_dog.desc_age()22 my_dog.increment_age(1)23 my_dog.desc_age()24 my_dog.update_age(0)25 my_dog.desc_age()26 my_dog.update_age(2)27 my_dog.desc_age()

类中的每一个属性都必须有初始值,某些状况下,可在__init__()方法中直接指定某属性的初始值,此时无需包含为它提供初始值的形参

修改属性的值

直接修改属性的值

经过方法修改属性的值

经过方法对属性的值进行递增

9.4 继承

1 示例:2 classCar():3 def __init__(self, make, model, year):4 self.make =make5 self.model =model6 self.year =year7 #里程计读数

8 self.odometer_reading =09

10 defget_descriptive_name(self):11 print(self.model+" "+self.make+" "+str(self.year)+" "+str(self.odometer_reading))12

13 defread_odometer(self):14 print("This car has"+str(self.odometer_reading)+"miles on it\n")15

16 defupdate_odometer(self, mileage):17 if mileage <18 print can roll back the odometer else:20 self.odometer_reading="mileage21</p">

22 defincrement_odometer(self, miles):23 self.odometer_reading +=miles24

25 classEletricCar(Car):26 def __init__(self, make, model, year, electric_quantity ):27 super().__init__(make, model, year)28 self.electric_quantity =electric_quantity29

30 defget_descriptive_name(self):31 print(self.model+" "+self.make+" "+str(self.year)+" "+str(self.odometer_reading)+" "+str(self.electric_quantity)+"% electric_quantity")32

33

34 my_car = EletricCar("tesla", "model s", 2017, 100)35 my_car.get_descriptive_name()36 my_car.read_odometer()

一个类继承另外一个类时,将自动得到另外一个类的属性和方法;原有的类称为父类,继承的类称为子类

子类__init__()方法继承父类的__init__()方法: super().__init__()

建立子类时,父类必须包含在当前文件中,且位于子类前面

定义子类时,必须在括号中指定父类的名称

9.5 导入类

导入单个类  from module_name import class_name

导入多个类  from module_name import class_name1, class_name2, ...

导入模块中的全部类  from module_name import *

导入模块    import module_name

9.6 Python标准库

eg. from collections import OrderDict   #导入有序字典

1 #9-1

2 classRestaurant():3 #餐款名称 烹饪类型

4 def __init__(self, restaurant_name, cuisine_type):5 self.restaurant_name =restaurant_name6 self.cuisine_type =cuisine_type7

8 defdescribe_restaurant(self):9 print("The restaurant's name is"+self.restaurant_name+"and the cuisine type is"+self.cuisine_type)10

11 defopen_restaurant(self):12 print("The restaurant" +self.restaurant_name+"is opening now")13

14 restaurant = Restaurant("重庆火锅","川菜")15 print("The restaurant name is"+restaurant.restaurant_name)16 print("The restaurant cuisine type is"+restaurant.cuisine_type)17 restaurant.describe_restaurant()18 restaurant.open_restaurant()19

20 #9-2

21 restaurant1 = Restaurant("贡院蜀楼","川菜")22 restaurant2 = Restaurant("皖南水乡","徽菜")23 restaurant3 = Restaurant("忘湘园","湘菜")24 restaurant1.describe_restaurant()25 restaurant2.describe_restaurant()26 restaurant3.describe_restaurant()27

28 #9-3

29 classUser():30 def __init__(self, first_name, last_name, sex, age, job):31 self.first_name =first_name32 self.last_name =last_name33 self.sex =sex34 self.age =age35 self.job =job36

37 defdescribe_user(self):38 introduction = self.first_name+"·"+self.last_name39 if self.sex == "m":40 introduction =introduction + "is a man and he is"+str(self.age)+"years old, his job is"+self.job41 else:42 introduction =introduction + "is a woman and she is"+str(self.age)+"years old, her job is"+self.job43 print(introduction)44

45 user1 = User("守兵", "朱", "m", 31, "技术员")46 user2 = User("相存", "傅", "w", 32, "预算员")47 user1.describe_user()48 user2.describe_user()49

50 #9-4

51 classRestaurant():52 #餐款名称 烹饪类型

53 def __init__(self, restaurant_name, cuisine_type):54 self.restaurant_name =restaurant_name55 self.cuisine_type =cuisine_type56 self.number_served =057

58 defdescribe_restaurant(self):59 print("The restaurant's name is"+self.restaurant_name+"and the cuisine type is"+self.cuisine_type)60

61 defopen_restaurant(self):62 print("The restaurant" +self.restaurant_name+"is opening now")63

64 defset_number_served(self, number_served):65 if self.number_served >number_served:66 print("服务人数不能减小")67 else:68 self.number_served =number_served69

70 defincrement_number_served(self, increment_number_served):71 self.number_served +=increment_number_served72

73 restaurant = Restaurant("重庆火锅","川菜")74 restaurant.set_number_served(10)75 print("服务人数:"+str(restaurant.number_served))76 restaurant.increment_number_served(13)77

78 #9-5

79 classUser():80 def __init__(self, first_name, last_name, sex, age, job):81 self.first_name =first_name82 self.last_name =last_name83 self.sex =sex84 self.age =age85 self.job =job86 self.login_attempts =087

88 defdescribe_user(self):89 introduction = self.first_name+"·"+self.last_name90 if self.sex == "m":91 introduction =introduction + "is a man and he is"+str(self.age)+"years old, his job is"+self.job92 else:93 introduction =introduction + "is a woman and she is"+str(self.age)+"years old, her job is"+self.job94 print(introduction)95

96 defincrement_login_attempts(self):97 self.login_attempts += 1

98

99 defreset_login_attempts(self):100 self.login_attempts =0101

102

103 user = User("守兵", "朱", "m", 31, "技术员")104 user.increment_login_attempts()105 user.increment_login_attempts()106 print("登陆次数:"+str(user.login_attempts))107 user.reset_login_attempts()108 print("登陆次数:"+str(user.login_attempts))109

110 #9-6

111 classRestaurant():112 #餐款名称 烹饪类型

113 def __init__(self, restaurant_name, cuisine_type):114 self.restaurant_name =restaurant_name115 self.cuisine_type =cuisine_type116 self.number_served =0117

118 defdescribe_restaurant(self):119 print("The restaurant's name is"+self.restaurant_name+"and the cuisine type is"+self.cuisine_type)120

121 defopen_restaurant(self):122 print("The restaurant" +self.restaurant_name+"is opening now")123

124 defset_number_served(self, number_served):125 if self.number_served >number_served:126 print("服务人数不能减小")127 else:128 self.number_served =number_served129

130 defincrement_number_served(self, increment_number_served):131 self.number_served +=increment_number_served132

133 restaurant = Restaurant("重庆火锅","川菜")134 restaurant.set_number_served(10)135 print("服务人数:"+str(restaurant.number_served))136 restaurant.increment_number_served(13)137

138 classIceCreamStand(Restaurant):139 def __init__(self, restaurant_name, cuisine_type, flavors):140 super().__init__(restaurant_name, cuisine_type)141 self.flavors =flavors142

143 defdescribe_flavors(self):144 print("冰激凌口味:"+str(self.flavors))145

146 flavors = ['巧克力','奶油','抹茶','香草','香芋','咖啡','树莓','芒果','绿茶','朗姆','橘子']147 ice_cream_stand = IceCreamStand("冰激凌小店","冷饮",flavors)148 ice_cream_stand.describe_flavors()149

150 #9-7

151 classUser():152 def __init__(self, first_name, last_name, sex, age, job):153 self.first_name =first_name154 self.last_name =last_name155 self.sex =sex156 self.age =age157 self.job =job158 self.login_attempts =0159

160 defdescribe_user(self):161 introduction = self.first_name+"·"+self.last_name162 if self.sex == "m":163 introduction =introduction + "is a man and he is"+str(self.age)+"years old, his job is"+self.job164 else:165 introduction =introduction + "is a woman and she is"+str(self.age)+"years old, her job is"+self.job166 print(introduction)167

168 defincrement_login_attempts(self):169 self.login_attempts += 1

170

171 defreset_login_attempts(self):172 self.login_attempts =0173

174

175 user = User("守兵", "朱", "m", 31, "技术员")176

177 classAdmin(User):178 def __init__(self, first_name, last_name, sex, age, job, privileges):179 super().__init__(first_name, last_name, sex, age, job)180 self.privileges =privileges181

182 defshow_privileges(self):183 print("管理员权限:"+str(self.privileges))184

185 privileges = ["can add post", "can delete post", "can ban user"]186 admin = Admin("守兵", "朱", "m", 31, "技术员",privileges)187 admin.show_privileges()188

189 #9-8

190 classUser():191 def __init__(self, first_name, last_name, sex, age, job):192 self.first_name =first_name193 self.last_name =last_name194 self.sex =sex195 self.age =age196 self.job =job197 self.login_attempts =0198

199 defdescribe_user(self):200 introduction = self.first_name+"·"+self.last_name201 if self.sex == "m":202 introduction =introduction + "is a man and he is"+str(self.age)+"years old, his job is"+self.job203 else:204 introduction =introduction + "is a woman and she is"+str(self.age)+"years old, her job is"+self.job205 print(introduction)206

207 defincrement_login_attempts(self):208 self.login_attempts += 1

209

210 defreset_login_attempts(self):211 self.login_attempts =0212

213 user = User("守兵", "朱", "m", 31, "技术员")214

215 classPrivilege():216 def __init__(self, privileges):217 self.privileges =privileges218

219 defshow_privileges(self):220 print("管理员权限:"+str(self.privileges))221

222 classAdmin(User):223 def __init__(self, first_name, last_name, sex, age, job, privileges):224 super().__init__(first_name, last_name, sex, age, job)225 self.privileges =privileges226

227 privileges = Privilege(["can add post", "can delete post", "can ban user"])228 admin = Admin("守兵", "朱", "m", 31, "技术员",privileges)229 admin.privileges.show_privileges()

第十章 文件和异常

10.1 读写文件

1 pi_digits.txt文件2 3.1415926535

3 8979323846

4 2643383279

5

6 #读文件

7 file_name = "pi_digits.txt"

8 #在当前执行的文件所在的目录中查找指定的文件

9 with open(file_name) as file_object:10 contents =file_object.read()11 print(contents.rstrip()) #删除末尾的空白行

12

13 #(with代码块内)逐行读取 line能够是任意变量

14 with open(file_name) as file_object:15 for line infile_object:16 print(line.rstrip())17

18 with open(file_name) as file_object:19 lines =file_object.readlines()20

21 #(with代码块外)逐行读取

22 #处理文件内容

23 pi = ""

24 for line inlines:25 pi +=line.strip()26

27 print("pi ="+pi)28 print("pi精度:"+str(len(pi)-2)+"位")29

30 #写文件

31 file_name = "test.txt"

32 '''

33 文件读取模式:34 -r: 只读35 -w: 写 覆盖写,不可读36 -a: 附加 添加写,不可读37 -r+: 读写 可读可写38 '''

39 with open(file_name,"a") as file_object:40 file_object.write("I love python 才怪!\n")41 #contents = file_object.read() #报错

42 print(contents)

10.2 异常

python异常继承关系

BaseException

+-- SystemExit

+-- KeyboardInterrupt

+-- GeneratorExit

+-- Exception

+-- StopIteration

+-- StopAsyncIteration

+-- ArithmeticError

| +-- FloatingPointError

| +-- OverflowError

| +-- ZeroDivisionError

+-- AssertionError

+-- AttributeError

+-- BufferError

+-- EOFError

+-- ImportError

| +-- ModuleNotFoundError

+-- LookupError

| +-- IndexError

| +-- KeyError

+-- MemoryError

+-- NameError

| +-- UnboundLocalError

+-- OSError

| +-- BlockingIOError

| +-- ChildProcessError

| +-- ConnectionError

| | +-- BrokenPipeError

| | +-- ConnectionAbortedError

| | +-- ConnectionRefusedError

| | +-- ConnectionResetError

| +-- FileExistsError

| +-- FileNotFoundError

| +-- InterruptedError

| +-- IsADirectoryError

| +-- NotADirectoryError

| +-- PermissionError

| +-- ProcessLookupError

| +-- TimeoutError

+-- ReferenceError

+-- RuntimeError

| +-- NotImplementedError

| +-- RecursionError

+-- SyntaxError

| +-- IndentationError

| +-- TabError

+-- SystemError

+-- TypeError

+-- ValueError

| +-- UnicodeError

| +-- UnicodeDecodeError

| +-- UnicodeEncodeError

| +-- UnicodeTranslateError

+-- Warning

+-- DeprecationWarning

+-- PendingDeprecationWarning

+-- RuntimeWarning

+-- SyntaxWarning

+-- UserWarning

+-- FutureWarning

+-- ImportWarning

+-- UnicodeWarning

+-- BytesWarning

+-- ResourceWarning

1 #coding=gbk

2 #除法

3 print("输入2个数字,用于除法操做\n")4 print("输入'q'以退出\n")5

6 whileTrue:7 firstNum = input("\n输入第一个数字:")8 if firstNum == 'q':9 break

10 secondNum = input("\n请输入第二个数字:")11 if secondNum == 'q':12 break

13 try:14 answer = int(firstNum)/int(secondNum)15 #print("\n商:"+str(answer))

16 exceptException:17 #print("不能除以0")

18 pass

19 else:20 print("\n商:"+str(answer))

获取不一样的异常信息

--str(e):返回字符串类型,只给出异常信息,不包括异常信息的类型,如1/0的异常信息

'integer division or modulo by zero'

--repr(e):给出较全的异常信息,包括异常信息的类型,如1/0的异常信息

"ZeroDivisionError('integer division or modulo by zero',)"

--e.message:得到的信息同str(e)

--采用traceback模块:须要导入traceback模块,此时获取的信息最全,与python命令行运行程序出现错误信息一致。使用traceback.print_exc()打印异常信息到标准错误,就像没有获取同样,或者使用traceback.format_exc()将一样的输出获取为字符串。你能够向这些函数传递各类各样的参数来限制输出,或者从新打印到像文件类型的对象。

18>8>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值