在这篇文章中,将《Python编程从入门到实践》中介绍的重要代码整理总结,并配有书中相关语法的注释,收录了从第1章到第11章的全部重要语法知识点。
#在这里大量使用print,方便读者下载进行编译调试理解代码及结果,增强学习效果
#第2章 变量和简单数据类型
#string.lower()与string.upper()
name="Ada lover"
print(name.lower())
print(name.upper())
#字符串拼接
first_name="zhang"
last_name="shuang"
print(first_name+" "+last_name)
#实现首字母的大写
print((first_name+" "+last_name).title())
#找出开头和结尾的空白
print((" "+first_name+" "+last_name+" ").strip())
print((" "+first_name+" "+last_name+" ").lstrip())
print((" "+first_name+" "+last_name+" ").rstrip())
#将非字符串转换为字符串
a=23
print("I'm "+str(a)+" years old")
#第3章 列表及操作列表
zhang_shuang=['age','weight','height']
print(zhang_shuang[0])
print(zhang_shuang[-1])
zhang_shuang[0]='eyes'
print(zhang_shuang)
#列表添加元素
zhang_shuang.append(['nose','mouth'])
zhang_shuang.append('tonuge')
#列表中特定位置插入元素
zhang_shuang.insert(1,'arm')
#删除特定位置元素
del zhang_shuang[4]
#输出尾部删除元素,还可以删除指定位置元素
print(zhang_shuang.pop())
#指定元素删除(只删除第一个元素的值,若有重复值需要循环删除)
zhang_shuang.remove('eyes')
print(zhang_shuang)
#使用sort()方法对列表进行永久性排序(正序及反序)
zhang_shuang.sort()
zhang_shuang.sort(reverse=True)
print(zhang_shuang)
#使用sorted函数进行临时排序
print(sorted(zhang_shuang))
print(zhang_shuang)
#反转列表元素顺序
zhang_shuang.reverse()
#确定列表长度
print(len(zhang_shuang))
#遍历列表
for element in zhang_shuang:
print(element)
#创建数值列表,
for value in range(1,5):
print(value)
#1-4,步长为2
numbers=list(range(1,5,2))
print(numbers)
#对数字列表进行简单的统计运算
print(max(numbers))
print(min(numbers))
print(sum(numbers))
#列表解析
squares=[value**2 for value in range(1,11)]
print(squares)
#列表切片
print(squares[0:3])
print(squares[:3])
print(squares[-3:])
#复制列表
square=squares[:]
print(square)
#不可修改的列表称为元组
dimensions=(200,50)
#如果进行重新赋值,可重新定义整个元组
dimensions=(400,100)
#第4章 if语句
#条件判断
age=12
if age<4:
age=0
elif age<18:
age=1
elif age<20:
age=2
else:
pass
print(age)
#检查特定值是否包含在列表中
cats=['cat1','cat2','cat3']
if 'cat2' in cats:
print("列表中已经有cat2了!")
#检查特定值是否不包含在列表中
cats=['cat1','cat2','cat3']
if 'cat2' not in cats:
print("列表中已经有cat2了!")
#检查列表不是空的
cats=[]
if cats:
print("列表不是是空的")
else:
print("列表是空的")
#第5章 字典
zhang_shuang={'name':'zs','age':'21','weight':'100'}
print(zhang_shuang['name'])
#在字典中新增一个键值对
zhang_shuang['height']='160cm'
#删除键值对
del zhang_shuang['weight']
#遍历字典
for key,value in zhang_shuang.items():
print("\nkey:"+key)
print("value:"+value)
#遍历字典中的所有键
for key in zhang_shuang.keys():
print(key)
#遍历字典中的所有值
for value in zhang_shuang.values():
print(value)
#字典列表
aliens=[]
for alien_number in range(30):
new_alien={'name':'zs','age':'15'}
aliens.append(new_alien)
for alien in aliens:
print(alien)
#在字典里存储列表
pizza={'crust':'thick','toppings':['mushrooms','extra cheese']}
#在字典中存储字典
#第6章 用户输入和while循环
#用户输入
message=input()
print(message)
#使用int来获取数值输入
age=input("how old are you")
age=int(age);
if age<=30:
print("You are so young!")
#while循环格式同if判断,通过break可退出循环,continue跳过本次循环
#利用while循环删除列表中的重复元素
pets=['dog','cat','cat','pig']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
#第7章:函数
#定义一个函数,返回类型为字典
def build_person(first_name,last_name):
person={'first':first_name,'last':last_name}
return person
person1 = build_person('zhang','shuang')
print(person1)
#传递列表
def greet_users(names):
for name in names:
print(name)
usernames=['sd','fg','gh']
greet_users(usernames)
#禁止函数修改列表,可以将列表的副本传递给函数
function_name(list_name[:])
#传递任意数量的实参,会封装成一个元组
def function_name(*args):
print(args)
function_name('zhang')
function_name('zhang','li','guo','wang')
#结合使用位置实参和任意数量实参
def function_name(num,*args):
print(num,args)
function_name(4,'zhang','li','guo','wang')
#将函数存在模块中,引用时从另一文件中import即可
#导入特定的函数,from 块 import 函数
#使用as给函数指定别名
#使用as给模块指定别名
#导入模块中所有函数(好处是不用写模块名字.):from 块 import *
#第8章:类
class Animal():
def __init__ (self,name,age):
self.name=name
self.age=age
#给属性指定默认值,实例中会有一个隐含的参数weight,可以在外部手动修改其值,无需提前传参
self.weight=0
def sit(self):
print(self.name.title()+" is now sitting")
my_dog=Animal('beibei',5)
print(my_dog.name.title())
print(my_dog.age)
my_dog.sit()
#修改属性的值:直接修改&&通过方法修改
#继承
class Dog(Animal):
def __init__(self,name,age):
super.__init__(name,age) #给父类传参,super指向父类,__init__指向本实例
#新增属性默认值
self.height=0
#重写父类的方法,与父类的方法重名即可,程序会忽略父类的方法调用子类的方法
#类中定义默认参数(形参可选,可不传参,自动使用默认值) def __init__(self,name,age=2)
#导入类 from 模块(文件)import 类
#导入一个模块中的所有类 from 模块 import *
#文件和异常
#读取整个文件(绝对路径)
with open('txt_files\zhang_shuang.txt') as file_object:
contents=file_object.read()
print(contents)
#逐行读取,同时消除多余的空行符
with open('zhang_shuang.txt') as file_object:
for line in file_object:
print(line.rstrip())
#常常使用with来处理文件的读取操作,with所求值的对象必须有一个enter()方法,一个exit()方法(文件实例中包含这两个方法),因为with关键字最后会自动调用exit()方法,可以间接调用文件实例的close方法,避免open了一个文件但是最后忘记close这个资源或者程序出错导致无法close。
#使用关键字with 时, open() 返回的文件对象只在with 代码块内可用。
#如果要在with 代码块外访问文件的内容, 可在with 代码块内将文件的各行存储在一个列表中,
#并在with 代码块外使用该列表: 你可以立即处理文件的各个部分, 也可推迟到程序后面再处理
#readlines() 从文件中读取每一行, 并将其存储在一个列表中
with open('zhang_shuang.txt') as file_object:
lines=file_object.readlines()
for line in lines:
print(line.rstrip())
#可使用replace()将字符串中的特定单词都替换为其他单词
message="I like dogs"
message.replace('dog','cat')
#即message变为“I like cats”
#写入文件,写入多行时需要自行加入换行符
with open(filename,'w') as file_object:
file_object.write('I like dogs\n')
file_object.write('I like cats\n')
#r 为读取,w为写,a为追加,r+ 为读写,默认为只读
#异常
try:
answer = a/b
except:
print("b不能为0") #出错时执行except内代码块
else:
print(answer) #没有出错时执行else内代码块
#json存储数据:json将数据结构转储到文件中,并在程序再次运行时加载
#json也可在多个语言之间共享
#使用json.dump()存储
import json
numbers=[1,2,3,4,5]
with open(filename,'w') as f_obj:
json.dump(numbers,f_obj)
#使用json.load()将数据读取到内存中
import json
with open(filename) as f_obj:
number=json.load(f_obj)
#包含json和异常的小程序:
#如果之前存储了用户名就加载它,否则就提示输入用户名并存储
import json
try:
with open(filename) as file_object:
username=json.load(file_object)
except FileNotFoundError:
username=input("What's your name?")
with open(filename,'r') as file_object:
json.dump(username,file_object)
print("We'll remember you"+username)
else:
print("Welcome back,"+username)