python从入门到实践笔记chapter6-8

6 字典
python中,字典是一系列键值对,用{}表示,冒号分隔键与值,逗号分隔键值对。
字典名[键],来获取对应的值

alien={'color':'green', 'points':5}
alien['x_position'] = 0 #添加键值对
alien['color'] = 'yellow' #修改值
del alien['points'] #删除键值对

注意,键—值对的排列顺序与添加顺序不同。Python不关心键—值对的添加顺序,
而只关心键和值之间的关联关系。
对于较长的列表和字典,换行后前面的空格无影响
6.3 遍历字典

user_0 = {
	'username' : 'first guy',
	'first' : 'first',
	'last' : 'guy',
	}
#遍历所有键值对
for k,v in user_0.items():
	print("\nkey:" + k)
	print("value:" + v)
#遍历所有键
for key in user_0.keys():
	print(key.title())
#不写keys()也是一样的
for key in user_0:
	print(key.title())
#方法keys()并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键
if 'first' in user_0.keys():
	print('hahaha')
#类似可以用value遍历值
for value in user_0.values():
	print(value)
#为剔除重复项,可使用集合(set)
for value in set(user_0.values()):
	print(value)

注意,即便遍历字典时,键—值对的返回顺序也与存储顺序不同。
6.3.3 按顺序遍历 sorted()

favorite_languages = {
	'jen': 'python',
	'sarah': 'c',
	'edward': 'ruby',
	'phil': 'python',
	}
for name in sorted(favorite_languages.keys()):
	print(name.title() + ", thank you for taking the poll.")

6.4 嵌套
在列表中包含字典,在字典中存储列表(每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表),在字典中存储字典

7 用户输入和while
7.1 函数input()接受一个参数:即要向用户显示的提示或说明
input 获取到的是字符串,如果需要数值用int()
% 求模运算符
7.2 while使用***标志***变量来控制while

prompt="input something prompt    "
prompt +="\nEnter 'quit' to end the program.    "
active = True
while active:
	msg = input(prompt)
	if msg = 'quit':
		active = False
	else:
		print(msg)

break 可以马上退出while循环 在任何Python循环中都可使用break语句。例如,可使用break语句来退出遍历列表或字典的for循环。
***continue***返回到循环开头

#打印奇数1 3 5 7 9
current_number = 0
while current_number < 10:
	current_number += 1
	if current_number % 2 == 0:
		continue
print(current_number)

一定要有停止,避免无限循环,不然那只能crtl+c
7.3 删除所有含特定值得列表元素

pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
while 'cat' in pets:
	pets.remove('cat')
print(pets)

用循环删列表,其实就是用循环控制了执行多少次,如果直接用for循环运行3次也可以,因此有很多类似的方法

pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
for i in pets:
	pets.remove('cat')
print(pets)
#这个是很不好的代码,没有while先判断好,循环中如果程序复杂,则低效

8 函数
用来封装一个简单的功能,便于重用修改阅读。。。
help(函数名),用来显示函数的帮助,第一行三个引号中的内容
标准的函数 def 函数名(参数): 换行函数体
8.1.2 形参:函数定义时变量 ;实参:函数调用时传递给函数的具体信息
8.2 位置实参:调用时实参位置与形参完全一致
关键词实参:传递给函数 名称-值 对,无需考虑实参顺序
默认值:在编写函数是,可以给形参指定默认值,则调用时可以省略对应的实参。定义时默认值形参不能放在非默认值形参前面。调用时如果省略实参,python依然将这个实参视为位置实参。

def describe_pet(pet_name, animal_type='dog'):
#一条名为willie的小狗
describe_pet('willie')
describe_pet(pet_name='willie')
# 一只名为Harry的仓鼠,三种方式是等效的
describe_pet('harry', 'hamster')
describe_pet(pet_name='harry', animal_type='hamster')
describe_pet(animal_type='hamster', pet_name='harry')

8.3 return语句用于返回值
8.4 函数的参数传递可以是列表,字典,并且可以在函数中修改
每个函数都只负责一项具体工作
将列表的副本传递给函数 function_name(list_name[:]),但是除非必须要传递副本,否则尽量将原列表传递给函数,从而提高效率
8.5传递任意数量的实参
一个星号元组,两个星号字典

def make_pizza(*toppings):
	"""打印顾客点的所有配料"""
	print(toppings)

形参名*toppings中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中
如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最
后。Python先匹配位置实参关键字实参,再将余下的实参都收集到最后一个形参中。
形参**user_info中的两个星号让Python创建一个名为user_info的空字典,并将收到的所
有名称—值对都封装到这个字典

def build_profile(first, last, **user_info):
	"""创建一个字典,其中包含我们知道的有关用户的一切"""
	profile = {}
	profile['first_name'] = first
	profile['last_name'] = last
	for key, value in user_info.items():
		profile[key] = value
	return profile
user_profile = build_profile('albert', 'einstein',
											location='princeton',
											field='physics')
print(user_profile)

8.6函数模块
import module_name #导入整个模块
module_name.function_name() #使用模块中的函数
from module_name import function_name
from module_name import function_0, function_1, function_2
#上面这两种导入可以直接使用函数名
from module_name import function as fn #为函数指定别名
import module_name as mn #使用as给模块指定别名
from module_name import * #导入模块中所有函数
注意最佳的做法是,要么只导入你需要使用的函数,要么导入整个模块并使用句点表示法,如果导入函数与自己的重名会导致意想不到的结果
8.7
应给函数指定描述性名称,且只在其中使用小写字母和下划线。给形参指定默认值时,等号两边不要有空格

你可能感兴趣的:(笔记,python)