我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

python-王颜丽-2021.01.20

[复制链接]
颜子学员认证 发表于 2021-1-21 00:43:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
'''递归函数'''

# n!=1*2*3*4*...*n
基本上浮点数
def factorail(n):
    s = 1
    for i in range(1,n+1):
        s *= i
    return s
print(factorail(5))

'''
n! = (n-1)!*n
(n-1)! = (n-2)!*(n-1)
...
2! = (2-1)!*2
1! = 1
'''
# 递归函数
def fact(n):
    if n == 1:  #2.递归函数中一定要有边界条件
        return 1
    return fact(n-1)*n # 1.递归函数中一定要有对函数自己的调用

print(fact(1000))

'''
fact(5)
fact(4)*5
fact(3)*4*5
fact(2)*3*4*5
fact(1)*2*3*4*5
1*2*3*4*5

'''
'''切片'''

names = ['赵梦冰','张荣亮','侯富君','王颜丽','焦新瑞','张国荣','吕煜海

'''
names[a:b:c]表示截取从下标a开始到下标b结束的所有元素,但是包含a,不包含b
c表示步长,默认值是1
列表切片后还是列表
元组切片后还是元组
字符串切片后还是字符串
'''
print(names[0:3])
print(names[2:3])
# 切片支持负数索引
print(names[-7:-4])

# 如果第一个索引是0,可以省略
print(names[:3])
# 如果一直截取到末尾,可以省略第二个索引
print(names[3:])
# 复制列表
l = names[:]
m = names
print('---------------------------------')
m.append('白李娜')
print(names)
print(l)
print(m)

# 切片时还可以指定步长,步长值默认是1
print(names[0::2])
print(names[0::3])

# 元组也可以切片,结果还是元组
names = ('赵梦冰','张荣亮','侯富君','王颜丽','焦新瑞','张国荣','吕煜海')

# 字符串也可以切片,结果还是字符串
s = 'abcdef'
'''迭代'''

names = ['赵梦冰','张荣亮','侯富君','王颜丽','焦新瑞','张国荣','吕煜海

# 循环,遍历,迭代Iteration
# names: 可迭代对象
# 可迭代对象: 列表,元组,字典,字符串
for name in names:
    print(name)

print('-----------------------------')

# 遍历key
name_scores = {'赵梦冰':88,'张荣亮':99,'侯富君':77,'王颜丽':89,'焦新瑞':93,'张国荣':98,'吕煜海':85}
for key in name_scores:
    print(key,name_scores[key])

print('-----------------------------')
# 遍历value
for value in name_scores.values():
    print(value)

# 同时遍历keyvalue
for key,value in name_scores.items():
    print(key,value)

print('-----------------------------')
# 遍历字符串
for  char in 'abcdef':
    print(char)

'''如何判断一个对象是可迭代对象'''
from collections.abc import Iterable

# isinstance(obj,type) 判断对象obj是否是type类型,是则返回True,否则返回False
print(isinstance(1,int))
print(isinstance('1',int))
print(isinstance('1',str))

print(isinstance(names,Iterable))

i = 0   # 循环控制变量
for char in 'abcdef':
    print(i,char)
    i = i + 1

print('-----------------------------')
# 简化方式提供循环遍历
for i,char in enumerate('abcdef'):
    print(i,char)

# for(int i=0;i<100;i++){

# }
'''
列表生成式
字典生成式
'''

nums = [0,1,2,3,4,5,6,7,8,9]
nums = list(range(6,10))
print(nums)

# [1*1,2*2,3*3,....,9*9]
# 方法一:
nums = [1*1,2*2,3*3]

# 方法二:
nums = []
for x in range(1,10):
    nums.append(x*x)
print(nums)

# 方法三 - 列表生成式
m = [x*x for x in range(1,10)]
print(m)

# 练习,用列表生成式生成:[1,1/2,1/3,...1/10]
n = [1/x for x in range(1,10)]
print(n)

# 列表生成式中添加条件判断
o = [x*x for x in range(1,10) if x%2==0]
print(o)

# 列表生成式中使用多重循环
p = [x+y for x in 'ABC' for y in 'XYZ']
print(p)

# 用列表生成式生成元素
q = tuple([x*x for x in range(1,10)])
print(q)
回复

使用道具 举报

关注0

粉丝0

帖子4

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注软件测试菁英教育

客服电话:17792550360

客服时间:9:00-21:00

卓目鸟学苑 - 专注软件测试菁英教育!( 陕ICP备2025058934号-2 )

版权所有 © 西安菁英教育科技有限公司 2023-2026