函数案例讲解 | 手把手教你入门Python之五十五

上一篇:有关运算的魔法方法 | 手把手教你入门Python之五十四
下一篇:面向对象案例讲解 | 手把手教你入门Python之五十六

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

函数案例讲解

1.编写函数,求1+2+3+......+N的和

def get_sum(n):
    sum = 0
    for i in range(int(n)):
        sum += i
    return sum

print(get_sum(100)) # 4950

2.编写一个函数,求多个数中的最大值

def get_max(*args):
    x = args[0]
    for arg in args:
        if arg > x:
            x = arg
    return x

print(get_max(1, 9, 6, 3, 4, 5)) # 9

3.编写一个函数,实现摇骰子的功能,打印N个骰子的点数和

import random

def get_sum(n):
    m = 0
    for i in range(n):
        x = random.randint(1, 6)
        m += x
    return m

print(get_sum(5))  # 23

4.编写一个函数,交换指定字典的key和value
例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'}

def swap(dict1):
    dict = {}
    for k, v in dict1.items():
        dict[v] = k
    return dict

dict1 = {'a': 1, 'b': 2, 'c': 3}
print(swap(dict1))

5.编写一个函数,提取指定字符串中的所有字母,然后拼接在一起产生一个新的字符串
例如:传入'12a&bc12d-+' -->'abcd'

def get_alphas(word):
    new_str = ''
    for w in word:
        if w.isalpha():
            new_str += w
    return new_str

print(get_alphas('hello123good456')) # hellogood

6.写一个函数,求多个数的平均值

def get_averange(*args):
    x = 0
    for arg in args:
        x += arg
    return x / len(args)

print(get_average(1, 2, 3, 4, 5, 6))  # 3.5

7.写一个函数,默认求10的阶乘,也可以求其他数字的阶乘

def get_factorial(n=10):
    x = 1
    for i in range(1, n+1):
        x *= i
    return x

print(get_factorial(4)) # 24

8.写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母
例如:'abc' -> 'Abc' '12asd' --> '12asd'

def my_capitalize(word):
    c = word[0]
    if 'z' >= c >= 'a':
        new_str = word[1:]
        return c.upper() + new_str
    return word

print(my_capitalize('hello'))  # Hello
print(my_capitalize('34hello')) # 34hello

9.写一个自己的endswith函数,判断一个字符串是否以指定的字符串结束
例如:字符串1:'abc231ab' 字符串2:'ab' 函数结果为:True
字符串1:'abc231ab' 字符串2:'ab1' 函数结果为:False

def my_endswith(old_str, str1):
    return old_str[-len(str1):] == str1

print(my_endswith('hello', 'llo'))  # True
print(my_endswith('hello', 'lxo'))   # False

10.写一个自己的isdigit函数,判断一个字符串是否是纯数字字符串
例如:'1234921' 结果:True

  `'23函数' 结果:False`
  `'a2390' 结果:False`
def my_digit(old_str):
    for s in old_str:
        if not '0' <= s <= '9':
            return False
    return True

print(my_digit('123hd90'))  # False
print(my_digit('12390'))  # True

11.写一个自己的upper函数,将一个字符串中的所有的小写字母变成大写字母
例如:'abH23好rp1' 结果:'ABH23好RP1'

# a==>97  A ==> 65   32
def my_upper(old_str):
    new_str = ''
    for s in old_str:
        if 'a' <= s <= 'z':
            upper_s = chr(ord(s) - 32)
            new_str += upper_s
        else:
            new_str += s
    return new_str

print(my_upper('hello'))  # HELLO
print(my_upper('hel34lo'))  # HEL34LO

12.写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充
例如:原字符:'abc' 宽度:7 字符:'^' 结果:'^^^^abc'
原字符:'你好吗' 宽度:5 字符:'0' 结果:'00你好吗'

def my_rjust(s, sub_str, num):
    return sub_str * (num - len(s)) + s

print(my_rjust('aaa', 'r', 4))  # raaa

13.写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1
例如:列表:[1, 2, 45, 'abc', 1, '你好', 1, 0] 元素:1 结果:0,4,6
列表:['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素:'赵云' 结果:0,4
列表:['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素:'关羽' 结果:-1

def index(string, s):
    idxs=[]
    for i, st in enumerate(string):
        if st == s:
            idxs.append(i)
    return idxs if len(idxs) > 0 else -1

print(index('ststs', 's'))  # [0,2,4]
print(index('ssss', 't'))  # -1

14.写一个自己的len函数,统计指定序列中元素的个数
例如:序列:[1, 3, 5, 6] 结果:4
序列:(1, 34, 'a', 45, 'bbb') 结果:5
序列:'hello w' 结果:7

def my_len(l):
    c = 0
    for a in l:
        c += 1
    return c

print(my_len([ 1, 2, 1, 1]))  # 4

15.写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在
例如:序列:(12, 90, 'abc') 元素:'90' 结果:False
序列:[12, 90, 'abc'] 元素:90 结果:True

def my_in(it, ele):
    for i in it:
        if i == ele:
            return True
        else:
            return False

print(my_in(['zhangsan', 'lisi', 'wangwu'], 'lisi'))   # True
print(my_in(['zhangsan', 'lisi', 'wangwu'], 'jack'))   # False
print(my_in({'name': 'zhangsan', 'age': '18'}, 'name'))   # True

16.写一个自己的replace函数,将指定字符串中指定的旧字符串转换成指定的新字符串
例如:原字符串:'how are you? and you?' 旧字符串:'you' 新字符串:'me' 结果:'how are me? and me?'

def my_replace(all_str,old_str,new_str):
    return new_str.join(all_str.split(old_str))

print(my_replace('how you and you fine you ok','you','me'))  # how me and me fine me ok

第二种解法:

def my_replace(all_str,old_str,new_str):
    result = ''
    i = 0
    while i < len(all_str):
        temp = all_str[i: i + len(old_str)]
        if temp != old_str:
            result += all_str[i]
            i += 1
        else:
            result += new_str
            i += len(old_str)
    return result

print(my_replace('how you and you fine you ok','you','me'))  # how me and me fine me ok

1.写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值
例如:序列:[-7, -12, -1, -9] 结果:-1
序列:'abcdpzasdz' 结果:'z'
序列:{'小明':90, '张三':76, '路飞':30, '小花':98} 结果:98

def get_max2(seq):
    if type(seq) == dict:
        seq = list(seq.values())
    x = seq[0]
    for i in seq:
        if i > x:
            x = i
    return x

print(get_max2([2, 4, 8, 1, 9, 0, 7, 5]))   # 9

print(get_max2({'x':10, 'y':29, 'z':32, 'a':23, 'b':19, 'c':98}))  # 98

2.写四个函数,分别实现求两个列表的交集、并集、差集、补集的功能

# 交集

def intersection(list1: list, list2: list):
    """
    求两个列表中的交集
    :param list1:第一个列表
    :param list2:第二个列表
    :return:两个列表的公共部分
    """
    new_list = []
    for item in list1:
        if item in list2:
            new_list.append(item)
    return new_list

# 并集

def union_set(list1: list, list2: list):
    """
    求两个列表中的并集
    :param list1:第一个列表
    :param list2:第二个列表
    :return:并集
    """
    return list(set(list1 + list2))

# 差集

def difference_set(list1: list, list2: list):
    """
    求两个列表中的差集
    :param list1:第一个列表
    :param list2:第二个列表
    :return:差集
    """
    new_list = []
    for item in list1:
        if item in list2 and item not in new_list:
            new_list.append(item) 
    return new_list


# 对称差集

def symmetry_diff_set(list1: list, list2: list):
    """
    求两个列表中的对称差集
    :param list1:第一个列表
    :param list2:第二个列表
    :return:对称差集
    """ 
    new_list = []
    for item in list1+list2:
        if (item in list1 and item not in list2) or (item in list2 and item not in list1):
            new_list.append(item)
    return new_list

配套视频

上一篇:《Linux C编程从入门到精通》——2.2 Linux中的C语言编译器gcc


下一篇:HOWTO:恢复今日界面中的日期时间为两排显示