Python作业

Day9 作业

2019-08-01  本文已影响0人  风月辞寒
  1. 编写函数,求1+2+3+…N的和
def sum_1(num1: int):
    return sum(range(1, num1 + 1))


print(sum_1(10))    # 55
def sum_1(num1: int, sum1=0):
    for n in range(1, num1 + 1):
        sum1 += n

    return sum1


print(sum_1(10))    # 55
  1. 编写一个函数,求多个数中的最大值
def max_num(*nums: int):
    return max(nums)


list1 = [1, 4, 5, 7, 4, 6, 8, 7, 2, 9]
print(max_num(*list1))  # 9
def max_num(*nums: int, max_n=0):
    for n in nums:
        if n > max_n:
            max_n = n
    return max_n


list1 = [1, 4, 5, 7, 4, 6, 8, 7, 2, 9]
print(max_num(*list1))      # 9
  1. 编写一个函数,实现摇骰子的功能,打印N个骰子的点数和
import random       # 导入随机模块


def rand_sum(num: int, sum1=0):
    for n in range(num):
        sum1 += random.randint(1, 6)    # 产生随机点数求和
    return sum1


print(rand_sum(3))  # 13
  1. 编写一个函数,交换指定字典的key和value。
例如:dict1={'a':1, 'b':2, 'c':3}  -->  dict1={1:'a', 2:'b', 3:'c'}  
def chang_dic(**dic1):
    for n in dic1.copy():
        dic1[dic1.pop(n)] = n   # 取出原来的键值对添加新的键值对
    return dic1


dict1 = {'a': 1, 'b': 2, 'c': 3}
print(chang_dic(**dict1))   # {1: 'a', 2: 'b', 3: 'c'}
  1. 编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
例如: 传入'12a&bc12d-+'   -->  'abcd'  
def letter_str(str1: str, str2=''):
    for s in str1:
        if s.isalpha():
            str2 += s
    return str2


print(letter_str('12a&bc12d-+'))    # abcd
  1. 写一个函数,求多个数的平均值
def avr(*nums: int):
    return sum(nums)/len(nums)


print(avr(6, 5, 7, 8, 8, 4, 3, 4))  # 5.625
  1. 写一个函数,默认求10的阶乘,也可以求其他数字的阶乘
def fact(num=10):
    for n in range(num - 1, 0, -1):
        num *= n
    return num


print(fact(5))      # 120
=====================注意:以下方法不能使用系统提供的方法和函数,全部自己写逻辑==============
  1. 写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母
例如: 'abc' -> 'Abc'   '12asd'  --> '12asd'
def cap(str1: str):
    if ord(str1[0]) in range(ord('a'), ord('z')+1):
        return str1.replace(str1[0], chr(ord(str1[0])-32))
    return str1


print(cap('abc'))   # Abc
print(cap('12asd'))   # 12asd
def cap(str1: str):
    if 'a' <= str1[0] <= 'z':
        return str1.replace(str1[0], chr(ord(str1[0])-32))
    return str1


print(cap('abc'))   # Abc
print(cap('12asd'))   # 12asd
  1. 写一个自己的endswith函数,判断一个字符串是否已指定的字符串结束
例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True
      字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False
def end_w(str1: str, str2:str):
    length2 = len(str2)
    if str1[- length2:] == str2:    # 比较最后与字符串2一样长度的字符串1的子串
        return True
    return False


print(end_w('abc231ab', 'ab'))  # True
print(end_w('abc231ab', 'ab1'))  # False
  1. 写一个自己的isdigit函数,判断一个字符串是否是纯数字字符串
例如: '1234921'  结果: True
      '23函数'   结果: False
      'a2390'    结果: False
def isdig(str1: str):
    for s in str1:
        if not '0' <= s <= '9':     # 存在非数字字符就中断函数
            return False
    return True


print(isdig('1234921'))     # True
print(isdig('23函数'))     # False
print(isdig('a2390'))     # False
  1. 写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母
   例如: 'abH23好rp1'   结果: 'ABH23好RP1'  
def uppe(str1: str, str2=''):
    for s in str1:
        if 'a' <= s <= 'z':
            s = s.replace(s, chr(ord(s)-32))
        str2 += s
    return str2


print(uppe('abH23好rp1'))    # ABH23好RP1
  1. 写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充
例如: 原字符:'abc'  宽度: 7  字符:'^'    结果: '^^^^abc'
     原字符:'你好吗'  宽度: 5  字符:'0'    结果: '00你好吗'
def r_just(str1: str, leng: int, char=' '):
    return char*(leng-len(str1))+str1


print(r_just('abc', 7, '^'))    # ^^^^abc
print(r_just('你好吗', 5, '0'))    # 00你好吗
  1. 写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1
   例如: 列表: [1, 2, 45, 'abc', 1, '你好', 1, 0]  元素: 1   结果: 0,4,6  
        列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权']  元素: '赵云'   结果: 0,4
        列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权']  元素: '关羽'   结果: -1         
def indx(list1: list, ele, list2=''):
    for index in range(len(list1)):
        if list1[index] == ele:
            list2 += str(index)
    else:
        if len(list2):
            list2 = ', '.join(list2)
            return list2
        return -1


print(indx([1, 2, 45, 'abc', 1, '你好', 1, 0], 1))   # 0, 4, 6
print(indx(['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'], '赵云'))   # 0, 4
print(indx(['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'], '关羽'))    # -1
  1. 写一个自己的len函数,统计指定序列中元素的个数
   例如: 序列:[1, 3, 5, 6]    结果: 4
        序列:(1, 34, 'a', 45, 'bbb')  结果: 5  
        序列:'hello w'    结果: 7
def lens(order1, count=0):
    for n in order1:
        count += 1
    return count


print(lens([1, 3, 5, 6]))       # 4
print(lens((1, 34, 'a', 45, 'bbb')))    # 5
print(lens('hello w'))      # 7
  1. 写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值
   例如: 序列:[-7, -12, -1, -9]    结果: -1   
        序列:'abcdpzasdz'    结果: 'z'  
        序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98}   结果: 98
def max_order(*args, **kwargs):
    max1 = None
    if args:
        max1 = args[0]
        for m in args:
            if m > max1:
                max1 = m
    elif kwargs:
        for key in kwargs:      # 获取第一个键值
            max1 = kwargs[key]
            break

        for key in kwargs:
            if kwargs[key] > max1:
                max1 = kwargs[key]
    return max1


print(max_order(*[-7, -12, -1, -9]))        # -1
print(max_order(*'abcdpzasdz'))     # z
print(max_order(**{'小明': 90, '张三': 76, '路飞': 30, '小花': 98}))        # 98

16.写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在

例如: 序列: (12, 90, 'abc')
元素: '90'
结果: False
序列: [12, 90, 'abc']
元素: 90
结果: True
def str_in(list1, list2):
    for lis in list1:
        if lis == list2:
            return True
    else:
        return False


print(str_in((12, 90, 'abc'), '90'))    # False
print(str_in([12, 90, 'abc'], 90))      # True

17.写一个自己的replace函数,将指定字符串中指定的旧字符串转换成指定的新字符串

例如: 原字符串: 'how are you? and you?'
旧字符串: 'you'
新字符串: 'me'
结果: 'how are me? and me?'
def rep(str1: str, str2: str, str3: str):
    return str3.join(str1.split(str2))      # 重新组合


print(rep('how are you? and you?', 'you', 'me'))    # how are me? and me?
  1. 写四个函数,分别实现求两个列表的交集、并集、差集、补集的功能
def lis_mix(list1: list, list2: list):  # 交集
    # return set(list1) & set(list2)

    list3 = []
    for n in list1:
        if n in list2:
            list3.append(n)
    return list3


def lis_sum(list1: list, list2: list):  # 并集
    # return set(list1) | set(list2)

    list3 = []
    for n in list1:
        if n not in list3:
            list3.append(n)
    for n in list2:
        if n not in list3:
            list3.append(n)
    return list3


def lis_dif(list1: list, list2: list):  # 差集
    # return set(list1).difference(set(list2))

    list3 = []
    for n in list1:
        if n not in list2:
            list3.append(n)
    return list3


def lis_cop(list1: list, list2: list):  # 补集
    # return set(list1) ^ set(list2)
    list3 = []
    for n in list1:
        if n not in list2:
            list3.append(n)
    for n in list2:
        if n not in list1:
            list3.append(n)
    return list3


print(*lis_mix([1, 2, 3, 'a', 's', 'd'], [1, 's', 'd', 5, 6, 'x', 'z']))    # d 1 s
print(*lis_sum([1, 2, 3, 'a', 's', 'd'], [1, 's', 'd', 5, 6, 'x', 'z']))    # 1 2 3 a z 5 6 x s d
print(*lis_dif([1, 2, 3, 'a', 's', 'd'], [1, 's', 'd', 5, 6, 'x', 'z']))    # 2 3 a
print(*lis_cop([1, 2, 3, 'a', 's', 'd'], [1, 's', 'd', 5, 6, 'x', 'z']))    # 2 3 z 5 6 a x
上一篇下一篇

猜你喜欢

热点阅读