Python中函数的使用:
斐波那契数列、下一秒时间、列表合并
1、 对加减乘除分别封装⼀个函数进⾏计算,参数是两个数,返回值是计算结果
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
def div(a, b):
return a / b
print(add(5, 2), sub(5, 2), mul(5, 2), div(5, 2))
2、 写函数,传⼊⼀个参数n,返回n的阶乘
def factorial(n):
product = 1
for i in range(1,n+1):
product *= i
return product
print(factorial(5))
3、 传⼊⼀个正整数,判断这个数是否是素数,如果是返回True,否则返回False
def isprime(num):
"""
:param num: 正整数,大于2的
:return: 是素数返回True,不是返回False
"""
for i in range(2,num):
while num % 2 == 0:
return False
else:
return True
print(isprime(3))
4、写函数,计算并返回传⼊字符串中数字个数、字⺟个数、空格个数以及其他字符的个数。
def char_num(str):
ch, num,space,other = 0,0,0,0
for i in str:
if i.isalpha():
ch += 1
elif i.isdigit():
num += 1
elif i.isspace():
space += 1
else:
other += 1
return f'字符串中数字有{num}个,字母有{ch}个,空格有{space}个,其他字符有{other}个'
print(char_num("sdkhsjdg dhe,./;'"))
5、判断某个数是否是偶数,返回结果
def iseven(num):
if num % 2 == 0:
return True
else:
return False
print(iseven(2))
6、求1--n之间可以被7整除的数的个数,参数是n,返回个数
def div_7(n):
count = 0 # 计数
for i in range(1,n+1):
if i % 7 == 0:
count += 1
return count
print(div_7(21))
7、写⼀个函数,传⼊⼀个字符串时间:例如5点30分29秒表示为:’5:30:29’; 然后返回下⼀秒的时间(字符串)
def next_time(time):
t = [int(x) for x in time.split(":")]
t2 = t[2] + t[1] * 60 + t[0] * 3600 + 1
hour = t2 // 3600 % 24
minute = t2 % 3600 // 60
second = t2 % 3600 % 60
return "{:02d}:{:02d}:{:02d}".format(hour, minute, second)
print(next_time("5:30:29"))
8、斐波那契数列指的是这样⼀个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …;这个数列从第三项开始,每⼀项都等于前两项之和。写⼀个函数,传⼊项数n,返回第n项的值
# 递归调用
def fibonacci(n):
if 0 < n < 3:
return 1
return fibonacci(n-2) + fibonacci(n-1)
print(fibonacci(12))
9、传⼊不定个数的字符串拼接第⼀个和最后⼀个字符串
def str_splicing(*args):
# 防止只有一个参数,重复返回值
if len(args) == 1:
return args[0]
else:
return args[0] + args[-1]
print(str_splicing("wd","sdffg","sdfftr","tyg"))
10、⾃定义⼀个函数将传⼊的两个有序列表[1,5,7,9]和[2,2,6,8]合并⼀个有序列表,⽐如:[1,2,2,3,6,7,8,9]
def list_merge(a,b):
a.extend(b)
return sorted(a) # sorted(list) 暂时性排序,产生一个新的序列
# a.sort() # 永久性的排序,直接在原列表进行排序
# return a
print(list_merge([1,5,7,9],[2,2,6,8]))
11、每个学⽣都有如下信息:学号、姓名、年龄,班级。
1)请设计⼀个函数完成输⼊⼀个班级的学⽣信息,参数为班级⼈数,返回值为包含学⽣信息的列表
2)请设计⼀个函数完成按学号查询学⽣信息,参数是学号,返回值为学⽣信息
3)请设计⼀个函数,对学⽣信息按年龄排序,⽆参⽆返回值
students = [] # 空列表,用于存储输入的学生信息
def stu_information(num):
"""
输入学生的信息
:param num: 学生的个数
:return: 存储学生信息的列表
"""
for i in range(num):
d1 = {}
d1['Sno'] = input(f"请输入第{i + 1}个学生的学号:")
d1['name'] = input(f"请输入第{i + 1}个学生的姓名:")
d1['age'] = int(input(f"请输入第{i + 1}个学生的年龄:"))
d1['class'] = input(f"请输入第{i + 1}个学生的班级:")
students.append(d1)
return students
def query(Sno):
"""
查询学生信息
:param Sno: 学号
:return: 学生信息
"""
for i in students:
if Sno == i['Sno']:
return i
def stu_sort():
"""
从小到大排序
key=lambda value: value['age'] 该参数用于选择根据哪个参数排序,
:return:
"""
students.sort(key=lambda value: value['age'])
stu_information(3)
print(query("1"))
stu_sort()
print(students)
测试
请输入第1个学生的学号:1234
请输入第1个学生的姓名:小明
请输入第1个学生的年龄:19
请输入第1个学生的班级:一班
请输入第2个学生的学号:1235
请输入第2个学生的姓名:小红
请输入第2个学生的年龄:20
请输入第2个学生的班级:一班
请输入第3个学生的学号:1236
请输入第3个学生的姓名:小张
请输入第3个学生的年龄:19
请输入第3个学生的班级:一班
None
[{'Sno': '1234', 'name': '小明', 'age': 19, 'class': '一班'}, {'Sno': '1236', 'name': '小张', 'age': 19, 'class': '一班'}, {'Sno': '1235', 'name': '小红', 'age': 20, 'class': '一班'}]