Python中函数的使用

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、写⼀个函数,传⼊⼀个字符串时间:例如53029秒表示为:’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': '一班'}]

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dmy20210205

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值