标签:连接 键盘 参数传递 可变 作业 处理 继承 dog remove
一 概述
二、函数的理解与定义
# DayDayUpQ4.py
def dayUp(df):
dayup = 1
for i in range(365):
if i % 7 in [6, 0]:
dayup = dayup * (1 - 0.01)
else:
dayup = dayup * (1 + df)
return dayup
dayfactor = 0.01
while dayUp(dayfactor) < 37.78:
dayfactor += 0.001
print("工作日的努力参数是:{:.3f} ".format(dayfactor))
工作日的努力参数是:0.019
2.1 函数的定义
函数是一段代码的表示
def <函数名>(<参数(0个或多个)>) :
<函数体>
return <返回值>
三、函数的使用及调用过程
3.1 函数的调用
调用是运行函数代码的方式
def fact(n): # 函数的定义
s = 1
for i in range(1,n+1):
s *= i
return s
fact(10) # 函数的调用
3.2 函数的调用过程
四、函数的参数传递
函数可以有参数,也可以没有,但必须保留括号
def <函数名>(<非可选参数>,<可选参数>) :
<函数体>
return <返回值>
4.1 可选参数传递
4.2 可变参数传递
函数定义时可以设计可变数量参数,既不确定参数总数量
def <函数名>(<参数>,*args) :
<函数体>
return <返回值>
def fact(n, *args):
"""计算机n!乘数"""
s = 1
for i in range(1, n + 1):
s *= i
for item in args:
s *= item
return s
fact(10, 3, 5, 8)
435456000
4.3 参数传递的两种方式
函数调用时,参数可以按照位置或名称方式传递
def fact(n, m=1):
s = 1
for i in range(1, n + 1):
s *= i
return s // m
fact(10, 5) # 位置传递
725760
fact(m=5, n=10) # 名称传递
725760
五、函数的返回值
函数可以返回0个或多个结果
return
保留字用来传递返回值return
,也可以没有return
可以传递0个返回值,也可以传递任意多个返回值def fact(n, m=1):
s = 1
for i in range(1, n + 1):
s *= i
return s // m, n, m
a, b, c = fact(10, 5)
a, b, c
(725760, 10, 5)
一 概述
二、集合类型定义
集合是多个元素的无序组合
A = {"python", 123, ("python", 123)} # 使用{}建立集合
A
{('python', 123), 123, 'python'}
B = set("pypy123") # 使用set()建立集合
B
{'1', '2', '3', 'p', 'y'}
C = {"python", 123, "python", 123}
C
{123, 'python'}
三、集合操作符
3.1 集合间操作
3.2 6个操作符
操作符及应用 | 描述 |
---|---|
S | T | 返回一个新集合,包括在集合S和T中的所有元素 |
S - T | 返回一个新集合,包括在集合S但不在T中的元素 |
S & T | 返回一个新集合,包括同时在集合S和T中的元素 |
S ^ T | 返回一个新集合,包括集合S和T中的非相同元素 |
S <= T或S < T | 返回True/False,判断S和T的子集关系 |
S >= T或S > T | 返回True/False,判断S和T的包含关系 |
3.3 4个增强操作符
操作符及应用 | 描述 |
---|---|
S |= T | 更新集合S,包括在集合S和T中的所有元素 |
S -= T | 更新集合S,包括在集合S但不在T中的元素 |
S &= T | 更新集合S,包括同时在集合S和T中的元素 |
S ^= T | 更新集合S,包括集合S和T中的非相同元素 |
A = {"p", "y", 123}
B = set("pypy123")
A - B
{123}
A & B
{'p', 'y'}
A ^ B
{'1', 123, '2', '3'}
B - A
{'1', '2', '3'}
A | B
{'1', 123, '2', '3', 'p', 'y'}
四、集合处理方法
操作函数或方法 | 描述 |
---|---|
S.add(x) | 如果x不在集合S中,将x增加到S |
S.discard(x) | 移除S中元素x,如果x不在集合S中,不报错 |
S.remove(x) | 移除S中元素x,如果x不在集合S中,产生KeyError异常 |
S.clear() | 移除S中所有元素 |
S.pop() | 随机返回S的一个元素,更新S,若S为空产生KeyError异常 |
S.copy() | 返回集合S的一个副本 |
len(S) | 返回集合S的元素个数 |
x in S | 判断S中元素x,x在集合S中,返回True,否则返回False |
x not in S | 判断S中元素x,x不在集合S中,返回False,否则返回True |
set(x) | 将其他类型变量x转变为集合类型 |
insert(x,y) | 在x处插入y元素 |
A = {"p", "y", 123}
for item in A:
print(item, end="")
123yp
五、集合类型应用场景
5.1 包含关系比较
"p" in {"p", "y" , 123}
True
{"p", "y"} >= {"p", "y" , 123}
False
5.2 数据去重:集合类型所有元素无重复
ls = ["p", "p", "y", "y", 123]
s = set(ls) # 利用了集合无重复元素的特点
s
{123, 'p', 'y'}
lt = list(s) # 还可以将集合转换为列表
lt
[123, 'y', 'p']
六、小结
一 概要
二、序列类型定义
序列是具有先后关系的一组元素
s0, s1, … , sn-1
序列是一个基类类型
2.1 序号的定义
三、序列处理函数及方法
操作符及应用 | 描述 |
---|---|
x in s | 如果x是序列s的元素,返回True,否则返回False |
x not in s | 如果x是序列s的元素,返回False,否则返回True |
s + t | 连接两个序列s和t |
sn 或 ns | 将序列s复制n次 |
s[i] | 索引,返回s中的第i个元素,i是序列的序号 |
s[i: j] 或 s[i: j: k] | 切片,返回序列s中第i到j以k为步长的元素子序列 |
3.1 序列类型操作实例
ls = ['python', 123]
ls[::-1]
[123, 'python']
s = 'python123'
s[::-1]
'321nohtyp'
3.2 序列类型通用函数和方法
函数和方法 | 描述 |
---|---|
len(s) | 返回序列s的长度 |
min(s) | 返回序列s的最小元素,s中元素需要可比较 |
max(s) | 返回序列s的最大元素,s中元素需要可比较 |
s.index(x) 或s.index(x, i, j) | 返回序列s从i开始到j位置中第一次出现元素x的位置 |
s.count(x) | 返回序列s中出现x的总次数 |
ls = ['python', 123]
len(ls)
2
s = 'python123'
max(s)
'y'
四、元组类型及操作
4.1 元组类型定义
元组是序列类型的一种扩展
creature = "cat", "dog", "tiger", "human"
creature
('cat', 'dog', 'tiger', 'human')
color = (0x001100, "blue", creature)
color
(4352, 'blue', ('cat', 'dog', 'tiger', 'human'))
4.2 元组类型操作
元组继承序列类型的全部通用操作
creature = "cat", "dog", "tiger", "human"
creature[::-1]
('human', 'tiger', 'dog', 'cat')
color = (0x001100, "blue", creature)
color[-1][2]
'tiger'
五、列表类型及操作
5.1 列表类型定义
列表是序列类型的一种扩展,十分常用
ls = ["cat", "dog", "tiger", 1024]
ls
函数或方法 | 描述 |
---|---|
ls[i] = x | 替换列表ls第i元素为x |
ls[i: j: k] = lt | 用列表lt替换ls切片后所对应元素子列表 |
del ls[i] | 删除列表ls中第i元素 |
del ls[i: j: k] | 删除列表ls中第i到第j以k为步长的元素 |
ls += lt | 更新列表ls,将列表lt元素增加到列表ls中 |
ls *= n | 更新列表ls,其元素重复n次 |
ls = ["cat", "dog", "tiger", 1024]
ls[1:2] = [1, 2, 3, 4]
ls
['cat', 1, 2, 3, 4, 'tiger', 1024]
del ls[::3]
ls
[1, 2, 4, 'tiger']
ls * 2
[1, 2, 4, 'tiger', 1, 2, 4, 'tiger']
5.2 列表类型操作函数和方法
函数或方法 | 描述 |
---|---|
ls.append(x) | 在列表ls最后增加一个元素x |
ls.clear() | 删除列表ls中所有元素 |
ls.copy() | 生成一个新列表,赋值ls中所有元素 |
ls.insert(i,x) | 在列表ls的第i位置增加元素x |
ls.pop(i) | 将列表ls中第i位置元素取出并删除该元素 |
ls.remove(x) | 将列表ls中出现的第一个元素x删除 |
ls.reverse() | 将列表ls中的元素反转 |
ls = ["cat", "dog", "tiger", 1024]
ls.append(1234)
ls
['cat', 'dog', 'tiger', 1024, 1234]
ls.insert(3, "human")
ls
['cat', 'dog', 'tiger', 'human', 1024, 1234]
ls.reverse()
ls
[1234, 1024, 'human', 'tiger', 'dog', 'cat']
1.1 问题分析
基本统计值
总个数、求和、平均值、方差、中位数…
二、"基本统计值计算"实例讲解
2.1 基本统计值计算
ls = []
while True:
num1=input('请输入数据(输入q退出):')
if num1=='q':
break
ls.append(int(num1))
def sum(ls): #计算和
sum=0
for i in ls:
sum+=i
return sum
def mean(ls): #计算平均值
return sum(ls)/ len(ls)
def dev(ls, mean): #计算方差
sdev = 0.0
for num in ls:
sdev = sdev + (num - mean)**2
return pow(sdev / (len(ls) - 1), 0.5)
def median(ls): #计算中位数
sorted(ls)
size = len(ls)
if size % 2 == 0:
med = (ls[size // 2 - 1] + ls[size // 2]) / 2
else:
med = ls[size // 2]
return med
s=sum(ls)
m = mean(ls)
print("和:{},平均值:{},方差:{:.2},中位数:{}".format(s,m, dev(ls, m), median(ls)))
请输入数据(输入q退出):13
请输入数据(输入q退出):15
请输入数据(输入q退出):16
请输入数据(输入q退出):17
请输入数据(输入q退出):q
和:61,平均值:15.25,方差:1.7,中位数:15.5.
一 概述
二、字典类型定义
2.1 理解“映射”
序列类型由0..N整数作为数据的默认索引 映射类型则由用户为数据定义索引
2.2 字典类型定义
字典类型是“映射”的体现
{<键1>:<值1>, <键2>:<值2>, … , <键n>:<值n>}
2.3 字典类型的用法
在字典变量中,通过键获得值
<字典变量> = {<键1>:<值1>, … , <键n>:<值n>}
<值> = <字典变量>[<键>]
<字典变量>[<键>] = <值>
[ ]
用来向字典变量中索引或增加元素
2.4 字典类型定义和使用
d = {"中国": "北京", "美国": "华盛顿", "法国": "巴黎"}
d
{'中国': '北京', '美国': '华盛顿', '法国': '巴黎'}
d['中国']
'北京'
de = {}
type(de)
dict
三、字典处理函数及方法
函数或方法 | 描述 |
---|---|
del d[k] | 删除字典d中键k对应的数据值 |
k in d | 判断键k是否在字典d中,如果在返回True,否则False |
d.keys() | 返回字典d中所有的键信息 |
d.values() | 返回字典d中所有的值信息 |
d.items() | 返回字典d中所有的键值对信息 |
3.1 字典类型操作
d = {"中国":"北京", "美国":"华盛顿", "法国":"巴黎"}
"中国" in d
True
d.keys()
dict_keys(['中国', '美国', '法国'])
d.values()
dict_values(['北京', '华盛顿', '巴黎'])
3.2 字典类型操作函数和方法
函数或方法 | 描述 |
---|---|
d.get(k, ) | 键k存在,则返回相应值,不在则返回值 |
d.pop(k, ) | 键k存在,则取出相应值,不在则返回值 |
d.popitem() | 随机从字典d中取出一个键值对,以元组形式返回 |
d.clear() | 删除所有的键值对 |
len(d) | 返回字典d中元素的个数 |
d = {"中国":"北京", "美国":"华盛顿", "法国":"巴黎"}
d.get("中国","伊斯兰堡")
'北京'
d.get("巴基斯坦","伊斯兰堡")
'伊斯兰堡'
d.popitem()
('法国', '巴黎')
name = " aleX"
# 1) 移除 name 变量对应的值两边的空格,并输出处理结果
print(name.strip())
# 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果
print(name.startswith('al'))
# 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
print(name.endswith('x'))
# 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
print(name.replace('l','p'))
# 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。
print(name.split('l'))
# 6) 将 name 变量对应的值变大写,并输出结果
print(name.lower())
# 7) 将 name 变量对应的值变小写,并输出结果
print(name.upper())
# 8) 请输出 name 变量对应的值的第 2 个字符?
print(name[1])
# 9) 请输出 name 变量对应的值的前 3 个字符?
print(name[:3])
# 10) 请输出 name 变量对应的值的后 2 个字符?
print(name.[-2:])
# 11) 请输出 name 变量对应的值中 “e” 所在索引位置?
for i in range(len(name)):
if name[i]=='e'
print(i)
# 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
s = list(name)
del s[-1]
print(s)
# 1.将以下数据存储为字典类型
# 数据:info = "name:Owen|age:18|gender:男"
# 结果:{'name': 'Owen', 'age': 18, 'gender': '男'}
info = "name:Owen|age:18|gender:男"
info=info.split('|')
x = {}
for i in info:
i=str(i)
i = i.split(':')
i = {i[0]:i[1]}
x.update(i)
print(x)
# 2.完成数据的去重
# 数据:t3 = [1, 2, 1, 2, 3, 5, 9]
# 结果:t3 = [1, 2, 3, 5, 9]
t3 = [1, 2, 1, 2, 3, 5, 9]
s=set(t3)
t3=list(s)
print(t3)
# 3 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
t=[11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
num1=[]
num2=[]
for i in t:
if i>66:
num1.append(i)
elif i<66:
num2.append(i)
t={'k1':num1,'k2':num2}
print(t)
# 4.完成录入电话本(选做)
# 需求:
'''
-- 从键盘中录入姓名(不区分大小写):
-- 姓名必须是全英文字母组成,不是则重新录入姓名,如果是q,代表退出
-- 从键盘中再录入电话:
-- 电话必须为字符串中是数字(如'12312312312')且长度必须是11位
-- 如果出现姓名相同,则保留最后一次电话号码
-- 形成的数据是有电话分组的,如:第一次录入Owen,13355667788,则会形成
-- {
'O': {
'Owen': '13355667788'
}
}
最终数据,分组名一定大写:
{
'E': {
'egon': '17788990000',
'engo': '16633445566'
},
'O': {
'Owen': '13355667788'
}
}
'''
x = {}
while True:
name=input('请输入姓名(输入q结束):')
if name=='q':
break
if not name.isalpha():
print('姓名不是全英文,请重新输入')
continue
dh=input('请输入电话号码:')
if not dh.isdigit():
print('电话号码不是全数字,请重新输入')
if not len(dh)==11:
print('电话号码不是11位,请重新输入')
continue
xx=name[0].upper()
xv={name:dh}
xc={xx:xv}
x.update(xc)
print(x)
标签:连接 键盘 参数传递 可变 作业 处理 继承 dog remove
原文地址:https://www.cnblogs.com/xm-lucky/p/11209437.html