2018.7.11
day07回顾
元组tuple
运算:
字典dict
键不能重复,且只能用不可变类型做为字典的键
字典键[键]=值 #添加和修改键-值对
{1:100,2:200}
字典的运算
字典推导式
day08笔记
集合 set
创建空集合
创建非空集合(不能放单一列表,如列表,字典和集合,可以放迭代对象)
s = {1,2,3}
s = {3.14,True,(1970,1,1),'hello'}
集合的构造函数 set
示例:
集合的运算:
& 生成俩个集合的交集
| 生成俩个集合的并集
-生成俩个集合的补集
^生成俩个集合的对称补集
>判断一个集合是另一个集合的超集
<判断一个集合是另一个集合的子集
s1 = {1,2,3}
s2 = {2,3}
s1 > s2 #True s1为s2的超集
s1 < s2 False s2为s1的子集
= != 集合相同/不同
s1 = {1,2,3}
s2 = {3,2,1}
s1 == s2 #True
in ,not in 运算符
作于集合中,判断某个值是否存在于集合中
集合字典的优点:
能用于集合的函数:
集合练习:
经理有:曹操,刘备,孙权
技术员有:曹操,孙权,张飞,关羽
用集合求:
1)即是经理,也是技术员的有谁
2)是经理,但不是技术员的人员都有谁?
3)是技术员,不是经理的都有谁
4)张飞是经历吗?
5)身兼一职的人都有谁?
6)经理和技术员共有几个人
manager = {'曹操', '刘备', '孙权'}
techs = {'曹操', '孙权', '张飞', '关羽'}
print("即是经理,也是技术员的有", manager & techs)
print("是经理,但不是技术员的人员都有", manager - techs)
print("是技术员,不是经理的都有", techs - manager)
if '张飞' in manager:
print("张飞是经理")
else:
print("张飞不是经理")
print("身兼一职的人都有", manager ^ techs)
print('经理和技术员共有%d个人' % len(manager | techs))
Python3 集合的方法
方法 意义
集合推导式
集合推导式是用可迭代对象生成集合的表达式
语法:
{表达式 for 变量 in 可迭代对象 [if 真值表达式]}
注:[] 括号部分可省略
示例:
集合推导式可以嵌套:
语法同列表推导式一致
练习:
任意输入一些数字,存于列表L中,当输入负数时结束输入
1)打印这些数的和
2)打印这些数有多少种(去重)
3)除重复的数字后,打印这些剩余数字的和
提示可以用集合去重
L=[]
while True:
n = int(input('任意输入一些数字'))
if n < 0:
break
L+=[n]
print(L)
print('和',sum(L))
s = set(L)
print('种',len(s))
print('和',sum(s))
固定集合 frozenset
作用:
固定集合的构造函数:
frozenset() 创建一个空的固定集合
frozenset(iterable) 用可迭代对象创建固定集合
示例:
固定集合的运算:
(以上运算符和集合set中的用法一致)
固定集合的方法
相当于集合的全部方法去掉修改集合的方法
总结
1,数据类型:
数值类型:
容器:
不可变的容器
可变的容器
2,值:
3,运算符
算数运算符
比较运算符
布尔运算:
表达式:
三种推导式:
语句
表达式语句:
所有的表达式都可以单独写在一行,形成一个语句,例:
赋值语句:
内建函数:
构造函数(用来创建同类型的数据对象)
函数 function
什么是函数:
作用:
语法:
说明:
示例见:
def say_hello():
print("hello world!")
print("hello tarena!")
print("hello everyone!")
say_hello() # 调用函数
say_hello()
say_hello()
函数调用
函数名(实际调用传递参数)
注:实际调用传递参数,以后简称实参
说明:
写一个函数,打印出给定俩个数的最大值
def mymax(a, b):
print('a =', a)
print('b =', b)
if a > b:
print(a, "最大")
else:
print(b, '最大')
mymax(100, 200)
mymax("ABC", "123")
练习:
1,写一个函数myadd,此函数中的参数列表里有两个参数x,y
此函数的功能是打印x + y的和
def myadd(x, y):
print(x + y)
myadd(100, 200) # 300
myadd("ABC", "123") # ABC123
2,写一个函数mysum,传入一个参数x代表终止整数,打印出
1+2+3+4+5++++x的和?
方法一:
def mysum(x):
a = 0
i = 1
while i <= x:
# print(i,end='')
a += i
i += 1
print('和',a)
mysum(100)
mysum(4)
方法二:
def mysum(x):
s = 0
for n in range(1,x+1):
#print(n,end = '+')
s += n
print(s)
mysum(100)
mysum(4)
方法三:
def mysum(x):
c = []
for n in range(1,x+1):
#print(n,end = '+')
c+=[n]
print(sum(c))
mysum(100)
mysum(4)
return 语句
语法:
注:[]代表可省略
作用:
return 语句说明
示例:
def my():
print('aaaaaa')
print('bbbbbb')
return[1,2,3,4]
print('cccccc')
v = my() #aaaaaa
#bbbbbb
print(v) #[1, 2, 3, 4]
练习:
1.写一个函数 mymax,给函数传递两个参数,返回两个实参中最大的一个
# 方法1
# def mymax(a, b):
# if a > b:
# return a
# else:
# return b
# 方法2
# def mymax(a, b):
# if a > b:
# return a
# return b
# 方法3
def mymax(a, b):
return max(a, b)
v = mymax(100, 200)
print('v =', v) # v = 200
print(mymax('ABC', 'abc')) # abc
2.写一个函数input_rumber
def input_rumber():
...
此函数用来获取用户循坏输入的整数,当用户输入负数时结束输入,
将用户输入的数字以列表的形式返回,再用内建函数max,min,sum
取出输入最大值,最小值,及和
def input_number():
# 此处得到键盘输入的整数,最后以列表的形式返回回去
lst = []
while True:
n = int(input("请输入一个大于零的整数: "))
if n < 0:
break
lst.append(n)
return lst
L = input_number()
print(L) # 打印此列表
print("用户输入的最大数是:", max(L))
print("用户输入的最小数是:", min(L))
print("用户输入的数的和是:", sum(L))
练习:
1,写一个函数print_odd,
打印从begin开始,到end结束内的全部奇数
def print_odd(begin,end):
...
peint_old(1,10) #打印13579
peint_old(1,10) #打印11 13 15 17 19
# 方法1
def print_odd(a, b=0):
if b == 0:
for x in range(1, a, 2):
print(x, end=' ')
else:
print()
else:
if a % 2 == 0: # 如果是偶数,变为奇数
a += 1
for x in range(a, b, 2):
print(x, end=' ')
else:
print()
def print_odd(a, b=None):
if b is None:
start = 1
end = a
else:
start = a
end = b
# 如果开始的偶数,做校正
if start % 2 == 0:
start += 1
for x in range(start, end, 2):
print(x, end=' ')
print()
print_odd(10) # 1 3 5 7 9
print_odd(11, 20) # 11 13 15 17 19
print_odd(10, 20)
print_odd(5, 0)
2,定义两个函数:
sum3(a,b,c) 用于返回三个数的和
pow3(x) 用于返回x的三次方
用以上函数计算:
1.计算1的立方+2的立方+3的立方
既:1**3+2**3+3**3的和
2.计算1+2+3的和的立方,
即:(1+2+3)**3
def sum3(a, b, c):
return a + b + c
def pow3(x):
return x ** 3
# 1. 计算1的立方 + 2的立方 + 3的立方的和
# 即: 1**3 + 2**3 + 3**3的和
print(sum3(pow3(1), pow3(2), pow3(3)))
# 2. 计算1 + 2 + 3 的和的立方,
# 即: (1+2+3)**3
print(pow3(sum3(1, 2, 3)))
3,改写之前的学生信息管理程序改为俩个函数:
1.写一个函数input_student()
用于返回学生信息的字典的列表(以前格式一样)
2.写一个函数output_student(lst)
此函数传入一个列表lst,即字典的列表
此函数把lst的内容以表格形式打印出来
def input_student():
...
def output_student():
...
L = input_student() #获取学生信息的列表
output_student(L) #把L以列表的形式打印
def input_student():
L = [] # 创建一个容器准备放入
while True:
name = input('请输入姓名: ')
if not name: # 如果名字为空,结束输入操作
break
age = int(input("请输入年龄: "))
score = int(input("请输入成绩: "))
d = {} # 每次都会执行{} 来创建新的字典
d['name'] = name
d['age'] = age
d['score'] = score
L.append(d)
return L
def output_student(lst):
# 打印表格
print("+---------------+----------+----------+")
print("| name | age | score |")
print("+---------------+----------+----------+")
for d in lst:
n = d['name'].center(15)
a = str(d['age']).center(10)
s = str(d['score']).center(10)
print("|%s|%s|%s|" % (n, a, s))
# print("| xiaozhang | 20 | 100 |")
# print("| xiaoli | 18 | 98 |")
print("+---------------+----------+----------+")
L = input_student() # 获取学生信息的列表
# print(L)
output_student(L) # 把L 以列表的形式打印