修改字符串大小:name.title(),name.upper(),name.lower()
合并字符串:name = f_name + " " + l_name
使用制表符和换行符:name = "\tyes\t\nhhh"
删除空白格:name.rstrip(),name.lstrip()
字符串使用方法后,自身不改变,需重新赋值
数字转字符串进行字符串合并:
age = 23
name = str(age) + "happy"
列表表示:用[ ]表示列表,并用逗号来分隔其中的元素。
列表打印:直接打印会打印出列表的内部表示,包括方括号,用户不接受这种输出。
访问列表元素:列表元素是有序的,使用索引访问。
#设定name是一个列表
name[0] = "hhh"#修改列表元素
name.append("yes")#在列表末尾加入元素
name.insert(0,"lk")#在索引处插入元素
del name[0]#删除索引元素
ras = name.pop()#删除列表最后元素,并将元素弹出,可继续使用
print(ras)
ras = name.pop(0)#删除索引处元素并返回
name.remove("hhh")#根据元素来删除,若要删除的元素有多个,只删除第一个,循环判断第7章
ras = name.pop(0)
,方法直接传一个数字,不需要方括号,因为方括号多余
使用sort()方法进行永久性排序:
cars.sort()#从小到大
cars.sort(reverse=True)#反转
使用sorted()方法进行临时排序:print(sorted(cars))
,不会改变列表本身的顺序,也可传递反转参数。
使用reverse()方法永久性反转排序:cars.reverse()
确定列表长度:len(cars)
,长度计算从1开始。
遍历列表:for car in cars:
,每一次for循环后会执行换行操作。
range(1,n)打印1到n-1的数字
创建数字列表:name = list(range(1,6))
,添加步长range(1,11,2)
。
列表统计计算:min(name),max(name),sum(name)
.
列表解析:nihao = [name+"hello!" for name in names]
列表切片:name[0:3]
,和range()一样,差一行为。
遍历切片:for name in names[:3]:
元组:不可变列表称为元组,用()来标识。
元组内的元素不可以改变,使用索引值访问。
只含一个元素的元组表示为('color',)
,要记得加逗号。
di = (200,30)
print(di[0])
元组遍历:使用for循环,和列表一样。
元组内的元素不可修改,但是元组变量可以修改。
di = (200,50)
di = (250,90)#是合法的
if name in names:
if name not in names:
if a==0 and b==9:
if age<4:
elif age<18:
else:
建立字典:字典顺序不重要,字典遍历顺序可能会变换
Yang = {}
Yang['color'] = 'yellow'
Yang['hight'] = 170
Yang['age'] = '21'
Yang = {'color': 'yellow', 'hight': 170, 'age': '21'}
del Yang['color']#删除字典值
Yang['color'] = 'white'#修改字典值
遍历字典:for k,v in Yang.items():
遍历字典的所有键:for k in Yang.keys():
,按顺序遍历for k in sorted(Yang.keys()):
遍历字典的所有值:for v in Yang.values():
剔除遍历值的重复项:for v in set(Yang.values()):
,使用set()方法。
字典列表:用列表存储3个外星人,每个外星人是一个字典,得到字典列表。
alien_0 = {'color':'green','points':5}
alien_1 = {'color':'yellow','points':10}
alien_2 = {'color':'red','points':15}
aliens = [alien_0,aline_1,alien_2]
字典中存储列表:一个披萨的材料属性需要用列表。
favorite_languages = {
'jen':['python','ruby'],
'sarah':['c'],
'edward':['ruby','go'],
'phil':['python','haskell'],
}
for name,languages in favorite_languages.items():
for language in languages:
字典中存储字典:略
用int()获取数值输入:input()函数获取输入,输入整数会因为括号变为字符串。
age = input('please tell me your age:')
age = int(age)
whlie基本循环,break,continue:略
使用while在列表间移动元素:对未验证用户列表进行验证后将用户添加到已验证用户列表。while对列表循环的语法
unconfirmed_users = ['alice','brain','candance']
confirmed_users = []
while unconfirmed_users:
current_user = unconfirmed_users.pop()
confirmed_users.append(current_user)
删除包含特定值的所有元素:与remove()函数结合使用。
pets = ['dog','cat','dog','goldfish','cat','rabbit','cat']
while 'cat' in pets:
pets.remove('cat')
使用用户输入来填充字典:
responses = {}
polling_active = True
while polling_active:
name = input("what's your name?")
response = input("which mountain would you like to climb?")
responses[name] = response
repeat = input("do you have friend want to say(yes/no)")
if repeat == 'no':
polling_active = False
for name,response in responses.items():
定义函数的格式:
def greet_user():
print('HELLO!')
greet_user()
形参和实参:形参是定义函数时括号内的参数,实参是调用函数时括号内的参数。
位置实参:位置对应好传递参数。
def describe_pet(animal_type,pet_name):
#函数体
describe_pet('hamster','harry')
关键字实参:调用函数时写清楚形参对应的实参,用等号连接。
def describe_pet(animal_type,pet_name):
#函数体
describe_pet(animal_type='hamster',pet_name='harry')
默认参数:一般将默认参数放在最后,在调用时不用实参不用写。
def describe_pet(animal_type,pet_name='hamster'):
#函数体
describe_pet(animal_type='harry')#关键字参数
describe_pet('harry')#位置参数
让实参变成可选的:把某些实参定义为空字符串,并在用户没有提供该实参时不使用。
def get_formatted_name(first_name,last_name,middle_name=''):
if middle_name:
#函数体
else
#函数体
return 0
函数返回值为字典:函数可以返回任意类型的值,包括列表和字典。
def build_person(first_name,last_name,age=''):
person = {'first':first_name,'last':last_name}
if age:
person['age'] = age
return person
跳出循环:while True:
结合break
随时跳出循环。
传递列表:列表做形参直接用名字。
def greet_users(names):
for name in names:
#函数体
usernames = ['yang','han']
greet_users(usernames)
禁止函数修改列表:要使函数不改变列表,则要将列表的副本传入函数。列表名的切片表示副本。函数内可使用该副本,但函数外该列表不变。
print_models(unprinted_designs[:],completed_models)
传递任意数量的实参:形参名*toppings
中的星号可以创建一个空元组,并将收到的所有值都封装到这个元组中,即便只收到一个值。
def make_pizza(*toppings):
print(toppings)
for topping in toppings:#元组遍历与列表一样
print(topping)
make_pizza('mush','pepper','cheese')
使用任意数量的关键字实参:两个星号**user_info
表示字典形键值对参数,数量随输入变化,下面的函数调用包含两个键值对location='pri'
和fie='jklld'
。
def build_profile(first,last,**user_info):
profile = {}
profile['fist_name'] = first
profile['last_name'] = last
for key,value in user_info:
profile[key] = value
return profile
user_profile = build_profile('albert','einstein',location='pri',fie='jklld')
将函数存储在模块:as表示别名。
import model_name as#导入模块,调用-模块.函数
from model_name import function_name as#直接用函数
from model_name import *#导入模块全部函数
面对对象编程是最有效的软件编写方法之一,根据类创建对象称为实例化,对象即世间万物。
创建Dog类:Dog处括号内为空是因为要从空白创建这个类,有的类会继承则括号内存有其父类,就不是从空白开始创建类。方法__init__()
会在实例创建时自动调用,类中的函数称为方法。
class Dog():
def __init__(self,name,age):
self.name = name
self.age = age
def sit(self):
print(self.name.title()+"is now sitting")
根据类创建实例:my_dog = Dog('while',6)
访问类属性和方法:my_dog.name , my_dog.sit()
修改实例的属性:改变创建的实例my_dog的属性,my_dog.name = 'hhh'
给属性指定默认值:
class Dog():
def __init__(self,name,age):
self.name = name
self.age = age
self.height = 40
def sit(self):
print(self.name.title()+"is now sitting")
修改属性的值:可以直接修改,或者在类内定义函数进行调用后修改。
编写类时,并非总是要从空白开始,一个类继承另一个类时,它将自动获得另一个类的所有属性和方法,原有的类称为父类,新的类为子类
建立子类时首先要初始化父类的属性:super()
是将父类与子类关联起来的函数,父类称为超类。
class Dog():
def __init__(self,name,age):
self.name = name
self.age = age
self.height = 40
def sit(self):
print(self.name.title()+"is now sitting")
class samoye(Dog):
def __init__(self,name,age):
super.__init__(name,age)
重写父类的方法:对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写。则可以在子类中定义与重写的父类方法同名的方法,这样,python将不会考虑这个父类方法,而只关注在子类中定义的相应方法。
将实例用作属性:将Move类作为Dog类属性。
class Dog():
def __init__(self,name,age,run):
self.name = name
self.age = age
self.height = 40
self.run = Move()
def sit(self):
print(self.name.title()+"is now sitting")
class Move():
def __init__(self,run_speed=100):
self.run_speed = run_speed
要使用文本文件中的信息,首先需要将信息读取到内存中,可以一次性读取文件的全部内容,也可以每次一行逐步读取
下列读取文件如下:
3.1415926535
897938949
783266748
一次性读取整个文件:首先用open()
函数打开文件,可与close()
函数匹配使用,但会很容易出现配对错误,所以使用关键字with
,使得python会在合适的时候自动将文件关闭。使用方法read()
读取文件的全部内容,但读取到文件末尾会返回一个空字符串,print()
出来是空行,用rstrip()
将空字符串消除。
with open('hhh.txt') as file_ob:
concents = file_ob.read()
print(concents.rstrip())
文件路径:若要读取的文件存于和程序文件一样的目录中,则可直接读取文件名,用单引号包括。若不在则用类似'C:\Users\ehma\otherfiles\filename.txt'
,Windows中需要用反斜杠。
逐行读取:在读取文件时,每行末尾都有一个看不见的换行符,print()
语句也会加上一个换行符,因此每行末尾有两个换行符,可用rstrip()
消除。
with open('hhh.txt') as file_ob:
for line in file_ob:
print(line.rstrip())
创建一个包含文件各行内容的列表:readlines方法读取每一行保存于列表中
with open('hhh.txt') as file_ob:
lines = file_ob.readlines()
for line in lines:
print(line.rstrip())
使用文件中的内容时,都是以字符串的形式,若要转化可用int()使得内容可以进行数学运算
写入文件首先要打开文件,使用open()方法:open('hhh.txt','r')
,关于open()第二个参数如下:
‘r’:只读形式打开,指针指向内容最开头,文件为空则创建。
’r+‘:只读写形式打开,指针指向内容最开头,文件为空则创建。
‘w’:只写形式打开,指针指向最开头,文件为空则创建,文件不为空则会覆盖原有内容。
’w+‘:只读写形式打开,指针指向最开头,文件为空则创建,文件不为空则会覆盖原有内容。
‘a’:只追加形式打开,指针指向最末尾,文件为空则创建,不为空不覆盖。
’a+':可读可追加形式打开,读取可在任意位置进行,写入只能在末尾进行。
python只能将字符串内容写入文本,若要将数值写入文本,必须先使用str()函数将其转化为字符串形式
with open('hhh.txt','w') as file_ob:
file_ob.write('yyyyyyep')
写入多行:记得要在每句末尾写入换行符。
with open('hhh.txt','w') as file_ob:
file_ob.write('yyyyyyep\n')
file_ob.write('hello\n')
python使用被称为异常的特殊对象来管理程序执行期间发生的错误,每当发生让python不知所措的错误时,会创建一个异常对象,若编写了处理该异常的代码,程序将继续运行;若未对异常处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。
异常是使用try-except代码块处理的
处理ZeroDivisionError异常:当一个数字除以0时会报此错,下列程序先try进行计算,若报错则进行except。
while True:
first_number = input("First number:")
if first_number == 'q':
break
second_number = input("Second number:")
try:
answer = int(first_number)/int(second_number)
except ZeroDivisionError:
print("You can't divide by 0!")
else:
print(answer)
分析文本:方法split()将根据一个字符串创建一个单词列表,以空格为分隔符将字符串分拆成多个部分。
title = "Alice in Wonderland"
title.split()
#结果:
['Alice','in','Wonderland']
找不到文件:异常为FileNotFoundError。
try:
with open('hhh.txt') as file_ob:
contents = file_ob.read()
except FileNotFoundError:
print("not find this txt")
else:
words = contents.split()
num_words = len(words)
若要失败是一声不吭:
except FileNotFoundError:
pass
很多程序都要求输入某种信息,但程序经常会把用户提供的信息存储在列表和字典等数据结构当中。用户关闭程序时,总是要保存他们提供的信息:一种简单的方式是使用模块json来存储数据。
模块json可以将最简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据,还可使用其在python程序之间分享数据(JavaScript Object Notation)。
json.dump(数据,文件):将数据读入文件中
json.load(文件):将文件内的数据读出
import json
numbers = [1,2,3,4,5]
filename = 'numbers.json'
with open(filename,'w') as f_ob:
json.dump(numbers,f_ob)
import json
filename = 'numbers.json'
with open(filename) as f_ob:
numbers = json.load('f_ob')
重构:将代码划分为一系列完成具体工作的函数。
使用json存储数据日后遇到可仔细学习
本章内容过于看不懂,可以遇到时再行学习