函数和模块的使用
将计算阶乘的功能封装到一个称之为“函数”的功能模块中,在需要计算阶乘的地方,只需要“调用”这个“函数”就可以了。
定义函数:
使用def关键字来定义函数,后面加函数名,一般都是通俗易懂,见名知意的名字,命名规则与变量的命名规则一样,在函数名候命的括号中加传递给函数的参数。中间是函数的执行体,用来计算需要的东西,最后通过return来返回一个结果,return可加可不加。
计算阶乘:
def factorial(num):
result = 1
for n in range(1, num + 1):
result *= n
return result
m = int(input('m = '))
n = int(input('n = '))
函数的参数:
Python中,函数的参数可以有默认值,也支持使用可变参数,所以Python并不需要向其他语言一样支持函数的重载,因为在定义一个函数的时候可以让它有多种不同的使用方式。
摇骰子
from random import randint
def roll_dice(n=2):
total = 0
for _ in range(n):
total += randint(1, 6)
return total
def add(a=0, b=0, c=0):
return a + b + c
在参数名前面的*表示args是一个可变参数
即在调用add函数时可以传入0个或多个参数
def add(*args):
total = 0
for val in args:
total += val
return total
print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3))
print(add(1, 3, 5, 7, 9))
用模块管理函数:
给函数命名时,有可能会遇到命名冲突的问题,最简单的就是在同一个.py的文件中定义两个同名函数,由于python没有函数重载的概念,那么后面的定义会覆盖之前的定义,也就意味着两个同名函数实际上只存在一个。def foo():
print('hello, world!')
def foo():
print('goodbye, world!')
两个同名函数结果输出的只有goodbye,world。
Python中每个文件代表了一个模块,在不同的模块中可以有相同的函数名,在使用函数的时候可以通过import关键字导入指定的模块就可以区分到底要使用哪个模块中的函数。
如果我们导入的模块除了定义函数之外还中有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码,事实上我们可能并不希望如此,因此如果我们在模块中编写了执行代码,最好是将这些执行代码放入如下所示的条件中,这样的话除非直接运行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是“main”。
字符串和常用数据结构:
Python表示文本信息的方式就是字符串类型,所谓**字符串**,就是由零个或多个字符组成的有限序列
字符串的使用方法:
def main():
str1 = 'hello, world!'
# 通过len函数计算字符串的长度
print(len(str1)) # 13
# 获得字符串首字母大写的拷贝
print(str1.capitalize()) # Hello, world!
# 获得字符串变大写后的拷贝
print(str1.upper()) # HELLO, WORLD!
# 从字符串中查找子串所在位置
print(str1.find('or')) # 8
print(str1.find('shit')) # -1
# 与find类似但找不到子串时会引发异常
# print(str1.index('or'))
# print(str1.index('shit'))
# 检查字符串是否以指定的字符串开头
print(str1.startswith('He')) # False
print(str1.startswith('hel')) # True
# 检查字符串是否以指定的字符串结尾
print(str1.endswith('!')) # True
# 将字符串以指定的宽度居中并在两侧填充指定的字符
print(str1.center(50, '*'))
# 将字符串以指定的宽度靠右放置左侧填充指定的字符
print(str1.rjust(50, ' '))
str2 = 'abc123456'
# 从字符串中取出指定位置的字符(下标运算)
print(str2[2]) # c
# 字符串切片(从指定的开始索引到指定的结束索引)
print(str2[2:5]) # c12
print(str2[2:]) # c123456
print(str2[2::2]) # c246
print(str2[::2]) # ac246
print(str2[::-1]) # 654321cba
print(str2[-3:-1]) # 45
# 检查字符串是否由数字构成
print(str2.isdigit()) # False
# 检查字符串是否以字母构成
print(str2.isalpha()) # False
# 检查字符串是否以数字和字母构成
print(str2.isalnum()) # True
str3 = ' jackfrued@126.com '
print(str3)
# 获得字符串修剪左右两侧空格的拷贝
print(str3.strip())
除了字符串,Python还内置了多种类型的数据结构,如果要在程序中保存和操作数据,绝大多数时候可以利用现有的数据结构来实现,最常用的包括列表、元组、集合和字典。
使用列表:
def main():
list1 = [1, 3, 5, 7, 100]
print(list1)
list2 = ['hello'] * 5
print(list2)
# 计算列表长度(元素个数)
print(len(list1))
# 下标(索引)运算
print(list1[0])
print(list1[4])
# print(list1[5]) # IndexError: list index out of range
print(list1[-1])
print(list1[-3])
list1[2] = 300
print(list1)
# 添加元素
list1.append(200)
list1.insert(1, 400)
list1 += [1000, 2000]
print(list1)
print(len(list1))
# 删除元素
list1.remove(3)
if 1234 in list1:
list1.remove(1234)
del list1[0]
print(list1)
# 清空列表元素
list1.clear()
print(list1)
生成器:
f = (x ** 2 for x in range(1, 1000))
print(sys.getsizeof(f)) # 相比生成式生成器不占用存储数据的空间
print(f)
for val in f:
print(val)
Python中还有另外一种定义生成器的方式,就是通过`yield`关键字将一个普通函数改造成生成器函数
使用元组:
def main():
# 定义元组
t = ('梁浩田', 22, True, '内蒙古呼和浩特')
print(t)
# 获取元组中的元素
print(t[0])
print(t[3])
# 遍历元组中的值
for member in t:
print(member)
t = ('lht', 22, True, '凉城')
print(t)
# 将元组转换成列表
person = list(t)
print(person)
# 列表是可以修改它的元素的
person[0] = 'll'
person[1] = 23
print(person)
# 将列表转换成元组
fruits_list = ['aaa', 'bbb', 'ccc']
fruits_tuple = tuple(fruits_list)
print(fruits_tuple)
使用集合:
def main():
set1 = {1, 2, 3, 3, 3, 2}
print(set1)
print('Length =', len(set1))
set2 = set(range(1, 10))
print(set2)
set1.add(4)
set1.add(5)
set2.update([11, 12])
print(set1)
print(set2)
set2.discard(5)
# remove的元素如果不存在会引发KeyError
if 4 in set2:
set2.remove(4)
print(set2)
# 遍历集合容器
for elem in set2:
print(elem ** 2, end=' ')
print()
# 将元组转换成集合
set3 = set((1, 2, 3, 3, 2, 1))
print(set3.pop())
print(set3)
# 集合的交集、并集、差集、对称差运算
print(set1 & set2)
# print(set1.intersection(set2))
print(set1 | set2)
# print(set1.union(set2))
print(set1 - set2)
# print(set1.difference(set2))
print(set1 ^ set2)
# print(set1.symmetric_difference(set2))
# 判断子集和超集
print(set2 <= set1)
# print(set2.issubset(set1))
print(set3 <= set1)
# print(set3.issubset(set1))
print(set1 >= set2)
# print(set1.issuperset(set2))
print(set1 >= set3)
# print(set1.issuperset(set3))
python定义阶乘函数,求组合数 python定义函数计算阶乘
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python查询汉字函数
python查询汉字函数
数据集 机器学习 特征提取 -
python 定义一个函数求双阶乘 python定义求阶乘的函数
定义计算N的阶乘的函数1)使用循环计算阶乘def frac(n): r = 1 if n<=1: if n==0 or n==1: return 1 else: print('n 不能小于0') else: for i in range(1, n+1):
python 定义一个函数求双阶乘 python 定义计算N的阶乘的函数 使用循环计算阶乘 使用递归计算阶乘